@monygroupcorp/micro-web3 1.2.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/micro-web3.cjs +2 -2
- package/dist/micro-web3.cjs.map +1 -1
- package/dist/micro-web3.esm.js +2 -2
- package/dist/micro-web3.esm.js.map +1 -1
- package/dist/micro-web3.umd.js +2 -2
- package/dist/micro-web3.umd.js.map +1 -1
- package/package.json +2 -2
- package/src/components/BondingCurve/BondingCurve.js +80 -116
- package/src/components/Display/BalanceDisplay.js +37 -61
- package/src/components/Display/PriceDisplay.js +43 -71
- package/src/components/FloatingWalletButton/FloatingWalletButton.js +106 -151
- package/src/components/Ipfs/IpfsImage.js +83 -107
- package/src/components/Modal/ApprovalModal.js +92 -149
- package/src/components/SettingsModal/SettingsModal.js +364 -341
- package/src/components/Swap/SwapButton.js +9 -45
- package/src/components/Swap/SwapInputs.js +46 -108
- package/src/components/Swap/SwapInterface.js +216 -597
- package/src/components/Swap/TransactionOptions.js +70 -179
- package/src/components/SyncProgressBar/SyncProgressBar.js +183 -215
- package/src/components/Util/MessagePopup.js +26 -24
- package/src/components/Wallet/WalletModal.js +45 -44
- package/src/components/WalletButton/WalletButton.js +193 -185
- package/src/services/WalletService.js +53 -20
package/dist/micro-web3.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Component as t,eventBus as e}from"@monygroupcorp/microact";var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var i,s={exports:{}};var o=(i||(i=1,function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){if(i.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(t){}function o(t,e){var n=t.charCodeAt(e);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+t)}function a(t,e,r){var n=o(t,r);return r-1>=e&&(n|=o(t,r-1)<<4),n}function l(t,e,n,i){for(var s=0,o=0,a=Math.min(t.length,n),l=e;l<a;l++){var c=t.charCodeAt(l)-48;s*=i,o=c>=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&o<i,"Invalid character"),s+=o}return s}function c(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(i.isBN=function(t){return t instanceof i||null!==t&&"object"==typeof t&&t.constructor.wordSize===i.wordSize&&Array.isArray(t.words)},i.max=function(t,e){return t.cmp(e)>0?t:e},i.min=function(t,e){return t.cmp(e)<0?t:e},i.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this._parseHex(t,i,n):(this._parseBase(t,e,i),"le"===n&&this._initArray(this.toArray(),e,n)))},i.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var s,o,a=0;if("be"===n)for(i=t.length-1,s=0;i>=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if("le"===n)for(i=0,s=0;i<t.length;i+=3)o=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this._strip()},i.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,s=0,o=0;if("be"===r)for(n=t.length-1;n>=e;n-=2)i=a(t,e,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(t.length-e)%2==0?e+1:e;n<t.length;n+=2)i=a(t,e,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this._strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var s=t.length-r,o=s%n,a=Math.min(s,s-o)+r,c=0,h=r;h<a;h+=n)c=l(t,h,h+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==o){var u=1;for(c=l(t,h,t.length,e),h=0;h<o;h++)u*=e;this.imuln(u),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},i.prototype._move=function(t){c(t,this)},i.prototype.clone=function(){var t=new i(null);return this.copy(t),t},i.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(t){i.prototype.inspect=h}else i.prototype.inspect=h;function h(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var u=["","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"],d=[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],f=[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];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],s=0|e.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var h=l>>>26,u=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;h+=(o=(i=0|t.words[p])*(s=0|e.words[f])+u)/67108864|0,u=67108863&o}r.words[c]=0|u,l=0|h}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,s=0,o=0;o<this.length;o++){var a=this.words[o],l=(16777215&(a<<i|s)).toString(16);s=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,o--),n=0!==s||o!==this.length-1?u[6-l.length]+l+n:l+n}for(0!==s&&(n=s.toString(16)+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=d[t],h=f[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(h).toString(t);n=(p=p.idivn(h)).isZero()?m+n:u[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),i.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},i.prototype.toArrayLike=function(t,e,n){this._strip();var i=this.byteLength(),s=n||Math.max(1,i);r(i<=s,"byte array longer than desired length"),r(s>0,"Requested array length <= 0");var o=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,s);return this["_toArrayLike"+("le"===e?"LE":"BE")](o,i),o},i.prototype._toArrayLikeLE=function(t,e){for(var r=0,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;t[r++]=255&o,r<t.length&&(t[r++]=o>>8&255),r<t.length&&(t[r++]=o>>16&255),6===s?(r<t.length&&(t[r++]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r<t.length)for(t[r++]=n;r<t.length;)t[r++]=0},i.prototype._toArrayLikeBE=function(t,e){for(var r=t.length-1,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;t[r--]=255&o,r>=0&&(t[r--]=o>>8&255),r>=0&&(t[r--]=o>>16&255),6===s?(r>=0&&(t[r--]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r>=0)for(t[r--]=n;r>=0;)t[r--]=0},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},i.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},i.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},i.prototype.ior=function(t){return r(0===(this.negative|t.negative)),this.iuor(t)},i.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},i.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this._strip()},i.prototype.iand=function(t){return r(0===(this.negative|t.negative)),this.iuand(t)},i.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},i.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this._strip()},i.prototype.ixor=function(t){return r(0===(this.negative|t.negative)),this.iuxor(t)},i.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},i.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(t){return this.clone().inotn(t)},i.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this._strip()},i.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,s=0;s<n.length;s++)e=(0|r.words[s])+(0|n.words[s])+i,this.words[s]=67108863&e,i=e>>>26;for(;0!==i&&s<r.length;s++)e=(0|r.words[s])+i,this.words[s]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this},i.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var s=0,o=0;o<n.length;o++)s=(e=(0|r.words[o])-(0|n.words[o])+s)>>26,this.words[o]=67108863&e;for(;0!==s&&o<r.length;o++)s=(e=(0|r.words[o])+s)>>26,this.words[o]=67108863&e;if(0===s&&o<r.length&&r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this.length=Math.max(this.length,o),r!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,e,r){var n,i,s,o=t.words,a=e.words,l=r.words,c=0,h=0|o[0],u=8191&h,d=h>>>13,f=0|o[1],p=8191&f,m=f>>>13,g=0|o[2],y=8191&g,v=g>>>13,w=0|o[3],b=8191&w,E=w>>>13,A=0|o[4],k=8191&A,S=A>>>13,C=0|o[5],_=8191&C,x=C>>>13,I=0|o[6],T=8191&I,P=I>>>13,N=0|o[7],B=8191&N,M=N>>>13,R=0|o[8],F=8191&R,O=R>>>13,D=0|o[9],L=8191&D,U=D>>>13,q=0|a[0],z=8191&q,j=q>>>13,G=0|a[1],H=8191&G,W=G>>>13,K=0|a[2],$=8191&K,V=K>>>13,J=0|a[3],Q=8191&J,Y=J>>>13,X=0|a[4],Z=8191&X,tt=X>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],st=8191&it,ot=it>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ht=0|a[8],ut=8191&ht,dt=ht>>>13,ft=0|a[9],pt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(u,z))|0)+((8191&(i=(i=Math.imul(u,j))+Math.imul(d,z)|0))<<13)|0;c=((s=Math.imul(d,j))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,z),i=(i=Math.imul(p,j))+Math.imul(m,z)|0,s=Math.imul(m,j);var yt=(c+(n=n+Math.imul(u,H)|0)|0)+((8191&(i=(i=i+Math.imul(u,W)|0)+Math.imul(d,H)|0))<<13)|0;c=((s=s+Math.imul(d,W)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,z),i=(i=Math.imul(y,j))+Math.imul(v,z)|0,s=Math.imul(v,j),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,W)|0)+Math.imul(m,H)|0,s=s+Math.imul(m,W)|0;var vt=(c+(n=n+Math.imul(u,$)|0)|0)+((8191&(i=(i=i+Math.imul(u,V)|0)+Math.imul(d,$)|0))<<13)|0;c=((s=s+Math.imul(d,V)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(b,z),i=(i=Math.imul(b,j))+Math.imul(E,z)|0,s=Math.imul(E,j),n=n+Math.imul(y,H)|0,i=(i=i+Math.imul(y,W)|0)+Math.imul(v,H)|0,s=s+Math.imul(v,W)|0,n=n+Math.imul(p,$)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,$)|0,s=s+Math.imul(m,V)|0;var wt=(c+(n=n+Math.imul(u,Q)|0)|0)+((8191&(i=(i=i+Math.imul(u,Y)|0)+Math.imul(d,Q)|0))<<13)|0;c=((s=s+Math.imul(d,Y)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,z),i=(i=Math.imul(k,j))+Math.imul(S,z)|0,s=Math.imul(S,j),n=n+Math.imul(b,H)|0,i=(i=i+Math.imul(b,W)|0)+Math.imul(E,H)|0,s=s+Math.imul(E,W)|0,n=n+Math.imul(y,$)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,$)|0,s=s+Math.imul(v,V)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,Y)|0;var bt=(c+(n=n+Math.imul(u,Z)|0)|0)+((8191&(i=(i=i+Math.imul(u,tt)|0)+Math.imul(d,Z)|0))<<13)|0;c=((s=s+Math.imul(d,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(_,z),i=(i=Math.imul(_,j))+Math.imul(x,z)|0,s=Math.imul(x,j),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,W)|0)+Math.imul(S,H)|0,s=s+Math.imul(S,W)|0,n=n+Math.imul(b,$)|0,i=(i=i+Math.imul(b,V)|0)+Math.imul(E,$)|0,s=s+Math.imul(E,V)|0,n=n+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,Y)|0)+Math.imul(v,Q)|0,s=s+Math.imul(v,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,tt)|0;var Et=(c+(n=n+Math.imul(u,rt)|0)|0)+((8191&(i=(i=i+Math.imul(u,nt)|0)+Math.imul(d,rt)|0))<<13)|0;c=((s=s+Math.imul(d,nt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(T,z),i=(i=Math.imul(T,j))+Math.imul(P,z)|0,s=Math.imul(P,j),n=n+Math.imul(_,H)|0,i=(i=i+Math.imul(_,W)|0)+Math.imul(x,H)|0,s=s+Math.imul(x,W)|0,n=n+Math.imul(k,$)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(S,$)|0,s=s+Math.imul(S,V)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,Y)|0)+Math.imul(E,Q)|0,s=s+Math.imul(E,Y)|0,n=n+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,tt)|0)+Math.imul(v,Z)|0,s=s+Math.imul(v,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,s=s+Math.imul(m,nt)|0;var At=(c+(n=n+Math.imul(u,st)|0)|0)+((8191&(i=(i=i+Math.imul(u,ot)|0)+Math.imul(d,st)|0))<<13)|0;c=((s=s+Math.imul(d,ot)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,z),i=(i=Math.imul(B,j))+Math.imul(M,z)|0,s=Math.imul(M,j),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,W)|0)+Math.imul(P,H)|0,s=s+Math.imul(P,W)|0,n=n+Math.imul(_,$)|0,i=(i=i+Math.imul(_,V)|0)+Math.imul(x,$)|0,s=s+Math.imul(x,V)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,Y)|0,n=n+Math.imul(b,Z)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(E,Z)|0,s=s+Math.imul(E,tt)|0,n=n+Math.imul(y,rt)|0,i=(i=i+Math.imul(y,nt)|0)+Math.imul(v,rt)|0,s=s+Math.imul(v,nt)|0,n=n+Math.imul(p,st)|0,i=(i=i+Math.imul(p,ot)|0)+Math.imul(m,st)|0,s=s+Math.imul(m,ot)|0;var kt=(c+(n=n+Math.imul(u,lt)|0)|0)+((8191&(i=(i=i+Math.imul(u,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((s=s+Math.imul(d,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,z),i=(i=Math.imul(F,j))+Math.imul(O,z)|0,s=Math.imul(O,j),n=n+Math.imul(B,H)|0,i=(i=i+Math.imul(B,W)|0)+Math.imul(M,H)|0,s=s+Math.imul(M,W)|0,n=n+Math.imul(T,$)|0,i=(i=i+Math.imul(T,V)|0)+Math.imul(P,$)|0,s=s+Math.imul(P,V)|0,n=n+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,Y)|0)+Math.imul(x,Q)|0,s=s+Math.imul(x,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(E,rt)|0,s=s+Math.imul(E,nt)|0,n=n+Math.imul(y,st)|0,i=(i=i+Math.imul(y,ot)|0)+Math.imul(v,st)|0,s=s+Math.imul(v,ot)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,s=s+Math.imul(m,ct)|0;var St=(c+(n=n+Math.imul(u,ut)|0)|0)+((8191&(i=(i=i+Math.imul(u,dt)|0)+Math.imul(d,ut)|0))<<13)|0;c=((s=s+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,z),i=(i=Math.imul(L,j))+Math.imul(U,z)|0,s=Math.imul(U,j),n=n+Math.imul(F,H)|0,i=(i=i+Math.imul(F,W)|0)+Math.imul(O,H)|0,s=s+Math.imul(O,W)|0,n=n+Math.imul(B,$)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(M,$)|0,s=s+Math.imul(M,V)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,Y)|0)+Math.imul(P,Q)|0,s=s+Math.imul(P,Y)|0,n=n+Math.imul(_,Z)|0,i=(i=i+Math.imul(_,tt)|0)+Math.imul(x,Z)|0,s=s+Math.imul(x,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(S,rt)|0,s=s+Math.imul(S,nt)|0,n=n+Math.imul(b,st)|0,i=(i=i+Math.imul(b,ot)|0)+Math.imul(E,st)|0,s=s+Math.imul(E,ot)|0,n=n+Math.imul(y,lt)|0,i=(i=i+Math.imul(y,ct)|0)+Math.imul(v,lt)|0,s=s+Math.imul(v,ct)|0,n=n+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ut)|0,s=s+Math.imul(m,dt)|0;var Ct=(c+(n=n+Math.imul(u,pt)|0)|0)+((8191&(i=(i=i+Math.imul(u,mt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((s=s+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,H),i=(i=Math.imul(L,W))+Math.imul(U,H)|0,s=Math.imul(U,W),n=n+Math.imul(F,$)|0,i=(i=i+Math.imul(F,V)|0)+Math.imul(O,$)|0,s=s+Math.imul(O,V)|0,n=n+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,Y)|0)+Math.imul(M,Q)|0,s=s+Math.imul(M,Y)|0,n=n+Math.imul(T,Z)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(P,Z)|0,s=s+Math.imul(P,tt)|0,n=n+Math.imul(_,rt)|0,i=(i=i+Math.imul(_,nt)|0)+Math.imul(x,rt)|0,s=s+Math.imul(x,nt)|0,n=n+Math.imul(k,st)|0,i=(i=i+Math.imul(k,ot)|0)+Math.imul(S,st)|0,s=s+Math.imul(S,ot)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(E,lt)|0,s=s+Math.imul(E,ct)|0,n=n+Math.imul(y,ut)|0,i=(i=i+Math.imul(y,dt)|0)+Math.imul(v,ut)|0,s=s+Math.imul(v,dt)|0;var _t=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((s=s+Math.imul(m,mt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(L,$),i=(i=Math.imul(L,V))+Math.imul(U,$)|0,s=Math.imul(U,V),n=n+Math.imul(F,Q)|0,i=(i=i+Math.imul(F,Y)|0)+Math.imul(O,Q)|0,s=s+Math.imul(O,Y)|0,n=n+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,tt)|0)+Math.imul(M,Z)|0,s=s+Math.imul(M,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(P,rt)|0,s=s+Math.imul(P,nt)|0,n=n+Math.imul(_,st)|0,i=(i=i+Math.imul(_,ot)|0)+Math.imul(x,st)|0,s=s+Math.imul(x,ot)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(S,lt)|0,s=s+Math.imul(S,ct)|0,n=n+Math.imul(b,ut)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ut)|0,s=s+Math.imul(E,dt)|0;var xt=(c+(n=n+Math.imul(y,pt)|0)|0)+((8191&(i=(i=i+Math.imul(y,mt)|0)+Math.imul(v,pt)|0))<<13)|0;c=((s=s+Math.imul(v,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,Q),i=(i=Math.imul(L,Y))+Math.imul(U,Q)|0,s=Math.imul(U,Y),n=n+Math.imul(F,Z)|0,i=(i=i+Math.imul(F,tt)|0)+Math.imul(O,Z)|0,s=s+Math.imul(O,tt)|0,n=n+Math.imul(B,rt)|0,i=(i=i+Math.imul(B,nt)|0)+Math.imul(M,rt)|0,s=s+Math.imul(M,nt)|0,n=n+Math.imul(T,st)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(P,st)|0,s=s+Math.imul(P,ot)|0,n=n+Math.imul(_,lt)|0,i=(i=i+Math.imul(_,ct)|0)+Math.imul(x,lt)|0,s=s+Math.imul(x,ct)|0,n=n+Math.imul(k,ut)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ut)|0,s=s+Math.imul(S,dt)|0;var It=(c+(n=n+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((s=s+Math.imul(E,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Z),i=(i=Math.imul(L,tt))+Math.imul(U,Z)|0,s=Math.imul(U,tt),n=n+Math.imul(F,rt)|0,i=(i=i+Math.imul(F,nt)|0)+Math.imul(O,rt)|0,s=s+Math.imul(O,nt)|0,n=n+Math.imul(B,st)|0,i=(i=i+Math.imul(B,ot)|0)+Math.imul(M,st)|0,s=s+Math.imul(M,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(P,lt)|0,s=s+Math.imul(P,ct)|0,n=n+Math.imul(_,ut)|0,i=(i=i+Math.imul(_,dt)|0)+Math.imul(x,ut)|0,s=s+Math.imul(x,dt)|0;var Tt=(c+(n=n+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,mt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((s=s+Math.imul(S,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,rt),i=(i=Math.imul(L,nt))+Math.imul(U,rt)|0,s=Math.imul(U,nt),n=n+Math.imul(F,st)|0,i=(i=i+Math.imul(F,ot)|0)+Math.imul(O,st)|0,s=s+Math.imul(O,ot)|0,n=n+Math.imul(B,lt)|0,i=(i=i+Math.imul(B,ct)|0)+Math.imul(M,lt)|0,s=s+Math.imul(M,ct)|0,n=n+Math.imul(T,ut)|0,i=(i=i+Math.imul(T,dt)|0)+Math.imul(P,ut)|0,s=s+Math.imul(P,dt)|0;var Pt=(c+(n=n+Math.imul(_,pt)|0)|0)+((8191&(i=(i=i+Math.imul(_,mt)|0)+Math.imul(x,pt)|0))<<13)|0;c=((s=s+Math.imul(x,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,st),i=(i=Math.imul(L,ot))+Math.imul(U,st)|0,s=Math.imul(U,ot),n=n+Math.imul(F,lt)|0,i=(i=i+Math.imul(F,ct)|0)+Math.imul(O,lt)|0,s=s+Math.imul(O,ct)|0,n=n+Math.imul(B,ut)|0,i=(i=i+Math.imul(B,dt)|0)+Math.imul(M,ut)|0,s=s+Math.imul(M,dt)|0;var Nt=(c+(n=n+Math.imul(T,pt)|0)|0)+((8191&(i=(i=i+Math.imul(T,mt)|0)+Math.imul(P,pt)|0))<<13)|0;c=((s=s+Math.imul(P,mt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(L,lt),i=(i=Math.imul(L,ct))+Math.imul(U,lt)|0,s=Math.imul(U,ct),n=n+Math.imul(F,ut)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ut)|0,s=s+Math.imul(O,dt)|0;var Bt=(c+(n=n+Math.imul(B,pt)|0)|0)+((8191&(i=(i=i+Math.imul(B,mt)|0)+Math.imul(M,pt)|0))<<13)|0;c=((s=s+Math.imul(M,mt)|0)+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,ut),i=(i=Math.imul(L,dt))+Math.imul(U,ut)|0,s=Math.imul(U,dt);var Mt=(c+(n=n+Math.imul(F,pt)|0)|0)+((8191&(i=(i=i+Math.imul(F,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((s=s+Math.imul(O,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863;var Rt=(c+(n=Math.imul(L,pt))|0)+((8191&(i=(i=Math.imul(L,mt))+Math.imul(U,pt)|0))<<13)|0;return c=((s=Math.imul(U,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=yt,l[2]=vt,l[3]=wt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=_t,l[11]=xt,l[12]=It,l[13]=Tt,l[14]=Pt,l[15]=Nt,l[16]=Bt,l[17]=Mt,l[18]=Rt,0!==c&&(l[19]=c,r.length++),r};function g(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,s=0;s<r.length-1;s++){var o=i;i=0;for(var a=67108863&n,l=Math.min(s,e.length-1),c=Math.max(0,s-t.length+1);c<=l;c++){var h=s-c,u=(0|t.words[h])*(0|e.words[c]),d=67108863&u;a=67108863&(d=d+a|0),i+=(o=(o=o+(u/67108864|0)|0)+(d>>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r._strip()}function y(t,e,r){return g(t,e,r)}Math.imul||(m=p),i.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):r<63?p(this,t,e):r<1024?g(this,t,e):y(this,t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.mulf=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),y(this,t,e)},i.prototype.imul=function(t){return this.clone().mulTo(t,this)},i.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var n=0,i=0;i<this.length;i++){var s=(0|this.words[i])*t,o=(67108863&s)+(67108863&n);n>>=26,n+=s/67108864|0,n+=o>>>26,this.words[i]=67108863&o}return 0!==n&&(this.words[i]=n,this.length++),this.length=0===t?1:this.length,e?this.ineg():this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=t.words[n]>>>i&1}return e}(t);if(0===e.length)return new i(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var s=r.sqr();n<e.length;n++,s=s.sqr())0!==e[n]&&(r=r.mul(s));return r},i.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,s=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(e=0;e<this.length;e++){var a=this.words[e]&s,l=(0|this.words[e])-a<<n;this.words[e]=l|o,o=a>>>26-n}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},i.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var s=t%26,o=Math.min((t-s)/26,this.length),a=67108863^67108863>>>s<<s,l=n;if(i-=o,i=Math.max(0,i),l){for(var c=0;c<o;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var h=0;for(c=this.length-1;c>=0&&(0!==h||c>=i);c--){var u=0|this.words[c];this.words[c]=h<<26-s|u>>>s,h=u&a}return l&&0!==h&&(l.words[l.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.ushln=function(t){return this.clone().iushln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.ushrn=function(t){return this.clone().iushrn(t)},i.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n||!(this.words[n]&i))},i.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this._strip()},i.prototype.maskn=function(t){return this.clone().imaskn(t)},i.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},i.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},i.prototype.addn=function(t){return this.clone().iaddn(t)},i.prototype.subn=function(t){return this.clone().isubn(t)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(t,e,n){var i,s,o=t.length+n;this._expand(o);var a=0;for(i=0;i<t.length;i++){s=(0|this.words[i+n])+a;var l=(0|t.words[i])*e;a=((s-=67108863&l)>>26)-(l/67108864|0),this.words[i+n]=67108863&s}for(;i<this.length-n;i++)a=(s=(0|this.words[i+n])+a)>>26,this.words[i+n]=67108863&s;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i<this.length;i++)a=(s=-(0|this.words[i])+a)>>26,this.words[i]=67108863&s;return this.negative=1,this._strip()},i.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),s=t,o=0|s.words[s.length-1];0!=(r=26-this._countBits(o))&&(s=s.ushln(r),n.iushln(r),o=0|s.words[s.length-1]);var a,l=n.length-s.length;if("mod"!==e){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var h=n.clone()._ishlnsubmul(s,1,l);0===h.negative&&(n=h,a&&(a.words[l]=1));for(var u=l-1;u>=0;u--){var d=67108864*(0|n.words[s.length+u])+(0|n.words[s.length+u-1]);for(d=Math.min(d/o|0,67108863),n._ishlnsubmul(s,d,u);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(s,1,u),n.isZero()||(n.negative^=1);a&&(a.words[u]=d)}return a&&a._strip(),n._strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(s=a.div.neg()),"div"!==e&&(o=a.mod.neg(),n&&0!==o.negative&&o.iadd(t)),{div:s,mod:o}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(s=a.div.neg()),{div:s,mod:a.mod}):0!==(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(o=a.mod.neg(),n&&0!==o.negative&&o.isub(t)),{div:a.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new i(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modrn(t.words[0]))}:this._wordDiv(t,e);var s,o,a},i.prototype.div=function(t){return this.divmod(t,"div",!1).div},i.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},i.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=(1<<26)%t,i=0,s=this.length-1;s>=0;s--)i=(n*i+(0|this.words[s]))%t;return e?-i:i},i.prototype.modn=function(t){return this.modrn(t)},i.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var s=(0|this.words[i])+67108864*n;this.words[i]=s/t|0,n=s%t}return this._strip(),e?this.ineg():this},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var s=new i(1),o=new i(0),a=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var h=n.clone(),u=e.clone();!e.isZero();){for(var d=0,f=1;0===(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(s.isOdd()||o.isOdd())&&(s.iadd(h),o.isub(u)),s.iushrn(1),o.iushrn(1);for(var p=0,m=1;0===(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(h),l.isub(u)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a),o.isub(l)):(n.isub(e),a.isub(s),l.isub(o))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var s,o=new i(1),a=new i(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,h=1;0===(e.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(e.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var u=0,d=1;0===(n.words[0]&d)&&u<26;++u,d<<=1);if(u>0)for(n.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(a)):(n.isub(e),a.isub(o))}return(s=0===e.cmpn(1)?o:a).cmpn(0)<0&&s.iadd(t),s},i.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var s=e;e=r,r=s}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},i.prototype.invm=function(t){return this.egcd(t).a.umod(t)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var s=i,o=n;0!==s&&o<this.length;o++){var a=0|this.words[o];s=(a+=s)>>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},i.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},i.prototype.gtn=function(t){return 1===this.cmpn(t)},i.prototype.gt=function(t){return 1===this.cmp(t)},i.prototype.gten=function(t){return this.cmpn(t)>=0},i.prototype.gte=function(t){return this.cmp(t)>=0},i.prototype.ltn=function(t){return-1===this.cmpn(t)},i.prototype.lt=function(t){return-1===this.cmp(t)},i.prototype.lten=function(t){return this.cmpn(t)<=0},i.prototype.lte=function(t){return this.cmp(t)<=0},i.prototype.eqn=function(t){return 0===this.cmpn(t)},i.prototype.eq=function(t){return 0===this.cmp(t)},i.red=function(t){return new S(t)},i.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(t){if("string"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){S.call(this,t),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)}w.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(b,w),b.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i<n;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var s=t.words[9];for(e.words[e.length++]=s&r,i=10;i<t.length;i++){var o=0|t.words[i];t.words[i-10]=(o&r)<<4|s>>>22,s=o}s>>>=22,t.words[i-10]=s,0===s&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(E,w),n(A,w),n(k,w),k.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new E;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new k}return v[t]=e,e},S.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},S.prototype._verify2=function(t,e){r(0===(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},S.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},S.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},S.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},S.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},S.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},S.prototype.isqr=function(t){return this.imul(t,t.clone())},S.prototype.sqr=function(t){return this.mul(t,t)},S.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new i(1)).iushrn(2);return this.pow(t,n)}for(var s=this.m.subn(1),o=0;!s.isZero()&&0===s.andln(1);)o++,s.iushrn(1);r(!s.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);0!==this.pow(h,c).cmp(l);)h.redIAdd(l);for(var u=this.pow(h,s),d=this.pow(t,s.addn(1).iushrn(1)),f=this.pow(t,s),p=o;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g<p);var y=this.pow(u,new i(1).iushln(p-g-1));d=d.redMul(y),u=y.redSqr(),f=f.redMul(u),p=g}return d},S.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},S.prototype.pow=function(t,e){if(e.isZero())return new i(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var s=r[0],o=0,a=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],h=l-1;h>=0;h--){var u=c>>h&1;s!==r[0]&&(s=this.sqr(s)),0!==u||0!==o?(o<<=1,o|=u,(4===++a||0===n&&0===h)&&(s=this.mul(s,r[o]),a=0,o=0)):a=0}l=26}return s},S.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},S.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},i.mont=function(t){return new C(t)},n(C,S),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(n).iushrn(this.shift),o=s;return s.cmp(this.m)>=0?o=s.isub(this.m):s.cmpn(0)<0&&(o=s.iadd(this.m)),o._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(s,s.exports)),s.exports),a=n(o);let l=!1,c=!1;const h={debug:1,default:2,info:2,warning:3,error:4,off:5};let u=h.default,d=null;const f=function(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(r){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var p,m;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(p||(p={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(m||(m={}));const g="0123456789abcdef";class y{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==h[r]&&this.throwArgumentError("invalid log level name","logLevel",t),u>h[r]||console.log.apply(console,e)}debug(...t){this._log(y.levels.DEBUG,t)}info(...t){this._log(y.levels.INFO,t)}warn(...t){this._log(y.levels.WARNING,t)}makeError(t,e,r){if(c)return this.makeError("censored error",e,{});e||(e=y.errors.UNKNOWN_ERROR),r||(r={});const n=[];Object.keys(r).forEach(t=>{const e=r[t];try{if(e instanceof Uint8Array){let r="";for(let t=0;t<e.length;t++)r+=g[e[t]>>4],r+=g[15&e[t]];n.push(t+"=Uint8Array(0x"+r+")")}else n.push(t+"="+JSON.stringify(e))}catch(e){n.push(t+"="+JSON.stringify(r[t].toString()))}}),n.push(`code=${e}`),n.push(`version=${this.version}`);const i=t;let s="";switch(e){case m.NUMERIC_FAULT:{s="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":s+="-"+e;break;case"negative-power":case"negative-width":s+="-unsupported";break;case"unbound-bitwise-result":s+="-unbound-result"}break}case m.CALL_EXCEPTION:case m.INSUFFICIENT_FUNDS:case m.MISSING_NEW:case m.NONCE_EXPIRED:case m.REPLACEMENT_UNDERPRICED:case m.TRANSACTION_REPLACED:case m.UNPREDICTABLE_GAS_LIMIT:s=e}s&&(t+=" [ See: https://links.ethers.org/v5-errors-"+s+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const o=new Error(t);return o.reason=i,o.code=e,Object.keys(r).forEach(function(t){o[t]=r[t]}),o}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,y.errors.INVALID_ARGUMENT,{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r,n)}assertArgument(t,e,r,n){t||this.throwArgumentError(e,r,n)}checkNormalize(t){f&&this.throwError("platform missing String.prototype.normalize",y.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:f})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,y.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,y.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,y.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,y.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",y.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",y.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",y.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return d||(d=new y("logger/5.8.0")),d}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",y.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),l){if(!t)return;this.globalLogger().throwError("error censorship permanent",y.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}c=!!t,l=!!e}static setLogLevel(t){const e=h[t.toLowerCase()];null!=e?u=e:y.globalLogger().warn("invalid log level - "+t)}static from(t){return new y(t)}}y.errors=m,y.levels=p;const v=new y("bytes/5.8.0");function w(t){return!!t.toHexString}function b(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return b(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function E(t){return I(t)&&!(t.length%2)||k(t)}function A(t){return"number"==typeof t&&t==t&&t%1==0}function k(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!A(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!A(r)||r<0||r>=256)return!1}return!0}function S(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),b(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),w(t)&&(t=t.toHexString()),I(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":v.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let t=0;t<r.length;t+=2)n.push(parseInt(r.substring(t,t+2),16));return b(new Uint8Array(n))}return k(t)?b(new Uint8Array(t)):v.throwArgumentError("invalid arrayify value","value",t)}function C(t){const e=t.map(t=>S(t)),r=e.reduce((t,e)=>t+e.length,0),n=new Uint8Array(r);return e.reduce((t,e)=>(n.set(e,t),t+e.length),0),b(n)}function _(t){let e=S(t);if(0===e.length)return e;let r=0;for(;r<e.length&&0===e[r];)r++;return r&&(e=e.slice(r)),e}function x(t,e){(t=S(t)).length>e&&v.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),b(r)}function I(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const T="0123456789abcdef";function P(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=T[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),w(t))return t.toHexString();if(I(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":v.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(k(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=T[(240&n)>>4]+T[15&n]}return e}return v.throwArgumentError("invalid hexlify value","value",t)}function N(t){if("string"!=typeof t)t=P(t);else if(!I(t)||t.length%2)return null;return(t.length-2)/2}function B(t,e,r){return"string"!=typeof t?t=P(t):(!I(t)||t.length%2)&&v.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function M(t){let e="0x";return t.forEach(t=>{e+=P(t).substring(2)}),e}function R(t){const e=F(P(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function F(t){"string"!=typeof t&&(t=P(t)),I(t)||v.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e<t.length&&"0"===t[e];)e++;return"0x"+t.substring(e)}function O(t,e){for("string"!=typeof t?t=P(t):I(t)||v.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&v.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function D(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(E(t)){let r=S(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=P(r.slice(0,32)),e.s=P(r.slice(32,64))):65===r.length?(e.r=P(r.slice(0,32)),e.s=P(r.slice(32,64)),e.v=r[64]):v.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:v.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=P(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,null!=e._vs){const r=x(S(e._vs),32);e._vs=P(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&v.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=P(r);null==e.s?e.s=i:e.s!==i&&v.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?v.throwArgumentError("signature missing v and recoveryParam","signature",t):0===e.v||1===e.v?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(null==e.v)e.v=27+e.recoveryParam;else{const r=0===e.v||1===e.v?e.v:1-e.v%2;e.recoveryParam!==r&&v.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&I(e.r)?e.r=O(e.r,32):v.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&I(e.s)?e.s=O(e.s,32):v.throwArgumentError("signature missing or invalid s","signature",t);const r=S(e.s);r[0]>=128&&v.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=P(r);e._vs&&(I(e._vs)||v.throwArgumentError("signature invalid _vs","signature",t),e._vs=O(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&v.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function L(t){return P(C([(t=D(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const U="bignumber/5.8.0";var q=a.BN;const z=new y(U),j={},G=9007199254740991;let H=!1;class W{constructor(t,e){t!==j&&z.throwError("cannot call constructor directly; use BigNumber.from",y.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return $(V(this).fromTwos(t))}toTwos(t){return $(V(this).toTwos(t))}abs(){return"-"===this._hex[0]?W.from(this._hex.substring(1)):this}add(t){return $(V(this).add(V(t)))}sub(t){return $(V(this).sub(V(t)))}div(t){return W.from(t).isZero()&&J("division-by-zero","div"),$(V(this).div(V(t)))}mul(t){return $(V(this).mul(V(t)))}mod(t){const e=V(t);return e.isNeg()&&J("division-by-zero","mod"),$(V(this).umod(e))}pow(t){const e=V(t);return e.isNeg()&&J("negative-power","pow"),$(V(this).pow(e))}and(t){const e=V(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","and"),$(V(this).and(e))}or(t){const e=V(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","or"),$(V(this).or(e))}xor(t){const e=V(t);return(this.isNegative()||e.isNeg())&&J("unbound-bitwise-result","xor"),$(V(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&J("negative-width","mask"),$(V(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&J("negative-width","shl"),$(V(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&J("negative-width","shr"),$(V(this).shrn(t))}eq(t){return V(this).eq(V(t))}lt(t){return V(this).lt(V(t))}lte(t){return V(this).lte(V(t))}gt(t){return V(this).gt(V(t))}gte(t){return V(this).gte(V(t))}isNegative(){return"-"===this._hex[0]}isZero(){return V(this).isZero()}toNumber(){try{return V(this).toNumber()}catch(t){J("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return z.throwError("this platform does not support BigInt",y.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?H||(H=!0,z.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?z.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",y.errors.UNEXPECTED_ARGUMENT,{}):z.throwError("BigNumber.toString does not accept parameters",y.errors.UNEXPECTED_ARGUMENT,{})),V(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof W)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new W(j,K(t)):t.match(/^-?[0-9]+$/)?new W(j,K(new q(t))):z.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&J("underflow","BigNumber.from",t),(t>=G||t<=-G)&&J("overflow","BigNumber.from",t),W.from(String(t));const e=t;if("bigint"==typeof e)return W.from(e.toString());if(k(e))return W.from(P(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return W.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(I(t)||"-"===t[0]&&I(t.substring(1))))return W.from(t)}return z.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function K(t){if("string"!=typeof t)return K(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&z.throwArgumentError("invalid hex","value",t),"0x00"===(t=K(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function $(t){return W.from(K(t))}function V(t){const e=W.from(t).toHexString();return"-"===e[0]?new q("-"+e.substring(3),16):new q(e.substring(2),16)}function J(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),z.throwError(t,y.errors.NUMERIC_FAULT,n)}const Q=new y(U),Y={},X=W.from(0),Z=W.from(-1);function tt(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),Q.throwError(t,y.errors.NUMERIC_FAULT,i)}let et="0";for(;et.length<256;)et+=et;function rt(t){if("number"!=typeof t)try{t=W.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+et.substring(0,t):Q.throwArgumentError("invalid decimal size","decimals",t)}function nt(t,e){null==e&&(e=0);const r=rt(e),n=(t=W.from(t)).lt(X);n&&(t=t.mul(Z));let i=t.mod(r).toString();for(;i.length<r.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const s=t.div(r).toString();return t=1===r.length?s:s+"."+i,n&&(t="-"+t),t}function it(t,e){null==e&&(e=0);const r=rt(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||Q.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&Q.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&Q.throwArgumentError("too many decimal points","value",t);let s=i[0],o=i[1];for(s||(s="0"),o||(o="0");"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>r.length-1&&tt("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.length<r.length-1;)o+="0";const a=W.from(s),l=W.from(o);let c=a.mul(r).add(l);return n&&(c=c.mul(Z)),c}class st{constructor(t,e,r,n){t!==Y&&Q.throwError("cannot use FixedFormat constructor; use FixedFormat.from",y.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=e,this.width=r,this.decimals=n,this.name=(e?"":"u")+"fixed"+String(r)+"x"+String(n),this._multiplier=rt(n),Object.freeze(this)}static from(t){if(t instanceof st)return t;"number"==typeof t&&(t=`fixed128x${t}`);let e=!0,r=128,n=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const i=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||Q.throwArgumentError("invalid fixed format","format",t),e="u"!==i[1],r=parseInt(i[2]),n=parseInt(i[3])}else if(t){const i=(e,r,n)=>null==t[e]?n:(typeof t[e]!==r&&Q.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=i("signed","boolean",e),r=i("width","number",r),n=i("decimals","number",n)}return r%8&&Q.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&Q.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new st(Y,e,r,n)}}class ot{constructor(t,e,r,n){t!==Y&&Q.throwError("cannot use FixedNumber constructor; use FixedNumber.from",y.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=e,this._value=r,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Q.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return ot.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return ot.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return ot.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=it(this._value,this.format.decimals),r=it(t._value,t.format.decimals);return ot.fromValue(e.mul(this.format._multiplier).div(r),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(at.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(at.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&Q.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=ot.from("1"+et.substring(0,t),this.format),n=lt.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(t){if(null==t)return this._hex;t%8&&Q.throwArgumentError("invalid byte width","width",t);return O(W.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return ot.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(W.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||I(t)||"bigint"==typeof t||k(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),ot.fromString(nt(t,e),st.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=st.from(e),n=it(t,r.decimals);!r.signed&&n.lt(X)&&tt("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=O(i,r.width/8));const s=nt(n,r.decimals);return new ot(Y,i,s,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=st.from(e);if(S(t).length>r.width/8)throw new Error("overflow");let n=W.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),s=nt(n,r.decimals);return new ot(Y,i,s,r)}static from(t,e){if("string"==typeof t)return ot.fromString(t,e);if(k(t))return ot.fromBytes(t,e);try{return ot.fromValue(t,0,e)}catch(t){if(t.code!==y.errors.INVALID_ARGUMENT)throw t}return Q.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const at=ot.from(1),lt=ot.from("0.5");var ct=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const ht=new y("properties/5.8.0");function ut(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function dt(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function ft(t){return ct(this,void 0,void 0,function*(){const e=Object.keys(t).map(e=>{const r=t[e];return Promise.resolve(r).then(t=>({key:e,value:t}))});return(yield Promise.all(e)).reduce((t,e)=>(t[e.key]=e.value,t),{})})}function pt(t,e){t&&"object"==typeof t||ht.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||ht.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function mt(t){const e={};for(const r in t)e[r]=t[r];return e}const gt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function yt(t){if(null==t||gt[typeof t])return!0;if(Array.isArray(t)||"object"==typeof t){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;r<e.length;r++){let n=null;try{n=t[e[r]]}catch(t){continue}if(!yt(n))return!1}return!0}return ht.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function vt(t){if(yt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>wt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&ut(e,r,wt(n))}return e}return ht.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function wt(t){return vt(t)}class bt{constructor(t){for(const e in t)this[e]=wt(t[e])}}const Et="abi/5.8.0",At=new y(Et),kt={};let St={calldata:!0,memory:!0,storage:!0},Ct={calldata:!0,memory:!0};function _t(t,e){if("bytes"===t||"string"===t){if(St[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&Ct[e])return!0;return(St[e]||"payable"===e)&&At.throwArgumentError("invalid modifier","name",e),!1}function xt(t,e){for(let r in e)ut(t,r,e[r])}const It=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Tt=new RegExp(/^(.*)\[([0-9]*)\]$/);class Pt{constructor(t,e){t!==kt&&At.throwError("use fromString",y.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),xt(this,e);let r=this.type.match(Tt);xt(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Pt.fromObject({type:r[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=It.sighash),It[t]||At.throwArgumentError("invalid format type","format",t),t===It.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==It.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===It.full?", ":",")+")"):e+=this.type,t!==It.sighash&&(!0===this.indexed&&(e+=" indexed"),t===It.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Pt.fromString(t,e):Pt.fromObject(t)}static fromObject(t){return Pt.isParamType(t)?t:new Pt(kt,{name:t.name||null,type:zt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Pt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){At.throwArgumentError(`unexpected character at position ${e}`,"param",t)}function i(t){let r={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(r.indexed=!1),r}t=t.replace(/\s/g," ");let s={type:"",name:"",state:{allowType:!0}},o=s;for(let r=0;r<t.length;r++){let s=t[r];switch(s){case"(":o.state.allowType&&""===o.type?o.type="tuple":o.state.allowParams||n(r),o.state.allowType=!1,o.type=zt(o.type),o.components=[i(o)],o=o.components[0];break;case")":delete o.state,"indexed"===o.name&&(e||n(r),o.indexed=!0,o.name=""),_t(o.type,o.name)&&(o.name=""),o.type=zt(o.type);let t=o;o=o.parent,o||n(r),delete t.parent,o.state.allowParams=!1,o.state.allowName=!0,o.state.allowArray=!0;break;case",":delete o.state,"indexed"===o.name&&(e||n(r),o.indexed=!0,o.name=""),_t(o.type,o.name)&&(o.name=""),o.type=zt(o.type);let a=i(o.parent);o.parent.components.push(a),delete o.parent,o=a;break;case" ":o.state.allowType&&""!==o.type&&(o.type=zt(o.type),delete o.state.allowType,o.state.allowName=!0,o.state.allowParams=!0),o.state.allowName&&""!==o.name&&("indexed"===o.name?(e||n(r),o.indexed&&n(r),o.indexed=!0,o.name=""):_t(o.type,o.name)?o.name="":o.state.allowName=!1);break;case"[":o.state.allowArray||n(r),o.type+=s,o.state.allowArray=!1,o.state.allowName=!1,o.state.readArray=!0;break;case"]":o.state.readArray||n(r),o.type+=s,o.state.readArray=!1,o.state.allowArray=!0,o.state.allowName=!0;break;default:o.state.allowType?(o.type+=s,o.state.allowParams=!0,o.state.allowArray=!0):o.state.allowName?(o.name+=s,delete o.state.allowArray):o.state.readArray?o.type+=s:n(r)}}return o.parent&&At.throwArgumentError("unexpected eof","param",t),delete s.state,"indexed"===o.name?(e||n(r.length-7),o.indexed&&n(r.length-7),o.indexed=!0,o.name=""):_t(o.type,o.name)&&(o.name=""),s.type=zt(s.type),s}(t,!!e),Pt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function Nt(t,e){return function(t){t=t.trim();let e=[],r="",n=0;for(let i=0;i<t.length;i++){let s=t[i];","===s&&0===n?(e.push(r),r=""):(r+=s,"("===s?n++:")"===s&&(n--,-1===n&&At.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Pt.fromString(t,e))}class Bt{constructor(t,e){t!==kt&&At.throwError("use a static from method",y.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),xt(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Bt.isFragment(t)?t:"string"==typeof t?Bt.fromString(t):Bt.fromObject(t)}static fromObject(t){if(Bt.isFragment(t))return t;switch(t.type){case"function":return Lt.fromObject(t);case"event":return Mt.fromObject(t);case"constructor":return Dt.fromObject(t);case"error":return qt.fromObject(t);case"fallback":case"receive":return null}return At.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Mt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Lt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Dt.fromString(t.trim()):"error"===t.split(" ")[0]?qt.fromString(t.substring(5).trim()):At.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Mt extends Bt{format(t){if(t||(t=It.sighash),It[t]||At.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==It.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ",t!==It.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Mt.fromString(t):Mt.fromObject(t)}static fromObject(t){if(Mt.isEventFragment(t))return t;"event"!==t.type&&At.throwArgumentError("invalid event object","value",t);const e={name:Gt(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],type:"event"};return new Mt(kt,e)}static fromString(t){let e=t.match(Ht);e||At.throwArgumentError("invalid event string","value",t);let r=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":r=!0;break;case"":break;default:At.warn("unknown modifier: "+t)}}),Mt.fromObject({name:e[1].trim(),anonymous:r,inputs:Nt(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Rt(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&At.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||At.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=W.from(r[1]),r[0]):t}function Ft(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Ot(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&At.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&At.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||At.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&At.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&At.throwArgumentError("unable to determine stateMutability","value",t),e}class Dt extends Bt{format(t){if(t||(t=It.sighash),It[t]||At.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===It.sighash&&At.throwError("cannot format a constructor for sighash",y.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Dt.fromString(t):Dt.fromObject(t)}static fromObject(t){if(Dt.isConstructorFragment(t))return t;"constructor"!==t.type&&At.throwArgumentError("invalid constructor object","value",t);let e=Ot(t);e.constant&&At.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?W.from(t.gas):null};return new Dt(kt,r)}static fromString(t){let e={type:"constructor"},r=(t=Rt(t,e)).match(Ht);return r&&"constructor"===r[1].trim()||At.throwArgumentError("invalid constructor string","value",t),e.inputs=Nt(r[2].trim(),!1),Ft(r[3].trim(),e),Dt.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Lt extends Dt{format(t){if(t||(t=It.sighash),It[t]||At.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==It.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ",t!==It.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?Lt.fromString(t):Lt.fromObject(t)}static fromObject(t){if(Lt.isFunctionFragment(t))return t;"function"!==t.type&&At.throwArgumentError("invalid function object","value",t);let e=Ot(t);const r={type:t.type,name:Gt(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],outputs:t.outputs?t.outputs.map(Pt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?W.from(t.gas):null};return new Lt(kt,r)}static fromString(t){let e={type:"function"},r=(t=Rt(t,e)).split(" returns ");r.length>2&&At.throwArgumentError("invalid function string","value",t);let n=r[0].match(Ht);if(n||At.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&Gt(e.name),e.inputs=Nt(n[2],!1),Ft(n[3].trim(),e),r.length>1){let n=r[1].match(Ht);""==n[1].trim()&&""==n[3].trim()||At.throwArgumentError("unexpected tokens","value",t),e.outputs=Nt(n[2],!1)}else e.outputs=[];return Lt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function Ut(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||At.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class qt extends Bt{format(t){if(t||(t=It.sighash),It[t]||At.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==It.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?qt.fromString(t):qt.fromObject(t)}static fromObject(t){if(qt.isErrorFragment(t))return t;"error"!==t.type&&At.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:Gt(t.name),inputs:t.inputs?t.inputs.map(Pt.fromObject):[]};return Ut(new qt(kt,e))}static fromString(t){let e={type:"error"},r=t.match(Ht);return r||At.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&Gt(e.name),e.inputs=Nt(r[2],!1),Ut(qt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function zt(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const jt=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Gt(t){return t&&t.match(jt)||At.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Ht=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Wt=new y(Et);function Kt(t){const e=[],r=function(t,n){if(Array.isArray(n))for(let i in n){const s=t.slice();s.push(i);try{r(s,n[i])}catch(t){e.push({path:s,error:t})}}};return r([],t),e}class $t{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){Wt.throwArgumentError(t,this.localName,e)}}class Vt{constructor(t){ut(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return M(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(C(t._data))}writeBytes(t){let e=S(t);const r=e.length%this.wordSize;return r&&(e=C([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=S(W.from(t));return e.length>this.wordSize&&Wt.throwError("value out-of-bounds",y.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=C([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class Jt{constructor(t,e,r,n){ut(this,"_data",S(t)),ut(this,"wordSize",e||32),ut(this,"_coerceFunc",r),ut(this,"allowLoose",n),this._offset=0}get data(){return P(this._data)}get consumed(){return this._offset}static coerce(t,e){let r=t.match("^u?int([0-9]+)$");return r&&parseInt(r[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):Jt.coerce(t,e)}_peekBytes(t,e,r){let n=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+n>this._data.length&&(this.allowLoose&&r&&this._offset+e<=this._data.length?n=e:Wt.throwError("data out-of-bounds",y.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new Jt(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let r=this._peekBytes(0,t,!!e);return this._offset+=r.length,r.slice(0,t)}readValue(){return W.from(this.readBytes(this.wordSize))}}var Qt,Yt={exports:{}};
|
|
1
|
+
import{Component as t,h as e,render as r,eventBus as n}from"@monygroupcorp/microact";var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function s(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var o,a={exports:{}};var l=(o||(o=1,function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){if(i.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(t){}function o(t,e){var n=t.charCodeAt(e);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+t)}function a(t,e,r){var n=o(t,r);return r-1>=e&&(n|=o(t,r-1)<<4),n}function l(t,e,n,i){for(var s=0,o=0,a=Math.min(t.length,n),l=e;l<a;l++){var c=t.charCodeAt(l)-48;s*=i,o=c>=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&o<i,"Invalid character"),s+=o}return s}function c(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(i.isBN=function(t){return t instanceof i||null!==t&&"object"==typeof t&&t.constructor.wordSize===i.wordSize&&Array.isArray(t.words)},i.max=function(t,e){return t.cmp(e)>0?t:e},i.min=function(t,e){return t.cmp(e)<0?t:e},i.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this._parseHex(t,i,n):(this._parseBase(t,e,i),"le"===n&&this._initArray(this.toArray(),e,n)))},i.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var s,o,a=0;if("be"===n)for(i=t.length-1,s=0;i>=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if("le"===n)for(i=0,s=0;i<t.length;i+=3)o=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this._strip()},i.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,s=0,o=0;if("be"===r)for(n=t.length-1;n>=e;n-=2)i=a(t,e,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(t.length-e)%2==0?e+1:e;n<t.length;n+=2)i=a(t,e,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this._strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var s=t.length-r,o=s%n,a=Math.min(s,s-o)+r,c=0,h=r;h<a;h+=n)c=l(t,h,h+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==o){var u=1;for(c=l(t,h,t.length,e),h=0;h<o;h++)u*=e;this.imuln(u),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},i.prototype._move=function(t){c(t,this)},i.prototype.clone=function(){var t=new i(null);return this.copy(t),t},i.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(t){i.prototype.inspect=h}else i.prototype.inspect=h;function h(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var u=["","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"],d=[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],f=[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];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],s=0|e.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var h=l>>>26,u=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;h+=(o=(i=0|t.words[p])*(s=0|e.words[f])+u)/67108864|0,u=67108863&o}r.words[c]=0|u,l=0|h}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,s=0,o=0;o<this.length;o++){var a=this.words[o],l=(16777215&(a<<i|s)).toString(16);s=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,o--),n=0!==s||o!==this.length-1?u[6-l.length]+l+n:l+n}for(0!==s&&(n=s.toString(16)+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=d[t],h=f[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(h).toString(t);n=(p=p.idivn(h)).isZero()?m+n:u[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),i.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},i.prototype.toArrayLike=function(t,e,n){this._strip();var i=this.byteLength(),s=n||Math.max(1,i);r(i<=s,"byte array longer than desired length"),r(s>0,"Requested array length <= 0");var o=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,s);return this["_toArrayLike"+("le"===e?"LE":"BE")](o,i),o},i.prototype._toArrayLikeLE=function(t,e){for(var r=0,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;t[r++]=255&o,r<t.length&&(t[r++]=o>>8&255),r<t.length&&(t[r++]=o>>16&255),6===s?(r<t.length&&(t[r++]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r<t.length)for(t[r++]=n;r<t.length;)t[r++]=0},i.prototype._toArrayLikeBE=function(t,e){for(var r=t.length-1,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;t[r--]=255&o,r>=0&&(t[r--]=o>>8&255),r>=0&&(t[r--]=o>>16&255),6===s?(r>=0&&(t[r--]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r>=0)for(t[r--]=n;r>=0;)t[r--]=0},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},i.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},i.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},i.prototype.ior=function(t){return r(0===(this.negative|t.negative)),this.iuor(t)},i.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},i.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this._strip()},i.prototype.iand=function(t){return r(0===(this.negative|t.negative)),this.iuand(t)},i.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},i.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this._strip()},i.prototype.ixor=function(t){return r(0===(this.negative|t.negative)),this.iuxor(t)},i.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},i.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(t){return this.clone().inotn(t)},i.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this._strip()},i.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,s=0;s<n.length;s++)e=(0|r.words[s])+(0|n.words[s])+i,this.words[s]=67108863&e,i=e>>>26;for(;0!==i&&s<r.length;s++)e=(0|r.words[s])+i,this.words[s]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this},i.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var s=0,o=0;o<n.length;o++)s=(e=(0|r.words[o])-(0|n.words[o])+s)>>26,this.words[o]=67108863&e;for(;0!==s&&o<r.length;o++)s=(e=(0|r.words[o])+s)>>26,this.words[o]=67108863&e;if(0===s&&o<r.length&&r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this.length=Math.max(this.length,o),r!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,e,r){var n,i,s,o=t.words,a=e.words,l=r.words,c=0,h=0|o[0],u=8191&h,d=h>>>13,f=0|o[1],p=8191&f,m=f>>>13,g=0|o[2],y=8191&g,w=g>>>13,v=0|o[3],b=8191&v,E=v>>>13,A=0|o[4],k=8191&A,S=A>>>13,C=0|o[5],_=8191&C,N=C>>>13,x=0|o[6],T=8191&x,I=x>>>13,P=0|o[7],B=8191&P,M=P>>>13,R=0|o[8],F=8191&R,O=R>>>13,D=0|o[9],L=8191&D,U=D>>>13,z=0|a[0],q=8191&z,j=z>>>13,G=0|a[1],H=8191&G,W=G>>>13,K=0|a[2],V=8191&K,J=K>>>13,$=0|a[3],Q=8191&$,Y=$>>>13,X=0|a[4],Z=8191&X,tt=X>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],st=8191&it,ot=it>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ht=0|a[8],ut=8191&ht,dt=ht>>>13,ft=0|a[9],pt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(u,q))|0)+((8191&(i=(i=Math.imul(u,j))+Math.imul(d,q)|0))<<13)|0;c=((s=Math.imul(d,j))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,q),i=(i=Math.imul(p,j))+Math.imul(m,q)|0,s=Math.imul(m,j);var yt=(c+(n=n+Math.imul(u,H)|0)|0)+((8191&(i=(i=i+Math.imul(u,W)|0)+Math.imul(d,H)|0))<<13)|0;c=((s=s+Math.imul(d,W)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=(i=Math.imul(y,j))+Math.imul(w,q)|0,s=Math.imul(w,j),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,W)|0)+Math.imul(m,H)|0,s=s+Math.imul(m,W)|0;var wt=(c+(n=n+Math.imul(u,V)|0)|0)+((8191&(i=(i=i+Math.imul(u,J)|0)+Math.imul(d,V)|0))<<13)|0;c=((s=s+Math.imul(d,J)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(b,q),i=(i=Math.imul(b,j))+Math.imul(E,q)|0,s=Math.imul(E,j),n=n+Math.imul(y,H)|0,i=(i=i+Math.imul(y,W)|0)+Math.imul(w,H)|0,s=s+Math.imul(w,W)|0,n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,V)|0,s=s+Math.imul(m,J)|0;var vt=(c+(n=n+Math.imul(u,Q)|0)|0)+((8191&(i=(i=i+Math.imul(u,Y)|0)+Math.imul(d,Q)|0))<<13)|0;c=((s=s+Math.imul(d,Y)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(k,q),i=(i=Math.imul(k,j))+Math.imul(S,q)|0,s=Math.imul(S,j),n=n+Math.imul(b,H)|0,i=(i=i+Math.imul(b,W)|0)+Math.imul(E,H)|0,s=s+Math.imul(E,W)|0,n=n+Math.imul(y,V)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(w,V)|0,s=s+Math.imul(w,J)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,Y)|0;var bt=(c+(n=n+Math.imul(u,Z)|0)|0)+((8191&(i=(i=i+Math.imul(u,tt)|0)+Math.imul(d,Z)|0))<<13)|0;c=((s=s+Math.imul(d,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(_,q),i=(i=Math.imul(_,j))+Math.imul(N,q)|0,s=Math.imul(N,j),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,W)|0)+Math.imul(S,H)|0,s=s+Math.imul(S,W)|0,n=n+Math.imul(b,V)|0,i=(i=i+Math.imul(b,J)|0)+Math.imul(E,V)|0,s=s+Math.imul(E,J)|0,n=n+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,Y)|0)+Math.imul(w,Q)|0,s=s+Math.imul(w,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,tt)|0;var Et=(c+(n=n+Math.imul(u,rt)|0)|0)+((8191&(i=(i=i+Math.imul(u,nt)|0)+Math.imul(d,rt)|0))<<13)|0;c=((s=s+Math.imul(d,nt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(T,q),i=(i=Math.imul(T,j))+Math.imul(I,q)|0,s=Math.imul(I,j),n=n+Math.imul(_,H)|0,i=(i=i+Math.imul(_,W)|0)+Math.imul(N,H)|0,s=s+Math.imul(N,W)|0,n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(S,V)|0,s=s+Math.imul(S,J)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,Y)|0)+Math.imul(E,Q)|0,s=s+Math.imul(E,Y)|0,n=n+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,tt)|0)+Math.imul(w,Z)|0,s=s+Math.imul(w,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,s=s+Math.imul(m,nt)|0;var At=(c+(n=n+Math.imul(u,st)|0)|0)+((8191&(i=(i=i+Math.imul(u,ot)|0)+Math.imul(d,st)|0))<<13)|0;c=((s=s+Math.imul(d,ot)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,q),i=(i=Math.imul(B,j))+Math.imul(M,q)|0,s=Math.imul(M,j),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,W)|0)+Math.imul(I,H)|0,s=s+Math.imul(I,W)|0,n=n+Math.imul(_,V)|0,i=(i=i+Math.imul(_,J)|0)+Math.imul(N,V)|0,s=s+Math.imul(N,J)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,Y)|0,n=n+Math.imul(b,Z)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(E,Z)|0,s=s+Math.imul(E,tt)|0,n=n+Math.imul(y,rt)|0,i=(i=i+Math.imul(y,nt)|0)+Math.imul(w,rt)|0,s=s+Math.imul(w,nt)|0,n=n+Math.imul(p,st)|0,i=(i=i+Math.imul(p,ot)|0)+Math.imul(m,st)|0,s=s+Math.imul(m,ot)|0;var kt=(c+(n=n+Math.imul(u,lt)|0)|0)+((8191&(i=(i=i+Math.imul(u,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((s=s+Math.imul(d,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,q),i=(i=Math.imul(F,j))+Math.imul(O,q)|0,s=Math.imul(O,j),n=n+Math.imul(B,H)|0,i=(i=i+Math.imul(B,W)|0)+Math.imul(M,H)|0,s=s+Math.imul(M,W)|0,n=n+Math.imul(T,V)|0,i=(i=i+Math.imul(T,J)|0)+Math.imul(I,V)|0,s=s+Math.imul(I,J)|0,n=n+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,Y)|0)+Math.imul(N,Q)|0,s=s+Math.imul(N,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(E,rt)|0,s=s+Math.imul(E,nt)|0,n=n+Math.imul(y,st)|0,i=(i=i+Math.imul(y,ot)|0)+Math.imul(w,st)|0,s=s+Math.imul(w,ot)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,s=s+Math.imul(m,ct)|0;var St=(c+(n=n+Math.imul(u,ut)|0)|0)+((8191&(i=(i=i+Math.imul(u,dt)|0)+Math.imul(d,ut)|0))<<13)|0;c=((s=s+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,q),i=(i=Math.imul(L,j))+Math.imul(U,q)|0,s=Math.imul(U,j),n=n+Math.imul(F,H)|0,i=(i=i+Math.imul(F,W)|0)+Math.imul(O,H)|0,s=s+Math.imul(O,W)|0,n=n+Math.imul(B,V)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(M,V)|0,s=s+Math.imul(M,J)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,Y)|0)+Math.imul(I,Q)|0,s=s+Math.imul(I,Y)|0,n=n+Math.imul(_,Z)|0,i=(i=i+Math.imul(_,tt)|0)+Math.imul(N,Z)|0,s=s+Math.imul(N,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(S,rt)|0,s=s+Math.imul(S,nt)|0,n=n+Math.imul(b,st)|0,i=(i=i+Math.imul(b,ot)|0)+Math.imul(E,st)|0,s=s+Math.imul(E,ot)|0,n=n+Math.imul(y,lt)|0,i=(i=i+Math.imul(y,ct)|0)+Math.imul(w,lt)|0,s=s+Math.imul(w,ct)|0,n=n+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ut)|0,s=s+Math.imul(m,dt)|0;var Ct=(c+(n=n+Math.imul(u,pt)|0)|0)+((8191&(i=(i=i+Math.imul(u,mt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((s=s+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,H),i=(i=Math.imul(L,W))+Math.imul(U,H)|0,s=Math.imul(U,W),n=n+Math.imul(F,V)|0,i=(i=i+Math.imul(F,J)|0)+Math.imul(O,V)|0,s=s+Math.imul(O,J)|0,n=n+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,Y)|0)+Math.imul(M,Q)|0,s=s+Math.imul(M,Y)|0,n=n+Math.imul(T,Z)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(I,Z)|0,s=s+Math.imul(I,tt)|0,n=n+Math.imul(_,rt)|0,i=(i=i+Math.imul(_,nt)|0)+Math.imul(N,rt)|0,s=s+Math.imul(N,nt)|0,n=n+Math.imul(k,st)|0,i=(i=i+Math.imul(k,ot)|0)+Math.imul(S,st)|0,s=s+Math.imul(S,ot)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(E,lt)|0,s=s+Math.imul(E,ct)|0,n=n+Math.imul(y,ut)|0,i=(i=i+Math.imul(y,dt)|0)+Math.imul(w,ut)|0,s=s+Math.imul(w,dt)|0;var _t=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((s=s+Math.imul(m,mt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(L,V),i=(i=Math.imul(L,J))+Math.imul(U,V)|0,s=Math.imul(U,J),n=n+Math.imul(F,Q)|0,i=(i=i+Math.imul(F,Y)|0)+Math.imul(O,Q)|0,s=s+Math.imul(O,Y)|0,n=n+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,tt)|0)+Math.imul(M,Z)|0,s=s+Math.imul(M,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(I,rt)|0,s=s+Math.imul(I,nt)|0,n=n+Math.imul(_,st)|0,i=(i=i+Math.imul(_,ot)|0)+Math.imul(N,st)|0,s=s+Math.imul(N,ot)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(S,lt)|0,s=s+Math.imul(S,ct)|0,n=n+Math.imul(b,ut)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ut)|0,s=s+Math.imul(E,dt)|0;var Nt=(c+(n=n+Math.imul(y,pt)|0)|0)+((8191&(i=(i=i+Math.imul(y,mt)|0)+Math.imul(w,pt)|0))<<13)|0;c=((s=s+Math.imul(w,mt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(L,Q),i=(i=Math.imul(L,Y))+Math.imul(U,Q)|0,s=Math.imul(U,Y),n=n+Math.imul(F,Z)|0,i=(i=i+Math.imul(F,tt)|0)+Math.imul(O,Z)|0,s=s+Math.imul(O,tt)|0,n=n+Math.imul(B,rt)|0,i=(i=i+Math.imul(B,nt)|0)+Math.imul(M,rt)|0,s=s+Math.imul(M,nt)|0,n=n+Math.imul(T,st)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(I,st)|0,s=s+Math.imul(I,ot)|0,n=n+Math.imul(_,lt)|0,i=(i=i+Math.imul(_,ct)|0)+Math.imul(N,lt)|0,s=s+Math.imul(N,ct)|0,n=n+Math.imul(k,ut)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ut)|0,s=s+Math.imul(S,dt)|0;var xt=(c+(n=n+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((s=s+Math.imul(E,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,Z),i=(i=Math.imul(L,tt))+Math.imul(U,Z)|0,s=Math.imul(U,tt),n=n+Math.imul(F,rt)|0,i=(i=i+Math.imul(F,nt)|0)+Math.imul(O,rt)|0,s=s+Math.imul(O,nt)|0,n=n+Math.imul(B,st)|0,i=(i=i+Math.imul(B,ot)|0)+Math.imul(M,st)|0,s=s+Math.imul(M,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(I,lt)|0,s=s+Math.imul(I,ct)|0,n=n+Math.imul(_,ut)|0,i=(i=i+Math.imul(_,dt)|0)+Math.imul(N,ut)|0,s=s+Math.imul(N,dt)|0;var Tt=(c+(n=n+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,mt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((s=s+Math.imul(S,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,rt),i=(i=Math.imul(L,nt))+Math.imul(U,rt)|0,s=Math.imul(U,nt),n=n+Math.imul(F,st)|0,i=(i=i+Math.imul(F,ot)|0)+Math.imul(O,st)|0,s=s+Math.imul(O,ot)|0,n=n+Math.imul(B,lt)|0,i=(i=i+Math.imul(B,ct)|0)+Math.imul(M,lt)|0,s=s+Math.imul(M,ct)|0,n=n+Math.imul(T,ut)|0,i=(i=i+Math.imul(T,dt)|0)+Math.imul(I,ut)|0,s=s+Math.imul(I,dt)|0;var It=(c+(n=n+Math.imul(_,pt)|0)|0)+((8191&(i=(i=i+Math.imul(_,mt)|0)+Math.imul(N,pt)|0))<<13)|0;c=((s=s+Math.imul(N,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,st),i=(i=Math.imul(L,ot))+Math.imul(U,st)|0,s=Math.imul(U,ot),n=n+Math.imul(F,lt)|0,i=(i=i+Math.imul(F,ct)|0)+Math.imul(O,lt)|0,s=s+Math.imul(O,ct)|0,n=n+Math.imul(B,ut)|0,i=(i=i+Math.imul(B,dt)|0)+Math.imul(M,ut)|0,s=s+Math.imul(M,dt)|0;var Pt=(c+(n=n+Math.imul(T,pt)|0)|0)+((8191&(i=(i=i+Math.imul(T,mt)|0)+Math.imul(I,pt)|0))<<13)|0;c=((s=s+Math.imul(I,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,lt),i=(i=Math.imul(L,ct))+Math.imul(U,lt)|0,s=Math.imul(U,ct),n=n+Math.imul(F,ut)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ut)|0,s=s+Math.imul(O,dt)|0;var Bt=(c+(n=n+Math.imul(B,pt)|0)|0)+((8191&(i=(i=i+Math.imul(B,mt)|0)+Math.imul(M,pt)|0))<<13)|0;c=((s=s+Math.imul(M,mt)|0)+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,ut),i=(i=Math.imul(L,dt))+Math.imul(U,ut)|0,s=Math.imul(U,dt);var Mt=(c+(n=n+Math.imul(F,pt)|0)|0)+((8191&(i=(i=i+Math.imul(F,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((s=s+Math.imul(O,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863;var Rt=(c+(n=Math.imul(L,pt))|0)+((8191&(i=(i=Math.imul(L,mt))+Math.imul(U,pt)|0))<<13)|0;return c=((s=Math.imul(U,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=yt,l[2]=wt,l[3]=vt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=_t,l[11]=Nt,l[12]=xt,l[13]=Tt,l[14]=It,l[15]=Pt,l[16]=Bt,l[17]=Mt,l[18]=Rt,0!==c&&(l[19]=c,r.length++),r};function g(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,s=0;s<r.length-1;s++){var o=i;i=0;for(var a=67108863&n,l=Math.min(s,e.length-1),c=Math.max(0,s-t.length+1);c<=l;c++){var h=s-c,u=(0|t.words[h])*(0|e.words[c]),d=67108863&u;a=67108863&(d=d+a|0),i+=(o=(o=o+(u/67108864|0)|0)+(d>>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r._strip()}function y(t,e,r){return g(t,e,r)}Math.imul||(m=p),i.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):r<63?p(this,t,e):r<1024?g(this,t,e):y(this,t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.mulf=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),y(this,t,e)},i.prototype.imul=function(t){return this.clone().mulTo(t,this)},i.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var n=0,i=0;i<this.length;i++){var s=(0|this.words[i])*t,o=(67108863&s)+(67108863&n);n>>=26,n+=s/67108864|0,n+=o>>>26,this.words[i]=67108863&o}return 0!==n&&(this.words[i]=n,this.length++),this.length=0===t?1:this.length,e?this.ineg():this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=t.words[n]>>>i&1}return e}(t);if(0===e.length)return new i(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var s=r.sqr();n<e.length;n++,s=s.sqr())0!==e[n]&&(r=r.mul(s));return r},i.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,s=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(e=0;e<this.length;e++){var a=this.words[e]&s,l=(0|this.words[e])-a<<n;this.words[e]=l|o,o=a>>>26-n}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},i.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var s=t%26,o=Math.min((t-s)/26,this.length),a=67108863^67108863>>>s<<s,l=n;if(i-=o,i=Math.max(0,i),l){for(var c=0;c<o;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var h=0;for(c=this.length-1;c>=0&&(0!==h||c>=i);c--){var u=0|this.words[c];this.words[c]=h<<26-s|u>>>s,h=u&a}return l&&0!==h&&(l.words[l.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.ushln=function(t){return this.clone().iushln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.ushrn=function(t){return this.clone().iushrn(t)},i.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n||!(this.words[n]&i))},i.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this._strip()},i.prototype.maskn=function(t){return this.clone().imaskn(t)},i.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},i.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},i.prototype.addn=function(t){return this.clone().iaddn(t)},i.prototype.subn=function(t){return this.clone().isubn(t)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(t,e,n){var i,s,o=t.length+n;this._expand(o);var a=0;for(i=0;i<t.length;i++){s=(0|this.words[i+n])+a;var l=(0|t.words[i])*e;a=((s-=67108863&l)>>26)-(l/67108864|0),this.words[i+n]=67108863&s}for(;i<this.length-n;i++)a=(s=(0|this.words[i+n])+a)>>26,this.words[i+n]=67108863&s;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i<this.length;i++)a=(s=-(0|this.words[i])+a)>>26,this.words[i]=67108863&s;return this.negative=1,this._strip()},i.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),s=t,o=0|s.words[s.length-1];0!=(r=26-this._countBits(o))&&(s=s.ushln(r),n.iushln(r),o=0|s.words[s.length-1]);var a,l=n.length-s.length;if("mod"!==e){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var h=n.clone()._ishlnsubmul(s,1,l);0===h.negative&&(n=h,a&&(a.words[l]=1));for(var u=l-1;u>=0;u--){var d=67108864*(0|n.words[s.length+u])+(0|n.words[s.length+u-1]);for(d=Math.min(d/o|0,67108863),n._ishlnsubmul(s,d,u);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(s,1,u),n.isZero()||(n.negative^=1);a&&(a.words[u]=d)}return a&&a._strip(),n._strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(s=a.div.neg()),"div"!==e&&(o=a.mod.neg(),n&&0!==o.negative&&o.iadd(t)),{div:s,mod:o}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(s=a.div.neg()),{div:s,mod:a.mod}):0!==(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(o=a.mod.neg(),n&&0!==o.negative&&o.isub(t)),{div:a.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new i(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modrn(t.words[0]))}:this._wordDiv(t,e);var s,o,a},i.prototype.div=function(t){return this.divmod(t,"div",!1).div},i.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},i.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=(1<<26)%t,i=0,s=this.length-1;s>=0;s--)i=(n*i+(0|this.words[s]))%t;return e?-i:i},i.prototype.modn=function(t){return this.modrn(t)},i.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var s=(0|this.words[i])+67108864*n;this.words[i]=s/t|0,n=s%t}return this._strip(),e?this.ineg():this},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var s=new i(1),o=new i(0),a=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var h=n.clone(),u=e.clone();!e.isZero();){for(var d=0,f=1;0===(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(s.isOdd()||o.isOdd())&&(s.iadd(h),o.isub(u)),s.iushrn(1),o.iushrn(1);for(var p=0,m=1;0===(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(h),l.isub(u)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a),o.isub(l)):(n.isub(e),a.isub(s),l.isub(o))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var s,o=new i(1),a=new i(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,h=1;0===(e.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(e.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var u=0,d=1;0===(n.words[0]&d)&&u<26;++u,d<<=1);if(u>0)for(n.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(a)):(n.isub(e),a.isub(o))}return(s=0===e.cmpn(1)?o:a).cmpn(0)<0&&s.iadd(t),s},i.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var s=e;e=r,r=s}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},i.prototype.invm=function(t){return this.egcd(t).a.umod(t)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var s=i,o=n;0!==s&&o<this.length;o++){var a=0|this.words[o];s=(a+=s)>>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},i.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},i.prototype.gtn=function(t){return 1===this.cmpn(t)},i.prototype.gt=function(t){return 1===this.cmp(t)},i.prototype.gten=function(t){return this.cmpn(t)>=0},i.prototype.gte=function(t){return this.cmp(t)>=0},i.prototype.ltn=function(t){return-1===this.cmpn(t)},i.prototype.lt=function(t){return-1===this.cmp(t)},i.prototype.lten=function(t){return this.cmpn(t)<=0},i.prototype.lte=function(t){return this.cmp(t)<=0},i.prototype.eqn=function(t){return 0===this.cmpn(t)},i.prototype.eq=function(t){return 0===this.cmp(t)},i.red=function(t){return new S(t)},i.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var w={k256:null,p224:null,p192:null,p25519:null};function v(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(t){if("string"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){S.call(this,t),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)}v.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},v.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},v.prototype.split=function(t,e){t.iushrn(this.n,0,e)},v.prototype.imulK=function(t){return t.imul(this.k)},n(b,v),b.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i<n;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var s=t.words[9];for(e.words[e.length++]=s&r,i=10;i<t.length;i++){var o=0|t.words[i];t.words[i-10]=(o&r)<<4|s>>>22,s=o}s>>>=22,t.words[i-10]=s,0===s&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(E,v),n(A,v),n(k,v),k.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function(t){if(w[t])return w[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new E;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new k}return w[t]=e,e},S.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},S.prototype._verify2=function(t,e){r(0===(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},S.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},S.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},S.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},S.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},S.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},S.prototype.isqr=function(t){return this.imul(t,t.clone())},S.prototype.sqr=function(t){return this.mul(t,t)},S.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new i(1)).iushrn(2);return this.pow(t,n)}for(var s=this.m.subn(1),o=0;!s.isZero()&&0===s.andln(1);)o++,s.iushrn(1);r(!s.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);0!==this.pow(h,c).cmp(l);)h.redIAdd(l);for(var u=this.pow(h,s),d=this.pow(t,s.addn(1).iushrn(1)),f=this.pow(t,s),p=o;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g<p);var y=this.pow(u,new i(1).iushln(p-g-1));d=d.redMul(y),u=y.redSqr(),f=f.redMul(u),p=g}return d},S.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},S.prototype.pow=function(t,e){if(e.isZero())return new i(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var s=r[0],o=0,a=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],h=l-1;h>=0;h--){var u=c>>h&1;s!==r[0]&&(s=this.sqr(s)),0!==u||0!==o?(o<<=1,o|=u,(4===++a||0===n&&0===h)&&(s=this.mul(s,r[o]),a=0,o=0)):a=0}l=26}return s},S.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},S.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},i.mont=function(t){return new C(t)},n(C,S),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(n).iushrn(this.shift),o=s;return s.cmp(this.m)>=0?o=s.isub(this.m):s.cmpn(0)<0&&(o=s.iadd(this.m)),o._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(a,a.exports)),a.exports),c=s(l);let h=!1,u=!1;const d={debug:1,default:2,info:2,warning:3,error:4,off:5};let f=d.default,p=null;const m=function(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(r){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var g,y;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(g||(g={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(y||(y={}));const w="0123456789abcdef";class v{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==d[r]&&this.throwArgumentError("invalid log level name","logLevel",t),f>d[r]||console.log.apply(console,e)}debug(...t){this._log(v.levels.DEBUG,t)}info(...t){this._log(v.levels.INFO,t)}warn(...t){this._log(v.levels.WARNING,t)}makeError(t,e,r){if(u)return this.makeError("censored error",e,{});e||(e=v.errors.UNKNOWN_ERROR),r||(r={});const n=[];Object.keys(r).forEach(t=>{const e=r[t];try{if(e instanceof Uint8Array){let r="";for(let t=0;t<e.length;t++)r+=w[e[t]>>4],r+=w[15&e[t]];n.push(t+"=Uint8Array(0x"+r+")")}else n.push(t+"="+JSON.stringify(e))}catch(e){n.push(t+"="+JSON.stringify(r[t].toString()))}}),n.push(`code=${e}`),n.push(`version=${this.version}`);const i=t;let s="";switch(e){case y.NUMERIC_FAULT:{s="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":s+="-"+e;break;case"negative-power":case"negative-width":s+="-unsupported";break;case"unbound-bitwise-result":s+="-unbound-result"}break}case y.CALL_EXCEPTION:case y.INSUFFICIENT_FUNDS:case y.MISSING_NEW:case y.NONCE_EXPIRED:case y.REPLACEMENT_UNDERPRICED:case y.TRANSACTION_REPLACED:case y.UNPREDICTABLE_GAS_LIMIT:s=e}s&&(t+=" [ See: https://links.ethers.org/v5-errors-"+s+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const o=new Error(t);return o.reason=i,o.code=e,Object.keys(r).forEach(function(t){o[t]=r[t]}),o}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,v.errors.INVALID_ARGUMENT,{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r,n)}assertArgument(t,e,r,n){t||this.throwArgumentError(e,r,n)}checkNormalize(t){m&&this.throwError("platform missing String.prototype.normalize",v.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:m})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,v.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,v.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,v.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,v.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",v.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",v.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",v.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return p||(p=new v("logger/5.8.0")),p}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",v.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),h){if(!t)return;this.globalLogger().throwError("error censorship permanent",v.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}u=!!t,h=!!e}static setLogLevel(t){const e=d[t.toLowerCase()];null!=e?f=e:v.globalLogger().warn("invalid log level - "+t)}static from(t){return new v(t)}}v.errors=y,v.levels=g;const b=new v("bytes/5.8.0");function E(t){return!!t.toHexString}function A(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return A(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function k(t){return I(t)&&!(t.length%2)||C(t)}function S(t){return"number"==typeof t&&t==t&&t%1==0}function C(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!S(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!S(r)||r<0||r>=256)return!1}return!0}function _(t,e){if(e||(e={}),"number"==typeof t){b.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),A(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),E(t)&&(t=t.toHexString()),I(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":b.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let t=0;t<r.length;t+=2)n.push(parseInt(r.substring(t,t+2),16));return A(new Uint8Array(n))}return C(t)?A(new Uint8Array(t)):b.throwArgumentError("invalid arrayify value","value",t)}function N(t){const e=t.map(t=>_(t)),r=e.reduce((t,e)=>t+e.length,0),n=new Uint8Array(r);return e.reduce((t,e)=>(n.set(e,t),t+e.length),0),A(n)}function x(t){let e=_(t);if(0===e.length)return e;let r=0;for(;r<e.length&&0===e[r];)r++;return r&&(e=e.slice(r)),e}function T(t,e){(t=_(t)).length>e&&b.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),A(r)}function I(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const P="0123456789abcdef";function B(t,e){if(e||(e={}),"number"==typeof t){b.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=P[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),E(t))return t.toHexString();if(I(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":b.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(C(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=P[(240&n)>>4]+P[15&n]}return e}return b.throwArgumentError("invalid hexlify value","value",t)}function M(t){if("string"!=typeof t)t=B(t);else if(!I(t)||t.length%2)return null;return(t.length-2)/2}function R(t,e,r){return"string"!=typeof t?t=B(t):(!I(t)||t.length%2)&&b.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function F(t){let e="0x";return t.forEach(t=>{e+=B(t).substring(2)}),e}function O(t){const e=D(B(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function D(t){"string"!=typeof t&&(t=B(t)),I(t)||b.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e<t.length&&"0"===t[e];)e++;return"0x"+t.substring(e)}function L(t,e){for("string"!=typeof t?t=B(t):I(t)||b.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&b.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function U(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(k(t)){let r=_(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=B(r.slice(0,32)),e.s=B(r.slice(32,64))):65===r.length?(e.r=B(r.slice(0,32)),e.s=B(r.slice(32,64)),e.v=r[64]):b.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:b.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=B(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,null!=e._vs){const r=T(_(e._vs),32);e._vs=B(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&b.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=B(r);null==e.s?e.s=i:e.s!==i&&b.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?b.throwArgumentError("signature missing v and recoveryParam","signature",t):0===e.v||1===e.v?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(null==e.v)e.v=27+e.recoveryParam;else{const r=0===e.v||1===e.v?e.v:1-e.v%2;e.recoveryParam!==r&&b.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&I(e.r)?e.r=L(e.r,32):b.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&I(e.s)?e.s=L(e.s,32):b.throwArgumentError("signature missing or invalid s","signature",t);const r=_(e.s);r[0]>=128&&b.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=B(r);e._vs&&(I(e._vs)||b.throwArgumentError("signature invalid _vs","signature",t),e._vs=L(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&b.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function z(t){return B(N([(t=U(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const q="bignumber/5.8.0";var j=c.BN;const G=new v(q),H={},W=9007199254740991;let K=!1;class V{constructor(t,e){t!==H&&G.throwError("cannot call constructor directly; use BigNumber.from",v.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return $(Q(this).fromTwos(t))}toTwos(t){return $(Q(this).toTwos(t))}abs(){return"-"===this._hex[0]?V.from(this._hex.substring(1)):this}add(t){return $(Q(this).add(Q(t)))}sub(t){return $(Q(this).sub(Q(t)))}div(t){return V.from(t).isZero()&&Y("division-by-zero","div"),$(Q(this).div(Q(t)))}mul(t){return $(Q(this).mul(Q(t)))}mod(t){const e=Q(t);return e.isNeg()&&Y("division-by-zero","mod"),$(Q(this).umod(e))}pow(t){const e=Q(t);return e.isNeg()&&Y("negative-power","pow"),$(Q(this).pow(e))}and(t){const e=Q(t);return(this.isNegative()||e.isNeg())&&Y("unbound-bitwise-result","and"),$(Q(this).and(e))}or(t){const e=Q(t);return(this.isNegative()||e.isNeg())&&Y("unbound-bitwise-result","or"),$(Q(this).or(e))}xor(t){const e=Q(t);return(this.isNegative()||e.isNeg())&&Y("unbound-bitwise-result","xor"),$(Q(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&Y("negative-width","mask"),$(Q(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Y("negative-width","shl"),$(Q(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Y("negative-width","shr"),$(Q(this).shrn(t))}eq(t){return Q(this).eq(Q(t))}lt(t){return Q(this).lt(Q(t))}lte(t){return Q(this).lte(Q(t))}gt(t){return Q(this).gt(Q(t))}gte(t){return Q(this).gte(Q(t))}isNegative(){return"-"===this._hex[0]}isZero(){return Q(this).isZero()}toNumber(){try{return Q(this).toNumber()}catch(t){Y("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return G.throwError("this platform does not support BigInt",v.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?K||(K=!0,G.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?G.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",v.errors.UNEXPECTED_ARGUMENT,{}):G.throwError("BigNumber.toString does not accept parameters",v.errors.UNEXPECTED_ARGUMENT,{})),Q(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new V(H,J(t)):t.match(/^-?[0-9]+$/)?new V(H,J(new j(t))):G.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&Y("underflow","BigNumber.from",t),(t>=W||t<=-W)&&Y("overflow","BigNumber.from",t),V.from(String(t));const e=t;if("bigint"==typeof e)return V.from(e.toString());if(C(e))return V.from(B(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return V.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(I(t)||"-"===t[0]&&I(t.substring(1))))return V.from(t)}return G.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function J(t){if("string"!=typeof t)return J(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&G.throwArgumentError("invalid hex","value",t),"0x00"===(t=J(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function $(t){return V.from(J(t))}function Q(t){const e=V.from(t).toHexString();return"-"===e[0]?new j("-"+e.substring(3),16):new j(e.substring(2),16)}function Y(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),G.throwError(t,v.errors.NUMERIC_FAULT,n)}const X=new v(q),Z={},tt=V.from(0),et=V.from(-1);function rt(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),X.throwError(t,v.errors.NUMERIC_FAULT,i)}let nt="0";for(;nt.length<256;)nt+=nt;function it(t){if("number"!=typeof t)try{t=V.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+nt.substring(0,t):X.throwArgumentError("invalid decimal size","decimals",t)}function st(t,e){null==e&&(e=0);const r=it(e),n=(t=V.from(t)).lt(tt);n&&(t=t.mul(et));let i=t.mod(r).toString();for(;i.length<r.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const s=t.div(r).toString();return t=1===r.length?s:s+"."+i,n&&(t="-"+t),t}function ot(t,e){null==e&&(e=0);const r=it(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||X.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&X.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&X.throwArgumentError("too many decimal points","value",t);let s=i[0],o=i[1];for(s||(s="0"),o||(o="0");"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>r.length-1&&rt("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.length<r.length-1;)o+="0";const a=V.from(s),l=V.from(o);let c=a.mul(r).add(l);return n&&(c=c.mul(et)),c}class at{constructor(t,e,r,n){t!==Z&&X.throwError("cannot use FixedFormat constructor; use FixedFormat.from",v.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=e,this.width=r,this.decimals=n,this.name=(e?"":"u")+"fixed"+String(r)+"x"+String(n),this._multiplier=it(n),Object.freeze(this)}static from(t){if(t instanceof at)return t;"number"==typeof t&&(t=`fixed128x${t}`);let e=!0,r=128,n=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const i=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||X.throwArgumentError("invalid fixed format","format",t),e="u"!==i[1],r=parseInt(i[2]),n=parseInt(i[3])}else if(t){const i=(e,r,n)=>null==t[e]?n:(typeof t[e]!==r&&X.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=i("signed","boolean",e),r=i("width","number",r),n=i("decimals","number",n)}return r%8&&X.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&X.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new at(Z,e,r,n)}}class lt{constructor(t,e,r,n){t!==Z&&X.throwError("cannot use FixedNumber constructor; use FixedNumber.from",v.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=e,this._value=r,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&X.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return lt.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return lt.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return lt.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=ot(this._value,this.format.decimals),r=ot(t._value,t.format.decimals);return lt.fromValue(e.mul(this.format._multiplier).div(r),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=lt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(ct.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=lt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(ct.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&X.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=lt.from("1"+nt.substring(0,t),this.format),n=ht.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(t){if(null==t)return this._hex;t%8&&X.throwArgumentError("invalid byte width","width",t);return L(V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return lt.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(V.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||I(t)||"bigint"==typeof t||C(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),lt.fromString(st(t,e),at.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=at.from(e),n=ot(t,r.decimals);!r.signed&&n.lt(tt)&&rt("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=L(i,r.width/8));const s=st(n,r.decimals);return new lt(Z,i,s,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=at.from(e);if(_(t).length>r.width/8)throw new Error("overflow");let n=V.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),s=st(n,r.decimals);return new lt(Z,i,s,r)}static from(t,e){if("string"==typeof t)return lt.fromString(t,e);if(C(t))return lt.fromBytes(t,e);try{return lt.fromValue(t,0,e)}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT)throw t}return X.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const ct=lt.from(1),ht=lt.from("0.5");var ut=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const dt=new v("properties/5.8.0");function ft(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function pt(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function mt(t){return ut(this,void 0,void 0,function*(){const e=Object.keys(t).map(e=>{const r=t[e];return Promise.resolve(r).then(t=>({key:e,value:t}))});return(yield Promise.all(e)).reduce((t,e)=>(t[e.key]=e.value,t),{})})}function gt(t,e){t&&"object"==typeof t||dt.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||dt.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function yt(t){const e={};for(const r in t)e[r]=t[r];return e}const wt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function vt(t){if(null==t||wt[typeof t])return!0;if(Array.isArray(t)||"object"==typeof t){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;r<e.length;r++){let n=null;try{n=t[e[r]]}catch(t){continue}if(!vt(n))return!1}return!0}return dt.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function bt(t){if(vt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>Et(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&ft(e,r,Et(n))}return e}return dt.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function Et(t){return bt(t)}class At{constructor(t){for(const e in t)this[e]=Et(t[e])}}const kt="abi/5.8.0",St=new v(kt),Ct={};let _t={calldata:!0,memory:!0,storage:!0},Nt={calldata:!0,memory:!0};function xt(t,e){if("bytes"===t||"string"===t){if(_t[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&Nt[e])return!0;return(_t[e]||"payable"===e)&&St.throwArgumentError("invalid modifier","name",e),!1}function Tt(t,e){for(let r in e)ft(t,r,e[r])}const It=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Pt=new RegExp(/^(.*)\[([0-9]*)\]$/);class Bt{constructor(t,e){t!==Ct&&St.throwError("use fromString",v.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),Tt(this,e);let r=this.type.match(Pt);Tt(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Bt.fromObject({type:r[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=It.sighash),It[t]||St.throwArgumentError("invalid format type","format",t),t===It.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==It.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===It.full?", ":",")+")"):e+=this.type,t!==It.sighash&&(!0===this.indexed&&(e+=" indexed"),t===It.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Bt.fromString(t,e):Bt.fromObject(t)}static fromObject(t){return Bt.isParamType(t)?t:new Bt(Ct,{name:t.name||null,type:Gt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Bt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){St.throwArgumentError(`unexpected character at position ${e}`,"param",t)}function i(t){let r={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(r.indexed=!1),r}t=t.replace(/\s/g," ");let s={type:"",name:"",state:{allowType:!0}},o=s;for(let r=0;r<t.length;r++){let s=t[r];switch(s){case"(":o.state.allowType&&""===o.type?o.type="tuple":o.state.allowParams||n(r),o.state.allowType=!1,o.type=Gt(o.type),o.components=[i(o)],o=o.components[0];break;case")":delete o.state,"indexed"===o.name&&(e||n(r),o.indexed=!0,o.name=""),xt(o.type,o.name)&&(o.name=""),o.type=Gt(o.type);let t=o;o=o.parent,o||n(r),delete t.parent,o.state.allowParams=!1,o.state.allowName=!0,o.state.allowArray=!0;break;case",":delete o.state,"indexed"===o.name&&(e||n(r),o.indexed=!0,o.name=""),xt(o.type,o.name)&&(o.name=""),o.type=Gt(o.type);let a=i(o.parent);o.parent.components.push(a),delete o.parent,o=a;break;case" ":o.state.allowType&&""!==o.type&&(o.type=Gt(o.type),delete o.state.allowType,o.state.allowName=!0,o.state.allowParams=!0),o.state.allowName&&""!==o.name&&("indexed"===o.name?(e||n(r),o.indexed&&n(r),o.indexed=!0,o.name=""):xt(o.type,o.name)?o.name="":o.state.allowName=!1);break;case"[":o.state.allowArray||n(r),o.type+=s,o.state.allowArray=!1,o.state.allowName=!1,o.state.readArray=!0;break;case"]":o.state.readArray||n(r),o.type+=s,o.state.readArray=!1,o.state.allowArray=!0,o.state.allowName=!0;break;default:o.state.allowType?(o.type+=s,o.state.allowParams=!0,o.state.allowArray=!0):o.state.allowName?(o.name+=s,delete o.state.allowArray):o.state.readArray?o.type+=s:n(r)}}return o.parent&&St.throwArgumentError("unexpected eof","param",t),delete s.state,"indexed"===o.name?(e||n(r.length-7),o.indexed&&n(r.length-7),o.indexed=!0,o.name=""):xt(o.type,o.name)&&(o.name=""),s.type=Gt(s.type),s}(t,!!e),Bt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function Mt(t,e){return function(t){t=t.trim();let e=[],r="",n=0;for(let i=0;i<t.length;i++){let s=t[i];","===s&&0===n?(e.push(r),r=""):(r+=s,"("===s?n++:")"===s&&(n--,-1===n&&St.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Bt.fromString(t,e))}class Rt{constructor(t,e){t!==Ct&&St.throwError("use a static from method",v.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),Tt(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Rt.isFragment(t)?t:"string"==typeof t?Rt.fromString(t):Rt.fromObject(t)}static fromObject(t){if(Rt.isFragment(t))return t;switch(t.type){case"function":return zt.fromObject(t);case"event":return Ft.fromObject(t);case"constructor":return Ut.fromObject(t);case"error":return jt.fromObject(t);case"fallback":case"receive":return null}return St.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Ft.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?zt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Ut.fromString(t.trim()):"error"===t.split(" ")[0]?jt.fromString(t.substring(5).trim()):St.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Ft extends Rt{format(t){if(t||(t=It.sighash),It[t]||St.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==It.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ",t!==It.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Ft.fromString(t):Ft.fromObject(t)}static fromObject(t){if(Ft.isEventFragment(t))return t;"event"!==t.type&&St.throwArgumentError("invalid event object","value",t);const e={name:Wt(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Bt.fromObject):[],type:"event"};return new Ft(Ct,e)}static fromString(t){let e=t.match(Kt);e||St.throwArgumentError("invalid event string","value",t);let r=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":r=!0;break;case"":break;default:St.warn("unknown modifier: "+t)}}),Ft.fromObject({name:e[1].trim(),anonymous:r,inputs:Mt(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Ot(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&St.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||St.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=V.from(r[1]),r[0]):t}function Dt(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Lt(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&St.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&St.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||St.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&St.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&St.throwArgumentError("unable to determine stateMutability","value",t),e}class Ut extends Rt{format(t){if(t||(t=It.sighash),It[t]||St.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===It.sighash&&St.throwError("cannot format a constructor for sighash",v.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Ut.fromString(t):Ut.fromObject(t)}static fromObject(t){if(Ut.isConstructorFragment(t))return t;"constructor"!==t.type&&St.throwArgumentError("invalid constructor object","value",t);let e=Lt(t);e.constant&&St.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Bt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?V.from(t.gas):null};return new Ut(Ct,r)}static fromString(t){let e={type:"constructor"},r=(t=Ot(t,e)).match(Kt);return r&&"constructor"===r[1].trim()||St.throwArgumentError("invalid constructor string","value",t),e.inputs=Mt(r[2].trim(),!1),Dt(r[3].trim(),e),Ut.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class zt extends Ut{format(t){if(t||(t=It.sighash),It[t]||St.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==It.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ",t!==It.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?zt.fromString(t):zt.fromObject(t)}static fromObject(t){if(zt.isFunctionFragment(t))return t;"function"!==t.type&&St.throwArgumentError("invalid function object","value",t);let e=Lt(t);const r={type:t.type,name:Wt(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Bt.fromObject):[],outputs:t.outputs?t.outputs.map(Bt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?V.from(t.gas):null};return new zt(Ct,r)}static fromString(t){let e={type:"function"},r=(t=Ot(t,e)).split(" returns ");r.length>2&&St.throwArgumentError("invalid function string","value",t);let n=r[0].match(Kt);if(n||St.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&Wt(e.name),e.inputs=Mt(n[2],!1),Dt(n[3].trim(),e),r.length>1){let n=r[1].match(Kt);""==n[1].trim()&&""==n[3].trim()||St.throwArgumentError("unexpected tokens","value",t),e.outputs=Mt(n[2],!1)}else e.outputs=[];return zt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function qt(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||St.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class jt extends Rt{format(t){if(t||(t=It.sighash),It[t]||St.throwArgumentError("invalid format type","format",t),t===It.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==It.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===It.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?jt.fromString(t):jt.fromObject(t)}static fromObject(t){if(jt.isErrorFragment(t))return t;"error"!==t.type&&St.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:Wt(t.name),inputs:t.inputs?t.inputs.map(Bt.fromObject):[]};return qt(new jt(Ct,e))}static fromString(t){let e={type:"error"},r=t.match(Kt);return r||St.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&Wt(e.name),e.inputs=Mt(r[2],!1),qt(jt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function Gt(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const Ht=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Wt(t){return t&&t.match(Ht)||St.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Kt=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Vt=new v(kt);function Jt(t){const e=[],r=function(t,n){if(Array.isArray(n))for(let i in n){const s=t.slice();s.push(i);try{r(s,n[i])}catch(t){e.push({path:s,error:t})}}};return r([],t),e}class $t{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){Vt.throwArgumentError(t,this.localName,e)}}class Qt{constructor(t){ft(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return F(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(N(t._data))}writeBytes(t){let e=_(t);const r=e.length%this.wordSize;return r&&(e=N([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=_(V.from(t));return e.length>this.wordSize&&Vt.throwError("value out-of-bounds",v.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=N([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class Yt{constructor(t,e,r,n){ft(this,"_data",_(t)),ft(this,"wordSize",e||32),ft(this,"_coerceFunc",r),ft(this,"allowLoose",n),this._offset=0}get data(){return B(this._data)}get consumed(){return this._offset}static coerce(t,e){let r=t.match("^u?int([0-9]+)$");return r&&parseInt(r[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):Yt.coerce(t,e)}_peekBytes(t,e,r){let n=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+n>this._data.length&&(this.allowLoose&&r&&this._offset+e<=this._data.length?n=e:Vt.throwError("data out-of-bounds",v.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new Yt(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let r=this._peekBytes(0,t,!!e);return this._offset+=r.length,r.slice(0,t)}readValue(){return V.from(this.readBytes(this.wordSize))}}var Xt,Zt={exports:{}};
|
|
2
2
|
/**
|
|
3
3
|
* [js-sha3]{@link https://github.com/emn178/js-sha3}
|
|
4
4
|
*
|
|
@@ -6,5 +6,5 @@ import{Component as t,eventBus as e}from"@monygroupcorp/microact";var r="undefin
|
|
|
6
6
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
7
7
|
* @copyright Chen, Yi-Cyuan 2015-2018
|
|
8
8
|
* @license MIT
|
|
9
|
-
*/var Xt,Zt=(Qt||(Qt=1,Xt=Yt,function(){var t="input is invalid type",e="object"==typeof window,n=e?window:{};n.JS_SHA3_NO_WINDOW&&(e=!1);var i=!e&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=r:i&&(n=self);var s=!n.JS_SHA3_NO_COMMON_JS&&Xt.exports,o=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[0,8,16,24],h=[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],u=[224,256,384,512],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!o||!n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var m=function(t,e,r){return function(n){return new P(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new P(t,e,i).update(n)[r]()}},y=function(t,e,r){return function(e,n,i,s){return A["cshake"+t].update(e,n,i,s)[r]()}},v=function(t,e,r){return function(e,n,i,s){return A["kmac"+t].update(e,n,i,s)[r]()}},w=function(t,e,r,n){for(var i=0;i<f.length;++i){var s=f[i];t[s]=e(r,n,s)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new P(t,e,t)},r.update=function(t){return r.create().update(t)},w(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:u,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:u,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new P(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},w(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=y(t,0,"hex");return n.create=function(n,i,s){return i||s?new P(t,e,n).bytepad([i,s],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},w(n,y,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=v(t,0,"hex");return n.create=function(n,i,s){return new N(t,e,i).bytepad(["KMAC",s],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},w(n,v,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],_=C.bits,x=0;x<_.length;++x){var I=C.name+"_"+_[x];if(k.push(I),A[I]=C.createMethod(_[x],C.padding),"sha3"!==C.name){var T=C.name+_[x];k.push(T),A[T]=A[I]}}function P(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function N(t,e,r){P.call(this,t,e,r)}P.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,s,a=this.blocks,l=this.byteCount,h=e.length,u=this.blockCount,d=0,f=this.s;d<h;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<u+1;++i)a[i]=0;if(r)for(i=this.start;d<h&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<h&&i<l;++d)(s=e.charCodeAt(d))<128?a[i>>2]|=s<<c[3&i++]:s<2048?(a[i>>2]|=(192|s>>6)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):s<55296||s>=57344?(a[i>>2]|=(224|s>>12)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|s>>18)<<c[3&i++],a[i>>2]|=(128|s>>12&63)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[u],i=0;i<u;++i)f[i]^=a[i];B(f),this.reset=!0}else this.start=i}return this},P.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},P.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,s=e.length;if(r)i=s;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},P.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,s=[];return s.length=i,this.update(s),this},P.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];B(n)}},P.prototype.toString=P.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,l="";o<n;){for(s=0;s<e&&o<n;++s,++o)t=r[s],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];o%e===0&&(B(r),s=0)}return i&&(t=r[s],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},P.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);o<n;){for(s=0;s<e&&o<n;++s,++o)l[o]=r[s];o%e===0&&B(r)}return i&&(l[s]=r[s],t=t.slice(0,a)),t},P.prototype.buffer=P.prototype.arrayBuffer,P.prototype.digest=P.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,s=this.extraBytes,o=0,a=0,l=[];a<i;){for(o=0;o<r&&a<i;++o,++a)t=a<<2,e=n[o],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&B(n)}return s&&(t=a<<2,e=n[o],l[t]=255&e,s>1&&(l[t+1]=e>>8&255),s>2&&(l[t+2]=e>>16&255)),l},N.prototype=new P,N.prototype.finalize=function(){return this.encode(this.outputBits,!0),P.prototype.finalize.call(this)};var B=function(t){var e,r,n,i,s,o,a,l,c,u,d,f,p,m,g,y,v,w,b,E,A,k,S,C,_,x,I,T,P,N,B,M,R,F,O,D,L,U,q,z,j,G,H,W,K,$,V,J,Q,Y,X,Z,tt,et,rt,nt,it,st,ot,at,lt,ct,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],s=t[1]^t[11]^t[21]^t[31]^t[41],o=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(o<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|o>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=s^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=o^(u<<1|d>>>31),r=a^(d<<1|u>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=u^(i<<1|s>>>31),r=d^(s<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],$=t[11]<<4|t[10]>>>28,V=t[10]<<4|t[11]>>>28,T=t[20]<<3|t[21]>>>29,P=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,G=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,v=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,N=t[33]<<13|t[32]>>>19,B=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,w=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,M=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,_=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,q=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,W=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,x=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,st=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,z=t[38]<<8|t[39]>>>24,j=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~y&w,t[1]=g^~v&b,t[10]=C^~x&T,t[11]=_^~I&P,t[20]=F^~D&U,t[21]=O^~L&q,t[30]=W^~$&J,t[31]=K^~V&Q,t[40]=et^~nt&st,t[41]=rt^~it&ot,t[2]=y^~w&E,t[3]=v^~b&A,t[12]=x^~T&N,t[13]=I^~P&B,t[22]=D^~U&z,t[23]=L^~q&j,t[32]=$^~J&Y,t[33]=V^~Q&X,t[42]=nt^~st&at,t[43]=it^~ot<,t[4]=w^~E&k,t[5]=b^~A&S,t[14]=T^~N&M,t[15]=P^~B&R,t[24]=U^~z&G,t[25]=q^~j&H,t[34]=J^~Y&Z,t[35]=Q^~X&tt,t[44]=st^~at&ct,t[45]=ot^~lt&ht,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=N^~M&C,t[17]=B^~R&_,t[26]=z^~G&F,t[27]=j^~H&O,t[36]=Y^~Z&W,t[37]=X^~tt&K,t[46]=at^~ct&et,t[47]=lt^~ht&rt,t[8]=k^~m&y,t[9]=S^~g&v,t[18]=M^~C&x,t[19]=R^~_&I,t[28]=G^~F&D,t[29]=H^~O&L,t[38]=Z^~W&$,t[39]=tt^~K&V,t[48]=ct^~et&nt,t[49]=ht^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(s)Xt.exports=A;else for(S=0;S<k.length;++S)n[k[S]]=A[k[S]]}()),Yt.exports),te=n(Zt);function ee(t){return"0x"+te.keccak_256(S(t))}const re=new y("rlp/5.8.0");function ne(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function ie(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function se(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(se(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=ne(e.length);return r.unshift(247+r.length),r.concat(e)}E(t)||re.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(S(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=ne(e.length);return r.unshift(183+r.length),r.concat(e)}function oe(t){return P(se(t))}function ae(t,e,r,n){const i=[];for(;r<e+1+n;){const s=le(t,r);i.push(s.result),(r+=s.consumed)>e+1+n&&re.throwError("child data too short",y.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function le(t,e){if(0===t.length&&re.throwError("data too short",y.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&re.throwError("data short segment too short",y.errors.BUFFER_OVERRUN,{});const n=ie(t,e+1,r);return e+1+r+n>t.length&&re.throwError("data long segment too short",y.errors.BUFFER_OVERRUN,{}),ae(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&re.throwError("data array too short",y.errors.BUFFER_OVERRUN,{}),ae(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&re.throwError("data array too short",y.errors.BUFFER_OVERRUN,{});const n=ie(t,e+1,r);e+1+r+n>t.length&&re.throwError("data array too short",y.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:P(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&re.throwError("data too short",y.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:P(t.slice(e+1,e+1+r))}}return{consumed:1,result:P(t[e])}}function ce(t){const e=S(t),r=le(e,0);return r.consumed!==e.length&&re.throwArgumentError("invalid rlp data","data",t),r.result}var he=Object.freeze({__proto__:null,decode:ce,encode:oe});const ue=new y("address/5.8.0");function de(t){I(t,20)||ue.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=S(ee(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const fe={};for(let t=0;t<10;t++)fe[String(t)]=String(t);for(let t=0;t<26;t++)fe[String.fromCharCode(65+t)]=String(10+t);const pe=Math.floor((me=9007199254740991,Math.log10?Math.log10(me):Math.log(me)/Math.LN10));var me;function ge(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>fe[t]).join("");for(;e.length>=pe;){let t=e.substring(0,pe);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ye(t){let e=null;if("string"!=typeof t&&ue.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=de(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ue.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==ge(t)&&ue.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new q(r,36).toString(16);e.length<40;)e="0"+e;e=de("0x"+e)}else ue.throwArgumentError("invalid address","address",t);var r;return e}function ve(t){let e=null;try{e=ye(t.from)}catch(e){ue.throwArgumentError("missing from address","transaction",t)}return ye(B(ee(oe([e,_(S(W.from(t.nonce).toHexString()))])),12))}class we extends $t{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ye(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ye(O(t.readValue().toHexString(),20))}}class be extends $t{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const Ee=new y(Et);function Ae(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||Ee.throwError("cannot encode object for signature with missing names",y.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&Ee.throwError("cannot encode object for signature with duplicate names",y.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else Ee.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&Ee.throwArgumentError("types/value length mismatch","tuple",r);let i=new Vt(t.wordSize),s=new Vt(t.wordSize),o=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=s.length;t.encode(s,r);let n=i.writeUpdatableValue();o.push(t=>{n(t+e)})}else t.encode(i,r)}),o.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(s),a}function ke(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),s=n.subReader(r.toNumber());try{i=e.decode(s)}catch(t){if(t.code===y.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===y.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const s=r[e];s instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw s}}):r[n]=s});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class Se extends $t{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),Ee.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Ae(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&Ee.throwError("insufficient data length",y.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new be(this.coder));return t.coerce(this.name,ke(t,r))}}class Ce extends $t{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class _e extends $t{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=S(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class xe extends _e{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,P(super.decode(t)))}}class Ie extends $t{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=S(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,P(t.readBytes(this.size)))}}class Te extends $t{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Pe="0x0000000000000000000000000000000000000000",Ne=W.from(-1),Be=W.from(0),Me=W.from(1),Re=W.from(2),Fe=W.from("1000000000000000000"),Oe=W.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),De=W.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),Le=W.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue="0x0000000000000000000000000000000000000000000000000000000000000000";var qe=Object.freeze({__proto__:null,AddressZero:Pe,EtherSymbol:"Ξ",HashZero:Ue,MaxInt256:Le,MaxUint256:Oe,MinInt256:De,NegativeOne:Ne,One:Me,Two:Re,WeiPerEther:Fe,Zero:Be});class ze extends $t{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=W.from(e),n=Oe.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Me).mul(Ne)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Be)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const je=new y("strings/5.8.0");var Ge,He;function We(t,e,r,n,i){if(t===He.BAD_PREFIX||t===He.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===He.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Ge||(Ge={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(He||(He={}));const Ke=Object.freeze({error:function(t,e,r,n,i){return je.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:We,replace:function(t,e,r,n,i){return t===He.OVERLONG?(n.push(i),0):(n.push(65533),We(t,e,r))}});function $e(t,e){null==e&&(e=Ke.error),t=S(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let s=null,o=null;if(192==(224&i))s=1,o=127;else if(224==(240&i))s=2,o=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?He.UNEXPECTED_CONTINUE:He.BAD_PREFIX,n-1,t,r);continue}s=3,o=65535}if(n-1+s>=t.length){n+=e(He.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-s-1)-1;for(let i=0;i<s;i++){let i=t[n];if(128!=(192&i)){n+=e(He.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(He.OUT_OF_RANGE,n-1-s,t,r,a):a>=55296&&a<=57343?n+=e(He.UTF16_SURROGATE,n-1-s,t,r,a):a<=o?n+=e(He.OVERLONG,n-1-s,t,r,a):r.push(a))}return r}function Ve(t,e=Ge.current){e!=Ge.current&&(je.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const s=65536+((1023&n)<<10)+(1023&i);r.push(s>>18|240),r.push(s>>12&63|128),r.push(s>>6&63|128),r.push(63&s|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return S(r)}function Je(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Qe(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Ye(t,e){return Qe($e(t,e))}function Xe(t,e=Ge.current){return $e(Ve(t,e))}function Ze(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function tr(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function er(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const rr=tr("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),nr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),ir=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],sr=Ze("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),or=Ze("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),ar=Ze("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),lr=tr("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class cr extends _e{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Ve(e))}decode(t){return Ye(super.decode(t))}}class hr extends $t{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Ae(t,this.coders,e)}decode(t){return t.coerce(this.name,ke(t,this.coders))}}const ur=new y(Et),dr=new RegExp(/^bytes([0-9]*)$/),fr=new RegExp(/^(u?int)([0-9]*)$/);class pr{constructor(t){ut(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new we(t.name);case"bool":return new Ce(t.name);case"string":return new cr(t.name);case"bytes":return new xe(t.name);case"array":return new Se(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new hr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Te(t.name)}let e=t.type.match(fr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&ur.throwArgumentError("invalid "+e[1]+" bit length","param",t),new ze(r/8,"int"===e[1],t.name)}if(e=t.type.match(dr),e){let r=parseInt(e[1]);return(0===r||r>32)&&ur.throwArgumentError("invalid bytes length","param",t),new Ie(r,t.name)}return ur.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Jt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Vt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Pt.from(t)));return new hr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&ur.throwError("types/values length mismatch",y.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Pt.from(t))),n=new hr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Pt.from(t)));return new hr(n,"_").decode(this._getReader(S(e),r))}}const mr=new pr;function gr(t){return ee(Ve(t))}const yr="hash/5.8.0";function vr(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return S(e)}function wr(t){t=S(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var br=Object.freeze({__proto__:null,decode:vr,encode:wr});function Er(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Ar(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,s=[0,1];for(let t=1;t<n;t++)s.push(i+=r());let o=r(),a=e;e+=o;let l=0,c=0;function h(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const u=Math.pow(2,31),d=u>>>1,f=d>>1,p=u-1;let m=0;for(let t=0;t<31;t++)m=m<<1|h();let g=[],y=0,v=u;for(;;){let t=Math.floor(((m-y+1)*i-1)/v),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<s[n]?r=n:e=n}if(0==e)break;g.push(e);let o=y+Math.floor(v*s[e]/i),a=y+Math.floor(v*s[e+1]/i)-1;for(;0==((o^a)&d);)m=m<<1&p|h(),o=o<<1&p,a=a<<1&p|1;for(;o&~a&f;)m=m&d|m<<1&p>>>1|h(),o=o<<1^d,a=(a^d)<<1|d|1;y=o,v=1+a-o}let w=n-4;return g.map(e=>{switch(e-w){case 3:return w+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return w+256+(t[a++]<<8|t[a++]);case 1:return w+t[a++];default:return e-1}})}(t))}function kr(t){return 1&t?~t>>1:t>>1}function Sr(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Cr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=kr(e());return r}function _r(t,e){let r=Sr(t(),t),n=t(),i=Sr(n,t),s=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<s[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function xr(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Cr(t,r).forEach((t,e)=>n[e].push(t));return n}function Ir(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return Er(xr(i.length,1+t,e).map((t,e)=>{const s=t[0],o=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[s+e*r,o.map(t=>t+i)]})}))}function Tr(t,e){return xr(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Pr=Ar(vr("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Nr=new Set(_r(Pr)),Br=new Set(_r(Pr)),Mr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(Ir(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Tr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(Er(e))}(Pr),Rr=function(t){let e=_r(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=_r(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),s=i%3;i=i/3|0;let o=!!(1&i);return i>>=1,{branches:n,valid:s,fe0f:o,save:1==i,check:2==i}}()}(Pr);function Fr(t){return Xe(t)}function Or(t){return t.filter(t=>65039!=t)}function Dr(t){for(let e of t.split(".")){let t=Fr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function Lr(t){return Dr(function(t,e){let r=Fr(t).reverse(),n=[];for(;r.length;){let t=Ur(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Nr.has(i)){n.push(i);continue}if(Br.has(i))continue;let s=Mr[i];if(!s)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...s)}return Dr((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Or))}function Ur(t,e){var r;let n,i,s=Rr,o=[],a=t.length;for(;a;){let e=t[--a];if(s=null===(r=s.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!s)break;if(s.save)i=e;else if(s.check&&e===i)break;o.push(e),s.fe0f&&(o.push(65039),a>0&&65039==t[a-1]&&a--),s.valid&&(n=o.slice(),2==s.valid&&n.splice(1,1),t.length=a)}return n}const qr=new y(yr),zr=new Uint8Array(32);function jr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Gr(t){const e=Ve(Lr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(jr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(jr(e.slice(n))),r}function Hr(t){"string"!=typeof t&&qr.throwArgumentError("invalid ENS name; not a string","name",t);let e=zr;const r=Gr(t);for(;r.length;)e=ee(C([e,ee(r.pop())]));return P(e)}function Wr(t){return P(C(Gr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}zr.fill(0);function Kr(t){return"string"==typeof t&&(t=Ve(t)),ee(C([Ve("Ethereum Signed Message:\n"),Ve(String(t.length)),t]))}var $r=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Vr=new y(yr),Jr=new Uint8Array(32);Jr.fill(0);const Qr=W.from(-1),Yr=W.from(0),Xr=W.from(1),Zr=W.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const tn=O(Xr.toHexString(),32),en=O(Yr.toHexString(),32),rn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},nn=["name","version","chainId","verifyingContract","salt"];function sn(t){return function(e){return"string"!=typeof e&&Vr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const on={name:sn("name"),version:sn("version"),chainId:function(t){try{return W.from(t).toString()}catch(t){}return Vr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ye(t).toLowerCase()}catch(t){}return Vr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=S(t);if(32!==e.length)throw new Error("bad length");return P(e)}catch(t){}return Vr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function an(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Vr.throwArgumentError("invalid numeric width","type",t);const i=Zr.mask(r?n-1:n),s=r?i.add(Xr).mul(Qr):Yr;return function(e){const r=W.from(e);return(r.lt(s)||r.gt(i))&&Vr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),O(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Vr.throwArgumentError("invalid bytes width","type",t),function(e){return S(e).length!==r&&Vr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=S(t),r=e.length%32;return r?M([e,Jr.slice(r)]):P(e)}(e)}}}switch(t){case"address":return function(t){return O(ye(t),32)};case"bool":return function(t){return t?tn:en};case"bytes":return function(t){return ee(t)};case"string":return function(t){return gr(t)}}return null}function ln(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class cn{constructor(t){ut(this,"types",Object.freeze(wt(t))),ut(this,"_encoderCache",{}),ut(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(s=>{i[s.name]&&Vr.throwArgumentError(`duplicate variable name ${JSON.stringify(s.name)} in ${JSON.stringify(n)}`,"types",t),i[s.name]=!0;const o=s.type.match(/^([^\x5b]*)(\x5b|$)/)[1];o===n&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);an(o)||(r[o]||Vr.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r[o].push(n),e[n][o]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Vr.throwArgumentError("missing primary type","types",t):i.length>1&&Vr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),ut(this,"primaryType",i[0]),function i(s,o){o[s]&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t),o[s]=!0,Object.keys(e[s]).forEach(t=>{r[t]&&(i(t,o),Object.keys(o).forEach(e=>{n[e][t]=!0}))}),delete o[s]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=ln(e,t[e])+r.map(e=>ln(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=an(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(ee)),ee(M(i))}}const r=this.types[t];if(r){const e=gr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?ee(n):n});return n.unshift(e),M(n)}}return Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Vr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return ee(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(an(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new cn(t)}static getPrimaryType(t){return cn.from(t).primaryType}static hashStruct(t,e,r){return cn.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=rn[r];n||Vr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>nn.indexOf(t.name)-nn.indexOf(e.name)),cn.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return M(["0x1901",cn.hashDomain(t),cn.from(e).hash(r)])}static hash(t,e,r){return ee(cn.encode(t,e,r))}static resolveNames(t,e,r,n){return $r(this,void 0,void 0,function*(){t=mt(t);const i={};t.verifyingContract&&!I(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const s=cn.from(e);s.visit(r,(t,e)=>("address"!==t||I(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=s.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){cn.hashDomain(t);const n={},i=[];nn.forEach(e=>{const r=t[e];null!=r&&(n[e]=on[e](r),i.push({name:e,type:rn[e]}))});const s=cn.from(e),o=mt(e);return o.EIP712Domain?Vr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=i,s.encode(r),{types:o,domain:n,primaryType:s.primaryType,message:s.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return P(S(e));if(t.match(/^u?int/))return W.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Vr.throwArgumentError("invalid string","value",e),e}return Vr.throwArgumentError("unsupported type","type",t)})}}}const hn=new y(Et);class un extends bt{}class dn extends bt{}class fn extends bt{}class pn extends bt{static isIndexed(t){return!(!t||!t._isIndexed)}}const mn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function gn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class yn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ut(this,"fragments",e.map(t=>Bt.from(t)).filter(t=>null!=t)),ut(this,"_abiCoder",dt(new.target,"getAbiCoder")()),ut(this,"functions",{}),ut(this,"errors",{}),ut(this,"events",{}),ut(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void hn.warn("duplicate definition - constructor"):void ut(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?hn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ut(this,"deploy",Dt.from({payable:!1,type:"constructor"})),ut(this,"_isInterface",!0)}format(t){t||(t=It.full),t===It.sighash&&hn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===It.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return mr}static getAddress(t){return ye(t)}static getSighash(t){return B(gr(t.format()),0,4)}static getEventTopic(t){return gr(t.format())}getFunction(t){if(I(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];hn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?hn.throwArgumentError("no matching function","name",e):r.length>1&&hn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[Lt.fromString(t).format()];return e||hn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(I(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];hn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?hn.throwArgumentError("no matching event","name",e):r.length>1&&hn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Mt.fromString(t).format()];return e||hn.throwArgumentError("no matching event","signature",t),e}getError(t){if(I(t)){const e=dt(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}hn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?hn.throwArgumentError("no matching error","name",e):r.length>1&&hn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[Lt.fromString(t).format()];return e||hn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return dt(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),dt(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=S(e);return P(r.slice(0,4))!==this.getSighash(t)&&hn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",P(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),P(C([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=S(e);return P(r.slice(0,4))!==this.getSighash(t)&&hn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",P(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),P(C([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=S(e),n=null,i="",s=null,o=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=P(r.slice(0,4)),e=mn[t];if(e)s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.signature,e.reason&&(n=s[0]),"Error"===o?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(s[0])}`:"Panic"===o&&(i=`; VM Exception while processing transaction: reverted with panic code ${s[0]}`);else try{const e=this.getError(t);s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.format()}catch(t){}break}}return hn.throwError("call revert exception"+i,y.errors.CALL_EXCEPTION,{method:t.format(),data:P(e),errorArgs:s,errorName:o,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),P(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&hn.throwError("too many arguments for "+t.format(),y.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?gr(e):"bytes"===t.type?ee(P(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=W.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),O(P(e),32));for(e.forEach((e,i)=>{let s=t.inputs[i];s.indexed?null==e?r.push(null):"array"===s.baseType||"tuple"===s.baseType?hn.throwArgumentError("filtering with tuples or arrays not supported","contract."+s.name,e):Array.isArray(e)?r.push(e.map(t=>n(s,t))):r.push(n(s,e)):null!=e&&hn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+s.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&hn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,s)=>{const o=e[s];if(t.indexed)if("string"===t.type)r.push(gr(o));else if("bytes"===t.type)r.push(ee(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[o]))}else n.push(t),i.push(o)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);I(r[0],32)&&r[0].toLowerCase()===e||hn.throwError("fragment/topic mismatch",y.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],s=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Pt.fromObject({type:"bytes32",name:t.name})),s.push(!0)):(n.push(t),s.push(!1)):(i.push(t),s.push(!1))});let o=null!=r?this._abiCoder.decode(n,C(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,h=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==o)l[e]=new pn({_isIndexed:!0,hash:null});else if(s[e])l[e]=new pn({_isIndexed:!0,hash:o[h++]});else try{l[e]=o[h++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw gn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw gn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new dn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:W.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new un({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=P(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new fn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var vn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const wn=new y("abstract-provider/5.8.0");class bn extends bt{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class En{constructor(){wn.checkAbstract(new.target,En),ut(this,"_isProvider",!0)}getFeeData(){return vn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield ft({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=W.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var An=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const kn=new y("abstract-signer/5.8.0"),Sn=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Cn=[y.errors.INSUFFICIENT_FUNDS,y.errors.NONCE_EXPIRED,y.errors.REPLACEMENT_UNDERPRICED];class _n{constructor(){kn.checkAbstract(new.target,_n),ut(this,"_isSigner",!0)}getBalance(t){return An(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return An(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return An(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield ft(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return An(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield ft(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return An(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return An(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return An(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return An(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return An(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===Sn.indexOf(e)&&kn.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=mt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&kn.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return An(this,void 0,void 0,function*(){const e=yield ft(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>An(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&kn.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||kn.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):kn.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&kn.throwError("network does not support EIP-1559",y.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):kn.throwError("failed to get consistent fee data",y.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Cn.indexOf(t.code)>=0)throw t;return kn.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",y.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&kn.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield ft(e)})}_checkProvider(t){this.provider||kn.throwError("missing provider",y.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class xn extends _n{constructor(t,e){super(),ut(this,"address",t),ut(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{kn.throwError(t,y.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new xn(this.address,t)}}var In,Tn,Pn={},Nn={};function Bn(){if(Tn)return In;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Tn=1,In=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},In}var Mn,Rn,Fn,On={exports:{}},Dn={exports:{}};function Ln(){if(Rn)return On.exports;Rn=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";On.exports=t.inherits}catch(t){On.exports=(Mn||(Mn=1,"function"==typeof Object.create?Dn.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Dn.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),Dn.exports)}return On.exports}function Un(){if(Fn)return Nn;Fn=1;var t=Bn(),e=Ln();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return Nn.inherits=e,Nn.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),s=0;s<t.length;s+=2)n.push(parseInt(t[s]+t[s+1],16))}else for(var i=0,s=0;s<t.length;s++){var o=t.charCodeAt(s);o<128?n[i++]=o:o<2048?(n[i++]=o>>6|192,n[i++]=63&o|128):r(t,s)?(o=65536+((1023&o)<<10)+(1023&t.charCodeAt(++s)),n[i++]=o>>18|240,n[i++]=o>>12&63|128,n[i++]=o>>6&63|128,n[i++]=63&o|128):(n[i++]=o>>12|224,n[i++]=o>>6&63|128,n[i++]=63&o|128)}else for(s=0;s<t.length;s++)n[s]=0|t[s];return n},Nn.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},Nn.htonl=n,Nn.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var o=t[i];"little"===e&&(o=n(o)),r+=s(o.toString(16))}return r},Nn.zero2=i,Nn.zero8=s,Nn.join32=function(e,r,n,i){var s=n-r;t(s%4==0);for(var o=new Array(s/4),a=0,l=r;a<o.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],o[a]=c>>>0}return o},Nn.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var s=t[n];"big"===e?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r},Nn.rotr32=function(t,e){return t>>>e|t<<32-e},Nn.rotl32=function(t,e){return t<<e|t>>>32-e},Nn.sum32=function(t,e){return t+e>>>0},Nn.sum32_3=function(t,e,r){return t+e+r>>>0},Nn.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},Nn.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},Nn.sum64=function(t,e,r,n){var i=t[e],s=n+t[e+1]>>>0,o=(s<n?1:0)+r+i;t[e]=o>>>0,t[e+1]=s},Nn.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},Nn.sum64_lo=function(t,e,r,n){return e+n>>>0},Nn.sum64_4_hi=function(t,e,r,n,i,s,o,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+s>>>0)<s?1:0,t+r+i+o+(l+=(c=c+a>>>0)<a?1:0)>>>0},Nn.sum64_4_lo=function(t,e,r,n,i,s,o,a){return e+n+s+a>>>0},Nn.sum64_5_hi=function(t,e,r,n,i,s,o,a,l,c){var h=0,u=e;return h+=(u=u+n>>>0)<e?1:0,h+=(u=u+s>>>0)<s?1:0,h+=(u=u+a>>>0)<a?1:0,t+r+i+o+l+(h+=(u=u+c>>>0)<c?1:0)>>>0},Nn.sum64_5_lo=function(t,e,r,n,i,s,o,a,l,c){return e+n+s+a+c>>>0},Nn.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},Nn.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Nn.shr64_hi=function(t,e,r){return t>>>r},Nn.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Nn}var qn,zn={};function jn(){if(qn)return zn;qn=1;var t=Un(),e=Bn();function r(){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}return zn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var s=8;s<this.padLength;s++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s<this.padLength;s++)n[i++]=0;return n},zn}var Gn,Hn,Wn,Kn,$n,Vn,Jn,Qn,Yn,Xn,Zn,ti,ei={},ri={};function ni(){if(Gn)return ri;Gn=1;var t=Un().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ri.ft_1=function(t,i,s,o){return 0===t?e(i,s,o):1===t||3===t?n(i,s,o):2===t?r(i,s,o):void 0},ri.ch32=e,ri.maj32=r,ri.p32=n,ri.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ri.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ri.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ri.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ri}function ii(){if($n)return Kn;$n=1;var t=Un(),e=jn(),r=ni(),n=Bn(),i=t.sum32,s=t.sum32_4,o=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,h=r.s1_256,u=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[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 m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Kn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=s(d(r[f-2]),r[f-7],u(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],y=this.h[3],v=this.h[4],w=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=o(E,h(v),a(v,w,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=w,w=v,v=i(y,A),y=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],y),this.h[4]=i(this.h[4],v),this.h[5]=i(this.h[5],w),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}function si(){if(Yn)return Qn;Yn=1;var t=Un(),e=jn(),r=Bn(),n=t.rotr64_hi,i=t.rotr64_lo,s=t.shr64_hi,o=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,h=t.sum64_4_hi,u=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[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(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function y(t,e,r,n,i){var s=t&r^~t&i;return s<0&&(s+=4294967296),s}function v(t,e,r,n,i,s){var o=e&n^~e&s;return o<0&&(o+=4294967296),o}function w(t,e,r,n,i){var s=t&r^t&i^r&i;return s<0&&(s+=4294967296),s}function b(t,e,r,n,i,s){var o=e&n^e&s^n&s;return o<0&&(o+=4294967296),o}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=i(t,e,1)^i(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function x(t,e){var r=n(t,e,19)^n(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}function I(t,e){var r=i(t,e,19)^i(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Qn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=x(r[n-4],r[n-3]),s=I(r[n-4],r[n-3]),o=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=_(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=h(i,s,o,a,l,c,d,f),r[n+1]=u(i,s,o,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],s=this.h[1],o=this.h[2],h=this.h[3],u=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],_=this.h[9],x=this.h[10],I=this.h[11],T=this.h[12],P=this.h[13],N=this.h[14],B=this.h[15];r(this.k.length===n.length);for(var M=0;M<n.length;M+=2){var R=N,F=B,O=k(C,_),D=S(C,_),L=y(C,_,x,I,T),U=v(C,_,x,I,T,P),q=this.k[M],z=this.k[M+1],j=n[M],G=n[M+1],H=d(R,F,O,D,L,U,q,z,j,G),W=f(R,F,O,D,L,U,q,z,j,G);R=E(i,s),F=A(i,s),O=w(i,s,o,h,u),D=b(i,s,o,h,u,p);var K=l(R,F,O,D),$=c(R,F,O,D);N=T,B=P,T=x,P=I,x=C,I=_,C=l(m,g,H,W),_=c(g,g,H,W),m=u,g=p,u=o,p=h,o=i,h=s,i=l(H,W,K,$),s=c(H,W,K,$)}a(this.h,0,i,s),a(this.h,2,o,h),a(this.h,4,u,p),a(this.h,6,m,g),a(this.h,8,C,_),a(this.h,10,x,I),a(this.h,12,T,P),a(this.h,14,N,B)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Qn}function oi(){return ti||(ti=1,ei.sha1=function(){if(Wn)return Hn;Wn=1;var t=Un(),e=jn(),r=ni(),n=t.rotl32,i=t.sum32,s=t.sum32_5,o=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),Hn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],h=this.h[1],u=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=s(n(c,5),o(p,h,u,d),f,r[a],l[p]);f=d,d=u,u=n(h,30),h=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],h),this.h[2]=i(this.h[2],u),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Hn}(),ei.sha224=function(){if(Jn)return Vn;Jn=1;var t=Un(),e=ii();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Vn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Vn}(),ei.sha256=ii(),ei.sha384=function(){if(Zn)return Xn;Zn=1;var t=Un(),e=si();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),Xn=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},Xn}(),ei.sha512=si()),ei}var ai,li,ci,hi,ui={};var di=(hi||(hi=1,function(){var t=Pn;t.utils=Un(),t.common=jn(),t.sha=oi(),t.ripemd=function(){if(ai)return ui;ai=1;var t=Un(),e=jn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,s=t.sum32_4,o=e.BlockHash;function a(){if(!(this instanceof a))return new a;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function h(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,o),ui.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var o=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],y=this.h[4],v=o,w=a,b=m,E=g,A=y,k=0;k<80;k++){var S=n(r(s(o,l(k,a,m,g),t[u[k]+e],c(k)),f[k]),y);o=y,y=g,g=r(m,10),m=a,a=S,S=n(r(s(v,l(79-k,w,b,E),t[d[k]+e],h(k)),p[k]),A),v=A,A=E,E=r(b,10),b=w,w=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],y,v),this.h[3]=i(this.h[4],o,w),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var u=[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],d=[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],f=[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],p=[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];return ui}(),t.hmac=function(){if(ci)return li;ci=1;var t=Un(),e=Bn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return li=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},li}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Pn),fi=n(di);function pi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var mi=gi;function gi(t,e){if(!t)throw new Error(e||"Assertion failed")}gi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var yi=pi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),s=i>>8,o=255&i;s?r.push(s,o):r.push(o)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),vi=pi(function(t,e){var r=e;r.assert=mi,r.toArray=yi.toArray,r.zero2=yi.zero2,r.toHex=yi.toHex,r.encode=yi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var s=1<<e+1,o=t.clone();for(n=0;n<i.length;n++){var a,l=o.andln(s-1);o.isOdd()?(a=l>(s>>1)-1?(s>>1)-l:l,o.isubn(a)):a=0,i[n]=a,o.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,s=0;t.cmpn(-i)>0||e.cmpn(-s)>0;){var o,a,l=t.andln(3)+i&3,c=e.andln(3)+s&3;3===l&&(l=-1),3===c&&(c=-1),o=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(o),a=1&c?3!==(n=e.andln(7)+s&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===o+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new a(t,"hex","le")}}),wi=vi.getNAF,bi=vi.getJSF,Ei=vi.assert;function Ai(t,e){this.type=t,this.p=new a(e.p,16),this.red=e.prime?a.red(e.prime):a.mont(this.p),this.zero=new a(0).toRed(this.red),this.one=new a(1).toRed(this.red),this.two=new a(2).toRed(this.red),this.n=e.n&&new a(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))}var ki=Ai;function Si(t,e){this.curve=t,this.type=e,this.precomputed=null}Ai.prototype.point=function(){throw new Error("Not implemented")},Ai.prototype.validate=function(){throw new Error("Not implemented")},Ai.prototype._fixedNafMul=function(t,e){Ei(t.precomputed);var r=t._getDoubles(),n=wi(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var s,o,a=[];for(s=0;s<n.length;s+=r.step){o=0;for(var l=s+r.step-1;l>=s;l--)o=(o<<1)+n[l];a.push(o)}for(var c=this.jpoint(null,null,null),h=this.jpoint(null,null,null),u=i;u>0;u--){for(s=0;s<a.length;s++)(o=a[s])===u?h=h.mixedAdd(r.points[s]):o===-u&&(h=h.mixedAdd(r.points[s].neg()));c=c.add(h)}return c.toP()},Ai.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,s=wi(e,r,this._bitLength),o=this.jpoint(null,null,null),a=s.length-1;a>=0;a--){for(var l=0;a>=0&&0===s[a];a--)l++;if(a>=0&&l++,o=o.dblp(l),a<0)break;var c=s[a];Ei(0!==c),o="affine"===t.type?c>0?o.mixedAdd(i[c-1>>1]):o.mixedAdd(i[-c-1>>1].neg()):c>0?o.add(i[c-1>>1]):o.add(i[-c-1>>1].neg())}return"affine"===t.type?o.toP():o},Ai.prototype._wnafMulAdd=function(t,e,r,n,i){var s,o,a,l=this._wnafT1,c=this._wnafT2,h=this._wnafT3,u=0;for(s=0;s<n;s++){var d=(a=e[s])._getNAFPoints(t);l[s]=d.wnd,c[s]=d.points}for(s=n-1;s>=1;s-=2){var f=s-1,p=s;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],y=bi(r[f],r[p]);for(u=Math.max(y[0].length,u),h[f]=new Array(u),h[p]=new Array(u),o=0;o<u;o++){var v=0|y[0][o],w=0|y[1][o];h[f][o]=g[3*(v+1)+(w+1)],h[p][o]=0,c[f]=m}}else h[f]=wi(r[f],l[f],this._bitLength),h[p]=wi(r[p],l[p],this._bitLength),u=Math.max(h[f].length,u),u=Math.max(h[p].length,u)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(s=u;s>=0;s--){for(var A=0;s>=0;){var k=!0;for(o=0;o<n;o++)E[o]=0|h[o][s],0!==E[o]&&(k=!1);if(!k)break;A++,s--}if(s>=0&&A++,b=b.dblp(A),s<0)break;for(o=0;o<n;o++){var S=E[o];0!==S&&(S>0?a=c[o][S-1>>1]:S<0&&(a=c[o][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(s=0;s<n;s++)c[s]=null;return i?b:b.toP()},Ai.BasePoint=Si,Si.prototype.eq=function(){throw new Error("Not implemented")},Si.prototype.validate=function(){return this.curve.validate(this)},Ai.prototype.decodePoint=function(t,e){t=vi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?Ei(t[t.length-1]%2==0):7===t[0]&&Ei(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},Si.prototype.encodeCompressed=function(t){return this.encode(t,!0)},Si.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},Si.prototype.encode=function(t,e){return vi.encode(this._encode(e),t)},Si.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},Si.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},Si.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var s=0;s<t;s++)n=n.dbl();r.push(n)}return{step:t,points:r}},Si.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},Si.prototype._getBeta=function(){return null},Si.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Ci=pi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),_i=vi.assert;function xi(t){ki.call(this,"short",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Ci(xi,ki);var Ii=xi;function Ti(t,e,r,n){ki.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(e,16),this.y=new a(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Pi(t,e,r,n){ki.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(e,16),this.y=new a(r,16),this.z=new a(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.zOne=this.z===this.curve.one}xi.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new a(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new a(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],_i(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new a(t.a,16),b:new a(t.b,16)}}):this._getEndoBasis(r)}}},xi.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:a.mont(t),r=new a(2).toRed(e).redInvm(),n=r.redNeg(),i=new a(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},xi.prototype._getEndoBasis=function(t){for(var e,r,n,i,s,o,l,c,h,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new a(1),m=new a(0),g=new a(0),y=new a(1),v=0;0!==d.cmpn(0);){var w=f.div(d);c=f.sub(w.mul(d)),h=g.sub(w.mul(p));var b=y.sub(w.mul(m));if(!n&&c.cmp(u)<0)e=l.neg(),r=p,n=c.neg(),i=h;else if(n&&2===++v)break;l=c,f=d,d=c,g=p,p=h,y=m,m=b}s=c.neg(),o=h;var E=n.sqr().add(i.sqr());return s.sqr().add(o.sqr()).cmp(E)>=0&&(s=e,o=r),n.negative&&(n=n.neg(),i=i.neg()),s.negative&&(s=s.neg(),o=o.neg()),[{a:n,b:i},{a:s,b:o}]},xi.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),s=r.b.neg().mul(t).divRound(this.n),o=i.mul(r.a),a=s.mul(n.a),l=i.mul(r.b),c=s.mul(n.b);return{k1:t.sub(o).sub(a),k2:l.add(c).neg()}},xi.prototype.pointFromX=function(t,e){(t=new a(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},xi.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},xi.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,s=0;s<t.length;s++){var o=this._endoSplit(e[s]),a=t[s],l=a._getBeta();o.k1.negative&&(o.k1.ineg(),a=a.neg(!0)),o.k2.negative&&(o.k2.ineg(),l=l.neg(!0)),n[2*s]=a,n[2*s+1]=l,i[2*s]=o.k1,i[2*s+1]=o.k2}for(var c=this._wnafMulAdd(1,n,i,2*s,r),h=0;h<2*s;h++)n[h]=null,i[h]=null;return c},Ci(Ti,ki.BasePoint),xi.prototype.point=function(t,e,r){return new Ti(this,t,e,r)},xi.prototype.pointFromJSON=function(t,e){return Ti.fromJSON(this,t,e)},Ti.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Ti.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Ti.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var s=e[2];return n.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[n].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[n].concat(s.naf.points.map(i))}},n},Ti.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Ti.prototype.isInfinity=function(){return this.inf},Ti.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(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Ti.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),s=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,o)},Ti.prototype.getX=function(){return this.x.fromRed()},Ti.prototype.getY=function(){return this.y.fromRed()},Ti.prototype.mul=function(t){return t=new a(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)},Ti.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Ti.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Ti.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Ti.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Ti.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Ci(Pi,ki.BasePoint),xi.prototype.jpoint=function(t,e,r){return new Pi(this,t,e,r)},Pi.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Pi.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Pi.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),s=this.y.redMul(e.redMul(t.z)),o=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=s.redSub(o);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),h=c.redMul(a),u=n.redMul(c),d=l.redSqr().redIAdd(h).redISub(u).redISub(u),f=l.redMul(u.redISub(d)).redISub(s.redMul(h)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Pi.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,s=t.y.redMul(e).redMul(this.z),o=r.redSub(n),a=i.redSub(s);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),h=r.redMul(l),u=a.redSqr().redIAdd(c).redISub(h).redISub(h),d=a.redMul(h.redISub(u)).redISub(i.redMul(c)),f=this.z.redMul(o);return this.curve.jpoint(u,d,f)},Pi.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,s=this.x,o=this.y,a=this.z,l=a.redSqr().redSqr(),c=o.redAdd(o);for(e=0;e<t;e++){var h=s.redSqr(),u=c.redSqr(),d=u.redSqr(),f=h.redAdd(h).redIAdd(h).redIAdd(n.redMul(l)),p=s.redMul(u),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),y=f.redMul(g);y=y.redIAdd(y).redISub(d);var v=c.redMul(a);e+1<t&&(l=l.redMul(d)),s=m,a=v,c=y}return this.curve.jpoint(s,c.redMul(i),a)},Pi.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Pi.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(o).redISub(o),c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),u=this.y.redSqr(),d=u.redSqr(),f=this.x.redAdd(u).redSqr().redISub(h).redISub(d);f=f.redIAdd(f);var p=h.redAdd(h).redIAdd(h),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Pi.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(o).redISub(o);t=l;var c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.z.redSqr(),u=this.y.redSqr(),d=this.x.redMul(u),f=this.x.redSub(h).redMul(this.x.redAdd(h));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(u).redISub(h);var g=u.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Pi.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),s=e.redSqr(),o=r.redSqr(),a=s.redAdd(s).redIAdd(s).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(o),h=a.redSqr().redISub(c.redAdd(c)),u=c.redISub(h),d=o.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(u).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(h,f,p)},Pi.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),s=i.redSqr(),o=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(s)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(o).redSqr().redISub(s).redISub(a).redISub(l),h=e.redMul(c);h=(h=h.redIAdd(h)).redIAdd(h);var u=this.x.redMul(a).redISub(h);u=(u=u.redIAdd(u)).redIAdd(u);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(o.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(o).redSqr().redISub(r).redISub(a);return this.curve.jpoint(u,d,f)},Pi.prototype.mul=function(t,e){return t=new a(t,e),this.curve._wnafMul(this,t)},Pi.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Pi.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Pi.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Ni=pi(function(t,e){var r=e;r.base=ki,r.short=Ii,r.mont=null,r.edwards=null}),Bi=pi(function(t,e){var r,n=e,i=vi.assert;function s(t){"short"===t.type?this.curve=new Ni.short(t):"edwards"===t.type?this.curve=new Ni.edwards(t):this.curve=new Ni.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new s(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=s,o("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:fi.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("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:fi.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("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:fi.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("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:fi.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"]}),o("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:fi.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"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:fi.sha256,gRed:!1,g:["9"]}),o("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:fi.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}o("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:fi.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Mi(t){if(!(this instanceof Mi))return new Mi(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=yi.toArray(t.entropy,t.entropyEnc||"hex"),r=yi.toArray(t.nonce,t.nonceEnc||"hex"),n=yi.toArray(t.pers,t.persEnc||"hex");mi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Ri=Mi;Mi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Mi.prototype._hmac=function(){return new fi.hmac(this.hash,this.K)},Mi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Mi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=yi.toArray(t,e),r=yi.toArray(r,n),mi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Mi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=yi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var s=i.slice(0,t);return this._update(r),this._reseed++,yi.encode(s,e)};var Fi=vi.assert;function Oi(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)}var Di=Oi;Oi.fromPublic=function(t,e,r){return e instanceof Oi?e:new Oi(t,{pub:e,pubEnc:r})},Oi.fromPrivate=function(t,e,r){return e instanceof Oi?e:new Oi(t,{priv:e,privEnc:r})},Oi.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"}},Oi.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Oi.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Oi.prototype._importPrivate=function(t,e){this.priv=new a(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Oi.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Fi(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Fi(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Oi.prototype.derive=function(t){return t.validate()||Fi(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Oi.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Oi.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Oi.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Li=vi.assert;function Ui(t,e){if(t instanceof Ui)return t;this._importDER(t,e)||(Li(t.r&&t.s,"Signature without r or s"),this.r=new a(t.r,16),this.s=new a(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var qi=Ui;function zi(){this.place=0}function ji(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,s=0,o=e.place;s<n;s++,o++)i<<=8,i|=t[o],i>>>=0;return!(i<=127)&&(e.place=o,i)}function Gi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function Hi(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}Ui.prototype._importDER=function(t,e){t=vi.toArray(t,e);var r=new zi;if(48!==t[r.place++])return!1;var n=ji(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=ji(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var s=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var o=ji(t,r);if(!1===o)return!1;if(t.length!==o+r.place)return!1;if(128&t[r.place])return!1;var l=t.slice(r.place,o+r.place);if(0===s[0]){if(!(128&s[1]))return!1;s=s.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new a(s),this.s=new a(l),this.recoveryParam=null,!0},Ui.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Gi(e),r=Gi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];Hi(n,e.length),(n=n.concat(e)).push(2),Hi(n,r.length);var i=n.concat(r),s=[48];return Hi(s,i.length),s=s.concat(i),vi.encode(s,t)};var Wi=function(){throw new Error("unsupported")},Ki=vi.assert;function $i(t){if(!(this instanceof $i))return new $i(t);"string"==typeof t&&(Ki(Object.prototype.hasOwnProperty.call(Bi,t),"Unknown curve "+t),t=Bi[t]),t instanceof Bi.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}var Vi=$i;$i.prototype.keyPair=function(t){return new Di(this,t)},$i.prototype.keyFromPrivate=function(t,e){return Di.fromPrivate(this,t,e)},$i.prototype.keyFromPublic=function(t,e){return Di.fromPublic(this,t,e)},$i.prototype.genKeyPair=function(t){t||(t={});for(var e=new Ri({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Wi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new a(2));;){var i=new a(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},$i.prototype._truncateToN=function(t,e,r){var n;if(a.isBN(t)||"number"==typeof t)n=(t=new a(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new a(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new a(i,16)}"number"!=typeof r&&(r=8*n);var s=r-this.n.bitLength();return s>0&&(t=t.ushrn(s)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},$i.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!a.isBN(t)){Ki("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ki(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ki((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ki(!t.isNeg(),"Can not sign a negative message");var s=this.n.byteLength(),o=e.getPrivate().toArray("be",s),l=t.toArray("be",s);Ki(new a(l).eq(t),"Can not sign message");for(var c=new Ri({hash:this.hash,entropy:o,nonce:l,pers:n.pers,persEnc:n.persEnc||"utf8"}),h=this.n.sub(new a(1)),u=0;;u++){var d=n.k?n.k(u):new a(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new qi({r:m,s:g,recoveryParam:y})}}}}}},$i.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var s=(e=new qi(e,"hex")).r,o=e.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var a,l=o.invm(this.n),c=l.mul(t).umod(this.n),h=l.mul(s).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(s):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(s)},$i.prototype.recoverPubKey=function(t,e,r,n){Ki((3&r)===r,"The recovery param is more than two bits"),e=new qi(e,n);var i=this.n,s=new a(t),o=e.r,l=e.s,c=1&r,h=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");o=h?this.curve.pointFromX(o.add(this.curve.n),c):this.curve.pointFromX(o,c);var u=e.r.invm(i),d=i.sub(s).mul(u).umod(i),f=l.mul(u).umod(i);return this.g.mulAdd(d,o,f)},$i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new qi(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(t,e,i)}catch(t){continue}if(s.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Ji=pi(function(t,e){var r=e;r.version="6.6.1",r.utils=vi,r.rand=function(){throw new Error("unsupported")},r.curve=Ni,r.curves=Bi,r.ec=Vi,r.eddsa=null}).ec;const Qi=new y("signing-key/5.8.0");let Yi=null;function Xi(){return Yi||(Yi=new Ji("secp256k1")),Yi}class Zi{constructor(t){ut(this,"curve","secp256k1"),ut(this,"privateKey",P(t)),32!==N(this.privateKey)&&Qi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Xi().keyFromPrivate(S(this.privateKey));ut(this,"publicKey","0x"+e.getPublic(!1,"hex")),ut(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ut(this,"_isSigningKey",!0)}_addPoint(t){const e=Xi().keyFromPublic(S(this.publicKey)),r=Xi().keyFromPublic(S(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Xi().keyFromPrivate(S(this.privateKey)),r=S(t);32!==r.length&&Qi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return D({recoveryParam:n.recoveryParam,r:O("0x"+n.r.toString(16),32),s:O("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Xi().keyFromPrivate(S(this.privateKey)),r=Xi().keyFromPublic(S(es(t)));return O("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function ts(t,e){const r=D(e),n={r:S(r.r),s:S(r.s)};return"0x"+Xi().recoverPubKey(S(t),n,r.recoveryParam).encode("hex",!1)}function es(t,e){const r=S(t);if(32===r.length){const t=new Zi(r);return e?"0x"+Xi().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?P(r):"0x"+Xi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Xi().keyFromPublic(r).getPublic(!0,"hex"):P(r):Qi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const rs=new y("transactions/5.8.0");var ns;function is(t){return"0x"===t?null:ye(t)}function ss(t){return"0x"===t?Be:W.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ns||(ns={}));const os=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],as={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function ls(t){return ye(B(ee(B(es(t),1)),12))}function cs(t,e){return ls(ts(S(t),e))}function hs(t,e){const r=_(W.from(t).toHexString());return r.length>32&&rs.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function us(t,e){return{address:ye(t),storageKeys:(e||[]).map((e,r)=>(32!==N(e)&&rs.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ds(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&rs.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),us(t[0],t[1])):us(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return us(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function fs(t){return ds(t).map(t=>[t.address,t.storageKeys])}function ps(t,e){if(null!=t.gasPrice){const e=W.from(t.gasPrice),r=W.from(t.maxFeePerGas||0);e.eq(r)||rs.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[hs(t.chainId||0,"chainId"),hs(t.nonce||0,"nonce"),hs(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),hs(t.maxFeePerGas||0,"maxFeePerGas"),hs(t.gasLimit||0,"gasLimit"),null!=t.to?ye(t.to):"0x",hs(t.value||0,"value"),t.data||"0x",fs(t.accessList||[])];if(e){const t=D(e);r.push(hs(t.recoveryParam,"recoveryParam")),r.push(_(t.r)),r.push(_(t.s))}return M(["0x02",oe(r)])}function ms(t,e){const r=[hs(t.chainId||0,"chainId"),hs(t.nonce||0,"nonce"),hs(t.gasPrice||0,"gasPrice"),hs(t.gasLimit||0,"gasLimit"),null!=t.to?ye(t.to):"0x",hs(t.value||0,"value"),t.data||"0x",fs(t.accessList||[])];if(e){const t=D(e);r.push(hs(t.recoveryParam,"recoveryParam")),r.push(_(t.r)),r.push(_(t.s))}return M(["0x01",oe(r)])}function gs(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&rs.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){pt(t,as);const r=[];os.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=S(P(n,i)),e.length&&n.length!==e.length&&n.length>0&&rs.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=_(n),n.length>e.maxLength&&rs.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(P(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&rs.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!E(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(P(n)),r.push("0x"),r.push("0x")),!e)return oe(r);const i=D(e);let s=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),s+=2*n+8,i.v>28&&i.v!==s&&rs.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==s&&rs.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(P(s)),r.push(_(S(i.r))),r.push(_(S(i.s))),oe(r)}(t,e);switch(t.type){case 1:return ms(t,e);case 2:return ps(t,e)}return rs.throwError(`unsupported transaction type: ${t.type}`,y.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function ys(t,e,r){try{const r=ss(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){rs.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=O(e[1],32),t.s=O(e[2],32);try{const e=ee(r(t));t.from=cs(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function vs(t){const e=S(t);if(e[0]>127)return function(t){const e=ce(t);9!==e.length&&6!==e.length&&rs.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:ss(e[0]).toNumber(),gasPrice:ss(e[1]),gasLimit:ss(e[2]),to:is(e[3]),value:ss(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=W.from(e[6]).toNumber()}catch(t){return r}if(r.r=O(e[7],32),r.s=O(e[8],32),W.from(r.r).isZero()&&W.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(P(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const s=ee(oe(i));try{r.from=cs(s,{r:P(r.r),s:P(r.s),recoveryParam:n})}catch(t){}r.hash=ee(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=ce(t.slice(1));8!==e.length&&11!==e.length&&rs.throwArgumentError("invalid component count for transaction type: 1","payload",P(t));const r={type:1,chainId:ss(e[0]).toNumber(),nonce:ss(e[1]).toNumber(),gasPrice:ss(e[2]),gasLimit:ss(e[3]),to:is(e[4]),value:ss(e[5]),data:e[6],accessList:ds(e[7])};return 8===e.length||(r.hash=ee(t),ys(r,e.slice(8),ms)),r}(e);case 2:return function(t){const e=ce(t.slice(1));9!==e.length&&12!==e.length&&rs.throwArgumentError("invalid component count for transaction type: 2","payload",P(t));const r=ss(e[2]),n=ss(e[3]),i={type:2,chainId:ss(e[0]).toNumber(),nonce:ss(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:ss(e[4]),to:is(e[5]),value:ss(e[6]),data:e[7],accessList:ds(e[8])};return 9===e.length||(i.hash=ee(t),ys(i,e.slice(9),ps)),i}(e)}return rs.throwError(`unsupported transaction type: ${e[0]}`,y.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var ws=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const bs=new y("contracts/5.8.0"),Es={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function As(t,e){return ws(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&bs.throwArgumentError("invalid address or ENS name","name",r);try{return ye(r)}catch(t){}t||bs.throwError("a provider or signer is needed to resolve ENS names",y.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&bs.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function ks(t,e,r){return ws(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>ks(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield As(t,e):"tuple"===r.type?yield ks(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>ks(t,e,r.arrayChildren))):Promise.reject(bs.makeError("invalid value for array",y.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function Ss(t,e,r){return ws(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=mt(r.pop())),bs.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=ft({override:As(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>ws(this,void 0,void 0,function*(){return ye(t.signer)!==t.override&&bs.throwError("Contract with a Signer cannot override from",y.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=As(t.provider,n.from));const i=yield ft({args:ks(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:ft(n)||{}}),s=t.interface.encodeFunctionData(e,i.args),o={data:s,to:i.address},a=i.overrides;if(null!=a.nonce&&(o.nonce=W.from(a.nonce).toNumber()),null!=a.gasLimit&&(o.gasLimit=W.from(a.gasLimit)),null!=a.gasPrice&&(o.gasPrice=W.from(a.gasPrice)),null!=a.maxFeePerGas&&(o.maxFeePerGas=W.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(o.maxPriorityFeePerGas=W.from(a.maxPriorityFeePerGas)),null!=a.from&&(o.from=a.from),null!=a.type&&(o.type=a.type),null!=a.accessList&&(o.accessList=ds(a.accessList)),null==o.gasLimit&&null!=e.gas){let t=21e3;const r=S(s);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);o.gasLimit=W.from(e.gas).add(t)}if(a.value){const t=W.from(a.value);t.isZero()||e.payable||bs.throwError("non-payable method cannot override value",y.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),o.value=t}a.customData&&(o.customData=mt(a.customData)),a.ccipReadEnabled&&(o.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&bs.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,y.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),o})}function Cs(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=wt(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function _s(t,e,r){const n=t.signer||t.provider;return function(...i){return ws(this,void 0,void 0,function*(){let s;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=mt(i.pop());null!=t.blockTag&&(s=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(s));const o=yield Ss(t,e,i),a=yield n.call(o,s);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===y.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=o),e}})}}function xs(t,e,r){return e.constant?_s(t,e,r):function(t,e){return function(...r){return ws(this,void 0,void 0,function*(){t.signer||bs.throwError("sending a transaction requires a signer",y.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield Ss(t,e,r),i=yield t.signer.sendTransaction(n);return Cs(t,i),i})}}(t,e)}function Is(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Ts{constructor(t,e){ut(this,"tag",t),ut(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Ps extends Ts{constructor(){super("error",null)}}class Ns extends Ts{constructor(t,e,r,n){const i={address:t};let s=e.getEventTopic(r);n?(s!==n[0]&&bs.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[s],super(Is(i),i),ut(this,"address",t),ut(this,"interface",e),ut(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Kt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Bs extends Ts{constructor(t,e){super("*",{address:t}),ut(this,"address",t),ut(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Ms{constructor(t,e,r){ut(this,"interface",dt(new.target,"getInterface")(e)),null==r?(ut(this,"provider",null),ut(this,"signer",null)):_n.isSigner(r)?(ut(this,"provider",r.provider||null),ut(this,"signer",r)):En.isProvider(r)?(ut(this,"provider",r),ut(this,"signer",null)):bs.throwArgumentError("invalid signer or provider","signerOrProvider",r),ut(this,"callStatic",{}),ut(this,"estimateGas",{}),ut(this,"functions",{}),ut(this,"populateTransaction",{}),ut(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ut(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?ut(this.filters,e,this.filters[r[0]]):bs.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ut(this,"_runningEvents",{}),ut(this,"_wrappedEmits",{}),null==t&&bs.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ut(this,"address",t),this.provider)ut(this,"resolvedAddress",As(this.provider,t));else try{ut(this,"resolvedAddress",Promise.resolve(ye(t)))}catch(t){bs.throwError("provider is required to use ENS name as contract address",y.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])bs.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&ut(this,t,xs(this,e,!0)),null==this.functions[t]&&ut(this.functions,t,xs(this,e,!1)),null==this.callStatic[t]&&ut(this.callStatic,t,_s(this,e,!0)),null==this.populateTransaction[t]&&ut(this.populateTransaction,t,function(t,e){return function(...r){return Ss(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ut(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return ws(this,void 0,void 0,function*(){r||bs.throwError("estimate require a provider or signer",y.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield Ss(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&ut(this,t,this[r])}catch(t){}null==this.functions[t]&&ut(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ut(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ut(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ut(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return ve(t)}static getInterface(t){return yn.isInterface(t)?t:new yn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&bs.throwError("contract not deployed",y.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||bs.throwError("sending a transactions require a signer",y.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=mt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&bs.throwError("cannot override "+t,y.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new xn(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&ut(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return pn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Ps);if("event"===t)return this._normalizeRunningEvent(new Ts("event",null));if("*"===t)return this._normalizeRunningEvent(new Bs(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new Ns(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new Ns(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Ts(Is(e),e))}return this._normalizeRunningEvent(new Bs(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=wt(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||bs.throwError("events require a provider or a signer with a provider",y.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=mt(n.filter);return"string"==typeof e&&I(e,32)?(null!=r&&bs.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Rs extends Ms{}class Fs{constructor(t){ut(this,"alphabet",t),ut(this,"base",t.length),ut(this,"_alphabetMap",{}),ut(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=S(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return S(new Uint8Array(e.reverse()))}}new Fs("abcdefghijklmnopqrstuvwxyz234567");const Os=new Fs("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Ds;!function(t){t.sha256="sha256",t.sha512="sha512"}(Ds||(Ds={}));const Ls=new y("sha2/5.8.0");function Us(t){return"0x"+fi.ripemd160().update(S(t)).digest("hex")}function qs(t){return"0x"+fi.sha256().update(S(t)).digest("hex")}function zs(t,e,r){return Ds[t]||Ls.throwError("unsupported algorithm "+t,y.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+fi.hmac(fi[t],S(e)).update(S(r)).digest("hex")}function js(t,e,r,n,i){let s;t=S(t),e=S(e);let o=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,h;l.set(e);for(let u=1;u<=o;u++){l[e.length]=u>>24&255,l[e.length+1]=u>>16&255,l[e.length+2]=u>>8&255,l[e.length+3]=255&u;let d=S(zs(i,t,l));s||(s=d.length,h=new Uint8Array(s),o=Math.ceil(n/s),c=n-(o-1)*s),h.set(d);for(let e=1;e<r;e++){d=S(zs(i,t,d));for(let t=0;t<s;t++)h[t]^=d[t]}const f=(u-1)*s,p=u===o?c:s;a.set(S(h).slice(0,p),f)}return P(a)}const Gs=new y("wordlists/5.8.0");class Hs{constructor(t){Gs.checkAbstract(new.target,Hs),ut(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return gr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Ws=null;function Ks(t){if(null==Ws&&(Ws="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Hs.check(t)))throw Ws=null,new Error("BIP39 Wordlist for en (English) FAILED")}const $s=new class extends Hs{constructor(){super("en")}getWord(t){return Ks(this),Ws[t]}getWordIndex(t){return Ks(this),Ws.indexOf(t)}};Hs.register($s);const Vs={en:$s},Js=new y("hdnode/5.8.0"),Qs=W.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Ys=Ve("Bitcoin seed"),Xs=2147483648;function Zs(t){return(1<<t)-1<<8-t}function to(t){return(1<<t)-1}function eo(t){return O(P(t),32)}function ro(t){return Os.encode(C([t,B(qs(qs(t)),0,4)]))}function no(t){if(null==t)return Vs.en;if("string"==typeof t){const e=Vs[t];return null==e&&Js.throwArgumentError("unknown locale","wordlist",t),e}return t}const io={},so="m/44'/60'/0'/0/0";class oo{constructor(t,e,r,n,i,s,o,a){if(t!==io)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new Zi(e);ut(this,"privateKey",t.privateKey),ut(this,"publicKey",t.compressedPublicKey)}else ut(this,"privateKey",null),ut(this,"publicKey",P(r));ut(this,"parentFingerprint",n),ut(this,"fingerprint",B(Us(qs(this.publicKey)),0,4)),ut(this,"address",ls(this.publicKey)),ut(this,"chainCode",i),ut(this,"index",s),ut(this,"depth",o),null==a?(ut(this,"mnemonic",null),ut(this,"path",null)):"string"==typeof a?(ut(this,"mnemonic",null),ut(this,"path",a)):(ut(this,"mnemonic",a),ut(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return ro(C([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",P(this.depth),this.parentFingerprint,O(P(this.index),4),this.chainCode,null!=this.privateKey?C(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new oo(io,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&Xs){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(S(this.privateKey),1),e&&(e+="'")}else r.set(S(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=S(zs(Ds.sha512,this.chainCode,r)),i=n.slice(0,32),s=n.slice(32);let o=null,a=null;if(this.privateKey)o=eo(W.from(i).add(this.privateKey).mod(Qs));else{a=new Zi(P(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new oo(io,o,a,this.fingerprint,eo(s),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=Xs)throw new Error("invalid path index - "+n);r=r._derive(Xs+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=Xs)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=S(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=S(zs(Ds.sha512,Ys,r));return new oo(io,eo(n.slice(0,32)),null,"0x00000000",eo(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=co(lo(t,r=no(r)),r),oo._fromSeed(ao(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return oo._fromSeed(t,null)}static fromExtendedKey(t){const e=Os.decode(t);82===e.length&&ro(e.slice(0,78))===t||Js.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=P(e.slice(5,9)),i=parseInt(P(e.slice(9,13)).substring(2),16),s=P(e.slice(13,45)),o=e.slice(45,78);switch(P(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new oo(io,null,P(o),n,s,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new oo(io,P(o.slice(1)),null,n,s,i,r,null)}return Js.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function ao(t,e){e||(e="");const r=Ve("mnemonic"+e,Ge.NFKD);return js(Ve(t,Ge.NFKD),r,2048,64,"sha512")}function lo(t,e){e=no(e),Js.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=S(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let s=e.getWordIndex(r[t].normalize("NFKD"));if(-1===s)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)s&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const s=32*r.length/3,o=Zs(r.length/3);if((S(qs(n.slice(0,s/8)))[0]&o)!==(n[n.length-1]&o))throw new Error("invalid checksum");return P(n.slice(0,s/8))}function co(t,e){if(e=no(e),(t=S(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&to(8-n)),n+=3);const i=t.length/4,s=S(qs(t))[0]&Zs(i);return r[r.length-1]<<=i,r[r.length-1]|=s>>8-i,e.join(r.map(t=>e.getWord(t)))}const ho=new y("random/5.8.0");const uo=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let fo=uo.crypto||uo.msCrypto;function po(t){(t<=0||t>1024||t%1||t!=t)&&ho.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return fo.getRandomValues(e),S(e)}function mo(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}fo&&fo.getRandomValues||(ho.warn("WARNING: Missing strong random number source"),fo={getRandomValues:function(t){return ho.throwError("no secure random source avaialble",y.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var go,yo={exports:{}};var vo=(go||(go=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function s(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var o,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(o="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(o[(240&n)>>4]+o[15&n])}return e.join("")}}),c={16:10,24:12,32:14},h=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],u=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],y=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],v=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],w=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};_.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,s=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=s[e],this._Kd[t-r][e%4]=s[e];for(var o,a=0,l=i;l<n;){if(o=s[i-1],s[0]^=u[o>>16&255]<<24^u[o>>8&255]<<16^u[255&o]<<8^u[o>>24&255]^h[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)s[e]^=s[e-1];else{for(e=1;e<i/2;e++)s[e]^=s[e-1];for(o=s[i/2-1],s[i/2]^=u[255&o]^u[o>>8&255]<<8^u[o>>16&255]<<16^u[o>>24&255]<<24,e=i/2+1;e<i;e++)s[e]^=s[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=s[e],this._Kd[t-d][f]=s[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)o=this._Kd[d][f],this._Kd[d][f]=E[o>>24&255]^A[o>>16&255]^k[o>>8&255]^S[255&o]},_.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Ke[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=f[n[s]>>24&255]^p[n[(s+1)%4]>>16&255]^m[n[(s+2)%4]>>8&255]^g[255&n[(s+3)%4]]^this._Ke[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Ke[e][s],l[4*s]=255&(u[n[s]>>24&255]^a>>24),l[4*s+1]=255&(u[n[(s+1)%4]>>16&255]^a>>16),l[4*s+2]=255&(u[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(u[255&n[(s+3)%4]]^a);return l},_.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Kd[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=y[n[s]>>24&255]^v[n[(s+3)%4]>>16&255]^w[n[(s+2)%4]>>8&255]^b[255&n[(s+1)%4]]^this._Kd[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Kd[e][s],l[4*s]=255&(d[n[s]>>24&255]^a>>24),l[4*s+1]=255&(d[n[(s+3)%4]>>16&255]^a>>16),l[4*s+2]=255&(d[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(d[255&n[(s+1)%4]]^a);return l};var x=function(t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new _(t)};x.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.encrypt(r),e,o);return e},x.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.decrypt(r),e,o);return e};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new _(t)};I.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),s(this._lastCipherblock,e,o)}return e},I.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[o+a]=r[a]^this._lastCipherblock[a];s(t,this._lastCipherblock,0,o,o+16)}return e};var T=function(t,e,r){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new _(t)};T.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},T.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var P=function(t,e){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new _(t)};P.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},P.prototype.decrypt=P.prototype.encrypt;var N=function(t){if(!(this instanceof N))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};N.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},N.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},N.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var B=function(t,e){if(!(this instanceof B))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof N||(e=new N(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new _(t)};B.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},B.prototype.decrypt=B.prototype.encrypt;var M={AES:_,Counter:N,ModeOfOperation:{ecb:x,cbc:I,cfb:T,ofb:P,ctr:B},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);s(t,r);for(var o=t.length;o<r.length;o++)r[o]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,o=0;o<e;o++)if(t[r+o]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return s(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:s}};t.exports=M}()}(yo)),yo.exports),wo=n(vo);const bo="json-wallets/5.8.0";function Eo(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),S(t)}function Ao(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function ko(t){return"string"==typeof t?Ve(t,Ge.NFKC):S(t)}function So(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function Co(t){const e=S(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=P(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const _o=new y(bo);class xo extends bt{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function Io(t,e){const r=JSON.parse(t);e=ko(e);const n=ye(So(r,"ethaddr")),i=Eo(So(r,"encseed"));i&&i.length%16==0||_o.throwArgumentError("invalid encseed","json",t);const s=S(js(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),a=i.slice(16),l=new wo.ModeOfOperation.cbc(s,o),c=wo.padding.pkcs7.strip(S(l.decrypt(a)));let h="";for(let t=0;t<c.length;t++)h+=String.fromCharCode(c[t]);const u=ee(Ve(h));return new xo({_isCrowdsaleAccount:!0,address:n,privateKey:u})}function To(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Po(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var No,Bo={exports:{}};var Mo=(No||(No=1,function(t){!function(){const e=2147483647;function r(t){const e=new Uint32Array([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]);let r=1779033703,n=3144134277,i=1013904242,s=2773480762,o=1359893119,a=2600822924,l=528734635,c=1541459225;const h=new Uint32Array(64);function u(t){let u=0,d=t.length;for(;d>=64;){let f,p,m,g,y,v=r,w=n,b=i,E=s,A=o,k=a,S=l,C=c;for(p=0;p<16;p++)m=u+4*p,h[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=h[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=h[p-15],y=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,h[p]=(g+h[p-7]|0)+(y+h[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+h[p]|0)|0)|0,y=((v>>>2|v<<30)^(v>>>13|v<<19)^(v>>>22|v<<10))+(v&w^v&b^w&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=w,w=v,v=g+y|0;r=r+v|0,n=n+w|0,i=i+b|0,s=s+E|0,o=o+A|0,a=a+k|0,l=l+S|0,c=c+C|0,u+=64,d-=64}}u(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,y=t.slice(t.length-f,t.length);for(y.push(128),d=f+1;d<g;d++)y.push(0);return y.push(p>>>24&255),y.push(p>>>16&255),y.push(p>>>8&255),y.push(p>>>0&255),y.push(m>>>24&255),y.push(m>>>16&255),y.push(m>>>8&255),y.push(m>>>0&255),u(y),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,s=new Array(i),o=new Array(64);let a,l=[];for(a=0;a<64;a++)s[a]=54;for(a=0;a<t.length;a++)s[a]^=t[a];for(a=0;a<e.length;a++)s[64+a]=e[a];for(a=i-4;a<i;a++)s[a]=0;for(a=0;a<64;a++)o[a]=92;for(a=0;a<t.length;a++)o[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(s[t]++,s[t]<=255)return;s[t]=0}}for(;n>=32;)c(),l=l.concat(r(o.concat(r(s)))),n-=32;return n>0&&(c(),l=l.concat(r(o.concat(r(s))).slice(0,n))),l}function i(t,e,r,n,i){let s;for(l(t,16*(2*r-1),i,0,16),s=0;s<2*r;s++)a(t,16*s,i,16),o(i,n),l(i,0,t,e+16*s,16);for(s=0;s<r;s++)l(t,e+2*s*16,t,16*s,16);for(s=0;s<r;s++)l(t,e+16*(2*s+1),t,16*(s+r),16)}function s(t,e){return t<<e|t>>>32-e}function o(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=s(e[0]+e[12],7),e[8]^=s(e[4]+e[0],9),e[12]^=s(e[8]+e[4],13),e[0]^=s(e[12]+e[8],18),e[9]^=s(e[5]+e[1],7),e[13]^=s(e[9]+e[5],9),e[1]^=s(e[13]+e[9],13),e[5]^=s(e[1]+e[13],18),e[14]^=s(e[10]+e[6],7),e[2]^=s(e[14]+e[10],9),e[6]^=s(e[2]+e[14],13),e[10]^=s(e[6]+e[2],18),e[3]^=s(e[15]+e[11],7),e[7]^=s(e[3]+e[15],9),e[11]^=s(e[7]+e[3],13),e[15]^=s(e[11]+e[7],18),e[1]^=s(e[0]+e[3],7),e[2]^=s(e[1]+e[0],9),e[3]^=s(e[2]+e[1],13),e[0]^=s(e[3]+e[2],18),e[6]^=s(e[5]+e[4],7),e[7]^=s(e[6]+e[5],9),e[4]^=s(e[7]+e[6],13),e[5]^=s(e[4]+e[7],18),e[11]^=s(e[10]+e[9],7),e[8]^=s(e[11]+e[10],9),e[9]^=s(e[8]+e[11],13),e[10]^=s(e[9]+e[8],18),e[12]^=s(e[15]+e[14],7),e[13]^=s(e[12]+e[15],9),e[14]^=s(e[13]+e[12],13),e[15]^=s(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function h(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function u(t,r,s,o,u,d,f){if(s=h(s,"N"),o=h(o,"r"),u=h(u,"p"),d=h(d,"dkLen"),0===s||s&s-1)throw new Error("N must be power of 2");if(s>e/128/o)throw new Error("N too large");if(o>e/128/u)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*u*o);const m=new Uint32Array(32*u*o);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*o),y=new Uint32Array(32*o*s),v=32*o,w=new Uint32Array(16),b=new Uint32Array(16),E=u*s*2;let A,k,S=0,C=null,_=!1,x=0,I=0;const T=f?parseInt(1e3/o):4294967295,P="undefined"!=typeof setImmediate?setImmediate:setTimeout,N=function(){if(_)return f(new Error("cancelled"),S/E);let e;switch(x){case 0:k=32*I*o,l(m,k,g,0,v),x=1,A=0;case 1:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++)l(g,0,y,(A+t)*v,v),i(g,v,o,w,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;A=0,x=2;case 2:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++){const t=g[16*(2*o-1)]&s-1;a(y,t*v,g,v),i(g,v,o,w,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;if(l(g,0,m,k,v),I++,I<u){x=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&P(N)};if(!f)for(;;){const t=N();if(null!=t)return t}N()}const d={scrypt:function(t,e,r,n,i,s,o){return new Promise(function(a,l){let c=0;o&&o(0),u(t,e,r,n,i,s,function(t,e,r){if(t)l(t);else if(r)o&&1!==c&&o(1),a(new Uint8Array(r));else if(o&&e!==c)return c=e,o(e)})})},syncScrypt:function(t,e,r,n,i,s){return new Uint8Array(u(t,e,r,n,i,s))}};t.exports=d}()}(Bo)),Bo.exports),Ro=n(Mo),Fo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Oo=new y(bo);function Do(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Lo extends bt{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Uo(t,e){const r=Eo(So(t,"crypto/ciphertext"));if(P(ee(C([e.slice(16,32),r]))).substring(2)!==So(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===So(t,"crypto/cipher")){const n=Eo(So(t,"crypto/cipherparams/iv")),i=new wo.Counter(n);return S(new wo.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Oo.throwError("unsupported cipher",y.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),s=ls(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ye(e)!==s)throw new Error("address mismatch")}const o={_isKeystoreAccount:!0,address:s,privateKey:P(n)};if("0.1"===So(t,"x-ethers/version")){const e=Eo(So(t,"x-ethers/mnemonicCiphertext")),r=Eo(So(t,"x-ethers/mnemonicCounter")),n=new wo.Counter(r),s=new wo.ModeOfOperation.ctr(i,n),a=So(t,"x-ethers/path")||so,l=So(t,"x-ethers/locale")||"en",c=S(s.decrypt(e));try{const t=co(c,l),e=oo.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=o.privateKey)throw new Error("mnemonic mismatch");o.mnemonic=e.mnemonic}catch(t){if(t.code!==y.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Lo(o)}function qo(t,e,r,n,i){return S(js(t,e,r,n,i))}function zo(t,e,r,n,i){return Promise.resolve(qo(t,e,r,n,i))}function jo(t,e,r,n,i){const s=ko(e),o=So(t,"crypto/kdf");if(o&&"string"==typeof o){const e=function(t,e){return Oo.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===o.toLowerCase()){const r=Eo(So(t,"crypto/kdfparams/salt")),a=parseInt(So(t,"crypto/kdfparams/n")),l=parseInt(So(t,"crypto/kdfparams/r")),c=parseInt(So(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",o),a&a-1&&e("N",a);const h=parseInt(So(t,"crypto/kdfparams/dklen"));return 32!==h&&e("dklen",h),n(s,r,a,l,c,64,i)}if("pbkdf2"===o.toLowerCase()){const n=Eo(So(t,"crypto/kdfparams/salt"));let i=null;const o=So(t,"crypto/kdfparams/prf");"hmac-sha256"===o?i="sha256":"hmac-sha512"===o?i="sha512":e("prf",o);const a=parseInt(So(t,"crypto/kdfparams/c")),l=parseInt(So(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(s,n,a,l,i)}}return Oo.throwArgumentError("unsupported key-derivation function","kdf",o)}function Go(t,e,r){if(To(t)){r&&r(0);const n=Io(t,e);return r&&r(1),Promise.resolve(n)}return Po(t)?function(t,e,r){return Fo(this,void 0,void 0,function*(){const n=JSON.parse(t);return Uo(n,yield jo(n,e,zo,Ro.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function Ho(t,e){if(To(t))return Io(t,e);if(Po(t))return function(t,e){const r=JSON.parse(t);return Uo(r,jo(r,e,qo,Ro.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Wo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ko=new y("wallet/5.8.0");class $o extends _n{constructor(t,e){if(super(),null!=(r=t)&&I(r.privateKey,32)&&null!=r.address){const e=new Zi(t.privateKey);if(ut(this,"_signingKey",()=>e),ut(this,"address",ls(this.publicKey)),this.address!==ye(t.address)&&Ko.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ut(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||so,locale:e.locale||"en"}));const r=this.mnemonic;ls(oo.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Ko.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ut(this,"_mnemonic",()=>null)}else{if(Zi.isSigningKey(t))"secp256k1"!==t.curve&&Ko.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ut(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Zi(t);ut(this,"_signingKey",()=>e)}ut(this,"_mnemonic",()=>null),ut(this,"address",ls(this.publicKey))}var r;e&&!En.isProvider(e)&&Ko.throwArgumentError("invalid provider","provider",e),ut(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new $o(this,t)}signTransaction(t){return ft(t).then(e=>{null!=e.from&&(ye(e.from)!==this.address&&Ko.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(ee(gs(e)));return gs(e,r)})}signMessage(t){return Wo(this,void 0,void 0,function*(){return L(this._signingKey().signDigest(Kr(t)))})}_signTypedData(t,e,r){return Wo(this,void 0,void 0,function*(){const n=yield cn.resolveNames(t,e,r,t=>(null==this.provider&&Ko.throwError("cannot resolve ENS names without a provider",y.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return L(this._signingKey().signDigest(cn.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ye(t.address)!==ls(t.privateKey))throw new Error("address/privateKey mismatch");if(Do(t)){const e=t.mnemonic;if(oo.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||so).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=S(t.privateKey),s=ko(e);let o=null,a=null,l=null;if(Do(t)){const e=t.mnemonic;o=S(lo(e.phrase,e.locale||"en")),a=e.path||so,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let h=null;h=r.salt?S(r.salt):po(32);let u=null;if(r.iv){if(u=S(r.iv),16!==u.length)throw new Error("invalid iv")}else u=po(16);let d=null;if(r.uuid){if(d=S(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=po(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Ro.scrypt(s,h,f,p,m,64,n).then(e=>{const r=(e=S(e)).slice(0,16),n=e.slice(16,32),s=e.slice(32,64),g=new wo.Counter(u),y=S(new wo.ModeOfOperation.ctr(r,g).encrypt(i)),v=ee(C([n,y])),w={address:t.address.substring(2).toLowerCase(),id:Co(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:P(u).substring(2)},ciphertext:P(y).substring(2),kdf:"scrypt",kdfparams:{salt:P(h).substring(2),n:f,dklen:32,p:m,r:p},mac:v.substring(2)}};if(o){const t=po(16),e=new wo.Counter(t),r=S(new wo.ModeOfOperation.ctr(s,e).encrypt(o)),n=new Date,i=n.getUTCFullYear()+"-"+Ao(n.getUTCMonth()+1,2)+"-"+Ao(n.getUTCDate(),2)+"T"+Ao(n.getUTCHours(),2)+"-"+Ao(n.getUTCMinutes(),2)+"-"+Ao(n.getUTCSeconds(),2)+".0Z";w["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+w.address,mnemonicCounter:P(t).substring(2),mnemonicCiphertext:P(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(w)})}(this,t,e,r)}static createRandom(t){let e=po(16);t||(t={}),t.extraEntropy&&(e=S(B(ee(C([e,t.extraEntropy])),0,16)));const r=co(e,t.locale);return $o.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Go(t,e,r).then(t=>new $o(t))}static fromEncryptedJsonSync(t,e){return new $o(Ho(t,e))}static fromMnemonic(t,e,r){return e||(e=so),new $o(oo.fromMnemonic(t,null,r).derivePath(e))}}const Vo=new y("networks/5.8.0");function Jo(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const s=new e.PocketProvider(t,r.pocket);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],s=new e.AnkrProvider(t,r.ankr);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return Jo(t)},e}function Qo(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Qo(t,e)},r}const Yo={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Jo("homestead")},Xo={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Jo("ropsten")},Zo={chainId:63,name:"classicMordor",_defaultProvider:Qo("https://www.ethercluster.com/mordor","classicMordor")},ta={unspecified:{chainId:0,name:"unspecified"},homestead:Yo,mainnet:Yo,morden:{chainId:2,name:"morden"},ropsten:Xo,testnet:Xo,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Jo("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Jo("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Jo("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Jo("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Jo("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Qo("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Zo,classicTestnet:Zo,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Qo("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Jo("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Jo("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Jo("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function ea(t){if(null==t)return null;if("number"==typeof t){for(const e in ta){const r=ta[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=ta[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=ta[t.name];if(!e)return"number"!=typeof t.chainId&&Vo.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Vo.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ra=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};function na(t,e){return ra(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),s={};return n.headers.forEach?n.headers.forEach((t,e)=>{s[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{s[t.toLowerCase()]=n.headers.get(t)}),{headers:s,statusCode:n.status,statusMessage:n.statusText,body:S(new Uint8Array(i))}})}var ia=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const sa=new y("web/5.8.0");function oa(t){return new Promise(e=>{setTimeout(e,t)})}function aa(t,e){if(null==t)return null;if("string"==typeof t)return t;if(E(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ye(t)}catch(t){}return P(t)}return t}function la(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;sa.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,s="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;sa.assertArgument(s>0&&s%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",s);const o="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let h=!1,u=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||sa.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(u=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(h=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&sa.throwError("basic authentication requires a secure https url",y.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+wr(Ve(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=mt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?vr(f[3]):(p=f[3],Ve(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){sa.throwError("processing response error",y.errors.SERVER_ERROR,{body:aa(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const g=function(){let t=null;return{promise:new Promise(function(e,r){u&&(t=setTimeout(()=>{null!=t&&(t=null,r(sa.makeError("timeout",y.errors.TIMEOUT,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,timeout:u,url:l})))},u))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),v=function(){return ia(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield na(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):s*parseInt(String(Math.random()*Math.pow(2,t))),yield oa(r);continue}}}catch(t){e=t.response,null==e&&(g.cancel(),sa.throwError("missing response",y.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(h&&304===e.statusCode?a=null:!o&&(e.statusCode<200||e.statusCode>=300)&&(g.cancel(),sa.throwError("bad response",y.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:aa(a,e.headers?e.headers["content-type"]:null),requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return g.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=s*parseInt(String(Math.random()*Math.pow(2,t)));yield oa(e);continue}}g.cancel(),sa.throwError("processing response error",y.errors.SERVER_ERROR,{body:aa(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})}return g.cancel(),a}return sa.throwError("failed response",y.errors.SERVER_ERROR,{requestBody:aa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,v])}function ca(t,e,r){let n=null;if(null!=e){n=Ve(e);const r="string"==typeof t?{url:t}:mt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=mt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return la(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Ye(t))}catch(e){sa.throwError("invalid JSON",y.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ha(t,e){return e||(e={}),null==(e=mt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,s=!1;const o=()=>!s&&(s=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{o()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)o()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!s){if(l++,l>a)return void(o()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){o()&&n(t)})}()})}var ua,da;var fa=function(){if(da)return ua;da=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function s(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var s=t.charCodeAt(r);e=i(e)^31&s}return e}function o(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),o=t.toUpperCase();if(t!==n&&t!==o)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var h=s(l);if("string"==typeof h)return h;for(var u=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;h=i(h)^p,d+6>=c.length||u.push(p)}return 1!==h?"Invalid checksum for "+t:{prefix:l,words:u}}function a(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],s+=e;s>=r;)s-=r,a.push(i>>s&o);if(n)s>0&&a.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return a}return ua={decodeUnsafe:function(){var t=o.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=o.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var o=s(e=e.toLowerCase());if("string"==typeof o)throw new Error(o);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");o=i(o)^c,a+=t.charAt(c)}for(l=0;l<6;++l)o=i(o);for(o^=1,l=0;l<6;++l){a+=t.charAt(o>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},ua}(),pa=n(fa);const ma="providers/5.8.0",ga=new y(ma);class ya{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),s=this.hash.bind(this),o=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:s,type:l,accessList:ya.allowNull(this.accessList.bind(this),null),blockHash:ya.allowNull(s,null),blockNumber:ya.allowNull(a,null),transactionIndex:ya.allowNull(a,null),confirmations:ya.allowNull(a,null),from:e,gasPrice:ya.allowNull(r),maxPriorityFeePerGas:ya.allowNull(r),maxFeePerGas:ya.allowNull(r),gasLimit:r,to:ya.allowNull(e,null),value:r,nonce:a,data:i,r:ya.allowNull(this.uint256),s:ya.allowNull(this.uint256),v:ya.allowNull(a),creates:ya.allowNull(e,null),raw:ya.allowNull(i)},t.transactionRequest={from:ya.allowNull(e),nonce:ya.allowNull(a),gasLimit:ya.allowNull(r),gasPrice:ya.allowNull(r),maxPriorityFeePerGas:ya.allowNull(r),maxFeePerGas:ya.allowNull(r),to:ya.allowNull(e),value:ya.allowNull(r),data:ya.allowNull(t=>this.data(t,!0)),type:ya.allowNull(a),accessList:ya.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:s,address:e,topics:ya.arrayOf(s),data:i,logIndex:a,blockHash:s},t.receipt={to:ya.allowNull(this.address,null),from:ya.allowNull(this.address,null),contractAddress:ya.allowNull(e,null),transactionIndex:a,root:ya.allowNull(o),gasUsed:r,logsBloom:ya.allowNull(i),blockHash:s,transactionHash:s,logs:ya.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:ya.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:ya.allowNull(r),status:ya.allowNull(a),type:l},t.block={hash:ya.allowNull(s),parentHash:s,number:a,timestamp:a,nonce:ya.allowNull(o),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:ya.allowNull(e),extraData:i,transactions:ya.allowNull(ya.arrayOf(s)),baseFeePerGas:ya.allowNull(r)},t.blockWithTransactions=mt(t.block),t.blockWithTransactions.transactions=ya.allowNull(ya.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:ya.allowNull(n,void 0),toBlock:ya.allowNull(n,void 0),blockHash:ya.allowNull(s,void 0),address:ya.allowNull(e,void 0),topics:ya.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:ya.allowNull(a),blockHash:ya.allowNull(s),transactionIndex:a,removed:ya.allowNull(this.boolean.bind(this)),address:e,data:ya.allowFalsish(i,"0x"),topics:ya.arrayOf(s),transactionHash:s,logIndex:a},t}accessList(t){return ds(t||[])}number(t){return"0x"===t?0:W.from(t).toNumber()}type(t){return"0x"===t||null==t?0:W.from(t).toNumber()}bigNumber(t){return W.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),I(t))?t.toLowerCase():ga.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ye(t)}callAddress(t){if(!I(t,32))return null;const e=ye(B(t,12));return e===Pe?null:e}contractAddress(t){return ve(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||I(t))return R(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==N(r)?ga.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=W.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!I(t))throw new Error("invalid uint256");return O(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=ya.check(e,t);return n._difficulty=null==r?null:W.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return ya.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&W.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=ya.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;I(r)&&(r=W.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),I(r)&&(r=W.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return vs(t)}receiptLog(t){return ya.check(this.formats.receiptLog,t)}receipt(t){const e=ya.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=W.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&ga.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):ga.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&ga.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return ya.check(this.formats.filter,t)}filterLog(t){return ya.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function va(t){return t&&"function"==typeof t.isCommunityResource}function wa(t){return va(t)&&t.isCommunityResource()}let ba=!1;function Ea(){ba||(ba=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Aa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const ka=new y(ma);function Sa(t){return null==t?"null":(32!==N(t)&&ka.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Ca(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[Sa(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return Sa(t)}).join("&")}function _a(t){if("string"==typeof t){if(32===N(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Ca(t);if(bn.isForkEvent(t))throw ka.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Ca(t.topics||[])}throw new Error("invalid event - "+t)}function xa(){return(new Date).getTime()}function Ia(t){return new Promise(e=>{setTimeout(e,t)})}const Ta=["block","network","pending","poll"];class Pa{constructor(t,e,r){ut(this,"tag",t),ut(this,"listener",e),ut(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Ta.indexOf(this.tag)>=0}}const Na={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Ba(t){return O(W.from(t).toHexString(),32)}function Ma(t){return Os.encode(C([t,B(qs(qs(t)),0,4)]))}const Ra=new RegExp("^(ipfs)://(.*)$","i"),Fa=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ra,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function Oa(t,e){try{return Ye(Da(t,e))}catch(t){}return null}function Da(t,e){if("0x"===t)return null;const r=W.from(B(t,e,e+32)).toNumber(),n=W.from(B(t,r,r+32)).toNumber();return B(t,r+32,r+32+n)}function La(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):ka.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function Ua(t){const e=S(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function qa(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function za(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=S(t[n]);e[n]=Ua(r),e.push(Ua(i.length)),e.push(qa(i)),r+=32+32*Math.ceil(i.length/32)}return M(e)}class ja{constructor(t,e,r,n){ut(this,"provider",t),ut(this,"name",r),ut(this,"address",t.formatter.address(e)),ut(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>W.from(t).eq(1)).catch(t=>{if(t.code===y.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Aa(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:M([t,Hr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=M(["0x9061b923",za([Wr(this.name),r.data])]));try{let t=yield this.provider.call(r);return S(t).length%32==4&&ka.throwError("resolver threw error",y.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Da(t,0)),t}catch(t){if(t.code===y.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Aa(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Da(r,0):null})}_getAddress(t,e){const r=Na[String(t)];if(null==r&&ka.throwError(`unsupported coin type: ${t}`,y.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=S(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(C([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(C([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=pa.toWords(n.slice(2));return t.unshift(e),pa.encode(r.prefix,t)}}return null}getAddress(t){return Aa(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===Ue?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===y.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Ba(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&ka.throwError("invalid or unsupported coin data",y.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Aa(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Fa.length;r++){const n=e.match(Fa[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:La(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const s=this._resolvedAddress||(yield this.getAddress()),o=(n[2]||"").split("/");if(2!==o.length)return null;const a=yield this.provider.formatter.address(o[0]),l=O(W.from(o[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:M(["0x6352211e",l])}));if(s!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=W.from(yield this.provider.call({to:a,data:M(["0x00fdd58e",O(s,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(o[0]),data:M([r,l])};let h=Oa(yield this.provider.call(c),0);if(null==h)return null;t.push({type:"metadata-url-base",content:h}),"erc1155"===i&&(h=h.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:h})),h.match(/^ipfs:/i)&&(h=La(h)),t.push({type:"metadata-url",content:h});const u=yield ca(h);if(!u)return null;t.push({type:"metadata",content:JSON.stringify(u)});let d=u.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Ra))return null;t.push({type:"url-ipfs",content:d}),d=La(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Aa(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Os.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Os.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+wr("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return ka.throwError("invalid or unsupported content hash data",y.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Aa(this,void 0,void 0,function*(){let e=Ve(t);e=C([Ba(64),Ba(e.length),e]),e.length%32!=0&&(e=C([e,O("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",P(e));return null==r||"0x"===r?null:Ye(r)})}}let Ga=null,Ha=1;class Wa extends En{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ut(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=dt(new.target,"getNetwork")(t);e?(ut(this,"_network",e),this.emit("network",e,null)):ka.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Aa(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||ka.throwError("no network detected",y.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ut(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ha(()=>this._ready().then(t=>t,t=>{if(t.code!==y.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Ga&&(Ga=new ya),Ga}static getNetwork(t){return ea(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Aa(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),s=[];for(let t=0;t<r.length;t++){const e=r[t],o=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield ca({url:o,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return ka.throwError(`response not found during CCIP fetch: ${c}`,y.errors.SERVER_ERROR,{url:e,errorMessage:c});s.push(c)}return ka.throwError(`error encountered during CCIP fetch: ${s.map(t=>JSON.stringify(t)).join(", ")}`,y.errors.SERVER_ERROR,{urls:r,errorMessages:s})})}_getInternalBlockNumber(t){return Aa(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(xa()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=xa(),r=ft({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=xa();return(t=W.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Aa(this,void 0,void 0,function*(){const t=Ha++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)ka.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",ka.makeError("network block skew detected",y.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const s=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(s)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Aa(this,void 0,void 0,function*(){return ka.throwError("provider does not support network detection",y.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Aa(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield Ia(0),this._network;const r=ka.makeError("underlying network changed",y.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=xa();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=xa(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Aa(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Aa(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,s)=>{const o=[];let a=!1;const l=function(){return!!a||(a=!0,o.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),o.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=o=>Aa(this,void 0,void 0,function*(){a||(yield Ia(1e3),this.getTransactionCount(n.from).then(h=>Aa(this,void 0,void 0,function*(){if(!a){if(h<=n.nonce)r=o;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=o;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const o=r.transactions[i];if(o.hash===t)return;if(o.from===n.from&&o.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(o.hash,e);if(l())return;let i="replaced";return o.data===n.data&&o.to===n.to&&o.value.eq(n.value)?i="repriced":"0x"===o.data&&o.from===o.to&&o.value.isZero()&&(i="cancelled"),void s(ka.makeError("transaction was replaced",y.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(o),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),o.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||s(ka.makeError("timeout exceeded",y.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),o.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Aa(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return W.from(t)}catch(e){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield ft({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return W.from(n)}catch(t){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield ft({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return W.from(n).toNumber()}catch(t){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield ft({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return P(n)}catch(t){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield ft({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>R(t))}),i=yield this.perform("getStorageAt",n);try{return P(i)}catch(t){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==N(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&ka.throwError("Transaction hash mismatch from Provider.sendTransaction.",y.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Aa(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const s=yield this._waitForTransaction(t.hash,e,n,i);return null==s&&0===e?null:(this._emitted["t:"+t.hash]=s.blockNumber,0===s.status&&ka.throwError("transaction failed",y.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:s}),s)}),n}sendTransaction(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>P(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Aa(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?W.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?P(t):null))}),this.formatter.transactionRequest(yield ft(r))})}_getFilter(t){return Aa(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield ft(e))})}_call(t,e,r){return Aa(this,void 0,void 0,function*(){r>=10&&ka.throwError("CCIP read exceeded maximum redirections",y.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&N(i)%32==4)try{const s=B(i,4),o=B(s,0,32);W.from(o).eq(n)||ka.throwError("CCIP Read sender did not match",y.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=W.from(B(s,32,64)).toNumber(),c=W.from(B(s,l,l+32)).toNumber(),h=B(s,l+32);for(let e=0;e<c;e++){const r=Oa(h,32*e);null==r&&ka.throwError("CCIP Read contained corrupt URL string",y.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const u=Da(s,64);W.from(B(s,100,128)).isZero()||ka.throwError("CCIP Read callback selector included junk",y.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=B(s,96,100),f=Da(s,128),p=yield this.ccipReadFetch(t,u,a);null==p&&ka.throwError("CCIP Read disabled or provided no URLs",y.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:M([d,za([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===y.errors.SERVER_ERROR)throw t}try{return P(i)}catch(r){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield ft({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield ft({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return W.from(r)}catch(t){return ka.throwError("bad result from backend",y.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Aa(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&ka.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&ka.throwError("ENS name not configured",y.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(I(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),I(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){ka.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return ha(()=>Aa(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ha(()=>Aa(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ha(()=>Aa(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Aa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield ft({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),ya.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Aa(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Aa(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&ka.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Aa(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new ja(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Aa(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||ka.throwError("network does not support ENS",y.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+Hr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Aa(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(I(t))throw e}"string"!=typeof t&&ka.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Aa(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=Oa(yield this.call({to:r,data:"0x691f3431"+Hr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Aa(this,void 0,void 0,function*(){let e=null;if(I(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new ja(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==y.errors.CALL_EXCEPTION)throw t}try{const t=Oa(yield this.call({to:n,data:"0x691f3431"+Hr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==y.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return ka.throwError(t+" not implemented",y.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Pa(_a(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=_a(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=_a(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=_a(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=_a(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=_a(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ka=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const $a=new y(ma),Va=["call","estimateGas"];function Ja(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=I(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=Ja(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return Ja(JSON.parse(t),e)}catch(t){}return null}function Qa(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ja(e,!0);if(t)return t.data;$a.throwError("missing revert data in call exception; Transaction reverted without a reason string",y.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=Ja(e.body,!1);null==r&&(r=Ja(e,!1)),r&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",y.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===y.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&$a.throwError("insufficient funds for intrinsic transaction cost",y.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&$a.throwError("nonce has already been used",y.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&$a.throwError("replacement fee too low",y.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&$a.throwError("legacy pre-eip-155 transactions not supported",y.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Va.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",y.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Ya(t){return new Promise(function(e){setTimeout(e,t)})}function Xa(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Za(t){return t?t.toLowerCase():t}const tl={};class el extends _n{constructor(t,e,r){if(super(),t!==tl)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ut(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ut(this,"_address",this.provider.formatter.address(r)),ut(this,"_index",null)):"number"==typeof r?(ut(this,"_index",r),ut(this,"_address",null)):$a.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return $a.throwError("cannot alter JSON-RPC Signer connection",y.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new rl(tl,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&$a.throwError("unknown account #"+this._index,y.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=mt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=mt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ka(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&$a.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),ft({tx:ft(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&$a.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected transaction",y.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Qa("sendTransaction",t,n)))})}signTransaction(t){return $a.throwError("signing transactions is unsupported",y.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ka(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield ha(()=>Ka(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[P(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",y.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),P(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",y.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ka(this,void 0,void 0,function*(){const n=yield cn.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(cn.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected signing",y.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ka(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class rl extends el{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const nl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class il extends Wa{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=dt(this.constructor,"defaultUrl")()),ut(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(mt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ka(this,void 0,void 0,function*(){yield Ya(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=dt(this.constructor,"getNetwork");try{return e(W.from(t).toNumber())}catch(e){return $a.throwError("could not detect network",y.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return $a.throwError("could not detect network",y.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new el(tl,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:wt(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=ca(this.connection,JSON.stringify(r),Xa).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Za(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Za(e.address),e.blockTag]];case"getCode":return["eth_getCode",[Za(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Za(e.address),O(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[dt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[dt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=Za(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ka(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&W.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=mt(e)).transaction=mt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&$a.throwError(t+" not implemented",y.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Qa(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Ya(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=mt(nl);if(e)for(const t in e)e[t]&&(r[t]=!0);pt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=R(W.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=P(t[e]))}),t.accessList&&(n.accessList=ds(t.accessList)),n}}let sl=null;try{if(sl=WebSocket,null==sl)throw new Error("inject please")}catch(t){const e=new y(ma);sl=function(){e.throwError("WebSockets not supported in this environment",y.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ol=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const al=new y(ma);let ll=1;class cl extends il{constructor(t,e){"any"===e&&al.throwError("WebSocketProvider does not support 'any' network yet",y.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ut(this,"_websocket","string"==typeof t?new sl(this.connection.url):t),ut(this,"_requests",{}),ut(this,"_subs",{}),ut(this,"_subIds",{}),ut(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),ut(t,"code",r.error.code||null),ut(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){al.throwError("cannot reset events block on WebSocketProvider",y.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){al.throwError("cannot set polling interval on WebSocketProvider",y.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ol(this,void 0,void 0,function*(){return null})}set polling(t){t&&al.throwError("cannot set polling on WebSocketProvider",y.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=ll++;return new Promise((n,i)=>{const s=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(s),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:s},this._wsReady&&this.websocket.send(s)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ol(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=W.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ol(this,void 0,void 0,function*(){this.websocket.readyState===sl.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var hl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const ul=new y(ma);class dl extends il{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return hl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||ul.throwError("no network detected",y.errors.UNKNOWN_ERROR,{}),null==this._network&&(ut(this,"_network",e),this.emit("network",e,null))),e})}}class fl extends dl{constructor(t,e){ul.checkAbstract(new.target,fl),t=dt(new.target,"getNetwork")(t),e=dt(new.target,"getApiKey")(e);super(dt(new.target,"getUrl")(t,e),t),"string"==typeof e?ut(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ut(this,t,e[t])})}_startPending(){ul.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return ul.throwError("API provider does not support signing",y.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return ul.throwError("not implemented; sub-classes must override getUrl",y.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const pl=new y(ma),ml="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class gl extends cl{constructor(t,e){const r=new yl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ut(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===ml}}class yl extends fl{static getWebSocketProvider(t,e){return new gl(t,e)}static getApiKey(t){return null==t?ml:(t&&"string"!=typeof t&&pl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:pl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===ml&&Ea(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===ml}}const vl=new y(ma),wl="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function bl(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return vl.throwArgumentError("unsupported network","name",t)}class El extends fl{isCommunityResource(){return this.apiKey===wl}static getApiKey(t){return null==t?wl:t}static getUrl(t,e){null==e&&(e=wl);const r={allowGzip:!0,url:"https://"+bl(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===wl&&Ea(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var Al=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const kl=new y(ma);class Sl extends fl{static getApiKey(t){return null!=t&&kl.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else kl.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Al(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Cl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const _l=new y(ma);function xl(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?R(P(n)):"accessList"===r?"["+ds(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":P(n),e[r]=n)}return e}function Il(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Tl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Pl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Nl(t,e,r){if("call"===t&&e.code===y.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),I(r))return r;_l.throwError("missing revert data in call exception",y.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===y.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&_l.throwError("insufficient funds for intrinsic transaction cost",y.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&_l.throwError("nonce has already been used",y.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&_l.throwError("replacement fee too low",y.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&_l.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",y.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Bl extends Wa{constructor(t,e){super(t),ut(this,"baseUrl",this.getBaseUrl()),ut(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return _l.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Cl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,s="proxy"===t?Tl:Il;this.emit("debug",{action:"request",request:n,provider:this});const o={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&Ea(),Promise.resolve(!0))};let a=null;i&&(o.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield ca(o,a,s||Tl);return this.emit("debug",{action:"response",request:n,response:wt(l),provider:this}),l})}detectNetwork(){return Cl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Cl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Nl("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=xl(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Nl("call",t,e.transaction)}}case"estimateGas":{const t=xl(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Nl("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Pl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Pl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&_l.throwError("unsupported topic count",y.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||_l.throwError("unsupported topic format",y.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Cl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Ml=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Rl=new y(ma);function Fl(){return(new Date).getTime()}function Ol(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Rl.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Dl(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function Ll(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(W.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>Ll(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":Ll(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let Ul=1;function ql(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const zl=[y.errors.CALL_EXCEPTION,y.errors.INSUFFICIENT_FUNDS,y.errors.NONCE_EXPIRED,y.errors.REPLACEMENT_UNDERPRICED,y.errors.UNPREDICTABLE_GAS_LIMIT],jl=["address","args","errorArgs","errorSignature","method","transaction"];function Gl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function Hl(t,e,r){let n=Ll;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Dl(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Dl(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=mt(t)).confirmations=-1,Ll(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=mt(t)).transactions=t.transactions.map(t=>((t=mt(t)).confirmations=-1,t)),Ll(t))}:function(t){return null==t?null:Ll(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Wl(t,e){return Ml(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:ha(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Kl(t,e,r,n){return Ml(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&I(n.blockTag)&&(i=yield Wl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&I(n.blockTag)&&(i=yield Wl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&I(n.blockTag)&&(i=yield Wl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&I(n.blockTag)&&(i=yield Wl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&I(r.fromBlock)||r.toBlock&&I(r.toBlock))&&(i=yield Wl(t,e)),i.getLogs(r)}}return Rl.throwError("unknown method error",y.errors.UNKNOWN_ERROR,{method:r,params:n})})}class $l extends Wa{constructor(t,e){0===t.length&&Rl.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(En.isProvider(t)){const e=wa(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=mt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=wa(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Rl.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Rl.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Ol(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ut(this,"providerConfigs",Object.freeze(r)),ut(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Ml(this,void 0,void 0,function*(){return Ol(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Ml(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=Hl(this,t,e),n=mo(this.providerConfigs.map(mt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let s=0,o=!0;for(;;){const a=Fl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&s<n.length;){const r=n[s++],o=Ul++;r.start=Fl(),r.staller=ql(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Kl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Gl(r,Fl()),request:{method:t,params:wt(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Gl(r,Fl()),request:{method:t,params:wt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Gl(r,null),request:{method:t,params:wt(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const h=n.filter(t=>t.done&&null==t.error);if(h.length>=this.quorum){const t=r(h);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;o||(yield ql(100).getPromise()),o=!1}const u=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return zl.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(u).forEach(t=>{const e=u[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};jl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Rl.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Rl.throwError("failed to meet quorum",y.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Gl(t)),provider:this})})}}const Vl=new y(ma),Jl="84842078b09946638c03157f83405213";class Ql extends cl{constructor(t,e){const r=new Yl(t,e),n=r.connection;n.password&&Vl.throwError("INFURA WebSocket project secrets unsupported",y.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ut(this,"apiKey",r.projectId),ut(this,"projectId",r.projectId),ut(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Jl}}class Yl extends fl{static getWebSocketProvider(t,e){return new Ql(t,e)}static getApiKey(t){const e={apiKey:Jl,projectId:Jl,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Vl.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Vl.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Vl.throwError("unsupported network",y.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Jl&&Ea(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Jl}}const Xl=new y(ma);class Zl extends fl{static getApiKey(t){return t&&"string"!=typeof t&&Xl.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){Xl.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Xl.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const tc=new y(ma),ec="62e1ad51b37b8e00394bda3b";class rc extends fl{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=ec:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:tc.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:tc.throwError("unsupported network",y.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===ec}}const nc=new y(ma);class ic extends fl{static getApiKey(t){return t&&"string"!=typeof t&&nc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:nc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const sc=new y(ma);let oc=1;function ac(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:oc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:wt(i),provider:this}),e(i,(e,s)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:s,provider:this}),s.error){const t=new Error(s.error.message);return t.code=s.error.code,t.data=s.error.data,n(t)}t(s.result)})})}}class lc extends il{constructor(t,e){null==t&&sc.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:wt(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=ac(0,t.sendAsync.bind(t)):t.send?n=ac(0,t.send.bind(t)):sc.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ut(this,"jsonRpcFetchFunc",n),ut(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const cc=new y(ma);function hc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new il(t);case"ws":case"wss":return new cl(t);default:cc.throwArgumentError("unsupported URL scheme","network",t)}}const r=ea(t);return r&&r._defaultProvider||cc.throwError("unsupported getDefaultProvider network",y.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:$l,AlchemyProvider:yl,AnkrProvider:El,CloudflareProvider:Sl,EtherscanProvider:Bl,InfuraProvider:Yl,JsonRpcProvider:il,NodesmithProvider:Zl,PocketProvider:rc,QuickNodeProvider:ic,Web3Provider:lc,IpcProvider:null},e)}var uc=Object.freeze({__proto__:null,AlchemyProvider:yl,AlchemyWebSocketProvider:gl,AnkrProvider:El,BaseProvider:Wa,CloudflareProvider:Sl,EtherscanProvider:Bl,FallbackProvider:$l,Formatter:ya,InfuraProvider:Yl,InfuraWebSocketProvider:Ql,IpcProvider:null,JsonRpcBatchProvider:class extends il{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:wt(e),provider:this}),ca(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:il,JsonRpcSigner:el,NodesmithProvider:Zl,PocketProvider:rc,Provider:En,QuickNodeProvider:ic,Resolver:ja,StaticJsonRpcProvider:dl,UrlJsonRpcProvider:fl,Web3Provider:lc,WebSocketProvider:cl,getDefaultProvider:hc,getNetwork:ea,isCommunityResourcable:va,isCommunityResource:wa,showThrottleMessage:Ea});const dc=new RegExp("^bytes([0-9]+)$"),fc=new RegExp("^(u?int)([0-9]*)$"),pc=new RegExp("^(.*)\\[([0-9]*)\\]$"),mc=new y("solidity/5.8.0");function gc(t,e,r){switch(t){case"address":return r?x(e,32):S(e);case"string":return Ve(e);case"bytes":return S(e);case"bool":return e=e?"0x01":"0x00",r?x(e,32):S(e)}let n=t.match(fc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&mc.throwArgumentError("invalid number type","type",t),r&&(i=256),x(e=W.from(e).toTwos(i),i/8)}if(n=t.match(dc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&mc.throwArgumentError("invalid bytes type","type",t),S(e).byteLength!==i&&mc.throwArgumentError(`invalid value for ${t}`,"value",e),r?S((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(pc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&mc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(gc(r,t,!0))}),C(i)}return mc.throwArgumentError("invalid type","type",t)}function yc(t,e){t.length!=e.length&&mc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(gc(t,e[n]))}),P(C(r))}const vc=new y("units/5.8.0"),wc=["wei","kwei","mwei","gwei","szabo","finney","ether"];function bc(t,e){if("string"==typeof e){const t=wc.indexOf(e);-1!==t&&(e=3*t)}return nt(t,null!=e?e:18)}function Ec(t,e){if("string"!=typeof t&&vc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=wc.indexOf(e);-1!==t&&(e=3*t)}return it(t,null!=e?e:18)}function Ac(t){return bc(t,18)}function kc(t){return Ec(t,18)}var Sc=Object.freeze({__proto__:null,AbiCoder:pr,ConstructorFragment:Dt,ErrorFragment:qt,EventFragment:Mt,FormatTypes:It,Fragment:Bt,FunctionFragment:Lt,HDNode:oo,Indexed:pn,Interface:yn,LogDescription:un,Logger:y,ParamType:Pt,RLP:he,SigningKey:Zi,get SupportedAlgorithm(){return Ds},TransactionDescription:dn,get TransactionTypes(){return ns},get UnicodeNormalizationForm(){return Ge},Utf8ErrorFuncs:Ke,get Utf8ErrorReason(){return He},_TypedDataEncoder:cn,_fetchData:la,_toEscapedUtf8String:function(t,e){return'"'+$e(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?Je(t):Je(55296+((t-=65536)>>10&1023))+Je(56320+(1023&t))}).join("")+'"'},accessListify:ds,arrayify:S,base58:Os,base64:br,checkProperties:pt,checkResultErrors:Kt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&vc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const s=[];for(;r.length;){if(r.length<=3){s.unshift(r);break}{const t=r.length-3;s.unshift(r.substring(t)),r=r.substring(0,t)}}return n+s.join(",")+i},computeAddress:ls,computeHmac:zs,computePublicKey:es,concat:C,deepCopy:wt,defaultAbiCoder:mr,defaultPath:so,defineReadOnly:ut,dnsEncode:Wr,entropyToMnemonic:co,fetchJson:ca,formatBytes32String:function(t){const e=Ve(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return P(C([e,Ue]).slice(0,32))},formatEther:Ac,formatUnits:bc,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=Xs||t%1)&&Js.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ye,getContractAddress:ve,getCreate2Address:function(t,e,r){return 32!==N(e)&&ue.throwArgumentError("salt must be 32 bytes","salt",e),32!==N(r)&&ue.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ye(B(ee(C(["0xff",ye(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ye(t).substring(2),new q(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+ge("XE00"+e)+e},getJsonWalletAddress:function(t){if(To(t))try{return ye(JSON.parse(t).ethaddr)}catch(t){return null}if(Po(t))try{return ye(JSON.parse(t).address)}catch(t){return null}return null},getStatic:dt,hashMessage:Kr,hexConcat:M,hexDataLength:N,hexDataSlice:B,hexStripZeros:F,hexValue:R,hexZeroPad:O,hexlify:P,id:gr,isAddress:function(t){try{return ye(t),!0}catch(t){}return!1},isBytes:k,isBytesLike:E,isHexString:I,isValidMnemonic:function(t,e){try{return lo(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Gr(t).length}catch(t){}return!1},joinSignature:L,keccak256:ee,mnemonicToEntropy:lo,mnemonicToSeed:ao,namehash:Hr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=Xe(t);var r;r=e.map(t=>{if(nr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=er(t,ir);if(e)return[t+e.s];let r=sr[t];if(r)return r;let n=or[t];return n?[t+n[0]]:ar[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=Xe(Qe(e),Ge.NFKC),e.forEach(t=>{if(er(t,lr))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(er(t,rr))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Qe(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=S(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Ye(e.slice(0,r))},parseEther:kc,parseTransaction:vs,parseUnits:Ec,poll:ha,randomBytes:po,recoverAddress:cs,recoverPublicKey:ts,resolveProperties:ft,ripemd160:Us,serializeTransaction:gs,sha256:qs,sha512:function(t){return"0x"+fi.sha512().update(S(t)).digest("hex")},shallowCopy:mt,shuffled:mo,solidityKeccak256:function(t,e){return ee(yc(t,e))},solidityPack:yc,soliditySha256:function(t,e){return qs(yc(t,e))},splitSignature:D,stripZeros:_,toUtf8Bytes:Ve,toUtf8CodePoints:Xe,toUtf8String:Ye,verifyMessage:function(t,e){return cs(Kr(t),e)},verifyTypedData:function(t,e,r,n){return cs(cn.hash(t,e,r),n)},zeroPad:x});const Cc="ethers/5.8.0",_c=new y(Cc);var xc=Object.freeze({__proto__:null,BaseContract:Ms,BigNumber:W,Contract:Rs,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:k(e)?P(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!I(n)||n.length%2)&&bs.throwArgumentError("invalid bytecode","bytecode",e),r&&!_n.isSigner(r)&&bs.throwArgumentError("invalid signer","signer",r),ut(this,"bytecode",n),ut(this,"interface",dt(new.target,"getInterface")(t)),ut(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=mt(t.pop());for(const t in e)if(!Es[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&bs.throwError("cannot override "+t,y.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){W.from(e.value).isZero()||this.interface.deploy.payable||bs.throwError("non-payable constructor cannot override value",y.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return bs.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=P(C([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return ws(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),bs.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield ks(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),s=dt(this.constructor,"getContractAddress")(i),o=dt(this.constructor,"getContract")(s,this.interface,this.signer);return Cs(o,i),ut(o,"deployTransaction",i),o})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&bs.throwError("missing compiler output",y.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Rs.getInterface(t)}static getContractAddress(t){return ve(t)}static getContract(t,e,r){return new Rs(t,e,r)}},FixedNumber:ot,Signer:_n,VoidSigner:xn,Wallet:$o,Wordlist:Hs,constants:qe,get errors(){return m},getDefaultProvider:hc,logger:_c,providers:uc,utils:Sc,version:Cc,wordlists:Vs});try{const t=window;null==t._ethers&&(t._ethers=xc)}catch(t){}class Ic{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=xc,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new lc(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new lc(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new lc(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new il(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Rs(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Rs(i,r,this.provider),this.swapRouter=new Rs(this.swapRouterAddress,n,this.provider);const s=await this.getLiquidityPool();if(s&&"0x0000000000000000000000000000000000000000"!==s){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Rs(s,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new lc(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}getProvider(){return this.provider}getContract(t,e){if(!this.provider)throw new Error("Provider not initialized");return new Rs(t,e,this.provider)}async getChainId(){if(!this.provider)throw new Error("Provider not initialized");const t=await this.provider.getNetwork();return Number(t.chainId)}async getBlock(t){if(!this.provider)throw new Error("Provider not initialized");return this.provider.getBlock(t)}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=kc("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!W.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=kc(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=Ec(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),s=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",s),s}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return kc(t).toString()}formatEther(t){return parseFloat(Ac(t))}parseExec(t){return Ec(t,18).toString()}formatExec(t){return parseFloat(bc(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const s=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),o={type:"approve",id:n,receipt:s,amount:e};return this.activeTransactions.set(n,o),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",o),s}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],s=t,o=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,s,o],{useContract:"router",requiresSigner:!0}),h={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,h),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const s=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],o=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:s,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,s,o,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),h={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,h),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}}class Tc{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=xc,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(t={}){try{return console.log("Initializing WalletService..."),void 0!==window.ethereum?(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,this.setupEventListeners()):(console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected")),this.isInitialized=!0,t.autoReconnect&&await this.tryAutoConnect(),!0}catch(t){throw console.error("Error initializing WalletService:",t),t}}async tryAutoConnect(){try{if(void 0===window.ethereum)return null;const t=await window.ethereum.request({method:"eth_accounts"});if(!t||0===t.length)return console.log("[WalletService] No previously authorized accounts found"),null;console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();console.log("[WalletService] Detected wallet type:",e),await this.selectWallet(e);const r=await this.connect();return console.log("[WalletService] Auto-reconnected to:",r),r}catch(t){return console.warn("[WalletService] Auto-connect failed:",t.message),null}}_detectWalletType(){if(void 0===window.ethereum)return"metamask";if(window.ethereum.isRabby)return"rabby";if(window.ethereum.isRainbow)return"rainbow";if(window.phantom?.ethereum)return"phantom";const t=localStorage.getItem("ms2fun_lastWallet");return t&&this.providerMap[t]?t:"metamask"}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(t){try{if(t&&await this.selectWallet(t),!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let e;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),e=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}e=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",e),!e||!e[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=e[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}setConnectedState({address:t,provider:e,ethersProvider:r,signer:n,walletType:i="metamask"},s=!0){if(!t)throw new Error("setConnectedState requires an address");if(!e)throw new Error("setConnectedState requires a provider");this.provider=e,this.connectedAddress=t,this.connected=!0,this.selectedWallet=i,this.ethersProvider=r||new lc(e,"any"),this.signer=n||this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",i),console.log("[WalletService] State set programmatically:",t),s&&this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}handleNetworkChange(){this.provider&&(this.ethersProvider=new lc(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}}class Pc{constructor(t,e={}){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),e.eventInvalidation&&this.setupEventInvalidation(e.eventInvalidation),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}setupEventInvalidation(t){this.eventBus.on("indexer:newEvents",({eventType:e})=>{const r=t[e];r&&Array.isArray(r)&&this.invalidateByPattern(...r)})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),s=Date.now()+n;this.cache.set(i,{value:r,expiresAt:s,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}}class Nc{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,s,o,a,l,c,h,u,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:s,freeSupply:o,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:h||"0",exec:u||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),y=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),y&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}}const Bc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Mc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,...Bc]:Bc}function Rc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Fc(t){if(!Rc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Oc(t,e=0){if(!Rc(t))return t;const r=Mc();if(e<0||e>=r.length)return null;const n=Fc(t);return r[e]+n}function Dc(){return Mc()}var Lc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Rc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return clearTimeout(i),s}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Mc(),s=Fc(t),o=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+s,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),s}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";o.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+o.join("\n"))},getAvailableGateways:Dc,isIpfsUri:Rc,normalizeIpfsPath:Fc,resolveIpfsToHttp:Oc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class Uc{async initialize(t){throw new Error("StorageAdapter.initialize() must be implemented")}async putEvents(t){throw new Error("StorageAdapter.putEvents() must be implemented")}async getEvent(t,e){throw new Error("StorageAdapter.getEvent() must be implemented")}async queryEvents(t,e){throw new Error("StorageAdapter.queryEvents() must be implemented")}async countEvents(t,e){throw new Error("StorageAdapter.countEvents() must be implemented")}async deleteEvents(t,e){throw new Error("StorageAdapter.deleteEvents() must be implemented")}async deleteEventsAfterBlock(t){throw new Error("StorageAdapter.deleteEventsAfterBlock() must be implemented")}async getSyncState(){throw new Error("StorageAdapter.getSyncState() must be implemented")}async setSyncState(t){throw new Error("StorageAdapter.setSyncState() must be implemented")}async getVersion(){throw new Error("StorageAdapter.getVersion() must be implemented")}async setVersion(t){throw new Error("StorageAdapter.setVersion() must be implemented")}async clear(){throw new Error("StorageAdapter.clear() must be implemented")}async close(){throw new Error("StorageAdapter.close() must be implemented")}}class qc extends Uc{constructor(){super(),this.db=null,this.config=null,this.dbName=null}async initialize(t){this.config=t,this.dbName=t.dbName;const e=await this._getStoredVersion();return null!==e&&t.version>e&&(console.log(`[IndexedDBAdapter] Migrating from v${e} to v${t.version}`),await this._deleteDatabase()),new Promise((e,r)=>{const n=indexedDB.open(this.dbName,t.version);n.onerror=()=>{r(new Error(`Failed to open IndexedDB: ${n.error?.message}`))},n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=e=>{const r=e.target.result;this._createStores(r,t.eventTypes)}})}_createStores(t,e){for(const r of e){const e=`events_${r.name}`;if(!t.objectStoreNames.contains(e)){const n=t.createObjectStore(e,{keyPath:"id"});for(const t of r.indexedParams||[])n.createIndex(`param_${t}`,`indexed.${t}`,{unique:!1});n.createIndex("blockNumber","blockNumber",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1})}}t.objectStoreNames.contains("syncState")||t.createObjectStore("syncState",{keyPath:"id"}),t.objectStoreNames.contains("meta")||t.createObjectStore("meta",{keyPath:"key"})}async _getStoredVersion(){return new Promise(t=>{const e=indexedDB.open(this.dbName);e.onsuccess=()=>{const r=e.result,n=r.version;r.close(),t(n)},e.onerror=()=>t(null)})}async _deleteDatabase(){return new Promise((t,e)=>{this.db&&(this.db.close(),this.db=null);const r=indexedDB.deleteDatabase(this.dbName);r.onsuccess=()=>t(),r.onerror=()=>e(r.error)})}async putEvents(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");if(0===t.length)return;const e=new Map;for(const r of t)e.has(r.type)||e.set(r.type,[]),e.get(r.type).push(r);const r=[];for(const[t,n]of e)r.push(this._putEventsOfType(t,n));await Promise.all(r)}async _putEventsOfType(t,e){const r=`events_${t}`;return this.db.objectStoreNames.contains(r)||await this._addStore(t),new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.put(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async _addStore(t){const e=this.db.version;return this.db.close(),new Promise((r,n)=>{const i=indexedDB.open(this.dbName,e+1);i.onupgradeneeded=e=>{const r=e.target.result,n=`events_${t}`;if(!r.objectStoreNames.contains(n)){const t=r.createObjectStore(n,{keyPath:"id"});t.createIndex("blockNumber","blockNumber",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,r()},i.onerror=()=>n(i.error)})}async getEvent(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).get(e);i.onsuccess=()=>t(i.result||null),i.onerror=()=>n(i.error)}):null}async queryEvents(t,e={}){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).getAll();i.onsuccess=()=>{let r=i.result;e.where&&(r=r.filter(t=>this._matchesWhere(t,e.where)));const n=r.length,s=e.orderBy||"blockNumber",o=e.order||"desc";r.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100,c=r.slice(a,a+l);t({events:c,total:n,hasMore:a+l<n})},i.onerror=()=>n(i.error)}):{events:[],total:0,hasMore:!1}}async countEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r);if(e){const r=i.getAll();r.onsuccess=()=>{const n=r.result.filter(t=>this._matchesWhere(t,e)).length;t(n)},r.onerror=()=>n(r.error)}else{const e=i.count();e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}}):0}async deleteEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;if(this.db.objectStoreNames.contains(r))return new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.delete(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async deleteEventsAfterBlock(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const e=Array.from(this.db.objectStoreNames).filter(t=>t.startsWith("events_"));for(const r of e)await this._deleteEventsAfterBlockInStore(r,t)}async _deleteEventsAfterBlockInStore(t,e){return new Promise((r,n)=>{const i=this.db.transaction(t,"readwrite"),s=i.objectStore(t).index("blockNumber"),o=IDBKeyRange.lowerBound(e,!0);s.openCursor(o).onsuccess=t=>{const e=t.target.result;e&&(e.delete(),e.continue())},i.oncomplete=()=>r(),i.onerror=()=>n(i.error)})}async getSyncState(){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((t,e)=>{const r=this.db.transaction("syncState","readonly").objectStore("syncState").get("current");r.onsuccess=()=>t(r.result||null),r.onerror=()=>e(r.error)})}async setSyncState(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((e,r)=>{const n=this.db.transaction("syncState","readwrite").objectStore("syncState").put({id:"current",...t});n.onsuccess=()=>e(),n.onerror=()=>r(n.error)})}async getVersion(){return this.db?this.db.version:0}async setVersion(t){}async clear(){if(!this.db)return;const t=Array.from(this.db.objectStoreNames);return new Promise((e,r)=>{const n=this.db.transaction(t,"readwrite");for(const e of t)n.objectStore(e).clear();n.oncomplete=()=>e(),n.onerror=()=>r(n.error)})}async close(){this.db&&(this.db.close(),this.db=null)}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class zc extends Uc{constructor(){super(),this.stores=new Map,this.syncState=null,this.version=0,this.config=null}async initialize(t){this.config=t;for(const e of t.eventTypes)this.stores.set(e.name,new Map);t.version>this.version&&(await this.clear(),this.version=t.version)}async putEvents(t){for(const e of t){this.stores.get(e.type)||this.stores.set(e.type,new Map),this.stores.get(e.type).set(e.id,e)}}async getEvent(t,e){const r=this.stores.get(t);return r&&r.get(e)||null}async queryEvents(t,e={}){const r=this.stores.get(t);if(!r)return{events:[],total:0,hasMore:!1};let n=Array.from(r.values());e.where&&(n=n.filter(t=>this._matchesWhere(t,e.where)));const i=n.length,s=e.orderBy||"blockNumber",o=e.order||"desc";n.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100;return{events:n.slice(a,a+l),total:i,hasMore:a+l<i}}async countEvents(t,e){const r=this.stores.get(t);if(!r)return 0;if(!e)return r.size;let n=0;for(const t of r.values())this._matchesWhere(t,e)&&n++;return n}async deleteEvents(t,e){const r=this.stores.get(t);if(r)for(const t of e)r.delete(t)}async deleteEventsAfterBlock(t){for(const e of this.stores.values())for(const[r,n]of e.entries())n.blockNumber>t&&e.delete(r)}async getSyncState(){return this.syncState}async setSyncState(t){this.syncState={...t}}async getVersion(){return this.version}async setVersion(t){this.version=t}async clear(){for(const t of this.stores.values())t.clear();this.syncState=null}async close(){}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}const jc="mw3_indexer_settings",Gc={get(){try{const t=localStorage.getItem(jc);return t?JSON.parse(t):this.getDefaults()}catch{return this.getDefaults()}},getDefaults:()=>({storageEnabled:!0,maxStorageMB:50}),set(t){const e={...this.get(),...t};return localStorage.setItem(jc,JSON.stringify(e)),e},isStorageEnabled(){return this.get().storageEnabled},async clearAllData(){if("undefined"==typeof indexedDB)return;const t=(await(indexedDB.databases?.())||[]).filter(t=>t.name?.startsWith("micro-web3-events-")||t.name?.includes("colasseum-"));for(const e of t)await new Promise((t,r)=>{const n=indexedDB.deleteDatabase(e.name);n.onsuccess=t,n.onerror=r})},getStorageEstimate:async()=>navigator.storage?.estimate?navigator.storage.estimate():{used:0,quota:0}};class Hc{constructor(t,e){this.storage=t,this.eventBus=e,this.subscriptions=new Map,this.nextSubscriptionId=1}async query(t,e={}){return this.storage.queryEvents(t,{where:e.where,orderBy:e.orderBy||"blockNumber",order:e.order||"desc",limit:e.limit||100,offset:e.offset||0})}async get(t,e){return this.storage.getEvent(t,e)}subscribe(t,e){const r=Array.isArray(t)?t:[t],n=this.nextSubscriptionId++;return this.subscriptions.set(n,{eventTypes:new Set(r),callback:e}),()=>{this.subscriptions.delete(n)}}async count(t,e){return this.storage.countEvents(t,e)}notifyNewEvents(t,e){for(const r of this.subscriptions.values())if(r.eventTypes.has(t)||r.eventTypes.has("*"))try{r.callback(e)}catch(t){console.error("[QueryEngine] Subscription callback error:",t)}}async getEventChecker(t={}){const e=new Map;return{has:(r,n={})=>this._getCachedEvents(e,r).some(e=>this._matchesWhere(e,{...t,...n})),get:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})),count:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})).length,prefetch:async t=>{for(const r of t)if(!e.has(r)){const t=await this.storage.queryEvents(r,{limit:1e4});e.set(r,t.events)}}}}_getCachedEvents(t,e){return t.get(e)||[]}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}return!0}_getNestedValue(t,e){return void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Wc{constructor(t,e,r,n={}){this.storage=t,this.queryEngine=e,this.eventBus=r,this.batchSize=n.batchSize||2e3,this.confirmations=n.confirmations||2,this.realTimeEnabled=!1!==n.realTimeEnabled,this.retryAttempts=n.retryAttempts||3,this.retryDelay=n.retryDelay||1e3,this.pollInterval=n.pollInterval||12e3,this.reorgTracking=n.reorgTracking||!1,this.reorgDepth=n.reorgDepth||100,this.provider=null,this.contract=null,this.eventTypes=[],this.deployBlock=0,this.chainId=null,this.state="initializing",this.currentBlock=0,this.latestBlock=0,this.eventsIndexed=0,this.lastSyncTime=null,this.error=null,this.eventListeners=[],this.pollTimer=null,this.isPaused=!1,this.recentBlocks=new Map}async initialize({provider:t,contract:e,eventTypes:r,deployBlock:n,chainId:i}){this.provider=t,this.contract=e,this.eventTypes=r,this.deployBlock=n,this.chainId=i,await this._validateChainId();const s=await this.storage.getSyncState();s?(this.currentBlock=s.lastSyncedBlock,this.eventsIndexed=Object.values(s.eventCounts||{}).reduce((t,e)=>t+e,0),this.lastSyncTime=s.lastSyncTime):this.currentBlock=this.deployBlock-1}async _validateChainId(){const t=await this.storage.getSyncState();t&&t.chainId!==this.chainId&&(console.warn("[SyncEngine] Chain ID mismatch, clearing data"),await this.storage.clear())}async start(){if("synced"!==this.state&&"syncing"!==this.state)try{await this._syncHistorical(),this.realTimeEnabled&&!this.isPaused&&await this._startRealTimeSync()}catch(t){this.state="error",this.error=t,this.eventBus.emit("indexer:error",{code:"SYNC_ERROR",message:t.message,cause:t,recoverable:!0})}}async _syncHistorical(){this.state="syncing",this.latestBlock=await this.provider.getBlockNumber();const t=this.latestBlock-this.confirmations;if(this.currentBlock>=t)return this.state="synced",void this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:0});const e=Date.now(),r=this.currentBlock+1;this.eventBus.emit("indexer:syncStarted",{fromBlock:r,toBlock:t});for(let e=r;e<=t&&!this.isPaused;e+=this.batchSize){const n=Math.min(e+this.batchSize-1,t);await this._syncBatch(e,n);const i=(n-r+1)/(t-r+1);this.eventBus.emit("indexer:syncProgress",{progress:i,currentBlock:n,latestBlock:this.latestBlock,eventsIndexed:this.eventsIndexed})}this.isPaused||(this.state="synced",this.lastSyncTime=Date.now(),this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:Date.now()-e}))}async _syncBatch(t,e){const r=await this._fetchEventsWithRetry(t,e);if(r.length>0){const t=r.map(t=>this._parseEvent(t));await this.storage.putEvents(t),this.eventsIndexed+=t.length;const e=this._groupByType(t);for(const[t,r]of Object.entries(e))this.queryEngine.notifyNewEvents(t,r)}this.currentBlock=e,await this._saveSyncState()}async _fetchEventsWithRetry(t,e){for(let r=0;r<this.retryAttempts;r++)try{const r=[];for(const n of this.eventTypes){const i=this.contract.filters[n.name](),s=await this.contract.queryFilter(i,t,e);r.push(...s)}return r}catch(t){if(r===this.retryAttempts-1)throw t;const e=this.retryDelay*Math.pow(2,r);await this._sleep(e)}return[]}_parseEvent(t){const e={},r={};if(t.args){const n=t.eventFragment||this.contract.interface.getEvent(t.event);if(n)for(let i=0;i<n.inputs.length;i++){const s=n.inputs[i],o=t.args[i],a=this._serializeValue(o);s.indexed&&(e[s.name]=a),r[s.name]=a}}return{id:`${t.transactionHash}-${t.logIndex}`,type:t.event,blockNumber:t.blockNumber,blockHash:t.blockHash,transactionHash:t.transactionHash,logIndex:t.logIndex,timestamp:0,data:r,indexed:e}}_serializeValue(t){return null==t?null:"bigint"==typeof t||t._isBigNumber?t.toString():Array.isArray(t)?t.map(t=>this._serializeValue(t)):t}_groupByType(t){const e={};for(const r of t)e[r.type]||(e[r.type]=[]),e[r.type].push(r);return e}async _saveSyncState(){await this.storage.setSyncState({lastSyncedBlock:this.currentBlock,lastSyncTime:Date.now(),eventCounts:{},chainId:this.chainId})}async _startRealTimeSync(){try{for(const t of this.eventTypes){const e=this.contract.filters[t.name](),r=async(...t)=>{const e=t[t.length-1];await this._handleNewEvent(e)};this.contract.on(e,r),this.eventListeners.push({filter:e,listener:r})}}catch(t){console.warn("[SyncEngine] WebSocket subscription failed, falling back to polling"),this._startPolling()}this._startPolling()}_startPolling(){this.pollTimer||(this.pollTimer=setInterval(async()=>{if(!this.isPaused)try{const t=await this.provider.getBlockNumber(),e=t-this.confirmations;e>this.currentBlock&&await this._syncBatch(this.currentBlock+1,e),this.latestBlock=t,this.reorgTracking&&await this._checkForReorg(t)}catch(t){console.error("[SyncEngine] Polling error:",t)}},this.pollInterval))}async _handleNewEvent(t){this.confirmations>0&&await this._waitForConfirmations(t.transactionHash);const e=this._parseEvent(t);await this.storage.putEvents([e]),this.eventsIndexed++,e.blockNumber>this.currentBlock&&(this.currentBlock=e.blockNumber,await this._saveSyncState()),this.queryEngine.notifyNewEvents(e.type,[e]),this.eventBus.emit("indexer:newEvents",{eventType:e.type,events:[e]})}async _waitForConfirmations(t){let e=0;for(;e<this.confirmations;){const r=await this.provider.getTransactionReceipt(t);if(!r){await this._sleep(1e3);continue}e=await this.provider.getBlockNumber()-r.blockNumber+1,e<this.confirmations&&await this._sleep(1e3)}}async _checkForReorg(t){const e=await this.provider.getBlock(t);if(!e)return;const r=this.recentBlocks.get(t-1);if(r&&r!==e.parentHash&&await this._handleReorg(t-1),this.recentBlocks.set(t,e.hash),this.recentBlocks.size>this.reorgDepth){const t=Math.min(...this.recentBlocks.keys());this.recentBlocks.delete(t)}}async _handleReorg(t){let e=t;for(;e>this.deployBlock;){const t=this.recentBlocks.get(e),r=await this.provider.getBlock(e);if(t===r?.hash)break;e--}await this.storage.deleteEventsAfterBlock(e),this.currentBlock=e,await this._saveSyncState(),this.eventBus.emit("indexer:reorg",{forkBlock:t,commonAncestor:e,depth:t-e}),await this._syncHistorical()}pause(){this.isPaused=!0,this.state="paused",this.eventBus.emit("indexer:paused",{})}resume(){this.isPaused=!1,this.start(),this.eventBus.emit("indexer:resumed",{})}async resync(t){this.pause(),this.currentBlock=void 0!==t?t-1:this.deployBlock-1,await this.storage.clear(),await this._saveSyncState(),this.eventsIndexed=0,this.resume()}getStatus(){return{state:this.state,currentBlock:this.currentBlock,latestBlock:this.latestBlock,progress:this.latestBlock>0?Math.min(1,(this.currentBlock-this.deployBlock)/(this.latestBlock-this.deployBlock)):0,eventsIndexed:this.eventsIndexed,lastSyncTime:this.lastSyncTime,error:this.error}}async stop(){this.isPaused=!0;for(const{filter:t,listener:e}of this.eventListeners)this.contract.off(t,e);this.eventListeners=[],this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_sleep(t){return new Promise(e=>setTimeout(e,t))}}class Kc{constructor(t,e={}){this.queryEngine=t,this.definitions=e,this.entityAPIs={};for(const[t,r]of Object.entries(e))this.entityAPIs[t]=this._createEntityAPI(t,r)}getEntity(t){return this.entityAPIs[t]}getAllEntities(){return this.entityAPIs}_createEntityAPI(t,e){const r=this;return{query:async(n={})=>r._queryEntities(t,e,n),get:async n=>(await r._queryEntities(t,e,{[e.key]:n}))[0]||null,subscribe(n,i){const s=r._getRelevantEventTypes(e);return r.queryEngine.subscribe(s,async()=>{const s=await r._queryEntities(t,e,n);i(s)})},count:async(n={})=>(await r._queryEntities(t,e,n)).length}}async _queryEntities(t,e,r={}){const n=r.status,i={...r};delete i.status;const s=await this.queryEngine.query(e.source,{where:i,limit:1e4}),o=await this.queryEngine.getEventChecker(),a=this._getRelevantEventTypes(e);await o.prefetch(a);const l=[];for(const r of s.events){const i=await this._buildEntity(t,e,r,o);n&&i.status!==n||l.push(i)}return l}async _buildEntity(t,e,r,n){const i={_type:t,_sourceEvent:r,...r.data};if(i[e.key]=r.data[e.key]||r.indexed[e.key],e.status&&(i.status=this._evaluateStatus(i,e.status,n)),e.computed)for(const[t,r]of Object.entries(e.computed))try{i[t]=r(i,n)}catch(e){console.error(`[EntityResolver] Error computing ${t}:`,e),i[t]=null}if(e.relations)for(const[t,r]of Object.entries(e.relations))Object.defineProperty(i,t,{get:()=>this._resolveRelation(i,r),enumerable:!0});return i}_evaluateStatus(t,e,r){for(const[n,i]of Object.entries(e))if("default"!==n)try{if(i(t,r))return n}catch(t){console.error(`[EntityResolver] Error evaluating status ${n}:`,t)}return e.default||"unknown"}async _resolveRelation(t,e){const r=this.entityAPIs[e.entity];if(!r)return null;const n=t[e.foreignKey];return void 0===n?null:"many"===e.type?r.query({[e.foreignKey]:n}):r.get(n)}_getRelevantEventTypes(t){const e=new Set([t.source]);if(t.status)for(const r of Object.values(t.status))if("function"==typeof r){const t=r.toString().match(/events\.has\(['"](\w+)['"]/g)||[];for(const r of t){const t=r.match(/['"](\w+)['"]/)?.[1];t&&e.add(t)}}return Array.from(e)}}class $c{constructor(t,e){this.queryEngine=t,this.entityResolver=e}async userActivity(t,e={}){const{events:r=[],userFields:n,limit:i=50,offset:s=0}=e,o=t.toLowerCase(),a=[];for(const t of r){const e=await this.queryEngine.query(t,{limit:1e3}),r=n||this._detectAddressFields(e.events[0]);for(const t of e.events){r.some(e=>{const r=t.indexed[e]||t.data[e];return"string"==typeof r&&r.toLowerCase()===o})&&a.push({type:t.type,timestamp:t.timestamp||t.blockNumber,blockNumber:t.blockNumber,transactionHash:t.transactionHash,data:t.data})}}return a.sort((t,e)=>(e.timestamp||e.blockNumber)-(t.timestamp||t.blockNumber)),a.slice(s,s+i)}async refundable(t){const{itemEvent:e,itemKey:r,parentKey:n,cancelEvent:i,claimEvent:s,userField:o,user:a}=t,l=a.toLowerCase(),c=(await this.queryEngine.query(e,{limit:1e4})).events.filter(t=>{const e=t.indexed[o]||t.data[o];return"string"==typeof e&&e.toLowerCase()===l}),h=await this.queryEngine.query(i,{limit:1e4}),u=new Set(h.events.map(t=>t.indexed[n]||t.data[n])),d=await this.queryEngine.query(s,{limit:1e4}),f=new Set(d.events.map(t=>t.indexed[r]||t.data[r]));return c.filter(t=>{const e=t.indexed[r]||t.data[r],i=t.indexed[n]||t.data[n];return u.has(i)&&!f.has(e)})}async leaderboard(t){const{event:e,groupBy:r,aggregate:n,sumField:i,limit:s=10,where:o}=t,a=await this.queryEngine.query(e,{where:o,limit:1e4}),l=new Map;for(const t of a.events){const e=t.indexed[r]||t.data[r];if(void 0===e)continue;const n="string"==typeof e?e.toLowerCase():e;l.has(n)||l.set(n,{key:e,events:[]}),l.get(n).events.push(t)}const c=[];for(const[t,e]of l){let t;"count"===n?t=e.events.length:"sum"===n&&(t=e.events.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),c.push({key:e.key,value:t})}return c.sort((t,e)=>e.value-t.value),c.slice(0,s).map((t,e)=>({...t,rank:e+1}))}async timeSeries(t){const{event:e,interval:r,aggregate:n,sumField:i,where:s,periods:o=30}=t,a=await this.queryEngine.query(e,{where:s,limit:1e5}),l={hour:36e5,day:864e5,week:6048e5}[r];if(!l)throw new Error(`Invalid interval: ${r}`);const c=Date.now(),h=new Map;for(let t=0;t<o;t++){const e=new Date(c-(t+1)*l).toISOString();h.set(e,[])}for(const t of a.events){const e=t.timestamp?1e3*t.timestamp:c,r=Math.floor((c-e)/l);if(r>=0&&r<o){const e=new Date(c-(r+1)*l).toISOString();h.has(e)&&h.get(e).push(t)}}const u=[];for(const[t,e]of h){let r;"count"===n?r=e.length:"sum"===n&&(r=e.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),u.push({period:t,value:r})}return u.sort((t,e)=>new Date(t.period)-new Date(e.period)),u}_detectAddressFields(t){if(!t)return[];const e=[],r={...t.indexed,...t.data};for(const[t,n]of Object.entries(r))"string"==typeof n&&n.match(/^0x[a-fA-F0-9]{40}$/)&&e.push(t);return e}}class Vc extends Error{constructor(t,e,r){super(t),this.name="EventIndexerError",this.code=e,this.cause=r}}const Jc={NOT_INITIALIZED:"NOT_INITIALIZED",STORAGE_ERROR:"STORAGE_ERROR",SYNC_ERROR:"SYNC_ERROR",QUERY_ERROR:"QUERY_ERROR",INVALID_CONFIG:"INVALID_CONFIG",PROVIDER_ERROR:"PROVIDER_ERROR",REORG_DETECTED:"REORG_DETECTED"};class Qc{constructor(t,e={}){if(!t)throw new Vc("EventBus is required",Jc.INVALID_CONFIG);this.eventBus=t,this.blockchainService=e.blockchainService,this.storage=null,this.queryEngine=null,this.syncEngine=null,this.entityResolver=null,this.patternsAPI=null,this.contract=null,this.initialized=!1,this.config=null}async initialize(t){this._validateConfig(t),this.config=t;try{const e=this._getProvider(t),r=await e.getNetwork(),n=Number(r.chainId),i=this._extractEventTypes(t.contract.abi);this.storage=function(t){return"memory"===t?.type?new zc:Gc.isStorageEnabled()?"undefined"!=typeof indexedDB?new qc:(console.warn("[EventIndexer] IndexedDB not available, falling back to memory storage"),new zc):(console.log("[EventIndexer] User disabled IndexedDB storage, using memory"),new zc)}(t.persistence),await this.storage.initialize({dbName:t.persistence?.dbName||`micro-web3-events-${n}`,version:t.persistence?.version||1,eventTypes:i}),this.contract=new Rs(t.contract.address,t.contract.abi,e);const s=t.contract.deployBlock||await this._detectDeployBlock(e);this.queryEngine=new Hc(this.storage,this.eventBus),this.syncEngine=new Wc(this.storage,this.queryEngine,this.eventBus,t.sync||{}),await this.syncEngine.initialize({provider:e,contract:this.contract,eventTypes:i,deployBlock:s,chainId:n}),t.entities&&(this.entityResolver=new Kc(this.queryEngine,t.entities)),this.patternsAPI=new $c(this.queryEngine,this.entityResolver),this.initialized=!0,this.eventBus.emit("indexer:initialized",{}),await this.syncEngine.start()}catch(t){throw this.eventBus.emit("indexer:error",{code:Jc.STORAGE_ERROR,message:`Initialization failed: ${t.message}`,cause:t,recoverable:!1}),new Vc(`Failed to initialize EventIndexer: ${t.message}`,Jc.STORAGE_ERROR,t)}}_validateConfig(t){if(!t.contract)throw new Vc("contract config is required",Jc.INVALID_CONFIG);if(!t.contract.address)throw new Vc("contract.address is required",Jc.INVALID_CONFIG);if(!t.contract.abi||!Array.isArray(t.contract.abi))throw new Vc("contract.abi is required and must be an array",Jc.INVALID_CONFIG);if(!t.provider&&!this.blockchainService)throw new Vc("Either provider in config or blockchainService in constructor is required",Jc.INVALID_CONFIG)}_getProvider(t){if(t.provider)return t.provider;if(this.blockchainService?.getProvider)return this.blockchainService.getProvider();if(this.blockchainService?.provider)return this.blockchainService.provider;throw new Vc("No provider available",Jc.PROVIDER_ERROR)}_extractEventTypes(t){const e=[];for(const r of t)if("event"===r.type){const t=r.inputs.filter(t=>t.indexed).map(t=>t.name);e.push({name:r.name,inputs:r.inputs,indexedParams:t})}return e}async _detectDeployBlock(t){return console.warn("[EventIndexer] No deployBlock specified, starting from block 0"),0}get events(){return this._checkInitialized(),{query:(t,e)=>this.queryEngine.query(t,e),get:(t,e)=>this.queryEngine.get(t,e),subscribe:(t,e)=>this.queryEngine.subscribe(t,e),count:(t,e)=>this.queryEngine.count(t,e)}}get entities(){return this._checkInitialized(),this.entityResolver?new Proxy({},{get:(t,e)=>this.entityResolver.getEntity(e)}):(console.warn("[EventIndexer] No entities configured"),{})}get patterns(){return this._checkInitialized(),this.patternsAPI}get sync(){return this._checkInitialized(),{getStatus:()=>this.syncEngine.getStatus(),resync:t=>this.syncEngine.resync(t),clear:()=>this.storage.clear(),pause:()=>this.syncEngine.pause(),resume:()=>this.syncEngine.resume()}}_checkInitialized(){if(!this.initialized)throw new Vc("EventIndexer not initialized. Call initialize() first.",Jc.NOT_INITIALIZED)}async destroy(){this.syncEngine&&await this.syncEngine.stop(),this.storage&&await this.storage.close(),this.initialized=!1}static installHook(t){t.prototype.useIndexer?console.warn("[EventIndexer] useIndexer hook already installed"):t.prototype.useIndexer=function(t,e={},r={}){let n=null,i=!0,s=null;const o=()=>{const t={};for(const[r,n]of Object.entries(e))t[r]="function"==typeof n?n():n;return t},a=async()=>{try{const e=o();if(t.query){const r=await t.query(e);n=Array.isArray(r)?r:r.events}else n=[];i=!1,r.onUpdate&&r.onUpdate(n)}catch(t){i=!1,console.error("[useIndexer] Query error:",t),r.onError&&r.onError(t)}};return a(),t.subscribe&&(s=t.subscribe(o(),()=>{a()})),this.registerCleanup&&this.registerCleanup(()=>{s&&s()}),new Proxy([],{get:(t,e)=>"length"===e?n?.length||0:"isLoading"===e?i:e===Symbol.iterator?function*(){n&&(yield*n)}:"string"!=typeof e||isNaN(e)?n&&"function"==typeof n[e]?n[e].bind(n):n?.[e]:n?.[parseInt(e)]})}}}Qc.EventIndexerError=Vc,Qc.ErrorCodes=Jc;class Yc extends t{constructor(t){super(t),this.providerMap=t.providerMap,this.walletIcons=t.walletIcons,this.onWalletSelected=t.onWalletSelected,this.state={isVisible:!1}}events(){return{"click .wallet-modal-close":this.hide,"click .wallet-modal-overlay":t=>{t.target===t.currentTarget&&this.hide()},"click .wallet-option":async t=>{const e=t.currentTarget.dataset.wallet;this.onWalletSelected&&await this.onWalletSelected(e),this.hide()}}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}render(){if(!this.state.isVisible)return'<div class="wallet-modal-container" style="display: none;"></div>';return`\n <div class="wallet-modal-container">\n <div class="wallet-modal-overlay">\n <div class="wallet-modal">\n <div class="wallet-modal-header">\n <h3>Select Your Wallet</h3>\n <button class="wallet-modal-close">×</button>\n </div>\n <div class="wallet-options">\n ${Object.keys(this.providerMap).map(t=>`\n <button class="wallet-option" data-wallet="${t}">\n <img src="${this.walletIcons[t]}" alt="${t}">\n <span>${t.charAt(0).toUpperCase()+t.slice(1)}</span>\n </button>\n `).join("")}\n </div>\n </div>\n </div>\n </div>\n `}}class Xc{constructor({eventBus:t}){this.eventBus=t,this.element=null,this.overlay=null,this.isVisible=!1,this.state={storageEnabled:!0,storageUsed:0,storageQuota:0,clearing:!1}}async show(){if(this.isVisible)return;const t=Gc.get(),e=await Gc.getStorageEstimate();this.state={storageEnabled:t.storageEnabled,storageUsed:e.used||0,storageQuota:e.quota||0,clearing:!1},this._createModal(),this.isVisible=!0}hide(){this.isVisible&&(this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this.element=null,this.isVisible=!1)}_createModal(){Xc.injectStyles(),this.overlay=document.createElement("div"),this.overlay.className="mw3-settings-overlay",this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.hide()}),this.element=document.createElement("div"),this.element.className="mw3-settings-modal",this.element.innerHTML=this._render(),this.overlay.appendChild(this.element),document.body.appendChild(this.overlay),this._setupEventListeners()}_render(){const{storageEnabled:t,storageUsed:e,storageQuota:r,clearing:n}=this.state,i=(e/1048576).toFixed(1),s=(r/1048576).toFixed(0);return`\n <div class="mw3-settings-header">\n <h2>Settings</h2>\n <button class="mw3-settings-close" data-action="close">×</button>\n </div>\n\n <div class="mw3-settings-content">\n <div class="mw3-settings-section">\n <h3>Data Storage</h3>\n <p class="mw3-settings-description">\n Event data is cached locally to improve performance. You can disable this to save space.\n </p>\n\n <div class="mw3-settings-row">\n <label class="mw3-settings-toggle">\n <input type="checkbox" ${t?"checked":""} data-setting="storageEnabled">\n <span class="mw3-toggle-slider"></span>\n <span class="mw3-toggle-label">Enable local event storage</span>\n </label>\n </div>\n\n <div class="mw3-settings-info">\n <span>Storage used: ${i} MB${s>0?` / ${s} MB`:""}</span>\n </div>\n\n <div class="mw3-settings-row">\n <button class="mw3-settings-btn mw3-settings-btn--danger" data-action="clearData" ${n?"disabled":""}>\n ${n?"Clearing...":"Clear All Cached Data"}\n </button>\n </div>\n\n <p class="mw3-settings-note">\n Disabling storage means event history will need to be re-fetched each session.\n </p>\n </div>\n </div>\n\n <div class="mw3-settings-footer">\n <button class="mw3-settings-btn mw3-settings-btn--primary" data-action="close">Done</button>\n </div>\n `}_setupEventListeners(){this.element.querySelectorAll('[data-action="close"]').forEach(t=>{t.addEventListener("click",()=>this.hide())});const t=this.element.querySelector('[data-setting="storageEnabled"]');t&&t.addEventListener("change",t=>{const e=t.target.checked;Gc.set({storageEnabled:e}),this.state.storageEnabled=e,this.eventBus.emit("settings:storageChanged",{enabled:e})});const e=this.element.querySelector('[data-action="clearData"]');e&&e.addEventListener("click",async()=>{if(!this.state.clearing){this.state.clearing=!0,this._updateContent();try{await Gc.clearAllData();const t=await Gc.getStorageEstimate();this.state.storageUsed=t.used||0,this.state.storageQuota=t.quota||0,this.eventBus.emit("settings:dataCleared",{})}catch(t){console.error("[SettingsModal] Failed to clear data:",t)}this.state.clearing=!1,this._updateContent()}}),this._escHandler=t=>{"Escape"===t.key&&this.hide()},document.addEventListener("keydown",this._escHandler)}_updateContent(){this.element&&(this.element.innerHTML=this._render(),this._setupEventListeners())}static injectStyles(){if(document.getElementById("mw3-settings-styles"))return;const t=document.createElement("style");t.id="mw3-settings-styles",t.textContent="\n .mw3-settings-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n backdrop-filter: blur(4px);\n }\n\n .mw3-settings-modal {\n background: linear-gradient(135deg, #1a1a2e, #16213e);\n border: 1px solid rgba(218, 165, 32, 0.3);\n border-radius: 12px;\n width: 90%;\n max-width: 400px;\n color: #fff;\n font-family: 'Lato', system-ui, sans-serif;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n }\n\n .mw3-settings-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.25rem;\n border-bottom: 1px solid rgba(218, 165, 32, 0.2);\n }\n\n .mw3-settings-header h2 {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n }\n\n .mw3-settings-close {\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n }\n\n .mw3-settings-close:hover {\n color: #fff;\n }\n\n .mw3-settings-content {\n padding: 1.25rem;\n }\n\n .mw3-settings-section h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.9rem;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-description {\n margin: 0 0 1rem 0;\n font-size: 0.8rem;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n }\n\n .mw3-settings-row {\n margin-bottom: 1rem;\n }\n\n .mw3-settings-toggle {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n }\n\n .mw3-settings-toggle input {\n display: none;\n }\n\n .mw3-toggle-slider {\n width: 44px;\n height: 24px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n position: relative;\n transition: background 0.2s;\n }\n\n .mw3-toggle-slider::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #fff;\n border-radius: 50%;\n transition: transform 0.2s;\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider {\n background: rgba(218, 165, 32, 0.8);\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider::after {\n transform: translateX(20px);\n }\n\n .mw3-toggle-label {\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-info {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.5);\n margin-bottom: 1rem;\n }\n\n .mw3-settings-note {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.4);\n margin: 0;\n font-style: italic;\n }\n\n .mw3-settings-btn {\n padding: 0.625rem 1rem;\n border-radius: 6px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s;\n }\n\n .mw3-settings-btn--primary {\n background: rgba(218, 165, 32, 0.9);\n color: #1a1a2e;\n }\n\n .mw3-settings-btn--primary:hover {\n background: rgba(218, 165, 32, 1);\n }\n\n .mw3-settings-btn--danger {\n background: rgba(255, 99, 71, 0.2);\n color: rgba(255, 99, 71, 0.9);\n border: 1px solid rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn--danger:hover {\n background: rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .mw3-settings-footer {\n padding: 1rem 1.25rem;\n border-top: 1px solid rgba(218, 165, 32, 0.2);\n display: flex;\n justify-content: flex-end;\n }\n ",document.head.appendChild(t)}}class Zc extends t{constructor(t){super(),this.walletService=t.walletService,this.walletModal=null,this.settingsModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}onMount(){console.log("[FloatingWalletButton] onMount called"),this.initialize(),this.setupDOMEventListeners()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=await window.ethereum.request({method:"eth_accounts"});if(r&&r.length>0){const n=this._detectWalletType();console.log("[FloatingWalletButton] Detected existing connection:",n,r[0]);try{await this.walletService.selectWallet(n),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&(console.log("[FloatingWalletButton] Auto-connected to existing session:",n),localStorage.setItem("ms2fun_lastWallet",n))}catch(t){console.log("[FloatingWalletButton] Could not auto-connect:",t.message)}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}_detectWalletType(){return void 0===window.ethereum?"metamask":window.ethereum.isRabby?"rabby":window.ethereum.isRainbow?"rainbow":window.phantom?.ethereum?"phantom":"metamask"}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new lc(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Ac(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){const t=e.on("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),r=e.on("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),n=e.on("wallet:changed",async t=>{await this.loadWalletInfo(t.address)});this.registerCleanup(()=>{t(),r(),n()})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}async handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):await this.showWalletModal()}async showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Yc({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}async handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{await this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n,hasExecTokens:i,isVaultBenefactor:s}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-text">Connect</span>\n </button>\n </div>\n ';const o=`${e.slice(0,6)}...${e.slice(-4)}`;return`\n <div class="floating-wallet-button connected ${n?"menu-open":""}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-address">${this.escapeHtml(o)}</span>\n </button>\n\n ${n?this.renderDropdownMenu(e,r,i,s):""}\n </div>\n `}renderDropdownMenu(t,e,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return`\n <div class="wallet-dropdown-menu" data-ref="dropdown-menu">\n <div class="dropdown-header">\n <div class="dropdown-address">${this.escapeHtml(i)}</div>\n <div class="dropdown-balance">${e} ETH</div>\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-route="/portfolio" data-ref="menu-item">\n <span class="item-icon">📊</span>\n <span class="item-label">Portfolio</span>\n </button>\n\n ${r?'\n <button class="dropdown-item" data-route="/governance" data-ref="menu-item">\n <span class="item-icon">🗳️</span>\n <span class="item-label">Governance</span>\n </button>\n ':""}\n\n <button class="dropdown-item" data-route="/staking" data-ref="menu-item">\n <span class="item-icon">🎯</span>\n <span class="item-label">Staking</span>\n </button>\n\n ${n?'\n <button class="dropdown-item" data-route="/portfolio?filter=vaults" data-ref="menu-item">\n <span class="item-icon">💰</span>\n <span class="item-label">Vault Positions</span>\n </button>\n ':""}\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-action="settings" data-ref="menu-item">\n <span class="item-icon">⚙️</span>\n <span class="item-label">Settings</span>\n </button>\n\n <button class="dropdown-item disconnect" data-ref="disconnect-btn">\n <span class="item-icon">🔌</span>\n <span class="item-label">Disconnect</span>\n </button>\n </div>\n </div>\n `}setupDOMEventListeners(){if(console.log("[FloatingWalletButton] setupDOMEventListeners called, element:",this.element),!this.element)return;const t=this.element.querySelector(".wallet-btn");console.log("[FloatingWalletButton] mainBtn found:",t),t&&t.addEventListener("click",t=>this.handleButtonClick(t));Array.from(this.element.querySelectorAll(".dropdown-item[data-route], .dropdown-item[data-action]")).forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const r=t.getAttribute("data-route"),n=t.getAttribute("data-action");r?this.handleMenuItemClick(r):"settings"===n&&(this.setState({menuOpen:!1}),this.openSettings())})});const e=this.element.querySelector(".dropdown-item.disconnect");e&&e.addEventListener("click",t=>this.handleDisconnect(t))}onStateUpdate(t,e){t.menuOpen!==e.menuOpen&&this.setTimeout(()=>{this.setupDOMEventListeners()},0)}openSettings(){this.settingsModal||(this.settingsModal=new Xc({eventBus:e})),this.settingsModal.show()}onUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null),this.settingsModal&&(this.settingsModal.hide(),this.settingsModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class th extends Yc{events(){return{..."function"==typeof super.events?super.events():{},"click .wallet-option":async t=>{const e=t?.target?.closest?.(".wallet-option"),r=e?.dataset?.wallet;r&&(this.onWalletSelected&&await this.onWalletSelected(r),this.hide())}}}}class eh extends Zc{constructor(t){super(t),this.modalRoot=null}async showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new th({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}onUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.onUnmount()}render(){if(this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-mark"></span>\n <span class="wallet-text">Connect Wallet</span>\n </button>\n </div>\n ';const i=`${e.slice(0,6)}...${e.slice(-4)}`,s=["floating-wallet-button","connected"];n&&s.push("menu-open");const o=`\n <div class="${s.join(" ")}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-mark wallet-mark--connected"></span>\n <span class="wallet-address">${this.escapeHtml(i)}</span>\n <span class="wallet-disconnect" data-ref="inline-disconnect" title="Disconnect">⏏︎</span>\n </button>\n ${this.renderWalletPanel(e,r,n)}\n </div>\n `;return this.minifyHtml(o)}events(){return{...super.events?.()||{},'click [data-ref="inline-disconnect"]':t=>this.handleInlineDisconnect(t),'click [data-ref="wallet-btn"]':t=>this.handleWalletToggle(t),'click [data-ref="connect-btn"]':t=>this.handleWalletToggle(t)}}renderWalletPanel(t,e,r){const n=`${t.slice(0,6)}...${t.slice(-4)}`,i=`\n <div class="wallet-info-panel" data-ref="wallet-panel" aria-hidden="${r?"false":"true"}">\n <div class="wallet-info-row">\n <span class="wallet-info-label">Address</span>\n <span class="wallet-info-value">${this.escapeHtml(n)}</span>\n </div>\n <div class="wallet-info-row">\n <span class="wallet-info-label">ETH Balance</span>\n <span class="wallet-info-value">${e} ETH</span>\n </div>\n </div>\n `;return this.minifyHtml(i)}onStateUpdate(t,e){"function"==typeof super.onStateUpdate&&super.onStateUpdate(t,e),t&&t.menuOpen===e.menuOpen||(e.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener())}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}setupDOMEventListeners(){}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),super.handleDisconnect(t)}minifyHtml(t){return"string"==typeof t?t.replace(/>\s+</g,"><").trim():t}}class rh extends t{constructor(t={}){super(),this.props=t,this.setState({gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}),this.handleImageLoad=this.handleImageLoad.bind(this),this.handleImageError=this.handleImageError.bind(this)}getCurrentUrl(){const{src:t}=this.props;return t?Rc(t)?Oc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Dc(),{src:r}=this.props;if(!Rc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n});const i=this.element?.querySelector("img");if(i){const t=Oc(r,n);t&&(i.src=t)}}render(){const{src:t,alt:e="",className:r="",style:n={},loading:i="lazy",placeholder:s,errorPlaceholder:o}=this.props,{isLoading:a,hasError:l}=this.state;if(!t)return'<div class="ipfs-image-empty"></div>';const c=this.getCurrentUrl();return l?o||`\n <div class="ipfs-image-error ${r}" style="${this.styleToString(n)}">\n <div class="ipfs-image-error-icon">⚠️</div>\n <div class="ipfs-image-error-text">IPFS image unavailable</div>\n </div>\n `:`\n <div class="ipfs-image-container ${r}" style="${this.styleToString(n)}">\n ${a&&s?s:""}\n <img \n src="${this.escapeHtml(c||"")}" \n alt="${this.escapeHtml(e)}" \n loading="${i}"\n class="ipfs-image ${a?"ipfs-image-loading":"ipfs-image-loaded"}"\n style="${a?"opacity: 0;":"opacity: 1; transition: opacity 0.3s;"}"\n />\n </div>\n `}mount(t){super.mount(t);const e=this.element?.querySelector("img");e&&(e.addEventListener("load",this.handleImageLoad),e.addEventListener("error",this.handleImageError),this.registerCleanup(()=>{e.removeEventListener("load",this.handleImageLoad),e.removeEventListener("error",this.handleImageError)}))}styleToString(t){return t&&"object"==typeof t?Object.entries(t).map(([t,e])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${e};`).join(" "):""}}rh.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n \n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n .ipfs-image-loading {\n opacity: 0;\n }\n \n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n \n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n \n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n \n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n \n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n \n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class nh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.handleMessageInput=this.handleMessageInput.bind(this),this.handleNFTToggle=this.handleNFTToggle.bind(this),this.handleStoreUpdate=this.handleStoreUpdate.bind(this),this.updateTimer=null}onMount(){this.contractDataUnsubscribe=this.eventBus.on("contractData:updated",t=>{this.updateProps({isPhase2:t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool})}),this.addEventListeners(),this.updateElements()}onUnmount(){this.contractDataUnsubscribe&&this.contractDataUnsubscribe(),this.removeEventListeners()}updateProps(t){const e={...this.state,...t},r=this.state.isPhase2!==e.isPhase2||this.state.swapDirection!==e.swapDirection||this.state.nftBalance!==e.nftBalance;this.setState(e),r?(this.validateTransaction(),this.update()):this.updateElements()}addEventListeners(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&(this._messageInput=t,t.addEventListener("input",this.handleMessageInput)),e&&(this._nftToggle=e,e.addEventListener("change",this.handleNFTToggle))}removeEventListeners(){this._messageInput&&this._messageInput.removeEventListener("input",this.handleMessageInput),this._nftToggle&&this._nftToggle.removeEventListener("change",this.handleNFTToggle)}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.state.lastValidationState=r,this.state.isValid=r,this.eventBus.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}updateElements(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&!t.matches(":focus")&&(t.value=this.state.message),e&&(e.checked=this.state.nftMintingEnabled),this.removeEventListeners(),this.addEventListeners();const r=this.element.querySelector(".character-count");r&&(r.textContent=`${this.state.message.length}/140`,r.className="character-count "+(this.state.message.length>140?"error":""));const n=this.element.querySelector(".validation-status");n&&(n.className="validation-status "+(this.state.isValid?"valid":"invalid"),n.innerHTML=this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join(""))}handleMessageInput(t){const e=t.target.value||"";this.state={...this.state,message:e},this.updateElements(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.state={...this.state,nftMintingEnabled:e},this.updateElements(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.eventBus.emit("transactionOptions:update",t)}checkPhase2Status(){const{isPhase2:t}=this.state;null!==t&&this.state.isPhase2!==t&&this.setState({isPhase2:t})}template(){const{nftMintingEnabled:t,message:e,isValid:r,isPhase2:n,swapDirection:i}=this.state;return null===n||n?"":`\n <div class="transaction-options">\n <div class="option-group ${"sell"===i?"hidden":""}">\n <label class="nft-toggle">\n <input type="checkbox" \n ${t?"checked":""} \n id="nftToggle">\n Mint NFT with transaction\n </label>\n </div>\n \n <div class="option-group">\n <label for="messageInput">Transaction Message</label>\n <textarea id="messageInput" \n maxlength="140" \n placeholder="Enter optional message..."\n >${e}</textarea>\n <span class="character-count ${e.length>140?"error":""}">\n ${e.length}/140\n </span>\n </div>\n\n <div class="validation-status ${r?"valid":"invalid"}">\n ${this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join("")}\n </div>\n </div>\n `}render(){return this.template()}}class ih extends t{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,s=Date.now()+Math.random(),o={id:s,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,o]}),i>0&&setTimeout(()=>this.close(s),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}render(){return`\n <div id="message-popup-container">\n ${this.state.messages.map(t=>`\n <div class="message-popup ${t.type}" data-id="${t.id}">\n <div class="message-content">\n ${t.title?`<div class="message-title">${t.title}</div>`:""}\n <div class="message-text">${t.message}</div>\n </div>\n <button class="close-button" data-id="${t.id}">×</button>\n </div>\n `).join("")}\n </div>\n `}events(){return{"click .close-button":t=>{const e=parseFloat(t.target.dataset.id);this.close(e)}}}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const sh={PRICE:"price:updated",STATUS:"price:status"};class oh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null},this.handlePriceUpdate=this.handlePriceUpdate.bind(this),this.handleStatusUpdate=this.handleStatusUpdate.bind(this)}onMount(){this.eventBus&&(this.eventBus.on(sh.PRICE,this.handlePriceUpdate),this.eventBus.on(sh.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(sh.PRICE,this.handlePriceUpdate),this.eventBus.off(sh.STATUS,this.handleStatusUpdate))}updateProps(t){this.setState({price:void 0!==t.price?t.price:this.state.price,lastUpdated:void 0!==t.lastUpdated?t.lastUpdated:this.state.lastUpdated,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}setState(t){super.setState(t)}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}template(){const{price:t,lastUpdated:e,loading:r,error:n}=this.state;return r?'\n <div class="price-display loading marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="loading-indicator">Loading...</div>\n </div>\n </div>':n?`\n <div class="price-display error marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="error-message">Error: ${n}</div>\n </div>\n </div>`:`\n <div class="price-display marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n \n <div class="price-content">\n <div class="price-value">\n <span class="amount">${Number(t).toFixed(8)}</span>\n <span class="currency">ETH / Cult Exec</span>\n </div>\n </div>\n </div>\n `}render(){return this.template()}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class ah extends t{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new ih("approve-status"),this.handleApprove=this.handleApprove.bind(this),this.handleClose=this.handleClose.bind(this),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}onMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`),super.onMount(),this.setupEventListeners()}setupEventListeners(){const t=this.element.querySelector(".approve-button"),e=this.element.querySelector(".approve-modal-close"),r=this.element.querySelector(".approve-modal-overlay");t?.addEventListener("click",this.handleApprove),e?.addEventListener("click",this.handleClose),r?.addEventListener("click",t=>{t.target===r&&this.handleClose()})}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{const t=this.element.querySelector(".approve-button");if(!t)return void console.error(`[DEBUG-${this.modalId}] Approve button not found in the modal`);console.log(`[DEBUG-${this.modalId}] Approve button found, disabling and updating text`);const e=this.element.querySelector(".status-message")||document.createElement("div");if(!e.classList.contains("status-message")){e.className="status-message";const t=this.element.querySelector(".approve-modal-content");t?(console.log(`[DEBUG-${this.modalId}] Adding status message to modal content`),t.appendChild(e)):console.error(`[DEBUG-${this.modalId}] Modal content not found`)}if(e.textContent="Waiting for wallet confirmation...",e.className="status-message pending",t.disabled=!0,t.textContent="Approving...",this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const r=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${r}`);const n=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${n}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${n}`),e.textContent="Transaction submitted, waiting for confirmation...",console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const t=await this.blockchainService.setApproval(n,r);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,t)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}e.textContent="Approval successful!",e.className="status-message success",console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r=this.element.querySelector(".status-message")||document.createElement("div");if(!r.classList.contains("status-message")){r.className="status-message";const t=this.element.querySelector(".approve-modal-content");t&&t.appendChild(r)}r.textContent=`Error: ${e}`,r.className="status-message error",this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed");const n=this.element.querySelector(".approve-button");n&&(n.disabled=!1,n.textContent="Approve")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`);const t=this.element?.querySelector(".approve-button"),e=this.element?.querySelector(".approve-modal-close");this.element?.querySelector(".approve-modal-overlay"),t?.removeEventListener("click",this.handleApprove),e?.removeEventListener("click",this.handleClose),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element.style.display="block",console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element.style.display="none"}events(){return console.log(`[DEBUG-${this.modalId}] Setting up event handlers`),{"click .approve-button":t=>{console.log(`[DEBUG-${this.modalId}] Approve button clicked, calling handleApprove`),this.handleApprove()},"click .approve-modal-close":t=>{console.log(`[DEBUG-${this.modalId}] Close button clicked, calling handleClose`),this.handleClose()},"click .approve-modal-overlay":t=>{console.log(`[DEBUG-${this.modalId}] Overlay clicked`,t.target,t.currentTarget),t.target===t.currentTarget&&(console.log(`[DEBUG-${this.modalId}] Overlay direct click detected, calling handleClose`),this.handleClose())}}}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;return`\n <div class="approve-modal-overlay">\n <div class="approve-modal">\n <button class="approve-modal-close">×</button>\n <div class="approve-modal-content">\n <h2>Approve Router</h2>\n <p>Before selling your $EXEC tokens, you need to approve the router contract to spend them.</p>\n \n <div class="approve-details">\n <div class="approve-info">\n <span class="label">Amount to Approve:</span>\n <span class="value">${parseInt(this.amount).toLocaleString()} $EXEC</span>\n </div>\n <div class="approve-info">\n <span class="label">Router Address:</span>\n <span class="value">${t}</span>\n </div>\n </div>\n\n <button class="approve-button">\n Approve\n </button>\n </div>\n </div>\n </div>\n `}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n \n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n \n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n \n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n \n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class lh extends t{constructor(t={}){super(t),this.props={balances:{eth:"0",exec:"0"},...t}}updateProps(t){this.props={...this.props,...t},this.updateSelectively(t)}updateSelectively(t){if(!this.element)return;if(void 0!==t.direction||void 0!==t.freeMint||void 0!==t.balances){const{balances:t,direction:e,freeMint:r}=this.props,n=parseFloat(t.eth||0).toFixed(6),i=parseInt(t.exec||0).toLocaleString(),s="sell"===e&&r?`Available: ${(parseInt(t.exec||0)-1e6).toLocaleString()}`:`Balance: ${i}`;this.element.querySelectorAll(".token-balance").forEach((t,r)=>{const o=0===r;t.textContent="buy"===e?o?`Balance: ${n}`:`Balance: ${i}`:o?s:`Balance: ${n}`});this.element.querySelectorAll(".token-symbol").forEach((t,r)=>{const n=0===r;t.textContent="buy"===e?n?"ETH":"$EXEC":n?"$EXEC":"ETH"})}const e=this.element.querySelector(".top-input"),r=this.element.querySelector(".bottom-input");if(void 0!==t.calculatingAmount||void 0!==t.execAmount||void 0!==t.ethAmount){const{direction:t,ethAmount:n,execAmount:i,calculatingAmount:s}=this.props;e&&!e.matches(":focus")&&(e.value="buy"===t?n:i),r&&!r.matches(":focus")&&(r.value="buy"===t?s?"Loading...":i:s?"Loading...":n)}}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}events(){return{"input .top-input":t=>this.handleInput(t,"top"),"input .bottom-input":t=>this.handleInput(t,"bottom")}}render(){const{direction:t,ethAmount:e,execAmount:r,calculatingAmount:n,freeMint:i,balances:s}=this.props,o=parseFloat(s.eth||0).toFixed(6),a=parseInt(s.exec||0).toLocaleString(),l="sell"===t&&i?`Available: ${(parseInt(s.exec||0)-1e6).toLocaleString()}`:`Balance: ${a}`;return`\n <div class="swap-inputs">\n <div class="input-container">\n <input type="text" \n class="top-input" \n value="${"buy"===t?e:r}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"ETH":"$EXEC"}</span>\n <span class="token-balance">Balance: ${"buy"===t?o:l}</span>\n </div>\n </div>\n <div class="direction-switch-slot"></div>\n <div class="input-container">\n <input type="text" \n class="bottom-input" \n value="${"buy"===t?n?"Loading...":r:n?"Loading...":e}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"$EXEC":"ETH"}</span>\n <span class="token-balance">Balance: ${"buy"===t?a:o}</span>\n </div>\n </div>\n </div>\n `}}class ch extends t{constructor(t={}){super(),this.props=t}updateProps(t){const e={...this.props};this.props={...this.props,...t};const r="buy"===e.direction?"Buy $EXEC":"Sell $EXEC",n="buy"===this.props.direction?"Buy $EXEC":"Sell $EXEC";if((r!==n||e.disabled!==this.props.disabled)&&this.element){const t=this.element.querySelector(".swap-button");t&&(t.textContent=n,this.props.disabled?t.disabled=!0:t.disabled=!1)}}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}events(){return{"click .swap-button":t=>this.handleClick(t)}}render(){const{direction:t,disabled:e}=this.props;return`\n <button class="swap-button" ${e?"disabled":""}>\n ${"buy"===t?"Buy $EXEC":"Sell $EXEC"}\n </button>\n `}}class hh extends t{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.transactionOptions=new nh,this.messagePopup=new ih("status-message"),this.priceDisplay=new oh({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new ch({direction:this.state.direction,disabled:!1,onClick:this.handleSwap.bind(this)}),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.handleTransactionEvents=this.handleTransactionEvents.bind(this),this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this),this.handleTransactionOptionsUpdate=this.handleTransactionOptionsUpdate.bind(this),this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`🔵 SwapInterface instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n}),this.swapInputs&&this.swapInputs.updateProps({freeMint:r})}updateElements(){requestAnimationFrame(()=>{this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.swapButton&&this.swapButton.updateProps({direction:this.state.direction})})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if(console.log("calculateSwapAmount price",r),"eth"===e){const e=parseFloat(t)/r*1e6*.95;return console.log("calculateSwapAmount execAmount",e),e.toFixed(0)}{const e=parseFloat(t)/1e6*r*1.055;return console.log("calculateSwapAmount ethAmount",e),e.toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state;console.log("calculateSwapAmount freeMint",n);const i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}onMount(){console.log(`[${this.instanceId}] SwapInterface onMount called`),this.bindEvents();const t=[["contractData:updated",this.handleContractDataUpdate.bind(this),"high"],["transaction:pending",this.handleTransactionEvents,"normal"],["transaction:confirmed",this.handleTransactionEvents,"normal"],["transaction:success",this.handleTransactionEvents,"normal"],["transaction:error",this.handleTransactionEvents,"normal"],["balances:updated",this.handleBalanceUpdate,"high"],["transactionOptions:update",this.handleTransactionOptionsUpdate,"low"]];this.eventListeners=t.map(([t,e,r])=>(console.log(`[${this.instanceId}] Subscribing to ${t} with priority ${r}`),this.eventBus.on(t,e)));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0}),this.initializeChildComponents()}this.update(),requestAnimationFrame(()=>{this.mountChildComponents()})}updateProps(t){const e={...this.state},r={...this.state,...t};this.shouldUpdate(e,r)&&this.setState(r)}initializeChildComponents(){null!==this.state.isPhase2?this.swapInputs||(console.log(`[${this.instanceId}] Initializing SwapInputs with phase ${this.state.isPhase2?"2":"1"}`),this.swapInputs=new lh({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2,onInput:this.handleInput.bind(this)})):console.log(`[${this.instanceId}] Phase not yet determined, skipping SwapInputs initialization`)}mountChildComponents(){const t=this.element.querySelector(".price-display-container");!t||this.priceDisplay.element&&t.contains(this.priceDisplay.element)||(console.log(`[${this.instanceId}] Mounting PriceDisplay component`),this.priceDisplay.mount(t));const e=this.element.querySelector(".transaction-options-container");!e||!this.transactionOptions||this.transactionOptions.element&&e.contains(this.transactionOptions.element)||(console.log(`[${this.instanceId}] Mounting TransactionOptions component`),this.transactionOptions.mount(e));const r=this.element.querySelector(".swap-inputs-container");r&&this.swapInputs&&this.swapInputs.mount(r);const n=this.element.querySelector(".quick-fill-buttons-container");if(n){n.innerHTML='<div class="quick-fill-buttons"></div>';const t=n.querySelector(".quick-fill-buttons");if(t){const{direction:e}=this.state;t.innerHTML="buy"===e?'<button data-amount="0.0025">0.0025</button>\n <button data-amount="0.01">0.01</button>\n <button data-amount="0.05">0.05</button>\n <button data-amount="0.1">0.1</button>':'<button data-percentage="25">25%</button>\n <button data-percentage="50">50%</button>\n <button data-percentage="75">75%</button>\n <button data-percentage="100">100%</button>',t.addEventListener("click",t=>{(t.target.dataset.amount||t.target.dataset.percentage)&&this.handleQuickFill(t)})}}const i=this.element.querySelector(".direction-switch-slot");i&&(i.innerHTML='<button class="direction-switch">↑↓</button>',i.querySelector(".direction-switch").addEventListener("click",t=>{this.handleDirectionSwitch(t)}));const s=this.element.querySelector(".swap-button-container");s&&this.swapButton&&this.swapButton.mount(s)}onUnmount(){if(console.log(`[${this.instanceId}] SwapInterface onUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.transactionOptions&&this.transactionOptions.element&&this.transactionOptions.element.remove(),this.priceDisplay){try{this.priceDisplay.unmount()}catch(t){console.warn("Error unmounting price display:",t)}this.priceDisplay=null}if(this.swapInputs){try{this.swapInputs.unmount()}catch(t){console.warn("Error unmounting swap inputs:",t)}this.swapInputs=null}if(this.swapButton){try{this.swapButton.unmount()}catch(t){console.warn("Error unmounting swap button:",t)}this.swapButton=null}if(this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}handleTransactionEvents(t){if(console.log(`[${this.instanceId}] handleTransactionEvents called with:`,{type:t?.type,hasError:!!t?.error,hasHash:!!t?.hash,eventId:t?.id||"none",handled:t?.handled||!1}),t?.handledBy?.includes(this.instanceId))return void console.log(`[${this.instanceId}] Event already handled by this instance, skipping`);t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||(console.log(`[${this.instanceId}] Showing transaction pending message for type:`,t.type),this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending")),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.state.ethAmount="",this.state.execAmount="",this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:"",execAmount:"",calculatingAmount:!1}),this.mountChildComponents()}if(t.error&&!t.handled){console.log(`[${this.instanceId}] Handling error in handleTransactionEvents:`,t.error);let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}else console.warn("Invalid transaction event:",t)}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer),this.state.activeInput=t,this.state.calculatingAmount=!0,"buy"===this.state.direction?"top"===t?this.state.ethAmount=e:this.state.execAmount=e:"top"===t?this.state.execAmount=e:this.state.ethAmount=e,this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?(this.state.execAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({execAmount:n,calculatingAmount:!1})):(this.state.ethAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:n,calculatingAmount:!1}))}catch(t){console.error("Error calculating swap amount:",t),this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({calculatingAmount:!1})}},750)}events(){return{}}shouldUpdate(t,e){if(!t||!e)return!0;if(t===e)return!1;return!(t.ethAmount!==e.ethAmount||t.execAmount!==e.execAmount||t.activeInput!==e.activeInput||t.calculatingAmount!==e.calculatingAmount)||t.direction!==e.direction||t.freeMint!==e.freeMint||t.freeSupply!==e.freeSupply||t.isPhase2!==e.isPhase2||t.dataReady!==e.dataReady}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";console.log("Direction Switch - Current State:",{direction:this.state.direction,newDirection:e,freeMint:this.state.freeMint,freeSupply:this.state.freeSupply}),this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e),requestAnimationFrame(()=>{this.mountChildComponents()})}isLiquidityDeployed(){const{contractData:t}=this.state;if(!t||!t.liquidityPool)return!1;const e="0x0000000000000000000000000000000000000000"!==t.liquidityPool;return console.log("isLiquidityDeployed check:",{liquidityPool:t.liquidityPool,result:e}),e}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:e,direction:r,balances:n,freeMint:i}=this.state;if(!t||!e||parseFloat(t)<=0||parseFloat(e)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===r){let e=parseFloat(this.blockchainService.formatEther(n.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=e.replace(/,/g,""),r=BigInt(n.exec||0);if(BigInt(parseInt(t)||0)>r){const e=parseInt(n.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===r&&parseInt(e.replace(/,/g,""))<=1e6&&i)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const s=this.isLiquidityDeployed(),o=this.state.execAmount.replace(/,/g,"");if(s){const t=this.blockchainService.parseEther(this.state.ethAmount),e=this.blockchainService.parseExec(o),r=await this.getAddress();if(!r)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(r,{amount:e},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,n=await this.blockchainService.getApproval(r,t);if(BigInt(n)<BigInt(e)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){console.warn("Error closing existing approval modal:",t)}this.approveModal=null}return this.approveModal=new ApproveModal(o,this.blockchainService,r),this.approveModal.mount(document.body),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{this.approveModal=null}),void this.approveModal.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=o;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(o);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleQuickFill(t){t.preventDefault();const e=t.target.dataset.amount,r=t.target.dataset.percentage;let n;if(e)n=e;else if(r){const{balances:t}=this.state,e=t.exec;if(!e||"0"===e)return void console.warn("No EXEC balance available for quick fill");let i=BigInt(e)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");n=(i*BigInt(r)/BigInt(100)).toString()}this.handleInput("top",n)}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=null===t,{contractData:n}=this.state,i=this.isLiquidityDeployed();if(this.state.isPhase2=i,this.state.dataReady=!0,r&&null!==this.state.isPhase2)return console.log(`[${this.instanceId}] Phase determined: ${i?"Phase 2":"Phase 1"}`),this.initializeChildComponents(),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(!e&&this.state.dataReady)return console.log(`[${this.instanceId}] Data ready, mounting child components`),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(t!==this.state.isPhase2){console.log("Phase changed"),this.swapInputs&&this.swapInputs.updateProps({isPhase2:this.state.isPhase2});const t=this.element.querySelector(".price-display-container");return void(t&&this.priceDisplay&&this.priceDisplay.mount(t))}const s=this.element.querySelector(".price-display-container");if(s&&this.priceDisplay){!this.priceDisplay.element||!s.contains(this.priceDisplay.element)?this.priceDisplay.mount(s):this.priceDisplay.update()}}catch(t){console.error("Error in handleContractDataUpdate:",t),this.state.dataReady||(this.state.dataReady=!0,this.state.isPhase2=this.isLiquidityDeployed(),this.element&&this.element.innerHTML||this.update())}}render(){console.log("🎨 SwapInterface.render - Starting render");const{direction:t,isPhase2:e,dataReady:r,balances:n,freeMint:i,freeSupply:s}=this.state;if(!r||null===e)return'\n <div class="price-display-container"></div>\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container">\n <div style="padding: 20px; text-align: center;">Loading swap interface...</div>\n </div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n ';console.log("Render - Current State:",{direction:t,freeMint:i,freeSupply:s,isPhase2:e}),parseFloat(n.eth).toFixed(6);parseInt(n.exec).toLocaleString();"sell"===t&&i&&(parseInt(n.exec)-1e6).toLocaleString();const o=`\n <div class="price-display-container"></div>\n ${"sell"===t&&i&&!e?'<div class="free-mint-notice">You have 1,000,000 $EXEC you received for free that cannot be sold here.</div>':"buy"===t&&s>0&&!i&&!e?'<div class="free-mint-notice free-mint-bonus">1,000,000 $EXEC will be added to your purchase. Thank you.</div>':""}\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container"></div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n `;return console.log("🎨 SwapInterface.render - Completed render"),o}async getAddress(){try{const t=await Promise.resolve(this._address);return console.log(`[${this.instanceId}] Resolved address: ${t}`),t}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}}class uh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null}}onMount(){this.unsubscribeEvents=[this.eventBus.on("contractData:updated",t=>this.updateProps({contractData:t})),this.eventBus.on("price:updated",t=>this.updateProps({price:t.price}))],this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}updateProps(t){const e={...this.state};let r=!1;if(t.contractData){const{contractData:n}=t;e.totalBondingSupply=n.totalBondingSupply,e.totalMessages=n.totalMessages,e.totalNFTs=n.totalNFTs,e.contractEthBalance=n.contractEthBalance,e.liquidityPool!==n.liquidityPool&&(e.liquidityPool=n.liquidityPool,r=!0),e.dataReady=!0,r=!0}void 0!==t.price&&(e.currentPrice=t.price,r=!0),void 0!==t.chainId&&(e.chainId=t.chainId,r=!0),this.setState(e),r&&(this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve())}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){try{const t=this.element.querySelector(".bonding-curve");if(!t)return;t.innerHTML="";const e=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;t.innerHTML=`\n <iframe \n id="dextools-widget"\n title="$EXEC DEXTools Trading Chart"\n width="100%"\n height="100%"\n src="${e}"\n style="border: none;"\n onerror="console.warn('DEXTools chart failed to load (expected on localhost)')"\n ></iframe>\n `;const r=t.querySelector("#dextools-widget");r&&(r.onerror=()=>{console.warn("DEXTools chart iframe failed to load (expected on localhost due to X-Frame-Options)"),t.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart will be available in production</div>\n </div>\n '})}catch(t){console.error("Error rendering DEXTools chart:",t);const e=this.element.querySelector(".bonding-curve");e&&(e.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart unavailable (expected on localhost)</div>\n </div>\n ')}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){const t=this.element.querySelector("#curveChart");if(!t)return;const e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t){const e=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),r=this.calculateCurvePoints(this.element.querySelector("#curveChart"),t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,r,e),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,s=e(i),o=i*t.width*.8+.1*t.width,a=.9*t.height-s*t.height*.8;r.push({x:o,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const s=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(s.x,s.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}unmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t()),this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler),super.unmount()}render(){return`\n <div class="bonding-curve marble-bg">\n ${this.isLiquidityDeployed()?"":'<canvas id="curveChart"></canvas>'}\n </div>\n `}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class dh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null},this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this)}template(){const{balances:t,loading:e,error:r}=this.state;return`\n <div class="balance-display marble-bg ${e?"loading":""} ${r?"error":""}">\n <div class="balance-header">\n <h3>Your Balances</h3>\n ${t.lastUpdated?`\n <span class="last-updated">\n Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}\n </span>\n `:""}\n </div>\n \n <div class="balance-content">\n ${e?'\n <div class="loading-indicator">Loading balances...</div>\n ':r?`\n <div class="error-message">${r}</div>\n `:`\n <div class="balance-grid">\n <div class="balance-item eth">\n <span class="label">ETH Balance</span>\n <span class="amount">${t.eth}</span>\n </div>\n <div class="balance-item exec">\n <span class="label">EXEC Balance</span>\n <span class="amount">${t.exec}</span>\n </div>\n </div>\n `}\n </div>\n </div>\n `}render(){return this.template()}onMount(){this.eventBus&&(this.unsubscribeEvents=[this.eventBus.on("balances:updated",this.handleBalanceUpdate)])}onUnmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t())}updateProps(t){this.setState({balances:void 0!==t.balances?t.balances:this.state.balances,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}}class fh{constructor({indexer:t,eventBus:e}){if(!t)throw new Error("SyncProgressBar requires indexer instance");if(!e)throw new Error("SyncProgressBar requires eventBus instance");this.indexer=t,this.eventBus=e,this.element=null,this.unsubscribers=[],this.state={status:"initializing",progress:0,currentBlock:0,latestBlock:0,error:null}}mount(t){if("string"==typeof t&&(t=document.querySelector(t)),!t)throw new Error("SyncProgressBar: Invalid container");return this.element=document.createElement("div"),this.element.className="mw3-sync-progress",t.appendChild(this.element),this._setupListeners(),this._updateState(this.indexer.sync.getStatus()),this._render(),this}unmount(){for(const t of this.unsubscribers)t();this.unsubscribers=[],this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null}_setupListeners(){const t=[["indexer:syncProgress",t=>{this._updateState({status:"syncing",progress:t.progress,currentBlock:t.currentBlock,latestBlock:t.latestBlock})}],["indexer:syncComplete",()=>{this._updateState({status:"synced",progress:1})}],["indexer:error",t=>{this._updateState({status:"error",error:t.message})}],["indexer:paused",()=>{this._updateState({status:"paused"})}],["indexer:resumed",()=>{this._updateState({status:"syncing"})}]];for(const[e,r]of t){const t=this.eventBus.on(e,r);this.unsubscribers.push(t)}}_updateState(t){this.state={...this.state,...t},this._render()}_render(){if(!this.element)return;const{status:t,progress:e,currentBlock:r,latestBlock:n,error:i}=this.state;if(this.element.className=`mw3-sync-progress mw3-sync-progress--${t}`,"syncing"===t){const t=Math.round(100*e);this.element.innerHTML=`\n <div class="mw3-sync-progress__bar" style="width: ${t}%"></div>\n <span class="mw3-sync-progress__text">Syncing... ${t}%</span>\n `}else if("synced"===t)this.element.innerHTML=`\n <span class="mw3-sync-progress__text">Synced to block ${n.toLocaleString()}</span>\n `;else if("error"===t){this.element.innerHTML=`\n <span class="mw3-sync-progress__text">Sync failed: ${i||"Unknown error"}</span>\n <button class="mw3-sync-progress__retry">Retry</button>\n `;const t=this.element.querySelector(".mw3-sync-progress__retry");t&&(t.onclick=()=>this.indexer.sync.resync())}else if("paused"===t){this.element.innerHTML='\n <span class="mw3-sync-progress__text">Sync paused</span>\n <button class="mw3-sync-progress__resume">Resume</button>\n ';const t=this.element.querySelector(".mw3-sync-progress__resume");t&&(t.onclick=()=>this.indexer.sync.resume())}else this.element.innerHTML='\n <span class="mw3-sync-progress__text">Initializing...</span>\n '}static injectStyles(){if(document.getElementById("mw3-sync-progress-styles"))return;const t=document.createElement("style");t.id="mw3-sync-progress-styles",t.textContent="\n .mw3-sync-progress {\n position: relative;\n height: 24px;\n background: var(--mw3-sync-bg, #f0f0f0);\n border-radius: 4px;\n overflow: hidden;\n font-family: system-ui, sans-serif;\n font-size: 12px;\n }\n\n .mw3-sync-progress__bar {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: var(--mw3-sync-bar, #4caf50);\n transition: width 0.3s ease;\n }\n\n .mw3-sync-progress__text {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mw3-sync-text, #333);\n padding: 0 8px;\n }\n\n .mw3-sync-progress--synced {\n background: var(--mw3-sync-bar, #4caf50);\n }\n\n .mw3-sync-progress--synced .mw3-sync-progress__text {\n color: white;\n }\n\n .mw3-sync-progress--error {\n background: var(--mw3-sync-error, #f44336);\n }\n\n .mw3-sync-progress--error .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n\n .mw3-sync-progress__retry,\n .mw3-sync-progress__resume {\n background: rgba(255,255,255,0.2);\n border: 1px solid rgba(255,255,255,0.4);\n border-radius: 3px;\n color: white;\n padding: 2px 8px;\n cursor: pointer;\n font-size: 11px;\n }\n\n .mw3-sync-progress__retry:hover,\n .mw3-sync-progress__resume:hover {\n background: rgba(255,255,255,0.3);\n }\n\n .mw3-sync-progress--paused {\n background: var(--mw3-sync-paused, #ff9800);\n }\n\n .mw3-sync-progress--paused .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n ",document.head.appendChild(t)}}export{ah as ApprovalModal,dh as BalanceDisplay,Ic as BlockchainService,uh as BondingCurve,Pc as ContractCache,Qc as EventIndexer,Zc as FloatingWalletButton,qc as IndexedDBAdapter,Gc as IndexerSettings,rh as IpfsImage,Lc as IpfsService,zc as MemoryAdapter,ih as MessagePopup,oh as PriceDisplay,Nc as PriceService,Xc as SettingsModal,ch as SwapButton,lh as SwapInputs,hh as SwapInterface,fh as SyncProgressBar,nh as TransactionOptions,eh as WalletButton,Yc as WalletModal,Tc as WalletService};
|
|
9
|
+
*/var te,ee=(Xt||(Xt=1,te=Zt,function(){var t="input is invalid type",e="object"==typeof window,r=e?window:{};r.JS_SHA3_NO_WINDOW&&(e=!1);var n=!e&&"object"==typeof self;!r.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?r=i:n&&(r=self);var s=!r.JS_SHA3_NO_COMMON_JS&&te.exports,o=!r.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[0,8,16,24],h=[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],u=[224,256,384,512],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!r.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!o||!r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},y=function(t,e,r){return function(e,n,i,s){return A["cshake"+t].update(e,n,i,s)[r]()}},w=function(t,e,r){return function(e,n,i,s){return A["kmac"+t].update(e,n,i,s)[r]()}},v=function(t,e,r,n){for(var i=0;i<f.length;++i){var s=f[i];t[s]=e(r,n,s)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},v(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:u,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:u,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},v(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=y(t,0,"hex");return n.create=function(n,i,s){return i||s?new I(t,e,n).bytepad([i,s],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},v(n,y,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=w(t,0,"hex");return n.create=function(n,i,s){return new P(t,e,i).bytepad(["KMAC",s],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},v(n,w,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],_=C.bits,N=0;N<_.length;++N){var x=C.name+"_"+_[N];if(k.push(x),A[x]=C.createMethod(_[N],C.padding),"sha3"!==C.name){var T=C.name+_[N];k.push(T),A[T]=A[x]}}function I(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function P(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,s,a=this.blocks,l=this.byteCount,h=e.length,u=this.blockCount,d=0,f=this.s;d<h;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<u+1;++i)a[i]=0;if(r)for(i=this.start;d<h&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<h&&i<l;++d)(s=e.charCodeAt(d))<128?a[i>>2]|=s<<c[3&i++]:s<2048?(a[i>>2]|=(192|s>>6)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):s<55296||s>=57344?(a[i>>2]|=(224|s>>12)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|s>>18)<<c[3&i++],a[i>>2]|=(128|s>>12&63)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[u],i=0;i<u;++i)f[i]^=a[i];B(f),this.reset=!0}else this.start=i}return this},I.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,s=e.length;if(r)i=s;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,s=[];return s.length=i,this.update(s),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];B(n)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,l="";o<n;){for(s=0;s<e&&o<n;++s,++o)t=r[s],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];o%e===0&&(B(r),s=0)}return i&&(t=r[s],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);o<n;){for(s=0;s<e&&o<n;++s,++o)l[o]=r[s];o%e===0&&B(r)}return i&&(l[s]=r[s],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,s=this.extraBytes,o=0,a=0,l=[];a<i;){for(o=0;o<r&&a<i;++o,++a)t=a<<2,e=n[o],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&B(n)}return s&&(t=a<<2,e=n[o],l[t]=255&e,s>1&&(l[t+1]=e>>8&255),s>2&&(l[t+2]=e>>16&255)),l},P.prototype=new I,P.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var B=function(t){var e,r,n,i,s,o,a,l,c,u,d,f,p,m,g,y,w,v,b,E,A,k,S,C,_,N,x,T,I,P,B,M,R,F,O,D,L,U,z,q,j,G,H,W,K,V,J,$,Q,Y,X,Z,tt,et,rt,nt,it,st,ot,at,lt,ct,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],s=t[1]^t[11]^t[21]^t[31]^t[41],o=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(o<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|o>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=s^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=o^(u<<1|d>>>31),r=a^(d<<1|u>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=u^(i<<1|s>>>31),r=d^(s<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],V=t[11]<<4|t[10]>>>28,J=t[10]<<4|t[11]>>>28,T=t[20]<<3|t[21]>>>29,I=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,G=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,$=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,P=t[33]<<13|t[32]>>>19,B=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,v=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,M=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,_=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,z=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,W=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,N=t[18]<<20|t[19]>>>12,x=t[19]<<20|t[18]>>>12,st=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,j=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~y&v,t[1]=g^~w&b,t[10]=C^~N&T,t[11]=_^~x&I,t[20]=F^~D&U,t[21]=O^~L&z,t[30]=W^~V&$,t[31]=K^~J&Q,t[40]=et^~nt&st,t[41]=rt^~it&ot,t[2]=y^~v&E,t[3]=w^~b&A,t[12]=N^~T&P,t[13]=x^~I&B,t[22]=D^~U&q,t[23]=L^~z&j,t[32]=V^~$&Y,t[33]=J^~Q&X,t[42]=nt^~st&at,t[43]=it^~ot<,t[4]=v^~E&k,t[5]=b^~A&S,t[14]=T^~P&M,t[15]=I^~B&R,t[24]=U^~q&G,t[25]=z^~j&H,t[34]=$^~Y&Z,t[35]=Q^~X&tt,t[44]=st^~at&ct,t[45]=ot^~lt&ht,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=P^~M&C,t[17]=B^~R&_,t[26]=q^~G&F,t[27]=j^~H&O,t[36]=Y^~Z&W,t[37]=X^~tt&K,t[46]=at^~ct&et,t[47]=lt^~ht&rt,t[8]=k^~m&y,t[9]=S^~g&w,t[18]=M^~C&N,t[19]=R^~_&x,t[28]=G^~F&D,t[29]=H^~O&L,t[38]=Z^~W&V,t[39]=tt^~K&J,t[48]=ct^~et&nt,t[49]=ht^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(s)te.exports=A;else for(S=0;S<k.length;++S)r[k[S]]=A[k[S]]}()),Zt.exports),re=s(ee);function ne(t){return"0x"+re.keccak_256(_(t))}const ie=new v("rlp/5.8.0");function se(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function oe(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function ae(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(ae(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=se(e.length);return r.unshift(247+r.length),r.concat(e)}k(t)||ie.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(_(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=se(e.length);return r.unshift(183+r.length),r.concat(e)}function le(t){return B(ae(t))}function ce(t,e,r,n){const i=[];for(;r<e+1+n;){const s=he(t,r);i.push(s.result),(r+=s.consumed)>e+1+n&&ie.throwError("child data too short",v.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function he(t,e){if(0===t.length&&ie.throwError("data too short",v.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&ie.throwError("data short segment too short",v.errors.BUFFER_OVERRUN,{});const n=oe(t,e+1,r);return e+1+r+n>t.length&&ie.throwError("data long segment too short",v.errors.BUFFER_OVERRUN,{}),ce(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{}),ce(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});const n=oe(t,e+1,r);e+1+r+n>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:B(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&ie.throwError("data too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:B(t.slice(e+1,e+1+r))}}return{consumed:1,result:B(t[e])}}function ue(t){const e=_(t),r=he(e,0);return r.consumed!==e.length&&ie.throwArgumentError("invalid rlp data","data",t),r.result}var de=Object.freeze({__proto__:null,decode:ue,encode:le});const fe=new v("address/5.8.0");function pe(t){I(t,20)||fe.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=_(ne(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const me={};for(let t=0;t<10;t++)me[String(t)]=String(t);for(let t=0;t<26;t++)me[String.fromCharCode(65+t)]=String(10+t);const ge=Math.floor((ye=9007199254740991,Math.log10?Math.log10(ye):Math.log(ye)/Math.LN10));var ye;function we(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>me[t]).join("");for(;e.length>=ge;){let t=e.substring(0,ge);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ve(t){let e=null;if("string"!=typeof t&&fe.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=pe(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&fe.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==we(t)&&fe.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new j(r,36).toString(16);e.length<40;)e="0"+e;e=pe("0x"+e)}else fe.throwArgumentError("invalid address","address",t);var r;return e}function be(t){let e=null;try{e=ve(t.from)}catch(e){fe.throwArgumentError("missing from address","transaction",t)}return ve(R(ne(le([e,x(_(V.from(t.nonce).toHexString()))])),12))}class Ee extends $t{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ve(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ve(L(t.readValue().toHexString(),20))}}class Ae extends $t{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const ke=new v(kt);function Se(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||ke.throwError("cannot encode object for signature with missing names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&ke.throwError("cannot encode object for signature with duplicate names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else ke.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&ke.throwArgumentError("types/value length mismatch","tuple",r);let i=new Qt(t.wordSize),s=new Qt(t.wordSize),o=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=s.length;t.encode(s,r);let n=i.writeUpdatableValue();o.push(t=>{n(t+e)})}else t.encode(i,r)}),o.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(s),a}function Ce(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),s=n.subReader(r.toNumber());try{i=e.decode(s)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const s=r[e];s instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw s}}):r[n]=s});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class _e extends $t{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),ke.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Se(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&ke.throwError("insufficient data length",v.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new Ae(this.coder));return t.coerce(this.name,Ce(t,r))}}class Ne extends $t{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class xe extends $t{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=_(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class Te extends xe{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,B(super.decode(t)))}}class Ie extends $t{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=_(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,B(t.readBytes(this.size)))}}class Pe extends $t{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Be="0x0000000000000000000000000000000000000000",Me=V.from(-1),Re=V.from(0),Fe=V.from(1),Oe=V.from(2),De=V.from("1000000000000000000"),Le=V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue=V.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),ze=V.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),qe="0x0000000000000000000000000000000000000000000000000000000000000000";var je=Object.freeze({__proto__:null,AddressZero:Be,EtherSymbol:"Ξ",HashZero:qe,MaxInt256:ze,MaxUint256:Le,MinInt256:Ue,NegativeOne:Me,One:Fe,Two:Oe,WeiPerEther:De,Zero:Re});class Ge extends $t{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=V.from(e),n=Le.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Fe).mul(Me)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Re)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const He=new v("strings/5.8.0");var We,Ke;function Ve(t,e,r,n,i){if(t===Ke.BAD_PREFIX||t===Ke.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===Ke.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(We||(We={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(Ke||(Ke={}));const Je=Object.freeze({error:function(t,e,r,n,i){return He.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:Ve,replace:function(t,e,r,n,i){return t===Ke.OVERLONG?(n.push(i),0):(n.push(65533),Ve(t,e,r))}});function $e(t,e){null==e&&(e=Je.error),t=_(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let s=null,o=null;if(192==(224&i))s=1,o=127;else if(224==(240&i))s=2,o=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?Ke.UNEXPECTED_CONTINUE:Ke.BAD_PREFIX,n-1,t,r);continue}s=3,o=65535}if(n-1+s>=t.length){n+=e(Ke.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-s-1)-1;for(let i=0;i<s;i++){let i=t[n];if(128!=(192&i)){n+=e(Ke.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(Ke.OUT_OF_RANGE,n-1-s,t,r,a):a>=55296&&a<=57343?n+=e(Ke.UTF16_SURROGATE,n-1-s,t,r,a):a<=o?n+=e(Ke.OVERLONG,n-1-s,t,r,a):r.push(a))}return r}function Qe(t,e=We.current){e!=We.current&&(He.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const s=65536+((1023&n)<<10)+(1023&i);r.push(s>>18|240),r.push(s>>12&63|128),r.push(s>>6&63|128),r.push(63&s|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return _(r)}function Ye(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Xe(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Ze(t,e){return Xe($e(t,e))}function tr(t,e=We.current){return $e(Qe(t,e))}function er(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function rr(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function nr(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const ir=rr("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),sr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),or=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],ar=er("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),lr=er("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),cr=er("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),hr=rr("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class ur extends xe{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Qe(e))}decode(t){return Ze(super.decode(t))}}class dr extends $t{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Se(t,this.coders,e)}decode(t){return t.coerce(this.name,Ce(t,this.coders))}}const fr=new v(kt),pr=new RegExp(/^bytes([0-9]*)$/),mr=new RegExp(/^(u?int)([0-9]*)$/);class gr{constructor(t){ft(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new Ee(t.name);case"bool":return new Ne(t.name);case"string":return new ur(t.name);case"bytes":return new Te(t.name);case"array":return new _e(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new dr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Pe(t.name)}let e=t.type.match(mr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&fr.throwArgumentError("invalid "+e[1]+" bit length","param",t),new Ge(r/8,"int"===e[1],t.name)}if(e=t.type.match(pr),e){let r=parseInt(e[1]);return(0===r||r>32)&&fr.throwArgumentError("invalid bytes length","param",t),new Ie(r,t.name)}return fr.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Yt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Qt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Bt.from(t)));return new dr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&fr.throwError("types/values length mismatch",v.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Bt.from(t))),n=new dr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Bt.from(t)));return new dr(n,"_").decode(this._getReader(_(e),r))}}const yr=new gr;function wr(t){return ne(Qe(t))}const vr="hash/5.8.0";function br(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return _(e)}function Er(t){t=_(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var Ar=Object.freeze({__proto__:null,decode:br,encode:Er});function kr(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Sr(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,s=[0,1];for(let t=1;t<n;t++)s.push(i+=r());let o=r(),a=e;e+=o;let l=0,c=0;function h(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const u=Math.pow(2,31),d=u>>>1,f=d>>1,p=u-1;let m=0;for(let t=0;t<31;t++)m=m<<1|h();let g=[],y=0,w=u;for(;;){let t=Math.floor(((m-y+1)*i-1)/w),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<s[n]?r=n:e=n}if(0==e)break;g.push(e);let o=y+Math.floor(w*s[e]/i),a=y+Math.floor(w*s[e+1]/i)-1;for(;0==((o^a)&d);)m=m<<1&p|h(),o=o<<1&p,a=a<<1&p|1;for(;o&~a&f;)m=m&d|m<<1&p>>>1|h(),o=o<<1^d,a=(a^d)<<1|d|1;y=o,w=1+a-o}let v=n-4;return g.map(e=>{switch(e-v){case 3:return v+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return v+256+(t[a++]<<8|t[a++]);case 1:return v+t[a++];default:return e-1}})}(t))}function Cr(t){return 1&t?~t>>1:t>>1}function _r(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Nr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=Cr(e());return r}function xr(t,e){let r=_r(t(),t),n=t(),i=_r(n,t),s=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<s[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function Tr(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Nr(t,r).forEach((t,e)=>n[e].push(t));return n}function Ir(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return kr(Tr(i.length,1+t,e).map((t,e)=>{const s=t[0],o=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[s+e*r,o.map(t=>t+i)]})}))}function Pr(t,e){return Tr(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Br=Sr(br("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Mr=new Set(xr(Br)),Rr=new Set(xr(Br)),Fr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(Ir(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Pr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(kr(e))}(Br),Or=function(t){let e=xr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=xr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),s=i%3;i=i/3|0;let o=!!(1&i);return i>>=1,{branches:n,valid:s,fe0f:o,save:1==i,check:2==i}}()}(Br);function Dr(t){return tr(t)}function Lr(t){return t.filter(t=>65039!=t)}function Ur(t){for(let e of t.split(".")){let t=Dr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function zr(t){return Ur(function(t,e){let r=Dr(t).reverse(),n=[];for(;r.length;){let t=qr(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Mr.has(i)){n.push(i);continue}if(Rr.has(i))continue;let s=Fr[i];if(!s)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...s)}return Ur((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Lr))}function qr(t,e){var r;let n,i,s=Or,o=[],a=t.length;for(;a;){let e=t[--a];if(s=null===(r=s.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!s)break;if(s.save)i=e;else if(s.check&&e===i)break;o.push(e),s.fe0f&&(o.push(65039),a>0&&65039==t[a-1]&&a--),s.valid&&(n=o.slice(),2==s.valid&&n.splice(1,1),t.length=a)}return n}const jr=new v(vr),Gr=new Uint8Array(32);function Hr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Wr(t){const e=Qe(zr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(Hr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(Hr(e.slice(n))),r}function Kr(t){"string"!=typeof t&&jr.throwArgumentError("invalid ENS name; not a string","name",t);let e=Gr;const r=Wr(t);for(;r.length;)e=ne(N([e,ne(r.pop())]));return B(e)}function Vr(t){return B(N(Wr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}Gr.fill(0);function Jr(t){return"string"==typeof t&&(t=Qe(t)),ne(N([Qe("Ethereum Signed Message:\n"),Qe(String(t.length)),t]))}var $r=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Qr=new v(vr),Yr=new Uint8Array(32);Yr.fill(0);const Xr=V.from(-1),Zr=V.from(0),tn=V.from(1),en=V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const rn=L(tn.toHexString(),32),nn=L(Zr.toHexString(),32),sn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},on=["name","version","chainId","verifyingContract","salt"];function an(t){return function(e){return"string"!=typeof e&&Qr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const ln={name:an("name"),version:an("version"),chainId:function(t){try{return V.from(t).toString()}catch(t){}return Qr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ve(t).toLowerCase()}catch(t){}return Qr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=_(t);if(32!==e.length)throw new Error("bad length");return B(e)}catch(t){}return Qr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function cn(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Qr.throwArgumentError("invalid numeric width","type",t);const i=en.mask(r?n-1:n),s=r?i.add(tn).mul(Xr):Zr;return function(e){const r=V.from(e);return(r.lt(s)||r.gt(i))&&Qr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),L(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Qr.throwArgumentError("invalid bytes width","type",t),function(e){return _(e).length!==r&&Qr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=_(t),r=e.length%32;return r?F([e,Yr.slice(r)]):B(e)}(e)}}}switch(t){case"address":return function(t){return L(ve(t),32)};case"bool":return function(t){return t?rn:nn};case"bytes":return function(t){return ne(t)};case"string":return function(t){return wr(t)}}return null}function hn(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class un{constructor(t){ft(this,"types",Object.freeze(Et(t))),ft(this,"_encoderCache",{}),ft(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(s=>{i[s.name]&&Qr.throwArgumentError(`duplicate variable name ${JSON.stringify(s.name)} in ${JSON.stringify(n)}`,"types",t),i[s.name]=!0;const o=s.type.match(/^([^\x5b]*)(\x5b|$)/)[1];o===n&&Qr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);cn(o)||(r[o]||Qr.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r[o].push(n),e[n][o]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Qr.throwArgumentError("missing primary type","types",t):i.length>1&&Qr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),ft(this,"primaryType",i[0]),function i(s,o){o[s]&&Qr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t),o[s]=!0,Object.keys(e[s]).forEach(t=>{r[t]&&(i(t,o),Object.keys(o).forEach(e=>{n[e][t]=!0}))}),delete o[s]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=hn(e,t[e])+r.map(e=>hn(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=cn(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Qr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(ne)),ne(F(i))}}const r=this.types[t];if(r){const e=wr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?ne(n):n});return n.unshift(e),F(n)}}return Qr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Qr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return ne(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(cn(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Qr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Qr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new un(t)}static getPrimaryType(t){return un.from(t).primaryType}static hashStruct(t,e,r){return un.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=sn[r];n||Qr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>on.indexOf(t.name)-on.indexOf(e.name)),un.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return F(["0x1901",un.hashDomain(t),un.from(e).hash(r)])}static hash(t,e,r){return ne(un.encode(t,e,r))}static resolveNames(t,e,r,n){return $r(this,void 0,void 0,function*(){t=yt(t);const i={};t.verifyingContract&&!I(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const s=un.from(e);s.visit(r,(t,e)=>("address"!==t||I(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=s.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){un.hashDomain(t);const n={},i=[];on.forEach(e=>{const r=t[e];null!=r&&(n[e]=ln[e](r),i.push({name:e,type:sn[e]}))});const s=un.from(e),o=yt(e);return o.EIP712Domain?Qr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=i,s.encode(r),{types:o,domain:n,primaryType:s.primaryType,message:s.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return B(_(e));if(t.match(/^u?int/))return V.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Qr.throwArgumentError("invalid string","value",e),e}return Qr.throwArgumentError("unsupported type","type",t)})}}}const dn=new v(kt);class fn extends At{}class pn extends At{}class mn extends At{}class gn extends At{static isIndexed(t){return!(!t||!t._isIndexed)}}const yn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function wn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class vn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ft(this,"fragments",e.map(t=>Rt.from(t)).filter(t=>null!=t)),ft(this,"_abiCoder",pt(new.target,"getAbiCoder")()),ft(this,"functions",{}),ft(this,"errors",{}),ft(this,"events",{}),ft(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void dn.warn("duplicate definition - constructor"):void ft(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?dn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ft(this,"deploy",Ut.from({payable:!1,type:"constructor"})),ft(this,"_isInterface",!0)}format(t){t||(t=It.full),t===It.sighash&&dn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===It.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return yr}static getAddress(t){return ve(t)}static getSighash(t){return R(wr(t.format()),0,4)}static getEventTopic(t){return wr(t.format())}getFunction(t){if(I(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];dn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching function","name",e):r.length>1&&dn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[zt.fromString(t).format()];return e||dn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(I(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];dn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching event","name",e):r.length>1&&dn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Ft.fromString(t).format()];return e||dn.throwArgumentError("no matching event","signature",t),e}getError(t){if(I(t)){const e=pt(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}dn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching error","name",e):r.length>1&&dn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[zt.fromString(t).format()];return e||dn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return pt(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),pt(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=_(e);return B(r.slice(0,4))!==this.getSighash(t)&&dn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",B(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),B(N([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=_(e);return B(r.slice(0,4))!==this.getSighash(t)&&dn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",B(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),B(N([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=_(e),n=null,i="",s=null,o=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=B(r.slice(0,4)),e=yn[t];if(e)s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.signature,e.reason&&(n=s[0]),"Error"===o?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(s[0])}`:"Panic"===o&&(i=`; VM Exception while processing transaction: reverted with panic code ${s[0]}`);else try{const e=this.getError(t);s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.format()}catch(t){}break}}return dn.throwError("call revert exception"+i,v.errors.CALL_EXCEPTION,{method:t.format(),data:B(e),errorArgs:s,errorName:o,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),B(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&dn.throwError("too many arguments for "+t.format(),v.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?wr(e):"bytes"===t.type?ne(B(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=V.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),L(B(e),32));for(e.forEach((e,i)=>{let s=t.inputs[i];s.indexed?null==e?r.push(null):"array"===s.baseType||"tuple"===s.baseType?dn.throwArgumentError("filtering with tuples or arrays not supported","contract."+s.name,e):Array.isArray(e)?r.push(e.map(t=>n(s,t))):r.push(n(s,e)):null!=e&&dn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+s.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&dn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,s)=>{const o=e[s];if(t.indexed)if("string"===t.type)r.push(wr(o));else if("bytes"===t.type)r.push(ne(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[o]))}else n.push(t),i.push(o)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);I(r[0],32)&&r[0].toLowerCase()===e||dn.throwError("fragment/topic mismatch",v.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],s=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Bt.fromObject({type:"bytes32",name:t.name})),s.push(!0)):(n.push(t),s.push(!1)):(i.push(t),s.push(!1))});let o=null!=r?this._abiCoder.decode(n,N(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,h=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==o)l[e]=new gn({_isIndexed:!0,hash:null});else if(s[e])l[e]=new gn({_isIndexed:!0,hash:o[h++]});else try{l[e]=o[h++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw wn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw wn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new pn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:V.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new fn({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=B(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new mn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var bn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const En=new v("abstract-provider/5.8.0");class An extends At{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class kn{constructor(){En.checkAbstract(new.target,kn),ft(this,"_isProvider",!0)}getFeeData(){return bn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield mt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=V.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var Sn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Cn=new v("abstract-signer/5.8.0"),_n=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Nn=[v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED];class xn{constructor(){Cn.checkAbstract(new.target,xn),ft(this,"_isSigner",!0)}getBalance(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return Sn(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield mt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return Sn(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield mt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return Sn(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return Sn(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===_n.indexOf(e)&&Cn.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=yt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&Cn.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return Sn(this,void 0,void 0,function*(){const e=yield mt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>Sn(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&Cn.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||Cn.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):Cn.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&Cn.throwError("network does not support EIP-1559",v.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):Cn.throwError("failed to get consistent fee data",v.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Nn.indexOf(t.code)>=0)throw t;return Cn.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&Cn.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield mt(e)})}_checkProvider(t){this.provider||Cn.throwError("missing provider",v.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class Tn extends xn{constructor(t,e){super(),ft(this,"address",t),ft(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{Cn.throwError(t,v.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new Tn(this.address,t)}}var In,Pn,Bn={},Mn={};function Rn(){if(Pn)return In;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Pn=1,In=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},In}var Fn,On,Dn,Ln={exports:{}},Un={exports:{}};function zn(){if(On)return Ln.exports;On=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";Ln.exports=t.inherits}catch(t){Ln.exports=(Fn||(Fn=1,"function"==typeof Object.create?Un.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Un.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),Un.exports)}return Ln.exports}function qn(){if(Dn)return Mn;Dn=1;var t=Rn(),e=zn();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return Mn.inherits=e,Mn.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),s=0;s<t.length;s+=2)n.push(parseInt(t[s]+t[s+1],16))}else for(var i=0,s=0;s<t.length;s++){var o=t.charCodeAt(s);o<128?n[i++]=o:o<2048?(n[i++]=o>>6|192,n[i++]=63&o|128):r(t,s)?(o=65536+((1023&o)<<10)+(1023&t.charCodeAt(++s)),n[i++]=o>>18|240,n[i++]=o>>12&63|128,n[i++]=o>>6&63|128,n[i++]=63&o|128):(n[i++]=o>>12|224,n[i++]=o>>6&63|128,n[i++]=63&o|128)}else for(s=0;s<t.length;s++)n[s]=0|t[s];return n},Mn.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},Mn.htonl=n,Mn.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var o=t[i];"little"===e&&(o=n(o)),r+=s(o.toString(16))}return r},Mn.zero2=i,Mn.zero8=s,Mn.join32=function(e,r,n,i){var s=n-r;t(s%4==0);for(var o=new Array(s/4),a=0,l=r;a<o.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],o[a]=c>>>0}return o},Mn.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var s=t[n];"big"===e?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r},Mn.rotr32=function(t,e){return t>>>e|t<<32-e},Mn.rotl32=function(t,e){return t<<e|t>>>32-e},Mn.sum32=function(t,e){return t+e>>>0},Mn.sum32_3=function(t,e,r){return t+e+r>>>0},Mn.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},Mn.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},Mn.sum64=function(t,e,r,n){var i=t[e],s=n+t[e+1]>>>0,o=(s<n?1:0)+r+i;t[e]=o>>>0,t[e+1]=s},Mn.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},Mn.sum64_lo=function(t,e,r,n){return e+n>>>0},Mn.sum64_4_hi=function(t,e,r,n,i,s,o,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+s>>>0)<s?1:0,t+r+i+o+(l+=(c=c+a>>>0)<a?1:0)>>>0},Mn.sum64_4_lo=function(t,e,r,n,i,s,o,a){return e+n+s+a>>>0},Mn.sum64_5_hi=function(t,e,r,n,i,s,o,a,l,c){var h=0,u=e;return h+=(u=u+n>>>0)<e?1:0,h+=(u=u+s>>>0)<s?1:0,h+=(u=u+a>>>0)<a?1:0,t+r+i+o+l+(h+=(u=u+c>>>0)<c?1:0)>>>0},Mn.sum64_5_lo=function(t,e,r,n,i,s,o,a,l,c){return e+n+s+a+c>>>0},Mn.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},Mn.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Mn.shr64_hi=function(t,e,r){return t>>>r},Mn.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Mn}var jn,Gn={};function Hn(){if(jn)return Gn;jn=1;var t=qn(),e=Rn();function r(){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}return Gn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var s=8;s<this.padLength;s++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s<this.padLength;s++)n[i++]=0;return n},Gn}var Wn,Kn,Vn,Jn,$n,Qn,Yn,Xn,Zn,ti,ei,ri,ni={},ii={};function si(){if(Wn)return ii;Wn=1;var t=qn().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ii.ft_1=function(t,i,s,o){return 0===t?e(i,s,o):1===t||3===t?n(i,s,o):2===t?r(i,s,o):void 0},ii.ch32=e,ii.maj32=r,ii.p32=n,ii.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ii.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ii.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ii.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ii}function oi(){if($n)return Jn;$n=1;var t=qn(),e=Hn(),r=si(),n=Rn(),i=t.sum32,s=t.sum32_4,o=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,h=r.s1_256,u=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[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 m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Jn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=s(d(r[f-2]),r[f-7],u(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],y=this.h[3],w=this.h[4],v=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=o(E,h(w),a(w,v,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=v,v=w,w=i(y,A),y=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],y),this.h[4]=i(this.h[4],w),this.h[5]=i(this.h[5],v),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Jn}function ai(){if(Zn)return Xn;Zn=1;var t=qn(),e=Hn(),r=Rn(),n=t.rotr64_hi,i=t.rotr64_lo,s=t.shr64_hi,o=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,h=t.sum64_4_hi,u=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[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(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function y(t,e,r,n,i){var s=t&r^~t&i;return s<0&&(s+=4294967296),s}function w(t,e,r,n,i,s){var o=e&n^~e&s;return o<0&&(o+=4294967296),o}function v(t,e,r,n,i){var s=t&r^t&i^r&i;return s<0&&(s+=4294967296),s}function b(t,e,r,n,i,s){var o=e&n^e&s^n&s;return o<0&&(o+=4294967296),o}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=i(t,e,1)^i(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=n(t,e,19)^n(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,19)^i(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Xn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=N(r[n-4],r[n-3]),s=x(r[n-4],r[n-3]),o=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=_(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=h(i,s,o,a,l,c,d,f),r[n+1]=u(i,s,o,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],s=this.h[1],o=this.h[2],h=this.h[3],u=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],_=this.h[9],N=this.h[10],x=this.h[11],T=this.h[12],I=this.h[13],P=this.h[14],B=this.h[15];r(this.k.length===n.length);for(var M=0;M<n.length;M+=2){var R=P,F=B,O=k(C,_),D=S(C,_),L=y(C,_,N,x,T),U=w(C,_,N,x,T,I),z=this.k[M],q=this.k[M+1],j=n[M],G=n[M+1],H=d(R,F,O,D,L,U,z,q,j,G),W=f(R,F,O,D,L,U,z,q,j,G);R=E(i,s),F=A(i,s),O=v(i,s,o,h,u),D=b(i,s,o,h,u,p);var K=l(R,F,O,D),V=c(R,F,O,D);P=T,B=I,T=N,I=x,N=C,x=_,C=l(m,g,H,W),_=c(g,g,H,W),m=u,g=p,u=o,p=h,o=i,h=s,i=l(H,W,K,V),s=c(H,W,K,V)}a(this.h,0,i,s),a(this.h,2,o,h),a(this.h,4,u,p),a(this.h,6,m,g),a(this.h,8,C,_),a(this.h,10,N,x),a(this.h,12,T,I),a(this.h,14,P,B)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Xn}function li(){return ri||(ri=1,ni.sha1=function(){if(Vn)return Kn;Vn=1;var t=qn(),e=Hn(),r=si(),n=t.rotl32,i=t.sum32,s=t.sum32_5,o=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),Kn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],h=this.h[1],u=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=s(n(c,5),o(p,h,u,d),f,r[a],l[p]);f=d,d=u,u=n(h,30),h=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],h),this.h[2]=i(this.h[2],u),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}(),ni.sha224=function(){if(Yn)return Qn;Yn=1;var t=qn(),e=oi();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Qn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Qn}(),ni.sha256=oi(),ni.sha384=function(){if(ei)return ti;ei=1;var t=qn(),e=ai();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),ti=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},ti}(),ni.sha512=ai()),ni}var ci,hi,ui,di,fi={};var pi=(di||(di=1,function(){var t=Bn;t.utils=qn(),t.common=Hn(),t.sha=li(),t.ripemd=function(){if(ci)return fi;ci=1;var t=qn(),e=Hn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,s=t.sum32_4,o=e.BlockHash;function a(){if(!(this instanceof a))return new a;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function h(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,o),fi.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var o=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],y=this.h[4],w=o,v=a,b=m,E=g,A=y,k=0;k<80;k++){var S=n(r(s(o,l(k,a,m,g),t[u[k]+e],c(k)),f[k]),y);o=y,y=g,g=r(m,10),m=a,a=S,S=n(r(s(w,l(79-k,v,b,E),t[d[k]+e],h(k)),p[k]),A),w=A,A=E,E=r(b,10),b=v,v=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],y,w),this.h[3]=i(this.h[4],o,v),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var u=[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],d=[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],f=[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],p=[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];return fi}(),t.hmac=function(){if(ui)return hi;ui=1;var t=qn(),e=Rn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return hi=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},hi}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Bn),mi=s(pi);function gi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var yi=wi;function wi(t,e){if(!t)throw new Error(e||"Assertion failed")}wi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var vi=gi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),s=i>>8,o=255&i;s?r.push(s,o):r.push(o)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),bi=gi(function(t,e){var r=e;r.assert=yi,r.toArray=vi.toArray,r.zero2=vi.zero2,r.toHex=vi.toHex,r.encode=vi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var s=1<<e+1,o=t.clone();for(n=0;n<i.length;n++){var a,l=o.andln(s-1);o.isOdd()?(a=l>(s>>1)-1?(s>>1)-l:l,o.isubn(a)):a=0,i[n]=a,o.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,s=0;t.cmpn(-i)>0||e.cmpn(-s)>0;){var o,a,l=t.andln(3)+i&3,c=e.andln(3)+s&3;3===l&&(l=-1),3===c&&(c=-1),o=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(o),a=1&c?3!==(n=e.andln(7)+s&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===o+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new c(t,"hex","le")}}),Ei=bi.getNAF,Ai=bi.getJSF,ki=bi.assert;function Si(t,e){this.type=t,this.p=new c(e.p,16),this.red=e.prime?c.red(e.prime):c.mont(this.p),this.zero=new c(0).toRed(this.red),this.one=new c(1).toRed(this.red),this.two=new c(2).toRed(this.red),this.n=e.n&&new c(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))}var Ci=Si;function _i(t,e){this.curve=t,this.type=e,this.precomputed=null}Si.prototype.point=function(){throw new Error("Not implemented")},Si.prototype.validate=function(){throw new Error("Not implemented")},Si.prototype._fixedNafMul=function(t,e){ki(t.precomputed);var r=t._getDoubles(),n=Ei(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var s,o,a=[];for(s=0;s<n.length;s+=r.step){o=0;for(var l=s+r.step-1;l>=s;l--)o=(o<<1)+n[l];a.push(o)}for(var c=this.jpoint(null,null,null),h=this.jpoint(null,null,null),u=i;u>0;u--){for(s=0;s<a.length;s++)(o=a[s])===u?h=h.mixedAdd(r.points[s]):o===-u&&(h=h.mixedAdd(r.points[s].neg()));c=c.add(h)}return c.toP()},Si.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,s=Ei(e,r,this._bitLength),o=this.jpoint(null,null,null),a=s.length-1;a>=0;a--){for(var l=0;a>=0&&0===s[a];a--)l++;if(a>=0&&l++,o=o.dblp(l),a<0)break;var c=s[a];ki(0!==c),o="affine"===t.type?c>0?o.mixedAdd(i[c-1>>1]):o.mixedAdd(i[-c-1>>1].neg()):c>0?o.add(i[c-1>>1]):o.add(i[-c-1>>1].neg())}return"affine"===t.type?o.toP():o},Si.prototype._wnafMulAdd=function(t,e,r,n,i){var s,o,a,l=this._wnafT1,c=this._wnafT2,h=this._wnafT3,u=0;for(s=0;s<n;s++){var d=(a=e[s])._getNAFPoints(t);l[s]=d.wnd,c[s]=d.points}for(s=n-1;s>=1;s-=2){var f=s-1,p=s;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],y=Ai(r[f],r[p]);for(u=Math.max(y[0].length,u),h[f]=new Array(u),h[p]=new Array(u),o=0;o<u;o++){var w=0|y[0][o],v=0|y[1][o];h[f][o]=g[3*(w+1)+(v+1)],h[p][o]=0,c[f]=m}}else h[f]=Ei(r[f],l[f],this._bitLength),h[p]=Ei(r[p],l[p],this._bitLength),u=Math.max(h[f].length,u),u=Math.max(h[p].length,u)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(s=u;s>=0;s--){for(var A=0;s>=0;){var k=!0;for(o=0;o<n;o++)E[o]=0|h[o][s],0!==E[o]&&(k=!1);if(!k)break;A++,s--}if(s>=0&&A++,b=b.dblp(A),s<0)break;for(o=0;o<n;o++){var S=E[o];0!==S&&(S>0?a=c[o][S-1>>1]:S<0&&(a=c[o][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(s=0;s<n;s++)c[s]=null;return i?b:b.toP()},Si.BasePoint=_i,_i.prototype.eq=function(){throw new Error("Not implemented")},_i.prototype.validate=function(){return this.curve.validate(this)},Si.prototype.decodePoint=function(t,e){t=bi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?ki(t[t.length-1]%2==0):7===t[0]&&ki(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},_i.prototype.encodeCompressed=function(t){return this.encode(t,!0)},_i.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},_i.prototype.encode=function(t,e){return bi.encode(this._encode(e),t)},_i.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},_i.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},_i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var s=0;s<t;s++)n=n.dbl();r.push(n)}return{step:t,points:r}},_i.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},_i.prototype._getBeta=function(){return null},_i.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Ni=gi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),xi=bi.assert;function Ti(t){Ci.call(this,"short",t),this.a=new c(t.a,16).toRed(this.red),this.b=new c(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Ni(Ti,Ci);var Ii=Ti;function Pi(t,e,r,n){Ci.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new c(e,16),this.y=new c(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Bi(t,e,r,n){Ci.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new c(0)):(this.x=new c(e,16),this.y=new c(r,16),this.z=new c(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.zOne=this.z===this.curve.one}Ti.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new c(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new c(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],xi(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new c(t.a,16),b:new c(t.b,16)}}):this._getEndoBasis(r)}}},Ti.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:c.mont(t),r=new c(2).toRed(e).redInvm(),n=r.redNeg(),i=new c(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},Ti.prototype._getEndoBasis=function(t){for(var e,r,n,i,s,o,a,l,h,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new c(1),m=new c(0),g=new c(0),y=new c(1),w=0;0!==d.cmpn(0);){var v=f.div(d);l=f.sub(v.mul(d)),h=g.sub(v.mul(p));var b=y.sub(v.mul(m));if(!n&&l.cmp(u)<0)e=a.neg(),r=p,n=l.neg(),i=h;else if(n&&2===++w)break;a=l,f=d,d=l,g=p,p=h,y=m,m=b}s=l.neg(),o=h;var E=n.sqr().add(i.sqr());return s.sqr().add(o.sqr()).cmp(E)>=0&&(s=e,o=r),n.negative&&(n=n.neg(),i=i.neg()),s.negative&&(s=s.neg(),o=o.neg()),[{a:n,b:i},{a:s,b:o}]},Ti.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),s=r.b.neg().mul(t).divRound(this.n),o=i.mul(r.a),a=s.mul(n.a),l=i.mul(r.b),c=s.mul(n.b);return{k1:t.sub(o).sub(a),k2:l.add(c).neg()}},Ti.prototype.pointFromX=function(t,e){(t=new c(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},Ti.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},Ti.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,s=0;s<t.length;s++){var o=this._endoSplit(e[s]),a=t[s],l=a._getBeta();o.k1.negative&&(o.k1.ineg(),a=a.neg(!0)),o.k2.negative&&(o.k2.ineg(),l=l.neg(!0)),n[2*s]=a,n[2*s+1]=l,i[2*s]=o.k1,i[2*s+1]=o.k2}for(var c=this._wnafMulAdd(1,n,i,2*s,r),h=0;h<2*s;h++)n[h]=null,i[h]=null;return c},Ni(Pi,Ci.BasePoint),Ti.prototype.point=function(t,e,r){return new Pi(this,t,e,r)},Ti.prototype.pointFromJSON=function(t,e){return Pi.fromJSON(this,t,e)},Pi.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Pi.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Pi.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var s=e[2];return n.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[n].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[n].concat(s.naf.points.map(i))}},n},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Pi.prototype.isInfinity=function(){return this.inf},Pi.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(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Pi.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),s=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,o)},Pi.prototype.getX=function(){return this.x.fromRed()},Pi.prototype.getY=function(){return this.y.fromRed()},Pi.prototype.mul=function(t){return t=new c(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)},Pi.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Pi.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Pi.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Pi.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Pi.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Ni(Bi,Ci.BasePoint),Ti.prototype.jpoint=function(t,e,r){return new Bi(this,t,e,r)},Bi.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Bi.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Bi.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),s=this.y.redMul(e.redMul(t.z)),o=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=s.redSub(o);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),h=c.redMul(a),u=n.redMul(c),d=l.redSqr().redIAdd(h).redISub(u).redISub(u),f=l.redMul(u.redISub(d)).redISub(s.redMul(h)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Bi.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,s=t.y.redMul(e).redMul(this.z),o=r.redSub(n),a=i.redSub(s);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),h=r.redMul(l),u=a.redSqr().redIAdd(c).redISub(h).redISub(h),d=a.redMul(h.redISub(u)).redISub(i.redMul(c)),f=this.z.redMul(o);return this.curve.jpoint(u,d,f)},Bi.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,s=this.x,o=this.y,a=this.z,l=a.redSqr().redSqr(),c=o.redAdd(o);for(e=0;e<t;e++){var h=s.redSqr(),u=c.redSqr(),d=u.redSqr(),f=h.redAdd(h).redIAdd(h).redIAdd(n.redMul(l)),p=s.redMul(u),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),y=f.redMul(g);y=y.redIAdd(y).redISub(d);var w=c.redMul(a);e+1<t&&(l=l.redMul(d)),s=m,a=w,c=y}return this.curve.jpoint(s,c.redMul(i),a)},Bi.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Bi.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(o).redISub(o),c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),u=this.y.redSqr(),d=u.redSqr(),f=this.x.redAdd(u).redSqr().redISub(h).redISub(d);f=f.redIAdd(f);var p=h.redAdd(h).redIAdd(h),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Bi.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(o).redISub(o);t=l;var c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.z.redSqr(),u=this.y.redSqr(),d=this.x.redMul(u),f=this.x.redSub(h).redMul(this.x.redAdd(h));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(u).redISub(h);var g=u.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Bi.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),s=e.redSqr(),o=r.redSqr(),a=s.redAdd(s).redIAdd(s).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(o),h=a.redSqr().redISub(c.redAdd(c)),u=c.redISub(h),d=o.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(u).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(h,f,p)},Bi.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),s=i.redSqr(),o=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(s)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(o).redSqr().redISub(s).redISub(a).redISub(l),h=e.redMul(c);h=(h=h.redIAdd(h)).redIAdd(h);var u=this.x.redMul(a).redISub(h);u=(u=u.redIAdd(u)).redIAdd(u);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(o.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(o).redSqr().redISub(r).redISub(a);return this.curve.jpoint(u,d,f)},Bi.prototype.mul=function(t,e){return t=new c(t,e),this.curve._wnafMul(this,t)},Bi.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Bi.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Bi.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Bi.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Mi=gi(function(t,e){var r=e;r.base=Ci,r.short=Ii,r.mont=null,r.edwards=null}),Ri=gi(function(t,e){var r,n=e,i=bi.assert;function s(t){"short"===t.type?this.curve=new Mi.short(t):"edwards"===t.type?this.curve=new Mi.edwards(t):this.curve=new Mi.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new s(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=s,o("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:mi.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("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:mi.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("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:mi.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("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:mi.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"]}),o("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:mi.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"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:mi.sha256,gRed:!1,g:["9"]}),o("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:mi.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}o("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:mi.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Fi(t){if(!(this instanceof Fi))return new Fi(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=vi.toArray(t.entropy,t.entropyEnc||"hex"),r=vi.toArray(t.nonce,t.nonceEnc||"hex"),n=vi.toArray(t.pers,t.persEnc||"hex");yi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Oi=Fi;Fi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Fi.prototype._hmac=function(){return new mi.hmac(this.hash,this.K)},Fi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Fi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=vi.toArray(t,e),r=vi.toArray(r,n),yi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Fi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=vi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var s=i.slice(0,t);return this._update(r),this._reseed++,vi.encode(s,e)};var Di=bi.assert;function Li(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)}var Ui=Li;Li.fromPublic=function(t,e,r){return e instanceof Li?e:new Li(t,{pub:e,pubEnc:r})},Li.fromPrivate=function(t,e,r){return e instanceof Li?e:new Li(t,{priv:e,privEnc:r})},Li.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"}},Li.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Li.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Li.prototype._importPrivate=function(t,e){this.priv=new c(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Li.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Di(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Di(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Li.prototype.derive=function(t){return t.validate()||Di(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Li.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Li.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Li.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var zi=bi.assert;function qi(t,e){if(t instanceof qi)return t;this._importDER(t,e)||(zi(t.r&&t.s,"Signature without r or s"),this.r=new c(t.r,16),this.s=new c(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var ji=qi;function Gi(){this.place=0}function Hi(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,s=0,o=e.place;s<n;s++,o++)i<<=8,i|=t[o],i>>>=0;return!(i<=127)&&(e.place=o,i)}function Wi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function Ki(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}qi.prototype._importDER=function(t,e){t=bi.toArray(t,e);var r=new Gi;if(48!==t[r.place++])return!1;var n=Hi(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=Hi(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var s=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var o=Hi(t,r);if(!1===o)return!1;if(t.length!==o+r.place)return!1;if(128&t[r.place])return!1;var a=t.slice(r.place,o+r.place);if(0===s[0]){if(!(128&s[1]))return!1;s=s.slice(1)}if(0===a[0]){if(!(128&a[1]))return!1;a=a.slice(1)}return this.r=new c(s),this.s=new c(a),this.recoveryParam=null,!0},qi.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Wi(e),r=Wi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];Ki(n,e.length),(n=n.concat(e)).push(2),Ki(n,r.length);var i=n.concat(r),s=[48];return Ki(s,i.length),s=s.concat(i),bi.encode(s,t)};var Vi=function(){throw new Error("unsupported")},Ji=bi.assert;function $i(t){if(!(this instanceof $i))return new $i(t);"string"==typeof t&&(Ji(Object.prototype.hasOwnProperty.call(Ri,t),"Unknown curve "+t),t=Ri[t]),t instanceof Ri.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}var Qi=$i;$i.prototype.keyPair=function(t){return new Ui(this,t)},$i.prototype.keyFromPrivate=function(t,e){return Ui.fromPrivate(this,t,e)},$i.prototype.keyFromPublic=function(t,e){return Ui.fromPublic(this,t,e)},$i.prototype.genKeyPair=function(t){t||(t={});for(var e=new Oi({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Vi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new c(2));;){var i=new c(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},$i.prototype._truncateToN=function(t,e,r){var n;if(c.isBN(t)||"number"==typeof t)n=(t=new c(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new c(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new c(i,16)}"number"!=typeof r&&(r=8*n);var s=r-this.n.bitLength();return s>0&&(t=t.ushrn(s)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},$i.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!c.isBN(t)){Ji("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ji(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ji((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ji(!t.isNeg(),"Can not sign a negative message");var s=this.n.byteLength(),o=e.getPrivate().toArray("be",s),a=t.toArray("be",s);Ji(new c(a).eq(t),"Can not sign message");for(var l=new Oi({hash:this.hash,entropy:o,nonce:a,pers:n.pers,persEnc:n.persEnc||"utf8"}),h=this.n.sub(new c(1)),u=0;;u++){var d=n.k?n.k(u):new c(l.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new ji({r:m,s:g,recoveryParam:y})}}}}}},$i.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var s=(e=new ji(e,"hex")).r,o=e.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var a,l=o.invm(this.n),c=l.mul(t).umod(this.n),h=l.mul(s).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(s):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(s)},$i.prototype.recoverPubKey=function(t,e,r,n){Ji((3&r)===r,"The recovery param is more than two bits"),e=new ji(e,n);var i=this.n,s=new c(t),o=e.r,a=e.s,l=1&r,h=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");o=h?this.curve.pointFromX(o.add(this.curve.n),l):this.curve.pointFromX(o,l);var u=e.r.invm(i),d=i.sub(s).mul(u).umod(i),f=a.mul(u).umod(i);return this.g.mulAdd(d,o,f)},$i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new ji(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(t,e,i)}catch(t){continue}if(s.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Yi=gi(function(t,e){var r=e;r.version="6.6.1",r.utils=bi,r.rand=function(){throw new Error("unsupported")},r.curve=Mi,r.curves=Ri,r.ec=Qi,r.eddsa=null}).ec;const Xi=new v("signing-key/5.8.0");let Zi=null;function ts(){return Zi||(Zi=new Yi("secp256k1")),Zi}class es{constructor(t){ft(this,"curve","secp256k1"),ft(this,"privateKey",B(t)),32!==M(this.privateKey)&&Xi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=ts().keyFromPrivate(_(this.privateKey));ft(this,"publicKey","0x"+e.getPublic(!1,"hex")),ft(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ft(this,"_isSigningKey",!0)}_addPoint(t){const e=ts().keyFromPublic(_(this.publicKey)),r=ts().keyFromPublic(_(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=ts().keyFromPrivate(_(this.privateKey)),r=_(t);32!==r.length&&Xi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return U({recoveryParam:n.recoveryParam,r:L("0x"+n.r.toString(16),32),s:L("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=ts().keyFromPrivate(_(this.privateKey)),r=ts().keyFromPublic(_(ns(t)));return L("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function rs(t,e){const r=U(e),n={r:_(r.r),s:_(r.s)};return"0x"+ts().recoverPubKey(_(t),n,r.recoveryParam).encode("hex",!1)}function ns(t,e){const r=_(t);if(32===r.length){const t=new es(r);return e?"0x"+ts().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?B(r):"0x"+ts().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+ts().keyFromPublic(r).getPublic(!0,"hex"):B(r):Xi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const is=new v("transactions/5.8.0");var ss;function os(t){return"0x"===t?null:ve(t)}function as(t){return"0x"===t?Re:V.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ss||(ss={}));const ls=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],cs={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function hs(t){return ve(R(ne(R(ns(t),1)),12))}function us(t,e){return hs(rs(_(t),e))}function ds(t,e){const r=x(V.from(t).toHexString());return r.length>32&&is.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function fs(t,e){return{address:ve(t),storageKeys:(e||[]).map((e,r)=>(32!==M(e)&&is.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ps(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&is.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),fs(t[0],t[1])):fs(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return fs(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function ms(t){return ps(t).map(t=>[t.address,t.storageKeys])}function gs(t,e){if(null!=t.gasPrice){const e=V.from(t.gasPrice),r=V.from(t.maxFeePerGas||0);e.eq(r)||is.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[ds(t.chainId||0,"chainId"),ds(t.nonce||0,"nonce"),ds(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),ds(t.maxFeePerGas||0,"maxFeePerGas"),ds(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",ds(t.value||0,"value"),t.data||"0x",ms(t.accessList||[])];if(e){const t=U(e);r.push(ds(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return F(["0x02",le(r)])}function ys(t,e){const r=[ds(t.chainId||0,"chainId"),ds(t.nonce||0,"nonce"),ds(t.gasPrice||0,"gasPrice"),ds(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",ds(t.value||0,"value"),t.data||"0x",ms(t.accessList||[])];if(e){const t=U(e);r.push(ds(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return F(["0x01",le(r)])}function ws(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&is.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){gt(t,cs);const r=[];ls.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=_(B(n,i)),e.length&&n.length!==e.length&&n.length>0&&is.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=x(n),n.length>e.maxLength&&is.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(B(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&is.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!k(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(B(n)),r.push("0x"),r.push("0x")),!e)return le(r);const i=U(e);let s=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),s+=2*n+8,i.v>28&&i.v!==s&&is.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==s&&is.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(B(s)),r.push(x(_(i.r))),r.push(x(_(i.s))),le(r)}(t,e);switch(t.type){case 1:return ys(t,e);case 2:return gs(t,e)}return is.throwError(`unsupported transaction type: ${t.type}`,v.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function vs(t,e,r){try{const r=as(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){is.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=L(e[1],32),t.s=L(e[2],32);try{const e=ne(r(t));t.from=us(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function bs(t){const e=_(t);if(e[0]>127)return function(t){const e=ue(t);9!==e.length&&6!==e.length&&is.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:as(e[0]).toNumber(),gasPrice:as(e[1]),gasLimit:as(e[2]),to:os(e[3]),value:as(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=V.from(e[6]).toNumber()}catch(t){return r}if(r.r=L(e[7],32),r.s=L(e[8],32),V.from(r.r).isZero()&&V.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(B(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const s=ne(le(i));try{r.from=us(s,{r:B(r.r),s:B(r.s),recoveryParam:n})}catch(t){}r.hash=ne(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=ue(t.slice(1));8!==e.length&&11!==e.length&&is.throwArgumentError("invalid component count for transaction type: 1","payload",B(t));const r={type:1,chainId:as(e[0]).toNumber(),nonce:as(e[1]).toNumber(),gasPrice:as(e[2]),gasLimit:as(e[3]),to:os(e[4]),value:as(e[5]),data:e[6],accessList:ps(e[7])};return 8===e.length||(r.hash=ne(t),vs(r,e.slice(8),ys)),r}(e);case 2:return function(t){const e=ue(t.slice(1));9!==e.length&&12!==e.length&&is.throwArgumentError("invalid component count for transaction type: 2","payload",B(t));const r=as(e[2]),n=as(e[3]),i={type:2,chainId:as(e[0]).toNumber(),nonce:as(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:as(e[4]),to:os(e[5]),value:as(e[6]),data:e[7],accessList:ps(e[8])};return 9===e.length||(i.hash=ne(t),vs(i,e.slice(9),gs)),i}(e)}return is.throwError(`unsupported transaction type: ${e[0]}`,v.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var Es=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const As=new v("contracts/5.8.0"),ks={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function Ss(t,e){return Es(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&As.throwArgumentError("invalid address or ENS name","name",r);try{return ve(r)}catch(t){}t||As.throwError("a provider or signer is needed to resolve ENS names",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&As.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function Cs(t,e,r){return Es(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>Cs(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield Ss(t,e):"tuple"===r.type?yield Cs(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>Cs(t,e,r.arrayChildren))):Promise.reject(As.makeError("invalid value for array",v.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function _s(t,e,r){return Es(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=yt(r.pop())),As.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=mt({override:Ss(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>Es(this,void 0,void 0,function*(){return ve(t.signer)!==t.override&&As.throwError("Contract with a Signer cannot override from",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=Ss(t.provider,n.from));const i=yield mt({args:Cs(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:mt(n)||{}}),s=t.interface.encodeFunctionData(e,i.args),o={data:s,to:i.address},a=i.overrides;if(null!=a.nonce&&(o.nonce=V.from(a.nonce).toNumber()),null!=a.gasLimit&&(o.gasLimit=V.from(a.gasLimit)),null!=a.gasPrice&&(o.gasPrice=V.from(a.gasPrice)),null!=a.maxFeePerGas&&(o.maxFeePerGas=V.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(o.maxPriorityFeePerGas=V.from(a.maxPriorityFeePerGas)),null!=a.from&&(o.from=a.from),null!=a.type&&(o.type=a.type),null!=a.accessList&&(o.accessList=ps(a.accessList)),null==o.gasLimit&&null!=e.gas){let t=21e3;const r=_(s);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);o.gasLimit=V.from(e.gas).add(t)}if(a.value){const t=V.from(a.value);t.isZero()||e.payable||As.throwError("non-payable method cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),o.value=t}a.customData&&(o.customData=yt(a.customData)),a.ccipReadEnabled&&(o.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&As.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,v.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),o})}function Ns(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=Et(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function xs(t,e,r){const n=t.signer||t.provider;return function(...i){return Es(this,void 0,void 0,function*(){let s;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=yt(i.pop());null!=t.blockTag&&(s=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(s));const o=yield _s(t,e,i),a=yield n.call(o,s);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===v.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=o),e}})}}function Ts(t,e,r){return e.constant?xs(t,e,r):function(t,e){return function(...r){return Es(this,void 0,void 0,function*(){t.signer||As.throwError("sending a transaction requires a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield _s(t,e,r),i=yield t.signer.sendTransaction(n);return Ns(t,i),i})}}(t,e)}function Is(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Ps{constructor(t,e){ft(this,"tag",t),ft(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Bs extends Ps{constructor(){super("error",null)}}class Ms extends Ps{constructor(t,e,r,n){const i={address:t};let s=e.getEventTopic(r);n?(s!==n[0]&&As.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[s],super(Is(i),i),ft(this,"address",t),ft(this,"interface",e),ft(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Jt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Rs extends Ps{constructor(t,e){super("*",{address:t}),ft(this,"address",t),ft(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Fs{constructor(t,e,r){ft(this,"interface",pt(new.target,"getInterface")(e)),null==r?(ft(this,"provider",null),ft(this,"signer",null)):xn.isSigner(r)?(ft(this,"provider",r.provider||null),ft(this,"signer",r)):kn.isProvider(r)?(ft(this,"provider",r),ft(this,"signer",null)):As.throwArgumentError("invalid signer or provider","signerOrProvider",r),ft(this,"callStatic",{}),ft(this,"estimateGas",{}),ft(this,"functions",{}),ft(this,"populateTransaction",{}),ft(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ft(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?ft(this.filters,e,this.filters[r[0]]):As.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ft(this,"_runningEvents",{}),ft(this,"_wrappedEmits",{}),null==t&&As.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ft(this,"address",t),this.provider)ft(this,"resolvedAddress",Ss(this.provider,t));else try{ft(this,"resolvedAddress",Promise.resolve(ve(t)))}catch(t){As.throwError("provider is required to use ENS name as contract address",v.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])As.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&ft(this,t,Ts(this,e,!0)),null==this.functions[t]&&ft(this.functions,t,Ts(this,e,!1)),null==this.callStatic[t]&&ft(this.callStatic,t,xs(this,e,!0)),null==this.populateTransaction[t]&&ft(this.populateTransaction,t,function(t,e){return function(...r){return _s(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ft(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return Es(this,void 0,void 0,function*(){r||As.throwError("estimate require a provider or signer",v.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield _s(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&ft(this,t,this[r])}catch(t){}null==this.functions[t]&&ft(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ft(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ft(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ft(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return be(t)}static getInterface(t){return vn.isInterface(t)?t:new vn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&As.throwError("contract not deployed",v.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||As.throwError("sending a transactions require a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=yt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&As.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new Tn(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&ft(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return gn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Bs);if("event"===t)return this._normalizeRunningEvent(new Ps("event",null));if("*"===t)return this._normalizeRunningEvent(new Rs(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new Ms(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new Ms(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Ps(Is(e),e))}return this._normalizeRunningEvent(new Rs(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=Et(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||As.throwError("events require a provider or a signer with a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=yt(n.filter);return"string"==typeof e&&I(e,32)?(null!=r&&As.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Os extends Fs{}class Ds{constructor(t){ft(this,"alphabet",t),ft(this,"base",t.length),ft(this,"_alphabetMap",{}),ft(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=_(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return _(new Uint8Array(e.reverse()))}}new Ds("abcdefghijklmnopqrstuvwxyz234567");const Ls=new Ds("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Us;!function(t){t.sha256="sha256",t.sha512="sha512"}(Us||(Us={}));const zs=new v("sha2/5.8.0");function qs(t){return"0x"+mi.ripemd160().update(_(t)).digest("hex")}function js(t){return"0x"+mi.sha256().update(_(t)).digest("hex")}function Gs(t,e,r){return Us[t]||zs.throwError("unsupported algorithm "+t,v.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+mi.hmac(mi[t],_(e)).update(_(r)).digest("hex")}function Hs(t,e,r,n,i){let s;t=_(t),e=_(e);let o=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,h;l.set(e);for(let u=1;u<=o;u++){l[e.length]=u>>24&255,l[e.length+1]=u>>16&255,l[e.length+2]=u>>8&255,l[e.length+3]=255&u;let d=_(Gs(i,t,l));s||(s=d.length,h=new Uint8Array(s),o=Math.ceil(n/s),c=n-(o-1)*s),h.set(d);for(let e=1;e<r;e++){d=_(Gs(i,t,d));for(let t=0;t<s;t++)h[t]^=d[t]}const f=(u-1)*s,p=u===o?c:s;a.set(_(h).slice(0,p),f)}return B(a)}const Ws=new v("wordlists/5.8.0");class Ks{constructor(t){Ws.checkAbstract(new.target,Ks),ft(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return wr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Vs=null;function Js(t){if(null==Vs&&(Vs="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Ks.check(t)))throw Vs=null,new Error("BIP39 Wordlist for en (English) FAILED")}const $s=new class extends Ks{constructor(){super("en")}getWord(t){return Js(this),Vs[t]}getWordIndex(t){return Js(this),Vs.indexOf(t)}};Ks.register($s);const Qs={en:$s},Ys=new v("hdnode/5.8.0"),Xs=V.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Zs=Qe("Bitcoin seed"),to=2147483648;function eo(t){return(1<<t)-1<<8-t}function ro(t){return(1<<t)-1}function no(t){return L(B(t),32)}function io(t){return Ls.encode(N([t,R(js(js(t)),0,4)]))}function so(t){if(null==t)return Qs.en;if("string"==typeof t){const e=Qs[t];return null==e&&Ys.throwArgumentError("unknown locale","wordlist",t),e}return t}const oo={},ao="m/44'/60'/0'/0/0";class lo{constructor(t,e,r,n,i,s,o,a){if(t!==oo)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new es(e);ft(this,"privateKey",t.privateKey),ft(this,"publicKey",t.compressedPublicKey)}else ft(this,"privateKey",null),ft(this,"publicKey",B(r));ft(this,"parentFingerprint",n),ft(this,"fingerprint",R(qs(js(this.publicKey)),0,4)),ft(this,"address",hs(this.publicKey)),ft(this,"chainCode",i),ft(this,"index",s),ft(this,"depth",o),null==a?(ft(this,"mnemonic",null),ft(this,"path",null)):"string"==typeof a?(ft(this,"mnemonic",null),ft(this,"path",a)):(ft(this,"mnemonic",a),ft(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return io(N([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",B(this.depth),this.parentFingerprint,L(B(this.index),4),this.chainCode,null!=this.privateKey?N(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new lo(oo,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&to){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(_(this.privateKey),1),e&&(e+="'")}else r.set(_(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=_(Gs(Us.sha512,this.chainCode,r)),i=n.slice(0,32),s=n.slice(32);let o=null,a=null;if(this.privateKey)o=no(V.from(i).add(this.privateKey).mod(Xs));else{a=new es(B(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new lo(oo,o,a,this.fingerprint,no(s),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=to)throw new Error("invalid path index - "+n);r=r._derive(to+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=to)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=_(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=_(Gs(Us.sha512,Zs,r));return new lo(oo,no(n.slice(0,32)),null,"0x00000000",no(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=uo(ho(t,r=so(r)),r),lo._fromSeed(co(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return lo._fromSeed(t,null)}static fromExtendedKey(t){const e=Ls.decode(t);82===e.length&&io(e.slice(0,78))===t||Ys.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=B(e.slice(5,9)),i=parseInt(B(e.slice(9,13)).substring(2),16),s=B(e.slice(13,45)),o=e.slice(45,78);switch(B(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new lo(oo,null,B(o),n,s,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new lo(oo,B(o.slice(1)),null,n,s,i,r,null)}return Ys.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function co(t,e){e||(e="");const r=Qe("mnemonic"+e,We.NFKD);return Hs(Qe(t,We.NFKD),r,2048,64,"sha512")}function ho(t,e){e=so(e),Ys.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=_(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let s=e.getWordIndex(r[t].normalize("NFKD"));if(-1===s)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)s&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const s=32*r.length/3,o=eo(r.length/3);if((_(js(n.slice(0,s/8)))[0]&o)!==(n[n.length-1]&o))throw new Error("invalid checksum");return B(n.slice(0,s/8))}function uo(t,e){if(e=so(e),(t=_(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&ro(8-n)),n+=3);const i=t.length/4,s=_(js(t))[0]&eo(i);return r[r.length-1]<<=i,r[r.length-1]|=s>>8-i,e.join(r.map(t=>e.getWord(t)))}const fo=new v("random/5.8.0");const po=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let mo=po.crypto||po.msCrypto;function go(t){(t<=0||t>1024||t%1||t!=t)&&fo.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return mo.getRandomValues(e),_(e)}function yo(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}mo&&mo.getRandomValues||(fo.warn("WARNING: Missing strong random number source"),mo={getRandomValues:function(t){return fo.throwError("no secure random source avaialble",v.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var wo,vo={exports:{}};var bo=(wo||(wo=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function s(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var o,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(o="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(o[(240&n)>>4]+o[15&n])}return e.join("")}}),c={16:10,24:12,32:14},h=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],u=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],y=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],w=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],v=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};_.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,s=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=s[e],this._Kd[t-r][e%4]=s[e];for(var o,a=0,l=i;l<n;){if(o=s[i-1],s[0]^=u[o>>16&255]<<24^u[o>>8&255]<<16^u[255&o]<<8^u[o>>24&255]^h[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)s[e]^=s[e-1];else{for(e=1;e<i/2;e++)s[e]^=s[e-1];for(o=s[i/2-1],s[i/2]^=u[255&o]^u[o>>8&255]<<8^u[o>>16&255]<<16^u[o>>24&255]<<24,e=i/2+1;e<i;e++)s[e]^=s[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=s[e],this._Kd[t-d][f]=s[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)o=this._Kd[d][f],this._Kd[d][f]=E[o>>24&255]^A[o>>16&255]^k[o>>8&255]^S[255&o]},_.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Ke[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=f[n[s]>>24&255]^p[n[(s+1)%4]>>16&255]^m[n[(s+2)%4]>>8&255]^g[255&n[(s+3)%4]]^this._Ke[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Ke[e][s],l[4*s]=255&(u[n[s]>>24&255]^a>>24),l[4*s+1]=255&(u[n[(s+1)%4]>>16&255]^a>>16),l[4*s+2]=255&(u[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(u[255&n[(s+3)%4]]^a);return l},_.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Kd[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=y[n[s]>>24&255]^w[n[(s+3)%4]>>16&255]^v[n[(s+2)%4]>>8&255]^b[255&n[(s+1)%4]]^this._Kd[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Kd[e][s],l[4*s]=255&(d[n[s]>>24&255]^a>>24),l[4*s+1]=255&(d[n[(s+3)%4]>>16&255]^a>>16),l[4*s+2]=255&(d[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(d[255&n[(s+1)%4]]^a);return l};var N=function(t){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new _(t)};N.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.encrypt(r),e,o);return e},N.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.decrypt(r),e,o);return e};var x=function(t,e){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new _(t)};x.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),s(this._lastCipherblock,e,o)}return e},x.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[o+a]=r[a]^this._lastCipherblock[a];s(t,this._lastCipherblock,0,o,o+16)}return e};var T=function(t,e,r){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new _(t)};T.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},T.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new _(t)};I.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},I.prototype.decrypt=I.prototype.encrypt;var P=function(t){if(!(this instanceof P))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};P.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},P.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},P.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var B=function(t,e){if(!(this instanceof B))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof P||(e=new P(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new _(t)};B.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},B.prototype.decrypt=B.prototype.encrypt;var M={AES:_,Counter:P,ModeOfOperation:{ecb:N,cbc:x,cfb:T,ofb:I,ctr:B},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);s(t,r);for(var o=t.length;o<r.length;o++)r[o]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,o=0;o<e;o++)if(t[r+o]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return s(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:s}};t.exports=M}()}(vo)),vo.exports),Eo=s(bo);const Ao="json-wallets/5.8.0";function ko(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),_(t)}function So(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function Co(t){return"string"==typeof t?Qe(t,We.NFKC):_(t)}function _o(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function No(t){const e=_(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=B(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const xo=new v(Ao);class To extends At{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function Io(t,e){const r=JSON.parse(t);e=Co(e);const n=ve(_o(r,"ethaddr")),i=ko(_o(r,"encseed"));i&&i.length%16==0||xo.throwArgumentError("invalid encseed","json",t);const s=_(Hs(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),a=i.slice(16),l=new Eo.ModeOfOperation.cbc(s,o),c=Eo.padding.pkcs7.strip(_(l.decrypt(a)));let h="";for(let t=0;t<c.length;t++)h+=String.fromCharCode(c[t]);const u=ne(Qe(h));return new To({_isCrowdsaleAccount:!0,address:n,privateKey:u})}function Po(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Bo(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var Mo,Ro={exports:{}};var Fo=(Mo||(Mo=1,function(t){!function(){const e=2147483647;function r(t){const e=new Uint32Array([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]);let r=1779033703,n=3144134277,i=1013904242,s=2773480762,o=1359893119,a=2600822924,l=528734635,c=1541459225;const h=new Uint32Array(64);function u(t){let u=0,d=t.length;for(;d>=64;){let f,p,m,g,y,w=r,v=n,b=i,E=s,A=o,k=a,S=l,C=c;for(p=0;p<16;p++)m=u+4*p,h[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=h[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=h[p-15],y=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,h[p]=(g+h[p-7]|0)+(y+h[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+h[p]|0)|0)|0,y=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&v^w&b^v&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=v,v=w,w=g+y|0;r=r+w|0,n=n+v|0,i=i+b|0,s=s+E|0,o=o+A|0,a=a+k|0,l=l+S|0,c=c+C|0,u+=64,d-=64}}u(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,y=t.slice(t.length-f,t.length);for(y.push(128),d=f+1;d<g;d++)y.push(0);return y.push(p>>>24&255),y.push(p>>>16&255),y.push(p>>>8&255),y.push(p>>>0&255),y.push(m>>>24&255),y.push(m>>>16&255),y.push(m>>>8&255),y.push(m>>>0&255),u(y),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,s=new Array(i),o=new Array(64);let a,l=[];for(a=0;a<64;a++)s[a]=54;for(a=0;a<t.length;a++)s[a]^=t[a];for(a=0;a<e.length;a++)s[64+a]=e[a];for(a=i-4;a<i;a++)s[a]=0;for(a=0;a<64;a++)o[a]=92;for(a=0;a<t.length;a++)o[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(s[t]++,s[t]<=255)return;s[t]=0}}for(;n>=32;)c(),l=l.concat(r(o.concat(r(s)))),n-=32;return n>0&&(c(),l=l.concat(r(o.concat(r(s))).slice(0,n))),l}function i(t,e,r,n,i){let s;for(l(t,16*(2*r-1),i,0,16),s=0;s<2*r;s++)a(t,16*s,i,16),o(i,n),l(i,0,t,e+16*s,16);for(s=0;s<r;s++)l(t,e+2*s*16,t,16*s,16);for(s=0;s<r;s++)l(t,e+16*(2*s+1),t,16*(s+r),16)}function s(t,e){return t<<e|t>>>32-e}function o(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=s(e[0]+e[12],7),e[8]^=s(e[4]+e[0],9),e[12]^=s(e[8]+e[4],13),e[0]^=s(e[12]+e[8],18),e[9]^=s(e[5]+e[1],7),e[13]^=s(e[9]+e[5],9),e[1]^=s(e[13]+e[9],13),e[5]^=s(e[1]+e[13],18),e[14]^=s(e[10]+e[6],7),e[2]^=s(e[14]+e[10],9),e[6]^=s(e[2]+e[14],13),e[10]^=s(e[6]+e[2],18),e[3]^=s(e[15]+e[11],7),e[7]^=s(e[3]+e[15],9),e[11]^=s(e[7]+e[3],13),e[15]^=s(e[11]+e[7],18),e[1]^=s(e[0]+e[3],7),e[2]^=s(e[1]+e[0],9),e[3]^=s(e[2]+e[1],13),e[0]^=s(e[3]+e[2],18),e[6]^=s(e[5]+e[4],7),e[7]^=s(e[6]+e[5],9),e[4]^=s(e[7]+e[6],13),e[5]^=s(e[4]+e[7],18),e[11]^=s(e[10]+e[9],7),e[8]^=s(e[11]+e[10],9),e[9]^=s(e[8]+e[11],13),e[10]^=s(e[9]+e[8],18),e[12]^=s(e[15]+e[14],7),e[13]^=s(e[12]+e[15],9),e[14]^=s(e[13]+e[12],13),e[15]^=s(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function h(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function u(t,r,s,o,u,d,f){if(s=h(s,"N"),o=h(o,"r"),u=h(u,"p"),d=h(d,"dkLen"),0===s||s&s-1)throw new Error("N must be power of 2");if(s>e/128/o)throw new Error("N too large");if(o>e/128/u)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*u*o);const m=new Uint32Array(32*u*o);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*o),y=new Uint32Array(32*o*s),w=32*o,v=new Uint32Array(16),b=new Uint32Array(16),E=u*s*2;let A,k,S=0,C=null,_=!1,N=0,x=0;const T=f?parseInt(1e3/o):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,P=function(){if(_)return f(new Error("cancelled"),S/E);let e;switch(N){case 0:k=32*x*o,l(m,k,g,0,w),N=1,A=0;case 1:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++)l(g,0,y,(A+t)*w,w),i(g,w,o,v,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;A=0,N=2;case 2:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++){const t=g[16*(2*o-1)]&s-1;a(y,t*w,g,w),i(g,w,o,v,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;if(l(g,0,m,k,w),x++,x<u){N=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&I(P)};if(!f)for(;;){const t=P();if(null!=t)return t}P()}const d={scrypt:function(t,e,r,n,i,s,o){return new Promise(function(a,l){let c=0;o&&o(0),u(t,e,r,n,i,s,function(t,e,r){if(t)l(t);else if(r)o&&1!==c&&o(1),a(new Uint8Array(r));else if(o&&e!==c)return c=e,o(e)})})},syncScrypt:function(t,e,r,n,i,s){return new Uint8Array(u(t,e,r,n,i,s))}};t.exports=d}()}(Ro)),Ro.exports),Oo=s(Fo),Do=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Lo=new v(Ao);function Uo(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class zo extends At{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function qo(t,e){const r=ko(_o(t,"crypto/ciphertext"));if(B(ne(N([e.slice(16,32),r]))).substring(2)!==_o(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===_o(t,"crypto/cipher")){const n=ko(_o(t,"crypto/cipherparams/iv")),i=new Eo.Counter(n);return _(new Eo.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Lo.throwError("unsupported cipher",v.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),s=hs(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ve(e)!==s)throw new Error("address mismatch")}const o={_isKeystoreAccount:!0,address:s,privateKey:B(n)};if("0.1"===_o(t,"x-ethers/version")){const e=ko(_o(t,"x-ethers/mnemonicCiphertext")),r=ko(_o(t,"x-ethers/mnemonicCounter")),n=new Eo.Counter(r),s=new Eo.ModeOfOperation.ctr(i,n),a=_o(t,"x-ethers/path")||ao,l=_o(t,"x-ethers/locale")||"en",c=_(s.decrypt(e));try{const t=uo(c,l),e=lo.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=o.privateKey)throw new Error("mnemonic mismatch");o.mnemonic=e.mnemonic}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new zo(o)}function jo(t,e,r,n,i){return _(Hs(t,e,r,n,i))}function Go(t,e,r,n,i){return Promise.resolve(jo(t,e,r,n,i))}function Ho(t,e,r,n,i){const s=Co(e),o=_o(t,"crypto/kdf");if(o&&"string"==typeof o){const e=function(t,e){return Lo.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===o.toLowerCase()){const r=ko(_o(t,"crypto/kdfparams/salt")),a=parseInt(_o(t,"crypto/kdfparams/n")),l=parseInt(_o(t,"crypto/kdfparams/r")),c=parseInt(_o(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",o),a&a-1&&e("N",a);const h=parseInt(_o(t,"crypto/kdfparams/dklen"));return 32!==h&&e("dklen",h),n(s,r,a,l,c,64,i)}if("pbkdf2"===o.toLowerCase()){const n=ko(_o(t,"crypto/kdfparams/salt"));let i=null;const o=_o(t,"crypto/kdfparams/prf");"hmac-sha256"===o?i="sha256":"hmac-sha512"===o?i="sha512":e("prf",o);const a=parseInt(_o(t,"crypto/kdfparams/c")),l=parseInt(_o(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(s,n,a,l,i)}}return Lo.throwArgumentError("unsupported key-derivation function","kdf",o)}function Wo(t,e,r){if(Po(t)){r&&r(0);const n=Io(t,e);return r&&r(1),Promise.resolve(n)}return Bo(t)?function(t,e,r){return Do(this,void 0,void 0,function*(){const n=JSON.parse(t);return qo(n,yield Ho(n,e,Go,Oo.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function Ko(t,e){if(Po(t))return Io(t,e);if(Bo(t))return function(t,e){const r=JSON.parse(t);return qo(r,Ho(r,e,jo,Oo.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Vo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Jo=new v("wallet/5.8.0");class $o extends xn{constructor(t,e){if(super(),null!=(r=t)&&I(r.privateKey,32)&&null!=r.address){const e=new es(t.privateKey);if(ft(this,"_signingKey",()=>e),ft(this,"address",hs(this.publicKey)),this.address!==ve(t.address)&&Jo.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ft(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||ao,locale:e.locale||"en"}));const r=this.mnemonic;hs(lo.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Jo.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ft(this,"_mnemonic",()=>null)}else{if(es.isSigningKey(t))"secp256k1"!==t.curve&&Jo.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ft(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new es(t);ft(this,"_signingKey",()=>e)}ft(this,"_mnemonic",()=>null),ft(this,"address",hs(this.publicKey))}var r;e&&!kn.isProvider(e)&&Jo.throwArgumentError("invalid provider","provider",e),ft(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new $o(this,t)}signTransaction(t){return mt(t).then(e=>{null!=e.from&&(ve(e.from)!==this.address&&Jo.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(ne(ws(e)));return ws(e,r)})}signMessage(t){return Vo(this,void 0,void 0,function*(){return z(this._signingKey().signDigest(Jr(t)))})}_signTypedData(t,e,r){return Vo(this,void 0,void 0,function*(){const n=yield un.resolveNames(t,e,r,t=>(null==this.provider&&Jo.throwError("cannot resolve ENS names without a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return z(this._signingKey().signDigest(un.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ve(t.address)!==hs(t.privateKey))throw new Error("address/privateKey mismatch");if(Uo(t)){const e=t.mnemonic;if(lo.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||ao).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=_(t.privateKey),s=Co(e);let o=null,a=null,l=null;if(Uo(t)){const e=t.mnemonic;o=_(ho(e.phrase,e.locale||"en")),a=e.path||ao,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let h=null;h=r.salt?_(r.salt):go(32);let u=null;if(r.iv){if(u=_(r.iv),16!==u.length)throw new Error("invalid iv")}else u=go(16);let d=null;if(r.uuid){if(d=_(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=go(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Oo.scrypt(s,h,f,p,m,64,n).then(e=>{const r=(e=_(e)).slice(0,16),n=e.slice(16,32),s=e.slice(32,64),g=new Eo.Counter(u),y=_(new Eo.ModeOfOperation.ctr(r,g).encrypt(i)),w=ne(N([n,y])),v={address:t.address.substring(2).toLowerCase(),id:No(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:B(u).substring(2)},ciphertext:B(y).substring(2),kdf:"scrypt",kdfparams:{salt:B(h).substring(2),n:f,dklen:32,p:m,r:p},mac:w.substring(2)}};if(o){const t=go(16),e=new Eo.Counter(t),r=_(new Eo.ModeOfOperation.ctr(s,e).encrypt(o)),n=new Date,i=n.getUTCFullYear()+"-"+So(n.getUTCMonth()+1,2)+"-"+So(n.getUTCDate(),2)+"T"+So(n.getUTCHours(),2)+"-"+So(n.getUTCMinutes(),2)+"-"+So(n.getUTCSeconds(),2)+".0Z";v["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+v.address,mnemonicCounter:B(t).substring(2),mnemonicCiphertext:B(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(v)})}(this,t,e,r)}static createRandom(t){let e=go(16);t||(t={}),t.extraEntropy&&(e=_(R(ne(N([e,t.extraEntropy])),0,16)));const r=uo(e,t.locale);return $o.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Wo(t,e,r).then(t=>new $o(t))}static fromEncryptedJsonSync(t,e){return new $o(Ko(t,e))}static fromMnemonic(t,e,r){return e||(e=ao),new $o(lo.fromMnemonic(t,null,r).derivePath(e))}}const Qo=new v("networks/5.8.0");function Yo(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const s=new e.PocketProvider(t,r.pocket);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],s=new e.AnkrProvider(t,r.ankr);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return Yo(t)},e}function Xo(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Xo(t,e)},r}const Zo={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Yo("homestead")},ta={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Yo("ropsten")},ea={chainId:63,name:"classicMordor",_defaultProvider:Xo("https://www.ethercluster.com/mordor","classicMordor")},ra={unspecified:{chainId:0,name:"unspecified"},homestead:Zo,mainnet:Zo,morden:{chainId:2,name:"morden"},ropsten:ta,testnet:ta,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Yo("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Yo("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Yo("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Yo("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Yo("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Xo("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:ea,classicTestnet:ea,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Xo("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Yo("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Yo("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Yo("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function na(t){if(null==t)return null;if("number"==typeof t){for(const e in ra){const r=ra[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=ra[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=ra[t.name];if(!e)return"number"!=typeof t.chainId&&Qo.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Qo.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ia=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};function sa(t,e){return ia(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),s={};return n.headers.forEach?n.headers.forEach((t,e)=>{s[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{s[t.toLowerCase()]=n.headers.get(t)}),{headers:s,statusCode:n.status,statusMessage:n.statusText,body:_(new Uint8Array(i))}})}var oa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const aa=new v("web/5.8.0");function la(t){return new Promise(e=>{setTimeout(e,t)})}function ca(t,e){if(null==t)return null;if("string"==typeof t)return t;if(k(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ze(t)}catch(t){}return B(t)}return t}function ha(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;aa.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,s="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;aa.assertArgument(s>0&&s%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",s);const o="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let h=!1,u=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||aa.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(u=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(h=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&aa.throwError("basic authentication requires a secure https url",v.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+Er(Qe(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=yt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?br(f[3]):(p=f[3],Qe(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){aa.throwError("processing response error",v.errors.SERVER_ERROR,{body:ca(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const g=function(){let t=null;return{promise:new Promise(function(e,r){u&&(t=setTimeout(()=>{null!=t&&(t=null,r(aa.makeError("timeout",v.errors.TIMEOUT,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,timeout:u,url:l})))},u))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),y=function(){return oa(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield sa(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):s*parseInt(String(Math.random()*Math.pow(2,t))),yield la(r);continue}}}catch(t){e=t.response,null==e&&(g.cancel(),aa.throwError("missing response",v.errors.SERVER_ERROR,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(h&&304===e.statusCode?a=null:!o&&(e.statusCode<200||e.statusCode>=300)&&(g.cancel(),aa.throwError("bad response",v.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:ca(a,e.headers?e.headers["content-type"]:null),requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return g.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=s*parseInt(String(Math.random()*Math.pow(2,t)));yield la(e);continue}}g.cancel(),aa.throwError("processing response error",v.errors.SERVER_ERROR,{body:ca(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})}return g.cancel(),a}return aa.throwError("failed response",v.errors.SERVER_ERROR,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,y])}function ua(t,e,r){let n=null;if(null!=e){n=Qe(e);const r="string"==typeof t?{url:t}:yt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=yt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return ha(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Ze(t))}catch(e){aa.throwError("invalid JSON",v.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function da(t,e){return e||(e={}),null==(e=yt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,s=!1;const o=()=>!s&&(s=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{o()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)o()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!s){if(l++,l>a)return void(o()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){o()&&n(t)})}()})}var fa,pa;var ma=function(){if(pa)return fa;pa=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function s(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var s=t.charCodeAt(r);e=i(e)^31&s}return e}function o(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),o=t.toUpperCase();if(t!==n&&t!==o)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var h=s(l);if("string"==typeof h)return h;for(var u=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;h=i(h)^p,d+6>=c.length||u.push(p)}return 1!==h?"Invalid checksum for "+t:{prefix:l,words:u}}function a(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],s+=e;s>=r;)s-=r,a.push(i>>s&o);if(n)s>0&&a.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return a}return fa={decodeUnsafe:function(){var t=o.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=o.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var o=s(e=e.toLowerCase());if("string"==typeof o)throw new Error(o);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");o=i(o)^c,a+=t.charAt(c)}for(l=0;l<6;++l)o=i(o);for(o^=1,l=0;l<6;++l){a+=t.charAt(o>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},fa}(),ga=s(ma);const ya="providers/5.8.0",wa=new v(ya);class va{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),s=this.hash.bind(this),o=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:s,type:l,accessList:va.allowNull(this.accessList.bind(this),null),blockHash:va.allowNull(s,null),blockNumber:va.allowNull(a,null),transactionIndex:va.allowNull(a,null),confirmations:va.allowNull(a,null),from:e,gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),gasLimit:r,to:va.allowNull(e,null),value:r,nonce:a,data:i,r:va.allowNull(this.uint256),s:va.allowNull(this.uint256),v:va.allowNull(a),creates:va.allowNull(e,null),raw:va.allowNull(i)},t.transactionRequest={from:va.allowNull(e),nonce:va.allowNull(a),gasLimit:va.allowNull(r),gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),to:va.allowNull(e),value:va.allowNull(r),data:va.allowNull(t=>this.data(t,!0)),type:va.allowNull(a),accessList:va.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:s,address:e,topics:va.arrayOf(s),data:i,logIndex:a,blockHash:s},t.receipt={to:va.allowNull(this.address,null),from:va.allowNull(this.address,null),contractAddress:va.allowNull(e,null),transactionIndex:a,root:va.allowNull(o),gasUsed:r,logsBloom:va.allowNull(i),blockHash:s,transactionHash:s,logs:va.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:va.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:va.allowNull(r),status:va.allowNull(a),type:l},t.block={hash:va.allowNull(s),parentHash:s,number:a,timestamp:a,nonce:va.allowNull(o),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:va.allowNull(e),extraData:i,transactions:va.allowNull(va.arrayOf(s)),baseFeePerGas:va.allowNull(r)},t.blockWithTransactions=yt(t.block),t.blockWithTransactions.transactions=va.allowNull(va.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:va.allowNull(n,void 0),toBlock:va.allowNull(n,void 0),blockHash:va.allowNull(s,void 0),address:va.allowNull(e,void 0),topics:va.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:va.allowNull(a),blockHash:va.allowNull(s),transactionIndex:a,removed:va.allowNull(this.boolean.bind(this)),address:e,data:va.allowFalsish(i,"0x"),topics:va.arrayOf(s),transactionHash:s,logIndex:a},t}accessList(t){return ps(t||[])}number(t){return"0x"===t?0:V.from(t).toNumber()}type(t){return"0x"===t||null==t?0:V.from(t).toNumber()}bigNumber(t){return V.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),I(t))?t.toLowerCase():wa.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ve(t)}callAddress(t){if(!I(t,32))return null;const e=ve(R(t,12));return e===Be?null:e}contractAddress(t){return be(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||I(t))return O(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==M(r)?wa.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=V.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!I(t))throw new Error("invalid uint256");return L(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=va.check(e,t);return n._difficulty=null==r?null:V.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return va.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&V.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=va.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;I(r)&&(r=V.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),I(r)&&(r=V.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return bs(t)}receiptLog(t){return va.check(this.formats.receiptLog,t)}receipt(t){const e=va.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=V.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&wa.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):wa.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&wa.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return va.check(this.formats.filter,t)}filterLog(t){return va.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function ba(t){return t&&"function"==typeof t.isCommunityResource}function Ea(t){return ba(t)&&t.isCommunityResource()}let Aa=!1;function ka(){Aa||(Aa=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Sa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ca=new v(ya);function _a(t){return null==t?"null":(32!==M(t)&&Ca.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Na(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[_a(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return _a(t)}).join("&")}function xa(t){if("string"==typeof t){if(32===M(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Na(t);if(An.isForkEvent(t))throw Ca.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Na(t.topics||[])}throw new Error("invalid event - "+t)}function Ta(){return(new Date).getTime()}function Ia(t){return new Promise(e=>{setTimeout(e,t)})}const Pa=["block","network","pending","poll"];class Ba{constructor(t,e,r){ft(this,"tag",t),ft(this,"listener",e),ft(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Pa.indexOf(this.tag)>=0}}const Ma={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Ra(t){return L(V.from(t).toHexString(),32)}function Fa(t){return Ls.encode(N([t,R(js(js(t)),0,4)]))}const Oa=new RegExp("^(ipfs)://(.*)$","i"),Da=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Oa,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function La(t,e){try{return Ze(Ua(t,e))}catch(t){}return null}function Ua(t,e){if("0x"===t)return null;const r=V.from(R(t,e,e+32)).toNumber(),n=V.from(R(t,r,r+32)).toNumber();return R(t,r+32,r+32+n)}function za(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Ca.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function qa(t){const e=_(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function ja(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function Ga(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=_(t[n]);e[n]=qa(r),e.push(qa(i.length)),e.push(ja(i)),r+=32+32*Math.ceil(i.length/32)}return F(e)}class Ha{constructor(t,e,r,n){ft(this,"provider",t),ft(this,"name",r),ft(this,"address",t.formatter.address(e)),ft(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>V.from(t).eq(1)).catch(t=>{if(t.code===v.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Sa(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:F([t,Kr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=F(["0x9061b923",Ga([Vr(this.name),r.data])]));try{let t=yield this.provider.call(r);return _(t).length%32==4&&Ca.throwError("resolver threw error",v.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Ua(t,0)),t}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Sa(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Ua(r,0):null})}_getAddress(t,e){const r=Ma[String(t)];if(null==r&&Ca.throwError(`unsupported coin type: ${t}`,v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=_(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Fa(N([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Fa(N([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=ga.toWords(n.slice(2));return t.unshift(e),ga.encode(r.prefix,t)}}return null}getAddress(t){return Sa(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===qe?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Ra(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&Ca.throwError("invalid or unsupported coin data",v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Sa(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Da.length;r++){const n=e.match(Da[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:za(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const s=this._resolvedAddress||(yield this.getAddress()),o=(n[2]||"").split("/");if(2!==o.length)return null;const a=yield this.provider.formatter.address(o[0]),l=L(V.from(o[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:F(["0x6352211e",l])}));if(s!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=V.from(yield this.provider.call({to:a,data:F(["0x00fdd58e",L(s,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(o[0]),data:F([r,l])};let h=La(yield this.provider.call(c),0);if(null==h)return null;t.push({type:"metadata-url-base",content:h}),"erc1155"===i&&(h=h.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:h})),h.match(/^ipfs:/i)&&(h=za(h)),t.push({type:"metadata-url",content:h});const u=yield ua(h);if(!u)return null;t.push({type:"metadata",content:JSON.stringify(u)});let d=u.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Oa))return null;t.push({type:"url-ipfs",content:d}),d=za(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Sa(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Ls.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Ls.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+Er("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return Ca.throwError("invalid or unsupported content hash data",v.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Sa(this,void 0,void 0,function*(){let e=Qe(t);e=N([Ra(64),Ra(e.length),e]),e.length%32!=0&&(e=N([e,L("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",B(e));return null==r||"0x"===r?null:Ze(r)})}}let Wa=null,Ka=1;class Va extends kn{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ft(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=pt(new.target,"getNetwork")(t);e?(ft(this,"_network",e),this.emit("network",e,null)):Ca.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Sa(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||Ca.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ft(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return da(()=>this._ready().then(t=>t,t=>{if(t.code!==v.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Wa&&(Wa=new va),Wa}static getNetwork(t){return na(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Sa(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),s=[];for(let t=0;t<r.length;t++){const e=r[t],o=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield ua({url:o,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return Ca.throwError(`response not found during CCIP fetch: ${c}`,v.errors.SERVER_ERROR,{url:e,errorMessage:c});s.push(c)}return Ca.throwError(`error encountered during CCIP fetch: ${s.map(t=>JSON.stringify(t)).join(", ")}`,v.errors.SERVER_ERROR,{urls:r,errorMessages:s})})}_getInternalBlockNumber(t){return Sa(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(Ta()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=Ta(),r=mt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=Ta();return(t=V.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Sa(this,void 0,void 0,function*(){const t=Ka++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)Ca.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",Ca.makeError("network block skew detected",v.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const s=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(s)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Sa(this,void 0,void 0,function*(){return Ca.throwError("provider does not support network detection",v.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Sa(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield Ia(0),this._network;const r=Ca.makeError("underlying network changed",v.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=Ta();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=Ta(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Sa(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Sa(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,s)=>{const o=[];let a=!1;const l=function(){return!!a||(a=!0,o.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),o.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=o=>Sa(this,void 0,void 0,function*(){a||(yield Ia(1e3),this.getTransactionCount(n.from).then(h=>Sa(this,void 0,void 0,function*(){if(!a){if(h<=n.nonce)r=o;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=o;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const o=r.transactions[i];if(o.hash===t)return;if(o.from===n.from&&o.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(o.hash,e);if(l())return;let i="replaced";return o.data===n.data&&o.to===n.to&&o.value.eq(n.value)?i="repriced":"0x"===o.data&&o.from===o.to&&o.value.isZero()&&(i="cancelled"),void s(Ca.makeError("transaction was replaced",v.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(o),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),o.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||s(Ca.makeError("timeout exceeded",v.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),o.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Sa(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return V.from(t)}catch(e){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return V.from(n)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return V.from(n).toNumber()}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return B(n)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>O(t))}),i=yield this.perform("getStorageAt",n);try{return B(i)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==M(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&Ca.throwError("Transaction hash mismatch from Provider.sendTransaction.",v.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Sa(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const s=yield this._waitForTransaction(t.hash,e,n,i);return null==s&&0===e?null:(this._emitted["t:"+t.hash]=s.blockNumber,0===s.status&&Ca.throwError("transaction failed",v.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:s}),s)}),n}sendTransaction(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>B(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Sa(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?V.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?B(t):null))}),this.formatter.transactionRequest(yield mt(r))})}_getFilter(t){return Sa(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield mt(e))})}_call(t,e,r){return Sa(this,void 0,void 0,function*(){r>=10&&Ca.throwError("CCIP read exceeded maximum redirections",v.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&M(i)%32==4)try{const s=R(i,4),o=R(s,0,32);V.from(o).eq(n)||Ca.throwError("CCIP Read sender did not match",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=V.from(R(s,32,64)).toNumber(),c=V.from(R(s,l,l+32)).toNumber(),h=R(s,l+32);for(let e=0;e<c;e++){const r=La(h,32*e);null==r&&Ca.throwError("CCIP Read contained corrupt URL string",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const u=Ua(s,64);V.from(R(s,100,128)).isZero()||Ca.throwError("CCIP Read callback selector included junk",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=R(s,96,100),f=Ua(s,128),p=yield this.ccipReadFetch(t,u,a);null==p&&Ca.throwError("CCIP Read disabled or provided no URLs",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:F([d,Ga([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===v.errors.SERVER_ERROR)throw t}try{return B(i)}catch(r){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield mt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return V.from(r)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Sa(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&Ca.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&Ca.throwError("ENS name not configured",v.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(I(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),I(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){Ca.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return da(()=>Sa(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return da(()=>Sa(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return da(()=>Sa(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield mt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),va.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Sa(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Sa(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&Ca.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Sa(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new Ha(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Sa(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||Ca.throwError("network does not support ENS",v.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+Kr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Sa(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(I(t))throw e}"string"!=typeof t&&Ca.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Sa(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=La(yield this.call({to:r,data:"0x691f3431"+Kr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Sa(this,void 0,void 0,function*(){let e=null;if(I(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new Ha(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t}try{const t=La(yield this.call({to:n,data:"0x691f3431"+Kr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return Ca.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Ba(xa(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=xa(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=xa(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=xa(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ja=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const $a=new v(ya),Qa=["call","estimateGas"];function Ya(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=I(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=Ya(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return Ya(JSON.parse(t),e)}catch(t){}return null}function Xa(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ya(e,!0);if(t)return t.data;$a.throwError("missing revert data in call exception; Transaction reverted without a reason string",v.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=Ya(e.body,!1);null==r&&(r=Ya(e,!1)),r&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===v.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&$a.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&$a.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&$a.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&$a.throwError("legacy pre-eip-155 transactions not supported",v.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Qa.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Za(t){return new Promise(function(e){setTimeout(e,t)})}function tl(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function el(t){return t?t.toLowerCase():t}const rl={};class nl extends xn{constructor(t,e,r){if(super(),t!==rl)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ft(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ft(this,"_address",this.provider.formatter.address(r)),ft(this,"_index",null)):"number"==typeof r?(ft(this,"_index",r),ft(this,"_address",null)):$a.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return $a.throwError("cannot alter JSON-RPC Signer connection",v.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new il(rl,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&$a.throwError("unknown account #"+this._index,v.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=yt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=yt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ja(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&$a.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),mt({tx:mt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&$a.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected transaction",v.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Xa("sendTransaction",t,n)))})}signTransaction(t){return $a.throwError("signing transactions is unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ja(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield da(()=>Ja(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ja(this,void 0,void 0,function*(){const e="string"==typeof t?Qe(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[B(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ja(this,void 0,void 0,function*(){const e="string"==typeof t?Qe(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),B(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ja(this,void 0,void 0,function*(){const n=yield un.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(un.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ja(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class il extends nl{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const sl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class ol extends Va{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=pt(this.constructor,"defaultUrl")()),ft(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(yt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ja(this,void 0,void 0,function*(){yield Za(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=pt(this.constructor,"getNetwork");try{return e(V.from(t).toNumber())}catch(e){return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new nl(rl,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:Et(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=ua(this.connection,JSON.stringify(r),tl).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[el(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[el(e.address),e.blockTag]];case"getCode":return["eth_getCode",[el(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[el(e.address),L(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[pt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[pt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=el(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ja(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&V.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=yt(e)).transaction=yt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&$a.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Xa(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Za(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=yt(sl);if(e)for(const t in e)e[t]&&(r[t]=!0);gt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=O(V.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=B(t[e]))}),t.accessList&&(n.accessList=ps(t.accessList)),n}}let al=null;try{if(al=WebSocket,null==al)throw new Error("inject please")}catch(t){const e=new v(ya);al=function(){e.throwError("WebSockets not supported in this environment",v.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ll=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const cl=new v(ya);let hl=1;class ul extends ol{constructor(t,e){"any"===e&&cl.throwError("WebSocketProvider does not support 'any' network yet",v.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ft(this,"_websocket","string"==typeof t?new al(this.connection.url):t),ft(this,"_requests",{}),ft(this,"_subs",{}),ft(this,"_subIds",{}),ft(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),ft(t,"code",r.error.code||null),ft(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){cl.throwError("cannot reset events block on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){cl.throwError("cannot set polling interval on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ll(this,void 0,void 0,function*(){return null})}set polling(t){t&&cl.throwError("cannot set polling on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=hl++;return new Promise((n,i)=>{const s=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(s),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:s},this._wsReady&&this.websocket.send(s)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ll(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=V.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ll(this,void 0,void 0,function*(){this.websocket.readyState===al.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var dl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const fl=new v(ya);class pl extends ol{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return dl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||fl.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(ft(this,"_network",e),this.emit("network",e,null))),e})}}class ml extends pl{constructor(t,e){fl.checkAbstract(new.target,ml),t=pt(new.target,"getNetwork")(t),e=pt(new.target,"getApiKey")(e);super(pt(new.target,"getUrl")(t,e),t),"string"==typeof e?ft(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ft(this,t,e[t])})}_startPending(){fl.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return fl.throwError("API provider does not support signing",v.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return fl.throwError("not implemented; sub-classes must override getUrl",v.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const gl=new v(ya),yl="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class wl extends ul{constructor(t,e){const r=new vl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ft(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===yl}}class vl extends ml{static getWebSocketProvider(t,e){return new wl(t,e)}static getApiKey(t){return null==t?yl:(t&&"string"!=typeof t&&gl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:gl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===yl&&ka(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===yl}}const bl=new v(ya),El="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function Al(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return bl.throwArgumentError("unsupported network","name",t)}class kl extends ml{isCommunityResource(){return this.apiKey===El}static getApiKey(t){return null==t?El:t}static getUrl(t,e){null==e&&(e=El);const r={allowGzip:!0,url:"https://"+Al(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===El&&ka(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var Sl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Cl=new v(ya);class _l extends ml{static getApiKey(t){return null!=t&&Cl.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else Cl.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Sl(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Nl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const xl=new v(ya);function Tl(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?O(B(n)):"accessList"===r?"["+ps(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":B(n),e[r]=n)}return e}function Il(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Pl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Bl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Ml(t,e,r){if("call"===t&&e.code===v.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),I(r))return r;xl.throwError("missing revert data in call exception",v.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===v.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&xl.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&xl.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&xl.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&xl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Rl extends Va{constructor(t,e){super(t),ft(this,"baseUrl",this.getBaseUrl()),ft(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return xl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Nl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,s="proxy"===t?Pl:Il;this.emit("debug",{action:"request",request:n,provider:this});const o={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&ka(),Promise.resolve(!0))};let a=null;i&&(o.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield ua(o,a,s||Pl);return this.emit("debug",{action:"response",request:n,response:Et(l),provider:this}),l})}detectNetwork(){return Nl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Nl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Ml("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=Tl(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Ml("call",t,e.transaction)}}case"estimateGas":{const t=Tl(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Ml("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Bl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Bl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&xl.throwError("unsupported topic count",v.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||xl.throwError("unsupported topic format",v.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Nl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Fl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ol=new v(ya);function Dl(){return(new Date).getTime()}function Ll(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Ol.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Ul(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function zl(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(V.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>zl(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":zl(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let ql=1;function jl(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const Gl=[v.errors.CALL_EXCEPTION,v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED,v.errors.UNPREDICTABLE_GAS_LIMIT],Hl=["address","args","errorArgs","errorSignature","method","transaction"];function Wl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function Kl(t,e,r){let n=zl;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Ul(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Ul(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=yt(t)).confirmations=-1,zl(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=yt(t)).transactions=t.transactions.map(t=>((t=yt(t)).confirmations=-1,t)),zl(t))}:function(t){return null==t?null:zl(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Vl(t,e){return Fl(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:da(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Jl(t,e,r,n){return Fl(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&I(r.fromBlock)||r.toBlock&&I(r.toBlock))&&(i=yield Vl(t,e)),i.getLogs(r)}}return Ol.throwError("unknown method error",v.errors.UNKNOWN_ERROR,{method:r,params:n})})}class $l extends Va{constructor(t,e){0===t.length&&Ol.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(kn.isProvider(t)){const e=Ea(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=yt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=Ea(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Ol.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Ol.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Ll(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ft(this,"providerConfigs",Object.freeze(r)),ft(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Fl(this,void 0,void 0,function*(){return Ll(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Fl(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=Kl(this,t,e),n=yo(this.providerConfigs.map(yt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let s=0,o=!0;for(;;){const a=Dl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&s<n.length;){const r=n[s++],o=ql++;r.start=Dl(),r.staller=jl(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Jl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,Dl()),request:{method:t,params:Et(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,Dl()),request:{method:t,params:Et(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,null),request:{method:t,params:Et(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const h=n.filter(t=>t.done&&null==t.error);if(h.length>=this.quorum){const t=r(h);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;o||(yield jl(100).getPromise()),o=!1}const u=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return Gl.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(u).forEach(t=>{const e=u[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};Hl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Ol.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Ol.throwError("failed to meet quorum",v.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Wl(t)),provider:this})})}}const Ql=new v(ya),Yl="84842078b09946638c03157f83405213";class Xl extends ul{constructor(t,e){const r=new Zl(t,e),n=r.connection;n.password&&Ql.throwError("INFURA WebSocket project secrets unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ft(this,"apiKey",r.projectId),ft(this,"projectId",r.projectId),ft(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Yl}}class Zl extends ml{static getWebSocketProvider(t,e){return new Xl(t,e)}static getApiKey(t){const e={apiKey:Yl,projectId:Yl,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Ql.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Ql.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Ql.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Yl&&ka(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Yl}}const tc=new v(ya);class ec extends ml{static getApiKey(t){return t&&"string"!=typeof t&&tc.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){tc.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:tc.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const rc=new v(ya),nc="62e1ad51b37b8e00394bda3b";class ic extends ml{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=nc:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:rc.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:rc.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===nc}}const sc=new v(ya);class oc extends ml{static getApiKey(t){return t&&"string"!=typeof t&&sc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:sc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const ac=new v(ya);let lc=1;function cc(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:lc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:Et(i),provider:this}),e(i,(e,s)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:s,provider:this}),s.error){const t=new Error(s.error.message);return t.code=s.error.code,t.data=s.error.data,n(t)}t(s.result)})})}}class hc extends ol{constructor(t,e){null==t&&ac.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:Et(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=cc(0,t.sendAsync.bind(t)):t.send?n=cc(0,t.send.bind(t)):ac.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ft(this,"jsonRpcFetchFunc",n),ft(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const uc=new v(ya);function dc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new ol(t);case"ws":case"wss":return new ul(t);default:uc.throwArgumentError("unsupported URL scheme","network",t)}}const r=na(t);return r&&r._defaultProvider||uc.throwError("unsupported getDefaultProvider network",v.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:$l,AlchemyProvider:vl,AnkrProvider:kl,CloudflareProvider:_l,EtherscanProvider:Rl,InfuraProvider:Zl,JsonRpcProvider:ol,NodesmithProvider:ec,PocketProvider:ic,QuickNodeProvider:oc,Web3Provider:hc,IpcProvider:null},e)}var fc=Object.freeze({__proto__:null,AlchemyProvider:vl,AlchemyWebSocketProvider:wl,AnkrProvider:kl,BaseProvider:Va,CloudflareProvider:_l,EtherscanProvider:Rl,FallbackProvider:$l,Formatter:va,InfuraProvider:Zl,InfuraWebSocketProvider:Xl,IpcProvider:null,JsonRpcBatchProvider:class extends ol{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:Et(e),provider:this}),ua(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:ol,JsonRpcSigner:nl,NodesmithProvider:ec,PocketProvider:ic,Provider:kn,QuickNodeProvider:oc,Resolver:Ha,StaticJsonRpcProvider:pl,UrlJsonRpcProvider:ml,Web3Provider:hc,WebSocketProvider:ul,getDefaultProvider:dc,getNetwork:na,isCommunityResourcable:ba,isCommunityResource:Ea,showThrottleMessage:ka});const pc=new RegExp("^bytes([0-9]+)$"),mc=new RegExp("^(u?int)([0-9]*)$"),gc=new RegExp("^(.*)\\[([0-9]*)\\]$"),yc=new v("solidity/5.8.0");function wc(t,e,r){switch(t){case"address":return r?T(e,32):_(e);case"string":return Qe(e);case"bytes":return _(e);case"bool":return e=e?"0x01":"0x00",r?T(e,32):_(e)}let n=t.match(mc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&yc.throwArgumentError("invalid number type","type",t),r&&(i=256),T(e=V.from(e).toTwos(i),i/8)}if(n=t.match(pc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&yc.throwArgumentError("invalid bytes type","type",t),_(e).byteLength!==i&&yc.throwArgumentError(`invalid value for ${t}`,"value",e),r?_((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(gc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&yc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(wc(r,t,!0))}),N(i)}return yc.throwArgumentError("invalid type","type",t)}function vc(t,e){t.length!=e.length&&yc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(wc(t,e[n]))}),B(N(r))}const bc=new v("units/5.8.0"),Ec=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Ac(t,e){if("string"==typeof e){const t=Ec.indexOf(e);-1!==t&&(e=3*t)}return st(t,null!=e?e:18)}function kc(t,e){if("string"!=typeof t&&bc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=Ec.indexOf(e);-1!==t&&(e=3*t)}return ot(t,null!=e?e:18)}function Sc(t){return Ac(t,18)}function Cc(t){return kc(t,18)}var _c=Object.freeze({__proto__:null,AbiCoder:gr,ConstructorFragment:Ut,ErrorFragment:jt,EventFragment:Ft,FormatTypes:It,Fragment:Rt,FunctionFragment:zt,HDNode:lo,Indexed:gn,Interface:vn,LogDescription:fn,Logger:v,ParamType:Bt,RLP:de,SigningKey:es,get SupportedAlgorithm(){return Us},TransactionDescription:pn,get TransactionTypes(){return ss},get UnicodeNormalizationForm(){return We},Utf8ErrorFuncs:Je,get Utf8ErrorReason(){return Ke},_TypedDataEncoder:un,_fetchData:ha,_toEscapedUtf8String:function(t,e){return'"'+$e(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?Ye(t):Ye(55296+((t-=65536)>>10&1023))+Ye(56320+(1023&t))}).join("")+'"'},accessListify:ps,arrayify:_,base58:Ls,base64:Ar,checkProperties:gt,checkResultErrors:Jt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&bc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const s=[];for(;r.length;){if(r.length<=3){s.unshift(r);break}{const t=r.length-3;s.unshift(r.substring(t)),r=r.substring(0,t)}}return n+s.join(",")+i},computeAddress:hs,computeHmac:Gs,computePublicKey:ns,concat:N,deepCopy:Et,defaultAbiCoder:yr,defaultPath:ao,defineReadOnly:ft,dnsEncode:Vr,entropyToMnemonic:uo,fetchJson:ua,formatBytes32String:function(t){const e=Qe(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return B(N([e,qe]).slice(0,32))},formatEther:Sc,formatUnits:Ac,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=to||t%1)&&Ys.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ve,getContractAddress:be,getCreate2Address:function(t,e,r){return 32!==M(e)&&fe.throwArgumentError("salt must be 32 bytes","salt",e),32!==M(r)&&fe.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ve(R(ne(N(["0xff",ve(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ve(t).substring(2),new j(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+we("XE00"+e)+e},getJsonWalletAddress:function(t){if(Po(t))try{return ve(JSON.parse(t).ethaddr)}catch(t){return null}if(Bo(t))try{return ve(JSON.parse(t).address)}catch(t){return null}return null},getStatic:pt,hashMessage:Jr,hexConcat:F,hexDataLength:M,hexDataSlice:R,hexStripZeros:D,hexValue:O,hexZeroPad:L,hexlify:B,id:wr,isAddress:function(t){try{return ve(t),!0}catch(t){}return!1},isBytes:C,isBytesLike:k,isHexString:I,isValidMnemonic:function(t,e){try{return ho(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Wr(t).length}catch(t){}return!1},joinSignature:z,keccak256:ne,mnemonicToEntropy:ho,mnemonicToSeed:co,namehash:Kr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=tr(t);var r;r=e.map(t=>{if(sr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=nr(t,or);if(e)return[t+e.s];let r=ar[t];if(r)return r;let n=lr[t];return n?[t+n[0]]:cr[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=tr(Xe(e),We.NFKC),e.forEach(t=>{if(nr(t,hr))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(nr(t,ir))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Xe(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=_(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Ze(e.slice(0,r))},parseEther:Cc,parseTransaction:bs,parseUnits:kc,poll:da,randomBytes:go,recoverAddress:us,recoverPublicKey:rs,resolveProperties:mt,ripemd160:qs,serializeTransaction:ws,sha256:js,sha512:function(t){return"0x"+mi.sha512().update(_(t)).digest("hex")},shallowCopy:yt,shuffled:yo,solidityKeccak256:function(t,e){return ne(vc(t,e))},solidityPack:vc,soliditySha256:function(t,e){return js(vc(t,e))},splitSignature:U,stripZeros:x,toUtf8Bytes:Qe,toUtf8CodePoints:tr,toUtf8String:Ze,verifyMessage:function(t,e){return us(Jr(t),e)},verifyTypedData:function(t,e,r,n){return us(un.hash(t,e,r),n)},zeroPad:T});const Nc="ethers/5.8.0",xc=new v(Nc);var Tc=Object.freeze({__proto__:null,BaseContract:Fs,BigNumber:V,Contract:Os,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:C(e)?B(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!I(n)||n.length%2)&&As.throwArgumentError("invalid bytecode","bytecode",e),r&&!xn.isSigner(r)&&As.throwArgumentError("invalid signer","signer",r),ft(this,"bytecode",n),ft(this,"interface",pt(new.target,"getInterface")(t)),ft(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=yt(t.pop());for(const t in e)if(!ks[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&As.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){V.from(e.value).isZero()||this.interface.deploy.payable||As.throwError("non-payable constructor cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return As.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=B(N([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return Es(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),As.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield Cs(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),s=pt(this.constructor,"getContractAddress")(i),o=pt(this.constructor,"getContract")(s,this.interface,this.signer);return Ns(o,i),ft(o,"deployTransaction",i),o})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&As.throwError("missing compiler output",v.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Os.getInterface(t)}static getContractAddress(t){return be(t)}static getContract(t,e,r){return new Os(t,e,r)}},FixedNumber:lt,Signer:xn,VoidSigner:Tn,Wallet:$o,Wordlist:Ks,constants:je,get errors(){return y},getDefaultProvider:dc,logger:xc,providers:fc,utils:_c,version:Nc,wordlists:Qs});try{const t=window;null==t._ethers&&(t._ethers=Tc)}catch(t){}class Ic{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=Tc,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new hc(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new hc(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new hc(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new ol(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Os(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Os(i,r,this.provider),this.swapRouter=new Os(this.swapRouterAddress,n,this.provider);const s=await this.getLiquidityPool();if(s&&"0x0000000000000000000000000000000000000000"!==s){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Os(s,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new hc(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}getProvider(){return this.provider}getContract(t,e){if(!this.provider)throw new Error("Provider not initialized");return new Os(t,e,this.provider)}async getChainId(){if(!this.provider)throw new Error("Provider not initialized");const t=await this.provider.getNetwork();return Number(t.chainId)}async getBlock(t){if(!this.provider)throw new Error("Provider not initialized");return this.provider.getBlock(t)}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=Cc("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!V.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=Cc(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=kc(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),s=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",s),s}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return Cc(t).toString()}formatEther(t){return parseFloat(Sc(t))}parseExec(t){return kc(t,18).toString()}formatExec(t){return parseFloat(Ac(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const s=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),o={type:"approve",id:n,receipt:s,amount:e};return this.activeTransactions.set(n,o),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",o),s}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],s=t,o=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,s,o],{useContract:"router",requiresSigner:!0}),h={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,h),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const s=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],o=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:s,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,s,o,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),h={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,h),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}}class Pc{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=Tc,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(t={}){const{autoReconnect:e=!0}=t;try{if(console.log("Initializing WalletService..."),void 0===window.ethereum)return console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected"),this.isInitialized=!0,!0;if(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,e){const t=await window.ethereum.request({method:"eth_accounts"});if(t?.length>0){console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();this.selectedWallet=e,this.provider=window.ethereum,this.connectedAddress=t[0],this.connected=!0,this.ethersProvider=new hc(window.ethereum,"any"),this.signer=this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",e),console.log("[WalletService] Auto-connected to:",t[0]),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}}return this.connected||this.setupEventListeners(),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),this.isInitialized=!0,t}}async tryAutoConnect(){try{if(void 0===window.ethereum)return null;const t=await window.ethereum.request({method:"eth_accounts"});if(!t||0===t.length)return console.log("[WalletService] No previously authorized accounts found"),null;console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();console.log("[WalletService] Detected wallet type:",e),await this.selectWallet(e);const r=await this.connect();return console.log("[WalletService] Auto-reconnected to:",r),r}catch(t){return console.warn("[WalletService] Auto-connect failed:",t.message),null}}_detectWalletType(){if(void 0===window.ethereum)return"metamask";if(window.ethereum.isRabby)return"rabby";if(window.ethereum.isRainbow)return"rainbow";if(window.phantom?.ethereum)return"phantom";const t=localStorage.getItem("ms2fun_lastWallet");return t&&this.providerMap[t]?t:"metamask"}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(t){try{if(t&&await this.selectWallet(t),!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let e;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),e=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}e=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",e),!e||!e[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=e[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}setConnectedState({address:t,provider:e,ethersProvider:r,signer:n,walletType:i="metamask"},s=!0){if(!t)throw new Error("setConnectedState requires an address");if(!e)throw new Error("setConnectedState requires a provider");this.provider=e,this.connectedAddress=t,this.connected=!0,this.selectedWallet=i,this.ethersProvider=r||new hc(e,"any"),this.signer=n||this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",i),console.log("[WalletService] State set programmatically:",t),s&&this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}handleNetworkChange(){this.provider&&(this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}}class Bc{constructor(t,e={}){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),e.eventInvalidation&&this.setupEventInvalidation(e.eventInvalidation),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}setupEventInvalidation(t){this.eventBus.on("indexer:newEvents",({eventType:e})=>{const r=t[e];r&&Array.isArray(r)&&this.invalidateByPattern(...r)})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),s=Date.now()+n;this.cache.set(i,{value:r,expiresAt:s,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}}class Mc{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,s,o,a,l,c,h,u,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:s,freeSupply:o,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:h||"0",exec:u||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),y=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),y&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}}const Rc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Fc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,...Rc]:Rc}function Oc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Dc(t){if(!Oc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Lc(t,e=0){if(!Oc(t))return t;const r=Fc();if(e<0||e>=r.length)return null;const n=Dc(t);return r[e]+n}function Uc(){return Fc()}var zc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Oc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return clearTimeout(i),s}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Fc(),s=Dc(t),o=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+s,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),s}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";o.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+o.join("\n"))},getAvailableGateways:Uc,isIpfsUri:Oc,normalizeIpfsPath:Dc,resolveIpfsToHttp:Lc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class qc{async initialize(t){throw new Error("StorageAdapter.initialize() must be implemented")}async putEvents(t){throw new Error("StorageAdapter.putEvents() must be implemented")}async getEvent(t,e){throw new Error("StorageAdapter.getEvent() must be implemented")}async queryEvents(t,e){throw new Error("StorageAdapter.queryEvents() must be implemented")}async countEvents(t,e){throw new Error("StorageAdapter.countEvents() must be implemented")}async deleteEvents(t,e){throw new Error("StorageAdapter.deleteEvents() must be implemented")}async deleteEventsAfterBlock(t){throw new Error("StorageAdapter.deleteEventsAfterBlock() must be implemented")}async getSyncState(){throw new Error("StorageAdapter.getSyncState() must be implemented")}async setSyncState(t){throw new Error("StorageAdapter.setSyncState() must be implemented")}async getVersion(){throw new Error("StorageAdapter.getVersion() must be implemented")}async setVersion(t){throw new Error("StorageAdapter.setVersion() must be implemented")}async clear(){throw new Error("StorageAdapter.clear() must be implemented")}async close(){throw new Error("StorageAdapter.close() must be implemented")}}class jc extends qc{constructor(){super(),this.db=null,this.config=null,this.dbName=null}async initialize(t){this.config=t,this.dbName=t.dbName;const e=await this._getStoredVersion();return null!==e&&t.version>e&&(console.log(`[IndexedDBAdapter] Migrating from v${e} to v${t.version}`),await this._deleteDatabase()),new Promise((e,r)=>{const n=indexedDB.open(this.dbName,t.version);n.onerror=()=>{r(new Error(`Failed to open IndexedDB: ${n.error?.message}`))},n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=e=>{const r=e.target.result;this._createStores(r,t.eventTypes)}})}_createStores(t,e){for(const r of e){const e=`events_${r.name}`;if(!t.objectStoreNames.contains(e)){const n=t.createObjectStore(e,{keyPath:"id"});for(const t of r.indexedParams||[])n.createIndex(`param_${t}`,`indexed.${t}`,{unique:!1});n.createIndex("blockNumber","blockNumber",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1})}}t.objectStoreNames.contains("syncState")||t.createObjectStore("syncState",{keyPath:"id"}),t.objectStoreNames.contains("meta")||t.createObjectStore("meta",{keyPath:"key"})}async _getStoredVersion(){return new Promise(t=>{const e=indexedDB.open(this.dbName);e.onsuccess=()=>{const r=e.result,n=r.version;r.close(),t(n)},e.onerror=()=>t(null)})}async _deleteDatabase(){return new Promise((t,e)=>{this.db&&(this.db.close(),this.db=null);const r=indexedDB.deleteDatabase(this.dbName);r.onsuccess=()=>t(),r.onerror=()=>e(r.error)})}async putEvents(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");if(0===t.length)return;const e=new Map;for(const r of t)e.has(r.type)||e.set(r.type,[]),e.get(r.type).push(r);const r=[];for(const[t,n]of e)r.push(this._putEventsOfType(t,n));await Promise.all(r)}async _putEventsOfType(t,e){const r=`events_${t}`;return this.db.objectStoreNames.contains(r)||await this._addStore(t),new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.put(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async _addStore(t){const e=this.db.version;return this.db.close(),new Promise((r,n)=>{const i=indexedDB.open(this.dbName,e+1);i.onupgradeneeded=e=>{const r=e.target.result,n=`events_${t}`;if(!r.objectStoreNames.contains(n)){const t=r.createObjectStore(n,{keyPath:"id"});t.createIndex("blockNumber","blockNumber",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,r()},i.onerror=()=>n(i.error)})}async getEvent(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).get(e);i.onsuccess=()=>t(i.result||null),i.onerror=()=>n(i.error)}):null}async queryEvents(t,e={}){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).getAll();i.onsuccess=()=>{let r=i.result;e.where&&(r=r.filter(t=>this._matchesWhere(t,e.where)));const n=r.length,s=e.orderBy||"blockNumber",o=e.order||"desc";r.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100,c=r.slice(a,a+l);t({events:c,total:n,hasMore:a+l<n})},i.onerror=()=>n(i.error)}):{events:[],total:0,hasMore:!1}}async countEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r);if(e){const r=i.getAll();r.onsuccess=()=>{const n=r.result.filter(t=>this._matchesWhere(t,e)).length;t(n)},r.onerror=()=>n(r.error)}else{const e=i.count();e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}}):0}async deleteEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;if(this.db.objectStoreNames.contains(r))return new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.delete(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async deleteEventsAfterBlock(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const e=Array.from(this.db.objectStoreNames).filter(t=>t.startsWith("events_"));for(const r of e)await this._deleteEventsAfterBlockInStore(r,t)}async _deleteEventsAfterBlockInStore(t,e){return new Promise((r,n)=>{const i=this.db.transaction(t,"readwrite"),s=i.objectStore(t).index("blockNumber"),o=IDBKeyRange.lowerBound(e,!0);s.openCursor(o).onsuccess=t=>{const e=t.target.result;e&&(e.delete(),e.continue())},i.oncomplete=()=>r(),i.onerror=()=>n(i.error)})}async getSyncState(){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((t,e)=>{const r=this.db.transaction("syncState","readonly").objectStore("syncState").get("current");r.onsuccess=()=>t(r.result||null),r.onerror=()=>e(r.error)})}async setSyncState(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((e,r)=>{const n=this.db.transaction("syncState","readwrite").objectStore("syncState").put({id:"current",...t});n.onsuccess=()=>e(),n.onerror=()=>r(n.error)})}async getVersion(){return this.db?this.db.version:0}async setVersion(t){}async clear(){if(!this.db)return;const t=Array.from(this.db.objectStoreNames);return new Promise((e,r)=>{const n=this.db.transaction(t,"readwrite");for(const e of t)n.objectStore(e).clear();n.oncomplete=()=>e(),n.onerror=()=>r(n.error)})}async close(){this.db&&(this.db.close(),this.db=null)}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Gc extends qc{constructor(){super(),this.stores=new Map,this.syncState=null,this.version=0,this.config=null}async initialize(t){this.config=t;for(const e of t.eventTypes)this.stores.set(e.name,new Map);t.version>this.version&&(await this.clear(),this.version=t.version)}async putEvents(t){for(const e of t){this.stores.get(e.type)||this.stores.set(e.type,new Map),this.stores.get(e.type).set(e.id,e)}}async getEvent(t,e){const r=this.stores.get(t);return r&&r.get(e)||null}async queryEvents(t,e={}){const r=this.stores.get(t);if(!r)return{events:[],total:0,hasMore:!1};let n=Array.from(r.values());e.where&&(n=n.filter(t=>this._matchesWhere(t,e.where)));const i=n.length,s=e.orderBy||"blockNumber",o=e.order||"desc";n.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100;return{events:n.slice(a,a+l),total:i,hasMore:a+l<i}}async countEvents(t,e){const r=this.stores.get(t);if(!r)return 0;if(!e)return r.size;let n=0;for(const t of r.values())this._matchesWhere(t,e)&&n++;return n}async deleteEvents(t,e){const r=this.stores.get(t);if(r)for(const t of e)r.delete(t)}async deleteEventsAfterBlock(t){for(const e of this.stores.values())for(const[r,n]of e.entries())n.blockNumber>t&&e.delete(r)}async getSyncState(){return this.syncState}async setSyncState(t){this.syncState={...t}}async getVersion(){return this.version}async setVersion(t){this.version=t}async clear(){for(const t of this.stores.values())t.clear();this.syncState=null}async close(){}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}const Hc="mw3_indexer_settings",Wc={get(){try{const t=localStorage.getItem(Hc);return t?JSON.parse(t):this.getDefaults()}catch{return this.getDefaults()}},getDefaults:()=>({storageEnabled:!0,maxStorageMB:50}),set(t){const e={...this.get(),...t};return localStorage.setItem(Hc,JSON.stringify(e)),e},isStorageEnabled(){return this.get().storageEnabled},async clearAllData(){if("undefined"==typeof indexedDB)return;const t=(await(indexedDB.databases?.())||[]).filter(t=>t.name?.startsWith("micro-web3-events-")||t.name?.includes("colasseum-"));for(const e of t)await new Promise((t,r)=>{const n=indexedDB.deleteDatabase(e.name);n.onsuccess=t,n.onerror=r})},getStorageEstimate:async()=>navigator.storage?.estimate?navigator.storage.estimate():{used:0,quota:0}};class Kc{constructor(t,e){this.storage=t,this.eventBus=e,this.subscriptions=new Map,this.nextSubscriptionId=1}async query(t,e={}){return this.storage.queryEvents(t,{where:e.where,orderBy:e.orderBy||"blockNumber",order:e.order||"desc",limit:e.limit||100,offset:e.offset||0})}async get(t,e){return this.storage.getEvent(t,e)}subscribe(t,e){const r=Array.isArray(t)?t:[t],n=this.nextSubscriptionId++;return this.subscriptions.set(n,{eventTypes:new Set(r),callback:e}),()=>{this.subscriptions.delete(n)}}async count(t,e){return this.storage.countEvents(t,e)}notifyNewEvents(t,e){for(const r of this.subscriptions.values())if(r.eventTypes.has(t)||r.eventTypes.has("*"))try{r.callback(e)}catch(t){console.error("[QueryEngine] Subscription callback error:",t)}}async getEventChecker(t={}){const e=new Map;return{has:(r,n={})=>this._getCachedEvents(e,r).some(e=>this._matchesWhere(e,{...t,...n})),get:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})),count:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})).length,prefetch:async t=>{for(const r of t)if(!e.has(r)){const t=await this.storage.queryEvents(r,{limit:1e4});e.set(r,t.events)}}}}_getCachedEvents(t,e){return t.get(e)||[]}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}return!0}_getNestedValue(t,e){return void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Vc{constructor(t,e,r,n={}){this.storage=t,this.queryEngine=e,this.eventBus=r,this.batchSize=n.batchSize||2e3,this.confirmations=n.confirmations||2,this.realTimeEnabled=!1!==n.realTimeEnabled,this.retryAttempts=n.retryAttempts||3,this.retryDelay=n.retryDelay||1e3,this.pollInterval=n.pollInterval||12e3,this.reorgTracking=n.reorgTracking||!1,this.reorgDepth=n.reorgDepth||100,this.provider=null,this.contract=null,this.eventTypes=[],this.deployBlock=0,this.chainId=null,this.state="initializing",this.currentBlock=0,this.latestBlock=0,this.eventsIndexed=0,this.lastSyncTime=null,this.error=null,this.eventListeners=[],this.pollTimer=null,this.isPaused=!1,this.recentBlocks=new Map}async initialize({provider:t,contract:e,eventTypes:r,deployBlock:n,chainId:i}){this.provider=t,this.contract=e,this.eventTypes=r,this.deployBlock=n,this.chainId=i,await this._validateChainId();const s=await this.storage.getSyncState();s?(this.currentBlock=s.lastSyncedBlock,this.eventsIndexed=Object.values(s.eventCounts||{}).reduce((t,e)=>t+e,0),this.lastSyncTime=s.lastSyncTime):this.currentBlock=this.deployBlock-1}async _validateChainId(){const t=await this.storage.getSyncState();t&&t.chainId!==this.chainId&&(console.warn("[SyncEngine] Chain ID mismatch, clearing data"),await this.storage.clear())}async start(){if("synced"!==this.state&&"syncing"!==this.state)try{await this._syncHistorical(),this.realTimeEnabled&&!this.isPaused&&await this._startRealTimeSync()}catch(t){this.state="error",this.error=t,this.eventBus.emit("indexer:error",{code:"SYNC_ERROR",message:t.message,cause:t,recoverable:!0})}}async _syncHistorical(){this.state="syncing",this.latestBlock=await this.provider.getBlockNumber();const t=this.latestBlock-this.confirmations;if(this.currentBlock>=t)return this.state="synced",void this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:0});const e=Date.now(),r=this.currentBlock+1;this.eventBus.emit("indexer:syncStarted",{fromBlock:r,toBlock:t});for(let e=r;e<=t&&!this.isPaused;e+=this.batchSize){const n=Math.min(e+this.batchSize-1,t);await this._syncBatch(e,n);const i=(n-r+1)/(t-r+1);this.eventBus.emit("indexer:syncProgress",{progress:i,currentBlock:n,latestBlock:this.latestBlock,eventsIndexed:this.eventsIndexed})}this.isPaused||(this.state="synced",this.lastSyncTime=Date.now(),this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:Date.now()-e}))}async _syncBatch(t,e){const r=await this._fetchEventsWithRetry(t,e);if(r.length>0){const t=r.map(t=>this._parseEvent(t));await this.storage.putEvents(t),this.eventsIndexed+=t.length;const e=this._groupByType(t);for(const[t,r]of Object.entries(e))this.queryEngine.notifyNewEvents(t,r)}this.currentBlock=e,await this._saveSyncState()}async _fetchEventsWithRetry(t,e){for(let r=0;r<this.retryAttempts;r++)try{const r=[];for(const n of this.eventTypes){const i=this.contract.filters[n.name](),s=await this.contract.queryFilter(i,t,e);r.push(...s)}return r}catch(t){if(r===this.retryAttempts-1)throw t;const e=this.retryDelay*Math.pow(2,r);await this._sleep(e)}return[]}_parseEvent(t){const e={},r={};if(t.args){const n=t.eventFragment||this.contract.interface.getEvent(t.event);if(n)for(let i=0;i<n.inputs.length;i++){const s=n.inputs[i],o=t.args[i],a=this._serializeValue(o);s.indexed&&(e[s.name]=a),r[s.name]=a}}return{id:`${t.transactionHash}-${t.logIndex}`,type:t.event,blockNumber:t.blockNumber,blockHash:t.blockHash,transactionHash:t.transactionHash,logIndex:t.logIndex,timestamp:0,data:r,indexed:e}}_serializeValue(t){return null==t?null:"bigint"==typeof t||t._isBigNumber?t.toString():Array.isArray(t)?t.map(t=>this._serializeValue(t)):t}_groupByType(t){const e={};for(const r of t)e[r.type]||(e[r.type]=[]),e[r.type].push(r);return e}async _saveSyncState(){await this.storage.setSyncState({lastSyncedBlock:this.currentBlock,lastSyncTime:Date.now(),eventCounts:{},chainId:this.chainId})}async _startRealTimeSync(){try{for(const t of this.eventTypes){const e=this.contract.filters[t.name](),r=async(...t)=>{const e=t[t.length-1];await this._handleNewEvent(e)};this.contract.on(e,r),this.eventListeners.push({filter:e,listener:r})}}catch(t){console.warn("[SyncEngine] WebSocket subscription failed, falling back to polling"),this._startPolling()}this._startPolling()}_startPolling(){this.pollTimer||(this.pollTimer=setInterval(async()=>{if(!this.isPaused)try{const t=await this.provider.getBlockNumber(),e=t-this.confirmations;e>this.currentBlock&&await this._syncBatch(this.currentBlock+1,e),this.latestBlock=t,this.reorgTracking&&await this._checkForReorg(t)}catch(t){console.error("[SyncEngine] Polling error:",t)}},this.pollInterval))}async _handleNewEvent(t){this.confirmations>0&&await this._waitForConfirmations(t.transactionHash);const e=this._parseEvent(t);await this.storage.putEvents([e]),this.eventsIndexed++,e.blockNumber>this.currentBlock&&(this.currentBlock=e.blockNumber,await this._saveSyncState()),this.queryEngine.notifyNewEvents(e.type,[e]),this.eventBus.emit("indexer:newEvents",{eventType:e.type,events:[e]})}async _waitForConfirmations(t){let e=0;for(;e<this.confirmations;){const r=await this.provider.getTransactionReceipt(t);if(!r){await this._sleep(1e3);continue}e=await this.provider.getBlockNumber()-r.blockNumber+1,e<this.confirmations&&await this._sleep(1e3)}}async _checkForReorg(t){const e=await this.provider.getBlock(t);if(!e)return;const r=this.recentBlocks.get(t-1);if(r&&r!==e.parentHash&&await this._handleReorg(t-1),this.recentBlocks.set(t,e.hash),this.recentBlocks.size>this.reorgDepth){const t=Math.min(...this.recentBlocks.keys());this.recentBlocks.delete(t)}}async _handleReorg(t){let e=t;for(;e>this.deployBlock;){const t=this.recentBlocks.get(e),r=await this.provider.getBlock(e);if(t===r?.hash)break;e--}await this.storage.deleteEventsAfterBlock(e),this.currentBlock=e,await this._saveSyncState(),this.eventBus.emit("indexer:reorg",{forkBlock:t,commonAncestor:e,depth:t-e}),await this._syncHistorical()}pause(){this.isPaused=!0,this.state="paused",this.eventBus.emit("indexer:paused",{})}resume(){this.isPaused=!1,this.start(),this.eventBus.emit("indexer:resumed",{})}async resync(t){this.pause(),this.currentBlock=void 0!==t?t-1:this.deployBlock-1,await this.storage.clear(),await this._saveSyncState(),this.eventsIndexed=0,this.resume()}getStatus(){return{state:this.state,currentBlock:this.currentBlock,latestBlock:this.latestBlock,progress:this.latestBlock>0?Math.min(1,(this.currentBlock-this.deployBlock)/(this.latestBlock-this.deployBlock)):0,eventsIndexed:this.eventsIndexed,lastSyncTime:this.lastSyncTime,error:this.error}}async stop(){this.isPaused=!0;for(const{filter:t,listener:e}of this.eventListeners)this.contract.off(t,e);this.eventListeners=[],this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_sleep(t){return new Promise(e=>setTimeout(e,t))}}class Jc{constructor(t,e={}){this.queryEngine=t,this.definitions=e,this.entityAPIs={};for(const[t,r]of Object.entries(e))this.entityAPIs[t]=this._createEntityAPI(t,r)}getEntity(t){return this.entityAPIs[t]}getAllEntities(){return this.entityAPIs}_createEntityAPI(t,e){const r=this;return{query:async(n={})=>r._queryEntities(t,e,n),get:async n=>(await r._queryEntities(t,e,{[e.key]:n}))[0]||null,subscribe(n,i){const s=r._getRelevantEventTypes(e);return r.queryEngine.subscribe(s,async()=>{const s=await r._queryEntities(t,e,n);i(s)})},count:async(n={})=>(await r._queryEntities(t,e,n)).length}}async _queryEntities(t,e,r={}){const n=r.status,i={...r};delete i.status;const s=await this.queryEngine.query(e.source,{where:i,limit:1e4}),o=await this.queryEngine.getEventChecker(),a=this._getRelevantEventTypes(e);await o.prefetch(a);const l=[];for(const r of s.events){const i=await this._buildEntity(t,e,r,o);n&&i.status!==n||l.push(i)}return l}async _buildEntity(t,e,r,n){const i={_type:t,_sourceEvent:r,...r.data};if(i[e.key]=r.data[e.key]||r.indexed[e.key],e.status&&(i.status=this._evaluateStatus(i,e.status,n)),e.computed)for(const[t,r]of Object.entries(e.computed))try{i[t]=r(i,n)}catch(e){console.error(`[EntityResolver] Error computing ${t}:`,e),i[t]=null}if(e.relations)for(const[t,r]of Object.entries(e.relations))Object.defineProperty(i,t,{get:()=>this._resolveRelation(i,r),enumerable:!0});return i}_evaluateStatus(t,e,r){for(const[n,i]of Object.entries(e))if("default"!==n)try{if(i(t,r))return n}catch(t){console.error(`[EntityResolver] Error evaluating status ${n}:`,t)}return e.default||"unknown"}async _resolveRelation(t,e){const r=this.entityAPIs[e.entity];if(!r)return null;const n=t[e.foreignKey];return void 0===n?null:"many"===e.type?r.query({[e.foreignKey]:n}):r.get(n)}_getRelevantEventTypes(t){const e=new Set([t.source]);if(t.status)for(const r of Object.values(t.status))if("function"==typeof r){const t=r.toString().match(/events\.has\(['"](\w+)['"]/g)||[];for(const r of t){const t=r.match(/['"](\w+)['"]/)?.[1];t&&e.add(t)}}return Array.from(e)}}class $c{constructor(t,e){this.queryEngine=t,this.entityResolver=e}async userActivity(t,e={}){const{events:r=[],userFields:n,limit:i=50,offset:s=0}=e,o=t.toLowerCase(),a=[];for(const t of r){const e=await this.queryEngine.query(t,{limit:1e3}),r=n||this._detectAddressFields(e.events[0]);for(const t of e.events){r.some(e=>{const r=t.indexed[e]||t.data[e];return"string"==typeof r&&r.toLowerCase()===o})&&a.push({type:t.type,timestamp:t.timestamp||t.blockNumber,blockNumber:t.blockNumber,transactionHash:t.transactionHash,data:t.data})}}return a.sort((t,e)=>(e.timestamp||e.blockNumber)-(t.timestamp||t.blockNumber)),a.slice(s,s+i)}async refundable(t){const{itemEvent:e,itemKey:r,parentKey:n,cancelEvent:i,claimEvent:s,userField:o,user:a}=t,l=a.toLowerCase(),c=(await this.queryEngine.query(e,{limit:1e4})).events.filter(t=>{const e=t.indexed[o]||t.data[o];return"string"==typeof e&&e.toLowerCase()===l}),h=await this.queryEngine.query(i,{limit:1e4}),u=new Set(h.events.map(t=>t.indexed[n]||t.data[n])),d=await this.queryEngine.query(s,{limit:1e4}),f=new Set(d.events.map(t=>t.indexed[r]||t.data[r]));return c.filter(t=>{const e=t.indexed[r]||t.data[r],i=t.indexed[n]||t.data[n];return u.has(i)&&!f.has(e)})}async leaderboard(t){const{event:e,groupBy:r,aggregate:n,sumField:i,limit:s=10,where:o}=t,a=await this.queryEngine.query(e,{where:o,limit:1e4}),l=new Map;for(const t of a.events){const e=t.indexed[r]||t.data[r];if(void 0===e)continue;const n="string"==typeof e?e.toLowerCase():e;l.has(n)||l.set(n,{key:e,events:[]}),l.get(n).events.push(t)}const c=[];for(const[t,e]of l){let t;"count"===n?t=e.events.length:"sum"===n&&(t=e.events.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),c.push({key:e.key,value:t})}return c.sort((t,e)=>e.value-t.value),c.slice(0,s).map((t,e)=>({...t,rank:e+1}))}async timeSeries(t){const{event:e,interval:r,aggregate:n,sumField:i,where:s,periods:o=30}=t,a=await this.queryEngine.query(e,{where:s,limit:1e5}),l={hour:36e5,day:864e5,week:6048e5}[r];if(!l)throw new Error(`Invalid interval: ${r}`);const c=Date.now(),h=new Map;for(let t=0;t<o;t++){const e=new Date(c-(t+1)*l).toISOString();h.set(e,[])}for(const t of a.events){const e=t.timestamp?1e3*t.timestamp:c,r=Math.floor((c-e)/l);if(r>=0&&r<o){const e=new Date(c-(r+1)*l).toISOString();h.has(e)&&h.get(e).push(t)}}const u=[];for(const[t,e]of h){let r;"count"===n?r=e.length:"sum"===n&&(r=e.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),u.push({period:t,value:r})}return u.sort((t,e)=>new Date(t.period)-new Date(e.period)),u}_detectAddressFields(t){if(!t)return[];const e=[],r={...t.indexed,...t.data};for(const[t,n]of Object.entries(r))"string"==typeof n&&n.match(/^0x[a-fA-F0-9]{40}$/)&&e.push(t);return e}}class Qc extends Error{constructor(t,e,r){super(t),this.name="EventIndexerError",this.code=e,this.cause=r}}const Yc={NOT_INITIALIZED:"NOT_INITIALIZED",STORAGE_ERROR:"STORAGE_ERROR",SYNC_ERROR:"SYNC_ERROR",QUERY_ERROR:"QUERY_ERROR",INVALID_CONFIG:"INVALID_CONFIG",PROVIDER_ERROR:"PROVIDER_ERROR",REORG_DETECTED:"REORG_DETECTED"};class Xc{constructor(t,e={}){if(!t)throw new Qc("EventBus is required",Yc.INVALID_CONFIG);this.eventBus=t,this.blockchainService=e.blockchainService,this.storage=null,this.queryEngine=null,this.syncEngine=null,this.entityResolver=null,this.patternsAPI=null,this.contract=null,this.initialized=!1,this.config=null}async initialize(t){this._validateConfig(t),this.config=t;try{const e=this._getProvider(t),r=await e.getNetwork(),n=Number(r.chainId),i=this._extractEventTypes(t.contract.abi);this.storage=function(t){return"memory"===t?.type?new Gc:Wc.isStorageEnabled()?"undefined"!=typeof indexedDB?new jc:(console.warn("[EventIndexer] IndexedDB not available, falling back to memory storage"),new Gc):(console.log("[EventIndexer] User disabled IndexedDB storage, using memory"),new Gc)}(t.persistence),await this.storage.initialize({dbName:t.persistence?.dbName||`micro-web3-events-${n}`,version:t.persistence?.version||1,eventTypes:i}),this.contract=new Os(t.contract.address,t.contract.abi,e);const s=t.contract.deployBlock||await this._detectDeployBlock(e);this.queryEngine=new Kc(this.storage,this.eventBus),this.syncEngine=new Vc(this.storage,this.queryEngine,this.eventBus,t.sync||{}),await this.syncEngine.initialize({provider:e,contract:this.contract,eventTypes:i,deployBlock:s,chainId:n}),t.entities&&(this.entityResolver=new Jc(this.queryEngine,t.entities)),this.patternsAPI=new $c(this.queryEngine,this.entityResolver),this.initialized=!0,this.eventBus.emit("indexer:initialized",{}),await this.syncEngine.start()}catch(t){throw this.eventBus.emit("indexer:error",{code:Yc.STORAGE_ERROR,message:`Initialization failed: ${t.message}`,cause:t,recoverable:!1}),new Qc(`Failed to initialize EventIndexer: ${t.message}`,Yc.STORAGE_ERROR,t)}}_validateConfig(t){if(!t.contract)throw new Qc("contract config is required",Yc.INVALID_CONFIG);if(!t.contract.address)throw new Qc("contract.address is required",Yc.INVALID_CONFIG);if(!t.contract.abi||!Array.isArray(t.contract.abi))throw new Qc("contract.abi is required and must be an array",Yc.INVALID_CONFIG);if(!t.provider&&!this.blockchainService)throw new Qc("Either provider in config or blockchainService in constructor is required",Yc.INVALID_CONFIG)}_getProvider(t){if(t.provider)return t.provider;if(this.blockchainService?.getProvider)return this.blockchainService.getProvider();if(this.blockchainService?.provider)return this.blockchainService.provider;throw new Qc("No provider available",Yc.PROVIDER_ERROR)}_extractEventTypes(t){const e=[];for(const r of t)if("event"===r.type){const t=r.inputs.filter(t=>t.indexed).map(t=>t.name);e.push({name:r.name,inputs:r.inputs,indexedParams:t})}return e}async _detectDeployBlock(t){return console.warn("[EventIndexer] No deployBlock specified, starting from block 0"),0}get events(){return this._checkInitialized(),{query:(t,e)=>this.queryEngine.query(t,e),get:(t,e)=>this.queryEngine.get(t,e),subscribe:(t,e)=>this.queryEngine.subscribe(t,e),count:(t,e)=>this.queryEngine.count(t,e)}}get entities(){return this._checkInitialized(),this.entityResolver?new Proxy({},{get:(t,e)=>this.entityResolver.getEntity(e)}):(console.warn("[EventIndexer] No entities configured"),{})}get patterns(){return this._checkInitialized(),this.patternsAPI}get sync(){return this._checkInitialized(),{getStatus:()=>this.syncEngine.getStatus(),resync:t=>this.syncEngine.resync(t),clear:()=>this.storage.clear(),pause:()=>this.syncEngine.pause(),resume:()=>this.syncEngine.resume()}}_checkInitialized(){if(!this.initialized)throw new Qc("EventIndexer not initialized. Call initialize() first.",Yc.NOT_INITIALIZED)}async destroy(){this.syncEngine&&await this.syncEngine.stop(),this.storage&&await this.storage.close(),this.initialized=!1}static installHook(t){t.prototype.useIndexer?console.warn("[EventIndexer] useIndexer hook already installed"):t.prototype.useIndexer=function(t,e={},r={}){let n=null,i=!0,s=null;const o=()=>{const t={};for(const[r,n]of Object.entries(e))t[r]="function"==typeof n?n():n;return t},a=async()=>{try{const e=o();if(t.query){const r=await t.query(e);n=Array.isArray(r)?r:r.events}else n=[];i=!1,r.onUpdate&&r.onUpdate(n)}catch(t){i=!1,console.error("[useIndexer] Query error:",t),r.onError&&r.onError(t)}};return a(),t.subscribe&&(s=t.subscribe(o(),()=>{a()})),this.registerCleanup&&this.registerCleanup(()=>{s&&s()}),new Proxy([],{get:(t,e)=>"length"===e?n?.length||0:"isLoading"===e?i:e===Symbol.iterator?function*(){n&&(yield*n)}:"string"!=typeof e||isNaN(e)?n&&"function"==typeof n[e]?n[e].bind(n):n?.[e]:n?.[parseInt(e)]})}}}Xc.EventIndexerError=Qc,Xc.ErrorCodes=Yc;class Zc extends t{constructor(t){super(t),this.state={isVisible:!1}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}handleWalletClick(t){this.props.onWalletSelected&&this.props.onWalletSelected(t),this.hide()}render(){if(!this.state.isVisible)return e("div",{className:"wallet-modal-container",style:{display:"none"}});const t=Object.keys(this.props.providerMap);return e("div",{className:"wallet-modal-container"},e("div",{className:"wallet-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.hide()}},e("div",{className:"wallet-modal"},e("div",{className:"wallet-modal-header"},e("h3",null,"Select Your Wallet"),e("button",{className:"wallet-modal-close",onClick:this.bind(this.hide)},"×")),e("div",{className:"wallet-options"},t.map(t=>e("button",{key:t,className:"wallet-option","data-wallet":t,onClick:()=>this.handleWalletClick(t)},e("img",{src:this.props.walletIcons[t],alt:t}),e("span",null,t.charAt(0).toUpperCase()+t.slice(1))))))))}}class th extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.overlay=null,this.state={isVisible:!1,storageEnabled:!0,storageUsed:0,storageQuota:0,clearing:!1}}async show(){if(this.state.isVisible)return;const t=Wc.get(),e=await Wc.getStorageEstimate();this.setState({isVisible:!0,storageEnabled:t.storageEnabled,storageUsed:e.used||0,storageQuota:e.quota||0,clearing:!1}),this._createModal()}hide(){this.state.isVisible&&(this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this._escHandler&&(document.removeEventListener("keydown",this._escHandler),this._escHandler=null),this.setState({isVisible:!1}))}_createModal(){th.injectStyles(),this.overlay=document.createElement("div"),this.overlay.className="mw3-settings-overlay",this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.hide()});const t=document.createElement("div");t.className="mw3-settings-modal",this.overlay.appendChild(t),document.body.appendChild(this.overlay),r(e(eh,{...this.state,eventBus:this.eventBus,onClose:()=>this.hide(),onStorageToggle:t=>this._handleStorageToggle(t),onClearData:()=>this._handleClearData()}),t),this._escHandler=t=>{"Escape"===t.key&&this.hide()},document.addEventListener("keydown",this._escHandler)}_handleStorageToggle(t){Wc.set({storageEnabled:t}),this.setState({storageEnabled:t}),this.eventBus.emit("settings:storageChanged",{enabled:t}),this._updateModalContent()}async _handleClearData(){if(!this.state.clearing){this.setState({clearing:!0}),this._updateModalContent();try{await Wc.clearAllData();const t=await Wc.getStorageEstimate();this.setState({storageUsed:t.used||0,storageQuota:t.quota||0,clearing:!1}),this.eventBus.emit("settings:dataCleared",{})}catch(t){console.error("[SettingsModal] Failed to clear data:",t),this.setState({clearing:!1})}this._updateModalContent()}}_updateModalContent(){if(this.overlay){const t=this.overlay.querySelector(".mw3-settings-modal");t&&r(e(eh,{...this.state,eventBus:this.eventBus,onClose:()=>this.hide(),onStorageToggle:t=>this._handleStorageToggle(t),onClearData:()=>this._handleClearData()}),t)}}static injectStyles(){if(document.getElementById("mw3-settings-styles"))return;const t=document.createElement("style");t.id="mw3-settings-styles",t.textContent="\n .mw3-settings-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n backdrop-filter: blur(4px);\n }\n\n .mw3-settings-modal {\n background: linear-gradient(135deg, #1a1a2e, #16213e);\n border: 1px solid rgba(218, 165, 32, 0.3);\n border-radius: 12px;\n width: 90%;\n max-width: 400px;\n color: #fff;\n font-family: 'Lato', system-ui, sans-serif;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n }\n\n .mw3-settings-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.25rem;\n border-bottom: 1px solid rgba(218, 165, 32, 0.2);\n }\n\n .mw3-settings-header h2 {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n }\n\n .mw3-settings-close {\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n }\n\n .mw3-settings-close:hover {\n color: #fff;\n }\n\n .mw3-settings-content {\n padding: 1.25rem;\n }\n\n .mw3-settings-section h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.9rem;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-description {\n margin: 0 0 1rem 0;\n font-size: 0.8rem;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n }\n\n .mw3-settings-row {\n margin-bottom: 1rem;\n }\n\n .mw3-settings-toggle {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n }\n\n .mw3-settings-toggle input {\n display: none;\n }\n\n .mw3-toggle-slider {\n width: 44px;\n height: 24px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n position: relative;\n transition: background 0.2s;\n }\n\n .mw3-toggle-slider::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #fff;\n border-radius: 50%;\n transition: transform 0.2s;\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider {\n background: rgba(218, 165, 32, 0.8);\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider::after {\n transform: translateX(20px);\n }\n\n .mw3-toggle-label {\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-info {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.5);\n margin-bottom: 1rem;\n }\n\n .mw3-settings-note {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.4);\n margin: 0;\n font-style: italic;\n }\n\n .mw3-settings-btn {\n padding: 0.625rem 1rem;\n border-radius: 6px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s;\n }\n\n .mw3-settings-btn--primary {\n background: rgba(218, 165, 32, 0.9);\n color: #1a1a2e;\n }\n\n .mw3-settings-btn--primary:hover {\n background: rgba(218, 165, 32, 1);\n }\n\n .mw3-settings-btn--danger {\n background: rgba(255, 99, 71, 0.2);\n color: rgba(255, 99, 71, 0.9);\n border: 1px solid rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn--danger:hover {\n background: rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .mw3-settings-footer {\n padding: 1rem 1.25rem;\n border-top: 1px solid rgba(218, 165, 32, 0.2);\n display: flex;\n justify-content: flex-end;\n }\n ",document.head.appendChild(t)}}class eh extends t{render(){const{storageEnabled:t,storageUsed:r,storageQuota:n,clearing:i,onClose:s,onStorageToggle:o,onClearData:a}=this.props,l=(r/1048576).toFixed(1),c=(n/1048576).toFixed(0);return e("div",null,e("div",{className:"mw3-settings-header"},e("h2",null,"Settings"),e("button",{className:"mw3-settings-close",onClick:s},"×")),e("div",{className:"mw3-settings-content"},e("div",{className:"mw3-settings-section"},e("h3",null,"Data Storage"),e("p",{className:"mw3-settings-description"},"Event data is cached locally to improve performance. You can disable this to save space."),e("div",{className:"mw3-settings-row"},e("label",{className:"mw3-settings-toggle"},e("input",{type:"checkbox",checked:t,onChange:t=>o(t.target.checked)}),e("span",{className:"mw3-toggle-slider"}),e("span",{className:"mw3-toggle-label"},"Enable local event storage"))),e("div",{className:"mw3-settings-info"},e("span",null,`Storage used: ${l} MB${c>0?` / ${c} MB`:""}`)),e("div",{className:"mw3-settings-row"},e("button",{className:"mw3-settings-btn mw3-settings-btn--danger",disabled:i,onClick:a},i?"Clearing...":"Clear All Cached Data")),e("p",{className:"mw3-settings-note"},"Disabling storage means event history will need to be re-fetched each session."))),e("div",{className:"mw3-settings-footer"},e("button",{className:"mw3-settings-btn mw3-settings-btn--primary",onClick:s},"Done")))}}class rh extends t{constructor(t){super(t),this.walletService=t.walletService,this.walletModal=null,this.settingsModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}didMount(){console.log("[FloatingWalletButton] didMount called"),this.initialize(),this.setupClickOutsideHandler()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=await window.ethereum.request({method:"eth_accounts"});if(r&&r.length>0){const n=this._detectWalletType();console.log("[FloatingWalletButton] Detected existing connection:",n,r[0]);try{await this.walletService.selectWallet(n),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&(console.log("[FloatingWalletButton] Auto-connected to existing session:",n),localStorage.setItem("ms2fun_lastWallet",n))}catch(t){console.log("[FloatingWalletButton] Could not auto-connect:",t.message)}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}_detectWalletType(){return void 0===window.ethereum?"metamask":window.ethereum.isRabby?"rabby":window.ethereum.isRainbow?"rainbow":window.phantom?.ethereum?"phantom":"metamask"}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new hc(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Sc(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){this.subscribe("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),this.subscribe("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),this.subscribe("wallet:changed",async t=>{await this.loadWalletInfo(t.address)})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):this.showWalletModal()}showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},n={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),r(e(Zc,{providerMap:t,walletIcons:n,onWalletSelected:async t=>{await this.handleWalletSelection(t)},ref:t=>this.walletModal=t}),this.modalRoot)),this.walletModal?.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return e("div",{className:"floating-wallet-button loading"},e("div",{className:"wallet-spinner"}));const{walletConnected:t,address:r,balance:n,menuOpen:i,hasExecTokens:s,isVaultBenefactor:o}=this.state;if(!t)return e("div",{className:"floating-wallet-button disconnected",ref:t=>this.element=t},e("button",{className:"wallet-btn",onClick:this.bind(this.handleButtonClick)},e("span",{className:"wallet-icon"},"🦊"),e("span",{className:"wallet-text"},"Connect")));const a=`${r.slice(0,6)}...${r.slice(-4)}`;return e("div",{className:"floating-wallet-button connected "+(i?"menu-open":""),ref:t=>this.element=t},e("button",{className:"wallet-btn",title:`${this.escapeHtml(r)}\nBalance: ${n} ETH`,onClick:this.bind(this.handleButtonClick)},e("span",{className:"wallet-icon"},"🦊"),e("span",{className:"wallet-address"},this.escapeHtml(a))),i&&this.renderDropdownMenu(r,n,s,o))}renderDropdownMenu(t,r,n,i){const s=`${t.slice(0,6)}...${t.slice(-4)}`;return e("div",{className:"wallet-dropdown-menu"},e("div",{className:"dropdown-header"},e("div",{className:"dropdown-address"},this.escapeHtml(s)),e("div",{className:"dropdown-balance"},`${r} ETH`)),e("div",{className:"dropdown-divider"}),e("div",{className:"dropdown-items"},e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/portfolio")},e("span",{className:"item-icon"},"📊"),e("span",{className:"item-label"},"Portfolio")),n&&e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/governance")},e("span",{className:"item-icon"},"🗳️"),e("span",{className:"item-label"},"Governance")),e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/staking")},e("span",{className:"item-icon"},"🎯"),e("span",{className:"item-label"},"Staking")),i&&e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/portfolio?filter=vaults")},e("span",{className:"item-icon"},"💰"),e("span",{className:"item-label"},"Vault Positions"))),e("div",{className:"dropdown-divider"}),e("div",{className:"dropdown-items"},e("button",{className:"dropdown-item",onClick:()=>{this.setState({menuOpen:!1}),this.openSettings()}},e("span",{className:"item-icon"},"⚙️"),e("span",{className:"item-label"},"Settings")),e("button",{className:"dropdown-item disconnect",onClick:this.bind(this.handleDisconnect)},e("span",{className:"item-icon"},"🔌"),e("span",{className:"item-label"},"Disconnect"))))}openSettings(){this.settingsModal||(this.settingsModal=new th({eventBus:n})),this.settingsModal.show()}willUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null),this.settingsModal&&(this.settingsModal.hide(),this.settingsModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class nh extends Zc{handleWalletOptionClick(t){this.props.onWalletSelected&&this.props.onWalletSelected(t),this.hide()}render(){if(!this.state.isVisible)return e("div",{className:"wallet-modal-container",style:{display:"none"}});const t=Object.keys(this.props.providerMap);return e("div",{className:"wallet-modal-container"},e("div",{className:"wallet-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.hide()}},e("div",{className:"wallet-modal"},e("div",{className:"wallet-modal-header"},e("h3",null,"Select Your Wallet"),e("button",{className:"wallet-modal-close",onClick:this.bind(this.hide)},"×")),e("div",{className:"wallet-options"},t.map(t=>e("button",{key:t,className:"wallet-option",onClick:()=>this.handleWalletOptionClick(t)},e("img",{src:this.props.walletIcons[t],alt:t}),e("span",null,t.charAt(0).toUpperCase()+t.slice(1))))))))}}class ih extends rh{constructor(t){super(t),this.modalRoot=null}showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},n=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),r(e(nh,{providerMap:t,walletIcons:n,onWalletSelected:async t=>{await this.handleWalletSelection(t)},ref:t=>this.walletModal=t}),this.modalRoot)),this.walletModal?.show()}willUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.willUnmount()}render(){if(this.state.loading)return e("div",{className:"floating-wallet-button loading"},e("div",{className:"wallet-spinner"}));const{walletConnected:t,address:r,balance:n,menuOpen:i}=this.state;if(!t)return e("div",{className:"floating-wallet-button disconnected",ref:t=>this.element=t},e("button",{className:"wallet-btn",onClick:this.bind(this.handleWalletToggle)},e("span",{className:"wallet-mark"}),e("span",{className:"wallet-text"},"Connect Wallet")));const s=`${r.slice(0,6)}...${r.slice(-4)}`,o=["floating-wallet-button","connected"];return i&&o.push("menu-open"),e("div",{className:o.join(" "),ref:t=>this.element=t},e("button",{className:"wallet-btn",title:`${this.escapeHtml(r)}\nBalance: ${n} ETH`,onClick:this.bind(this.handleWalletToggle)},e("span",{className:"wallet-mark wallet-mark--connected"}),e("span",{className:"wallet-address"},this.escapeHtml(s)),e("span",{className:"wallet-disconnect",title:"Disconnect",onClick:this.bind(this.handleInlineDisconnect)},"⏏︎")),this.renderWalletPanel(r,n,i))}renderWalletPanel(t,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return e("div",{className:"wallet-info-panel","aria-hidden":n?"false":"true"},e("div",{className:"wallet-info-row"},e("span",{className:"wallet-info-label"},"Address"),e("span",{className:"wallet-info-value"},this.escapeHtml(i))),e("div",{className:"wallet-info-row"},e("span",{className:"wallet-info-label"},"ETH Balance"),e("span",{className:"wallet-info-value"},`${r} ETH`)))}didUpdate(){this.state.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener()}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),this.handleDisconnect(t)}}class sh extends t{constructor(t={}){super(t),this.state={gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}}getCurrentUrl(){const{src:t}=this.props;return t?Oc(t)?Lc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Uc(),{src:r}=this.props;if(!Oc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n})}normalizeStyle(t){return t&&"object"==typeof t?t:{}}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}render(){const{src:t,alt:r="",className:n="",style:i={},loading:s="lazy",placeholder:o,errorPlaceholder:a}=this.props,{isLoading:l,hasError:c}=this.state;if(!t)return e("div",{className:"ipfs-image-empty"});const h=this.getCurrentUrl();if(c)return a||e("div",{className:`ipfs-image-error ${n}`,style:this.normalizeStyle(i)},e("div",{className:"ipfs-image-error-icon"},"⚠️"),e("div",{className:"ipfs-image-error-text"},"IPFS image unavailable"));const u=l?{opacity:0}:{opacity:1,transition:"opacity 0.3s"};return e("div",{className:`ipfs-image-container ${n}`,style:this.normalizeStyle(i)},l&&o,e("img",{src:h||"",alt:r,loading:s,className:"ipfs-image "+(l?"ipfs-image-loading":"ipfs-image-loaded"),style:u,onLoad:this.bind(this.handleImageLoad),onError:this.bind(this.handleImageError)}))}}sh.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n\n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .ipfs-image-loading {\n opacity: 0;\n }\n\n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n\n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n\n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n\n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n\n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n\n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class oh extends t{constructor(t){super(t),this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.updateTimer=null}didMount(){this.subscribe("contractData:updated",t=>{const e=t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool;this.state.isPhase2!==e&&this.setState({isPhase2:e})})}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.setState({lastValidationState:r,isValid:r}),this.props.eventBus?.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}handleMessageInput(t){const e=t.target.value||"";this.setState({message:e}),this.validateTransaction(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.setState({nftMintingEnabled:e}),this.validateTransaction(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.props.eventBus?.emit("transactionOptions:update",t)}render(){const{nftMintingEnabled:t,message:r,isValid:n,isPhase2:i,swapDirection:s}=this.state;if(null===i||i)return e("div",{className:"transaction-options empty"});const o=this.getValidationErrors();return e("div",{className:"transaction-options"},e("div",{className:"option-group "+("sell"===s?"hidden":"")},e("label",{className:"nft-toggle"},e("input",{type:"checkbox",checked:t,onChange:this.bind(this.handleNFTToggle)}),"Mint NFT with transaction")),e("div",{className:"option-group"},e("label",{htmlFor:"messageInput"},"Transaction Message"),e("textarea",{id:"messageInput",maxLength:140,placeholder:"Enter optional message...",value:r,onInput:this.bind(this.handleMessageInput)}),e("span",{className:"character-count "+(r.length>140?"error":"")},`${r.length}/140`)),e("div",{className:"validation-status "+(n?"valid":"invalid")},o.map((t,r)=>e("p",{key:r,className:"error"},t))))}}class ah extends t{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,s=Date.now()+Math.random(),o={id:s,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,o]}),i>0&&setTimeout(()=>this.close(s),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}handleClose(t){this.close(t)}render(){const{messages:t}=this.state;return e("div",{id:"message-popup-container"},t.map(t=>e("div",{key:t.id,className:`message-popup ${t.type}`,"data-id":t.id},e("div",{className:"message-content"},t.title&&e("div",{className:"message-title"},t.title),e("div",{className:"message-text"},t.message)),e("button",{className:"close-button",onClick:()=>this.handleClose(t.id)},"×"))))}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const lh={PRICE:"price:updated",STATUS:"price:status"};class ch extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null}}didMount(){this.eventBus&&(this.subscribe(lh.PRICE,this.bind(this.handlePriceUpdate)),this.subscribe(lh.STATUS,this.bind(this.handleStatusUpdate)))}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}render(){const{price:t,lastUpdated:r,loading:n,error:i}=this.state;return n?e("div",{className:"price-display loading marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"loading-indicator"},"Loading..."))):i?e("div",{className:"price-display error marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"error-message"},`Error: ${i}`))):e("div",{className:"price-display marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"price-value"},e("span",{className:"amount"},Number(t).toFixed(8)),e("span",{className:"currency"},"ETH / Cult Exec"))))}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class hh extends t{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new ah("approve-status"),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),this.state={status:"idle",statusMessage:""},console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}didMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`)}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{if(this.setState({status:"pending",statusMessage:"Waiting for wallet confirmation..."}),this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const t=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${t}`);const e=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${e}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${e}`),this.setState({statusMessage:"Transaction submitted, waiting for confirmation..."}),console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const r=await this.blockchainService.setApproval(e,t);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,r)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}this.setState({status:"success",statusMessage:"Approval successful!"}),console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}this.setState({status:"error",statusMessage:`Error: ${e}`}),this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element&&(this.element.style.display="block"),console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element&&(this.element.style.display="none")}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter,r=parseInt(this.amount).toLocaleString(),{status:n,statusMessage:i}=this.state,s="pending"===n;return e("div",{className:"approve-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.handleClose()}},e("div",{className:"approve-modal"},e("button",{className:"approve-modal-close",onClick:this.bind(this.handleClose)},"×"),e("div",{className:"approve-modal-content"},e("h2",null,"Approve Router"),e("p",null,"Before selling your $EXEC tokens, you need to approve the router contract to spend them."),e("div",{className:"approve-details"},e("div",{className:"approve-info"},e("span",{className:"label"},"Amount to Approve:"),e("span",{className:"value"},`${r} $EXEC`)),e("div",{className:"approve-info"},e("span",{className:"label"},"Router Address:"),e("span",{className:"value"},t))),i&&e("div",{className:`status-message ${n}`},i),e("button",{className:"approve-button",disabled:s,onClick:this.bind(this.handleApprove)},s?"Approving...":"Approve"))))}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n\n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n\n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n\n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n\n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class uh extends t{constructor(t={}){super(t)}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}render(){const{direction:t,ethAmount:r,execAmount:n,calculatingAmount:i,freeMint:s,balances:o={eth:"0",exec:"0"}}=this.props,a=parseFloat(o.eth||0).toFixed(6),l=parseInt(o.exec||0).toLocaleString(),c="sell"===t&&s?`Available: ${(parseInt(o.exec||0)-1e6).toLocaleString()}`:`Balance: ${l}`,h="buy"===t?i?"Loading...":n:i?"Loading...":r,u="buy"===t?"ETH":"$EXEC",d="buy"===t?"$EXEC":"ETH",f="buy"===t?`Balance: ${a}`:c,p="buy"===t?`Balance: ${l}`:`Balance: ${a}`;return e("div",{className:"swap-inputs"},e("div",{className:"input-container"},e("input",{type:"text",className:"top-input",value:"buy"===t?r:n,placeholder:"0.0",pattern:"^[0-9]*[.]?[0-9]*$",onInput:t=>this.handleInput(t,"top")}),e("div",{className:"token-info"},e("span",{className:"token-symbol"},u),e("span",{className:"token-balance"},f))),e("div",{className:"direction-switch-slot"}),e("div",{className:"input-container"},e("input",{type:"text",className:"bottom-input",value:h,placeholder:"0.0",pattern:"^[0-9]*[.]?[0-9]*$",onInput:t=>this.handleInput(t,"bottom")}),e("div",{className:"token-info"},e("span",{className:"token-symbol"},d),e("span",{className:"token-balance"},p))))}}class dh extends t{constructor(t={}){super(t)}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}render(){const{direction:t,disabled:r}=this.props,n="buy"===t?"Buy $EXEC":"Sell $EXEC";return e("button",{className:"swap-button",disabled:r,onClick:this.bind(this.handleClick)},n)}}class fh extends t{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.messagePopup=new ah("status-message"),this.messagePopup.initialize?.(),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`[SwapInterface] Instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if("eth"===e){const e=parseFloat(t);return(e/r*1e6*.95).toFixed(0)}{const e=parseFloat(t);return(e/1e6*r*1.055).toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state,i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}didMount(){console.log(`[${this.instanceId}] SwapInterface didMount called`),this.bindEvents();const t=[["contractData:updated",this.bind(this.handleContractDataUpdate),"high"],["transaction:pending",this.bind(this.handleTransactionEvents),"normal"],["transaction:confirmed",this.bind(this.handleTransactionEvents),"normal"],["transaction:success",this.bind(this.handleTransactionEvents),"normal"],["transaction:error",this.bind(this.handleTransactionEvents),"normal"],["balances:updated",this.bind(this.handleBalanceUpdate),"high"],["transactionOptions:update",this.bind(this.handleTransactionOptionsUpdate),"low"]];this.eventListeners=t.map(([t,e])=>this.eventBus.on(t,e));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0})}}willUnmount(){if(console.log(`[${this.instanceId}] SwapInterface willUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}bindEvents(){}handleTransactionEvents(t){if(t?.handledBy?.includes(this.instanceId))return;t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending"),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.setState({ethAmount:"",execAmount:"",calculatingAmount:!1})}if(t.error&&!t.handled){let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer);const r={activeInput:t,calculatingAmount:!0};"buy"===this.state.direction?"top"===t?r.ethAmount=e:r.execAmount=e:"top"===t?r.execAmount=e:r.ethAmount=e,this.setState(r),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?this.setState({execAmount:n,calculatingAmount:!1}):this.setState({ethAmount:n,calculatingAmount:!1})}catch(t){console.error("Error calculating swap amount:",t),this.setState({calculatingAmount:!1})}},750)}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e)}handleQuickFill(t,e){let r;if(t)r=t;else if(e){const{balances:t}=this.state,n=t.exec;if(!n||"0"===n)return;let i=BigInt(n)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");r=(i*BigInt(e)/BigInt(100)).toString()}this.handleInput("top",r)}isLiquidityDeployed(){const{contractData:t}=this.state;return!(!t||!t.liquidityPool)&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:n,direction:i,balances:s,freeMint:o}=this.state;if(!t||!n||parseFloat(t)<=0||parseFloat(n)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===i){let e=parseFloat(this.blockchainService.formatEther(s.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=n.replace(/,/g,""),e=BigInt(s.exec||0);if(BigInt(parseInt(t)||0)>e){const e=parseInt(s.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===i&&parseInt(n.replace(/,/g,""))<=1e6&&o)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const a=this.isLiquidityDeployed(),l=this.state.execAmount.replace(/,/g,"");if(a){const t=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(l),i=await this.getAddress();if(!i)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(i,{amount:n},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,s=await this.blockchainService.getApproval(i,t);if(BigInt(s)<BigInt(n)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){}this.approveModal=null}const t=document.createElement("div");return document.body.appendChild(t),r(e(hh,{amount:l,blockchainService:this.blockchainService,userAddress:i,eventBus:this.eventBus,ref:t=>this.approveModal=t}),t),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(i,{amount:n})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{t.parentNode&&t.parentNode.removeChild(t),this.approveModal=null}),void this.approveModal?.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(i,{amount:n})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=l;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(l);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=this.isLiquidityDeployed();null!==t&&e?t!==r&&this.setState({isPhase2:r}):this.setState({isPhase2:r,dataReady:!0})}catch(t){console.error("Error in handleContractDataUpdate:",t)}}async getAddress(){try{return await Promise.resolve(this._address)}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}render(){const{direction:t,isPhase2:r,dataReady:n,balances:i,freeMint:s,freeSupply:o,ethAmount:a,execAmount:l,calculatingAmount:c}=this.state;return n&&null!==r?(parseFloat(i.eth).toFixed(6),parseInt(i.exec).toLocaleString(),e("div",{className:"swap-interface"},e(ch,{price:this.state.price,contractData:this.state.contractData,eventBus:this.eventBus}),"sell"===t&&s&&!r&&e("div",{className:"free-mint-notice"},"You have 1,000,000 $EXEC you received for free that cannot be sold here."),"buy"===t&&o>0&&!s&&!r&&e("div",{className:"free-mint-notice free-mint-bonus"},"1,000,000 $EXEC will be added to your purchase. Thank you."),e("div",{className:"quick-fill-buttons-container"},e("div",{className:"quick-fill-buttons"},"buy"===t?[e("button",{key:"0.0025",onClick:()=>this.handleQuickFill("0.0025")},"0.0025"),e("button",{key:"0.01",onClick:()=>this.handleQuickFill("0.01")},"0.01"),e("button",{key:"0.05",onClick:()=>this.handleQuickFill("0.05")},"0.05"),e("button",{key:"0.1",onClick:()=>this.handleQuickFill("0.1")},"0.1")]:[e("button",{key:"25",onClick:()=>this.handleQuickFill(null,25)},"25%"),e("button",{key:"50",onClick:()=>this.handleQuickFill(null,50)},"50%"),e("button",{key:"75",onClick:()=>this.handleQuickFill(null,75)},"75%"),e("button",{key:"100",onClick:()=>this.handleQuickFill(null,100)},"100%")])),e(uh,{direction:t,ethAmount:a,execAmount:l,calculatingAmount:c,freeMint:s,balances:i,isPhase2:r,onInput:this.bind(this.handleInput)}),e("div",{className:"direction-switch-container"},e("button",{className:"direction-switch",onClick:this.bind(this.handleDirectionSwitch)},"↕")),!r&&e(oh,{eventBus:this.eventBus,swapDirection:t,isPhase2:r}),e(dh,{direction:t,disabled:c,onClick:this.bind(this.handleSwap)}))):e("div",{className:"swap-interface"},e("div",{className:"price-display-container"}),e("div",{className:"quick-fill-buttons-container"}),e("div",{className:"swap-inputs-container",style:{padding:"20px",textAlign:"center"}},"Loading swap interface..."),e("div",{className:"transaction-options-container"}),e("div",{className:"swap-button-container"}))}}class ph extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null},this.canvasRef=null}didMount(){this.subscribe("contractData:updated",t=>this.handleContractDataUpdate(t)),this.subscribe("price:updated",t=>this.handlePriceUpdate(t)),this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}willUnmount(){this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler)}handleContractDataUpdate(t){const e={totalBondingSupply:t.totalBondingSupply,totalMessages:t.totalMessages,totalNFTs:t.totalNFTs,contractEthBalance:t.contractEthBalance,dataReady:!0};this.state.liquidityPool!==t.liquidityPool&&(e.liquidityPool=t.liquidityPool),this.setState(e),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}handlePriceUpdate(t){this.setState({currentPrice:t.price}),this.isLiquidityDeployed()||this.drawCurve()}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){if(this.containerRef)try{const t=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;this.containerRef.innerHTML="";const e=document.createElement("iframe");e.id="dextools-widget",e.title="$EXEC DEXTools Trading Chart",e.width="100%",e.height="100%",e.src=t,e.style.border="none",e.onerror=()=>{this.containerRef.innerHTML='<div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;"><div>Chart unavailable</div></div>'},this.containerRef.appendChild(e)}catch(t){console.error("Error rendering DEXTools chart:",t)}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){if(!this.canvasRef)return;const t=this.canvasRef,e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e,t):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t,e){const r=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,n,r),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,s=e(i),o=i*t.width*.8+.1*t.width,a=.9*t.height-s*t.height*.8;r.push({x:o,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const s=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(s.x,s.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}render(){const t=this.isLiquidityDeployed();return e("div",{className:"bonding-curve marble-bg",ref:t=>this.containerRef=t},!t&&e("canvas",{id:"curveChart",ref:t=>{this.canvasRef=t,t&&this.drawCurve()}}))}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class mh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null}}didMount(){this.eventBus&&this.subscribe("balances:updated",this.bind(this.handleBalanceUpdate))}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}render(){const{balances:t,loading:r,error:n}=this.state,i=["balance-display","marble-bg"];return r&&i.push("loading"),n&&i.push("error"),e("div",{className:i.join(" ")},e("div",{className:"balance-header"},e("h3",null,"Your Balances"),t.lastUpdated&&e("span",{className:"last-updated"},`Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}`)),e("div",{className:"balance-content"},r?e("div",{className:"loading-indicator"},"Loading balances..."):n?e("div",{className:"error-message"},n):e("div",{className:"balance-grid"},e("div",{className:"balance-item eth"},e("span",{className:"label"},"ETH Balance"),e("span",{className:"amount"},t.eth)),e("div",{className:"balance-item exec"},e("span",{className:"label"},"EXEC Balance"),e("span",{className:"amount"},t.exec)))))}}class gh extends t{constructor(t){if(super(t),!t.indexer)throw new Error("SyncProgressBar requires indexer instance");if(!t.eventBus)throw new Error("SyncProgressBar requires eventBus instance");this.indexer=t.indexer,this.eventBus=t.eventBus,this.state={status:"initializing",progress:0,currentBlock:0,latestBlock:0,error:null}}didMount(){this.subscribe("indexer:syncProgress",t=>{this.setState({status:"syncing",progress:t.progress,currentBlock:t.currentBlock,latestBlock:t.latestBlock})}),this.subscribe("indexer:syncComplete",()=>{this.setState({status:"synced",progress:1})}),this.subscribe("indexer:error",t=>{this.setState({status:"error",error:t.message})}),this.subscribe("indexer:paused",()=>{this.setState({status:"paused"})}),this.subscribe("indexer:resumed",()=>{this.setState({status:"syncing"})});const t=this.indexer.sync?.getStatus?.();t&&this.setState(t)}handleRetry(){this.indexer.sync?.resync?.()}handleResume(){this.indexer.sync?.resume?.()}render(){const{status:t,progress:r,currentBlock:n,latestBlock:i,error:s}=this.state,o=Math.round(100*r);return e("div",{className:`mw3-sync-progress mw3-sync-progress--${t}`},"syncing"===t&&[e("div",{key:"bar",className:"mw3-sync-progress__bar",style:{width:`${o}%`}}),e("span",{key:"text",className:"mw3-sync-progress__text"},`Syncing... ${o}%`)],"synced"===t&&e("span",{className:"mw3-sync-progress__text"},`Synced to block ${i.toLocaleString()}`),"error"===t&&[e("span",{key:"text",className:"mw3-sync-progress__text"},`Sync failed: ${s||"Unknown error"}`),e("button",{key:"retry",className:"mw3-sync-progress__retry",onClick:this.bind(this.handleRetry)},"Retry")],"paused"===t&&[e("span",{key:"text",className:"mw3-sync-progress__text"},"Sync paused"),e("button",{key:"resume",className:"mw3-sync-progress__resume",onClick:this.bind(this.handleResume)},"Resume")],"initializing"===t&&e("span",{className:"mw3-sync-progress__text"},"Initializing..."))}static injectStyles(){if(document.getElementById("mw3-sync-progress-styles"))return;const t=document.createElement("style");t.id="mw3-sync-progress-styles",t.textContent="\n .mw3-sync-progress {\n position: relative;\n height: 24px;\n background: var(--mw3-sync-bg, #f0f0f0);\n border-radius: 4px;\n overflow: hidden;\n font-family: system-ui, sans-serif;\n font-size: 12px;\n }\n\n .mw3-sync-progress__bar {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: var(--mw3-sync-bar, #4caf50);\n transition: width 0.3s ease;\n }\n\n .mw3-sync-progress__text {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mw3-sync-text, #333);\n padding: 0 8px;\n }\n\n .mw3-sync-progress--synced {\n background: var(--mw3-sync-bar, #4caf50);\n }\n\n .mw3-sync-progress--synced .mw3-sync-progress__text {\n color: white;\n }\n\n .mw3-sync-progress--error {\n background: var(--mw3-sync-error, #f44336);\n }\n\n .mw3-sync-progress--error .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n\n .mw3-sync-progress__retry,\n .mw3-sync-progress__resume {\n background: rgba(255,255,255,0.2);\n border: 1px solid rgba(255,255,255,0.4);\n border-radius: 3px;\n color: white;\n padding: 2px 8px;\n cursor: pointer;\n font-size: 11px;\n }\n\n .mw3-sync-progress__retry:hover,\n .mw3-sync-progress__resume:hover {\n background: rgba(255,255,255,0.3);\n }\n\n .mw3-sync-progress--paused {\n background: var(--mw3-sync-paused, #ff9800);\n }\n\n .mw3-sync-progress--paused .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n ",document.head.appendChild(t)}}export{hh as ApprovalModal,mh as BalanceDisplay,Ic as BlockchainService,ph as BondingCurve,Bc as ContractCache,Xc as EventIndexer,rh as FloatingWalletButton,jc as IndexedDBAdapter,Wc as IndexerSettings,sh as IpfsImage,zc as IpfsService,Gc as MemoryAdapter,ah as MessagePopup,ch as PriceDisplay,Mc as PriceService,th as SettingsModal,dh as SwapButton,uh as SwapInputs,fh as SwapInterface,gh as SyncProgressBar,oh as TransactionOptions,ih as WalletButton,Zc as WalletModal,Pc as WalletService};
|
|
10
10
|
//# sourceMappingURL=micro-web3.esm.js.map
|