lll-sdk 0.0.0-experimental-20251014173157 → 0.0.0-experimental-20251015114009

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/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var Oi=Object.create;var Hr=Object.defineProperty;var Ii=Object.getOwnPropertyDescriptor;var Ri=Object.getOwnPropertyNames;var Bi=Object.getPrototypeOf,Ni=Object.prototype.hasOwnProperty;var Ei=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(i,r)=>(typeof require<"u"?require:i)[r]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Fi=(n,i)=>()=>(i||n((i={exports:{}}).exports,i),i.exports);var Ui=(n,i,r,o)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of Ri(i))!Ni.call(n,t)&&t!==r&&Hr(n,t,{get:()=>i[t],enumerable:!(o=Ii(i,t))||o.enumerable});return n};var qi=(n,i,r)=>(r=n!=null?Oi(Bi(n)):{},Ui(i||!n||!n.__esModule?Hr(r,"default",{value:n,enumerable:!0}):r,n));var Mi=Fi((wi,Pr)=>{"use strict";(function(n,i){"use strict";function r(h,e){if(!h)throw new Error(e||"Assertion failed")}function o(h,e){h.super_=e;var s=function(){};s.prototype=e.prototype,h.prototype=new s,h.prototype.constructor=h}function t(h,e,s){if(t.isBN(h))return h;this.negative=0,this.words=null,this.length=0,this.red=null,h!==null&&((e==="le"||e==="be")&&(s=e,e=10),this._init(h||0,e||10,s||"be"))}typeof n=="object"?n.exports=t:i.BN=t,t.BN=t,t.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Ei("buffer").Buffer}catch{}t.isBN=function(e){return e instanceof t?!0:e!==null&&typeof e=="object"&&e.constructor.wordSize===t.wordSize&&Array.isArray(e.words)},t.max=function(e,s){return e.cmp(s)>0?e:s},t.min=function(e,s){return e.cmp(s)<0?e:s},t.prototype._init=function(e,s,u){if(typeof e=="number")return this._initNumber(e,s,u);if(typeof e=="object")return this._initArray(e,s,u);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),e=e.toString().replace(/\s+/g,"");var f=0;e[0]==="-"&&(f++,this.negative=1),f<e.length&&(s===16?this._parseHex(e,f,u):(this._parseBase(e,s,f),u==="le"&&this._initArray(this.toArray(),s,u)))},t.prototype._initNumber=function(e,s,u){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[e&67108863],this.length=1):e<4503599627370496?(this.words=[e&67108863,e/67108864&67108863],this.length=2):(r(e<9007199254740992),this.words=[e&67108863,e/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),s,u)},t.prototype._initArray=function(e,s,u){if(r(typeof e.length=="number"),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var d,v,k=0;if(u==="be")for(f=e.length-1,d=0;f>=0;f-=3)v=e[f]|e[f-1]<<8|e[f-2]<<16,this.words[d]|=v<<k&67108863,this.words[d+1]=v>>>26-k&67108863,k+=24,k>=26&&(k-=26,d++);else if(u==="le")for(f=0,d=0;f<e.length;f+=3)v=e[f]|e[f+1]<<8|e[f+2]<<16,this.words[d]|=v<<k&67108863,this.words[d+1]=v>>>26-k&67108863,k+=24,k>=26&&(k-=26,d++);return this._strip()};function p(h,e){var s=h.charCodeAt(e);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+h)}function c(h,e,s){var u=p(h,s);return s-1>=e&&(u|=p(h,s-1)<<4),u}t.prototype._parseHex=function(e,s,u){this.length=Math.ceil((e.length-s)/6),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var d=0,v=0,k;if(u==="be")for(f=e.length-1;f>=s;f-=2)k=c(e,s,f)<<d,this.words[v]|=k&67108863,d>=18?(d-=18,v+=1,this.words[v]|=k>>>26):d+=8;else{var w=e.length-s;for(f=w%2===0?s+1:s;f<e.length;f+=2)k=c(e,s,f)<<d,this.words[v]|=k&67108863,d>=18?(d-=18,v+=1,this.words[v]|=k>>>26):d+=8}this._strip()};function g(h,e,s,u){for(var f=0,d=0,v=Math.min(h.length,s),k=e;k<v;k++){var w=h.charCodeAt(k)-48;f*=u,w>=49?d=w-49+10:w>=17?d=w-17+10:d=w,r(w>=0&&d<u,"Invalid character"),f+=d}return f}t.prototype._parseBase=function(e,s,u){this.words=[0],this.length=1;for(var f=0,d=1;d<=67108863;d*=s)f++;f--,d=d/s|0;for(var v=e.length-u,k=v%f,w=Math.min(v,v-k)+u,a=0,_=u;_<w;_+=f)a=g(e,_,_+f,s),this.imuln(d),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a);if(k!==0){var F=1;for(a=g(e,_,e.length,s),_=0;_<k;_++)F*=s;this.imuln(F),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a)}this._strip()},t.prototype.copy=function(e){e.words=new Array(this.length);for(var s=0;s<this.length;s++)e.words[s]=this.words[s];e.length=this.length,e.negative=this.negative,e.red=this.red};function M(h,e){h.words=e.words,h.length=e.length,h.negative=e.negative,h.red=e.red}if(t.prototype._move=function(e){M(e,this)},t.prototype.clone=function(){var e=new t(null);return this.copy(e),e},t.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},t.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},t.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{t.prototype[Symbol.for("nodejs.util.inspect.custom")]=b}catch{t.prototype.inspect=b}else t.prototype.inspect=b;function b(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var S=["","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"],P=[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],T=[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];t.prototype.toString=function(e,s){e=e||10,s=s|0||1;var u;if(e===16||e==="hex"){u="";for(var f=0,d=0,v=0;v<this.length;v++){var k=this.words[v],w=((k<<f|d)&16777215).toString(16);d=k>>>24-f&16777215,f+=2,f>=26&&(f-=26,v--),d!==0||v!==this.length-1?u=S[6-w.length]+w+u:u=w+u}for(d!==0&&(u=d.toString(16)+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(e===(e|0)&&e>=2&&e<=36){var a=P[e],_=T[e];u="";var F=this.clone();for(F.negative=0;!F.isZero();){var E=F.modrn(_).toString(e);F=F.idivn(_),F.isZero()?u=E+u:u=S[a-E.length]+E+u}for(this.isZero()&&(u="0"+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}r(!1,"Base should be between 2 and 36")},t.prototype.toNumber=function(){var e=this.words[0];return this.length===2?e+=this.words[1]*67108864:this.length===3&&this.words[2]===1?e+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-e:e},t.prototype.toJSON=function(){return this.toString(16,2)},l&&(t.prototype.toBuffer=function(e,s){return this.toArrayLike(l,e,s)}),t.prototype.toArray=function(e,s){return this.toArrayLike(Array,e,s)};var D=function(e,s){return e.allocUnsafe?e.allocUnsafe(s):new e(s)};t.prototype.toArrayLike=function(e,s,u){this._strip();var f=this.byteLength(),d=u||Math.max(1,f);r(f<=d,"byte array longer than desired length"),r(d>0,"Requested array length <= 0");var v=D(e,d),k=s==="le"?"LE":"BE";return this["_toArrayLike"+k](v,f),v},t.prototype._toArrayLikeLE=function(e,s){for(var u=0,f=0,d=0,v=0;d<this.length;d++){var k=this.words[d]<<v|f;e[u++]=k&255,u<e.length&&(e[u++]=k>>8&255),u<e.length&&(e[u++]=k>>16&255),v===6?(u<e.length&&(e[u++]=k>>24&255),f=0,v=0):(f=k>>>24,v+=2)}if(u<e.length)for(e[u++]=f;u<e.length;)e[u++]=0},t.prototype._toArrayLikeBE=function(e,s){for(var u=e.length-1,f=0,d=0,v=0;d<this.length;d++){var k=this.words[d]<<v|f;e[u--]=k&255,u>=0&&(e[u--]=k>>8&255),u>=0&&(e[u--]=k>>16&255),v===6?(u>=0&&(e[u--]=k>>24&255),f=0,v=0):(f=k>>>24,v+=2)}if(u>=0)for(e[u--]=f;u>=0;)e[u--]=0},Math.clz32?t.prototype._countBits=function(e){return 32-Math.clz32(e)}:t.prototype._countBits=function(e){var s=e,u=0;return s>=4096&&(u+=13,s>>>=13),s>=64&&(u+=7,s>>>=7),s>=8&&(u+=4,s>>>=4),s>=2&&(u+=2,s>>>=2),u+s},t.prototype._zeroBits=function(e){if(e===0)return 26;var s=e,u=0;return(s&8191)===0&&(u+=13,s>>>=13),(s&127)===0&&(u+=7,s>>>=7),(s&15)===0&&(u+=4,s>>>=4),(s&3)===0&&(u+=2,s>>>=2),(s&1)===0&&u++,u},t.prototype.bitLength=function(){var e=this.words[this.length-1],s=this._countBits(e);return(this.length-1)*26+s};function O(h){for(var e=new Array(h.bitLength()),s=0;s<e.length;s++){var u=s/26|0,f=s%26;e[s]=h.words[u]>>>f&1}return e}t.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,s=0;s<this.length;s++){var u=this._zeroBits(this.words[s]);if(e+=u,u!==26)break}return e},t.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},t.prototype.toTwos=function(e){return this.negative!==0?this.abs().inotn(e).iaddn(1):this.clone()},t.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},t.prototype.isNeg=function(){return this.negative!==0},t.prototype.neg=function(){return this.clone().ineg()},t.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},t.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var s=0;s<e.length;s++)this.words[s]=this.words[s]|e.words[s];return this._strip()},t.prototype.ior=function(e){return r((this.negative|e.negative)===0),this.iuor(e)},t.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},t.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},t.prototype.iuand=function(e){var s;this.length>e.length?s=e:s=this;for(var u=0;u<s.length;u++)this.words[u]=this.words[u]&e.words[u];return this.length=s.length,this._strip()},t.prototype.iand=function(e){return r((this.negative|e.negative)===0),this.iuand(e)},t.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},t.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},t.prototype.iuxor=function(e){var s,u;this.length>e.length?(s=this,u=e):(s=e,u=this);for(var f=0;f<u.length;f++)this.words[f]=s.words[f]^u.words[f];if(this!==s)for(;f<s.length;f++)this.words[f]=s.words[f];return this.length=s.length,this._strip()},t.prototype.ixor=function(e){return r((this.negative|e.negative)===0),this.iuxor(e)},t.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},t.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},t.prototype.inotn=function(e){r(typeof e=="number"&&e>=0);var s=Math.ceil(e/26)|0,u=e%26;this._expand(s),u>0&&s--;for(var f=0;f<s;f++)this.words[f]=~this.words[f]&67108863;return u>0&&(this.words[f]=~this.words[f]&67108863>>26-u),this._strip()},t.prototype.notn=function(e){return this.clone().inotn(e)},t.prototype.setn=function(e,s){r(typeof e=="number"&&e>=0);var u=e/26|0,f=e%26;return this._expand(u+1),s?this.words[u]=this.words[u]|1<<f:this.words[u]=this.words[u]&~(1<<f),this._strip()},t.prototype.iadd=function(e){var s;if(this.negative!==0&&e.negative===0)return this.negative=0,s=this.isub(e),this.negative^=1,this._normSign();if(this.negative===0&&e.negative!==0)return e.negative=0,s=this.isub(e),e.negative=1,s._normSign();var u,f;this.length>e.length?(u=this,f=e):(u=e,f=this);for(var d=0,v=0;v<f.length;v++)s=(u.words[v]|0)+(f.words[v]|0)+d,this.words[v]=s&67108863,d=s>>>26;for(;d!==0&&v<u.length;v++)s=(u.words[v]|0)+d,this.words[v]=s&67108863,d=s>>>26;if(this.length=u.length,d!==0)this.words[this.length]=d,this.length++;else if(u!==this)for(;v<u.length;v++)this.words[v]=u.words[v];return this},t.prototype.add=function(e){var s;return e.negative!==0&&this.negative===0?(e.negative=0,s=this.sub(e),e.negative^=1,s):e.negative===0&&this.negative!==0?(this.negative=0,s=e.sub(this),this.negative=1,s):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},t.prototype.isub=function(e){if(e.negative!==0){e.negative=0;var s=this.iadd(e);return e.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var u=this.cmp(e);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var f,d;u>0?(f=this,d=e):(f=e,d=this);for(var v=0,k=0;k<d.length;k++)s=(f.words[k]|0)-(d.words[k]|0)+v,v=s>>26,this.words[k]=s&67108863;for(;v!==0&&k<f.length;k++)s=(f.words[k]|0)+v,v=s>>26,this.words[k]=s&67108863;if(v===0&&k<f.length&&f!==this)for(;k<f.length;k++)this.words[k]=f.words[k];return this.length=Math.max(this.length,k),f!==this&&(this.negative=1),this._strip()},t.prototype.sub=function(e){return this.clone().isub(e)};function N(h,e,s){s.negative=e.negative^h.negative;var u=h.length+e.length|0;s.length=u,u=u-1|0;var f=h.words[0]|0,d=e.words[0]|0,v=f*d,k=v&67108863,w=v/67108864|0;s.words[0]=k;for(var a=1;a<u;a++){for(var _=w>>>26,F=w&67108863,E=Math.min(a,e.length-1),U=Math.max(0,a-h.length+1);U<=E;U++){var W=a-U|0;f=h.words[W]|0,d=e.words[U]|0,v=f*d+F,_+=v/67108864|0,F=v&67108863}s.words[a]=F|0,w=_|0}return w!==0?s.words[a]=w|0:s.length--,s._strip()}var I=function(e,s,u){var f=e.words,d=s.words,v=u.words,k=0,w,a,_,F=f[0]|0,E=F&8191,U=F>>>13,W=f[1]|0,G=W&8191,te=W>>>13,Ze=f[2]|0,J=Ze&8191,re=Ze>>>13,Ke=f[3]|0,ee=Ke&8191,Q=Ke>>>13,Or=f[4]|0,se=Or&8191,ae=Or>>>13,Ir=f[5]|0,le=Ir&8191,ue=Ir>>>13,Rr=f[6]|0,fe=Rr&8191,ce=Rr>>>13,Br=f[7]|0,de=Br&8191,he=Br>>>13,Nr=f[8]|0,pe=Nr&8191,ge=Nr>>>13,Er=f[9]|0,me=Er&8191,ve=Er>>>13,Fr=d[0]|0,we=Fr&8191,Me=Fr>>>13,Ur=d[1]|0,be=Ur&8191,ye=Ur>>>13,qr=d[2]|0,_e=qr&8191,ke=qr>>>13,jr=d[3]|0,Ae=jr&8191,Se=jr>>>13,$r=d[4]|0,Pe=$r&8191,Ce=$r>>>13,Zr=d[5]|0,Le=Zr&8191,Te=Zr>>>13,Wr=d[6]|0,xe=Wr&8191,De=Wr>>>13,zr=d[7]|0,Oe=zr&8191,Ie=zr>>>13,Kr=d[8]|0,Re=Kr&8191,Be=Kr>>>13,Gr=d[9]|0,Ne=Gr&8191,Ee=Gr>>>13;u.negative=e.negative^s.negative,u.length=19,w=Math.imul(E,we),a=Math.imul(E,Me),a=a+Math.imul(U,we)|0,_=Math.imul(U,Me);var Gt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,w=Math.imul(G,we),a=Math.imul(G,Me),a=a+Math.imul(te,we)|0,_=Math.imul(te,Me),w=w+Math.imul(E,be)|0,a=a+Math.imul(E,ye)|0,a=a+Math.imul(U,be)|0,_=_+Math.imul(U,ye)|0;var Ht=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,w=Math.imul(J,we),a=Math.imul(J,Me),a=a+Math.imul(re,we)|0,_=Math.imul(re,Me),w=w+Math.imul(G,be)|0,a=a+Math.imul(G,ye)|0,a=a+Math.imul(te,be)|0,_=_+Math.imul(te,ye)|0,w=w+Math.imul(E,_e)|0,a=a+Math.imul(E,ke)|0,a=a+Math.imul(U,_e)|0,_=_+Math.imul(U,ke)|0;var Vt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,w=Math.imul(ee,we),a=Math.imul(ee,Me),a=a+Math.imul(Q,we)|0,_=Math.imul(Q,Me),w=w+Math.imul(J,be)|0,a=a+Math.imul(J,ye)|0,a=a+Math.imul(re,be)|0,_=_+Math.imul(re,ye)|0,w=w+Math.imul(G,_e)|0,a=a+Math.imul(G,ke)|0,a=a+Math.imul(te,_e)|0,_=_+Math.imul(te,ke)|0,w=w+Math.imul(E,Ae)|0,a=a+Math.imul(E,Se)|0,a=a+Math.imul(U,Ae)|0,_=_+Math.imul(U,Se)|0;var Qt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,w=Math.imul(se,we),a=Math.imul(se,Me),a=a+Math.imul(ae,we)|0,_=Math.imul(ae,Me),w=w+Math.imul(ee,be)|0,a=a+Math.imul(ee,ye)|0,a=a+Math.imul(Q,be)|0,_=_+Math.imul(Q,ye)|0,w=w+Math.imul(J,_e)|0,a=a+Math.imul(J,ke)|0,a=a+Math.imul(re,_e)|0,_=_+Math.imul(re,ke)|0,w=w+Math.imul(G,Ae)|0,a=a+Math.imul(G,Se)|0,a=a+Math.imul(te,Ae)|0,_=_+Math.imul(te,Se)|0,w=w+Math.imul(E,Pe)|0,a=a+Math.imul(E,Ce)|0,a=a+Math.imul(U,Pe)|0,_=_+Math.imul(U,Ce)|0;var Xt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,w=Math.imul(le,we),a=Math.imul(le,Me),a=a+Math.imul(ue,we)|0,_=Math.imul(ue,Me),w=w+Math.imul(se,be)|0,a=a+Math.imul(se,ye)|0,a=a+Math.imul(ae,be)|0,_=_+Math.imul(ae,ye)|0,w=w+Math.imul(ee,_e)|0,a=a+Math.imul(ee,ke)|0,a=a+Math.imul(Q,_e)|0,_=_+Math.imul(Q,ke)|0,w=w+Math.imul(J,Ae)|0,a=a+Math.imul(J,Se)|0,a=a+Math.imul(re,Ae)|0,_=_+Math.imul(re,Se)|0,w=w+Math.imul(G,Pe)|0,a=a+Math.imul(G,Ce)|0,a=a+Math.imul(te,Pe)|0,_=_+Math.imul(te,Ce)|0,w=w+Math.imul(E,Le)|0,a=a+Math.imul(E,Te)|0,a=a+Math.imul(U,Le)|0,_=_+Math.imul(U,Te)|0;var Jt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,w=Math.imul(fe,we),a=Math.imul(fe,Me),a=a+Math.imul(ce,we)|0,_=Math.imul(ce,Me),w=w+Math.imul(le,be)|0,a=a+Math.imul(le,ye)|0,a=a+Math.imul(ue,be)|0,_=_+Math.imul(ue,ye)|0,w=w+Math.imul(se,_e)|0,a=a+Math.imul(se,ke)|0,a=a+Math.imul(ae,_e)|0,_=_+Math.imul(ae,ke)|0,w=w+Math.imul(ee,Ae)|0,a=a+Math.imul(ee,Se)|0,a=a+Math.imul(Q,Ae)|0,_=_+Math.imul(Q,Se)|0,w=w+Math.imul(J,Pe)|0,a=a+Math.imul(J,Ce)|0,a=a+Math.imul(re,Pe)|0,_=_+Math.imul(re,Ce)|0,w=w+Math.imul(G,Le)|0,a=a+Math.imul(G,Te)|0,a=a+Math.imul(te,Le)|0,_=_+Math.imul(te,Te)|0,w=w+Math.imul(E,xe)|0,a=a+Math.imul(E,De)|0,a=a+Math.imul(U,xe)|0,_=_+Math.imul(U,De)|0;var Yt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,w=Math.imul(de,we),a=Math.imul(de,Me),a=a+Math.imul(he,we)|0,_=Math.imul(he,Me),w=w+Math.imul(fe,be)|0,a=a+Math.imul(fe,ye)|0,a=a+Math.imul(ce,be)|0,_=_+Math.imul(ce,ye)|0,w=w+Math.imul(le,_e)|0,a=a+Math.imul(le,ke)|0,a=a+Math.imul(ue,_e)|0,_=_+Math.imul(ue,ke)|0,w=w+Math.imul(se,Ae)|0,a=a+Math.imul(se,Se)|0,a=a+Math.imul(ae,Ae)|0,_=_+Math.imul(ae,Se)|0,w=w+Math.imul(ee,Pe)|0,a=a+Math.imul(ee,Ce)|0,a=a+Math.imul(Q,Pe)|0,_=_+Math.imul(Q,Ce)|0,w=w+Math.imul(J,Le)|0,a=a+Math.imul(J,Te)|0,a=a+Math.imul(re,Le)|0,_=_+Math.imul(re,Te)|0,w=w+Math.imul(G,xe)|0,a=a+Math.imul(G,De)|0,a=a+Math.imul(te,xe)|0,_=_+Math.imul(te,De)|0,w=w+Math.imul(E,Oe)|0,a=a+Math.imul(E,Ie)|0,a=a+Math.imul(U,Oe)|0,_=_+Math.imul(U,Ie)|0;var er=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(er>>>26)|0,er&=67108863,w=Math.imul(pe,we),a=Math.imul(pe,Me),a=a+Math.imul(ge,we)|0,_=Math.imul(ge,Me),w=w+Math.imul(de,be)|0,a=a+Math.imul(de,ye)|0,a=a+Math.imul(he,be)|0,_=_+Math.imul(he,ye)|0,w=w+Math.imul(fe,_e)|0,a=a+Math.imul(fe,ke)|0,a=a+Math.imul(ce,_e)|0,_=_+Math.imul(ce,ke)|0,w=w+Math.imul(le,Ae)|0,a=a+Math.imul(le,Se)|0,a=a+Math.imul(ue,Ae)|0,_=_+Math.imul(ue,Se)|0,w=w+Math.imul(se,Pe)|0,a=a+Math.imul(se,Ce)|0,a=a+Math.imul(ae,Pe)|0,_=_+Math.imul(ae,Ce)|0,w=w+Math.imul(ee,Le)|0,a=a+Math.imul(ee,Te)|0,a=a+Math.imul(Q,Le)|0,_=_+Math.imul(Q,Te)|0,w=w+Math.imul(J,xe)|0,a=a+Math.imul(J,De)|0,a=a+Math.imul(re,xe)|0,_=_+Math.imul(re,De)|0,w=w+Math.imul(G,Oe)|0,a=a+Math.imul(G,Ie)|0,a=a+Math.imul(te,Oe)|0,_=_+Math.imul(te,Ie)|0,w=w+Math.imul(E,Re)|0,a=a+Math.imul(E,Be)|0,a=a+Math.imul(U,Re)|0,_=_+Math.imul(U,Be)|0;var tr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(tr>>>26)|0,tr&=67108863,w=Math.imul(me,we),a=Math.imul(me,Me),a=a+Math.imul(ve,we)|0,_=Math.imul(ve,Me),w=w+Math.imul(pe,be)|0,a=a+Math.imul(pe,ye)|0,a=a+Math.imul(ge,be)|0,_=_+Math.imul(ge,ye)|0,w=w+Math.imul(de,_e)|0,a=a+Math.imul(de,ke)|0,a=a+Math.imul(he,_e)|0,_=_+Math.imul(he,ke)|0,w=w+Math.imul(fe,Ae)|0,a=a+Math.imul(fe,Se)|0,a=a+Math.imul(ce,Ae)|0,_=_+Math.imul(ce,Se)|0,w=w+Math.imul(le,Pe)|0,a=a+Math.imul(le,Ce)|0,a=a+Math.imul(ue,Pe)|0,_=_+Math.imul(ue,Ce)|0,w=w+Math.imul(se,Le)|0,a=a+Math.imul(se,Te)|0,a=a+Math.imul(ae,Le)|0,_=_+Math.imul(ae,Te)|0,w=w+Math.imul(ee,xe)|0,a=a+Math.imul(ee,De)|0,a=a+Math.imul(Q,xe)|0,_=_+Math.imul(Q,De)|0,w=w+Math.imul(J,Oe)|0,a=a+Math.imul(J,Ie)|0,a=a+Math.imul(re,Oe)|0,_=_+Math.imul(re,Ie)|0,w=w+Math.imul(G,Re)|0,a=a+Math.imul(G,Be)|0,a=a+Math.imul(te,Re)|0,_=_+Math.imul(te,Be)|0,w=w+Math.imul(E,Ne)|0,a=a+Math.imul(E,Ee)|0,a=a+Math.imul(U,Ne)|0,_=_+Math.imul(U,Ee)|0;var rr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(rr>>>26)|0,rr&=67108863,w=Math.imul(me,be),a=Math.imul(me,ye),a=a+Math.imul(ve,be)|0,_=Math.imul(ve,ye),w=w+Math.imul(pe,_e)|0,a=a+Math.imul(pe,ke)|0,a=a+Math.imul(ge,_e)|0,_=_+Math.imul(ge,ke)|0,w=w+Math.imul(de,Ae)|0,a=a+Math.imul(de,Se)|0,a=a+Math.imul(he,Ae)|0,_=_+Math.imul(he,Se)|0,w=w+Math.imul(fe,Pe)|0,a=a+Math.imul(fe,Ce)|0,a=a+Math.imul(ce,Pe)|0,_=_+Math.imul(ce,Ce)|0,w=w+Math.imul(le,Le)|0,a=a+Math.imul(le,Te)|0,a=a+Math.imul(ue,Le)|0,_=_+Math.imul(ue,Te)|0,w=w+Math.imul(se,xe)|0,a=a+Math.imul(se,De)|0,a=a+Math.imul(ae,xe)|0,_=_+Math.imul(ae,De)|0,w=w+Math.imul(ee,Oe)|0,a=a+Math.imul(ee,Ie)|0,a=a+Math.imul(Q,Oe)|0,_=_+Math.imul(Q,Ie)|0,w=w+Math.imul(J,Re)|0,a=a+Math.imul(J,Be)|0,a=a+Math.imul(re,Re)|0,_=_+Math.imul(re,Be)|0,w=w+Math.imul(G,Ne)|0,a=a+Math.imul(G,Ee)|0,a=a+Math.imul(te,Ne)|0,_=_+Math.imul(te,Ee)|0;var ir=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(ir>>>26)|0,ir&=67108863,w=Math.imul(me,_e),a=Math.imul(me,ke),a=a+Math.imul(ve,_e)|0,_=Math.imul(ve,ke),w=w+Math.imul(pe,Ae)|0,a=a+Math.imul(pe,Se)|0,a=a+Math.imul(ge,Ae)|0,_=_+Math.imul(ge,Se)|0,w=w+Math.imul(de,Pe)|0,a=a+Math.imul(de,Ce)|0,a=a+Math.imul(he,Pe)|0,_=_+Math.imul(he,Ce)|0,w=w+Math.imul(fe,Le)|0,a=a+Math.imul(fe,Te)|0,a=a+Math.imul(ce,Le)|0,_=_+Math.imul(ce,Te)|0,w=w+Math.imul(le,xe)|0,a=a+Math.imul(le,De)|0,a=a+Math.imul(ue,xe)|0,_=_+Math.imul(ue,De)|0,w=w+Math.imul(se,Oe)|0,a=a+Math.imul(se,Ie)|0,a=a+Math.imul(ae,Oe)|0,_=_+Math.imul(ae,Ie)|0,w=w+Math.imul(ee,Re)|0,a=a+Math.imul(ee,Be)|0,a=a+Math.imul(Q,Re)|0,_=_+Math.imul(Q,Be)|0,w=w+Math.imul(J,Ne)|0,a=a+Math.imul(J,Ee)|0,a=a+Math.imul(re,Ne)|0,_=_+Math.imul(re,Ee)|0;var nr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(nr>>>26)|0,nr&=67108863,w=Math.imul(me,Ae),a=Math.imul(me,Se),a=a+Math.imul(ve,Ae)|0,_=Math.imul(ve,Se),w=w+Math.imul(pe,Pe)|0,a=a+Math.imul(pe,Ce)|0,a=a+Math.imul(ge,Pe)|0,_=_+Math.imul(ge,Ce)|0,w=w+Math.imul(de,Le)|0,a=a+Math.imul(de,Te)|0,a=a+Math.imul(he,Le)|0,_=_+Math.imul(he,Te)|0,w=w+Math.imul(fe,xe)|0,a=a+Math.imul(fe,De)|0,a=a+Math.imul(ce,xe)|0,_=_+Math.imul(ce,De)|0,w=w+Math.imul(le,Oe)|0,a=a+Math.imul(le,Ie)|0,a=a+Math.imul(ue,Oe)|0,_=_+Math.imul(ue,Ie)|0,w=w+Math.imul(se,Re)|0,a=a+Math.imul(se,Be)|0,a=a+Math.imul(ae,Re)|0,_=_+Math.imul(ae,Be)|0,w=w+Math.imul(ee,Ne)|0,a=a+Math.imul(ee,Ee)|0,a=a+Math.imul(Q,Ne)|0,_=_+Math.imul(Q,Ee)|0;var or=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(or>>>26)|0,or&=67108863,w=Math.imul(me,Pe),a=Math.imul(me,Ce),a=a+Math.imul(ve,Pe)|0,_=Math.imul(ve,Ce),w=w+Math.imul(pe,Le)|0,a=a+Math.imul(pe,Te)|0,a=a+Math.imul(ge,Le)|0,_=_+Math.imul(ge,Te)|0,w=w+Math.imul(de,xe)|0,a=a+Math.imul(de,De)|0,a=a+Math.imul(he,xe)|0,_=_+Math.imul(he,De)|0,w=w+Math.imul(fe,Oe)|0,a=a+Math.imul(fe,Ie)|0,a=a+Math.imul(ce,Oe)|0,_=_+Math.imul(ce,Ie)|0,w=w+Math.imul(le,Re)|0,a=a+Math.imul(le,Be)|0,a=a+Math.imul(ue,Re)|0,_=_+Math.imul(ue,Be)|0,w=w+Math.imul(se,Ne)|0,a=a+Math.imul(se,Ee)|0,a=a+Math.imul(ae,Ne)|0,_=_+Math.imul(ae,Ee)|0;var sr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(sr>>>26)|0,sr&=67108863,w=Math.imul(me,Le),a=Math.imul(me,Te),a=a+Math.imul(ve,Le)|0,_=Math.imul(ve,Te),w=w+Math.imul(pe,xe)|0,a=a+Math.imul(pe,De)|0,a=a+Math.imul(ge,xe)|0,_=_+Math.imul(ge,De)|0,w=w+Math.imul(de,Oe)|0,a=a+Math.imul(de,Ie)|0,a=a+Math.imul(he,Oe)|0,_=_+Math.imul(he,Ie)|0,w=w+Math.imul(fe,Re)|0,a=a+Math.imul(fe,Be)|0,a=a+Math.imul(ce,Re)|0,_=_+Math.imul(ce,Be)|0,w=w+Math.imul(le,Ne)|0,a=a+Math.imul(le,Ee)|0,a=a+Math.imul(ue,Ne)|0,_=_+Math.imul(ue,Ee)|0;var ar=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(ar>>>26)|0,ar&=67108863,w=Math.imul(me,xe),a=Math.imul(me,De),a=a+Math.imul(ve,xe)|0,_=Math.imul(ve,De),w=w+Math.imul(pe,Oe)|0,a=a+Math.imul(pe,Ie)|0,a=a+Math.imul(ge,Oe)|0,_=_+Math.imul(ge,Ie)|0,w=w+Math.imul(de,Re)|0,a=a+Math.imul(de,Be)|0,a=a+Math.imul(he,Re)|0,_=_+Math.imul(he,Be)|0,w=w+Math.imul(fe,Ne)|0,a=a+Math.imul(fe,Ee)|0,a=a+Math.imul(ce,Ne)|0,_=_+Math.imul(ce,Ee)|0;var lr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(lr>>>26)|0,lr&=67108863,w=Math.imul(me,Oe),a=Math.imul(me,Ie),a=a+Math.imul(ve,Oe)|0,_=Math.imul(ve,Ie),w=w+Math.imul(pe,Re)|0,a=a+Math.imul(pe,Be)|0,a=a+Math.imul(ge,Re)|0,_=_+Math.imul(ge,Be)|0,w=w+Math.imul(de,Ne)|0,a=a+Math.imul(de,Ee)|0,a=a+Math.imul(he,Ne)|0,_=_+Math.imul(he,Ee)|0;var ur=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(ur>>>26)|0,ur&=67108863,w=Math.imul(me,Re),a=Math.imul(me,Be),a=a+Math.imul(ve,Re)|0,_=Math.imul(ve,Be),w=w+Math.imul(pe,Ne)|0,a=a+Math.imul(pe,Ee)|0,a=a+Math.imul(ge,Ne)|0,_=_+Math.imul(ge,Ee)|0;var fr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(fr>>>26)|0,fr&=67108863,w=Math.imul(me,Ne),a=Math.imul(me,Ee),a=a+Math.imul(ve,Ne)|0,_=Math.imul(ve,Ee);var cr=(k+w|0)+((a&8191)<<13)|0;return k=(_+(a>>>13)|0)+(cr>>>26)|0,cr&=67108863,v[0]=Gt,v[1]=Ht,v[2]=Vt,v[3]=Qt,v[4]=Xt,v[5]=Jt,v[6]=Yt,v[7]=er,v[8]=tr,v[9]=rr,v[10]=ir,v[11]=nr,v[12]=or,v[13]=sr,v[14]=ar,v[15]=lr,v[16]=ur,v[17]=fr,v[18]=cr,k!==0&&(v[19]=k,u.length++),u};Math.imul||(I=N);function x(h,e,s){s.negative=e.negative^h.negative,s.length=h.length+e.length;for(var u=0,f=0,d=0;d<s.length-1;d++){var v=f;f=0;for(var k=u&67108863,w=Math.min(d,e.length-1),a=Math.max(0,d-h.length+1);a<=w;a++){var _=d-a,F=h.words[_]|0,E=e.words[a]|0,U=F*E,W=U&67108863;v=v+(U/67108864|0)|0,W=W+k|0,k=W&67108863,v=v+(W>>>26)|0,f+=v>>>26,v&=67108863}s.words[d]=k,u=v,v=f}return u!==0?s.words[d]=u:s.length--,s._strip()}function q(h,e,s){return x(h,e,s)}t.prototype.mulTo=function(e,s){var u,f=this.length+e.length;return this.length===10&&e.length===10?u=I(this,e,s):f<63?u=N(this,e,s):f<1024?u=x(this,e,s):u=q(this,e,s),u};function j(h,e){this.x=h,this.y=e}j.prototype.makeRBT=function(e){for(var s=new Array(e),u=t.prototype._countBits(e)-1,f=0;f<e;f++)s[f]=this.revBin(f,u,e);return s},j.prototype.revBin=function(e,s,u){if(e===0||e===u-1)return e;for(var f=0,d=0;d<s;d++)f|=(e&1)<<s-d-1,e>>=1;return f},j.prototype.permute=function(e,s,u,f,d,v){for(var k=0;k<v;k++)f[k]=s[e[k]],d[k]=u[e[k]]},j.prototype.transform=function(e,s,u,f,d,v){this.permute(v,e,s,u,f,d);for(var k=1;k<d;k<<=1)for(var w=k<<1,a=Math.cos(2*Math.PI/w),_=Math.sin(2*Math.PI/w),F=0;F<d;F+=w)for(var E=a,U=_,W=0;W<k;W++){var G=u[F+W],te=f[F+W],Ze=u[F+W+k],J=f[F+W+k],re=E*Ze-U*J;J=E*J+U*Ze,Ze=re,u[F+W]=G+Ze,f[F+W]=te+J,u[F+W+k]=G-Ze,f[F+W+k]=te-J,W!==w&&(re=a*E-_*U,U=a*U+_*E,E=re)}},j.prototype.guessLen13b=function(e,s){var u=Math.max(s,e)|1,f=u&1,d=0;for(u=u/2|0;u;u=u>>>1)d++;return 1<<d+1+f},j.prototype.conjugate=function(e,s,u){if(!(u<=1))for(var f=0;f<u/2;f++){var d=e[f];e[f]=e[u-f-1],e[u-f-1]=d,d=s[f],s[f]=-s[u-f-1],s[u-f-1]=-d}},j.prototype.normalize13b=function(e,s){for(var u=0,f=0;f<s/2;f++){var d=Math.round(e[2*f+1]/s)*8192+Math.round(e[2*f]/s)+u;e[f]=d&67108863,d<67108864?u=0:u=d/67108864|0}return e},j.prototype.convert13b=function(e,s,u,f){for(var d=0,v=0;v<s;v++)d=d+(e[v]|0),u[2*v]=d&8191,d=d>>>13,u[2*v+1]=d&8191,d=d>>>13;for(v=2*s;v<f;++v)u[v]=0;r(d===0),r((d&-8192)===0)},j.prototype.stub=function(e){for(var s=new Array(e),u=0;u<e;u++)s[u]=0;return s},j.prototype.mulp=function(e,s,u){var f=2*this.guessLen13b(e.length,s.length),d=this.makeRBT(f),v=this.stub(f),k=new Array(f),w=new Array(f),a=new Array(f),_=new Array(f),F=new Array(f),E=new Array(f),U=u.words;U.length=f,this.convert13b(e.words,e.length,k,f),this.convert13b(s.words,s.length,_,f),this.transform(k,v,w,a,f,d),this.transform(_,v,F,E,f,d);for(var W=0;W<f;W++){var G=w[W]*F[W]-a[W]*E[W];a[W]=w[W]*E[W]+a[W]*F[W],w[W]=G}return this.conjugate(w,a,f),this.transform(w,a,U,v,f,d),this.conjugate(U,v,f),this.normalize13b(U,f),u.negative=e.negative^s.negative,u.length=e.length+s.length,u._strip()},t.prototype.mul=function(e){var s=new t(null);return s.words=new Array(this.length+e.length),this.mulTo(e,s)},t.prototype.mulf=function(e){var s=new t(null);return s.words=new Array(this.length+e.length),q(this,e,s)},t.prototype.imul=function(e){return this.clone().mulTo(e,this)},t.prototype.imuln=function(e){var s=e<0;s&&(e=-e),r(typeof e=="number"),r(e<67108864);for(var u=0,f=0;f<this.length;f++){var d=(this.words[f]|0)*e,v=(d&67108863)+(u&67108863);u>>=26,u+=d/67108864|0,u+=v>>>26,this.words[f]=v&67108863}return u!==0&&(this.words[f]=u,this.length++),this.length=e===0?1:this.length,s?this.ineg():this},t.prototype.muln=function(e){return this.clone().imuln(e)},t.prototype.sqr=function(){return this.mul(this)},t.prototype.isqr=function(){return this.imul(this.clone())},t.prototype.pow=function(e){var s=O(e);if(s.length===0)return new t(1);for(var u=this,f=0;f<s.length&&s[f]===0;f++,u=u.sqr());if(++f<s.length)for(var d=u.sqr();f<s.length;f++,d=d.sqr())s[f]!==0&&(u=u.mul(d));return u},t.prototype.iushln=function(e){r(typeof e=="number"&&e>=0);var s=e%26,u=(e-s)/26,f=67108863>>>26-s<<26-s,d;if(s!==0){var v=0;for(d=0;d<this.length;d++){var k=this.words[d]&f,w=(this.words[d]|0)-k<<s;this.words[d]=w|v,v=k>>>26-s}v&&(this.words[d]=v,this.length++)}if(u!==0){for(d=this.length-1;d>=0;d--)this.words[d+u]=this.words[d];for(d=0;d<u;d++)this.words[d]=0;this.length+=u}return this._strip()},t.prototype.ishln=function(e){return r(this.negative===0),this.iushln(e)},t.prototype.iushrn=function(e,s,u){r(typeof e=="number"&&e>=0);var f;s?f=(s-s%26)/26:f=0;var d=e%26,v=Math.min((e-d)/26,this.length),k=67108863^67108863>>>d<<d,w=u;if(f-=v,f=Math.max(0,f),w){for(var a=0;a<v;a++)w.words[a]=this.words[a];w.length=v}if(v!==0)if(this.length>v)for(this.length-=v,a=0;a<this.length;a++)this.words[a]=this.words[a+v];else this.words[0]=0,this.length=1;var _=0;for(a=this.length-1;a>=0&&(_!==0||a>=f);a--){var F=this.words[a]|0;this.words[a]=_<<26-d|F>>>d,_=F&k}return w&&_!==0&&(w.words[w.length++]=_),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},t.prototype.ishrn=function(e,s,u){return r(this.negative===0),this.iushrn(e,s,u)},t.prototype.shln=function(e){return this.clone().ishln(e)},t.prototype.ushln=function(e){return this.clone().iushln(e)},t.prototype.shrn=function(e){return this.clone().ishrn(e)},t.prototype.ushrn=function(e){return this.clone().iushrn(e)},t.prototype.testn=function(e){r(typeof e=="number"&&e>=0);var s=e%26,u=(e-s)/26,f=1<<s;if(this.length<=u)return!1;var d=this.words[u];return!!(d&f)},t.prototype.imaskn=function(e){r(typeof e=="number"&&e>=0);var s=e%26,u=(e-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(s!==0&&u++,this.length=Math.min(u,this.length),s!==0){var f=67108863^67108863>>>s<<s;this.words[this.length-1]&=f}return this._strip()},t.prototype.maskn=function(e){return this.clone().imaskn(e)},t.prototype.iaddn=function(e){return r(typeof e=="number"),r(e<67108864),e<0?this.isubn(-e):this.negative!==0?this.length===1&&(this.words[0]|0)<=e?(this.words[0]=e-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},t.prototype._iaddn=function(e){this.words[0]+=e;for(var s=0;s<this.length&&this.words[s]>=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},t.prototype.isubn=function(e){if(r(typeof e=="number"),r(e<67108864),e<0)return this.iaddn(-e);if(this.negative!==0)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s<this.length&&this.words[s]<0;s++)this.words[s]+=67108864,this.words[s+1]-=1;return this._strip()},t.prototype.addn=function(e){return this.clone().iaddn(e)},t.prototype.subn=function(e){return this.clone().isubn(e)},t.prototype.iabs=function(){return this.negative=0,this},t.prototype.abs=function(){return this.clone().iabs()},t.prototype._ishlnsubmul=function(e,s,u){var f=e.length+u,d;this._expand(f);var v,k=0;for(d=0;d<e.length;d++){v=(this.words[d+u]|0)+k;var w=(e.words[d]|0)*s;v-=w&67108863,k=(v>>26)-(w/67108864|0),this.words[d+u]=v&67108863}for(;d<this.length-u;d++)v=(this.words[d+u]|0)+k,k=v>>26,this.words[d+u]=v&67108863;if(k===0)return this._strip();for(r(k===-1),k=0,d=0;d<this.length;d++)v=-(this.words[d]|0)+k,k=v>>26,this.words[d]=v&67108863;return this.negative=1,this._strip()},t.prototype._wordDiv=function(e,s){var u=this.length-e.length,f=this.clone(),d=e,v=d.words[d.length-1]|0,k=this._countBits(v);u=26-k,u!==0&&(d=d.ushln(u),f.iushln(u),v=d.words[d.length-1]|0);var w=f.length-d.length,a;if(s!=="mod"){a=new t(null),a.length=w+1,a.words=new Array(a.length);for(var _=0;_<a.length;_++)a.words[_]=0}var F=f.clone()._ishlnsubmul(d,1,w);F.negative===0&&(f=F,a&&(a.words[w]=1));for(var E=w-1;E>=0;E--){var U=(f.words[d.length+E]|0)*67108864+(f.words[d.length+E-1]|0);for(U=Math.min(U/v|0,67108863),f._ishlnsubmul(d,U,E);f.negative!==0;)U--,f.negative=0,f._ishlnsubmul(d,1,E),f.isZero()||(f.negative^=1);a&&(a.words[E]=U)}return a&&a._strip(),f._strip(),s!=="div"&&u!==0&&f.iushrn(u),{div:a||null,mod:f}},t.prototype.divmod=function(e,s,u){if(r(!e.isZero()),this.isZero())return{div:new t(0),mod:new t(0)};var f,d,v;return this.negative!==0&&e.negative===0?(v=this.neg().divmod(e,s),s!=="mod"&&(f=v.div.neg()),s!=="div"&&(d=v.mod.neg(),u&&d.negative!==0&&d.iadd(e)),{div:f,mod:d}):this.negative===0&&e.negative!==0?(v=this.divmod(e.neg(),s),s!=="mod"&&(f=v.div.neg()),{div:f,mod:v.mod}):(this.negative&e.negative)!==0?(v=this.neg().divmod(e.neg(),s),s!=="div"&&(d=v.mod.neg(),u&&d.negative!==0&&d.isub(e)),{div:v.div,mod:d}):e.length>this.length||this.cmp(e)<0?{div:new t(0),mod:this}:e.length===1?s==="div"?{div:this.divn(e.words[0]),mod:null}:s==="mod"?{div:null,mod:new t(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new t(this.modrn(e.words[0]))}:this._wordDiv(e,s)},t.prototype.div=function(e){return this.divmod(e,"div",!1).div},t.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},t.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},t.prototype.divRound=function(e){var s=this.divmod(e);if(s.mod.isZero())return s.div;var u=s.div.negative!==0?s.mod.isub(e):s.mod,f=e.ushrn(1),d=e.andln(1),v=u.cmp(f);return v<0||d===1&&v===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},t.prototype.modrn=function(e){var s=e<0;s&&(e=-e),r(e<=67108863);for(var u=(1<<26)%e,f=0,d=this.length-1;d>=0;d--)f=(u*f+(this.words[d]|0))%e;return s?-f:f},t.prototype.modn=function(e){return this.modrn(e)},t.prototype.idivn=function(e){var s=e<0;s&&(e=-e),r(e<=67108863);for(var u=0,f=this.length-1;f>=0;f--){var d=(this.words[f]|0)+u*67108864;this.words[f]=d/e|0,u=d%e}return this._strip(),s?this.ineg():this},t.prototype.divn=function(e){return this.clone().idivn(e)},t.prototype.egcd=function(e){r(e.negative===0),r(!e.isZero());var s=this,u=e.clone();s.negative!==0?s=s.umod(e):s=s.clone();for(var f=new t(1),d=new t(0),v=new t(0),k=new t(1),w=0;s.isEven()&&u.isEven();)s.iushrn(1),u.iushrn(1),++w;for(var a=u.clone(),_=s.clone();!s.isZero();){for(var F=0,E=1;(s.words[0]&E)===0&&F<26;++F,E<<=1);if(F>0)for(s.iushrn(F);F-- >0;)(f.isOdd()||d.isOdd())&&(f.iadd(a),d.isub(_)),f.iushrn(1),d.iushrn(1);for(var U=0,W=1;(u.words[0]&W)===0&&U<26;++U,W<<=1);if(U>0)for(u.iushrn(U);U-- >0;)(v.isOdd()||k.isOdd())&&(v.iadd(a),k.isub(_)),v.iushrn(1),k.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(v),d.isub(k)):(u.isub(s),v.isub(f),k.isub(d))}return{a:v,b:k,gcd:u.iushln(w)}},t.prototype._invmp=function(e){r(e.negative===0),r(!e.isZero());var s=this,u=e.clone();s.negative!==0?s=s.umod(e):s=s.clone();for(var f=new t(1),d=new t(0),v=u.clone();s.cmpn(1)>0&&u.cmpn(1)>0;){for(var k=0,w=1;(s.words[0]&w)===0&&k<26;++k,w<<=1);if(k>0)for(s.iushrn(k);k-- >0;)f.isOdd()&&f.iadd(v),f.iushrn(1);for(var a=0,_=1;(u.words[0]&_)===0&&a<26;++a,_<<=1);if(a>0)for(u.iushrn(a);a-- >0;)d.isOdd()&&d.iadd(v),d.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(d)):(u.isub(s),d.isub(f))}var F;return s.cmpn(1)===0?F=f:F=d,F.cmpn(0)<0&&F.iadd(e),F},t.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var s=this.clone(),u=e.clone();s.negative=0,u.negative=0;for(var f=0;s.isEven()&&u.isEven();f++)s.iushrn(1),u.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;u.isEven();)u.iushrn(1);var d=s.cmp(u);if(d<0){var v=s;s=u,u=v}else if(d===0||u.cmpn(1)===0)break;s.isub(u)}while(!0);return u.iushln(f)},t.prototype.invm=function(e){return this.egcd(e).a.umod(e)},t.prototype.isEven=function(){return(this.words[0]&1)===0},t.prototype.isOdd=function(){return(this.words[0]&1)===1},t.prototype.andln=function(e){return this.words[0]&e},t.prototype.bincn=function(e){r(typeof e=="number");var s=e%26,u=(e-s)/26,f=1<<s;if(this.length<=u)return this._expand(u+1),this.words[u]|=f,this;for(var d=f,v=u;d!==0&&v<this.length;v++){var k=this.words[v]|0;k+=d,d=k>>>26,k&=67108863,this.words[v]=k}return d!==0&&(this.words[v]=d,this.length++),this},t.prototype.isZero=function(){return this.length===1&&this.words[0]===0},t.prototype.cmpn=function(e){var s=e<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var u;if(this.length>1)u=1;else{s&&(e=-e),r(e<=67108863,"Number is too big");var f=this.words[0]|0;u=f===e?0:f<e?-1:1}return this.negative!==0?-u|0:u},t.prototype.cmp=function(e){if(this.negative!==0&&e.negative===0)return-1;if(this.negative===0&&e.negative!==0)return 1;var s=this.ucmp(e);return this.negative!==0?-s|0:s},t.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var s=0,u=this.length-1;u>=0;u--){var f=this.words[u]|0,d=e.words[u]|0;if(f!==d){f<d?s=-1:f>d&&(s=1);break}}return s},t.prototype.gtn=function(e){return this.cmpn(e)===1},t.prototype.gt=function(e){return this.cmp(e)===1},t.prototype.gten=function(e){return this.cmpn(e)>=0},t.prototype.gte=function(e){return this.cmp(e)>=0},t.prototype.ltn=function(e){return this.cmpn(e)===-1},t.prototype.lt=function(e){return this.cmp(e)===-1},t.prototype.lten=function(e){return this.cmpn(e)<=0},t.prototype.lte=function(e){return this.cmp(e)<=0},t.prototype.eqn=function(e){return this.cmpn(e)===0},t.prototype.eq=function(e){return this.cmp(e)===0},t.red=function(e){return new C(e)},t.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),e.convertTo(this)._forceRed(e)},t.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},t.prototype._forceRed=function(e){return this.red=e,this},t.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},t.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},t.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},t.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},t.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},t.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},t.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},t.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},t.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},t.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},t.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},t.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},t.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},t.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var z={k256:null,p224:null,p192:null,p25519:null};function $(h,e){this.name=h,this.p=new t(e,16),this.n=this.p.bitLength(),this.k=new t(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var e=new t(null);return e.words=new Array(Math.ceil(this.n/13)),e},$.prototype.ireduce=function(e){var s=e,u;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),u=s.bitLength();while(u>this.n);var f=u<this.n?-1:s.ucmp(this.p);return f===0?(s.words[0]=0,s.length=1):f>0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},$.prototype.split=function(e,s){e.iushrn(this.n,0,s)},$.prototype.imulK=function(e){return e.imul(this.k)};function Z(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(Z,$),Z.prototype.split=function(e,s){for(var u=4194303,f=Math.min(e.length,9),d=0;d<f;d++)s.words[d]=e.words[d];if(s.length=f,e.length<=9){e.words[0]=0,e.length=1;return}var v=e.words[9];for(s.words[s.length++]=v&u,d=10;d<e.length;d++){var k=e.words[d]|0;e.words[d-10]=(k&u)<<4|v>>>22,v=k}v>>>=22,e.words[d-10]=v,v===0&&e.length>10?e.length-=10:e.length-=9},Z.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var s=0,u=0;u<e.length;u++){var f=e.words[u]|0;s+=f*977,e.words[u]=s&67108863,s=f*64+(s/67108864|0)}return e.words[e.length-1]===0&&(e.length--,e.words[e.length-1]===0&&e.length--),e};function m(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(m,$);function y(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(y,$);function A(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(A,$),A.prototype.imulK=function(e){for(var s=0,u=0;u<e.length;u++){var f=(e.words[u]|0)*19+s,d=f&67108863;f>>>=26,e.words[u]=d,s=f}return s!==0&&(e.words[e.length++]=s),e},t._prime=function(e){if(z[e])return z[e];var s;if(e==="k256")s=new Z;else if(e==="p224")s=new m;else if(e==="p192")s=new y;else if(e==="p25519")s=new A;else throw new Error("Unknown prime "+e);return z[e]=s,s};function C(h){if(typeof h=="string"){var e=t._prime(h);this.m=e.p,this.prime=e}else r(h.gtn(1),"modulus must be greater than 1"),this.m=h,this.prime=null}C.prototype._verify1=function(e){r(e.negative===0,"red works only with positives"),r(e.red,"red works only with red numbers")},C.prototype._verify2=function(e,s){r((e.negative|s.negative)===0,"red works only with positives"),r(e.red&&e.red===s.red,"red works only with red numbers")},C.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(M(e,e.umod(this.m)._forceRed(this)),e)},C.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},C.prototype.add=function(e,s){this._verify2(e,s);var u=e.add(s);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},C.prototype.iadd=function(e,s){this._verify2(e,s);var u=e.iadd(s);return u.cmp(this.m)>=0&&u.isub(this.m),u},C.prototype.sub=function(e,s){this._verify2(e,s);var u=e.sub(s);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},C.prototype.isub=function(e,s){this._verify2(e,s);var u=e.isub(s);return u.cmpn(0)<0&&u.iadd(this.m),u},C.prototype.shl=function(e,s){return this._verify1(e),this.imod(e.ushln(s))},C.prototype.imul=function(e,s){return this._verify2(e,s),this.imod(e.imul(s))},C.prototype.mul=function(e,s){return this._verify2(e,s),this.imod(e.mul(s))},C.prototype.isqr=function(e){return this.imul(e,e.clone())},C.prototype.sqr=function(e){return this.mul(e,e)},C.prototype.sqrt=function(e){if(e.isZero())return e.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var u=this.m.add(new t(1)).iushrn(2);return this.pow(e,u)}for(var f=this.m.subn(1),d=0;!f.isZero()&&f.andln(1)===0;)d++,f.iushrn(1);r(!f.isZero());var v=new t(1).toRed(this),k=v.redNeg(),w=this.m.subn(1).iushrn(1),a=this.m.bitLength();for(a=new t(2*a*a).toRed(this);this.pow(a,w).cmp(k)!==0;)a.redIAdd(k);for(var _=this.pow(a,f),F=this.pow(e,f.addn(1).iushrn(1)),E=this.pow(e,f),U=d;E.cmp(v)!==0;){for(var W=E,G=0;W.cmp(v)!==0;G++)W=W.redSqr();r(G<U);var te=this.pow(_,new t(1).iushln(U-G-1));F=F.redMul(te),_=te.redSqr(),E=E.redMul(_),U=G}return F},C.prototype.invm=function(e){var s=e._invmp(this.m);return s.negative!==0?(s.negative=0,this.imod(s).redNeg()):this.imod(s)},C.prototype.pow=function(e,s){if(s.isZero())return new t(1).toRed(this);if(s.cmpn(1)===0)return e.clone();var u=4,f=new Array(1<<u);f[0]=new t(1).toRed(this),f[1]=e;for(var d=2;d<f.length;d++)f[d]=this.mul(f[d-1],e);var v=f[0],k=0,w=0,a=s.bitLength()%26;for(a===0&&(a=26),d=s.length-1;d>=0;d--){for(var _=s.words[d],F=a-1;F>=0;F--){var E=_>>F&1;if(v!==f[0]&&(v=this.sqr(v)),E===0&&k===0){w=0;continue}k<<=1,k|=E,w++,!(w!==u&&(d!==0||F!==0))&&(v=this.mul(v,f[k]),w=0,k=0)}a=26}return v},C.prototype.convertTo=function(e){var s=e.umod(this.m);return s===e?s.clone():s},C.prototype.convertFrom=function(e){var s=e.clone();return s.red=null,s},t.mont=function(e){return new L(e)};function L(h){C.call(this,h),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new t(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)}o(L,C),L.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},L.prototype.convertFrom=function(e){var s=this.imod(e.mul(this.rinv));return s.red=null,s},L.prototype.imul=function(e,s){if(e.isZero()||s.isZero())return e.words[0]=0,e.length=1,e;var u=e.imul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),d=u.isub(f).iushrn(this.shift),v=d;return d.cmp(this.m)>=0?v=d.isub(this.m):d.cmpn(0)<0&&(v=d.iadd(this.m)),v._forceRed(this)},L.prototype.mul=function(e,s){if(e.isZero()||s.isZero())return new t(0)._forceRed(this);var u=e.mul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),d=u.isub(f).iushrn(this.shift),v=d;return d.cmp(this.m)>=0?v=d.isub(this.m):d.cmpn(0)<0&&(v=d.iadd(this.m)),v._forceRed(this)},L.prototype.invm=function(e){var s=this.imod(e._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Pr>"u"||Pr,wi)});import{SdkWrapper as ao}from"@cetusprotocol/common-sdk";import{DefaultProviders as ji,FullRpcUrlMainnet as $i}from"@cetusprotocol/common-sdk";var Vr={full_rpc_url:$i,env:"mainnet",aggregator_url:"https://api-sui.cetus.zone/router_v3",providers:ji,leverage:{package_id:"0xc41dca0f7de9e155862521e4d73386e2a45049c5c3c3fa6033525473fa6c634d",published_at:"0xc41dca0f7de9e155862521e4d73386e2a45049c5c3c3fa6033525473fa6c634d",version:0,config:{versioned:"0x16e25bbbb9b06db1ae9c3ebcb381f670ee3ca3b2647981e9cc0afbbfadb0e9e5",admin_cap_id:"0x5056062528bfac02d34f25b623ed6e34b4cd36fdaf6608e4bd593a13207f9b59",global_config_id:"0xeb7d17f241a94c8f9c7f6f363926d63a0bc608616adb409ab1e3abbc3e4d8ea0",markets:"0x2ed42decf1d64d0eb4af233e827a09c8d653d7fb1a40295cf818022abbc26914",markets_table_id:"0xb4aad4cb3690a5fc2033422fce919c9b8eb3c90102e9501b01a9fcf9dc7ea162"}},suilend:{package_id:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf",published_at:"0xe37cc7bb50fd9b6dbd3873df66fa2c554e973697f50ef97707311dc78bd08444",config:{lendingMarket:[{name:"Main market",slug:"main",id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",ownerCapId:"0xf7a4defe0b6566b6a2674a02a0c61c9f99bd012eed21bc741a069eaa82d35927"},{name:"STEAMM LM",slug:"steamm-lm",id:"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",type:"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",ownerCapId:"0x55a0f33b24e091830302726c8cfbff8cf8abd2ec1f83a4e6f4bf51c7ba3ad5ab",isHidden:!0}],lendingMarketId:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",lendingMarketType:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",apiUrl:"https://d10td5ybgrf39v.cloudfront.net"}}};import{SuilendClient as en}from"@suilend/sdk/client";import{initializeSuilend as tn,initializeSuilendRewards as rn,initializeObligations as nn,formatRewards as on,Side as ut,getFilteredRewards as sn,getStakingYieldAprPercent as an,getDedupedPerDayRewards as ln,getDedupedAprRewards as un,getTotalAprPercent as ri,getNetAprPercent as fn}from"@suilend/sdk";var Zi=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,dr=Math.ceil,Je=Math.floor,Ge="[BigNumber Error] ",Qr=Ge+"Number primitive has more than 15 significant digits: ",et=1e14,X=14,hr=9007199254740991,pr=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],lt=1e7,qe=1e9;function Xr(n){var i,r,o,t=x.prototype={constructor:x,toString:null,valueOf:null},l=new x(1),p=20,c=4,g=-7,M=21,b=-1e7,S=1e7,P=!1,T=1,D=0,O={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},N="0123456789abcdefghijklmnopqrstuvwxyz",I=!0;function x(m,y){var A,C,L,h,e,s,u,f,d=this;if(!(d instanceof x))return new x(m,y);if(y==null){if(m&&m._isBigNumber===!0){d.s=m.s,!m.c||m.e>S?d.c=d.e=null:m.e<b?d.c=[d.e=0]:(d.e=m.e,d.c=m.c.slice());return}if((s=typeof m=="number")&&m*0==0){if(d.s=1/m<0?(m=-m,-1):1,m===~~m){for(h=0,e=m;e>=10;e/=10,h++);h>S?d.c=d.e=null:(d.e=h,d.c=[m]);return}f=String(m)}else{if(!Zi.test(f=String(m)))return o(d,f,s);d.s=f.charCodeAt(0)==45?(f=f.slice(1),-1):1}(h=f.indexOf("."))>-1&&(f=f.replace(".","")),(e=f.search(/e/i))>0?(h<0&&(h=e),h+=+f.slice(e+1),f=f.substring(0,e)):h<0&&(h=f.length)}else{if(oe(y,2,N.length,"Base"),y==10&&I)return d=new x(m),$(d,p+d.e+1,c);if(f=String(m),s=typeof m=="number"){if(m*0!=0)return o(d,f,s,y);if(d.s=1/m<0?(f=f.slice(1),-1):1,x.DEBUG&&f.replace(/^0\.0*|\./,"").length>15)throw Error(Qr+m)}else d.s=f.charCodeAt(0)===45?(f=f.slice(1),-1):1;for(A=N.slice(0,y),h=e=0,u=f.length;e<u;e++)if(A.indexOf(C=f.charAt(e))<0){if(C=="."){if(e>h){h=u;continue}}else if(!L&&(f==f.toUpperCase()&&(f=f.toLowerCase())||f==f.toLowerCase()&&(f=f.toUpperCase()))){L=!0,e=-1,h=0;continue}return o(d,String(m),s,y)}s=!1,f=r(f,y,10,d.s),(h=f.indexOf("."))>-1?f=f.replace(".",""):h=f.length}for(e=0;f.charCodeAt(e)===48;e++);for(u=f.length;f.charCodeAt(--u)===48;);if(f=f.slice(e,++u)){if(u-=e,s&&x.DEBUG&&u>15&&(m>hr||m!==Je(m)))throw Error(Qr+d.s*m);if((h=h-e-1)>S)d.c=d.e=null;else if(h<b)d.c=[d.e=0];else{if(d.e=h,d.c=[],e=(h+1)%X,h<0&&(e+=X),e<u){for(e&&d.c.push(+f.slice(0,e)),u-=X;e<u;)d.c.push(+f.slice(e,e+=X));e=X-(f=f.slice(e)).length}else e-=u;for(;e--;f+="0");d.c.push(+f)}}else d.c=[d.e=0]}x.clone=Xr,x.ROUND_UP=0,x.ROUND_DOWN=1,x.ROUND_CEIL=2,x.ROUND_FLOOR=3,x.ROUND_HALF_UP=4,x.ROUND_HALF_DOWN=5,x.ROUND_HALF_EVEN=6,x.ROUND_HALF_CEIL=7,x.ROUND_HALF_FLOOR=8,x.EUCLID=9,x.config=x.set=function(m){var y,A;if(m!=null)if(typeof m=="object"){if(m.hasOwnProperty(y="DECIMAL_PLACES")&&(A=m[y],oe(A,0,qe,y),p=A),m.hasOwnProperty(y="ROUNDING_MODE")&&(A=m[y],oe(A,0,8,y),c=A),m.hasOwnProperty(y="EXPONENTIAL_AT")&&(A=m[y],A&&A.pop?(oe(A[0],-qe,0,y),oe(A[1],0,qe,y),g=A[0],M=A[1]):(oe(A,-qe,qe,y),g=-(M=A<0?-A:A))),m.hasOwnProperty(y="RANGE"))if(A=m[y],A&&A.pop)oe(A[0],-qe,-1,y),oe(A[1],1,qe,y),b=A[0],S=A[1];else if(oe(A,-qe,qe,y),A)b=-(S=A<0?-A:A);else throw Error(Ge+y+" cannot be zero: "+A);if(m.hasOwnProperty(y="CRYPTO"))if(A=m[y],A===!!A)if(A)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))P=A;else throw P=!A,Error(Ge+"crypto unavailable");else P=A;else throw Error(Ge+y+" not true or false: "+A);if(m.hasOwnProperty(y="MODULO_MODE")&&(A=m[y],oe(A,0,9,y),T=A),m.hasOwnProperty(y="POW_PRECISION")&&(A=m[y],oe(A,0,qe,y),D=A),m.hasOwnProperty(y="FORMAT"))if(A=m[y],typeof A=="object")O=A;else throw Error(Ge+y+" not an object: "+A);if(m.hasOwnProperty(y="ALPHABET"))if(A=m[y],typeof A=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(A))I=A.slice(0,10)=="0123456789",N=A;else throw Error(Ge+y+" invalid: "+A)}else throw Error(Ge+"Object expected: "+m);return{DECIMAL_PLACES:p,ROUNDING_MODE:c,EXPONENTIAL_AT:[g,M],RANGE:[b,S],CRYPTO:P,MODULO_MODE:T,POW_PRECISION:D,FORMAT:O,ALPHABET:N}},x.isBigNumber=function(m){if(!m||m._isBigNumber!==!0)return!1;if(!x.DEBUG)return!0;var y,A,C=m.c,L=m.e,h=m.s;e:if({}.toString.call(C)=="[object Array]"){if((h===1||h===-1)&&L>=-qe&&L<=qe&&L===Je(L)){if(C[0]===0){if(L===0&&C.length===1)return!0;break e}if(y=(L+1)%X,y<1&&(y+=X),String(C[0]).length==y){for(y=0;y<C.length;y++)if(A=C[y],A<0||A>=et||A!==Je(A))break e;if(A!==0)return!0}}}else if(C===null&&L===null&&(h===null||h===1||h===-1))return!0;throw Error(Ge+"Invalid BigNumber: "+m)},x.maximum=x.max=function(){return j(arguments,-1)},x.minimum=x.min=function(){return j(arguments,1)},x.random=(function(){var m=9007199254740992,y=Math.random()*m&2097151?function(){return Je(Math.random()*m)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(A){var C,L,h,e,s,u=0,f=[],d=new x(l);if(A==null?A=p:oe(A,0,qe),e=dr(A/X),P)if(crypto.getRandomValues){for(C=crypto.getRandomValues(new Uint32Array(e*=2));u<e;)s=C[u]*131072+(C[u+1]>>>11),s>=9e15?(L=crypto.getRandomValues(new Uint32Array(2)),C[u]=L[0],C[u+1]=L[1]):(f.push(s%1e14),u+=2);u=e/2}else if(crypto.randomBytes){for(C=crypto.randomBytes(e*=7);u<e;)s=(C[u]&31)*281474976710656+C[u+1]*1099511627776+C[u+2]*4294967296+C[u+3]*16777216+(C[u+4]<<16)+(C[u+5]<<8)+C[u+6],s>=9e15?crypto.randomBytes(7).copy(C,u):(f.push(s%1e14),u+=7);u=e/7}else throw P=!1,Error(Ge+"crypto unavailable");if(!P)for(;u<e;)s=y(),s<9e15&&(f[u++]=s%1e14);for(e=f[--u],A%=X,e&&A&&(s=pr[X-A],f[u]=Je(e/s)*s);f[u]===0;f.pop(),u--);if(u<0)f=[h=0];else{for(h=-1;f[0]===0;f.splice(0,1),h-=X);for(u=1,s=f[0];s>=10;s/=10,u++);u<X&&(h-=X-u)}return d.e=h,d.c=f,d}})(),x.sum=function(){for(var m=1,y=arguments,A=new x(y[0]);m<y.length;)A=A.plus(y[m++]);return A},r=(function(){var m="0123456789";function y(A,C,L,h){for(var e,s=[0],u,f=0,d=A.length;f<d;){for(u=s.length;u--;s[u]*=C);for(s[0]+=h.indexOf(A.charAt(f++)),e=0;e<s.length;e++)s[e]>L-1&&(s[e+1]==null&&(s[e+1]=0),s[e+1]+=s[e]/L|0,s[e]%=L)}return s.reverse()}return function(A,C,L,h,e){var s,u,f,d,v,k,w,a,_=A.indexOf("."),F=p,E=c;for(_>=0&&(d=D,D=0,A=A.replace(".",""),a=new x(C),k=a.pow(A.length-_),D=d,a.c=y(st(Xe(k.c),k.e,"0"),10,L,m),a.e=a.c.length),w=y(A,C,L,e?(s=N,m):(s=m,N)),f=d=w.length;w[--d]==0;w.pop());if(!w[0])return s.charAt(0);if(_<0?--f:(k.c=w,k.e=f,k.s=h,k=i(k,a,F,E,L),w=k.c,v=k.r,f=k.e),u=f+F+1,_=w[u],d=L/2,v=v||u<0||w[u+1]!=null,v=E<4?(_!=null||v)&&(E==0||E==(k.s<0?3:2)):_>d||_==d&&(E==4||v||E==6&&w[u-1]&1||E==(k.s<0?8:7)),u<1||!w[0])A=v?st(s.charAt(1),-F,s.charAt(0)):s.charAt(0);else{if(w.length=u,v)for(--L;++w[--u]>L;)w[u]=0,u||(++f,w=[1].concat(w));for(d=w.length;!w[--d];);for(_=0,A="";_<=d;A+=s.charAt(w[_++]));A=st(A,f,s.charAt(0))}return A}})(),i=(function(){function m(C,L,h){var e,s,u,f,d=0,v=C.length,k=L%lt,w=L/lt|0;for(C=C.slice();v--;)u=C[v]%lt,f=C[v]/lt|0,e=w*u+f*k,s=k*u+e%lt*lt+d,d=(s/h|0)+(e/lt|0)+w*f,C[v]=s%h;return d&&(C=[d].concat(C)),C}function y(C,L,h,e){var s,u;if(h!=e)u=h>e?1:-1;else for(s=u=0;s<h;s++)if(C[s]!=L[s]){u=C[s]>L[s]?1:-1;break}return u}function A(C,L,h,e){for(var s=0;h--;)C[h]-=s,s=C[h]<L[h]?1:0,C[h]=s*e+C[h]-L[h];for(;!C[0]&&C.length>1;C.splice(0,1));}return function(C,L,h,e,s){var u,f,d,v,k,w,a,_,F,E,U,W,G,te,Ze,J,re,Ke=C.s==L.s?1:-1,ee=C.c,Q=L.c;if(!ee||!ee[0]||!Q||!Q[0])return new x(!C.s||!L.s||(ee?Q&&ee[0]==Q[0]:!Q)?NaN:ee&&ee[0]==0||!Q?Ke*0:Ke/0);for(_=new x(Ke),F=_.c=[],f=C.e-L.e,Ke=h+f+1,s||(s=et,f=Ye(C.e/X)-Ye(L.e/X),Ke=Ke/X|0),d=0;Q[d]==(ee[d]||0);d++);if(Q[d]>(ee[d]||0)&&f--,Ke<0)F.push(1),v=!0;else{for(te=ee.length,J=Q.length,d=0,Ke+=2,k=Je(s/(Q[0]+1)),k>1&&(Q=m(Q,k,s),ee=m(ee,k,s),J=Q.length,te=ee.length),G=J,E=ee.slice(0,J),U=E.length;U<J;E[U++]=0);re=Q.slice(),re=[0].concat(re),Ze=Q[0],Q[1]>=s/2&&Ze++;do{if(k=0,u=y(Q,E,J,U),u<0){if(W=E[0],J!=U&&(W=W*s+(E[1]||0)),k=Je(W/Ze),k>1)for(k>=s&&(k=s-1),w=m(Q,k,s),a=w.length,U=E.length;y(w,E,a,U)==1;)k--,A(w,J<a?re:Q,a,s),a=w.length,u=1;else k==0&&(u=k=1),w=Q.slice(),a=w.length;if(a<U&&(w=[0].concat(w)),A(E,w,U,s),U=E.length,u==-1)for(;y(Q,E,J,U)<1;)k++,A(E,J<U?re:Q,U,s),U=E.length}else u===0&&(k++,E=[0]);F[d++]=k,E[0]?E[U++]=ee[G]||0:(E=[ee[G]],U=1)}while((G++<te||E[0]!=null)&&Ke--);v=E[0]!=null,F[0]||F.splice(0,1)}if(s==et){for(d=1,Ke=F[0];Ke>=10;Ke/=10,d++);$(_,h+(_.e=d+f*X-1)+1,e,v)}else _.e=f,_.r=+v;return _}})();function q(m,y,A,C){var L,h,e,s,u;if(A==null?A=c:oe(A,0,8),!m.c)return m.toString();if(L=m.c[0],e=m.e,y==null)u=Xe(m.c),u=C==1||C==2&&(e<=g||e>=M)?Tt(u,e):st(u,e,"0");else if(m=$(new x(m),y,A),h=m.e,u=Xe(m.c),s=u.length,C==1||C==2&&(y<=h||h<=g)){for(;s<y;u+="0",s++);u=Tt(u,h)}else if(y-=e+(C===2&&h>e),u=st(u,h,"0"),h+1>s){if(--y>0)for(u+=".";y--;u+="0");}else if(y+=h-s,y>0)for(h+1==s&&(u+=".");y--;u+="0");return m.s<0&&L?"-"+u:u}function j(m,y){for(var A,C,L=1,h=new x(m[0]);L<m.length;L++)C=new x(m[L]),(!C.s||(A=gt(h,C))===y||A===0&&h.s===y)&&(h=C);return h}function z(m,y,A){for(var C=1,L=y.length;!y[--L];y.pop());for(L=y[0];L>=10;L/=10,C++);return(A=C+A*X-1)>S?m.c=m.e=null:A<b?m.c=[m.e=0]:(m.e=A,m.c=y),m}o=(function(){var m=/^(-?)0([xbo])(?=\w[\w.]*$)/i,y=/^([^.]+)\.$/,A=/^\.([^.]+)$/,C=/^-?(Infinity|NaN)$/,L=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(h,e,s,u){var f,d=s?e:e.replace(L,"");if(C.test(d))h.s=isNaN(d)?null:d<0?-1:1;else{if(!s&&(d=d.replace(m,function(v,k,w){return f=(w=w.toLowerCase())=="x"?16:w=="b"?2:8,!u||u==f?k:v}),u&&(f=u,d=d.replace(y,"$1").replace(A,"0.$1")),e!=d))return new x(d,f);if(x.DEBUG)throw Error(Ge+"Not a"+(u?" base "+u:"")+" number: "+e);h.s=null}h.c=h.e=null}})();function $(m,y,A,C){var L,h,e,s,u,f,d,v=m.c,k=pr;if(v){e:{for(L=1,s=v[0];s>=10;s/=10,L++);if(h=y-L,h<0)h+=X,e=y,u=v[f=0],d=Je(u/k[L-e-1]%10);else if(f=dr((h+1)/X),f>=v.length)if(C){for(;v.length<=f;v.push(0));u=d=0,L=1,h%=X,e=h-X+1}else break e;else{for(u=s=v[f],L=1;s>=10;s/=10,L++);h%=X,e=h-X+L,d=e<0?0:Je(u/k[L-e-1]%10)}if(C=C||y<0||v[f+1]!=null||(e<0?u:u%k[L-e-1]),C=A<4?(d||C)&&(A==0||A==(m.s<0?3:2)):d>5||d==5&&(A==4||C||A==6&&(h>0?e>0?u/k[L-e]:0:v[f-1])%10&1||A==(m.s<0?8:7)),y<1||!v[0])return v.length=0,C?(y-=m.e+1,v[0]=k[(X-y%X)%X],m.e=-y||0):v[0]=m.e=0,m;if(h==0?(v.length=f,s=1,f--):(v.length=f+1,s=k[X-h],v[f]=e>0?Je(u/k[L-e]%k[e])*s:0),C)for(;;)if(f==0){for(h=1,e=v[0];e>=10;e/=10,h++);for(e=v[0]+=s,s=1;e>=10;e/=10,s++);h!=s&&(m.e++,v[0]==et&&(v[0]=1));break}else{if(v[f]+=s,v[f]!=et)break;v[f--]=0,s=1}for(h=v.length;v[--h]===0;v.pop());}m.e>S?m.c=m.e=null:m.e<b&&(m.c=[m.e=0])}return m}function Z(m){var y,A=m.e;return A===null?m.toString():(y=Xe(m.c),y=A<=g||A>=M?Tt(y,A):st(y,A,"0"),m.s<0?"-"+y:y)}return t.absoluteValue=t.abs=function(){var m=new x(this);return m.s<0&&(m.s=1),m},t.comparedTo=function(m,y){return gt(this,new x(m,y))},t.decimalPlaces=t.dp=function(m,y){var A,C,L,h=this;if(m!=null)return oe(m,0,qe),y==null?y=c:oe(y,0,8),$(new x(h),m+h.e+1,y);if(!(A=h.c))return null;if(C=((L=A.length-1)-Ye(this.e/X))*X,L=A[L])for(;L%10==0;L/=10,C--);return C<0&&(C=0),C},t.dividedBy=t.div=function(m,y){return i(this,new x(m,y),p,c)},t.dividedToIntegerBy=t.idiv=function(m,y){return i(this,new x(m,y),0,1)},t.exponentiatedBy=t.pow=function(m,y){var A,C,L,h,e,s,u,f,d,v=this;if(m=new x(m),m.c&&!m.isInteger())throw Error(Ge+"Exponent not an integer: "+Z(m));if(y!=null&&(y=new x(y)),s=m.e>14,!v.c||!v.c[0]||v.c[0]==1&&!v.e&&v.c.length==1||!m.c||!m.c[0])return d=new x(Math.pow(+Z(v),s?m.s*(2-Lt(m)):+Z(m))),y?d.mod(y):d;if(u=m.s<0,y){if(y.c?!y.c[0]:!y.s)return new x(NaN);C=!u&&v.isInteger()&&y.isInteger(),C&&(v=v.mod(y))}else{if(m.e>9&&(v.e>0||v.e<-1||(v.e==0?v.c[0]>1||s&&v.c[1]>=24e7:v.c[0]<8e13||s&&v.c[0]<=9999975e7)))return h=v.s<0&&Lt(m)?-0:0,v.e>-1&&(h=1/h),new x(u?1/h:h);D&&(h=dr(D/X+2))}for(s?(A=new x(.5),u&&(m.s=1),f=Lt(m)):(L=Math.abs(+Z(m)),f=L%2),d=new x(l);;){if(f){if(d=d.times(v),!d.c)break;h?d.c.length>h&&(d.c.length=h):C&&(d=d.mod(y))}if(L){if(L=Je(L/2),L===0)break;f=L%2}else if(m=m.times(A),$(m,m.e+1,1),m.e>14)f=Lt(m);else{if(L=+Z(m),L===0)break;f=L%2}v=v.times(v),h?v.c&&v.c.length>h&&(v.c.length=h):C&&(v=v.mod(y))}return C?d:(u&&(d=l.div(d)),y?d.mod(y):h?$(d,D,c,e):d)},t.integerValue=function(m){var y=new x(this);return m==null?m=c:oe(m,0,8),$(y,y.e+1,m)},t.isEqualTo=t.eq=function(m,y){return gt(this,new x(m,y))===0},t.isFinite=function(){return!!this.c},t.isGreaterThan=t.gt=function(m,y){return gt(this,new x(m,y))>0},t.isGreaterThanOrEqualTo=t.gte=function(m,y){return(y=gt(this,new x(m,y)))===1||y===0},t.isInteger=function(){return!!this.c&&Ye(this.e/X)>this.c.length-2},t.isLessThan=t.lt=function(m,y){return gt(this,new x(m,y))<0},t.isLessThanOrEqualTo=t.lte=function(m,y){return(y=gt(this,new x(m,y)))===-1||y===0},t.isNaN=function(){return!this.s},t.isNegative=function(){return this.s<0},t.isPositive=function(){return this.s>0},t.isZero=function(){return!!this.c&&this.c[0]==0},t.minus=function(m,y){var A,C,L,h,e=this,s=e.s;if(m=new x(m,y),y=m.s,!s||!y)return new x(NaN);if(s!=y)return m.s=-y,e.plus(m);var u=e.e/X,f=m.e/X,d=e.c,v=m.c;if(!u||!f){if(!d||!v)return d?(m.s=-y,m):new x(v?e:NaN);if(!d[0]||!v[0])return v[0]?(m.s=-y,m):new x(d[0]?e:c==3?-0:0)}if(u=Ye(u),f=Ye(f),d=d.slice(),s=u-f){for((h=s<0)?(s=-s,L=d):(f=u,L=v),L.reverse(),y=s;y--;L.push(0));L.reverse()}else for(C=(h=(s=d.length)<(y=v.length))?s:y,s=y=0;y<C;y++)if(d[y]!=v[y]){h=d[y]<v[y];break}if(h&&(L=d,d=v,v=L,m.s=-m.s),y=(C=v.length)-(A=d.length),y>0)for(;y--;d[A++]=0);for(y=et-1;C>s;){if(d[--C]<v[C]){for(A=C;A&&!d[--A];d[A]=y);--d[A],d[C]+=et}d[C]-=v[C]}for(;d[0]==0;d.splice(0,1),--f);return d[0]?z(m,d,f):(m.s=c==3?-1:1,m.c=[m.e=0],m)},t.modulo=t.mod=function(m,y){var A,C,L=this;return m=new x(m,y),!L.c||!m.s||m.c&&!m.c[0]?new x(NaN):!m.c||L.c&&!L.c[0]?new x(L):(T==9?(C=m.s,m.s=1,A=i(L,m,0,3),m.s=C,A.s*=C):A=i(L,m,0,T),m=L.minus(A.times(m)),!m.c[0]&&T==1&&(m.s=L.s),m)},t.multipliedBy=t.times=function(m,y){var A,C,L,h,e,s,u,f,d,v,k,w,a,_,F,E=this,U=E.c,W=(m=new x(m,y)).c;if(!U||!W||!U[0]||!W[0])return!E.s||!m.s||U&&!U[0]&&!W||W&&!W[0]&&!U?m.c=m.e=m.s=null:(m.s*=E.s,!U||!W?m.c=m.e=null:(m.c=[0],m.e=0)),m;for(C=Ye(E.e/X)+Ye(m.e/X),m.s*=E.s,u=U.length,v=W.length,u<v&&(a=U,U=W,W=a,L=u,u=v,v=L),L=u+v,a=[];L--;a.push(0));for(_=et,F=lt,L=v;--L>=0;){for(A=0,k=W[L]%F,w=W[L]/F|0,e=u,h=L+e;h>L;)f=U[--e]%F,d=U[e]/F|0,s=w*f+d*k,f=k*f+s%F*F+a[h]+A,A=(f/_|0)+(s/F|0)+w*d,a[h--]=f%_;a[h]=A}return A?++C:a.splice(0,1),z(m,a,C)},t.negated=function(){var m=new x(this);return m.s=-m.s||null,m},t.plus=function(m,y){var A,C=this,L=C.s;if(m=new x(m,y),y=m.s,!L||!y)return new x(NaN);if(L!=y)return m.s=-y,C.minus(m);var h=C.e/X,e=m.e/X,s=C.c,u=m.c;if(!h||!e){if(!s||!u)return new x(L/0);if(!s[0]||!u[0])return u[0]?m:new x(s[0]?C:L*0)}if(h=Ye(h),e=Ye(e),s=s.slice(),L=h-e){for(L>0?(e=h,A=u):(L=-L,A=s),A.reverse();L--;A.push(0));A.reverse()}for(L=s.length,y=u.length,L-y<0&&(A=u,u=s,s=A,y=L),L=0;y;)L=(s[--y]=s[y]+u[y]+L)/et|0,s[y]=et===s[y]?0:s[y]%et;return L&&(s=[L].concat(s),++e),z(m,s,e)},t.precision=t.sd=function(m,y){var A,C,L,h=this;if(m!=null&&m!==!!m)return oe(m,1,qe),y==null?y=c:oe(y,0,8),$(new x(h),m,y);if(!(A=h.c))return null;if(L=A.length-1,C=L*X+1,L=A[L]){for(;L%10==0;L/=10,C--);for(L=A[0];L>=10;L/=10,C++);}return m&&h.e+1>C&&(C=h.e+1),C},t.shiftedBy=function(m){return oe(m,-hr,hr),this.times("1e"+m)},t.squareRoot=t.sqrt=function(){var m,y,A,C,L,h=this,e=h.c,s=h.s,u=h.e,f=p+4,d=new x("0.5");if(s!==1||!e||!e[0])return new x(!s||s<0&&(!e||e[0])?NaN:e?h:1/0);if(s=Math.sqrt(+Z(h)),s==0||s==1/0?(y=Xe(e),(y.length+u)%2==0&&(y+="0"),s=Math.sqrt(+y),u=Ye((u+1)/2)-(u<0||u%2),s==1/0?y="5e"+u:(y=s.toExponential(),y=y.slice(0,y.indexOf("e")+1)+u),A=new x(y)):A=new x(s+""),A.c[0]){for(u=A.e,s=u+f,s<3&&(s=0);;)if(L=A,A=d.times(L.plus(i(h,L,f,1))),Xe(L.c).slice(0,s)===(y=Xe(A.c)).slice(0,s))if(A.e<u&&--s,y=y.slice(s-3,s+1),y=="9999"||!C&&y=="4999"){if(!C&&($(L,L.e+p+2,0),L.times(L).eq(h))){A=L;break}f+=4,s+=4,C=1}else{(!+y||!+y.slice(1)&&y.charAt(0)=="5")&&($(A,A.e+p+2,1),m=!A.times(A).eq(h));break}}return $(A,A.e+p+1,c,m)},t.toExponential=function(m,y){return m!=null&&(oe(m,0,qe),m++),q(this,m,y,1)},t.toFixed=function(m,y){return m!=null&&(oe(m,0,qe),m=m+this.e+1),q(this,m,y)},t.toFormat=function(m,y,A){var C,L=this;if(A==null)m!=null&&y&&typeof y=="object"?(A=y,y=null):m&&typeof m=="object"?(A=m,m=y=null):A=O;else if(typeof A!="object")throw Error(Ge+"Argument not an object: "+A);if(C=L.toFixed(m,y),L.c){var h,e=C.split("."),s=+A.groupSize,u=+A.secondaryGroupSize,f=A.groupSeparator||"",d=e[0],v=e[1],k=L.s<0,w=k?d.slice(1):d,a=w.length;if(u&&(h=s,s=u,u=h,a-=h),s>0&&a>0){for(h=a%s||s,d=w.substr(0,h);h<a;h+=s)d+=f+w.substr(h,s);u>0&&(d+=f+w.slice(h)),k&&(d="-"+d)}C=v?d+(A.decimalSeparator||"")+((u=+A.fractionGroupSize)?v.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(A.fractionGroupSeparator||"")):v):d}return(A.prefix||"")+C+(A.suffix||"")},t.toFraction=function(m){var y,A,C,L,h,e,s,u,f,d,v,k,w=this,a=w.c;if(m!=null&&(s=new x(m),!s.isInteger()&&(s.c||s.s!==1)||s.lt(l)))throw Error(Ge+"Argument "+(s.isInteger()?"out of range: ":"not an integer: ")+Z(s));if(!a)return new x(w);for(y=new x(l),f=A=new x(l),C=u=new x(l),k=Xe(a),h=y.e=k.length-w.e-1,y.c[0]=pr[(e=h%X)<0?X+e:e],m=!m||s.comparedTo(y)>0?h>0?y:f:s,e=S,S=1/0,s=new x(k),u.c[0]=0;d=i(s,y,0,1),L=A.plus(d.times(C)),L.comparedTo(m)!=1;)A=C,C=L,f=u.plus(d.times(L=f)),u=L,y=s.minus(d.times(L=y)),s=L;return L=i(m.minus(A),C,0,1),u=u.plus(L.times(f)),A=A.plus(L.times(C)),u.s=f.s=w.s,h=h*2,v=i(f,C,h,c).minus(w).abs().comparedTo(i(u,A,h,c).minus(w).abs())<1?[f,C]:[u,A],S=e,v},t.toNumber=function(){return+Z(this)},t.toPrecision=function(m,y){return m!=null&&oe(m,1,qe),q(this,m,y,2)},t.toString=function(m){var y,A=this,C=A.s,L=A.e;return L===null?C?(y="Infinity",C<0&&(y="-"+y)):y="NaN":(m==null?y=L<=g||L>=M?Tt(Xe(A.c),L):st(Xe(A.c),L,"0"):m===10&&I?(A=$(new x(A),p+L+1,c),y=st(Xe(A.c),A.e,"0")):(oe(m,2,N.length,"Base"),y=r(st(Xe(A.c),L,"0"),10,m,C,!0)),C<0&&A.c[0]&&(y="-"+y)),y},t.valueOf=t.toJSON=function(){return Z(this)},t._isBigNumber=!0,t[Symbol.toStringTag]="BigNumber",t[Symbol.for("nodejs.util.inspect.custom")]=t.valueOf,n!=null&&x.set(n),x}function Ye(n){var i=n|0;return n>0||n===i?i:i-1}function Xe(n){for(var i,r,o=1,t=n.length,l=n[0]+"";o<t;){for(i=n[o++]+"",r=X-i.length;r--;i="0"+i);l+=i}for(t=l.length;l.charCodeAt(--t)===48;);return l.slice(0,t+1||1)}function gt(n,i){var r,o,t=n.c,l=i.c,p=n.s,c=i.s,g=n.e,M=i.e;if(!p||!c)return null;if(r=t&&!t[0],o=l&&!l[0],r||o)return r?o?0:-c:p;if(p!=c)return p;if(r=p<0,o=g==M,!t||!l)return o?0:!t^r?1:-1;if(!o)return g>M^r?1:-1;for(c=(g=t.length)<(M=l.length)?g:M,p=0;p<c;p++)if(t[p]!=l[p])return t[p]>l[p]^r?1:-1;return g==M?0:g>M^r?1:-1}function oe(n,i,r,o){if(n<i||n>r||n!==Je(n))throw Error(Ge+(o||"Argument")+(typeof n=="number"?n<i||n>r?" out of range: ":" not an integer: ":" not a primitive number: ")+String(n))}function Lt(n){var i=n.c.length-1;return Ye(n.e/X)==i&&n.c[i]%2!=0}function Tt(n,i){return(n.length>1?n.charAt(0)+"."+n.slice(1):n)+(i<0?"e":"e+")+i}function st(n,i,r){var o,t;if(i<0){for(t=r+".";++i;t+=r);n=t+n}else if(o=n.length,++i>o){for(t=r,i-=o;--i;t+=r);n+=t}else i<o&&(n=n.slice(0,i)+"."+n.slice(i));return n}var Wi=Xr(),We=Wi;import{linearlyInterpolate as Hi,Side as vt}from"@suilend/sdk";import{NORMALIZED_flSUI_COINTYPE as Vi,NORMALIZED_jugSUI_COINTYPE as Qi,NORMALIZED_LBTC_COINTYPE as Xi,formatLtvPercent as Ji}from"@suilend/sui-fe";import zi from"crypto";var Dt=new Uint8Array(256),xt=Dt.length;function gr(){return xt>Dt.length-16&&(zi.randomFillSync(Dt),xt=0),Dt.slice(xt,xt+=16)}var je=[];for(let n=0;n<256;++n)je.push((n+256).toString(16).slice(1));function Jr(n,i=0){return je[n[i+0]]+je[n[i+1]]+je[n[i+2]]+je[n[i+3]]+"-"+je[n[i+4]]+je[n[i+5]]+"-"+je[n[i+6]]+je[n[i+7]]+"-"+je[n[i+8]]+je[n[i+9]]+"-"+je[n[i+10]]+je[n[i+11]]+je[n[i+12]]+je[n[i+13]]+je[n[i+14]]+je[n[i+15]]}import Ki from"crypto";var mr={randomUUID:Ki.randomUUID};function Gi(n,i,r){if(mr.randomUUID&&!i&&!n)return mr.randomUUID();n=n||{};let o=n.random||(n.rng||gr)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,i){r=r||0;for(let t=0;t<16;++t)i[r+t]=o[t];return i}return Jr(o)}var mt=Gi;import{getPackagerConfigs as Yi}from"@cetusprotocol/common-sdk";var vr=10n;function Yr(n){return n.depositedAmount.eq(0)?new We(0):n.borrowedAmount.div(n.depositedAmount).times(100)}function wr(n){let i=Yr(n);if(!i.gt(100))return Hi(n.config.interestRate,"utilPercent","aprPercent",i)}function ei(n){let i=Yr(n),r=wr(n);if(!(r===void 0||i.gt(100)))return new We(i.div(100)).times(r.div(100)).times(1-n.config.spreadFeeBps/1e4).times(100)}function Uo(n,i,r,o){let{apiUrl:t}=Yi(o.sdkOptions.suilend);n===vt.DEPOSIT&&([Vi,Qi].includes(i.coinType)&&r.push({stats:{id:mt(),isActive:!0,rewardIndex:-1,reserve:i,rewardCoinType:"LIQ_AG",mintDecimals:0,symbol:"LiqAg Points",iconUrl:`${t}/partners/LiqAg.png`,perDay:new We(.036),side:vt.DEPOSIT},obligationClaims:{}}),i.coinType===Xi&&r.push({stats:{id:mt(),isActive:!0,rewardIndex:-1,reserve:i,rewardCoinType:"LOMBARD",mintDecimals:0,symbol:"3x Lombard Lux",iconUrl:`${t}/partners/Lombard Lux.png`,perDay:new We(0),side:vt.DEPOSIT},obligationClaims:{}}))}function qo(n,i,r){return{...n,depositedAmount:i===vt.DEPOSIT?We.max(n.depositedAmount.plus(r),0):n.depositedAmount,borrowedAmount:i===vt.BORROW?We.max(n.borrowedAmount.plus(r),0):n.borrowedAmount}}function jo(n,i,r){let o=n===vt.DEPOSIT?i.depositedAmount:i.borrowedAmount,t=n===vt.DEPOSIT?r.depositedAmount:r.borrowedAmount,l=t.eq(0)?new We(-1):o.div(t);return{multiplier:l,isValid:!l.eq(-1)}}function $o(n,i,r,o){let t=n.map(p=>({...p,stats:{...p.stats,perDay:o?p.stats.perDay.times(r):void 0}})),l=i.map(p=>({...p,stats:{...p.stats,aprPercent:o?p.stats.aprPercent.times(r):void 0}}));return{newPerDayRewards:t,newAprRewards:l}}function ti(n,i){if(!vr)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(i<0n){let r=10n**(vr- -i);return n*r}return n/10n**(i+vr)}function Zo(n){return Ji(new We(n))}import{d as Mr,getPackagerConfigs as wt,removeHexPrefix as br}from"@cetusprotocol/common-sdk";import{toHEX as ii}from"@mysten/sui/utils";var Ot=class{constructor(i){this.getSuiLendCoinInfo=async(i,r,o)=>{let t=new We(r.toString()),{allLendingMarketData:l,lstAprPercentMap:p}=await this.getLendingMarketData(!1);if(await this.getInitializeObligations({allLendingMarketData:l,lstAprPercentMap:p},!0),!l||!p)throw new Error("lendingMarketCache is not initialized");let c=Object.values(l??{})[0],g=c.lendingMarket.reserves.find(m=>m.coinType===i);if(!g)throw new Error("reserve not found");let b=(this.obligationsCache?.[c.lendingMarket.id]).rewardMap[g.token.coinType]?.[o]??[],S=sn(b),P=an(o,g.coinType,p),T=o===ut.DEPOSIT?g.depositAprPercent:g.borrowAprPercent,D=T,O=new We(1),N=!0;if(o!==void 0&&t!==void 0&&t.gt(0)){let m={...g,depositedAmount:o===ut.DEPOSIT?We.max(g.depositedAmount.plus(o===ut.DEPOSIT?t:t.negated()),0):g.depositedAmount,borrowedAmount:o===ut.BORROW?We.max(g.borrowedAmount.plus(o===ut.BORROW?t:t.negated()),0):g.borrowedAmount};D=o===ut.DEPOSIT?ei(m):wr(m);let y=o===ut.DEPOSIT?g.depositedAmount:g.borrowedAmount,A=o===ut.DEPOSIT?m.depositedAmount:m.borrowedAmount;O=A.eq(0)?new We(-1):y.div(A),N=!O.eq(-1)}let q=ln(S).map(m=>({...m,stats:{...m.stats,perDay:N?m.stats.perDay.times(O):void 0}})),z=un(S).map(m=>({...m,stats:{...m.stats,aprPercent:N?m.stats.aprPercent.times(O):void 0}})),$=ri(o,T,S,P),Z=D===void 0||z.some(m=>m.stats.aprPercent===void 0)?void 0:ri(o,D,z,P);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:315 ~ SuiLendModule ~ newTotalAprPercent:",Z?.toString()),{newTotalAprPercent:Z?.toString(),totalAprPercent:$.toString()}};this.refreshReservePrice=async(i,r,o)=>{let{lendingMarketId:t,lendingMarketType:l}=wt(this.sdk.sdkOptions?.suilend),p=`${t}_${l}`;if(!this.suilendClientCache)throw new Error("suilendClientCache is not initialized");let c=await this.suilendClientCache[p].pythClient.getPriceFeedObjectId(r);this.suilendClientCache[p].refreshReservePrices(i,c,o)};this.getLatestPriceFeeds=async(i,r=!1)=>{let{lendingMarketId:o,lendingMarketType:t}=wt(this.sdk.sdkOptions?.suilend),l={},p=[];if(i.forEach(b=>{let S=this.sdk.getCache(`getLatestPrice_${b.coinType.name}`,r);S&&this.priceCheck(S,60)?l[b.coinType.name]=S:p.push(b.coinType.name)}),p.length==0)return l;let c=`${o}_${t}`;if(!this.suilendClientCache)throw new Error("suilendClient is not initialized");let g=Array.from(new Set(i.map(b=>b?.priceIdentifier?.bytes?ii(new Uint8Array(b.priceIdentifier.bytes)):br(b.priceIdentifier.toString()))));return(await this.suilendClientCache[c].pythConnection.getLatestPriceFeeds(g))?.forEach((b,S)=>{let P=b.getPriceUnchecked(),T=i[S];if(P){let{price:D,expo:O}=P,N=Mr(D).mul(Mr(10).pow(Mr(O))).toString(),I={coin_type:T.coinType.name||T.coinType,price:N,oracle_price:0n,last_update_time:P.publishTime};I.oracle_price=ti(BigInt(D),BigInt(O)),l[T.coinType.name||T.coinType]=I,this.sdk.updateCache(`getLatestPrice_${I.coin_type}`,I)}}),l};this.getLatestPriceFeedsByCoinTypes=async(i,r=!1)=>{let{lendingMarketId:o}=wt(this.sdk.sdkOptions?.suilend),{allLendingMarketData:t}=await this.getLendingMarketData(!1),l=[];return i.forEach(c=>{let g=t[o].reserveMap[c];l.push(g)}),await this.getLatestPriceFeeds(l,r)};this.getSuiLendReserveInfo=async(i,r,o)=>{let{lendingMarketId:t}=wt(this.sdk.sdkOptions?.suilend);o||(o=(await this.getLendingMarketData(!1)).allLendingMarketData);let l=o[t].reserveMap[i],p=o[t].reserveMap[r],c=o[t].refreshedRawReserves.filter(S=>S.coinType.name==br(i)),g=o[t].refreshedRawReserves.filter(S=>S.coinType.name==br(r)),M=o[t].reserveMap[i],b=o[t].reserveMap[r];return{baseReserveArrayIndex:l.arrayIndex.toString(),quoteReserveArrayIndex:p.arrayIndex.toString(),reserve:[c[0],g[0]],baseReserveMapInfo:M,quoteReserveMapInfo:b}};this.refreshReservePrices=async(i,r)=>{for(let o=0;o<r.length;o++){let t=ii(new Uint8Array(r[o].priceIdentifier.bytes));await this.refreshReservePrice(i,t,BigInt(r[o].arrayIndex))}};this.sdk=i}async getSuilendClient(i,r){let o=`${i}_${r}`;return this.suilendClientCache||(this.suilendClientCache={}),this.suilendClientCache[o]||(this.suilendClientCache[o]=await en.initialize(i,r,this.sdk.FullClient,!0)),this.suilendClientCache[o]}async getLendingMarketData(i=!0){let r="lendingMarketData",o=this.sdk.getCache(r,i);if(o)return o;let t=wt(this.sdk.sdkOptions?.suilend)?.lendingMarket||[];if(!t.length)return console.warn("\u26A0\uFE0F No lending markets configured."),{};try{let[l,p]=await Promise.all([(async()=>Object.fromEntries(await Promise.all(t.map(async g=>{let M=await this.getSuilendClient(g.id,g.type),{lendingMarket:b,coinMetadataMap:S,refreshedRawReserves:P,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:O,rewardCoinTypes:N,activeRewardCoinTypes:I,rewardCoinMetadataMap:x}=await tn(this.sdk.FullClient,M),{rewardPriceMap:q}=await rn(T,I);return[g.id,{suilendClient:M,lendingMarket:b,coinMetadataMap:S,refreshedRawReserves:P,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:O,rewardPriceMap:q,rewardCoinTypes:N,activeRewardCoinTypes:I,rewardCoinMetadataMap:x}]}))))(),(async()=>{try{let c=await fetch(`${this.sdk.sdkOptions?.suilend?.config?.apiUrl}/springsui/apy`),g=await c.json();if(c?.statusCode===500)throw new Error("Failed to fetch SpringSui LST APRs");return Object.fromEntries(Object.entries(g).map(([M,b])=>[M,new We(b)]))}catch(c){return console.error(c),{}}})()]);return this.sdk.updateCache(r,{allLendingMarketData:l,lstAprPercentMap:p},30*1e3),{allLendingMarketData:l,lstAprPercentMap:p}}catch(l){throw console.log("\u{1F680} getLendingMarketData error:",l),l}}async getInitializeObligations(i,r=!1){if(!r&&this.obligationsCache)return this.obligationsCache;i||(i=await this.getLendingMarketData(!1));let o={};for(let t of Object.values(i.allLendingMarketData)){let{obligationOwnerCaps:l,obligations:p}=await nn(this.sdk.FullClient,t.suilendClient,t.refreshedRawReserves,t.reserveMap,this.sdk.senderAddress),c=on(t.reserveMap,t.rewardCoinMetadataMap,t.rewardPriceMap,p);o[t.lendingMarket.id]={obligationOwnerCaps:l,obligations:p,rewardMap:c}}return this.obligationsCache=o,this.obligationsCache}async getSuiLendUserData(i,r=!1){let{allLendingMarketData:o,lstAprPercentMap:t}=await this.getLendingMarketData(!1),l=await this.getInitializeObligations({allLendingMarketData:o,lstAprPercentMap:t},!1),{lendingMarketId:p}=wt(this.sdk.sdkOptions?.suilend),c=l[p];if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:275 ~ SuiLendModule ~ getSuiLendUserData ~ userData:",c),!c)throw new Error(`No user data found for lending market: ${p}`);if(i){let g=c.obligations.find(b=>b.id===i);if(!g)throw new Error(`Obligation not found: ${i}`);let M=fn(g,c.rewardMap,t??{});return{obligation:g,netAprPercent:M,deposits:g.deposits,borrowedAmount:g.borrowedAmount,depositedAmount:g.depositedAmount,netValueUsd:g.netValueUsd,rewardMap:c.rewardMap}}}priceCheck(i,r=60){let o=Math.floor(Date.now()/1e3);if(!(Math.abs(o-i.last_update_time)>r))return i}};import{getPackagerConfigs as ne,CACHE_TIME_5MIN as Si,CoinAssist as Y,CLOCK_ADDRESS as pt,d as R,removeHexPrefix as yt,getObjectFields as Pi,addHexPrefix as so,U64_MAX as Ci}from"@cetusprotocol/common-sdk";var Mt=9e15,ht=1e9,yr="0123456789abcdef",Bt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Nt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",_r={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Mt,maxE:Mt,crypto:!1},ai,at,V=!0,Ft="[DecimalError] ",dt=Ft+"Invalid argument: ",li=Ft+"Precision limit exceeded",ui=Ft+"crypto unavailable",fi="[object Decimal]",ze=Math.floor,Fe=Math.pow,cn=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,dn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,hn=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ci=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tt=1e7,H=7,pn=9007199254740991,gn=Bt.length-1,kr=Nt.length-1,B={toStringTag:fi};B.absoluteValue=B.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),K(n)};B.ceil=function(){return K(new this.constructor(this),this.e+1,2)};B.clampedTo=B.clamp=function(n,i){var r,o=this,t=o.constructor;if(n=new t(n),i=new t(i),!n.s||!i.s)return new t(NaN);if(n.gt(i))throw Error(dt+i);return r=o.cmp(n),r<0?n:o.cmp(i)>0?i:new t(o)};B.comparedTo=B.cmp=function(n){var i,r,o,t,l=this,p=l.d,c=(n=new l.constructor(n)).d,g=l.s,M=n.s;if(!p||!c)return!g||!M?NaN:g!==M?g:p===c?0:!p^g<0?1:-1;if(!p[0]||!c[0])return p[0]?g:c[0]?-M:0;if(g!==M)return g;if(l.e!==n.e)return l.e>n.e^g<0?1:-1;for(o=p.length,t=c.length,i=0,r=o<t?o:t;i<r;++i)if(p[i]!==c[i])return p[i]>c[i]^g<0?1:-1;return o===t?0:o>t^g<0?1:-1};B.cosine=B.cos=function(){var n,i,r=this,o=r.constructor;return r.d?r.d[0]?(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+H,o.rounding=1,r=mn(o,mi(o,r)),o.precision=n,o.rounding=i,K(at==2||at==3?r.neg():r,n,i,!0)):new o(1):new o(NaN)};B.cubeRoot=B.cbrt=function(){var n,i,r,o,t,l,p,c,g,M,b=this,S=b.constructor;if(!b.isFinite()||b.isZero())return new S(b);for(V=!1,l=b.s*Fe(b.s*b,1/3),!l||Math.abs(l)==1/0?(r=$e(b.d),n=b.e,(l=(n-r.length+1)%3)&&(r+=l==1||l==-2?"0":"00"),l=Fe(r,1/3),n=ze((n+1)/3)-(n%3==(n<0?-1:2)),l==1/0?r="5e"+n:(r=l.toExponential(),r=r.slice(0,r.indexOf("e")+1)+n),o=new S(r),o.s=b.s):o=new S(l.toString()),p=(n=S.precision)+3;;)if(c=o,g=c.times(c).times(c),M=g.plus(b),o=ie(M.plus(b).times(c),M.plus(g),p+2,1),$e(c.d).slice(0,p)===(r=$e(o.d)).slice(0,p))if(r=r.slice(p-3,p+1),r=="9999"||!t&&r=="4999"){if(!t&&(K(c,n+1,0),c.times(c).times(c).eq(b))){o=c;break}p+=4,t=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(K(o,n+1,1),i=!o.times(o).times(o).eq(b));break}return V=!0,K(o,n,S.rounding,i)};B.decimalPlaces=B.dp=function(){var n,i=this.d,r=NaN;if(i){if(n=i.length-1,r=(n-ze(this.e/H))*H,n=i[n],n)for(;n%10==0;n/=10)r--;r<0&&(r=0)}return r};B.dividedBy=B.div=function(n){return ie(this,new this.constructor(n))};B.dividedToIntegerBy=B.divToInt=function(n){var i=this,r=i.constructor;return K(ie(i,new r(n),0,1,1),r.precision,r.rounding)};B.equals=B.eq=function(n){return this.cmp(n)===0};B.floor=function(){return K(new this.constructor(this),this.e+1,3)};B.greaterThan=B.gt=function(n){return this.cmp(n)>0};B.greaterThanOrEqualTo=B.gte=function(n){var i=this.cmp(n);return i==1||i===0};B.hyperbolicCosine=B.cosh=function(){var n,i,r,o,t,l=this,p=l.constructor,c=new p(1);if(!l.isFinite())return new p(l.s?1/0:NaN);if(l.isZero())return c;r=p.precision,o=p.rounding,p.precision=r+Math.max(l.e,l.sd())+4,p.rounding=1,t=l.d.length,t<32?(n=Math.ceil(t/3),i=(1/qt(4,n)).toString()):(n=16,i="2.3283064365386962890625e-10"),l=bt(p,1,l.times(i),new p(1),!0);for(var g,M=n,b=new p(8);M--;)g=l.times(l),l=c.minus(g.times(b.minus(g.times(b))));return K(l,p.precision=r,p.rounding=o,!0)};B.hyperbolicSine=B.sinh=function(){var n,i,r,o,t=this,l=t.constructor;if(!t.isFinite()||t.isZero())return new l(t);if(i=l.precision,r=l.rounding,l.precision=i+Math.max(t.e,t.sd())+4,l.rounding=1,o=t.d.length,o<3)t=bt(l,2,t,t,!0);else{n=1.4*Math.sqrt(o),n=n>16?16:n|0,t=t.times(1/qt(5,n)),t=bt(l,2,t,t,!0);for(var p,c=new l(5),g=new l(16),M=new l(20);n--;)p=t.times(t),t=t.times(c.plus(p.times(g.times(p).plus(M))))}return l.precision=i,l.rounding=r,K(t,i,r,!0)};B.hyperbolicTangent=B.tanh=function(){var n,i,r=this,o=r.constructor;return r.isFinite()?r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+7,o.rounding=1,ie(r.sinh(),r.cosh(),o.precision=n,o.rounding=i)):new o(r.s)};B.inverseCosine=B.acos=function(){var n=this,i=n.constructor,r=n.abs().cmp(1),o=i.precision,t=i.rounding;return r!==-1?r===0?n.isNeg()?it(i,o,t):new i(0):new i(NaN):n.isZero()?it(i,o+4,t).times(.5):(i.precision=o+6,i.rounding=1,n=new i(1).minus(n).div(n.plus(1)).sqrt().atan(),i.precision=o,i.rounding=t,n.times(2))};B.inverseHyperbolicCosine=B.acosh=function(){var n,i,r=this,o=r.constructor;return r.lte(1)?new o(r.eq(1)?0:NaN):r.isFinite()?(n=o.precision,i=o.rounding,o.precision=n+Math.max(Math.abs(r.e),r.sd())+4,o.rounding=1,V=!1,r=r.times(r).minus(1).sqrt().plus(r),V=!0,o.precision=n,o.rounding=i,r.ln()):new o(r)};B.inverseHyperbolicSine=B.asinh=function(){var n,i,r=this,o=r.constructor;return!r.isFinite()||r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+2*Math.max(Math.abs(r.e),r.sd())+6,o.rounding=1,V=!1,r=r.times(r).plus(1).sqrt().plus(r),V=!0,o.precision=n,o.rounding=i,r.ln())};B.inverseHyperbolicTangent=B.atanh=function(){var n,i,r,o,t=this,l=t.constructor;return t.isFinite()?t.e>=0?new l(t.abs().eq(1)?t.s/0:t.isZero()?t:NaN):(n=l.precision,i=l.rounding,o=t.sd(),Math.max(o,n)<2*-t.e-1?K(new l(t),n,i,!0):(l.precision=r=o-t.e,t=ie(t.plus(1),new l(1).minus(t),r+n,1),l.precision=n+4,l.rounding=1,t=t.ln(),l.precision=n,l.rounding=i,t.times(.5))):new l(NaN)};B.inverseSine=B.asin=function(){var n,i,r,o,t=this,l=t.constructor;return t.isZero()?new l(t):(i=t.abs().cmp(1),r=l.precision,o=l.rounding,i!==-1?i===0?(n=it(l,r+4,o).times(.5),n.s=t.s,n):new l(NaN):(l.precision=r+6,l.rounding=1,t=t.div(new l(1).minus(t.times(t)).sqrt().plus(1)).atan(),l.precision=r,l.rounding=o,t.times(2)))};B.inverseTangent=B.atan=function(){var n,i,r,o,t,l,p,c,g,M=this,b=M.constructor,S=b.precision,P=b.rounding;if(M.isFinite()){if(M.isZero())return new b(M);if(M.abs().eq(1)&&S+4<=kr)return p=it(b,S+4,P).times(.25),p.s=M.s,p}else{if(!M.s)return new b(NaN);if(S+4<=kr)return p=it(b,S+4,P).times(.5),p.s=M.s,p}for(b.precision=c=S+10,b.rounding=1,r=Math.min(28,c/H+2|0),n=r;n;--n)M=M.div(M.times(M).plus(1).sqrt().plus(1));for(V=!1,i=Math.ceil(c/H),o=1,g=M.times(M),p=new b(M),t=M;n!==-1;)if(t=t.times(g),l=p.minus(t.div(o+=2)),t=t.times(g),p=l.plus(t.div(o+=2)),p.d[i]!==void 0)for(n=i;p.d[n]===l.d[n]&&n--;);return r&&(p=p.times(2<<r-1)),V=!0,K(p,b.precision=S,b.rounding=P,!0)};B.isFinite=function(){return!!this.d};B.isInteger=B.isInt=function(){return!!this.d&&ze(this.e/H)>this.d.length-2};B.isNaN=function(){return!this.s};B.isNegative=B.isNeg=function(){return this.s<0};B.isPositive=B.isPos=function(){return this.s>0};B.isZero=function(){return!!this.d&&this.d[0]===0};B.lessThan=B.lt=function(n){return this.cmp(n)<0};B.lessThanOrEqualTo=B.lte=function(n){return this.cmp(n)<1};B.logarithm=B.log=function(n){var i,r,o,t,l,p,c,g,M=this,b=M.constructor,S=b.precision,P=b.rounding,T=5;if(n==null)n=new b(10),i=!0;else{if(n=new b(n),r=n.d,n.s<0||!r||!r[0]||n.eq(1))return new b(NaN);i=n.eq(10)}if(r=M.d,M.s<0||!r||!r[0]||M.eq(1))return new b(r&&!r[0]?-1/0:M.s!=1?NaN:r?0:1/0);if(i)if(r.length>1)l=!0;else{for(t=r[0];t%10===0;)t/=10;l=t!==1}if(V=!1,c=S+T,p=ct(M,c),o=i?Et(b,c+10):ct(n,c),g=ie(p,o,c,1),St(g.d,t=S,P))do if(c+=10,p=ct(M,c),o=i?Et(b,c+10):ct(n,c),g=ie(p,o,c,1),!l){+$e(g.d).slice(t+1,t+15)+1==1e14&&(g=K(g,S+1,0));break}while(St(g.d,t+=10,P));return V=!0,K(g,S,P)};B.minus=B.sub=function(n){var i,r,o,t,l,p,c,g,M,b,S,P,T=this,D=T.constructor;if(n=new D(n),!T.d||!n.d)return!T.s||!n.s?n=new D(NaN):T.d?n.s=-n.s:n=new D(n.d||T.s!==n.s?T:NaN),n;if(T.s!=n.s)return n.s=-n.s,T.plus(n);if(M=T.d,P=n.d,c=D.precision,g=D.rounding,!M[0]||!P[0]){if(P[0])n.s=-n.s;else if(M[0])n=new D(T);else return new D(g===3?-0:0);return V?K(n,c,g):n}if(r=ze(n.e/H),b=ze(T.e/H),M=M.slice(),l=b-r,l){for(S=l<0,S?(i=M,l=-l,p=P.length):(i=P,r=b,p=M.length),o=Math.max(Math.ceil(c/H),p)+2,l>o&&(l=o,i.length=1),i.reverse(),o=l;o--;)i.push(0);i.reverse()}else{for(o=M.length,p=P.length,S=o<p,S&&(p=o),o=0;o<p;o++)if(M[o]!=P[o]){S=M[o]<P[o];break}l=0}for(S&&(i=M,M=P,P=i,n.s=-n.s),p=M.length,o=P.length-p;o>0;--o)M[p++]=0;for(o=P.length;o>l;){if(M[--o]<P[o]){for(t=o;t&&M[--t]===0;)M[t]=tt-1;--M[t],M[o]+=tt}M[o]-=P[o]}for(;M[--p]===0;)M.pop();for(;M[0]===0;M.shift())--r;return M[0]?(n.d=M,n.e=Ut(M,r),V?K(n,c,g):n):new D(g===3?-0:0)};B.modulo=B.mod=function(n){var i,r=this,o=r.constructor;return n=new o(n),!r.d||!n.s||n.d&&!n.d[0]?new o(NaN):!n.d||r.d&&!r.d[0]?K(new o(r),o.precision,o.rounding):(V=!1,o.modulo==9?(i=ie(r,n.abs(),0,3,1),i.s*=n.s):i=ie(r,n,0,o.modulo,1),i=i.times(n),V=!0,r.minus(i))};B.naturalExponential=B.exp=function(){return Ar(this)};B.naturalLogarithm=B.ln=function(){return ct(this)};B.negated=B.neg=function(){var n=new this.constructor(this);return n.s=-n.s,K(n)};B.plus=B.add=function(n){var i,r,o,t,l,p,c,g,M,b,S=this,P=S.constructor;if(n=new P(n),!S.d||!n.d)return!S.s||!n.s?n=new P(NaN):S.d||(n=new P(n.d||S.s===n.s?S:NaN)),n;if(S.s!=n.s)return n.s=-n.s,S.minus(n);if(M=S.d,b=n.d,c=P.precision,g=P.rounding,!M[0]||!b[0])return b[0]||(n=new P(S)),V?K(n,c,g):n;if(l=ze(S.e/H),o=ze(n.e/H),M=M.slice(),t=l-o,t){for(t<0?(r=M,t=-t,p=b.length):(r=b,o=l,p=M.length),l=Math.ceil(c/H),p=l>p?l+1:p+1,t>p&&(t=p,r.length=1),r.reverse();t--;)r.push(0);r.reverse()}for(p=M.length,t=b.length,p-t<0&&(t=p,r=b,b=M,M=r),i=0;t;)i=(M[--t]=M[t]+b[t]+i)/tt|0,M[t]%=tt;for(i&&(M.unshift(i),++o),p=M.length;M[--p]==0;)M.pop();return n.d=M,n.e=Ut(M,o),V?K(n,c,g):n};B.precision=B.sd=function(n){var i,r=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(dt+n);return r.d?(i=di(r.d),n&&r.e+1>i&&(i=r.e+1)):i=NaN,i};B.round=function(){var n=this,i=n.constructor;return K(new i(n),n.e+1,i.rounding)};B.sine=B.sin=function(){var n,i,r=this,o=r.constructor;return r.isFinite()?r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+H,o.rounding=1,r=wn(o,mi(o,r)),o.precision=n,o.rounding=i,K(at>2?r.neg():r,n,i,!0)):new o(NaN)};B.squareRoot=B.sqrt=function(){var n,i,r,o,t,l,p=this,c=p.d,g=p.e,M=p.s,b=p.constructor;if(M!==1||!c||!c[0])return new b(!M||M<0&&(!c||c[0])?NaN:c?p:1/0);for(V=!1,M=Math.sqrt(+p),M==0||M==1/0?(i=$e(c),(i.length+g)%2==0&&(i+="0"),M=Math.sqrt(i),g=ze((g+1)/2)-(g<0||g%2),M==1/0?i="5e"+g:(i=M.toExponential(),i=i.slice(0,i.indexOf("e")+1)+g),o=new b(i)):o=new b(M.toString()),r=(g=b.precision)+3;;)if(l=o,o=l.plus(ie(p,l,r+2,1)).times(.5),$e(l.d).slice(0,r)===(i=$e(o.d)).slice(0,r))if(i=i.slice(r-3,r+1),i=="9999"||!t&&i=="4999"){if(!t&&(K(l,g+1,0),l.times(l).eq(p))){o=l;break}r+=4,t=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(K(o,g+1,1),n=!o.times(o).eq(p));break}return V=!0,K(o,g,b.rounding,n)};B.tangent=B.tan=function(){var n,i,r=this,o=r.constructor;return r.isFinite()?r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+10,o.rounding=1,r=r.sin(),r.s=1,r=ie(r,new o(1).minus(r.times(r)).sqrt(),n+10,0),o.precision=n,o.rounding=i,K(at==2||at==4?r.neg():r,n,i,!0)):new o(NaN)};B.times=B.mul=function(n){var i,r,o,t,l,p,c,g,M,b=this,S=b.constructor,P=b.d,T=(n=new S(n)).d;if(n.s*=b.s,!P||!P[0]||!T||!T[0])return new S(!n.s||P&&!P[0]&&!T||T&&!T[0]&&!P?NaN:!P||!T?n.s/0:n.s*0);for(r=ze(b.e/H)+ze(n.e/H),g=P.length,M=T.length,g<M&&(l=P,P=T,T=l,p=g,g=M,M=p),l=[],p=g+M,o=p;o--;)l.push(0);for(o=M;--o>=0;){for(i=0,t=g+o;t>o;)c=l[t]+T[o]*P[t-o-1]+i,l[t--]=c%tt|0,i=c/tt|0;l[t]=(l[t]+i)%tt|0}for(;!l[--p];)l.pop();return i?++r:l.shift(),n.d=l,n.e=Ut(l,r),V?K(n,S.precision,S.rounding):n};B.toBinary=function(n,i){return Sr(this,2,n,i)};B.toDecimalPlaces=B.toDP=function(n,i){var r=this,o=r.constructor;return r=new o(r),n===void 0?r:(He(n,0,ht),i===void 0?i=o.rounding:He(i,0,8),K(r,n+r.e+1,i))};B.toExponential=function(n,i){var r,o=this,t=o.constructor;return n===void 0?r=nt(o,!0):(He(n,0,ht),i===void 0?i=t.rounding:He(i,0,8),o=K(new t(o),n+1,i),r=nt(o,!0,n+1)),o.isNeg()&&!o.isZero()?"-"+r:r};B.toFixed=function(n,i){var r,o,t=this,l=t.constructor;return n===void 0?r=nt(t):(He(n,0,ht),i===void 0?i=l.rounding:He(i,0,8),o=K(new l(t),n+t.e+1,i),r=nt(o,!1,n+o.e+1)),t.isNeg()&&!t.isZero()?"-"+r:r};B.toFraction=function(n){var i,r,o,t,l,p,c,g,M,b,S,P,T=this,D=T.d,O=T.constructor;if(!D)return new O(T);if(M=r=new O(1),o=g=new O(0),i=new O(o),l=i.e=di(D)-T.e-1,p=l%H,i.d[0]=Fe(10,p<0?H+p:p),n==null)n=l>0?i:M;else{if(c=new O(n),!c.isInt()||c.lt(M))throw Error(dt+c);n=c.gt(i)?l>0?i:M:c}for(V=!1,c=new O($e(D)),b=O.precision,O.precision=l=D.length*H*2;S=ie(c,i,0,1,1),t=r.plus(S.times(o)),t.cmp(n)!=1;)r=o,o=t,t=M,M=g.plus(S.times(t)),g=t,t=i,i=c.minus(S.times(t)),c=t;return t=ie(n.minus(r),o,0,1,1),g=g.plus(t.times(M)),r=r.plus(t.times(o)),g.s=M.s=T.s,P=ie(M,o,l,1).minus(T).abs().cmp(ie(g,r,l,1).minus(T).abs())<1?[M,o]:[g,r],O.precision=b,V=!0,P};B.toHexadecimal=B.toHex=function(n,i){return Sr(this,16,n,i)};B.toNearest=function(n,i){var r=this,o=r.constructor;if(r=new o(r),n==null){if(!r.d)return r;n=new o(1),i=o.rounding}else{if(n=new o(n),i===void 0?i=o.rounding:He(i,0,8),!r.d)return n.s?r:n;if(!n.d)return n.s&&(n.s=r.s),n}return n.d[0]?(V=!1,r=ie(r,n,0,i,1).times(n),V=!0,K(r)):(n.s=r.s,r=n),r};B.toNumber=function(){return+this};B.toOctal=function(n,i){return Sr(this,8,n,i)};B.toPower=B.pow=function(n){var i,r,o,t,l,p,c=this,g=c.constructor,M=+(n=new g(n));if(!c.d||!n.d||!c.d[0]||!n.d[0])return new g(Fe(+c,M));if(c=new g(c),c.eq(1))return c;if(o=g.precision,l=g.rounding,n.eq(1))return K(c,o,l);if(i=ze(n.e/H),i>=n.d.length-1&&(r=M<0?-M:M)<=pn)return t=hi(g,c,r,o),n.s<0?new g(1).div(t):K(t,o,l);if(p=c.s,p<0){if(i<n.d.length-1)return new g(NaN);if((n.d[i]&1)==0&&(p=1),c.e==0&&c.d[0]==1&&c.d.length==1)return c.s=p,c}return r=Fe(+c,M),i=r==0||!isFinite(r)?ze(M*(Math.log("0."+$e(c.d))/Math.LN10+c.e+1)):new g(r+"").e,i>g.maxE+1||i<g.minE-1?new g(i>0?p/0:0):(V=!1,g.rounding=c.s=1,r=Math.min(12,(i+"").length),t=Ar(n.times(ct(c,o+r)),o),t.d&&(t=K(t,o+5,1),St(t.d,o,l)&&(i=o+10,t=K(Ar(n.times(ct(c,i+r)),i),i+5,1),+$e(t.d).slice(o+1,o+15)+1==1e14&&(t=K(t,o+1,0)))),t.s=p,V=!0,g.rounding=l,K(t,o,l))};B.toPrecision=function(n,i){var r,o=this,t=o.constructor;return n===void 0?r=nt(o,o.e<=t.toExpNeg||o.e>=t.toExpPos):(He(n,1,ht),i===void 0?i=t.rounding:He(i,0,8),o=K(new t(o),n,i),r=nt(o,n<=o.e||o.e<=t.toExpNeg,n)),o.isNeg()&&!o.isZero()?"-"+r:r};B.toSignificantDigits=B.toSD=function(n,i){var r=this,o=r.constructor;return n===void 0?(n=o.precision,i=o.rounding):(He(n,1,ht),i===void 0?i=o.rounding:He(i,0,8)),K(new o(r),n,i)};B.toString=function(){var n=this,i=n.constructor,r=nt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos);return n.isNeg()&&!n.isZero()?"-"+r:r};B.truncated=B.trunc=function(){return K(new this.constructor(this),this.e+1,1)};B.valueOf=B.toJSON=function(){var n=this,i=n.constructor,r=nt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos);return n.isNeg()?"-"+r:r};function $e(n){var i,r,o,t=n.length-1,l="",p=n[0];if(t>0){for(l+=p,i=1;i<t;i++)o=n[i]+"",r=H-o.length,r&&(l+=ft(r)),l+=o;p=n[i],o=p+"",r=H-o.length,r&&(l+=ft(r))}else if(p===0)return"0";for(;p%10===0;)p/=10;return l+p}function He(n,i,r){if(n!==~~n||n<i||n>r)throw Error(dt+n)}function St(n,i,r,o){var t,l,p,c;for(l=n[0];l>=10;l/=10)--i;return--i<0?(i+=H,t=0):(t=Math.ceil((i+1)/H),i%=H),l=Fe(10,H-i),c=n[t]%l|0,o==null?i<3?(i==0?c=c/100|0:i==1&&(c=c/10|0),p=r<4&&c==99999||r>3&&c==49999||c==5e4||c==0):p=(r<4&&c+1==l||r>3&&c+1==l/2)&&(n[t+1]/l/100|0)==Fe(10,i-2)-1||(c==l/2||c==0)&&(n[t+1]/l/100|0)==0:i<4?(i==0?c=c/1e3|0:i==1?c=c/100|0:i==2&&(c=c/10|0),p=(o||r<4)&&c==9999||!o&&r>3&&c==4999):p=((o||r<4)&&c+1==l||!o&&r>3&&c+1==l/2)&&(n[t+1]/l/1e3|0)==Fe(10,i-3)-1,p}function It(n,i,r){for(var o,t=[0],l,p=0,c=n.length;p<c;){for(l=t.length;l--;)t[l]*=i;for(t[0]+=yr.indexOf(n.charAt(p++)),o=0;o<t.length;o++)t[o]>r-1&&(t[o+1]===void 0&&(t[o+1]=0),t[o+1]+=t[o]/r|0,t[o]%=r)}return t.reverse()}function mn(n,i){var r,o,t;if(i.isZero())return i;o=i.d.length,o<32?(r=Math.ceil(o/3),t=(1/qt(4,r)).toString()):(r=16,t="2.3283064365386962890625e-10"),n.precision+=r,i=bt(n,1,i.times(t),new n(1));for(var l=r;l--;){var p=i.times(i);i=p.times(p).minus(p).times(8).plus(1)}return n.precision-=r,i}var ie=(function(){function n(o,t,l){var p,c=0,g=o.length;for(o=o.slice();g--;)p=o[g]*t+c,o[g]=p%l|0,c=p/l|0;return c&&o.unshift(c),o}function i(o,t,l,p){var c,g;if(l!=p)g=l>p?1:-1;else for(c=g=0;c<l;c++)if(o[c]!=t[c]){g=o[c]>t[c]?1:-1;break}return g}function r(o,t,l,p){for(var c=0;l--;)o[l]-=c,c=o[l]<t[l]?1:0,o[l]=c*p+o[l]-t[l];for(;!o[0]&&o.length>1;)o.shift()}return function(o,t,l,p,c,g){var M,b,S,P,T,D,O,N,I,x,q,j,z,$,Z,m,y,A,C,L,h=o.constructor,e=o.s==t.s?1:-1,s=o.d,u=t.d;if(!s||!s[0]||!u||!u[0])return new h(!o.s||!t.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?e*0:e/0);for(g?(T=1,b=o.e-t.e):(g=tt,T=H,b=ze(o.e/T)-ze(t.e/T)),C=u.length,y=s.length,I=new h(e),x=I.d=[],S=0;u[S]==(s[S]||0);S++);if(u[S]>(s[S]||0)&&b--,l==null?($=l=h.precision,p=h.rounding):c?$=l+(o.e-t.e)+1:$=l,$<0)x.push(1),D=!0;else{if($=$/T+2|0,S=0,C==1){for(P=0,u=u[0],$++;(S<y||P)&&$--;S++)Z=P*g+(s[S]||0),x[S]=Z/u|0,P=Z%u|0;D=P||S<y}else{for(P=g/(u[0]+1)|0,P>1&&(u=n(u,P,g),s=n(s,P,g),C=u.length,y=s.length),m=C,q=s.slice(0,C),j=q.length;j<C;)q[j++]=0;L=u.slice(),L.unshift(0),A=u[0],u[1]>=g/2&&++A;do P=0,M=i(u,q,C,j),M<0?(z=q[0],C!=j&&(z=z*g+(q[1]||0)),P=z/A|0,P>1?(P>=g&&(P=g-1),O=n(u,P,g),N=O.length,j=q.length,M=i(O,q,N,j),M==1&&(P--,r(O,C<N?L:u,N,g))):(P==0&&(M=P=1),O=u.slice()),N=O.length,N<j&&O.unshift(0),r(q,O,j,g),M==-1&&(j=q.length,M=i(u,q,C,j),M<1&&(P++,r(q,C<j?L:u,j,g))),j=q.length):M===0&&(P++,q=[0]),x[S++]=P,M&&q[0]?q[j++]=s[m]||0:(q=[s[m]],j=1);while((m++<y||q[0]!==void 0)&&$--);D=q[0]!==void 0}x[0]||x.shift()}if(T==1)I.e=b,ai=D;else{for(S=1,P=x[0];P>=10;P/=10)S++;I.e=S+b*T-1,K(I,c?l+I.e+1:l,p,D)}return I}})();function K(n,i,r,o){var t,l,p,c,g,M,b,S,P,T=n.constructor;e:if(i!=null){if(S=n.d,!S)return n;for(t=1,c=S[0];c>=10;c/=10)t++;if(l=i-t,l<0)l+=H,p=i,b=S[P=0],g=b/Fe(10,t-p-1)%10|0;else if(P=Math.ceil((l+1)/H),c=S.length,P>=c)if(o){for(;c++<=P;)S.push(0);b=g=0,t=1,l%=H,p=l-H+1}else break e;else{for(b=c=S[P],t=1;c>=10;c/=10)t++;l%=H,p=l-H+t,g=p<0?0:b/Fe(10,t-p-1)%10|0}if(o=o||i<0||S[P+1]!==void 0||(p<0?b:b%Fe(10,t-p-1)),M=r<4?(g||o)&&(r==0||r==(n.s<0?3:2)):g>5||g==5&&(r==4||o||r==6&&(l>0?p>0?b/Fe(10,t-p):0:S[P-1])%10&1||r==(n.s<0?8:7)),i<1||!S[0])return S.length=0,M?(i-=n.e+1,S[0]=Fe(10,(H-i%H)%H),n.e=-i||0):S[0]=n.e=0,n;if(l==0?(S.length=P,c=1,P--):(S.length=P+1,c=Fe(10,H-l),S[P]=p>0?(b/Fe(10,t-p)%Fe(10,p)|0)*c:0),M)for(;;)if(P==0){for(l=1,p=S[0];p>=10;p/=10)l++;for(p=S[0]+=c,c=1;p>=10;p/=10)c++;l!=c&&(n.e++,S[0]==tt&&(S[0]=1));break}else{if(S[P]+=c,S[P]!=tt)break;S[P--]=0,c=1}for(l=S.length;S[--l]===0;)S.pop()}return V&&(n.e>T.maxE?(n.d=null,n.e=NaN):n.e<T.minE&&(n.e=0,n.d=[0])),n}function nt(n,i,r){if(!n.isFinite())return gi(n);var o,t=n.e,l=$e(n.d),p=l.length;return i?(r&&(o=r-p)>0?l=l.charAt(0)+"."+l.slice(1)+ft(o):p>1&&(l=l.charAt(0)+"."+l.slice(1)),l=l+(n.e<0?"e":"e+")+n.e):t<0?(l="0."+ft(-t-1)+l,r&&(o=r-p)>0&&(l+=ft(o))):t>=p?(l+=ft(t+1-p),r&&(o=r-t-1)>0&&(l=l+"."+ft(o))):((o=t+1)<p&&(l=l.slice(0,o)+"."+l.slice(o)),r&&(o=r-p)>0&&(t+1===p&&(l+="."),l+=ft(o))),l}function Ut(n,i){var r=n[0];for(i*=H;r>=10;r/=10)i++;return i}function Et(n,i,r){if(i>gn)throw V=!0,r&&(n.precision=r),Error(li);return K(new n(Bt),i,1,!0)}function it(n,i,r){if(i>kr)throw Error(li);return K(new n(Nt),i,r,!0)}function di(n){var i=n.length-1,r=i*H+1;if(i=n[i],i){for(;i%10==0;i/=10)r--;for(i=n[0];i>=10;i/=10)r++}return r}function ft(n){for(var i="";n--;)i+="0";return i}function hi(n,i,r,o){var t,l=new n(1),p=Math.ceil(o/H+4);for(V=!1;;){if(r%2&&(l=l.times(i),oi(l.d,p)&&(t=!0)),r=ze(r/2),r===0){r=l.d.length-1,t&&l.d[r]===0&&++l.d[r];break}i=i.times(i),oi(i.d,p)}return V=!0,l}function ni(n){return n.d[n.d.length-1]&1}function pi(n,i,r){for(var o,t,l=new n(i[0]),p=0;++p<i.length;){if(t=new n(i[p]),!t.s){l=t;break}o=l.cmp(t),(o===r||o===0&&l.s===r)&&(l=t)}return l}function Ar(n,i){var r,o,t,l,p,c,g,M=0,b=0,S=0,P=n.constructor,T=P.rounding,D=P.precision;if(!n.d||!n.d[0]||n.e>17)return new P(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(i==null?(V=!1,g=D):g=i,c=new P(.03125);n.e>-2;)n=n.times(c),S+=5;for(o=Math.log(Fe(2,S))/Math.LN10*2+5|0,g+=o,r=l=p=new P(1),P.precision=g;;){if(l=K(l.times(n),g,1),r=r.times(++b),c=p.plus(ie(l,r,g,1)),$e(c.d).slice(0,g)===$e(p.d).slice(0,g)){for(t=S;t--;)p=K(p.times(p),g,1);if(i==null)if(M<3&&St(p.d,g-o,T,M))P.precision=g+=10,r=l=c=new P(1),b=0,M++;else return K(p,P.precision=D,T,V=!0);else return P.precision=D,p}p=c}}function ct(n,i){var r,o,t,l,p,c,g,M,b,S,P,T=1,D=10,O=n,N=O.d,I=O.constructor,x=I.rounding,q=I.precision;if(O.s<0||!N||!N[0]||!O.e&&N[0]==1&&N.length==1)return new I(N&&!N[0]?-1/0:O.s!=1?NaN:N?0:O);if(i==null?(V=!1,b=q):b=i,I.precision=b+=D,r=$e(N),o=r.charAt(0),Math.abs(l=O.e)<15e14){for(;o<7&&o!=1||o==1&&r.charAt(1)>3;)O=O.times(n),r=$e(O.d),o=r.charAt(0),T++;l=O.e,o>1?(O=new I("0."+r),l++):O=new I(o+"."+r.slice(1))}else return M=Et(I,b+2,q).times(l+""),O=ct(new I(o+"."+r.slice(1)),b-D).plus(M),I.precision=q,i==null?K(O,q,x,V=!0):O;for(S=O,g=p=O=ie(O.minus(1),O.plus(1),b,1),P=K(O.times(O),b,1),t=3;;){if(p=K(p.times(P),b,1),M=g.plus(ie(p,new I(t),b,1)),$e(M.d).slice(0,b)===$e(g.d).slice(0,b))if(g=g.times(2),l!==0&&(g=g.plus(Et(I,b+2,q).times(l+""))),g=ie(g,new I(T),b,1),i==null)if(St(g.d,b-D,x,c))I.precision=b+=D,M=p=O=ie(S.minus(1),S.plus(1),b,1),P=K(O.times(O),b,1),t=c=1;else return K(g,I.precision=q,x,V=!0);else return I.precision=q,g;g=M,t+=2}}function gi(n){return String(n.s*n.s/0)}function Rt(n,i){var r,o,t;for((r=i.indexOf("."))>-1&&(i=i.replace(".","")),(o=i.search(/e/i))>0?(r<0&&(r=o),r+=+i.slice(o+1),i=i.substring(0,o)):r<0&&(r=i.length),o=0;i.charCodeAt(o)===48;o++);for(t=i.length;i.charCodeAt(t-1)===48;--t);if(i=i.slice(o,t),i){if(t-=o,n.e=r=r-o-1,n.d=[],o=(r+1)%H,r<0&&(o+=H),o<t){for(o&&n.d.push(+i.slice(0,o)),t-=H;o<t;)n.d.push(+i.slice(o,o+=H));i=i.slice(o),o=H-i.length}else o-=t;for(;o--;)i+="0";n.d.push(+i),V&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function vn(n,i){var r,o,t,l,p,c,g,M,b;if(i.indexOf("_")>-1){if(i=i.replace(/(\d)_(?=\d)/g,"$1"),ci.test(i))return Rt(n,i)}else if(i==="Infinity"||i==="NaN")return+i||(n.s=NaN),n.e=NaN,n.d=null,n;if(dn.test(i))r=16,i=i.toLowerCase();else if(cn.test(i))r=2;else if(hn.test(i))r=8;else throw Error(dt+i);for(l=i.search(/p/i),l>0?(g=+i.slice(l+1),i=i.substring(2,l)):i=i.slice(2),l=i.indexOf("."),p=l>=0,o=n.constructor,p&&(i=i.replace(".",""),c=i.length,l=c-l,t=hi(o,new o(r),l,l*2)),M=It(i,r,tt),b=M.length-1,l=b;M[l]===0;--l)M.pop();return l<0?new o(n.s*0):(n.e=Ut(M,b),n.d=M,V=!1,p&&(n=ie(n,t,c*4)),g&&(n=n.times(Math.abs(g)<54?Fe(2,g):Pt.pow(2,g))),V=!0,n)}function wn(n,i){var r,o=i.d.length;if(o<3)return i.isZero()?i:bt(n,2,i,i);r=1.4*Math.sqrt(o),r=r>16?16:r|0,i=i.times(1/qt(5,r)),i=bt(n,2,i,i);for(var t,l=new n(5),p=new n(16),c=new n(20);r--;)t=i.times(i),i=i.times(l.plus(t.times(p.times(t).minus(c))));return i}function bt(n,i,r,o,t){var l,p,c,g,M=1,b=n.precision,S=Math.ceil(b/H);for(V=!1,g=r.times(r),c=new n(o);;){if(p=ie(c.times(g),new n(i++*i++),b,1),c=t?o.plus(p):o.minus(p),o=ie(p.times(g),new n(i++*i++),b,1),p=c.plus(o),p.d[S]!==void 0){for(l=S;p.d[l]===c.d[l]&&l--;);if(l==-1)break}l=c,c=o,o=p,p=l,M++}return V=!0,p.d.length=S+1,p}function qt(n,i){for(var r=n;--i;)r*=n;return r}function mi(n,i){var r,o=i.s<0,t=it(n,n.precision,1),l=t.times(.5);if(i=i.abs(),i.lte(l))return at=o?4:1,i;if(r=i.divToInt(t),r.isZero())at=o?3:2;else{if(i=i.minus(r.times(t)),i.lte(l))return at=ni(r)?o?2:3:o?4:1,i;at=ni(r)?o?1:4:o?3:2}return i.minus(t).abs()}function Sr(n,i,r,o){var t,l,p,c,g,M,b,S,P,T=n.constructor,D=r!==void 0;if(D?(He(r,1,ht),o===void 0?o=T.rounding:He(o,0,8)):(r=T.precision,o=T.rounding),!n.isFinite())b=gi(n);else{for(b=nt(n),p=b.indexOf("."),D?(t=2,i==16?r=r*4-3:i==8&&(r=r*3-2)):t=i,p>=0&&(b=b.replace(".",""),P=new T(1),P.e=b.length-p,P.d=It(nt(P),10,t),P.e=P.d.length),S=It(b,10,t),l=g=S.length;S[--g]==0;)S.pop();if(!S[0])b=D?"0p+0":"0";else{if(p<0?l--:(n=new T(n),n.d=S,n.e=l,n=ie(n,P,r,o,0,t),S=n.d,l=n.e,M=ai),p=S[r],c=t/2,M=M||S[r+1]!==void 0,M=o<4?(p!==void 0||M)&&(o===0||o===(n.s<0?3:2)):p>c||p===c&&(o===4||M||o===6&&S[r-1]&1||o===(n.s<0?8:7)),S.length=r,M)for(;++S[--r]>t-1;)S[r]=0,r||(++l,S.unshift(1));for(g=S.length;!S[g-1];--g);for(p=0,b="";p<g;p++)b+=yr.charAt(S[p]);if(D){if(g>1)if(i==16||i==8){for(p=i==16?4:3,--g;g%p;g++)b+="0";for(S=It(b,t,i),g=S.length;!S[g-1];--g);for(p=1,b="1.";p<g;p++)b+=yr.charAt(S[p])}else b=b.charAt(0)+"."+b.slice(1);b=b+(l<0?"p":"p+")+l}else if(l<0){for(;++l;)b="0"+b;b="0."+b}else if(++l>g)for(l-=g;l--;)b+="0";else l<g&&(b=b.slice(0,l)+"."+b.slice(l))}b=(i==16?"0x":i==2?"0b":i==8?"0o":"")+b}return n.s<0?"-"+b:b}function oi(n,i){if(n.length>i)return n.length=i,!0}function Mn(n){return new this(n).abs()}function bn(n){return new this(n).acos()}function yn(n){return new this(n).acosh()}function _n(n,i){return new this(n).plus(i)}function kn(n){return new this(n).asin()}function An(n){return new this(n).asinh()}function Sn(n){return new this(n).atan()}function Pn(n){return new this(n).atanh()}function Cn(n,i){n=new this(n),i=new this(i);var r,o=this.precision,t=this.rounding,l=o+4;return!n.s||!i.s?r=new this(NaN):!n.d&&!i.d?(r=it(this,l,1).times(i.s>0?.25:.75),r.s=n.s):!i.d||n.isZero()?(r=i.s<0?it(this,o,t):new this(0),r.s=n.s):!n.d||i.isZero()?(r=it(this,l,1).times(.5),r.s=n.s):i.s<0?(this.precision=l,this.rounding=1,r=this.atan(ie(n,i,l,1)),i=it(this,l,1),this.precision=o,this.rounding=t,r=n.s<0?r.minus(i):r.plus(i)):r=this.atan(ie(n,i,l,1)),r}function Ln(n){return new this(n).cbrt()}function Tn(n){return K(n=new this(n),n.e+1,2)}function xn(n,i,r){return new this(n).clamp(i,r)}function Dn(n){if(!n||typeof n!="object")throw Error(Ft+"Object expected");var i,r,o,t=n.defaults===!0,l=["precision",1,ht,"rounding",0,8,"toExpNeg",-Mt,0,"toExpPos",0,Mt,"maxE",0,Mt,"minE",-Mt,0,"modulo",0,9];for(i=0;i<l.length;i+=3)if(r=l[i],t&&(this[r]=_r[r]),(o=n[r])!==void 0)if(ze(o)===o&&o>=l[i+1]&&o<=l[i+2])this[r]=o;else throw Error(dt+r+": "+o);if(r="crypto",t&&(this[r]=_r[r]),(o=n[r])!==void 0)if(o===!0||o===!1||o===0||o===1)if(o)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(ui);else this[r]=!1;else throw Error(dt+r+": "+o);return this}function On(n){return new this(n).cos()}function In(n){return new this(n).cosh()}function vi(n){var i,r,o;function t(l){var p,c,g,M=this;if(!(M instanceof t))return new t(l);if(M.constructor=t,si(l)){M.s=l.s,V?!l.d||l.e>t.maxE?(M.e=NaN,M.d=null):l.e<t.minE?(M.e=0,M.d=[0]):(M.e=l.e,M.d=l.d.slice()):(M.e=l.e,M.d=l.d?l.d.slice():l.d);return}if(g=typeof l,g==="number"){if(l===0){M.s=1/l<0?-1:1,M.e=0,M.d=[0];return}if(l<0?(l=-l,M.s=-1):M.s=1,l===~~l&&l<1e7){for(p=0,c=l;c>=10;c/=10)p++;V?p>t.maxE?(M.e=NaN,M.d=null):p<t.minE?(M.e=0,M.d=[0]):(M.e=p,M.d=[l]):(M.e=p,M.d=[l]);return}if(l*0!==0){l||(M.s=NaN),M.e=NaN,M.d=null;return}return Rt(M,l.toString())}if(g==="string")return(c=l.charCodeAt(0))===45?(l=l.slice(1),M.s=-1):(c===43&&(l=l.slice(1)),M.s=1),ci.test(l)?Rt(M,l):vn(M,l);if(g==="bigint")return l<0?(l=-l,M.s=-1):M.s=1,Rt(M,l.toString());throw Error(dt+l)}if(t.prototype=B,t.ROUND_UP=0,t.ROUND_DOWN=1,t.ROUND_CEIL=2,t.ROUND_FLOOR=3,t.ROUND_HALF_UP=4,t.ROUND_HALF_DOWN=5,t.ROUND_HALF_EVEN=6,t.ROUND_HALF_CEIL=7,t.ROUND_HALF_FLOOR=8,t.EUCLID=9,t.config=t.set=Dn,t.clone=vi,t.isDecimal=si,t.abs=Mn,t.acos=bn,t.acosh=yn,t.add=_n,t.asin=kn,t.asinh=An,t.atan=Sn,t.atanh=Pn,t.atan2=Cn,t.cbrt=Ln,t.ceil=Tn,t.clamp=xn,t.cos=On,t.cosh=In,t.div=Rn,t.exp=Bn,t.floor=Nn,t.hypot=En,t.ln=Fn,t.log=Un,t.log10=jn,t.log2=qn,t.max=$n,t.min=Zn,t.mod=Wn,t.mul=zn,t.pow=Kn,t.random=Gn,t.round=Hn,t.sign=Vn,t.sin=Qn,t.sinh=Xn,t.sqrt=Jn,t.sub=Yn,t.sum=eo,t.tan=to,t.tanh=ro,t.trunc=io,n===void 0&&(n={}),n&&n.defaults!==!0)for(o=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],i=0;i<o.length;)n.hasOwnProperty(r=o[i++])||(n[r]=this[r]);return t.config(n),t}function Rn(n,i){return new this(n).div(i)}function Bn(n){return new this(n).exp()}function Nn(n){return K(n=new this(n),n.e+1,3)}function En(){var n,i,r=new this(0);for(V=!1,n=0;n<arguments.length;)if(i=new this(arguments[n++]),i.d)r.d&&(r=r.plus(i.times(i)));else{if(i.s)return V=!0,new this(1/0);r=i}return V=!0,r.sqrt()}function si(n){return n instanceof Pt||n&&n.toStringTag===fi||!1}function Fn(n){return new this(n).ln()}function Un(n,i){return new this(n).log(i)}function qn(n){return new this(n).log(2)}function jn(n){return new this(n).log(10)}function $n(){return pi(this,arguments,-1)}function Zn(){return pi(this,arguments,1)}function Wn(n,i){return new this(n).mod(i)}function zn(n,i){return new this(n).mul(i)}function Kn(n,i){return new this(n).pow(i)}function Gn(n){var i,r,o,t,l=0,p=new this(1),c=[];if(n===void 0?n=this.precision:He(n,1,ht),o=Math.ceil(n/H),this.crypto)if(crypto.getRandomValues)for(i=crypto.getRandomValues(new Uint32Array(o));l<o;)t=i[l],t>=429e7?i[l]=crypto.getRandomValues(new Uint32Array(1))[0]:c[l++]=t%1e7;else if(crypto.randomBytes){for(i=crypto.randomBytes(o*=4);l<o;)t=i[l]+(i[l+1]<<8)+(i[l+2]<<16)+((i[l+3]&127)<<24),t>=214e7?crypto.randomBytes(4).copy(i,l):(c.push(t%1e7),l+=4);l=o/4}else throw Error(ui);else for(;l<o;)c[l++]=Math.random()*1e7|0;for(o=c[--l],n%=H,o&&n&&(t=Fe(10,H-n),c[l]=(o/t|0)*t);c[l]===0;l--)c.pop();if(l<0)r=0,c=[0];else{for(r=-1;c[0]===0;r-=H)c.shift();for(o=1,t=c[0];t>=10;t/=10)o++;o<H&&(r-=H-o)}return p.e=r,p.d=c,p}function Hn(n){return K(n=new this(n),n.e+1,this.rounding)}function Vn(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Qn(n){return new this(n).sin()}function Xn(n){return new this(n).sinh()}function Jn(n){return new this(n).sqrt()}function Yn(n,i){return new this(n).sub(i)}function eo(){var n=0,i=arguments,r=new this(i[n]);for(V=!1;r.s&&++n<i.length;)r=r.plus(i[n]);return V=!0,K(r,this.precision,this.rounding)}function to(n){return new this(n).tan()}function ro(n){return new this(n).tanh()}function io(n){return K(n=new this(n),n.e+1,1)}B[Symbol.for("nodejs.util.inspect.custom")]=B.toString;B[Symbol.toStringTag]="Decimal";var Pt=B.constructor=vi(_r);Bt=new Pt(Bt);Nt=new Pt(Nt);var Ue=Pt;var Dr=qi(Mi());import{Transaction as rt}from"@mysten/sui/transactions";import{addHexPrefix as bi,d as ot,getObjectFields as Ai}from"@cetusprotocol/common-sdk";import{parseObligation as no}from"@suilend/sdk/parsers/obligation";import{getNetAprPercent as oo,getTotalAprPercent as yi,Side as _i,getFilteredRewards as ki}from"@suilend/sdk";var Cr=n=>{let i=Ai(n),{openPermissionsPause:r,closePermissionsPause:o,depositPermissionsPause:t,withdrawPermissionsPause:l,borrowPermissionsPause:p,repayPermissionsPause:c}=xr(i.permissions.toString(2));return{marketId:i.id.id,baseToken:bi(i.base_token.fields.name),quoteToken:bi(i.quote_token.fields.name),maxLongLeverage:ot(i.max_long_leverage).div(10**6).toString(),maxShortLeverage:ot(i.max_short_leverage).div(10**6).toString(),openFeeRate:ot(i.open_fee_rate).div(10**6).toString(),closeFeeRate:ot(i.close_fee_rate).div(10**6).toString(),openPermissionsPause:r,closePermissionsPause:o,depositPermissionsPause:t,withdrawPermissionsPause:l,borrowPermissionsPause:p,repayPermissionsPause:c}},Lr=(n,i)=>{let r=Ai(n);return{createdAt:r.created_ts,positionId:r.id.id,initDepositAmount:r.init_deposit_amount,isLong:r.is_long,lendingMarketId:r.lending_market_id,obligationOwnerCap:r.obligation_owner_cap.fields.obligation_id,marketId:r.market_id,positionCapId:i}},Tr=(n,i,r,o,t)=>{let l=no(i,r),p=oo(l,t,o);if(!l.deposits||l.deposits.length===0)throw new Error("No deposits found in obligation data");let c=l.deposits[0],g=ot(c.reserve.config.closeLtvPct).div(100).toString(),M=ot(c.reserve.config.openLtvPct).div(100).toString(),b=l.depositedAmountUsd.gt(0)?l.borrowedAmountUsd.div(l.depositedAmountUsd).toString():"0",S=ot(1).div(g).toString(),P=ot(g).sub(b).toString(),T="0",D="0",O="0",N="0";if(l.borrows&&l.borrows.length>0){let I=l.borrows[0],x=t[I?.coinType];x&&(T=yi(_i.BORROW,I?.reserve.borrowAprPercent,ki(x.borrow)).toString()),O=I.borrowedAmountUsd.toString(),N=I.borrowedAmount.toString()}if(l.deposits&&l.deposits.length>0){let I=l.deposits[0],x=t[I?.coinType];x&&(D=yi(_i.DEPOSIT,I?.reserve.depositAprPercent,ki(x.deposit)).toString())}return{...n,...l,originObligation:i,netAprPercent:p.toString(),suppliedAPR:ot(D).toString(),borrowedAPR:ot(T).toString(),closeLTV:g,openLTV:M,cr:b,ltr:S,liquidationBuffer:P,depositedAmountUsd:c.depositedAmountUsd.toString(),borrowedAmountUsd:O,depositedAmount:c.depositedAmount.toString(),borrowedAmount:N}},xr=n=>{let i=n.length,r=n.substring(i-1,i)==="0",o=n.substring(i-2,i-1)==="0",t=n.substring(i-3,i-2)==="0",l=n.substring(i-4,i-3)==="0",p=n.substring(i-5,i-4)==="0",c=n.substring(i-6,i-5)==="0";return{openPermissionsPause:r,closePermissionsPause:o,depositPermissionsPause:t,withdrawPermissionsPause:l,borrowPermissionsPause:p,repayPermissionsPause:c}};import{SUI_SYSTEM_STATE_OBJECT_ID as Li}from"@mysten/sui/utils";import{compoundDebt as Ti,getFilteredRewards as _t,getStakingYieldAprPercent as xi,getTotalAprPercent as jt,Side as kt}from"@suilend/sdk";var $t=class{constructor(i){this.getLeverageConfig=async()=>{let{package_id:i}=this._sdk.sdkOptions.leverage,r=ne(this._sdk.sdkOptions.leverage);try{let o=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::versioned::InitEvent`}),t=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::admin_cap::InitEvent`}),l=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::config::InitEvent`}),c=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::market::InitEvent`})).data[0].parsedJson.markets_id,M=(await this._sdk.FullClient.getObject({id:c,options:{showContent:!0}})).data.content.fields.list.fields.id.id;return{versioned:o.data[0].parsedJson.versioned,admin_cap_id:t.data[0].parsedJson.admin_cap_id,global_config_id:l.data[0].parsedJson.global_config_id,markets:c,markets_table_id:M}}catch(o){return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:78 ~ LeverageModules ~ error:",o),{versioned:"",admin_cap_id:"",global_config_id:"",markets_table_id:"",markets:""}}};this.getLeverageMarketsList=async(i=!1)=>{let o=this._sdk.getCache("leverage_markets_list",i);if(o)return o;let{package_id:t}=this._sdk.sdkOptions.leverage,l=[];try{let p=`${t}::market::CreateMarketEvent`,c=await this._sdk.FullClient.queryEventsByPage({MoveEventType:p});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:98 ~ LeverageModules ~ objects:",c);let g=c.data.map(M=>M.parsedJson.market_id);if(g.length>0)return(await this._sdk.FullClient.batchGetObjects(g,{showContent:!0,showType:!0})).forEach(b=>{let S=Cr(b),P=`leverage_market_info_${S.marketId}`;this._sdk.updateCache(P,S),l.push(S)}),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:106 ~ LeverageModules ~ marketList:",l),l}catch(p){return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:108 ~ LeverageModules ~ error:",p),[]}};this.getLeverageMarketSuilendInfo=async i=>{let{baseToken:r,quoteToken:o}=await this.getLeverageMarketInfo(i),{lendingMarketId:t}=ne(this._sdk.sdkOptions.suilend),{allLendingMarketData:l,lstAprPercentMap:p}=await this._sdk.SuiLendModule.getLendingMarketData(!0),{baseReserveMapInfo:c,quoteReserveMapInfo:g}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(r,o,l),M=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:l,lstAprPercentMap:p},!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:100 ~ LeverageModules ~ obligations:",M);let b=M[t].rewardMap[r],S=M[t].rewardMap[o],{depositedAmountUsd:P,borrowedAmountUsd:T,depositAprPercent:D,borrowAprPercent:O,depositedAmount:N,borrowedAmount:I}=c,{depositLimit:x,borrowLimit:q}=c.config,{depositedAmountUsd:j,borrowedAmountUsd:z,depositAprPercent:$,borrowAprPercent:Z,depositedAmount:m,borrowedAmount:y}=g,{depositLimit:A,borrowLimit:C}=g.config,L=jt(kt.DEPOSIT,D,_t(b.deposit),xi(kt.DEPOSIT,r,p)),h=jt(kt.BORROW,O,_t(b.borrow)),e=jt(kt.DEPOSIT,$,_t(S.deposit),xi(kt.DEPOSIT,r,p)),s=jt(kt.BORROW,Z,_t(S.borrow)),u=c.config.borrowLimitUsd,f=g.config.borrowLimitUsd,d=R(j.toString()).sub(z.toString()).toString(),v=R(P.toString()).sub(T.toString()).toString(),k=R(x.toString()).sub(R(N.toString())).toString(),w=R(q.toString()).sub(R(I.toString())).toString(),a=R(A.toString()).sub(R(m.toString())).toString(),_=R(C.toString()).sub(R(y.toString())).toString();return{longLiquidity:d,shortLiquidity:v,baseTotalDepositAprPercent:L.toString(),baseTotalBorrowAprPercent:h.toString(),quoteTotalDepositAprPercent:e.toString(),quoteTotalBorrowAprPercent:s.toString(),baseTokenAvailableDepositAmount:k,baseTokenAvailableBorrowAmount:w,quoteTokenAvailableDepositAmount:a,quoteTokenAvailableBorrowAmount:_,baseRewards:_t(b.deposit),quoteRewards:_t(S.deposit),baseDepositAprPercent:D.toString(),baseBorrowAprPercent:O.toString(),quoteDepositAprPercent:$.toString(),quoteBorrowAprPercent:Z.toString()}};this.getLeverageMarketInfo=async(i,r=!1)=>{let o=`leverage_market_info_${i}`,t=this._sdk.getCache(o,r);if(t)return t;let l=await this._sdk.FullClient.getObject({id:i,options:{showContent:!0}}),p=Cr(l);return this._sdk.updateCache(o,p,Si),p};this.getLeveragePositionList=async(i=this._sdk.getSenderAddress())=>{let r=await this._sdk.FullClient.getOwnedObjectsByPage(i,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{Package:this._sdk.sdkOptions.leverage.package_id}]}});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:126 ~ LeverageModules ~ ownerRes:",r);let{lendingMarketId:o,lendingMarketType:t}=ne(this._sdk.sdkOptions.suilend),l=await this._sdk.SuiLendModule.getSuilendClient(o,t),{allLendingMarketData:p,lstAprPercentMap:c}=await this._sdk.SuiLendModule.getLendingMarketData(),g=p[o].reserveMap,M=[],b=[],S=[];for(let D=0;D<r.data.length;D++){let O=Pi(r.data[D]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:259 ~ LeverageModules ~ fields:",O),O.position_id&&(b.push(O.position_id),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:260 ~ LeverageModules ~ positionIdList:",b),M.push(O.id.id))}let P=await this._sdk.FullClient.batchGetObjects(b,{showContent:!0}),T=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:p,lstAprPercentMap:c},!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:269 ~ LeverageModules ~ obligations:",T);for(let D=0;D<P.length;D++){let O=Lr(P[D],M[D]),N=await l.getObligation(O.obligationOwnerCap);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:250 ~ LeverageModules ~ rawObligation:",N);let I=Tr(O,N,g||{},c||{},T[o].rewardMap);S.push({...I})}return S};this.getLeveragePosition=async(i,r=this._sdk.getSenderAddress(),o=!0)=>{console.log("\u{1F680} ~ LeverageModules ~ walletAddress:",r);let t=`leverage_position_${i}`,l=this._sdk.getCache(t,o);if(l)return l;let p=await this._sdk.FullClient.getOwnedObjectsByPage(r,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{ObjectId:i}}),c=Pi(p.data[0]),g=await this._sdk.FullClient.batchGetObjects([c.position_id],{showContent:!0}),M=Lr(g[0],i),{lendingMarketId:b,lendingMarketType:S}=ne(this._sdk.sdkOptions.suilend),P=await this._sdk.SuiLendModule.getSuilendClient(b,S),{allLendingMarketData:T,lstAprPercentMap:D}=await this._sdk.SuiLendModule.getLendingMarketData(),O=T[b].reserveMap,N=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:T,lstAprPercentMap:D},!0),I=await P.getObligation(M.obligationOwnerCap),q={...Tr(M,I,O||{},D||{},N[b].rewardMap)};return this._sdk.updateCache(t,q,Si),q};this.getClmmPoolInfo=async i=>{let r=await this._sdk.ClmmSDK.Pool.getPool(i,!1),{coin_type_a:o,coin_type_b:t,fee_rate:l}=r;return{clmmFeeTier:l/1e6,clmmPoolCoinTypeA:o,clmmPoolCoinTypeB:t}};this.openLeveragePosition=async i=>{let{isQuote:r,isLong:o,amount:t,swapClmmPool:l="",slippage:p,leverage:c,marketId:g}=i,{lendingMarketId:M}=ne(this._sdk.sdkOptions.suilend),b=new rt,{openFeeRate:S,baseToken:P,quoteToken:T}=await this.getLeverageMarketInfo(g),{baseReserveArrayIndex:D,quoteReserveArrayIndex:O,reserve:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(P,T),I=N[0].mintDecimals,x=N[1].mintDecimals,{inputCoin:q,initDepositAmount:j}=await this.handleSwapLogic({isLong:o,isQuote:r,amount:t,baseToken:P,quoteToken:T,swapClmmPool:l,slippage:p,tx:b}),{flashAmount:z,flashLoanCoin:$,isFlashA:Z,flashLoanFee:m,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A,clmmPool:C}=await this.calculateFlashLoanParams({isLong:o,leverage:c,baseToken:P,quoteToken:T,initDepositAmount:j,reserve:N,baseTokenDecimal:I,quoteTokenDecimal:x,openFeeRate:S});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:489 ~ LeverageModules ~ flashAmount:",z);let{balanceA:L,balanceB:h,receipt:e}=this.flashLoan({amount:R(z),clmmPool:C,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A,flashLoanCoin:$,tx:b}),{debtSwapAmountOut:s,debtSwapOutCoin:u}=await this.handleDebtSwapLogic({isLong:o,flashAmount:z,baseToken:P,quoteToken:T,swapClmmPool:l,isFlashA:Z,balanceA:L,balanceB:h,slippage:p,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A,tx:b});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:528 ~ LeverageModules ~ debtSwapAmountOut:",s.toString());let f=R(s).add(j).mul(1-S).toDP(0,Ue.ROUND_DOWN).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:550 ~ LeverageModules ~ totalDepositAmount:",f),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:528 ~ LeverageModules ~ debtSwapAmountOut:",s);let{positionCap:d,marginTradingContext:v}=this.createLeveragePosition({leverage:c,marketId:g,baseToken:P,quoteToken:T,isLong:o,initDepositAmount:R(t).toString(),initCoinType:r?T:P,tx:b});await this._sdk.SuiLendModule.refreshReservePrices(b,N);let k=o?D:O;await b.mergeCoins(u,[q]),await this.depositToLeveragePosition({isLong:o,marketId:g,positionCap:d,depositReserveArrayIndex:k,inputCoin:u,marginTradingContext:v},b);let w=R(z).add(m).toDP(0,Ue.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:407 ~ LeverageModules ~ borrowAmount:",{flashAmount:z,flashLoanFee:m,clmmPool:C});let a=this.borrowAsset({positionCap:d,reserveArrayIndex:o?O:D,borrowAmount:R(w),baseToken:P,quoteToken:T,isLong:o,lendingMarketId:M,marketId:g,marginTradingContext:v},b),_=Y.mintBalanceZero(Z?A:y,b);return this.repayFlashLoan({tx:b,clmmPool:C,repayBase:Z?Y.intoBalance(a,y,b):_,repayQuote:Z?_:Y.intoBalance(a,A,b),receipt:e,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A}),b.transferObjects([d],b.pure.address(this._sdk.getSenderAddress())),Y.destroyBalanceZero(Z?h:L,Z?A:y,b),await this.marginTradingContextConfirm(v,b),b};this.positionManageSizeDeposit=async i=>{let{marketId:r,positionCapId:o,swapClmmPool:t="",isQuote:l,amount:p,slippage:c,leverage:g,txb:M}=i,{lendingMarketId:b}=ne(this._sdk.sdkOptions.suilend),{baseToken:S,quoteToken:P}=await this.getLeverageMarketInfo(r),{isLong:T,deposits:D,borrows:O}=await this.getLeveragePosition(o),{reserve:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,P),I=M||new rt,x=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"increase_size",coinType:l?P:S,amount:p.toString()},I),q=D[0].reserveArrayIndex.toString(),j=O[0].reserveArrayIndex.toString(),{inputCoin:z,initDepositAmount:$}=await this.handleSwapLogic({isLong:T,isQuote:l,amount:p,baseToken:S,quoteToken:P,swapClmmPool:t,slippage:c,tx:I}),{flashAmount:Z,flashLoanFee:m,flashLoanCoin:y,isFlashA:A,borrowAmount:C}=await this.calculatePositionDeposit({marketId:r,isLong:T,isQuote:l,amount:R(p),swapClmmPool:t,leverage:g,slippage:c}),{clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h,clmmPool:e}=await this.getFlashLoanPool(y,Z);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:492 ~ LeverageModules ~ flashLoanCoin:",y),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:492 ~ LeverageModules ~ borrowAmount:",C);let{balanceA:s,balanceB:u,receipt:f}=this.flashLoan({amount:R(Z),clmmPool:e,clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h,flashLoanCoin:y,tx:I}),{debtSwapAmountOut:d,debtSwapOutCoin:v}=await this.handleDebtSwapLogic({isLong:T,flashAmount:Z,baseToken:S,quoteToken:P,swapClmmPool:t,isFlashA:A,balanceA:s,balanceB:u,slippage:c,clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h,tx:I});I.mergeCoins(v,[z]),await this._sdk.SuiLendModule.refreshReservePrices(I,N),await this.depositToLeveragePosition({isLong:T,marketId:r,positionCapId:o,depositReserveArrayIndex:q,inputCoin:v,marginTradingContext:x},I),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:531 ~ LeverageModules ~ borrowAmount:",C);let k=this.borrowAsset({positionCapId:o,reserveArrayIndex:j,borrowAmount:R(C),baseToken:S,quoteToken:P,isLong:T,lendingMarketId:b,marketId:r,marginTradingContext:x},I),w=Y.mintBalanceZero(A?h:L,I);return this.repayFlashLoan({tx:I,clmmPool:e,repayBase:A?Y.intoBalance(k,L,I):w,repayQuote:A?w:Y.intoBalance(k,h,I),receipt:f,clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h}),Y.destroyBalanceZero(A?u:s,A?h:L,I),await this.marginTradingContextConfirm(x,I),I};this.positionManageSizeWithdraw=async i=>{let{marketId:r,amount:o,isQuote:t,txb:l,swapClmmPool:p="",slippage:c,positionCapId:g,isLong:M,leverage:b}=i,{lendingMarketType:S,lendingMarketId:P}=ne(this._sdk.sdkOptions.suilend),T=l||new rt,{withdrawCtokenAmount:D,repayAmount:O,isClose:N,deposits:I,borrows:x,reserve:q,baseToken:j,quoteToken:z,clmmPool:$,clmmPoolCoinTypeA:Z,clmmPoolCoinTypeB:m,clmmFeeTier:y}=await this.calculatePositionWithdraw({marketId:r,positionCapId:g,isLong:M,isQuote:t,swapClmmPool:p,amount:o,leverage:b});if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:575 ~ LeverageModules ~ withdrawAmount:",D),N)return this.leveragePositionCloseWithCoin({marketId:r,positionCapId:g,isQuote:t,slippage:c,swapClmmPool:p});let A=this.createMarginTradingContext({marketId:r,positionCapId:g,action:"decrease_size",coinType:t?z:j,amount:o.toString()},T);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:669 ~ LeverageModules ~ repayAmount:",O),await this._sdk.SuiLendModule.refreshReservePrices(T,q);let{balanceA:C,balanceB:L,receipt:h,isLoanA:e,loanCoinType:s}=this.flashLoan({tx:T,amount:R(O),flashLoanCoin:x[0].reserve.coinType,clmmPool:$,clmmPoolCoinTypeA:Z,clmmPoolCoinTypeB:m}),u=e?Y.fromBalance(C,Z,T):Y.fromBalance(L,m,T);this.repay({txb:T,positionCapId:g,repayReserveArrayIndex:x[0].reserveArrayIndex.toString(),repayCoin:u,repayCoinType:M?z:j,repayAmount:R(0),marketId:r,marginTradingContext:A}),T.transferObjects([u],this._sdk.getSenderAddress());let f=await this._sdk.SuiLendModule.getSuilendClient(P,S),d=await this._sdk.PythConnection.getPriceFeedsUpdateData([I[0].reserve.priceIdentifier]),v=await f.pythClient.updatePriceFeeds(T,d,[I[0].reserve.priceIdentifier]),k=this.withdrawAsset({marketId:r,positionCapId:g,withdrawAmount:D.toString(),withdrawReserveArrayIndex:I[0].reserveArrayIndex.toString(),withdrawCoinType:M?j:z,baseToken:j,quoteToken:z,priceObjectId:v&&v[0],marginTradingContext:A},T),w=M?j:z,a,_;if(w!==s){_=R(O).add(R(O).mul(y)).toDP(0,Ue.ROUND_UP).toString();let G=await this.findRouters(w,s,R(_),!1,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:748 ~ LeverageModules ~ routers:",{amountIn:G?.amount_in.toString(),amountOut:G?.amount_out.toString(),withdrawAmount:D}),_=G?.amount_in.toString();let te=T.splitCoins(k,[G?.amount_in.toString()]);a=await this.routerSwap({router:G?.route_obj,inputCoin:te,slippage:c,txb:T})}else a=T.splitCoins(k,[O]),_=O;let F=Y.mintBalanceZero(e?m:Z,T);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:761 ~ LeverageModules ~ clmmPoolCoinTypeA:",Z),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:761 ~ LeverageModules ~ clmmPoolCoinTypeB:",m),a&&this.repayFlashLoan({tx:T,clmmPool:$,repayBase:e?Y.intoBalance(a,Z,T):F,repayQuote:e?F:Y.intoBalance(a,m,T),clmmPoolCoinTypeA:Z,clmmPoolCoinTypeB:m,receipt:h});let E=t?z:j,U=R(D).sub(R(_)).toString(),W;if(E!==w){let G=await this.findRouters(w,E,R(U),!0,[p]);W=await this.routerSwap({router:G?.route_obj,inputCoin:k,slippage:c,txb:T})}else W=k;return W&&T.transferObjects([W],this._sdk.getSenderAddress()),Y.destroyBalanceZero(e?L:C,e?m:Z,T),await this.marginTradingContextConfirm(A,T),T};this.positionManageLeverageIncrease=async i=>{let{marketId:r,positionCapId:o,isLong:t,currentLeverage:l,targetLeverage:p,swapClmmPool:c="",slippage:g}=i,{lendingMarketId:M}=ne(this._sdk.sdkOptions.suilend),b=new rt,{flashLoanAmount:S,quoteToken:P,baseToken:T,reserve:D,deposits:O,borrows:N,borrowAmount:I,isFlashLoan:x}=await this.calculatePositionLeverage({marketId:r,positionCapId:o,currentLeverage:l,targetLeverage:p,swapClmmPool:c,slippage:g}),q=t?P:T,{clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z,clmmPool:$}=await this.getFlashLoanPool(q,S?.toString()||"");console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:896 ~ LeverageModules ~ clmmPoolCoinTypeA:",{clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z});let Z=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"increase_leverage",coinType:t?T:P,amount:"0"},b);if(D&&await this._sdk.SuiLendModule.refreshReservePrices(b,D),x){let{balanceA:m,balanceB:y,receipt:A,isLoanA:C}=this.flashLoan({tx:b,amount:R(S),clmmPool:$,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z,flashLoanCoin:q}),L=t?P:T,h=t?T:P,e=await this.findRouters(L,h,R(S),!0,[c]),s=await this.routerSwap({router:e?.route_obj,inputCoin:C?Y.fromBalance(m,j,b):Y.fromBalance(y,z,b),slippage:g,txb:b});await this.depositToLeveragePosition({isLong:t,marketId:r,positionCapId:o,depositReserveArrayIndex:O[0].reserveArrayIndex.toString(),inputCoin:s,marginTradingContext:Z},b);let u=await this.borrowAsset({positionCapId:o,reserveArrayIndex:t?D[1].arrayIndex.toString():D[0].arrayIndex.toString(),borrowAmount:R(I),baseToken:T,quoteToken:P,isLong:t,lendingMarketId:M,marketId:r,marginTradingContext:Z},b),f=Y.mintBalanceZero(C?z:j,b);this.repayFlashLoan({tx:b,clmmPool:$,repayBase:C?Y.intoBalance(u,j,b):f,repayQuote:C?f:Y.intoBalance(u,z,b),receipt:A,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z}),Y.destroyBalanceZero(C?y:m,C?z:j,b)}else{let m=await this.borrowAsset({positionCapId:o,reserveArrayIndex:t?D[1].arrayIndex.toString():D[0].arrayIndex.toString(),borrowAmount:R(I),baseToken:T,quoteToken:P,isLong:t,lendingMarketId:M,marketId:r,marginTradingContext:Z},b),y=await this.findRouters(t?P:T,t?T:P,R(I),!0,[c]),A=await this.routerSwap({router:y?.route_obj,inputCoin:m,slippage:g,txb:b});await this.depositToLeveragePosition({isLong:t,marketId:r,positionCapId:o,depositReserveArrayIndex:O[0].reserveArrayIndex.toString(),inputCoin:A,marginTradingContext:Z},b)}return await this.marginTradingContextConfirm(Z,b),b};this.positionManageLeverageDecrease=async i=>{let{marketId:r,positionCapId:o,isLong:t,currentLeverage:l,targetLeverage:p,swapClmmPool:c="",slippage:g}=i,{baseToken:M,quoteToken:b,closeFeeRate:S}=await this.getLeverageMarketInfo(r),{deposits:P,borrows:T}=await this.getLeveragePosition(o),{reserve:D}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b),{lendingMarketId:O,lendingMarketType:N}=ne(this._sdk.sdkOptions.suilend),I=new rt,{withdrawCtokenAmount:x,isFlashLoan:q}=await this.calculatePositionLeverage({marketId:r,positionCapId:o,currentLeverage:l,targetLeverage:p,swapClmmPool:c,slippage:g});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:654 ~ LeverageModules ~ withdrawCtokenAmount:",x,q);let j=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"decrease_leverage",coinType:t?M:b,amount:"0"},I);await this._sdk.SuiLendModule.refreshReservePrices(I,D);let z=await this._sdk.SuiLendModule.getSuilendClient(O,N),$=await this._sdk.PythConnection.getPriceFeedsUpdateData([P[0].reserve.priceIdentifier]),Z=await z.pythClient.updatePriceFeeds(I,$,[P[0].reserve.priceIdentifier]),{clmmPoolCoinTypeA:m,clmmPoolCoinTypeB:y,clmmPool:A,clmmFeeTier:C}=await this.getFlashLoanPool(P[0].reserve.coinType,x.toString());if(q){let{balanceA:L,balanceB:h,receipt:e,isLoanA:s}=this.flashLoan({tx:I,amount:R(x),clmmPool:A,clmmPoolCoinTypeA:m,clmmPoolCoinTypeB:y,flashLoanCoin:P[0].reserve.coinType});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1019 ~ LeverageModules ~ isLoanA:",s);let u=t?M:b,f=t?b:M,d=await this.findRouters(u,f,R(x),!0,[c]),v=await this.routerSwap({router:d?.route_obj,inputCoin:s?Y.fromBalance(L,m,I):Y.fromBalance(h,y,I),slippage:g,txb:I});await this.repay({txb:I,marketId:r,positionCapId:o,repayReserveArrayIndex:T[0].reserveArrayIndex.toString(),repayCoin:v,repayCoinType:t?b:M,repayAmount:R(0),marginTradingContext:j}),v&&I.transferObjects([v],this._sdk.getSenderAddress());let k=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:x.toString(),withdrawReserveArrayIndex:P[0].reserveArrayIndex.toString(),withdrawCoinType:t?M:b,baseToken:M,quoteToken:b,priceObjectId:Z&&Z[0],marginTradingContext:j},I),w=R(x).mul(R(1).add(C)).toDP(0,Ue.ROUND_UP),a=I.splitCoins(k,[w.toString()]);this.repayFlashLoan({tx:I,clmmPool:A,repayBase:s?Y.intoBalance(a,m,I):L,repayQuote:s?h:Y.intoBalance(a,y,I),receipt:e,clmmPoolCoinTypeA:m,clmmPoolCoinTypeB:y}),I.transferObjects([k],this._sdk.getSenderAddress())}else{let L=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:x.toString(),withdrawReserveArrayIndex:P[0].reserveArrayIndex.toString(),withdrawCoinType:t?M:b,baseToken:M,quoteToken:b,priceObjectId:Z&&Z[0],marginTradingContext:j},I),h=t?M:b,e=t?b:M,s=await this.findRouters(h,e,R(x),!0,[c]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:681 ~ LeverageModules ~ routers:",s,s?.route_obj.paths,h,e);let u=await this.routerSwap({router:s?.route_obj,inputCoin:L,slippage:g,txb:I});this.repay({txb:I,positionCapId:o,repayReserveArrayIndex:T[0].reserveArrayIndex.toString(),repayCoin:u,repayCoinType:t?b:M,repayAmount:R(0),marketId:r,marginTradingContext:j}),u&&I.transferObjects([u],this._sdk.getSenderAddress())}return await this.marginTradingContextConfirm(j,I),I};this.leveragePositionCloseWithCoin=async i=>{let{marketId:r,positionCapId:o,isQuote:t,slippage:l,swapClmmPool:p=""}=i,{baseToken:c,quoteToken:g,closeFeeRate:M}=await this.getLeverageMarketInfo(r),{deposits:b,borrows:S,isLong:P,originObligation:T}=await this.getLeveragePosition(o);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:847 ~ LeverageModules ~ borrows:",S);let D=new rt,O=t?g:c,N=P?c!==O:g!==O,{reserve:I}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(c,g),x=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"close_position",coinType:t?g:c,amount:"0"},D);await this._sdk.SuiLendModule.refreshReservePrices(D,I);let q=T.borrows.length>0,j,z,$,Z,m=R(0),y,A,C,L;if(q){let v=Ti(T.borrows[0],P?I[1]:I[0]),k=R(v.borrowedAmount.value.toString()).div(10**18).toDP(0,Ue.ROUND_UP).add(100),w=k,a=await this.getFlashLoanPool(S[0].reserve.coinType,w.toString());j=a.clmmPoolCoinTypeA,z=a.clmmPoolCoinTypeB,$=a.clmmPool,Z=a.clmmFeeTier;let _=w.mul(Z);m=w.add(_).toDP(0,Ue.ROUND_UP);let F=this.flashLoan({tx:D,amount:k,clmmPool:$,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z,flashLoanCoin:S[0].reserve.coinType});A=F.balanceA,C=F.balanceB,L=F.receipt,y=F.isLoanA;let E=y?Y.fromBalance(A,y?j:z,D):Y.fromBalance(C,y?j:z,D);this.repay({txb:D,positionCapId:o,repayReserveArrayIndex:S[0].reserveArrayIndex.toString(),repayCoin:E,repayCoinType:y?j:z,repayAmount:R(0),marketId:r,marginTradingContext:x}),D.transferObjects([E],this._sdk.getSenderAddress())}let{lendingMarketType:h,lendingMarketId:e}=ne(this._sdk.sdkOptions.suilend),s=await this._sdk.SuiLendModule.getSuilendClient(e,h),u=[];for(let v=0;v<b.length;v++){let k=await this._sdk.PythConnection.getPriceFeedsUpdateData([b[v].reserve.priceIdentifier]);u=await s.pythClient.updatePriceFeeds(D,k,[b[v].reserve.priceIdentifier])}let f=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:Ci.toString(),withdrawReserveArrayIndex:b[0].reserveArrayIndex.toString(),withdrawCoinType:P?c:g,baseToken:c,quoteToken:g,priceObjectId:u&&u[0],marginTradingContext:x},D);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1217 ~ LeverageModules ~ deposits:",b);for(let v=1;v<b.length;v++){let k=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:Ci.toString(),withdrawReserveArrayIndex:b[v].reserveArrayIndex.toString(),withdrawCoinType:b[v].coinType,baseToken:c,quoteToken:g,priceObjectId:u&&u[v],marginTradingContext:x},D);D.transferObjects([k],this._sdk.getSenderAddress())}let d=b[0].depositedCtokenAmount.toString();if(q){let v=y?j!==b[0].reserve.coinType:z!==b[0].reserve.coinType,k;if(v){let a=await this.findRouters(P?c:g,y?j:z,m,!1,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:902 ~ LeverageModules ~ isLong ? baseToken : quoteToken:",{from:P?c:g,to:y?j:z,amountIn:a?.amount_in.toString(),amountOut:m.toString()});let _=D.splitCoins(f,[a?.amount_in.toString()]);k=await this.routerSwap({router:a?.route_obj,inputCoin:_,slippage:l,txb:D}),d=R(b[0].depositedCtokenAmount.toString()).sub(a?.amount_in.toString()).toString()}else k=D.splitCoins(f,[m.toString()]),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:928 ~ LeverageModules ~ flashLoanAmountTotal.toString():",m.toString(),b[0].depositedCtokenAmount.toString()),d=R(b[0].depositedCtokenAmount.toString()).sub(m).toString();let w=y?C:A;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:921 ~ LeverageModules ~ isLoanA:",y),k&&this.repayFlashLoan({tx:D,clmmPool:$,repayBase:y?Y.intoBalance(k,j,D):w,repayQuote:y?w:Y.intoBalance(k,z,D),receipt:L,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z})}if(N){let v=await this.findRouters(P?c:g,O,R(d),!0,[p]),k=await this.routerSwap({router:v?.route_obj,inputCoin:f,slippage:l,txb:D});k&&D.transferObjects([k],this._sdk.getSenderAddress())}else D.transferObjects([f],this._sdk.getSenderAddress());return this.leveragePositionClose({marketId:r,positionCapId:o,marginTradingContext:x},D),await this.marginTradingContextConfirm(x,D),D};this.leveragePositionClose=async(i,r)=>{let o=r||new rt,{marketId:t,positionCapId:l,marginTradingContext:p}=i,{leverage:c}=this._sdk.sdkOptions,{global_config_id:g,versioned:M}=ne(this._sdk.sdkOptions.leverage),{lendingMarketType:b,lendingMarketId:S}=ne(this._sdk.sdkOptions.suilend);return o.moveCall({target:`${c.published_at}::router::close_position`,typeArguments:[b],arguments:[p,o.object(g),o.object(S),o.object(t),o.object(l),o.object(pt),o.object(M)]}),o};this.leveragePositionRepay=async i=>{let{marketId:r,positionCapId:o,amount:t,isQuote:l,swapClmmPool:p="",slippage:c}=i,{baseToken:g,quoteToken:M}=await this.getLeverageMarketInfo(r),{borrows:b}=await this.getLeveragePosition(o),S=new rt,P=b[0].reserve.coinType,T=l?M!==P:g!==P,D,O=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"repay_debt",coinType:l?M:g,amount:t.toString()},S);if(T){let N=await this.findRouters(l?M:g,P,t,!0,[p]),I=Y.buildCoinWithBalance(BigInt(t.toString()),l?M:g,S);D=await this.routerSwap({router:N?.route_obj,inputCoin:I,slippage:c,txb:S})}else D=Y.buildCoinWithBalance(BigInt(t.toString()),l?M:g,S);return this.repay({txb:S,positionCapId:o,repayReserveArrayIndex:b[0].reserveArrayIndex.toString(),repayCoin:D,repayCoinType:P,repayAmount:R(0),marketId:r,marginTradingContext:O}),S.transferObjects([D],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(O,S),S};this.positionTopUpCoken=async i=>{let{marketId:r,positionCapId:o,amount:t,isQuote:l,swapClmmPool:p="",slippage:c}=i,g=new rt,{baseToken:M,quoteToken:b}=await this.getLeverageMarketInfo(r),{isLong:S}=await this.getLeveragePosition(o),P=S&&l||!S&&!l,T=await this.createMarginTradingContext({marketId:r,positionCapId:o,action:"top_up_collateral",coinType:l?b:M,amount:t.toString()},g),D;if(P){let x=await this.findRouters(l?b:M,l?M:b,t,!0,[p]),q=Y.buildCoinWithBalance(BigInt(t.toString()),l?b:M,g);D=await this.routerSwap({router:x?.route_obj,inputCoin:q,slippage:c,txb:g})}else D=Y.buildCoinWithBalance(BigInt(t.toString()),l?b:M,g);let{baseReserveArrayIndex:O,quoteReserveArrayIndex:N,reserve:I}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b);return await this.depositToLeveragePosition({isLong:S,marketId:r,positionCapId:o,depositReserveArrayIndex:S?O:N,inputCoin:D,marginTradingContext:T},g),await this.marginTradingContextConfirm(T,g),g};this.flashLoan=i=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:698 ~ LeverageModules ~ params:",i);let{clmm_pool:r}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=ne(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{amount:t,clmmPool:l,clmmPoolCoinTypeA:p,clmmPoolCoinTypeB:c,flashLoanCoin:g,tx:M}=i,b=so(p)===g;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:983 ~ LeverageModules ~ isLoanA:",b);let[S,P,T]=M.moveCall({target:`${r.published_at}::pool::flash_loan`,arguments:[M.object(o),M.object(l),M.pure.bool(b),M.pure.u64(t.toString())],typeArguments:[p,c]});return{balanceA:S,balanceB:P,receipt:T,isLoanA:b,loanCoinType:b?p:c}};this.repayFlashLoan=i=>{let{clmm_pool:r}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=ne(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{tx:t,repayBase:l,repayQuote:p,receipt:c,clmmPool:g,clmmPoolCoinTypeA:M,clmmPoolCoinTypeB:b}=i;return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:612 ~ LeverageModules ~ params:",i),t.moveCall({target:`${r.published_at}::pool::repay_flash_loan`,arguments:[t.object(o),t.object(g),l,p,c],typeArguments:[M,b]}),t};this.borrowAsset=(i,r)=>{let{reserveArrayIndex:o,borrowAmount:t,baseToken:l,quoteToken:p,lendingMarketId:c,isLong:g,marketId:M,positionCapId:b,positionCap:S,marginTradingContext:P}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:677 ~ LeverageModules ~ params:",i);let{leverage:T}=this._sdk.sdkOptions,{lendingMarketType:D}=ne(this._sdk.sdkOptions.suilend),{global_config_id:O,versioned:N}=ne(this._sdk.sdkOptions.leverage);return Y.isSuiCoin(g?p:l)?r.moveCall({target:`${T.published_at}::router::borrow_sui`,typeArguments:[D],arguments:[P,r.object(O),r.object(c),r.object(M),b?r.object(b):S,r.pure.u64(o),r.pure.u64(t.toString()),r.object(Li),r.object(pt),r.object(N)]}):r.moveCall({target:`${T.published_at}::router::borrow_not_sui`,typeArguments:[D,g?p:l],arguments:[P,r.object(O),r.object(c),r.object(M),b?r.object(b):S,r.pure.u64(o),r.pure.u64(t.toString()),r.object(pt),r.object(N)]})};this.withdrawAsset=(i,r)=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:749 ~ LeverageModules ~ params:",i);let{leverage:o}=this._sdk.sdkOptions,{lendingMarketId:t,lendingMarketType:l}=ne(this._sdk.sdkOptions.suilend),{global_config_id:p,versioned:c}=ne(this._sdk.sdkOptions.leverage),{package_id:g}=this._sdk.sdkOptions.suilend,{marketId:M,withdrawAmount:b,withdrawReserveArrayIndex:S,withdrawCoinType:P,baseToken:T,quoteToken:D,priceObjectId:O,positionCapId:N,marginTradingContext:I}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1596 ~ LeverageModules ~ withdrawAmount:",b);let[x]=r.moveCall({target:"0x1::option::none",typeArguments:[`${g}::lending_market::RateLimiterExemption<${l}, ${P}>`],arguments:[]});return Y.isSuiCoin(P)?r.moveCall({target:`${o.published_at}::router::withdraw_sui`,typeArguments:[l],arguments:[I,r.object(p),r.object(t),r.object(M),r.object(N),r.object(x),r.pure.u64(b),r.pure.u64(S),r.object(Li),r.object(pt),r.object(c)]}):r.moveCall({target:`${o.published_at}::router::withdraw_not_sui`,typeArguments:[l,P],arguments:[I,r.object(p),r.object(t),r.object(M),r.object(N),r.object(x),r.pure.u64(b),r.pure.u64(S),r.object(pt),r.object(c)]})};this.repay=i=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1333 ~ LeverageModules ~ params:",i);let{leverage:r}=this._sdk.sdkOptions,{lendingMarketId:o,lendingMarketType:t}=ne(this._sdk.sdkOptions.suilend),{global_config_id:l,versioned:p}=ne(this._sdk.sdkOptions.leverage),{txb:c,repayAmount:g,repayCoinType:M,repayCoin:b,repayReserveArrayIndex:S,marketId:P,positionCapId:T,marginTradingContext:D}=i,O=c||new rt,N=b||Y.buildCoinWithBalance(BigInt(g.toString()),M,O);O.moveCall({target:`${r.published_at}::router::repay`,typeArguments:[t,M],arguments:[D,O.object(l),O.object(o),O.object(P),O.object(T),N,O.pure.u64(S.toString()),O.object(pt),O.object(p)]})};this.routerSwap=async i=>{let{slippage:r,txb:o,inputCoin:t,router:l}=i,p=o||new rt;if(l)return await this._sdk.AggregatorClient.routerSwap({router:l,inputCoin:t,slippage:r,txb:p})};this.calculatePositionDeposit=async i=>{let{isQuote:r,isLong:o,amount:t,swapClmmPool:l="",leverage:p,byAmountIn:c=!0,marketId:g}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1514 ~ LeverageModules ~ amount:",t.toString());let{baseToken:M,quoteToken:b,openFeeRate:S}=await this.getLeverageMarketInfo(g),{reserve:P}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b),T=P[0].mintDecimals,D=P[1].mintDecimals,O=t.toString();if(o&&r||!o&&!r){let s=o?b:M,u=o?M:b;O=(await this.findRouters(s,u,R(O),!0,[l]))?.amount_out.toString()}let{basePrice:I,quotePrice:x,flashAmount:q,flashLoanFee:j,flashLoanCoin:z,isFlashA:$,clmmPool:Z,clmmFeeTier:m}=await this.calculateFlashLoanParams({isLong:o,leverage:p,baseToken:M,quoteToken:b,initDepositAmount:O,reserve:P,baseTokenDecimal:T,quoteTokenDecimal:D,openFeeRate:S});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1533 ~ LeverageModules ~ flashAmount:",q.toString(),O);let y=await this.findRouters(o?b:M,o?M:b,R(q),!0,[l]),A=R(O).add(R(y?.amount_out.toString())).toDP(0,Ue.ROUND_DOWN).toString(),C=R(A).mul(o?I:x).toString(),L=R(q).add(j).toDP(0,Ue.ROUND_UP).toString(),h=R(L).mul(o?x:I).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1541 ~ LeverageModules ~ isQuote:",r);let e=r?R(t).div(10**(r?D:T)).mul(10**T).mul(p).div(I).toDP(0,Ue.ROUND_DOWN).toString():R(t).mul(p).toDP(0,Ue.ROUND_DOWN).toString();return{routers:y,leverageDepositAmount:e,quotePrice:x,basePrice:I,clmmFeeTier:m,flashLoanFee:j,flashLoanCoin:z,depositAmount:A,borrowAmount:L,depositAmountUSD:C,borrowAmountUSD:h,flashAmount:q,isFlashA:$,initDepositAmount:O}};this.calculatePositionWithdraw=async i=>{let{marketId:r,positionCapId:o,isLong:t,isQuote:l,swapClmmPool:p="",amount:c,leverage:g}=i,{baseToken:M,quoteToken:b}=await this.getLeverageMarketInfo(r),{deposits:S,borrows:P,originObligation:T}=await this.getLeveragePosition(o),{reserve:D,baseReserveMapInfo:O,quoteReserveMapInfo:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1951 ~ LeverageModules ~ reserve:",D);let I=D[0].mintDecimals,x=D[1].mintDecimals,q=t?O.cTokenExchangeRate:N.cTokenExchangeRate;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1955 ~ LeverageModules ~ ctokenExchangeRate:",q.toString());let j=await this._sdk.SuiLendModule.getLatestPriceFeeds(D,!0),z=j[yt(b)]?.price,$=j[yt(M)]?.price,Z=R(0),m;t?(Z=R(l?c.mul(z).toString():c.mul($).toString()).div(l?10**x:10**I),m=l?c.div($).div(10**x).mul(10**I).toString():c):(Z=R(l?c.mul(z).toString():c.mul($).toString()).div(l?10**x:10**I),m=l?c:c.mul($).div(10**I).mul(10**x).toString()),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1973 ~ LeverageModules ~ withdrawAmount:",m);let y=R(S[0].depositedAmountUsd.toString()).sub(R(P[0].borrowedAmountUsd.toString())).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1887 ~ LeverageModules ~ availableWithdrawAmountUSD:",y);let A=R(y).div(t?$:z).mul(10**(t?I:x)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1893 ~ LeverageModules ~ availableWithdrawAmount:",A);let C=Z.div(R(y));console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1625 ~ LeverageModules ~ ratio:",C),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1899 ~ LeverageModules ~ borrows[0].borrowedAmount.toString():",P[0].borrowedAmount.toString()),m=R(m).mul(g).toDP(0,Ue.ROUND_DOWN).toString(),Z=R(Z).mul(g);let L=Ti(T.borrows[0],t?D[1]:D[0]),h=R(L.borrowedAmount.value.toString()).div(10**18).toDP(0,Ue.ROUND_UP),e=h.mul(C).toDP(0,Ue.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1901 ~ LeverageModules ~ repayAmount:",{repayAmount:e,ratio:C,withdrawAmount:m,borrowAmount:h,withdrawAmountUSD:Z,quotePrice:z,basePrice:$});let{clmmPoolCoinTypeA:s,clmmPoolCoinTypeB:u,clmmFeeTier:f,clmmPool:d}=await this.getFlashLoanPool(P[0].reserve.coinType,e),v=await this.findRouters(S[0].reserve.coinType,P[0].reserve.coinType,R(e),!1,[p]),k=h.mul(R(1).sub(C)).toString(),w=R(k).mul(t?z:$).toString(),a=R(S[0].depositedAmount.toString()).mul(t?10**I:10**x).sub(R(m)).toString(),_=R(a).mul(t?$:z).toString(),F=R(e).mul(f).toString(),E=R(v?.amount_in.toString()).toString(),U=R(v?.amount_out.toString()).toString(),W=R(C).gte(1);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1927 ~ LeverageModules ~ deposits[0].depositedAmount.toString():",{afterBorrowAmount:k,afterBorrowAmountUSD:w,afterDepositAmount:a,afterDepositAmountUSD:_});let G=R(m).div(q.toString()).toDP(0,Ue.ROUND_DOWN).toString();return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1956 ~ LeverageModules ~ withdrawCtokenAmount:",G),{amountIn:E,amountOut:U,from:S[0].reserve.coinType,to:P[0].reserve.coinType,afterBorrowAmount:k,afterBorrowAmountUSD:w,afterDepositAmount:a,afterDepositAmountUSD:_,flashLoanFee:F,clmmFeeTier:f,withdrawAmount:m,withdrawCtokenAmount:G,repayAmount:e,ratio:C,isClose:W,isLong:t,deposits:S,borrows:P,reserve:D,baseToken:M,quoteToken:b,clmmPool:d,clmmPoolCoinTypeA:s,clmmPoolCoinTypeB:u}};this.calculatePositionLeverage=async i=>{let{marketId:r,positionCapId:o,currentLeverage:t,targetLeverage:l,swapClmmPool:p=""}=i,c=R(l).sub(R(t)),g=c.gt(0),{baseToken:M,quoteToken:b}=await this.getLeverageMarketInfo(r),{borrows:S,deposits:P,isLong:T}=await this.getLeveragePosition(o);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1540 ~ LeverageModules ~ deposits:",P[0].reserve.config);let{reserve:D}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b),O=D[0].mintDecimals,N=D[1].mintDecimals,I=await this._sdk.SuiLendModule.getLatestPriceFeeds(D,!0),x=I[yt(b)]?.price,q=I[yt(M)]?.price,j=S.length>0,z=P[0].depositedAmountUsd.toString(),$=P[0].depositedAmount.toString(),Z=j?R(S[0].borrowedAmount.toString()).mul(10**(T?N:O)):R(0),m=j?S[0].borrowedAmountUsd.toString():R(0),y=R(P[0].reserve.config.openLtvPct).div(100).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1552 ~ LeverageModules ~ openLTV:",y);let A=R(z).sub(R(m)).mul(y).toString();if(g){let C=R(z).div(t).mul(c).div(T?x:q).mul(10**(T?N:O)).toDP(0,Ue.ROUND_UP),L=C.gt(A),h=C;if(L){let e=T?b:M,s=T?M:b,u=await this.findRouters(e,s,h,!0,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:2106 ~ LeverageModules ~ routers:",{routers:u,from:e,to:s});let f=R(u?.amount_out.toString()).toString(),d=R(f).mul(T?q:x).toString(),{clmmPoolCoinTypeA:v,clmmPoolCoinTypeB:k,clmmPool:w,clmmFeeTier:a}=await this.getFlashLoanPool(e,h.toString()),_=h.mul(a).toString(),F=T?v==b:k==M,U=R(h).add(_).toDP(0,Ue.ROUND_UP).toString(),W=R(U).mul(T?x:q).toString(),G=R($).add(R(f).div(10**(T?O:N))).toString(),te=R(G).mul(T?q:x).toString(),Ze=R(Z).add(R(U)).div(10**(T?N:O)).toString(),J=R(Ze).mul(T?x:q).toString();return{amountIn:u?.amount_in.toString(),amountOut:u?.amount_out.toString(),flashLoanFee:_,depositAmount:f,borrowAmount:U,depositAmountUSD:d,borrowAmountUSD:W,flashLoanAmount:h,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,clmmFeeTier:a,isFlashLoan:L,isLoanA:F,clmmPoolCoinTypeA:v,clmmPoolCoinTypeB:k,afterDepositAmount:G,afterBorrowAmount:Ze,afterDepositAmountUSD:te,afterBorrowAmountUSD:J}}else{let e=h.toString(),s=R(e).mul(T?x:q).toString(),u=await this.findRouters(T?b:M,T?M:b,R(e),!0,[p]),f=R(u?.amount_out.toString()).toString(),d=R(f).mul(T?q:x).toString(),v=$.toString(),k=R(v).mul(T?q:x).toString(),w=R(Z).add(R(e)).div(10**(T?N:O)).toString(),a=R(w).mul(T?x:q).toString();return{amountIn:u?.amount_in.toString(),amountOut:u?.amount_out.toString(),depositAmount:f,borrowAmount:e,depositAmountUSD:d,borrowAmountUSD:s,flashLoanAmount:h,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,isFlashLoan:L,afterDepositAmount:v,afterBorrowAmount:w,afterDepositAmountUSD:k,afterBorrowAmountUSD:a}}}else{let C=R(z).div(t);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1598 ~ LeverageModules ~ netValue:",C.toString());let L=C.mul(c.abs()).div(T?x:q).mul(10**(T?N:O)).toDP(0,Ue.ROUND_UP);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1596 ~ LeverageModules ~ repayAmount:",L.toString());let h=await this.findRouters(P[0].reserve.coinType,S[0].reserve.coinType,L,!1,[p]),e=h?.amount_in.toString(),s=R(z).mul(y).toString(),u=R(s).lt(R(e));if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:2223 ~ LeverageModules ~ isFlashLoan:",u),u){console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1606 ~ LeverageModules ~ withdrawCtokenAmount:",e);let f=L.toString(),d=R(f).mul(T?x:q).toString(),v=e,k=R(v).mul(T?q:x).toString(),{clmmPoolCoinTypeA:w,clmmPoolCoinTypeB:a,clmmPool:_,clmmFeeTier:F}=await this.getFlashLoanPool(S[0].reserve.coinType,f.toString()),E=R($).sub(R(v).div(10**(T?O:N))).toString(),U=R(E).mul(T?q:x).toString(),W=R(Z).sub(R(f)).div(10**(T?N:O)).toString(),G=R(W).mul(T?x:q).toString();return{amountIn:h?.amount_in.toString(),amountOut:h?.amount_out.toString(),depositAmount:v,borrowAmount:f,depositAmountUSD:k,borrowAmountUSD:d,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,clmmFeeTier:F,withdrawCtokenAmount:e,isFlashLoan:u,clmmPoolCoinTypeA:w,clmmPoolCoinTypeB:a,afterDepositAmount:E,afterBorrowAmount:W,afterDepositAmountUSD:U,afterBorrowAmountUSD:G}}else{let d=(await this.findRouters(P[0].reserve.coinType,S[0].reserve.coinType,e,!0,[p]))?.amount_out.toString(),v=R(d).mul(T?x:q).toString(),k=e.toString(),w=R(k).mul(T?q:x).toString(),a=R($).sub(R(k).div(10**(T?O:N))).toString(),_=R(a).mul(T?q:x).toString(),F=R(Z).sub(R(d)).div(10**(T?N:O)).toString(),E=R(F).mul(T?x:q).toString();return{amountIn:h?.amount_in.toString(),amountOut:h?.amount_out.toString(),depositAmount:k,borrowAmount:d,depositAmountUSD:w,borrowAmountUSD:v,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,withdrawCtokenAmount:e,isFlashLoan:u,afterDepositAmount:a,afterBorrowAmount:F,afterDepositAmountUSD:_,afterBorrowAmountUSD:E}}}};this.getFlashLoanPool=async(i,r)=>{let o=await fetch(`https://api-sui.cetus.zone/v3/sui/margin_trading/pools?coin_type=${i}&min_amount=${r}`);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:2151 ~ LeverageModules ~ res:",o);let{data:t}=await o.json();return t&&t.length>0?{clmmPoolCoinTypeA:t[0].coin_type_a,clmmPoolCoinTypeB:t[0].coin_type_b,clmmPool:t[0].pool_id,clmmFeeTier:R(t[0].fee_rate).div(1e6).toString()}:{clmmPoolCoinTypeA:"",clmmPoolCoinTypeB:"",clmmPool:"",clmmFeeTier:""}};this.createMarginTradingContext=(i,r)=>{let{published_at:o}=this._sdk.sdkOptions.leverage,t=mt(),{marketId:l,positionCapId:p,action:c,coinType:g,amount:M}=i;return r.moveCall({target:`${o}::router::create_margin_trading_context`,arguments:[r.pure.string(t),r.object(l),r.object(p),r.pure.string(c),r.pure.string(g),r.pure.u64(M)],typeArguments:[]})};this.marginTradingContextConfirm=(i,r)=>{let{published_at:o}=this._sdk.sdkOptions.leverage;return r.moveCall({target:`${o}::router::confirm`,arguments:[i],typeArguments:[]}),r};this._sdk=i}async handleSwapLogic(i){let{isLong:r,isQuote:o,amount:t,baseToken:l,quoteToken:p,swapClmmPool:c="",slippage:g,tx:M}=i,b=r&&o||!r&&!o;console.log("\u{1F680}\u{1F680}\u{1F680} ~ LeverageModules ~ hasSwap:",b);let S,P,T=t.toString();if(b){let D=r&&o?p:l,O=r&&o?l:p,N=await this.findRouters(D,O,t,!0,[c]);if(T=N?.amount_out.toString(),N){let I=Y.buildCoinWithBalance(BigInt(t.toString()),D,M);P=await this.routerSwap({router:N.route_obj,slippage:g,inputCoin:I,txb:M}),S=P}}else S=Y.buildCoinWithBalance(BigInt(t.toString()),o?p:l,M);return{hasSwap:b,inputCoin:S,initDepositAmount:T}}async handleDebtSwapLogic(i){let{isLong:r,flashAmount:o,baseToken:t,quoteToken:l,swapClmmPool:p="",isFlashA:c,balanceA:g,balanceB:M,slippage:b,clmmPoolCoinTypeA:S,clmmPoolCoinTypeB:P,tx:T}=i,D=r?l:t,O=r?t:l,N=await this.findRouters(D,O,R(o),!0,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:311 ~ LeverageModules ~ debtRouters:",{debtRouters:N,debtFrom:D,debtTo:O,clmmPoolCoinTypeA:S,clmmPoolCoinTypeB:P});let I=R(N?.amount_out||0),x;return N&&(x=await this.routerSwap({router:N.route_obj,inputCoin:c?Y.fromBalance(g,S,T):Y.fromBalance(M,P,T),slippage:b,txb:T})),{debtFrom:D,debtTo:O,debtRouters:N,debtSwapAmountOut:I,debtSwapOutCoin:x}}async calculateFlashLoanParams(i){let{isLong:r,leverage:o,baseToken:t,quoteToken:l,initDepositAmount:p,reserve:c,baseTokenDecimal:g,quoteTokenDecimal:M,openFeeRate:b}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1403 ~ LeverageModules ~ calculateFlashLoanParams ~ params:",i),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1079 ~ LeverageModules ~ calculateFlashLoanParams ~ initDepositAmount:",p);let S=await this._sdk.SuiLendModule.getLatestPriceFeeds(c);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:587 ~ LeverageModules ~ calculateFlashLoanParams ~ priceUpdateData:",S,l,t);let P=S[yt(l)]?.price,T=S[yt(t)]?.price,D=r?R(T).div(R(P)).toString():R(P).div(R(T)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1057 ~ LeverageModules ~ calculateFlashLoanParams ~ rate:",{rate:D}),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1424 ~ LeverageModules ~ calculateFlashLoanParams ~ initDepositAmount:",p);let O=R(p).mul(1-b).mul(o-1).mul(D).div(10**(r?g:M)).mul(10**(r?M:g)).toDP(0,Ue.ROUND_UP).toString(),N=r?l:t;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1457 ~ LeverageModules ~ flashLoanCoin:",N),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1457 ~ LeverageModules ~ flashLoanCoin:",N);let{clmmPoolCoinTypeA:I,clmmFeeTier:x,clmmPool:q,clmmPoolCoinTypeB:j}=await this.getFlashLoanPool(N,O);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1094 ~ LeverageModules ~ calculateFlashLoanParams ~ flashAmount:",O,x,N);let z=I===N,$=R(O).mul(x).toString();return{flashAmount:O,rate:D,quotePrice:P,basePrice:T,flashLoanCoin:N,isFlashA:z,flashLoanFee:$,clmmPool:q,clmmPoolCoinTypeA:I,clmmPoolCoinTypeB:j,clmmFeeTier:x}}createLeveragePosition(i){console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1493 ~ LeverageModules ~ createLeveragePosition ~ params:",i);let{lendingMarketId:r,lendingMarketType:o}=ne(this._sdk.sdkOptions.suilend),{global_config_id:t,versioned:l}=ne(this._sdk.sdkOptions.leverage),p=this._sdk.sdkOptions.leverage,{leverage:c,marketId:g,baseToken:M,quoteToken:b,isLong:S,initDepositAmount:P,tx:T,initCoinType:D}=i,O=mt(),[N,I]=T.moveCall({target:`${p.published_at}::router::open_position`,arguments:[T.object(t),T.object(g),T.object(r),T.pure.u64(P),T.pure.string(D),T.pure.u64(R(c).mul(1e4).toString()),T.pure.string(O),T.object(pt),T.object(l)],typeArguments:[o,S?M:b]});return{positionCap:N,marginTradingContext:I}}async depositToLeveragePosition(i,r){console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:651 ~ LeverageModules ~ depositToLeveragePosition ~ params:",i);let{leverage:o}=this._sdk.sdkOptions,{lendingMarketType:t,lendingMarketId:l}=ne(this._sdk.sdkOptions.suilend),{isLong:p,marketId:c,positionCapId:g,positionCap:M,depositReserveArrayIndex:b,inputCoin:S,marginTradingContext:P}=i,{global_config_id:T,versioned:D}=ne(this._sdk.sdkOptions.leverage),{baseToken:O,quoteToken:N}=await this.getLeverageMarketInfo(c);return r.moveCall({target:`${o.published_at}::router::deposit`,typeArguments:[t,p?O:N],arguments:[P,r.object(T),r.object(l),r.object(c),g?r.object(g):M,S,r.pure.u64(b),r.object(pt),r.object(D)]}),r}async findRouters(i,r,o,t,l){let{providers:p}=this._sdk.sdkOptions;try{let c={from:i,target:r,amount:new Dr.default(o.toFixed(0).toString()),byAmountIn:t,depth:3,providers:p},g=await this._sdk.AggregatorClient.findRouters(c);if(g?.error?.code===10001)return{...g,is_exceed:g.insufficientLiquidity};if(g?.insufficientLiquidity)return{...g,is_exceed:g.insufficientLiquidity};if(!g?.paths||g?.paths?.length===0)throw Error("Aggregator no router");return{amount_in:g.amountIn.toString(),amount_out:g.amountOut.toString(),is_exceed:g.insufficientLiquidity,route_obj:g,byAmountIn:!0,originRes:g}}catch{try{if(l){let g=await this._sdk.AggregatorClient.swapInPools({from:i,target:r,amount:new Dr.default(o.toFixed(0).toString()),byAmountIn:t,pools:l});return g?{amount_in:g.routeData.amountIn.toString(),amount_out:g.routeData.amountOut.toString(),is_exceed:g.isExceed,route_obj:g.routeData,byAmountIn:!0,originRes:g}:null}return null}catch{return null}}}};import{AggregatorClient as lo,Env as Di}from"@cetusprotocol/aggregator-sdk";import{normalizeSuiAddress as uo}from"@mysten/sui/utils";import{SuiClient as fo}from"@mysten/sui/client";import{CetusClmmSDK as co}from"@cetusprotocol/sui-clmm-sdk";import{SuiPriceServiceConnection as ho}from"@pythnetwork/pyth-sui-js";import{CLOCK_ADDRESS as At,getPackagerConfigs as Qe}from"@cetusprotocol/common-sdk";import{Transaction as Ve}from"@mysten/sui/transactions";var Zt=class{constructor(i){this.queryGlobalPermissions=async()=>{let i=this._sdk.sdkOptions.leverage,{global_config_id:r}=Qe(i),o=await this._sdk.FullClient.getObject({id:r,options:{showContent:!0}});if(o){let t=o.data.content.fields.permissions.toString(2),{openPermissionsPause:l,closePermissionsPause:p,depositPermissionsPause:c,withdrawPermissionsPause:g,borrowPermissionsPause:M,repayPermissionsPause:b}=xr(t);return{openPermissionsPause:l,closePermissionsPause:p,depositPermissionsPause:c,withdrawPermissionsPause:g,borrowPermissionsPause:M,repayPermissionsPause:b}}};this.updateGlobalPermissions=async i=>{let r=new Ve;return this.updateGlobalOpenPositionPermissions(i,r),this.updateGlobalClosePositionPermissions(i,r),this.updateGlobalDepositPermissions(i,r),this.updateGlobalBorrowPermissions(i,r),this.updateGlobalWithdrawPermissions(i,r),this.updateGlobalRepayPermissions(i,r),r};this.updateGlobalOpenPositionPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_open_position_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalClosePositionPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_close_position_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalDepositPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_deposit_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalBorrowPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_borrow_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalWithdrawPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_withdraw_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalRepayPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_repay_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateMarketCreatePositionPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_open_position_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketClosePositionPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_close_position_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketDepositPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_deposit_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketWithdrawPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_withdraw_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketBorrowPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_borrow_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketRepayPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_repay_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketPermissions=async(i,r,o)=>{let t=o||new Ve;return this.updateMarketCreatePositionPermissions(i,r,t),this.updateMarketClosePositionPermissions(i,r,t),this.updateMarketDepositPermissions(i,r,t),this.updateMarketWithdrawPermissions(i,r,t),this.updateMarketBorrowPermissions(i,r,t),this.updateMarketRepayPermissions(i,r,t),t};this._sdk=i}};import{getPackagerConfigs as Wt}from"@cetusprotocol/common-sdk";import{Transaction as Ct}from"@mysten/sui/transactions";var zt=class{constructor(i){this.createMarket=async i=>{let{package_id:r}=this._sdk.sdkOptions.leverage,{versioned:o,admin_cap_id:t,markets:l,global_config_id:p}=Wt(this._sdk.sdkOptions.leverage),c=new Ct;return c.moveCall({target:`${r}::market::create_market`,arguments:[c.object(t),c.object(p),c.object(l),c.pure.u64(i.maxLongLeverage),c.pure.u64(i.maxShortLeverage),c.pure.u64(i.openFeeRate),c.pure.u64(i.closeFeeRate),c.object(o)],typeArguments:[i.baseToken,i.quoteToken]}),c};this.updateMarketMaxLeverage=async i=>{let{package_id:r}=this._sdk.sdkOptions.leverage,{versioned:o,admin_cap_id:t}=Wt(this._sdk.sdkOptions.leverage),{marketId:l,maxLongLeverage:p,maxShortLeverage:c}=i,g=new Ct;return g.moveCall({target:`${r}::market::set_max_leverage`,arguments:[g.object(t),g.object(l),g.pure.u64(p),g.pure.u64(c),g.object(o)],typeArguments:[]}),g};this.updateMarketFeeRate=async i=>{let{package_id:r}=this._sdk.sdkOptions.leverage,{versioned:o,admin_cap_id:t}=Wt(this._sdk.sdkOptions.leverage),{marketId:l,openFeeRate:p,closeFeeRate:c}=i,g=new Ct;return g.moveCall({target:`${r}::market::set_fee_rate`,arguments:[g.object(t),g.object(l),g.pure.u64(p),g.pure.u64(c),g.object(o)],typeArguments:[]}),g};this.claimMarketFees=async(i,r)=>{let{package_id:o}=this._sdk.sdkOptions.leverage,{versioned:t,admin_cap_id:l}=Wt(this._sdk.sdkOptions.leverage),p=r||new Ct,{baseToken:c,quoteToken:g}=await this._sdk.LeverageModules.getLeverageMarketInfo(i);return p.moveCall({target:`${o}::market::claim_fees`,arguments:[p.object(l),p.object(i),p.object(t)],typeArguments:[c,g]}),p};this.claimAllMarketFees=async i=>{let r=new Ct;for(let o=0;o<i.length;o++){let t=i[o];this.claimMarketFees(t,r)}return r};this._sdk=i}};var Kt=class n extends ao{constructor(i,r){super(i),this._suilendModule=new Ot(this),this._leverageModules=new $t(this),this._permissionModules=new Zt(this),this._marketModules=new zt(this),this._aggregatorClient=new lo({signer:uo("0x0"),client:i.sui_client||new fo({url:i.full_rpc_url}),env:i.env==="testnet"?Di.Testnet:Di.Mainnet,pythUrls:i.pyth_urls}),this._clmmSDK=r||co.createSDK({env:i.env,full_rpc_url:i.full_rpc_url}),this._pythConnection=new ho("https://hermes.pyth.network",{timeout:30*1e3})}get SuiLendModule(){return this._suilendModule}get LeverageModules(){return this._leverageModules}get AggregatorClient(){return this._aggregatorClient}get ClmmSDK(){return this._clmmSDK}get PythConnection(){return this._pythConnection}get PermissionModules(){return this._permissionModules}get MarketModules(){return this._marketModules}static createSDK(i){return n.createCustomSDK({...Vr,...i})}static createCustomSDK(i){return new n(i)}};var Gs=Kt;export{Kt as CetusLeverageSDK,Uo as appendExtraRewards,wr as calculateBorrowAprPercent,ei as calculateDepositAprPercent,Yr as calculateUtilizationPercent,Gs as default,Zo as formatLtvPercentValue,ti as getPriceWithFormattedDecimals,jo as getRewardsAprMultiplier,qo as getUpdatedReserve,Vr as leverage_mainnet,Tr as mergePositionData,vr as oraclePriceMultiplierDecimal,$o as updateRewardsWithMultiplier,Cr as wrapMarketInfo,xr as wrapMarketPermissions,Lr as wrapPosition};
1
+ var Oi=Object.create;var Hr=Object.defineProperty;var Ii=Object.getOwnPropertyDescriptor;var Ri=Object.getOwnPropertyNames;var Bi=Object.getPrototypeOf,Ni=Object.prototype.hasOwnProperty;var Ei=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(i,r)=>(typeof require<"u"?require:i)[r]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Fi=(n,i)=>()=>(i||n((i={exports:{}}).exports,i),i.exports);var Ui=(n,i,r,o)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of Ri(i))!Ni.call(n,t)&&t!==r&&Hr(n,t,{get:()=>i[t],enumerable:!(o=Ii(i,t))||o.enumerable});return n};var qi=(n,i,r)=>(r=n!=null?Oi(Bi(n)):{},Ui(i||!n||!n.__esModule?Hr(r,"default",{value:n,enumerable:!0}):r,n));var Mi=Fi((wi,Pr)=>{"use strict";(function(n,i){"use strict";function r(h,e){if(!h)throw new Error(e||"Assertion failed")}function o(h,e){h.super_=e;var s=function(){};s.prototype=e.prototype,h.prototype=new s,h.prototype.constructor=h}function t(h,e,s){if(t.isBN(h))return h;this.negative=0,this.words=null,this.length=0,this.red=null,h!==null&&((e==="le"||e==="be")&&(s=e,e=10),this._init(h||0,e||10,s||"be"))}typeof n=="object"?n.exports=t:i.BN=t,t.BN=t,t.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Ei("buffer").Buffer}catch{}t.isBN=function(e){return e instanceof t?!0:e!==null&&typeof e=="object"&&e.constructor.wordSize===t.wordSize&&Array.isArray(e.words)},t.max=function(e,s){return e.cmp(s)>0?e:s},t.min=function(e,s){return e.cmp(s)<0?e:s},t.prototype._init=function(e,s,u){if(typeof e=="number")return this._initNumber(e,s,u);if(typeof e=="object")return this._initArray(e,s,u);s==="hex"&&(s=16),r(s===(s|0)&&s>=2&&s<=36),e=e.toString().replace(/\s+/g,"");var f=0;e[0]==="-"&&(f++,this.negative=1),f<e.length&&(s===16?this._parseHex(e,f,u):(this._parseBase(e,s,f),u==="le"&&this._initArray(this.toArray(),s,u)))},t.prototype._initNumber=function(e,s,u){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[e&67108863],this.length=1):e<4503599627370496?(this.words=[e&67108863,e/67108864&67108863],this.length=2):(r(e<9007199254740992),this.words=[e&67108863,e/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),s,u)},t.prototype._initArray=function(e,s,u){if(r(typeof e.length=="number"),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var d,v,k=0;if(u==="be")for(f=e.length-1,d=0;f>=0;f-=3)v=e[f]|e[f-1]<<8|e[f-2]<<16,this.words[d]|=v<<k&67108863,this.words[d+1]=v>>>26-k&67108863,k+=24,k>=26&&(k-=26,d++);else if(u==="le")for(f=0,d=0;f<e.length;f+=3)v=e[f]|e[f+1]<<8|e[f+2]<<16,this.words[d]|=v<<k&67108863,this.words[d+1]=v>>>26-k&67108863,k+=24,k>=26&&(k-=26,d++);return this._strip()};function p(h,e){var s=h.charCodeAt(e);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;r(!1,"Invalid character in "+h)}function c(h,e,s){var u=p(h,s);return s-1>=e&&(u|=p(h,s-1)<<4),u}t.prototype._parseHex=function(e,s,u){this.length=Math.ceil((e.length-s)/6),this.words=new Array(this.length);for(var f=0;f<this.length;f++)this.words[f]=0;var d=0,v=0,k;if(u==="be")for(f=e.length-1;f>=s;f-=2)k=c(e,s,f)<<d,this.words[v]|=k&67108863,d>=18?(d-=18,v+=1,this.words[v]|=k>>>26):d+=8;else{var w=e.length-s;for(f=w%2===0?s+1:s;f<e.length;f+=2)k=c(e,s,f)<<d,this.words[v]|=k&67108863,d>=18?(d-=18,v+=1,this.words[v]|=k>>>26):d+=8}this._strip()};function g(h,e,s,u){for(var f=0,d=0,v=Math.min(h.length,s),k=e;k<v;k++){var w=h.charCodeAt(k)-48;f*=u,w>=49?d=w-49+10:w>=17?d=w-17+10:d=w,r(w>=0&&d<u,"Invalid character"),f+=d}return f}t.prototype._parseBase=function(e,s,u){this.words=[0],this.length=1;for(var f=0,d=1;d<=67108863;d*=s)f++;f--,d=d/s|0;for(var v=e.length-u,k=v%f,w=Math.min(v,v-k)+u,a=0,_=u;_<w;_+=f)a=g(e,_,_+f,s),this.imuln(d),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a);if(k!==0){var F=1;for(a=g(e,_,e.length,s),_=0;_<k;_++)F*=s;this.imuln(F),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a)}this._strip()},t.prototype.copy=function(e){e.words=new Array(this.length);for(var s=0;s<this.length;s++)e.words[s]=this.words[s];e.length=this.length,e.negative=this.negative,e.red=this.red};function M(h,e){h.words=e.words,h.length=e.length,h.negative=e.negative,h.red=e.red}if(t.prototype._move=function(e){M(e,this)},t.prototype.clone=function(){var e=new t(null);return this.copy(e),e},t.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},t.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},t.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{t.prototype[Symbol.for("nodejs.util.inspect.custom")]=b}catch{t.prototype.inspect=b}else t.prototype.inspect=b;function b(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var S=["","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"],P=[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],T=[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];t.prototype.toString=function(e,s){e=e||10,s=s|0||1;var u;if(e===16||e==="hex"){u="";for(var f=0,d=0,v=0;v<this.length;v++){var k=this.words[v],w=((k<<f|d)&16777215).toString(16);d=k>>>24-f&16777215,f+=2,f>=26&&(f-=26,v--),d!==0||v!==this.length-1?u=S[6-w.length]+w+u:u=w+u}for(d!==0&&(u=d.toString(16)+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(e===(e|0)&&e>=2&&e<=36){var a=P[e],_=T[e];u="";var F=this.clone();for(F.negative=0;!F.isZero();){var E=F.modrn(_).toString(e);F=F.idivn(_),F.isZero()?u=E+u:u=S[a-E.length]+E+u}for(this.isZero()&&(u="0"+u);u.length%s!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}r(!1,"Base should be between 2 and 36")},t.prototype.toNumber=function(){var e=this.words[0];return this.length===2?e+=this.words[1]*67108864:this.length===3&&this.words[2]===1?e+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-e:e},t.prototype.toJSON=function(){return this.toString(16,2)},l&&(t.prototype.toBuffer=function(e,s){return this.toArrayLike(l,e,s)}),t.prototype.toArray=function(e,s){return this.toArrayLike(Array,e,s)};var D=function(e,s){return e.allocUnsafe?e.allocUnsafe(s):new e(s)};t.prototype.toArrayLike=function(e,s,u){this._strip();var f=this.byteLength(),d=u||Math.max(1,f);r(f<=d,"byte array longer than desired length"),r(d>0,"Requested array length <= 0");var v=D(e,d),k=s==="le"?"LE":"BE";return this["_toArrayLike"+k](v,f),v},t.prototype._toArrayLikeLE=function(e,s){for(var u=0,f=0,d=0,v=0;d<this.length;d++){var k=this.words[d]<<v|f;e[u++]=k&255,u<e.length&&(e[u++]=k>>8&255),u<e.length&&(e[u++]=k>>16&255),v===6?(u<e.length&&(e[u++]=k>>24&255),f=0,v=0):(f=k>>>24,v+=2)}if(u<e.length)for(e[u++]=f;u<e.length;)e[u++]=0},t.prototype._toArrayLikeBE=function(e,s){for(var u=e.length-1,f=0,d=0,v=0;d<this.length;d++){var k=this.words[d]<<v|f;e[u--]=k&255,u>=0&&(e[u--]=k>>8&255),u>=0&&(e[u--]=k>>16&255),v===6?(u>=0&&(e[u--]=k>>24&255),f=0,v=0):(f=k>>>24,v+=2)}if(u>=0)for(e[u--]=f;u>=0;)e[u--]=0},Math.clz32?t.prototype._countBits=function(e){return 32-Math.clz32(e)}:t.prototype._countBits=function(e){var s=e,u=0;return s>=4096&&(u+=13,s>>>=13),s>=64&&(u+=7,s>>>=7),s>=8&&(u+=4,s>>>=4),s>=2&&(u+=2,s>>>=2),u+s},t.prototype._zeroBits=function(e){if(e===0)return 26;var s=e,u=0;return(s&8191)===0&&(u+=13,s>>>=13),(s&127)===0&&(u+=7,s>>>=7),(s&15)===0&&(u+=4,s>>>=4),(s&3)===0&&(u+=2,s>>>=2),(s&1)===0&&u++,u},t.prototype.bitLength=function(){var e=this.words[this.length-1],s=this._countBits(e);return(this.length-1)*26+s};function O(h){for(var e=new Array(h.bitLength()),s=0;s<e.length;s++){var u=s/26|0,f=s%26;e[s]=h.words[u]>>>f&1}return e}t.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,s=0;s<this.length;s++){var u=this._zeroBits(this.words[s]);if(e+=u,u!==26)break}return e},t.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},t.prototype.toTwos=function(e){return this.negative!==0?this.abs().inotn(e).iaddn(1):this.clone()},t.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},t.prototype.isNeg=function(){return this.negative!==0},t.prototype.neg=function(){return this.clone().ineg()},t.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},t.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var s=0;s<e.length;s++)this.words[s]=this.words[s]|e.words[s];return this._strip()},t.prototype.ior=function(e){return r((this.negative|e.negative)===0),this.iuor(e)},t.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},t.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},t.prototype.iuand=function(e){var s;this.length>e.length?s=e:s=this;for(var u=0;u<s.length;u++)this.words[u]=this.words[u]&e.words[u];return this.length=s.length,this._strip()},t.prototype.iand=function(e){return r((this.negative|e.negative)===0),this.iuand(e)},t.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},t.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},t.prototype.iuxor=function(e){var s,u;this.length>e.length?(s=this,u=e):(s=e,u=this);for(var f=0;f<u.length;f++)this.words[f]=s.words[f]^u.words[f];if(this!==s)for(;f<s.length;f++)this.words[f]=s.words[f];return this.length=s.length,this._strip()},t.prototype.ixor=function(e){return r((this.negative|e.negative)===0),this.iuxor(e)},t.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},t.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},t.prototype.inotn=function(e){r(typeof e=="number"&&e>=0);var s=Math.ceil(e/26)|0,u=e%26;this._expand(s),u>0&&s--;for(var f=0;f<s;f++)this.words[f]=~this.words[f]&67108863;return u>0&&(this.words[f]=~this.words[f]&67108863>>26-u),this._strip()},t.prototype.notn=function(e){return this.clone().inotn(e)},t.prototype.setn=function(e,s){r(typeof e=="number"&&e>=0);var u=e/26|0,f=e%26;return this._expand(u+1),s?this.words[u]=this.words[u]|1<<f:this.words[u]=this.words[u]&~(1<<f),this._strip()},t.prototype.iadd=function(e){var s;if(this.negative!==0&&e.negative===0)return this.negative=0,s=this.isub(e),this.negative^=1,this._normSign();if(this.negative===0&&e.negative!==0)return e.negative=0,s=this.isub(e),e.negative=1,s._normSign();var u,f;this.length>e.length?(u=this,f=e):(u=e,f=this);for(var d=0,v=0;v<f.length;v++)s=(u.words[v]|0)+(f.words[v]|0)+d,this.words[v]=s&67108863,d=s>>>26;for(;d!==0&&v<u.length;v++)s=(u.words[v]|0)+d,this.words[v]=s&67108863,d=s>>>26;if(this.length=u.length,d!==0)this.words[this.length]=d,this.length++;else if(u!==this)for(;v<u.length;v++)this.words[v]=u.words[v];return this},t.prototype.add=function(e){var s;return e.negative!==0&&this.negative===0?(e.negative=0,s=this.sub(e),e.negative^=1,s):e.negative===0&&this.negative!==0?(this.negative=0,s=e.sub(this),this.negative=1,s):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},t.prototype.isub=function(e){if(e.negative!==0){e.negative=0;var s=this.iadd(e);return e.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var u=this.cmp(e);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var f,d;u>0?(f=this,d=e):(f=e,d=this);for(var v=0,k=0;k<d.length;k++)s=(f.words[k]|0)-(d.words[k]|0)+v,v=s>>26,this.words[k]=s&67108863;for(;v!==0&&k<f.length;k++)s=(f.words[k]|0)+v,v=s>>26,this.words[k]=s&67108863;if(v===0&&k<f.length&&f!==this)for(;k<f.length;k++)this.words[k]=f.words[k];return this.length=Math.max(this.length,k),f!==this&&(this.negative=1),this._strip()},t.prototype.sub=function(e){return this.clone().isub(e)};function N(h,e,s){s.negative=e.negative^h.negative;var u=h.length+e.length|0;s.length=u,u=u-1|0;var f=h.words[0]|0,d=e.words[0]|0,v=f*d,k=v&67108863,w=v/67108864|0;s.words[0]=k;for(var a=1;a<u;a++){for(var _=w>>>26,F=w&67108863,E=Math.min(a,e.length-1),U=Math.max(0,a-h.length+1);U<=E;U++){var W=a-U|0;f=h.words[W]|0,d=e.words[U]|0,v=f*d+F,_+=v/67108864|0,F=v&67108863}s.words[a]=F|0,w=_|0}return w!==0?s.words[a]=w|0:s.length--,s._strip()}var I=function(e,s,u){var f=e.words,d=s.words,v=u.words,k=0,w,a,_,F=f[0]|0,E=F&8191,U=F>>>13,W=f[1]|0,G=W&8191,te=W>>>13,Ze=f[2]|0,J=Ze&8191,re=Ze>>>13,Ke=f[3]|0,ee=Ke&8191,Q=Ke>>>13,Or=f[4]|0,se=Or&8191,ae=Or>>>13,Ir=f[5]|0,le=Ir&8191,ue=Ir>>>13,Rr=f[6]|0,fe=Rr&8191,ce=Rr>>>13,Br=f[7]|0,de=Br&8191,he=Br>>>13,Nr=f[8]|0,pe=Nr&8191,ge=Nr>>>13,Er=f[9]|0,me=Er&8191,ve=Er>>>13,Fr=d[0]|0,we=Fr&8191,Me=Fr>>>13,Ur=d[1]|0,be=Ur&8191,ye=Ur>>>13,qr=d[2]|0,_e=qr&8191,ke=qr>>>13,jr=d[3]|0,Ae=jr&8191,Se=jr>>>13,$r=d[4]|0,Pe=$r&8191,Ce=$r>>>13,Zr=d[5]|0,Le=Zr&8191,Te=Zr>>>13,Wr=d[6]|0,xe=Wr&8191,De=Wr>>>13,zr=d[7]|0,Oe=zr&8191,Ie=zr>>>13,Kr=d[8]|0,Re=Kr&8191,Be=Kr>>>13,Gr=d[9]|0,Ne=Gr&8191,Ee=Gr>>>13;u.negative=e.negative^s.negative,u.length=19,w=Math.imul(E,we),a=Math.imul(E,Me),a=a+Math.imul(U,we)|0,_=Math.imul(U,Me);var Gt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,w=Math.imul(G,we),a=Math.imul(G,Me),a=a+Math.imul(te,we)|0,_=Math.imul(te,Me),w=w+Math.imul(E,be)|0,a=a+Math.imul(E,ye)|0,a=a+Math.imul(U,be)|0,_=_+Math.imul(U,ye)|0;var Ht=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,w=Math.imul(J,we),a=Math.imul(J,Me),a=a+Math.imul(re,we)|0,_=Math.imul(re,Me),w=w+Math.imul(G,be)|0,a=a+Math.imul(G,ye)|0,a=a+Math.imul(te,be)|0,_=_+Math.imul(te,ye)|0,w=w+Math.imul(E,_e)|0,a=a+Math.imul(E,ke)|0,a=a+Math.imul(U,_e)|0,_=_+Math.imul(U,ke)|0;var Vt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,w=Math.imul(ee,we),a=Math.imul(ee,Me),a=a+Math.imul(Q,we)|0,_=Math.imul(Q,Me),w=w+Math.imul(J,be)|0,a=a+Math.imul(J,ye)|0,a=a+Math.imul(re,be)|0,_=_+Math.imul(re,ye)|0,w=w+Math.imul(G,_e)|0,a=a+Math.imul(G,ke)|0,a=a+Math.imul(te,_e)|0,_=_+Math.imul(te,ke)|0,w=w+Math.imul(E,Ae)|0,a=a+Math.imul(E,Se)|0,a=a+Math.imul(U,Ae)|0,_=_+Math.imul(U,Se)|0;var Qt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,w=Math.imul(se,we),a=Math.imul(se,Me),a=a+Math.imul(ae,we)|0,_=Math.imul(ae,Me),w=w+Math.imul(ee,be)|0,a=a+Math.imul(ee,ye)|0,a=a+Math.imul(Q,be)|0,_=_+Math.imul(Q,ye)|0,w=w+Math.imul(J,_e)|0,a=a+Math.imul(J,ke)|0,a=a+Math.imul(re,_e)|0,_=_+Math.imul(re,ke)|0,w=w+Math.imul(G,Ae)|0,a=a+Math.imul(G,Se)|0,a=a+Math.imul(te,Ae)|0,_=_+Math.imul(te,Se)|0,w=w+Math.imul(E,Pe)|0,a=a+Math.imul(E,Ce)|0,a=a+Math.imul(U,Pe)|0,_=_+Math.imul(U,Ce)|0;var Xt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,w=Math.imul(le,we),a=Math.imul(le,Me),a=a+Math.imul(ue,we)|0,_=Math.imul(ue,Me),w=w+Math.imul(se,be)|0,a=a+Math.imul(se,ye)|0,a=a+Math.imul(ae,be)|0,_=_+Math.imul(ae,ye)|0,w=w+Math.imul(ee,_e)|0,a=a+Math.imul(ee,ke)|0,a=a+Math.imul(Q,_e)|0,_=_+Math.imul(Q,ke)|0,w=w+Math.imul(J,Ae)|0,a=a+Math.imul(J,Se)|0,a=a+Math.imul(re,Ae)|0,_=_+Math.imul(re,Se)|0,w=w+Math.imul(G,Pe)|0,a=a+Math.imul(G,Ce)|0,a=a+Math.imul(te,Pe)|0,_=_+Math.imul(te,Ce)|0,w=w+Math.imul(E,Le)|0,a=a+Math.imul(E,Te)|0,a=a+Math.imul(U,Le)|0,_=_+Math.imul(U,Te)|0;var Jt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,w=Math.imul(fe,we),a=Math.imul(fe,Me),a=a+Math.imul(ce,we)|0,_=Math.imul(ce,Me),w=w+Math.imul(le,be)|0,a=a+Math.imul(le,ye)|0,a=a+Math.imul(ue,be)|0,_=_+Math.imul(ue,ye)|0,w=w+Math.imul(se,_e)|0,a=a+Math.imul(se,ke)|0,a=a+Math.imul(ae,_e)|0,_=_+Math.imul(ae,ke)|0,w=w+Math.imul(ee,Ae)|0,a=a+Math.imul(ee,Se)|0,a=a+Math.imul(Q,Ae)|0,_=_+Math.imul(Q,Se)|0,w=w+Math.imul(J,Pe)|0,a=a+Math.imul(J,Ce)|0,a=a+Math.imul(re,Pe)|0,_=_+Math.imul(re,Ce)|0,w=w+Math.imul(G,Le)|0,a=a+Math.imul(G,Te)|0,a=a+Math.imul(te,Le)|0,_=_+Math.imul(te,Te)|0,w=w+Math.imul(E,xe)|0,a=a+Math.imul(E,De)|0,a=a+Math.imul(U,xe)|0,_=_+Math.imul(U,De)|0;var Yt=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,w=Math.imul(de,we),a=Math.imul(de,Me),a=a+Math.imul(he,we)|0,_=Math.imul(he,Me),w=w+Math.imul(fe,be)|0,a=a+Math.imul(fe,ye)|0,a=a+Math.imul(ce,be)|0,_=_+Math.imul(ce,ye)|0,w=w+Math.imul(le,_e)|0,a=a+Math.imul(le,ke)|0,a=a+Math.imul(ue,_e)|0,_=_+Math.imul(ue,ke)|0,w=w+Math.imul(se,Ae)|0,a=a+Math.imul(se,Se)|0,a=a+Math.imul(ae,Ae)|0,_=_+Math.imul(ae,Se)|0,w=w+Math.imul(ee,Pe)|0,a=a+Math.imul(ee,Ce)|0,a=a+Math.imul(Q,Pe)|0,_=_+Math.imul(Q,Ce)|0,w=w+Math.imul(J,Le)|0,a=a+Math.imul(J,Te)|0,a=a+Math.imul(re,Le)|0,_=_+Math.imul(re,Te)|0,w=w+Math.imul(G,xe)|0,a=a+Math.imul(G,De)|0,a=a+Math.imul(te,xe)|0,_=_+Math.imul(te,De)|0,w=w+Math.imul(E,Oe)|0,a=a+Math.imul(E,Ie)|0,a=a+Math.imul(U,Oe)|0,_=_+Math.imul(U,Ie)|0;var er=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(er>>>26)|0,er&=67108863,w=Math.imul(pe,we),a=Math.imul(pe,Me),a=a+Math.imul(ge,we)|0,_=Math.imul(ge,Me),w=w+Math.imul(de,be)|0,a=a+Math.imul(de,ye)|0,a=a+Math.imul(he,be)|0,_=_+Math.imul(he,ye)|0,w=w+Math.imul(fe,_e)|0,a=a+Math.imul(fe,ke)|0,a=a+Math.imul(ce,_e)|0,_=_+Math.imul(ce,ke)|0,w=w+Math.imul(le,Ae)|0,a=a+Math.imul(le,Se)|0,a=a+Math.imul(ue,Ae)|0,_=_+Math.imul(ue,Se)|0,w=w+Math.imul(se,Pe)|0,a=a+Math.imul(se,Ce)|0,a=a+Math.imul(ae,Pe)|0,_=_+Math.imul(ae,Ce)|0,w=w+Math.imul(ee,Le)|0,a=a+Math.imul(ee,Te)|0,a=a+Math.imul(Q,Le)|0,_=_+Math.imul(Q,Te)|0,w=w+Math.imul(J,xe)|0,a=a+Math.imul(J,De)|0,a=a+Math.imul(re,xe)|0,_=_+Math.imul(re,De)|0,w=w+Math.imul(G,Oe)|0,a=a+Math.imul(G,Ie)|0,a=a+Math.imul(te,Oe)|0,_=_+Math.imul(te,Ie)|0,w=w+Math.imul(E,Re)|0,a=a+Math.imul(E,Be)|0,a=a+Math.imul(U,Re)|0,_=_+Math.imul(U,Be)|0;var tr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(tr>>>26)|0,tr&=67108863,w=Math.imul(me,we),a=Math.imul(me,Me),a=a+Math.imul(ve,we)|0,_=Math.imul(ve,Me),w=w+Math.imul(pe,be)|0,a=a+Math.imul(pe,ye)|0,a=a+Math.imul(ge,be)|0,_=_+Math.imul(ge,ye)|0,w=w+Math.imul(de,_e)|0,a=a+Math.imul(de,ke)|0,a=a+Math.imul(he,_e)|0,_=_+Math.imul(he,ke)|0,w=w+Math.imul(fe,Ae)|0,a=a+Math.imul(fe,Se)|0,a=a+Math.imul(ce,Ae)|0,_=_+Math.imul(ce,Se)|0,w=w+Math.imul(le,Pe)|0,a=a+Math.imul(le,Ce)|0,a=a+Math.imul(ue,Pe)|0,_=_+Math.imul(ue,Ce)|0,w=w+Math.imul(se,Le)|0,a=a+Math.imul(se,Te)|0,a=a+Math.imul(ae,Le)|0,_=_+Math.imul(ae,Te)|0,w=w+Math.imul(ee,xe)|0,a=a+Math.imul(ee,De)|0,a=a+Math.imul(Q,xe)|0,_=_+Math.imul(Q,De)|0,w=w+Math.imul(J,Oe)|0,a=a+Math.imul(J,Ie)|0,a=a+Math.imul(re,Oe)|0,_=_+Math.imul(re,Ie)|0,w=w+Math.imul(G,Re)|0,a=a+Math.imul(G,Be)|0,a=a+Math.imul(te,Re)|0,_=_+Math.imul(te,Be)|0,w=w+Math.imul(E,Ne)|0,a=a+Math.imul(E,Ee)|0,a=a+Math.imul(U,Ne)|0,_=_+Math.imul(U,Ee)|0;var rr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(rr>>>26)|0,rr&=67108863,w=Math.imul(me,be),a=Math.imul(me,ye),a=a+Math.imul(ve,be)|0,_=Math.imul(ve,ye),w=w+Math.imul(pe,_e)|0,a=a+Math.imul(pe,ke)|0,a=a+Math.imul(ge,_e)|0,_=_+Math.imul(ge,ke)|0,w=w+Math.imul(de,Ae)|0,a=a+Math.imul(de,Se)|0,a=a+Math.imul(he,Ae)|0,_=_+Math.imul(he,Se)|0,w=w+Math.imul(fe,Pe)|0,a=a+Math.imul(fe,Ce)|0,a=a+Math.imul(ce,Pe)|0,_=_+Math.imul(ce,Ce)|0,w=w+Math.imul(le,Le)|0,a=a+Math.imul(le,Te)|0,a=a+Math.imul(ue,Le)|0,_=_+Math.imul(ue,Te)|0,w=w+Math.imul(se,xe)|0,a=a+Math.imul(se,De)|0,a=a+Math.imul(ae,xe)|0,_=_+Math.imul(ae,De)|0,w=w+Math.imul(ee,Oe)|0,a=a+Math.imul(ee,Ie)|0,a=a+Math.imul(Q,Oe)|0,_=_+Math.imul(Q,Ie)|0,w=w+Math.imul(J,Re)|0,a=a+Math.imul(J,Be)|0,a=a+Math.imul(re,Re)|0,_=_+Math.imul(re,Be)|0,w=w+Math.imul(G,Ne)|0,a=a+Math.imul(G,Ee)|0,a=a+Math.imul(te,Ne)|0,_=_+Math.imul(te,Ee)|0;var ir=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(ir>>>26)|0,ir&=67108863,w=Math.imul(me,_e),a=Math.imul(me,ke),a=a+Math.imul(ve,_e)|0,_=Math.imul(ve,ke),w=w+Math.imul(pe,Ae)|0,a=a+Math.imul(pe,Se)|0,a=a+Math.imul(ge,Ae)|0,_=_+Math.imul(ge,Se)|0,w=w+Math.imul(de,Pe)|0,a=a+Math.imul(de,Ce)|0,a=a+Math.imul(he,Pe)|0,_=_+Math.imul(he,Ce)|0,w=w+Math.imul(fe,Le)|0,a=a+Math.imul(fe,Te)|0,a=a+Math.imul(ce,Le)|0,_=_+Math.imul(ce,Te)|0,w=w+Math.imul(le,xe)|0,a=a+Math.imul(le,De)|0,a=a+Math.imul(ue,xe)|0,_=_+Math.imul(ue,De)|0,w=w+Math.imul(se,Oe)|0,a=a+Math.imul(se,Ie)|0,a=a+Math.imul(ae,Oe)|0,_=_+Math.imul(ae,Ie)|0,w=w+Math.imul(ee,Re)|0,a=a+Math.imul(ee,Be)|0,a=a+Math.imul(Q,Re)|0,_=_+Math.imul(Q,Be)|0,w=w+Math.imul(J,Ne)|0,a=a+Math.imul(J,Ee)|0,a=a+Math.imul(re,Ne)|0,_=_+Math.imul(re,Ee)|0;var nr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(nr>>>26)|0,nr&=67108863,w=Math.imul(me,Ae),a=Math.imul(me,Se),a=a+Math.imul(ve,Ae)|0,_=Math.imul(ve,Se),w=w+Math.imul(pe,Pe)|0,a=a+Math.imul(pe,Ce)|0,a=a+Math.imul(ge,Pe)|0,_=_+Math.imul(ge,Ce)|0,w=w+Math.imul(de,Le)|0,a=a+Math.imul(de,Te)|0,a=a+Math.imul(he,Le)|0,_=_+Math.imul(he,Te)|0,w=w+Math.imul(fe,xe)|0,a=a+Math.imul(fe,De)|0,a=a+Math.imul(ce,xe)|0,_=_+Math.imul(ce,De)|0,w=w+Math.imul(le,Oe)|0,a=a+Math.imul(le,Ie)|0,a=a+Math.imul(ue,Oe)|0,_=_+Math.imul(ue,Ie)|0,w=w+Math.imul(se,Re)|0,a=a+Math.imul(se,Be)|0,a=a+Math.imul(ae,Re)|0,_=_+Math.imul(ae,Be)|0,w=w+Math.imul(ee,Ne)|0,a=a+Math.imul(ee,Ee)|0,a=a+Math.imul(Q,Ne)|0,_=_+Math.imul(Q,Ee)|0;var or=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(or>>>26)|0,or&=67108863,w=Math.imul(me,Pe),a=Math.imul(me,Ce),a=a+Math.imul(ve,Pe)|0,_=Math.imul(ve,Ce),w=w+Math.imul(pe,Le)|0,a=a+Math.imul(pe,Te)|0,a=a+Math.imul(ge,Le)|0,_=_+Math.imul(ge,Te)|0,w=w+Math.imul(de,xe)|0,a=a+Math.imul(de,De)|0,a=a+Math.imul(he,xe)|0,_=_+Math.imul(he,De)|0,w=w+Math.imul(fe,Oe)|0,a=a+Math.imul(fe,Ie)|0,a=a+Math.imul(ce,Oe)|0,_=_+Math.imul(ce,Ie)|0,w=w+Math.imul(le,Re)|0,a=a+Math.imul(le,Be)|0,a=a+Math.imul(ue,Re)|0,_=_+Math.imul(ue,Be)|0,w=w+Math.imul(se,Ne)|0,a=a+Math.imul(se,Ee)|0,a=a+Math.imul(ae,Ne)|0,_=_+Math.imul(ae,Ee)|0;var sr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(sr>>>26)|0,sr&=67108863,w=Math.imul(me,Le),a=Math.imul(me,Te),a=a+Math.imul(ve,Le)|0,_=Math.imul(ve,Te),w=w+Math.imul(pe,xe)|0,a=a+Math.imul(pe,De)|0,a=a+Math.imul(ge,xe)|0,_=_+Math.imul(ge,De)|0,w=w+Math.imul(de,Oe)|0,a=a+Math.imul(de,Ie)|0,a=a+Math.imul(he,Oe)|0,_=_+Math.imul(he,Ie)|0,w=w+Math.imul(fe,Re)|0,a=a+Math.imul(fe,Be)|0,a=a+Math.imul(ce,Re)|0,_=_+Math.imul(ce,Be)|0,w=w+Math.imul(le,Ne)|0,a=a+Math.imul(le,Ee)|0,a=a+Math.imul(ue,Ne)|0,_=_+Math.imul(ue,Ee)|0;var ar=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(ar>>>26)|0,ar&=67108863,w=Math.imul(me,xe),a=Math.imul(me,De),a=a+Math.imul(ve,xe)|0,_=Math.imul(ve,De),w=w+Math.imul(pe,Oe)|0,a=a+Math.imul(pe,Ie)|0,a=a+Math.imul(ge,Oe)|0,_=_+Math.imul(ge,Ie)|0,w=w+Math.imul(de,Re)|0,a=a+Math.imul(de,Be)|0,a=a+Math.imul(he,Re)|0,_=_+Math.imul(he,Be)|0,w=w+Math.imul(fe,Ne)|0,a=a+Math.imul(fe,Ee)|0,a=a+Math.imul(ce,Ne)|0,_=_+Math.imul(ce,Ee)|0;var lr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(lr>>>26)|0,lr&=67108863,w=Math.imul(me,Oe),a=Math.imul(me,Ie),a=a+Math.imul(ve,Oe)|0,_=Math.imul(ve,Ie),w=w+Math.imul(pe,Re)|0,a=a+Math.imul(pe,Be)|0,a=a+Math.imul(ge,Re)|0,_=_+Math.imul(ge,Be)|0,w=w+Math.imul(de,Ne)|0,a=a+Math.imul(de,Ee)|0,a=a+Math.imul(he,Ne)|0,_=_+Math.imul(he,Ee)|0;var ur=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(ur>>>26)|0,ur&=67108863,w=Math.imul(me,Re),a=Math.imul(me,Be),a=a+Math.imul(ve,Re)|0,_=Math.imul(ve,Be),w=w+Math.imul(pe,Ne)|0,a=a+Math.imul(pe,Ee)|0,a=a+Math.imul(ge,Ne)|0,_=_+Math.imul(ge,Ee)|0;var fr=(k+w|0)+((a&8191)<<13)|0;k=(_+(a>>>13)|0)+(fr>>>26)|0,fr&=67108863,w=Math.imul(me,Ne),a=Math.imul(me,Ee),a=a+Math.imul(ve,Ne)|0,_=Math.imul(ve,Ee);var cr=(k+w|0)+((a&8191)<<13)|0;return k=(_+(a>>>13)|0)+(cr>>>26)|0,cr&=67108863,v[0]=Gt,v[1]=Ht,v[2]=Vt,v[3]=Qt,v[4]=Xt,v[5]=Jt,v[6]=Yt,v[7]=er,v[8]=tr,v[9]=rr,v[10]=ir,v[11]=nr,v[12]=or,v[13]=sr,v[14]=ar,v[15]=lr,v[16]=ur,v[17]=fr,v[18]=cr,k!==0&&(v[19]=k,u.length++),u};Math.imul||(I=N);function x(h,e,s){s.negative=e.negative^h.negative,s.length=h.length+e.length;for(var u=0,f=0,d=0;d<s.length-1;d++){var v=f;f=0;for(var k=u&67108863,w=Math.min(d,e.length-1),a=Math.max(0,d-h.length+1);a<=w;a++){var _=d-a,F=h.words[_]|0,E=e.words[a]|0,U=F*E,W=U&67108863;v=v+(U/67108864|0)|0,W=W+k|0,k=W&67108863,v=v+(W>>>26)|0,f+=v>>>26,v&=67108863}s.words[d]=k,u=v,v=f}return u!==0?s.words[d]=u:s.length--,s._strip()}function q(h,e,s){return x(h,e,s)}t.prototype.mulTo=function(e,s){var u,f=this.length+e.length;return this.length===10&&e.length===10?u=I(this,e,s):f<63?u=N(this,e,s):f<1024?u=x(this,e,s):u=q(this,e,s),u};function j(h,e){this.x=h,this.y=e}j.prototype.makeRBT=function(e){for(var s=new Array(e),u=t.prototype._countBits(e)-1,f=0;f<e;f++)s[f]=this.revBin(f,u,e);return s},j.prototype.revBin=function(e,s,u){if(e===0||e===u-1)return e;for(var f=0,d=0;d<s;d++)f|=(e&1)<<s-d-1,e>>=1;return f},j.prototype.permute=function(e,s,u,f,d,v){for(var k=0;k<v;k++)f[k]=s[e[k]],d[k]=u[e[k]]},j.prototype.transform=function(e,s,u,f,d,v){this.permute(v,e,s,u,f,d);for(var k=1;k<d;k<<=1)for(var w=k<<1,a=Math.cos(2*Math.PI/w),_=Math.sin(2*Math.PI/w),F=0;F<d;F+=w)for(var E=a,U=_,W=0;W<k;W++){var G=u[F+W],te=f[F+W],Ze=u[F+W+k],J=f[F+W+k],re=E*Ze-U*J;J=E*J+U*Ze,Ze=re,u[F+W]=G+Ze,f[F+W]=te+J,u[F+W+k]=G-Ze,f[F+W+k]=te-J,W!==w&&(re=a*E-_*U,U=a*U+_*E,E=re)}},j.prototype.guessLen13b=function(e,s){var u=Math.max(s,e)|1,f=u&1,d=0;for(u=u/2|0;u;u=u>>>1)d++;return 1<<d+1+f},j.prototype.conjugate=function(e,s,u){if(!(u<=1))for(var f=0;f<u/2;f++){var d=e[f];e[f]=e[u-f-1],e[u-f-1]=d,d=s[f],s[f]=-s[u-f-1],s[u-f-1]=-d}},j.prototype.normalize13b=function(e,s){for(var u=0,f=0;f<s/2;f++){var d=Math.round(e[2*f+1]/s)*8192+Math.round(e[2*f]/s)+u;e[f]=d&67108863,d<67108864?u=0:u=d/67108864|0}return e},j.prototype.convert13b=function(e,s,u,f){for(var d=0,v=0;v<s;v++)d=d+(e[v]|0),u[2*v]=d&8191,d=d>>>13,u[2*v+1]=d&8191,d=d>>>13;for(v=2*s;v<f;++v)u[v]=0;r(d===0),r((d&-8192)===0)},j.prototype.stub=function(e){for(var s=new Array(e),u=0;u<e;u++)s[u]=0;return s},j.prototype.mulp=function(e,s,u){var f=2*this.guessLen13b(e.length,s.length),d=this.makeRBT(f),v=this.stub(f),k=new Array(f),w=new Array(f),a=new Array(f),_=new Array(f),F=new Array(f),E=new Array(f),U=u.words;U.length=f,this.convert13b(e.words,e.length,k,f),this.convert13b(s.words,s.length,_,f),this.transform(k,v,w,a,f,d),this.transform(_,v,F,E,f,d);for(var W=0;W<f;W++){var G=w[W]*F[W]-a[W]*E[W];a[W]=w[W]*E[W]+a[W]*F[W],w[W]=G}return this.conjugate(w,a,f),this.transform(w,a,U,v,f,d),this.conjugate(U,v,f),this.normalize13b(U,f),u.negative=e.negative^s.negative,u.length=e.length+s.length,u._strip()},t.prototype.mul=function(e){var s=new t(null);return s.words=new Array(this.length+e.length),this.mulTo(e,s)},t.prototype.mulf=function(e){var s=new t(null);return s.words=new Array(this.length+e.length),q(this,e,s)},t.prototype.imul=function(e){return this.clone().mulTo(e,this)},t.prototype.imuln=function(e){var s=e<0;s&&(e=-e),r(typeof e=="number"),r(e<67108864);for(var u=0,f=0;f<this.length;f++){var d=(this.words[f]|0)*e,v=(d&67108863)+(u&67108863);u>>=26,u+=d/67108864|0,u+=v>>>26,this.words[f]=v&67108863}return u!==0&&(this.words[f]=u,this.length++),this.length=e===0?1:this.length,s?this.ineg():this},t.prototype.muln=function(e){return this.clone().imuln(e)},t.prototype.sqr=function(){return this.mul(this)},t.prototype.isqr=function(){return this.imul(this.clone())},t.prototype.pow=function(e){var s=O(e);if(s.length===0)return new t(1);for(var u=this,f=0;f<s.length&&s[f]===0;f++,u=u.sqr());if(++f<s.length)for(var d=u.sqr();f<s.length;f++,d=d.sqr())s[f]!==0&&(u=u.mul(d));return u},t.prototype.iushln=function(e){r(typeof e=="number"&&e>=0);var s=e%26,u=(e-s)/26,f=67108863>>>26-s<<26-s,d;if(s!==0){var v=0;for(d=0;d<this.length;d++){var k=this.words[d]&f,w=(this.words[d]|0)-k<<s;this.words[d]=w|v,v=k>>>26-s}v&&(this.words[d]=v,this.length++)}if(u!==0){for(d=this.length-1;d>=0;d--)this.words[d+u]=this.words[d];for(d=0;d<u;d++)this.words[d]=0;this.length+=u}return this._strip()},t.prototype.ishln=function(e){return r(this.negative===0),this.iushln(e)},t.prototype.iushrn=function(e,s,u){r(typeof e=="number"&&e>=0);var f;s?f=(s-s%26)/26:f=0;var d=e%26,v=Math.min((e-d)/26,this.length),k=67108863^67108863>>>d<<d,w=u;if(f-=v,f=Math.max(0,f),w){for(var a=0;a<v;a++)w.words[a]=this.words[a];w.length=v}if(v!==0)if(this.length>v)for(this.length-=v,a=0;a<this.length;a++)this.words[a]=this.words[a+v];else this.words[0]=0,this.length=1;var _=0;for(a=this.length-1;a>=0&&(_!==0||a>=f);a--){var F=this.words[a]|0;this.words[a]=_<<26-d|F>>>d,_=F&k}return w&&_!==0&&(w.words[w.length++]=_),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},t.prototype.ishrn=function(e,s,u){return r(this.negative===0),this.iushrn(e,s,u)},t.prototype.shln=function(e){return this.clone().ishln(e)},t.prototype.ushln=function(e){return this.clone().iushln(e)},t.prototype.shrn=function(e){return this.clone().ishrn(e)},t.prototype.ushrn=function(e){return this.clone().iushrn(e)},t.prototype.testn=function(e){r(typeof e=="number"&&e>=0);var s=e%26,u=(e-s)/26,f=1<<s;if(this.length<=u)return!1;var d=this.words[u];return!!(d&f)},t.prototype.imaskn=function(e){r(typeof e=="number"&&e>=0);var s=e%26,u=(e-s)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(s!==0&&u++,this.length=Math.min(u,this.length),s!==0){var f=67108863^67108863>>>s<<s;this.words[this.length-1]&=f}return this._strip()},t.prototype.maskn=function(e){return this.clone().imaskn(e)},t.prototype.iaddn=function(e){return r(typeof e=="number"),r(e<67108864),e<0?this.isubn(-e):this.negative!==0?this.length===1&&(this.words[0]|0)<=e?(this.words[0]=e-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},t.prototype._iaddn=function(e){this.words[0]+=e;for(var s=0;s<this.length&&this.words[s]>=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},t.prototype.isubn=function(e){if(r(typeof e=="number"),r(e<67108864),e<0)return this.iaddn(-e);if(this.negative!==0)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s<this.length&&this.words[s]<0;s++)this.words[s]+=67108864,this.words[s+1]-=1;return this._strip()},t.prototype.addn=function(e){return this.clone().iaddn(e)},t.prototype.subn=function(e){return this.clone().isubn(e)},t.prototype.iabs=function(){return this.negative=0,this},t.prototype.abs=function(){return this.clone().iabs()},t.prototype._ishlnsubmul=function(e,s,u){var f=e.length+u,d;this._expand(f);var v,k=0;for(d=0;d<e.length;d++){v=(this.words[d+u]|0)+k;var w=(e.words[d]|0)*s;v-=w&67108863,k=(v>>26)-(w/67108864|0),this.words[d+u]=v&67108863}for(;d<this.length-u;d++)v=(this.words[d+u]|0)+k,k=v>>26,this.words[d+u]=v&67108863;if(k===0)return this._strip();for(r(k===-1),k=0,d=0;d<this.length;d++)v=-(this.words[d]|0)+k,k=v>>26,this.words[d]=v&67108863;return this.negative=1,this._strip()},t.prototype._wordDiv=function(e,s){var u=this.length-e.length,f=this.clone(),d=e,v=d.words[d.length-1]|0,k=this._countBits(v);u=26-k,u!==0&&(d=d.ushln(u),f.iushln(u),v=d.words[d.length-1]|0);var w=f.length-d.length,a;if(s!=="mod"){a=new t(null),a.length=w+1,a.words=new Array(a.length);for(var _=0;_<a.length;_++)a.words[_]=0}var F=f.clone()._ishlnsubmul(d,1,w);F.negative===0&&(f=F,a&&(a.words[w]=1));for(var E=w-1;E>=0;E--){var U=(f.words[d.length+E]|0)*67108864+(f.words[d.length+E-1]|0);for(U=Math.min(U/v|0,67108863),f._ishlnsubmul(d,U,E);f.negative!==0;)U--,f.negative=0,f._ishlnsubmul(d,1,E),f.isZero()||(f.negative^=1);a&&(a.words[E]=U)}return a&&a._strip(),f._strip(),s!=="div"&&u!==0&&f.iushrn(u),{div:a||null,mod:f}},t.prototype.divmod=function(e,s,u){if(r(!e.isZero()),this.isZero())return{div:new t(0),mod:new t(0)};var f,d,v;return this.negative!==0&&e.negative===0?(v=this.neg().divmod(e,s),s!=="mod"&&(f=v.div.neg()),s!=="div"&&(d=v.mod.neg(),u&&d.negative!==0&&d.iadd(e)),{div:f,mod:d}):this.negative===0&&e.negative!==0?(v=this.divmod(e.neg(),s),s!=="mod"&&(f=v.div.neg()),{div:f,mod:v.mod}):(this.negative&e.negative)!==0?(v=this.neg().divmod(e.neg(),s),s!=="div"&&(d=v.mod.neg(),u&&d.negative!==0&&d.isub(e)),{div:v.div,mod:d}):e.length>this.length||this.cmp(e)<0?{div:new t(0),mod:this}:e.length===1?s==="div"?{div:this.divn(e.words[0]),mod:null}:s==="mod"?{div:null,mod:new t(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new t(this.modrn(e.words[0]))}:this._wordDiv(e,s)},t.prototype.div=function(e){return this.divmod(e,"div",!1).div},t.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},t.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},t.prototype.divRound=function(e){var s=this.divmod(e);if(s.mod.isZero())return s.div;var u=s.div.negative!==0?s.mod.isub(e):s.mod,f=e.ushrn(1),d=e.andln(1),v=u.cmp(f);return v<0||d===1&&v===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},t.prototype.modrn=function(e){var s=e<0;s&&(e=-e),r(e<=67108863);for(var u=(1<<26)%e,f=0,d=this.length-1;d>=0;d--)f=(u*f+(this.words[d]|0))%e;return s?-f:f},t.prototype.modn=function(e){return this.modrn(e)},t.prototype.idivn=function(e){var s=e<0;s&&(e=-e),r(e<=67108863);for(var u=0,f=this.length-1;f>=0;f--){var d=(this.words[f]|0)+u*67108864;this.words[f]=d/e|0,u=d%e}return this._strip(),s?this.ineg():this},t.prototype.divn=function(e){return this.clone().idivn(e)},t.prototype.egcd=function(e){r(e.negative===0),r(!e.isZero());var s=this,u=e.clone();s.negative!==0?s=s.umod(e):s=s.clone();for(var f=new t(1),d=new t(0),v=new t(0),k=new t(1),w=0;s.isEven()&&u.isEven();)s.iushrn(1),u.iushrn(1),++w;for(var a=u.clone(),_=s.clone();!s.isZero();){for(var F=0,E=1;(s.words[0]&E)===0&&F<26;++F,E<<=1);if(F>0)for(s.iushrn(F);F-- >0;)(f.isOdd()||d.isOdd())&&(f.iadd(a),d.isub(_)),f.iushrn(1),d.iushrn(1);for(var U=0,W=1;(u.words[0]&W)===0&&U<26;++U,W<<=1);if(U>0)for(u.iushrn(U);U-- >0;)(v.isOdd()||k.isOdd())&&(v.iadd(a),k.isub(_)),v.iushrn(1),k.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(v),d.isub(k)):(u.isub(s),v.isub(f),k.isub(d))}return{a:v,b:k,gcd:u.iushln(w)}},t.prototype._invmp=function(e){r(e.negative===0),r(!e.isZero());var s=this,u=e.clone();s.negative!==0?s=s.umod(e):s=s.clone();for(var f=new t(1),d=new t(0),v=u.clone();s.cmpn(1)>0&&u.cmpn(1)>0;){for(var k=0,w=1;(s.words[0]&w)===0&&k<26;++k,w<<=1);if(k>0)for(s.iushrn(k);k-- >0;)f.isOdd()&&f.iadd(v),f.iushrn(1);for(var a=0,_=1;(u.words[0]&_)===0&&a<26;++a,_<<=1);if(a>0)for(u.iushrn(a);a-- >0;)d.isOdd()&&d.iadd(v),d.iushrn(1);s.cmp(u)>=0?(s.isub(u),f.isub(d)):(u.isub(s),d.isub(f))}var F;return s.cmpn(1)===0?F=f:F=d,F.cmpn(0)<0&&F.iadd(e),F},t.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var s=this.clone(),u=e.clone();s.negative=0,u.negative=0;for(var f=0;s.isEven()&&u.isEven();f++)s.iushrn(1),u.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;u.isEven();)u.iushrn(1);var d=s.cmp(u);if(d<0){var v=s;s=u,u=v}else if(d===0||u.cmpn(1)===0)break;s.isub(u)}while(!0);return u.iushln(f)},t.prototype.invm=function(e){return this.egcd(e).a.umod(e)},t.prototype.isEven=function(){return(this.words[0]&1)===0},t.prototype.isOdd=function(){return(this.words[0]&1)===1},t.prototype.andln=function(e){return this.words[0]&e},t.prototype.bincn=function(e){r(typeof e=="number");var s=e%26,u=(e-s)/26,f=1<<s;if(this.length<=u)return this._expand(u+1),this.words[u]|=f,this;for(var d=f,v=u;d!==0&&v<this.length;v++){var k=this.words[v]|0;k+=d,d=k>>>26,k&=67108863,this.words[v]=k}return d!==0&&(this.words[v]=d,this.length++),this},t.prototype.isZero=function(){return this.length===1&&this.words[0]===0},t.prototype.cmpn=function(e){var s=e<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var u;if(this.length>1)u=1;else{s&&(e=-e),r(e<=67108863,"Number is too big");var f=this.words[0]|0;u=f===e?0:f<e?-1:1}return this.negative!==0?-u|0:u},t.prototype.cmp=function(e){if(this.negative!==0&&e.negative===0)return-1;if(this.negative===0&&e.negative!==0)return 1;var s=this.ucmp(e);return this.negative!==0?-s|0:s},t.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var s=0,u=this.length-1;u>=0;u--){var f=this.words[u]|0,d=e.words[u]|0;if(f!==d){f<d?s=-1:f>d&&(s=1);break}}return s},t.prototype.gtn=function(e){return this.cmpn(e)===1},t.prototype.gt=function(e){return this.cmp(e)===1},t.prototype.gten=function(e){return this.cmpn(e)>=0},t.prototype.gte=function(e){return this.cmp(e)>=0},t.prototype.ltn=function(e){return this.cmpn(e)===-1},t.prototype.lt=function(e){return this.cmp(e)===-1},t.prototype.lten=function(e){return this.cmpn(e)<=0},t.prototype.lte=function(e){return this.cmp(e)<=0},t.prototype.eqn=function(e){return this.cmpn(e)===0},t.prototype.eq=function(e){return this.cmp(e)===0},t.red=function(e){return new C(e)},t.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),e.convertTo(this)._forceRed(e)},t.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},t.prototype._forceRed=function(e){return this.red=e,this},t.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},t.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},t.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},t.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},t.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},t.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},t.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},t.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},t.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},t.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},t.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},t.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},t.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},t.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var z={k256:null,p224:null,p192:null,p25519:null};function $(h,e){this.name=h,this.p=new t(e,16),this.n=this.p.bitLength(),this.k=new t(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var e=new t(null);return e.words=new Array(Math.ceil(this.n/13)),e},$.prototype.ireduce=function(e){var s=e,u;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),u=s.bitLength();while(u>this.n);var f=u<this.n?-1:s.ucmp(this.p);return f===0?(s.words[0]=0,s.length=1):f>0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},$.prototype.split=function(e,s){e.iushrn(this.n,0,s)},$.prototype.imulK=function(e){return e.imul(this.k)};function Z(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(Z,$),Z.prototype.split=function(e,s){for(var u=4194303,f=Math.min(e.length,9),d=0;d<f;d++)s.words[d]=e.words[d];if(s.length=f,e.length<=9){e.words[0]=0,e.length=1;return}var v=e.words[9];for(s.words[s.length++]=v&u,d=10;d<e.length;d++){var k=e.words[d]|0;e.words[d-10]=(k&u)<<4|v>>>22,v=k}v>>>=22,e.words[d-10]=v,v===0&&e.length>10?e.length-=10:e.length-=9},Z.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var s=0,u=0;u<e.length;u++){var f=e.words[u]|0;s+=f*977,e.words[u]=s&67108863,s=f*64+(s/67108864|0)}return e.words[e.length-1]===0&&(e.length--,e.words[e.length-1]===0&&e.length--),e};function m(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(m,$);function y(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(y,$);function A(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(A,$),A.prototype.imulK=function(e){for(var s=0,u=0;u<e.length;u++){var f=(e.words[u]|0)*19+s,d=f&67108863;f>>>=26,e.words[u]=d,s=f}return s!==0&&(e.words[e.length++]=s),e},t._prime=function(e){if(z[e])return z[e];var s;if(e==="k256")s=new Z;else if(e==="p224")s=new m;else if(e==="p192")s=new y;else if(e==="p25519")s=new A;else throw new Error("Unknown prime "+e);return z[e]=s,s};function C(h){if(typeof h=="string"){var e=t._prime(h);this.m=e.p,this.prime=e}else r(h.gtn(1),"modulus must be greater than 1"),this.m=h,this.prime=null}C.prototype._verify1=function(e){r(e.negative===0,"red works only with positives"),r(e.red,"red works only with red numbers")},C.prototype._verify2=function(e,s){r((e.negative|s.negative)===0,"red works only with positives"),r(e.red&&e.red===s.red,"red works only with red numbers")},C.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(M(e,e.umod(this.m)._forceRed(this)),e)},C.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},C.prototype.add=function(e,s){this._verify2(e,s);var u=e.add(s);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},C.prototype.iadd=function(e,s){this._verify2(e,s);var u=e.iadd(s);return u.cmp(this.m)>=0&&u.isub(this.m),u},C.prototype.sub=function(e,s){this._verify2(e,s);var u=e.sub(s);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},C.prototype.isub=function(e,s){this._verify2(e,s);var u=e.isub(s);return u.cmpn(0)<0&&u.iadd(this.m),u},C.prototype.shl=function(e,s){return this._verify1(e),this.imod(e.ushln(s))},C.prototype.imul=function(e,s){return this._verify2(e,s),this.imod(e.imul(s))},C.prototype.mul=function(e,s){return this._verify2(e,s),this.imod(e.mul(s))},C.prototype.isqr=function(e){return this.imul(e,e.clone())},C.prototype.sqr=function(e){return this.mul(e,e)},C.prototype.sqrt=function(e){if(e.isZero())return e.clone();var s=this.m.andln(3);if(r(s%2===1),s===3){var u=this.m.add(new t(1)).iushrn(2);return this.pow(e,u)}for(var f=this.m.subn(1),d=0;!f.isZero()&&f.andln(1)===0;)d++,f.iushrn(1);r(!f.isZero());var v=new t(1).toRed(this),k=v.redNeg(),w=this.m.subn(1).iushrn(1),a=this.m.bitLength();for(a=new t(2*a*a).toRed(this);this.pow(a,w).cmp(k)!==0;)a.redIAdd(k);for(var _=this.pow(a,f),F=this.pow(e,f.addn(1).iushrn(1)),E=this.pow(e,f),U=d;E.cmp(v)!==0;){for(var W=E,G=0;W.cmp(v)!==0;G++)W=W.redSqr();r(G<U);var te=this.pow(_,new t(1).iushln(U-G-1));F=F.redMul(te),_=te.redSqr(),E=E.redMul(_),U=G}return F},C.prototype.invm=function(e){var s=e._invmp(this.m);return s.negative!==0?(s.negative=0,this.imod(s).redNeg()):this.imod(s)},C.prototype.pow=function(e,s){if(s.isZero())return new t(1).toRed(this);if(s.cmpn(1)===0)return e.clone();var u=4,f=new Array(1<<u);f[0]=new t(1).toRed(this),f[1]=e;for(var d=2;d<f.length;d++)f[d]=this.mul(f[d-1],e);var v=f[0],k=0,w=0,a=s.bitLength()%26;for(a===0&&(a=26),d=s.length-1;d>=0;d--){for(var _=s.words[d],F=a-1;F>=0;F--){var E=_>>F&1;if(v!==f[0]&&(v=this.sqr(v)),E===0&&k===0){w=0;continue}k<<=1,k|=E,w++,!(w!==u&&(d!==0||F!==0))&&(v=this.mul(v,f[k]),w=0,k=0)}a=26}return v},C.prototype.convertTo=function(e){var s=e.umod(this.m);return s===e?s.clone():s},C.prototype.convertFrom=function(e){var s=e.clone();return s.red=null,s},t.mont=function(e){return new L(e)};function L(h){C.call(this,h),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new t(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)}o(L,C),L.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},L.prototype.convertFrom=function(e){var s=this.imod(e.mul(this.rinv));return s.red=null,s},L.prototype.imul=function(e,s){if(e.isZero()||s.isZero())return e.words[0]=0,e.length=1,e;var u=e.imul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),d=u.isub(f).iushrn(this.shift),v=d;return d.cmp(this.m)>=0?v=d.isub(this.m):d.cmpn(0)<0&&(v=d.iadd(this.m)),v._forceRed(this)},L.prototype.mul=function(e,s){if(e.isZero()||s.isZero())return new t(0)._forceRed(this);var u=e.mul(s),f=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),d=u.isub(f).iushrn(this.shift),v=d;return d.cmp(this.m)>=0?v=d.isub(this.m):d.cmpn(0)<0&&(v=d.iadd(this.m)),v._forceRed(this)},L.prototype.invm=function(e){var s=this.imod(e._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(typeof Pr>"u"||Pr,wi)});import{SdkWrapper as ao}from"@cetusprotocol/common-sdk";import{DefaultProviders as ji,FullRpcUrlMainnet as $i}from"@cetusprotocol/common-sdk";var Vr={full_rpc_url:$i,env:"mainnet",aggregator_url:"https://api-sui.cetus.zone/router_v3",providers:ji,leverage:{package_id:"0xc41dca0f7de9e155862521e4d73386e2a45049c5c3c3fa6033525473fa6c634d",published_at:"0xc41dca0f7de9e155862521e4d73386e2a45049c5c3c3fa6033525473fa6c634d",version:0,config:{versioned:"0x16e25bbbb9b06db1ae9c3ebcb381f670ee3ca3b2647981e9cc0afbbfadb0e9e5",admin_cap_id:"0x5056062528bfac02d34f25b623ed6e34b4cd36fdaf6608e4bd593a13207f9b59",global_config_id:"0xeb7d17f241a94c8f9c7f6f363926d63a0bc608616adb409ab1e3abbc3e4d8ea0",markets:"0x2ed42decf1d64d0eb4af233e827a09c8d653d7fb1a40295cf818022abbc26914",markets_table_id:"0xb4aad4cb3690a5fc2033422fce919c9b8eb3c90102e9501b01a9fcf9dc7ea162"}},suilend:{package_id:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf",published_at:"0xe37cc7bb50fd9b6dbd3873df66fa2c554e973697f50ef97707311dc78bd08444",config:{lendingMarket:[{name:"Main market",slug:"main",id:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",type:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",ownerCapId:"0xf7a4defe0b6566b6a2674a02a0c61c9f99bd012eed21bc741a069eaa82d35927"},{name:"STEAMM LM",slug:"steamm-lm",id:"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",type:"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",ownerCapId:"0x55a0f33b24e091830302726c8cfbff8cf8abd2ec1f83a4e6f4bf51c7ba3ad5ab",isHidden:!0}],lendingMarketId:"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",lendingMarketType:"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",apiUrl:"https://d10td5ybgrf39v.cloudfront.net"}}};import{SuilendClient as en}from"@suilend/sdk/client";import{initializeSuilend as tn,initializeSuilendRewards as rn,initializeObligations as nn,formatRewards as on,Side as ut,getFilteredRewards as sn,getStakingYieldAprPercent as an,getDedupedPerDayRewards as ln,getDedupedAprRewards as un,getTotalAprPercent as ri,getNetAprPercent as fn}from"@suilend/sdk";var Zi=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,dr=Math.ceil,Je=Math.floor,Ge="[BigNumber Error] ",Qr=Ge+"Number primitive has more than 15 significant digits: ",et=1e14,X=14,hr=9007199254740991,pr=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],lt=1e7,qe=1e9;function Xr(n){var i,r,o,t=x.prototype={constructor:x,toString:null,valueOf:null},l=new x(1),p=20,c=4,g=-7,M=21,b=-1e7,S=1e7,P=!1,T=1,D=0,O={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},N="0123456789abcdefghijklmnopqrstuvwxyz",I=!0;function x(m,y){var A,C,L,h,e,s,u,f,d=this;if(!(d instanceof x))return new x(m,y);if(y==null){if(m&&m._isBigNumber===!0){d.s=m.s,!m.c||m.e>S?d.c=d.e=null:m.e<b?d.c=[d.e=0]:(d.e=m.e,d.c=m.c.slice());return}if((s=typeof m=="number")&&m*0==0){if(d.s=1/m<0?(m=-m,-1):1,m===~~m){for(h=0,e=m;e>=10;e/=10,h++);h>S?d.c=d.e=null:(d.e=h,d.c=[m]);return}f=String(m)}else{if(!Zi.test(f=String(m)))return o(d,f,s);d.s=f.charCodeAt(0)==45?(f=f.slice(1),-1):1}(h=f.indexOf("."))>-1&&(f=f.replace(".","")),(e=f.search(/e/i))>0?(h<0&&(h=e),h+=+f.slice(e+1),f=f.substring(0,e)):h<0&&(h=f.length)}else{if(oe(y,2,N.length,"Base"),y==10&&I)return d=new x(m),$(d,p+d.e+1,c);if(f=String(m),s=typeof m=="number"){if(m*0!=0)return o(d,f,s,y);if(d.s=1/m<0?(f=f.slice(1),-1):1,x.DEBUG&&f.replace(/^0\.0*|\./,"").length>15)throw Error(Qr+m)}else d.s=f.charCodeAt(0)===45?(f=f.slice(1),-1):1;for(A=N.slice(0,y),h=e=0,u=f.length;e<u;e++)if(A.indexOf(C=f.charAt(e))<0){if(C=="."){if(e>h){h=u;continue}}else if(!L&&(f==f.toUpperCase()&&(f=f.toLowerCase())||f==f.toLowerCase()&&(f=f.toUpperCase()))){L=!0,e=-1,h=0;continue}return o(d,String(m),s,y)}s=!1,f=r(f,y,10,d.s),(h=f.indexOf("."))>-1?f=f.replace(".",""):h=f.length}for(e=0;f.charCodeAt(e)===48;e++);for(u=f.length;f.charCodeAt(--u)===48;);if(f=f.slice(e,++u)){if(u-=e,s&&x.DEBUG&&u>15&&(m>hr||m!==Je(m)))throw Error(Qr+d.s*m);if((h=h-e-1)>S)d.c=d.e=null;else if(h<b)d.c=[d.e=0];else{if(d.e=h,d.c=[],e=(h+1)%X,h<0&&(e+=X),e<u){for(e&&d.c.push(+f.slice(0,e)),u-=X;e<u;)d.c.push(+f.slice(e,e+=X));e=X-(f=f.slice(e)).length}else e-=u;for(;e--;f+="0");d.c.push(+f)}}else d.c=[d.e=0]}x.clone=Xr,x.ROUND_UP=0,x.ROUND_DOWN=1,x.ROUND_CEIL=2,x.ROUND_FLOOR=3,x.ROUND_HALF_UP=4,x.ROUND_HALF_DOWN=5,x.ROUND_HALF_EVEN=6,x.ROUND_HALF_CEIL=7,x.ROUND_HALF_FLOOR=8,x.EUCLID=9,x.config=x.set=function(m){var y,A;if(m!=null)if(typeof m=="object"){if(m.hasOwnProperty(y="DECIMAL_PLACES")&&(A=m[y],oe(A,0,qe,y),p=A),m.hasOwnProperty(y="ROUNDING_MODE")&&(A=m[y],oe(A,0,8,y),c=A),m.hasOwnProperty(y="EXPONENTIAL_AT")&&(A=m[y],A&&A.pop?(oe(A[0],-qe,0,y),oe(A[1],0,qe,y),g=A[0],M=A[1]):(oe(A,-qe,qe,y),g=-(M=A<0?-A:A))),m.hasOwnProperty(y="RANGE"))if(A=m[y],A&&A.pop)oe(A[0],-qe,-1,y),oe(A[1],1,qe,y),b=A[0],S=A[1];else if(oe(A,-qe,qe,y),A)b=-(S=A<0?-A:A);else throw Error(Ge+y+" cannot be zero: "+A);if(m.hasOwnProperty(y="CRYPTO"))if(A=m[y],A===!!A)if(A)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))P=A;else throw P=!A,Error(Ge+"crypto unavailable");else P=A;else throw Error(Ge+y+" not true or false: "+A);if(m.hasOwnProperty(y="MODULO_MODE")&&(A=m[y],oe(A,0,9,y),T=A),m.hasOwnProperty(y="POW_PRECISION")&&(A=m[y],oe(A,0,qe,y),D=A),m.hasOwnProperty(y="FORMAT"))if(A=m[y],typeof A=="object")O=A;else throw Error(Ge+y+" not an object: "+A);if(m.hasOwnProperty(y="ALPHABET"))if(A=m[y],typeof A=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(A))I=A.slice(0,10)=="0123456789",N=A;else throw Error(Ge+y+" invalid: "+A)}else throw Error(Ge+"Object expected: "+m);return{DECIMAL_PLACES:p,ROUNDING_MODE:c,EXPONENTIAL_AT:[g,M],RANGE:[b,S],CRYPTO:P,MODULO_MODE:T,POW_PRECISION:D,FORMAT:O,ALPHABET:N}},x.isBigNumber=function(m){if(!m||m._isBigNumber!==!0)return!1;if(!x.DEBUG)return!0;var y,A,C=m.c,L=m.e,h=m.s;e:if({}.toString.call(C)=="[object Array]"){if((h===1||h===-1)&&L>=-qe&&L<=qe&&L===Je(L)){if(C[0]===0){if(L===0&&C.length===1)return!0;break e}if(y=(L+1)%X,y<1&&(y+=X),String(C[0]).length==y){for(y=0;y<C.length;y++)if(A=C[y],A<0||A>=et||A!==Je(A))break e;if(A!==0)return!0}}}else if(C===null&&L===null&&(h===null||h===1||h===-1))return!0;throw Error(Ge+"Invalid BigNumber: "+m)},x.maximum=x.max=function(){return j(arguments,-1)},x.minimum=x.min=function(){return j(arguments,1)},x.random=(function(){var m=9007199254740992,y=Math.random()*m&2097151?function(){return Je(Math.random()*m)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(A){var C,L,h,e,s,u=0,f=[],d=new x(l);if(A==null?A=p:oe(A,0,qe),e=dr(A/X),P)if(crypto.getRandomValues){for(C=crypto.getRandomValues(new Uint32Array(e*=2));u<e;)s=C[u]*131072+(C[u+1]>>>11),s>=9e15?(L=crypto.getRandomValues(new Uint32Array(2)),C[u]=L[0],C[u+1]=L[1]):(f.push(s%1e14),u+=2);u=e/2}else if(crypto.randomBytes){for(C=crypto.randomBytes(e*=7);u<e;)s=(C[u]&31)*281474976710656+C[u+1]*1099511627776+C[u+2]*4294967296+C[u+3]*16777216+(C[u+4]<<16)+(C[u+5]<<8)+C[u+6],s>=9e15?crypto.randomBytes(7).copy(C,u):(f.push(s%1e14),u+=7);u=e/7}else throw P=!1,Error(Ge+"crypto unavailable");if(!P)for(;u<e;)s=y(),s<9e15&&(f[u++]=s%1e14);for(e=f[--u],A%=X,e&&A&&(s=pr[X-A],f[u]=Je(e/s)*s);f[u]===0;f.pop(),u--);if(u<0)f=[h=0];else{for(h=-1;f[0]===0;f.splice(0,1),h-=X);for(u=1,s=f[0];s>=10;s/=10,u++);u<X&&(h-=X-u)}return d.e=h,d.c=f,d}})(),x.sum=function(){for(var m=1,y=arguments,A=new x(y[0]);m<y.length;)A=A.plus(y[m++]);return A},r=(function(){var m="0123456789";function y(A,C,L,h){for(var e,s=[0],u,f=0,d=A.length;f<d;){for(u=s.length;u--;s[u]*=C);for(s[0]+=h.indexOf(A.charAt(f++)),e=0;e<s.length;e++)s[e]>L-1&&(s[e+1]==null&&(s[e+1]=0),s[e+1]+=s[e]/L|0,s[e]%=L)}return s.reverse()}return function(A,C,L,h,e){var s,u,f,d,v,k,w,a,_=A.indexOf("."),F=p,E=c;for(_>=0&&(d=D,D=0,A=A.replace(".",""),a=new x(C),k=a.pow(A.length-_),D=d,a.c=y(st(Xe(k.c),k.e,"0"),10,L,m),a.e=a.c.length),w=y(A,C,L,e?(s=N,m):(s=m,N)),f=d=w.length;w[--d]==0;w.pop());if(!w[0])return s.charAt(0);if(_<0?--f:(k.c=w,k.e=f,k.s=h,k=i(k,a,F,E,L),w=k.c,v=k.r,f=k.e),u=f+F+1,_=w[u],d=L/2,v=v||u<0||w[u+1]!=null,v=E<4?(_!=null||v)&&(E==0||E==(k.s<0?3:2)):_>d||_==d&&(E==4||v||E==6&&w[u-1]&1||E==(k.s<0?8:7)),u<1||!w[0])A=v?st(s.charAt(1),-F,s.charAt(0)):s.charAt(0);else{if(w.length=u,v)for(--L;++w[--u]>L;)w[u]=0,u||(++f,w=[1].concat(w));for(d=w.length;!w[--d];);for(_=0,A="";_<=d;A+=s.charAt(w[_++]));A=st(A,f,s.charAt(0))}return A}})(),i=(function(){function m(C,L,h){var e,s,u,f,d=0,v=C.length,k=L%lt,w=L/lt|0;for(C=C.slice();v--;)u=C[v]%lt,f=C[v]/lt|0,e=w*u+f*k,s=k*u+e%lt*lt+d,d=(s/h|0)+(e/lt|0)+w*f,C[v]=s%h;return d&&(C=[d].concat(C)),C}function y(C,L,h,e){var s,u;if(h!=e)u=h>e?1:-1;else for(s=u=0;s<h;s++)if(C[s]!=L[s]){u=C[s]>L[s]?1:-1;break}return u}function A(C,L,h,e){for(var s=0;h--;)C[h]-=s,s=C[h]<L[h]?1:0,C[h]=s*e+C[h]-L[h];for(;!C[0]&&C.length>1;C.splice(0,1));}return function(C,L,h,e,s){var u,f,d,v,k,w,a,_,F,E,U,W,G,te,Ze,J,re,Ke=C.s==L.s?1:-1,ee=C.c,Q=L.c;if(!ee||!ee[0]||!Q||!Q[0])return new x(!C.s||!L.s||(ee?Q&&ee[0]==Q[0]:!Q)?NaN:ee&&ee[0]==0||!Q?Ke*0:Ke/0);for(_=new x(Ke),F=_.c=[],f=C.e-L.e,Ke=h+f+1,s||(s=et,f=Ye(C.e/X)-Ye(L.e/X),Ke=Ke/X|0),d=0;Q[d]==(ee[d]||0);d++);if(Q[d]>(ee[d]||0)&&f--,Ke<0)F.push(1),v=!0;else{for(te=ee.length,J=Q.length,d=0,Ke+=2,k=Je(s/(Q[0]+1)),k>1&&(Q=m(Q,k,s),ee=m(ee,k,s),J=Q.length,te=ee.length),G=J,E=ee.slice(0,J),U=E.length;U<J;E[U++]=0);re=Q.slice(),re=[0].concat(re),Ze=Q[0],Q[1]>=s/2&&Ze++;do{if(k=0,u=y(Q,E,J,U),u<0){if(W=E[0],J!=U&&(W=W*s+(E[1]||0)),k=Je(W/Ze),k>1)for(k>=s&&(k=s-1),w=m(Q,k,s),a=w.length,U=E.length;y(w,E,a,U)==1;)k--,A(w,J<a?re:Q,a,s),a=w.length,u=1;else k==0&&(u=k=1),w=Q.slice(),a=w.length;if(a<U&&(w=[0].concat(w)),A(E,w,U,s),U=E.length,u==-1)for(;y(Q,E,J,U)<1;)k++,A(E,J<U?re:Q,U,s),U=E.length}else u===0&&(k++,E=[0]);F[d++]=k,E[0]?E[U++]=ee[G]||0:(E=[ee[G]],U=1)}while((G++<te||E[0]!=null)&&Ke--);v=E[0]!=null,F[0]||F.splice(0,1)}if(s==et){for(d=1,Ke=F[0];Ke>=10;Ke/=10,d++);$(_,h+(_.e=d+f*X-1)+1,e,v)}else _.e=f,_.r=+v;return _}})();function q(m,y,A,C){var L,h,e,s,u;if(A==null?A=c:oe(A,0,8),!m.c)return m.toString();if(L=m.c[0],e=m.e,y==null)u=Xe(m.c),u=C==1||C==2&&(e<=g||e>=M)?Tt(u,e):st(u,e,"0");else if(m=$(new x(m),y,A),h=m.e,u=Xe(m.c),s=u.length,C==1||C==2&&(y<=h||h<=g)){for(;s<y;u+="0",s++);u=Tt(u,h)}else if(y-=e+(C===2&&h>e),u=st(u,h,"0"),h+1>s){if(--y>0)for(u+=".";y--;u+="0");}else if(y+=h-s,y>0)for(h+1==s&&(u+=".");y--;u+="0");return m.s<0&&L?"-"+u:u}function j(m,y){for(var A,C,L=1,h=new x(m[0]);L<m.length;L++)C=new x(m[L]),(!C.s||(A=mt(h,C))===y||A===0&&h.s===y)&&(h=C);return h}function z(m,y,A){for(var C=1,L=y.length;!y[--L];y.pop());for(L=y[0];L>=10;L/=10,C++);return(A=C+A*X-1)>S?m.c=m.e=null:A<b?m.c=[m.e=0]:(m.e=A,m.c=y),m}o=(function(){var m=/^(-?)0([xbo])(?=\w[\w.]*$)/i,y=/^([^.]+)\.$/,A=/^\.([^.]+)$/,C=/^-?(Infinity|NaN)$/,L=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(h,e,s,u){var f,d=s?e:e.replace(L,"");if(C.test(d))h.s=isNaN(d)?null:d<0?-1:1;else{if(!s&&(d=d.replace(m,function(v,k,w){return f=(w=w.toLowerCase())=="x"?16:w=="b"?2:8,!u||u==f?k:v}),u&&(f=u,d=d.replace(y,"$1").replace(A,"0.$1")),e!=d))return new x(d,f);if(x.DEBUG)throw Error(Ge+"Not a"+(u?" base "+u:"")+" number: "+e);h.s=null}h.c=h.e=null}})();function $(m,y,A,C){var L,h,e,s,u,f,d,v=m.c,k=pr;if(v){e:{for(L=1,s=v[0];s>=10;s/=10,L++);if(h=y-L,h<0)h+=X,e=y,u=v[f=0],d=Je(u/k[L-e-1]%10);else if(f=dr((h+1)/X),f>=v.length)if(C){for(;v.length<=f;v.push(0));u=d=0,L=1,h%=X,e=h-X+1}else break e;else{for(u=s=v[f],L=1;s>=10;s/=10,L++);h%=X,e=h-X+L,d=e<0?0:Je(u/k[L-e-1]%10)}if(C=C||y<0||v[f+1]!=null||(e<0?u:u%k[L-e-1]),C=A<4?(d||C)&&(A==0||A==(m.s<0?3:2)):d>5||d==5&&(A==4||C||A==6&&(h>0?e>0?u/k[L-e]:0:v[f-1])%10&1||A==(m.s<0?8:7)),y<1||!v[0])return v.length=0,C?(y-=m.e+1,v[0]=k[(X-y%X)%X],m.e=-y||0):v[0]=m.e=0,m;if(h==0?(v.length=f,s=1,f--):(v.length=f+1,s=k[X-h],v[f]=e>0?Je(u/k[L-e]%k[e])*s:0),C)for(;;)if(f==0){for(h=1,e=v[0];e>=10;e/=10,h++);for(e=v[0]+=s,s=1;e>=10;e/=10,s++);h!=s&&(m.e++,v[0]==et&&(v[0]=1));break}else{if(v[f]+=s,v[f]!=et)break;v[f--]=0,s=1}for(h=v.length;v[--h]===0;v.pop());}m.e>S?m.c=m.e=null:m.e<b&&(m.c=[m.e=0])}return m}function Z(m){var y,A=m.e;return A===null?m.toString():(y=Xe(m.c),y=A<=g||A>=M?Tt(y,A):st(y,A,"0"),m.s<0?"-"+y:y)}return t.absoluteValue=t.abs=function(){var m=new x(this);return m.s<0&&(m.s=1),m},t.comparedTo=function(m,y){return mt(this,new x(m,y))},t.decimalPlaces=t.dp=function(m,y){var A,C,L,h=this;if(m!=null)return oe(m,0,qe),y==null?y=c:oe(y,0,8),$(new x(h),m+h.e+1,y);if(!(A=h.c))return null;if(C=((L=A.length-1)-Ye(this.e/X))*X,L=A[L])for(;L%10==0;L/=10,C--);return C<0&&(C=0),C},t.dividedBy=t.div=function(m,y){return i(this,new x(m,y),p,c)},t.dividedToIntegerBy=t.idiv=function(m,y){return i(this,new x(m,y),0,1)},t.exponentiatedBy=t.pow=function(m,y){var A,C,L,h,e,s,u,f,d,v=this;if(m=new x(m),m.c&&!m.isInteger())throw Error(Ge+"Exponent not an integer: "+Z(m));if(y!=null&&(y=new x(y)),s=m.e>14,!v.c||!v.c[0]||v.c[0]==1&&!v.e&&v.c.length==1||!m.c||!m.c[0])return d=new x(Math.pow(+Z(v),s?m.s*(2-Lt(m)):+Z(m))),y?d.mod(y):d;if(u=m.s<0,y){if(y.c?!y.c[0]:!y.s)return new x(NaN);C=!u&&v.isInteger()&&y.isInteger(),C&&(v=v.mod(y))}else{if(m.e>9&&(v.e>0||v.e<-1||(v.e==0?v.c[0]>1||s&&v.c[1]>=24e7:v.c[0]<8e13||s&&v.c[0]<=9999975e7)))return h=v.s<0&&Lt(m)?-0:0,v.e>-1&&(h=1/h),new x(u?1/h:h);D&&(h=dr(D/X+2))}for(s?(A=new x(.5),u&&(m.s=1),f=Lt(m)):(L=Math.abs(+Z(m)),f=L%2),d=new x(l);;){if(f){if(d=d.times(v),!d.c)break;h?d.c.length>h&&(d.c.length=h):C&&(d=d.mod(y))}if(L){if(L=Je(L/2),L===0)break;f=L%2}else if(m=m.times(A),$(m,m.e+1,1),m.e>14)f=Lt(m);else{if(L=+Z(m),L===0)break;f=L%2}v=v.times(v),h?v.c&&v.c.length>h&&(v.c.length=h):C&&(v=v.mod(y))}return C?d:(u&&(d=l.div(d)),y?d.mod(y):h?$(d,D,c,e):d)},t.integerValue=function(m){var y=new x(this);return m==null?m=c:oe(m,0,8),$(y,y.e+1,m)},t.isEqualTo=t.eq=function(m,y){return mt(this,new x(m,y))===0},t.isFinite=function(){return!!this.c},t.isGreaterThan=t.gt=function(m,y){return mt(this,new x(m,y))>0},t.isGreaterThanOrEqualTo=t.gte=function(m,y){return(y=mt(this,new x(m,y)))===1||y===0},t.isInteger=function(){return!!this.c&&Ye(this.e/X)>this.c.length-2},t.isLessThan=t.lt=function(m,y){return mt(this,new x(m,y))<0},t.isLessThanOrEqualTo=t.lte=function(m,y){return(y=mt(this,new x(m,y)))===-1||y===0},t.isNaN=function(){return!this.s},t.isNegative=function(){return this.s<0},t.isPositive=function(){return this.s>0},t.isZero=function(){return!!this.c&&this.c[0]==0},t.minus=function(m,y){var A,C,L,h,e=this,s=e.s;if(m=new x(m,y),y=m.s,!s||!y)return new x(NaN);if(s!=y)return m.s=-y,e.plus(m);var u=e.e/X,f=m.e/X,d=e.c,v=m.c;if(!u||!f){if(!d||!v)return d?(m.s=-y,m):new x(v?e:NaN);if(!d[0]||!v[0])return v[0]?(m.s=-y,m):new x(d[0]?e:c==3?-0:0)}if(u=Ye(u),f=Ye(f),d=d.slice(),s=u-f){for((h=s<0)?(s=-s,L=d):(f=u,L=v),L.reverse(),y=s;y--;L.push(0));L.reverse()}else for(C=(h=(s=d.length)<(y=v.length))?s:y,s=y=0;y<C;y++)if(d[y]!=v[y]){h=d[y]<v[y];break}if(h&&(L=d,d=v,v=L,m.s=-m.s),y=(C=v.length)-(A=d.length),y>0)for(;y--;d[A++]=0);for(y=et-1;C>s;){if(d[--C]<v[C]){for(A=C;A&&!d[--A];d[A]=y);--d[A],d[C]+=et}d[C]-=v[C]}for(;d[0]==0;d.splice(0,1),--f);return d[0]?z(m,d,f):(m.s=c==3?-1:1,m.c=[m.e=0],m)},t.modulo=t.mod=function(m,y){var A,C,L=this;return m=new x(m,y),!L.c||!m.s||m.c&&!m.c[0]?new x(NaN):!m.c||L.c&&!L.c[0]?new x(L):(T==9?(C=m.s,m.s=1,A=i(L,m,0,3),m.s=C,A.s*=C):A=i(L,m,0,T),m=L.minus(A.times(m)),!m.c[0]&&T==1&&(m.s=L.s),m)},t.multipliedBy=t.times=function(m,y){var A,C,L,h,e,s,u,f,d,v,k,w,a,_,F,E=this,U=E.c,W=(m=new x(m,y)).c;if(!U||!W||!U[0]||!W[0])return!E.s||!m.s||U&&!U[0]&&!W||W&&!W[0]&&!U?m.c=m.e=m.s=null:(m.s*=E.s,!U||!W?m.c=m.e=null:(m.c=[0],m.e=0)),m;for(C=Ye(E.e/X)+Ye(m.e/X),m.s*=E.s,u=U.length,v=W.length,u<v&&(a=U,U=W,W=a,L=u,u=v,v=L),L=u+v,a=[];L--;a.push(0));for(_=et,F=lt,L=v;--L>=0;){for(A=0,k=W[L]%F,w=W[L]/F|0,e=u,h=L+e;h>L;)f=U[--e]%F,d=U[e]/F|0,s=w*f+d*k,f=k*f+s%F*F+a[h]+A,A=(f/_|0)+(s/F|0)+w*d,a[h--]=f%_;a[h]=A}return A?++C:a.splice(0,1),z(m,a,C)},t.negated=function(){var m=new x(this);return m.s=-m.s||null,m},t.plus=function(m,y){var A,C=this,L=C.s;if(m=new x(m,y),y=m.s,!L||!y)return new x(NaN);if(L!=y)return m.s=-y,C.minus(m);var h=C.e/X,e=m.e/X,s=C.c,u=m.c;if(!h||!e){if(!s||!u)return new x(L/0);if(!s[0]||!u[0])return u[0]?m:new x(s[0]?C:L*0)}if(h=Ye(h),e=Ye(e),s=s.slice(),L=h-e){for(L>0?(e=h,A=u):(L=-L,A=s),A.reverse();L--;A.push(0));A.reverse()}for(L=s.length,y=u.length,L-y<0&&(A=u,u=s,s=A,y=L),L=0;y;)L=(s[--y]=s[y]+u[y]+L)/et|0,s[y]=et===s[y]?0:s[y]%et;return L&&(s=[L].concat(s),++e),z(m,s,e)},t.precision=t.sd=function(m,y){var A,C,L,h=this;if(m!=null&&m!==!!m)return oe(m,1,qe),y==null?y=c:oe(y,0,8),$(new x(h),m,y);if(!(A=h.c))return null;if(L=A.length-1,C=L*X+1,L=A[L]){for(;L%10==0;L/=10,C--);for(L=A[0];L>=10;L/=10,C++);}return m&&h.e+1>C&&(C=h.e+1),C},t.shiftedBy=function(m){return oe(m,-hr,hr),this.times("1e"+m)},t.squareRoot=t.sqrt=function(){var m,y,A,C,L,h=this,e=h.c,s=h.s,u=h.e,f=p+4,d=new x("0.5");if(s!==1||!e||!e[0])return new x(!s||s<0&&(!e||e[0])?NaN:e?h:1/0);if(s=Math.sqrt(+Z(h)),s==0||s==1/0?(y=Xe(e),(y.length+u)%2==0&&(y+="0"),s=Math.sqrt(+y),u=Ye((u+1)/2)-(u<0||u%2),s==1/0?y="5e"+u:(y=s.toExponential(),y=y.slice(0,y.indexOf("e")+1)+u),A=new x(y)):A=new x(s+""),A.c[0]){for(u=A.e,s=u+f,s<3&&(s=0);;)if(L=A,A=d.times(L.plus(i(h,L,f,1))),Xe(L.c).slice(0,s)===(y=Xe(A.c)).slice(0,s))if(A.e<u&&--s,y=y.slice(s-3,s+1),y=="9999"||!C&&y=="4999"){if(!C&&($(L,L.e+p+2,0),L.times(L).eq(h))){A=L;break}f+=4,s+=4,C=1}else{(!+y||!+y.slice(1)&&y.charAt(0)=="5")&&($(A,A.e+p+2,1),m=!A.times(A).eq(h));break}}return $(A,A.e+p+1,c,m)},t.toExponential=function(m,y){return m!=null&&(oe(m,0,qe),m++),q(this,m,y,1)},t.toFixed=function(m,y){return m!=null&&(oe(m,0,qe),m=m+this.e+1),q(this,m,y)},t.toFormat=function(m,y,A){var C,L=this;if(A==null)m!=null&&y&&typeof y=="object"?(A=y,y=null):m&&typeof m=="object"?(A=m,m=y=null):A=O;else if(typeof A!="object")throw Error(Ge+"Argument not an object: "+A);if(C=L.toFixed(m,y),L.c){var h,e=C.split("."),s=+A.groupSize,u=+A.secondaryGroupSize,f=A.groupSeparator||"",d=e[0],v=e[1],k=L.s<0,w=k?d.slice(1):d,a=w.length;if(u&&(h=s,s=u,u=h,a-=h),s>0&&a>0){for(h=a%s||s,d=w.substr(0,h);h<a;h+=s)d+=f+w.substr(h,s);u>0&&(d+=f+w.slice(h)),k&&(d="-"+d)}C=v?d+(A.decimalSeparator||"")+((u=+A.fractionGroupSize)?v.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(A.fractionGroupSeparator||"")):v):d}return(A.prefix||"")+C+(A.suffix||"")},t.toFraction=function(m){var y,A,C,L,h,e,s,u,f,d,v,k,w=this,a=w.c;if(m!=null&&(s=new x(m),!s.isInteger()&&(s.c||s.s!==1)||s.lt(l)))throw Error(Ge+"Argument "+(s.isInteger()?"out of range: ":"not an integer: ")+Z(s));if(!a)return new x(w);for(y=new x(l),f=A=new x(l),C=u=new x(l),k=Xe(a),h=y.e=k.length-w.e-1,y.c[0]=pr[(e=h%X)<0?X+e:e],m=!m||s.comparedTo(y)>0?h>0?y:f:s,e=S,S=1/0,s=new x(k),u.c[0]=0;d=i(s,y,0,1),L=A.plus(d.times(C)),L.comparedTo(m)!=1;)A=C,C=L,f=u.plus(d.times(L=f)),u=L,y=s.minus(d.times(L=y)),s=L;return L=i(m.minus(A),C,0,1),u=u.plus(L.times(f)),A=A.plus(L.times(C)),u.s=f.s=w.s,h=h*2,v=i(f,C,h,c).minus(w).abs().comparedTo(i(u,A,h,c).minus(w).abs())<1?[f,C]:[u,A],S=e,v},t.toNumber=function(){return+Z(this)},t.toPrecision=function(m,y){return m!=null&&oe(m,1,qe),q(this,m,y,2)},t.toString=function(m){var y,A=this,C=A.s,L=A.e;return L===null?C?(y="Infinity",C<0&&(y="-"+y)):y="NaN":(m==null?y=L<=g||L>=M?Tt(Xe(A.c),L):st(Xe(A.c),L,"0"):m===10&&I?(A=$(new x(A),p+L+1,c),y=st(Xe(A.c),A.e,"0")):(oe(m,2,N.length,"Base"),y=r(st(Xe(A.c),L,"0"),10,m,C,!0)),C<0&&A.c[0]&&(y="-"+y)),y},t.valueOf=t.toJSON=function(){return Z(this)},t._isBigNumber=!0,t[Symbol.toStringTag]="BigNumber",t[Symbol.for("nodejs.util.inspect.custom")]=t.valueOf,n!=null&&x.set(n),x}function Ye(n){var i=n|0;return n>0||n===i?i:i-1}function Xe(n){for(var i,r,o=1,t=n.length,l=n[0]+"";o<t;){for(i=n[o++]+"",r=X-i.length;r--;i="0"+i);l+=i}for(t=l.length;l.charCodeAt(--t)===48;);return l.slice(0,t+1||1)}function mt(n,i){var r,o,t=n.c,l=i.c,p=n.s,c=i.s,g=n.e,M=i.e;if(!p||!c)return null;if(r=t&&!t[0],o=l&&!l[0],r||o)return r?o?0:-c:p;if(p!=c)return p;if(r=p<0,o=g==M,!t||!l)return o?0:!t^r?1:-1;if(!o)return g>M^r?1:-1;for(c=(g=t.length)<(M=l.length)?g:M,p=0;p<c;p++)if(t[p]!=l[p])return t[p]>l[p]^r?1:-1;return g==M?0:g>M^r?1:-1}function oe(n,i,r,o){if(n<i||n>r||n!==Je(n))throw Error(Ge+(o||"Argument")+(typeof n=="number"?n<i||n>r?" out of range: ":" not an integer: ":" not a primitive number: ")+String(n))}function Lt(n){var i=n.c.length-1;return Ye(n.e/X)==i&&n.c[i]%2!=0}function Tt(n,i){return(n.length>1?n.charAt(0)+"."+n.slice(1):n)+(i<0?"e":"e+")+i}function st(n,i,r){var o,t;if(i<0){for(t=r+".";++i;t+=r);n=t+n}else if(o=n.length,++i>o){for(t=r,i-=o;--i;t+=r);n+=t}else i<o&&(n=n.slice(0,i)+"."+n.slice(i));return n}var Wi=Xr(),We=Wi;import{linearlyInterpolate as Hi,Side as wt}from"@suilend/sdk";import{NORMALIZED_flSUI_COINTYPE as Vi,NORMALIZED_jugSUI_COINTYPE as Qi,NORMALIZED_LBTC_COINTYPE as Xi,formatLtvPercent as Ji}from"@suilend/sui-fe";import zi from"crypto";var Dt=new Uint8Array(256),xt=Dt.length;function gr(){return xt>Dt.length-16&&(zi.randomFillSync(Dt),xt=0),Dt.slice(xt,xt+=16)}var je=[];for(let n=0;n<256;++n)je.push((n+256).toString(16).slice(1));function Jr(n,i=0){return je[n[i+0]]+je[n[i+1]]+je[n[i+2]]+je[n[i+3]]+"-"+je[n[i+4]]+je[n[i+5]]+"-"+je[n[i+6]]+je[n[i+7]]+"-"+je[n[i+8]]+je[n[i+9]]+"-"+je[n[i+10]]+je[n[i+11]]+je[n[i+12]]+je[n[i+13]]+je[n[i+14]]+je[n[i+15]]}import Ki from"crypto";var mr={randomUUID:Ki.randomUUID};function Gi(n,i,r){if(mr.randomUUID&&!i&&!n)return mr.randomUUID();n=n||{};let o=n.random||(n.rng||gr)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,i){r=r||0;for(let t=0;t<16;++t)i[r+t]=o[t];return i}return Jr(o)}var vt=Gi;import{getPackagerConfigs as Yi}from"@cetusprotocol/common-sdk";var vr=10n;function Yr(n){return n.depositedAmount.eq(0)?new We(0):n.borrowedAmount.div(n.depositedAmount).times(100)}function wr(n){let i=Yr(n);if(!i.gt(100))return Hi(n.config.interestRate,"utilPercent","aprPercent",i)}function ei(n){let i=Yr(n),r=wr(n);if(!(r===void 0||i.gt(100)))return new We(i.div(100)).times(r.div(100)).times(1-n.config.spreadFeeBps/1e4).times(100)}function Uo(n,i,r,o){let{apiUrl:t}=Yi(o.sdkOptions.suilend);n===wt.DEPOSIT&&([Vi,Qi].includes(i.coinType)&&r.push({stats:{id:vt(),isActive:!0,rewardIndex:-1,reserve:i,rewardCoinType:"LIQ_AG",mintDecimals:0,symbol:"LiqAg Points",iconUrl:`${t}/partners/LiqAg.png`,perDay:new We(.036),side:wt.DEPOSIT},obligationClaims:{}}),i.coinType===Xi&&r.push({stats:{id:vt(),isActive:!0,rewardIndex:-1,reserve:i,rewardCoinType:"LOMBARD",mintDecimals:0,symbol:"3x Lombard Lux",iconUrl:`${t}/partners/Lombard Lux.png`,perDay:new We(0),side:wt.DEPOSIT},obligationClaims:{}}))}function qo(n,i,r){return{...n,depositedAmount:i===wt.DEPOSIT?We.max(n.depositedAmount.plus(r),0):n.depositedAmount,borrowedAmount:i===wt.BORROW?We.max(n.borrowedAmount.plus(r),0):n.borrowedAmount}}function jo(n,i,r){let o=n===wt.DEPOSIT?i.depositedAmount:i.borrowedAmount,t=n===wt.DEPOSIT?r.depositedAmount:r.borrowedAmount,l=t.eq(0)?new We(-1):o.div(t);return{multiplier:l,isValid:!l.eq(-1)}}function $o(n,i,r,o){let t=n.map(p=>({...p,stats:{...p.stats,perDay:o?p.stats.perDay.times(r):void 0}})),l=i.map(p=>({...p,stats:{...p.stats,aprPercent:o?p.stats.aprPercent.times(r):void 0}}));return{newPerDayRewards:t,newAprRewards:l}}function ti(n,i){if(!vr)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(i<0n){let r=10n**(vr- -i);return n*r}return n/10n**(i+vr)}function Zo(n){return Ji(new We(n))}import{d as Mr,getPackagerConfigs as Mt,removeHexPrefix as br}from"@cetusprotocol/common-sdk";import{toHEX as ii}from"@mysten/sui/utils";var Ot=class{constructor(i){this.getSuiLendCoinInfo=async(i,r,o)=>{let t=new We(r.toString()),{allLendingMarketData:l,lstAprPercentMap:p}=await this.getLendingMarketData(!1);if(await this.getInitializeObligations({allLendingMarketData:l,lstAprPercentMap:p},!0),!l||!p)throw new Error("lendingMarketCache is not initialized");let c=Object.values(l??{})[0],g=c.lendingMarket.reserves.find(m=>m.coinType===i);if(!g)throw new Error("reserve not found");let b=(this.obligationsCache?.[c.lendingMarket.id]).rewardMap[g.token.coinType]?.[o]??[],S=sn(b),P=an(o,g.coinType,p),T=o===ut.DEPOSIT?g.depositAprPercent:g.borrowAprPercent,D=T,O=new We(1),N=!0;if(o!==void 0&&t!==void 0&&t.gt(0)){let m={...g,depositedAmount:o===ut.DEPOSIT?We.max(g.depositedAmount.plus(o===ut.DEPOSIT?t:t.negated()),0):g.depositedAmount,borrowedAmount:o===ut.BORROW?We.max(g.borrowedAmount.plus(o===ut.BORROW?t:t.negated()),0):g.borrowedAmount};D=o===ut.DEPOSIT?ei(m):wr(m);let y=o===ut.DEPOSIT?g.depositedAmount:g.borrowedAmount,A=o===ut.DEPOSIT?m.depositedAmount:m.borrowedAmount;O=A.eq(0)?new We(-1):y.div(A),N=!O.eq(-1)}let q=ln(S).map(m=>({...m,stats:{...m.stats,perDay:N?m.stats.perDay.times(O):void 0}})),z=un(S).map(m=>({...m,stats:{...m.stats,aprPercent:N?m.stats.aprPercent.times(O):void 0}})),$=ri(o,T,S,P),Z=D===void 0||z.some(m=>m.stats.aprPercent===void 0)?void 0:ri(o,D,z,P);return console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:315 ~ SuiLendModule ~ newTotalAprPercent:",Z?.toString()),{newTotalAprPercent:Z?.toString(),totalAprPercent:$.toString()}};this.refreshReservePrice=async(i,r,o)=>{let{lendingMarketId:t,lendingMarketType:l}=Mt(this.sdk.sdkOptions?.suilend),p=`${t}_${l}`;if(!this.suilendClientCache)throw new Error("suilendClientCache is not initialized");let c=await this.suilendClientCache[p].pythClient.getPriceFeedObjectId(r);this.suilendClientCache[p].refreshReservePrices(i,c,o)};this.getLatestPriceFeeds=async(i,r=!1)=>{let{lendingMarketId:o,lendingMarketType:t}=Mt(this.sdk.sdkOptions?.suilend),l={},p=[];if(i.forEach(b=>{let S=this.sdk.getCache(`getLatestPrice_${b.coinType.name}`,r);S&&this.priceCheck(S,60)?l[b.coinType.name]=S:p.push(b.coinType.name)}),p.length==0)return l;let c=`${o}_${t}`;if(!this.suilendClientCache)throw new Error("suilendClient is not initialized");let g=Array.from(new Set(i.map(b=>b?.priceIdentifier?.bytes?ii(new Uint8Array(b.priceIdentifier.bytes)):br(b.priceIdentifier.toString()))));return(await this.suilendClientCache[c].pythConnection.getLatestPriceFeeds(g))?.forEach((b,S)=>{let P=b.getPriceUnchecked(),T=i[S];if(P){let{price:D,expo:O}=P,N=Mr(D).mul(Mr(10).pow(Mr(O))).toString(),I={coin_type:T.coinType.name||T.coinType,price:N,oracle_price:0n,last_update_time:P.publishTime};I.oracle_price=ti(BigInt(D),BigInt(O)),l[T.coinType.name||T.coinType]=I,this.sdk.updateCache(`getLatestPrice_${I.coin_type}`,I)}}),l};this.getLatestPriceFeedsByCoinTypes=async(i,r=!1)=>{let{lendingMarketId:o}=Mt(this.sdk.sdkOptions?.suilend),{allLendingMarketData:t}=await this.getLendingMarketData(!1),l=[];return i.forEach(c=>{let g=t[o].reserveMap[c];l.push(g)}),await this.getLatestPriceFeeds(l,r)};this.getSuiLendReserveInfo=async(i,r,o)=>{let{lendingMarketId:t}=Mt(this.sdk.sdkOptions?.suilend);o||(o=(await this.getLendingMarketData(!1)).allLendingMarketData);let l=o[t].reserveMap[i],p=o[t].reserveMap[r],c=o[t].refreshedRawReserves.filter(S=>S.coinType.name==br(i)),g=o[t].refreshedRawReserves.filter(S=>S.coinType.name==br(r)),M=o[t].reserveMap[i],b=o[t].reserveMap[r];return{baseReserveArrayIndex:l.arrayIndex.toString(),quoteReserveArrayIndex:p.arrayIndex.toString(),reserve:[c[0],g[0]],baseReserveMapInfo:M,quoteReserveMapInfo:b}};this.refreshReservePrices=async(i,r)=>{for(let o=0;o<r.length;o++){let t=ii(new Uint8Array(r[o].priceIdentifier.bytes));await this.refreshReservePrice(i,t,BigInt(r[o].arrayIndex))}};this.sdk=i}async getSuilendClient(i,r){let o=`${i}_${r}`;return this.suilendClientCache||(this.suilendClientCache={}),this.suilendClientCache[o]||(this.suilendClientCache[o]=await en.initialize(i,r,this.sdk.FullClient,!0)),this.suilendClientCache[o]}async getLendingMarketData(i=!0){let r="lendingMarketData",o=this.sdk.getCache(r,i);if(o)return o;let t=Mt(this.sdk.sdkOptions?.suilend)?.lendingMarket||[];if(!t.length)return console.warn("\u26A0\uFE0F No lending markets configured."),{};try{let[l,p]=await Promise.all([(async()=>Object.fromEntries(await Promise.all(t.map(async g=>{let M=await this.getSuilendClient(g.id,g.type),{lendingMarket:b,coinMetadataMap:S,refreshedRawReserves:P,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:O,rewardCoinTypes:N,activeRewardCoinTypes:I,rewardCoinMetadataMap:x}=await tn(this.sdk.FullClient,M),{rewardPriceMap:q}=await rn(T,I);return[g.id,{suilendClient:M,lendingMarket:b,coinMetadataMap:S,refreshedRawReserves:P,reserveMap:T,reserveCoinTypes:D,reserveCoinMetadataMap:O,rewardPriceMap:q,rewardCoinTypes:N,activeRewardCoinTypes:I,rewardCoinMetadataMap:x}]}))))(),(async()=>{try{let c=await fetch(`${this.sdk.sdkOptions?.suilend?.config?.apiUrl}/springsui/apy`),g=await c.json();if(c?.statusCode===500)throw new Error("Failed to fetch SpringSui LST APRs");return Object.fromEntries(Object.entries(g).map(([M,b])=>[M,new We(b)]))}catch(c){return console.error(c),{}}})()]);return this.sdk.updateCache(r,{allLendingMarketData:l,lstAprPercentMap:p},30*1e3),{allLendingMarketData:l,lstAprPercentMap:p}}catch(l){throw console.log("\u{1F680} getLendingMarketData error:",l),l}}async getInitializeObligations(i,r=!1){if(!r&&this.obligationsCache)return this.obligationsCache;i||(i=await this.getLendingMarketData(!1));let o={};for(let t of Object.values(i.allLendingMarketData)){let{obligationOwnerCaps:l,obligations:p}=await nn(this.sdk.FullClient,t.suilendClient,t.refreshedRawReserves,t.reserveMap,this.sdk.senderAddress),c=on(t.reserveMap,t.rewardCoinMetadataMap,t.rewardPriceMap,p);o[t.lendingMarket.id]={obligationOwnerCaps:l,obligations:p,rewardMap:c}}return this.obligationsCache=o,this.obligationsCache}async getSuiLendUserData(i,r=!1){let{allLendingMarketData:o,lstAprPercentMap:t}=await this.getLendingMarketData(!1),l=await this.getInitializeObligations({allLendingMarketData:o,lstAprPercentMap:t},!1),{lendingMarketId:p}=Mt(this.sdk.sdkOptions?.suilend),c=l[p];if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ suilendModule.ts:275 ~ SuiLendModule ~ getSuiLendUserData ~ userData:",c),!c)throw new Error(`No user data found for lending market: ${p}`);if(i){let g=c.obligations.find(b=>b.id===i);if(!g)throw new Error(`Obligation not found: ${i}`);let M=fn(g,c.rewardMap,t??{});return{obligation:g,netAprPercent:M,deposits:g.deposits,borrowedAmount:g.borrowedAmount,depositedAmount:g.depositedAmount,netValueUsd:g.netValueUsd,rewardMap:c.rewardMap}}}priceCheck(i,r=60){let o=Math.floor(Date.now()/1e3);if(!(Math.abs(o-i.last_update_time)>r))return i}};import{getPackagerConfigs as ne,CACHE_TIME_5MIN as Si,CoinAssist as Y,CLOCK_ADDRESS as pt,d as R,removeHexPrefix as _t,getObjectFields as Pi,addHexPrefix as so,U64_MAX as Ci}from"@cetusprotocol/common-sdk";var bt=9e15,ht=1e9,yr="0123456789abcdef",Bt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Nt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",_r={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},ai,at,V=!0,Ft="[DecimalError] ",dt=Ft+"Invalid argument: ",li=Ft+"Precision limit exceeded",ui=Ft+"crypto unavailable",fi="[object Decimal]",ze=Math.floor,Fe=Math.pow,cn=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,dn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,hn=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ci=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tt=1e7,H=7,pn=9007199254740991,gn=Bt.length-1,kr=Nt.length-1,B={toStringTag:fi};B.absoluteValue=B.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),K(n)};B.ceil=function(){return K(new this.constructor(this),this.e+1,2)};B.clampedTo=B.clamp=function(n,i){var r,o=this,t=o.constructor;if(n=new t(n),i=new t(i),!n.s||!i.s)return new t(NaN);if(n.gt(i))throw Error(dt+i);return r=o.cmp(n),r<0?n:o.cmp(i)>0?i:new t(o)};B.comparedTo=B.cmp=function(n){var i,r,o,t,l=this,p=l.d,c=(n=new l.constructor(n)).d,g=l.s,M=n.s;if(!p||!c)return!g||!M?NaN:g!==M?g:p===c?0:!p^g<0?1:-1;if(!p[0]||!c[0])return p[0]?g:c[0]?-M:0;if(g!==M)return g;if(l.e!==n.e)return l.e>n.e^g<0?1:-1;for(o=p.length,t=c.length,i=0,r=o<t?o:t;i<r;++i)if(p[i]!==c[i])return p[i]>c[i]^g<0?1:-1;return o===t?0:o>t^g<0?1:-1};B.cosine=B.cos=function(){var n,i,r=this,o=r.constructor;return r.d?r.d[0]?(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+H,o.rounding=1,r=mn(o,mi(o,r)),o.precision=n,o.rounding=i,K(at==2||at==3?r.neg():r,n,i,!0)):new o(1):new o(NaN)};B.cubeRoot=B.cbrt=function(){var n,i,r,o,t,l,p,c,g,M,b=this,S=b.constructor;if(!b.isFinite()||b.isZero())return new S(b);for(V=!1,l=b.s*Fe(b.s*b,1/3),!l||Math.abs(l)==1/0?(r=$e(b.d),n=b.e,(l=(n-r.length+1)%3)&&(r+=l==1||l==-2?"0":"00"),l=Fe(r,1/3),n=ze((n+1)/3)-(n%3==(n<0?-1:2)),l==1/0?r="5e"+n:(r=l.toExponential(),r=r.slice(0,r.indexOf("e")+1)+n),o=new S(r),o.s=b.s):o=new S(l.toString()),p=(n=S.precision)+3;;)if(c=o,g=c.times(c).times(c),M=g.plus(b),o=ie(M.plus(b).times(c),M.plus(g),p+2,1),$e(c.d).slice(0,p)===(r=$e(o.d)).slice(0,p))if(r=r.slice(p-3,p+1),r=="9999"||!t&&r=="4999"){if(!t&&(K(c,n+1,0),c.times(c).times(c).eq(b))){o=c;break}p+=4,t=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(K(o,n+1,1),i=!o.times(o).times(o).eq(b));break}return V=!0,K(o,n,S.rounding,i)};B.decimalPlaces=B.dp=function(){var n,i=this.d,r=NaN;if(i){if(n=i.length-1,r=(n-ze(this.e/H))*H,n=i[n],n)for(;n%10==0;n/=10)r--;r<0&&(r=0)}return r};B.dividedBy=B.div=function(n){return ie(this,new this.constructor(n))};B.dividedToIntegerBy=B.divToInt=function(n){var i=this,r=i.constructor;return K(ie(i,new r(n),0,1,1),r.precision,r.rounding)};B.equals=B.eq=function(n){return this.cmp(n)===0};B.floor=function(){return K(new this.constructor(this),this.e+1,3)};B.greaterThan=B.gt=function(n){return this.cmp(n)>0};B.greaterThanOrEqualTo=B.gte=function(n){var i=this.cmp(n);return i==1||i===0};B.hyperbolicCosine=B.cosh=function(){var n,i,r,o,t,l=this,p=l.constructor,c=new p(1);if(!l.isFinite())return new p(l.s?1/0:NaN);if(l.isZero())return c;r=p.precision,o=p.rounding,p.precision=r+Math.max(l.e,l.sd())+4,p.rounding=1,t=l.d.length,t<32?(n=Math.ceil(t/3),i=(1/qt(4,n)).toString()):(n=16,i="2.3283064365386962890625e-10"),l=yt(p,1,l.times(i),new p(1),!0);for(var g,M=n,b=new p(8);M--;)g=l.times(l),l=c.minus(g.times(b.minus(g.times(b))));return K(l,p.precision=r,p.rounding=o,!0)};B.hyperbolicSine=B.sinh=function(){var n,i,r,o,t=this,l=t.constructor;if(!t.isFinite()||t.isZero())return new l(t);if(i=l.precision,r=l.rounding,l.precision=i+Math.max(t.e,t.sd())+4,l.rounding=1,o=t.d.length,o<3)t=yt(l,2,t,t,!0);else{n=1.4*Math.sqrt(o),n=n>16?16:n|0,t=t.times(1/qt(5,n)),t=yt(l,2,t,t,!0);for(var p,c=new l(5),g=new l(16),M=new l(20);n--;)p=t.times(t),t=t.times(c.plus(p.times(g.times(p).plus(M))))}return l.precision=i,l.rounding=r,K(t,i,r,!0)};B.hyperbolicTangent=B.tanh=function(){var n,i,r=this,o=r.constructor;return r.isFinite()?r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+7,o.rounding=1,ie(r.sinh(),r.cosh(),o.precision=n,o.rounding=i)):new o(r.s)};B.inverseCosine=B.acos=function(){var n=this,i=n.constructor,r=n.abs().cmp(1),o=i.precision,t=i.rounding;return r!==-1?r===0?n.isNeg()?it(i,o,t):new i(0):new i(NaN):n.isZero()?it(i,o+4,t).times(.5):(i.precision=o+6,i.rounding=1,n=new i(1).minus(n).div(n.plus(1)).sqrt().atan(),i.precision=o,i.rounding=t,n.times(2))};B.inverseHyperbolicCosine=B.acosh=function(){var n,i,r=this,o=r.constructor;return r.lte(1)?new o(r.eq(1)?0:NaN):r.isFinite()?(n=o.precision,i=o.rounding,o.precision=n+Math.max(Math.abs(r.e),r.sd())+4,o.rounding=1,V=!1,r=r.times(r).minus(1).sqrt().plus(r),V=!0,o.precision=n,o.rounding=i,r.ln()):new o(r)};B.inverseHyperbolicSine=B.asinh=function(){var n,i,r=this,o=r.constructor;return!r.isFinite()||r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+2*Math.max(Math.abs(r.e),r.sd())+6,o.rounding=1,V=!1,r=r.times(r).plus(1).sqrt().plus(r),V=!0,o.precision=n,o.rounding=i,r.ln())};B.inverseHyperbolicTangent=B.atanh=function(){var n,i,r,o,t=this,l=t.constructor;return t.isFinite()?t.e>=0?new l(t.abs().eq(1)?t.s/0:t.isZero()?t:NaN):(n=l.precision,i=l.rounding,o=t.sd(),Math.max(o,n)<2*-t.e-1?K(new l(t),n,i,!0):(l.precision=r=o-t.e,t=ie(t.plus(1),new l(1).minus(t),r+n,1),l.precision=n+4,l.rounding=1,t=t.ln(),l.precision=n,l.rounding=i,t.times(.5))):new l(NaN)};B.inverseSine=B.asin=function(){var n,i,r,o,t=this,l=t.constructor;return t.isZero()?new l(t):(i=t.abs().cmp(1),r=l.precision,o=l.rounding,i!==-1?i===0?(n=it(l,r+4,o).times(.5),n.s=t.s,n):new l(NaN):(l.precision=r+6,l.rounding=1,t=t.div(new l(1).minus(t.times(t)).sqrt().plus(1)).atan(),l.precision=r,l.rounding=o,t.times(2)))};B.inverseTangent=B.atan=function(){var n,i,r,o,t,l,p,c,g,M=this,b=M.constructor,S=b.precision,P=b.rounding;if(M.isFinite()){if(M.isZero())return new b(M);if(M.abs().eq(1)&&S+4<=kr)return p=it(b,S+4,P).times(.25),p.s=M.s,p}else{if(!M.s)return new b(NaN);if(S+4<=kr)return p=it(b,S+4,P).times(.5),p.s=M.s,p}for(b.precision=c=S+10,b.rounding=1,r=Math.min(28,c/H+2|0),n=r;n;--n)M=M.div(M.times(M).plus(1).sqrt().plus(1));for(V=!1,i=Math.ceil(c/H),o=1,g=M.times(M),p=new b(M),t=M;n!==-1;)if(t=t.times(g),l=p.minus(t.div(o+=2)),t=t.times(g),p=l.plus(t.div(o+=2)),p.d[i]!==void 0)for(n=i;p.d[n]===l.d[n]&&n--;);return r&&(p=p.times(2<<r-1)),V=!0,K(p,b.precision=S,b.rounding=P,!0)};B.isFinite=function(){return!!this.d};B.isInteger=B.isInt=function(){return!!this.d&&ze(this.e/H)>this.d.length-2};B.isNaN=function(){return!this.s};B.isNegative=B.isNeg=function(){return this.s<0};B.isPositive=B.isPos=function(){return this.s>0};B.isZero=function(){return!!this.d&&this.d[0]===0};B.lessThan=B.lt=function(n){return this.cmp(n)<0};B.lessThanOrEqualTo=B.lte=function(n){return this.cmp(n)<1};B.logarithm=B.log=function(n){var i,r,o,t,l,p,c,g,M=this,b=M.constructor,S=b.precision,P=b.rounding,T=5;if(n==null)n=new b(10),i=!0;else{if(n=new b(n),r=n.d,n.s<0||!r||!r[0]||n.eq(1))return new b(NaN);i=n.eq(10)}if(r=M.d,M.s<0||!r||!r[0]||M.eq(1))return new b(r&&!r[0]?-1/0:M.s!=1?NaN:r?0:1/0);if(i)if(r.length>1)l=!0;else{for(t=r[0];t%10===0;)t/=10;l=t!==1}if(V=!1,c=S+T,p=ct(M,c),o=i?Et(b,c+10):ct(n,c),g=ie(p,o,c,1),St(g.d,t=S,P))do if(c+=10,p=ct(M,c),o=i?Et(b,c+10):ct(n,c),g=ie(p,o,c,1),!l){+$e(g.d).slice(t+1,t+15)+1==1e14&&(g=K(g,S+1,0));break}while(St(g.d,t+=10,P));return V=!0,K(g,S,P)};B.minus=B.sub=function(n){var i,r,o,t,l,p,c,g,M,b,S,P,T=this,D=T.constructor;if(n=new D(n),!T.d||!n.d)return!T.s||!n.s?n=new D(NaN):T.d?n.s=-n.s:n=new D(n.d||T.s!==n.s?T:NaN),n;if(T.s!=n.s)return n.s=-n.s,T.plus(n);if(M=T.d,P=n.d,c=D.precision,g=D.rounding,!M[0]||!P[0]){if(P[0])n.s=-n.s;else if(M[0])n=new D(T);else return new D(g===3?-0:0);return V?K(n,c,g):n}if(r=ze(n.e/H),b=ze(T.e/H),M=M.slice(),l=b-r,l){for(S=l<0,S?(i=M,l=-l,p=P.length):(i=P,r=b,p=M.length),o=Math.max(Math.ceil(c/H),p)+2,l>o&&(l=o,i.length=1),i.reverse(),o=l;o--;)i.push(0);i.reverse()}else{for(o=M.length,p=P.length,S=o<p,S&&(p=o),o=0;o<p;o++)if(M[o]!=P[o]){S=M[o]<P[o];break}l=0}for(S&&(i=M,M=P,P=i,n.s=-n.s),p=M.length,o=P.length-p;o>0;--o)M[p++]=0;for(o=P.length;o>l;){if(M[--o]<P[o]){for(t=o;t&&M[--t]===0;)M[t]=tt-1;--M[t],M[o]+=tt}M[o]-=P[o]}for(;M[--p]===0;)M.pop();for(;M[0]===0;M.shift())--r;return M[0]?(n.d=M,n.e=Ut(M,r),V?K(n,c,g):n):new D(g===3?-0:0)};B.modulo=B.mod=function(n){var i,r=this,o=r.constructor;return n=new o(n),!r.d||!n.s||n.d&&!n.d[0]?new o(NaN):!n.d||r.d&&!r.d[0]?K(new o(r),o.precision,o.rounding):(V=!1,o.modulo==9?(i=ie(r,n.abs(),0,3,1),i.s*=n.s):i=ie(r,n,0,o.modulo,1),i=i.times(n),V=!0,r.minus(i))};B.naturalExponential=B.exp=function(){return Ar(this)};B.naturalLogarithm=B.ln=function(){return ct(this)};B.negated=B.neg=function(){var n=new this.constructor(this);return n.s=-n.s,K(n)};B.plus=B.add=function(n){var i,r,o,t,l,p,c,g,M,b,S=this,P=S.constructor;if(n=new P(n),!S.d||!n.d)return!S.s||!n.s?n=new P(NaN):S.d||(n=new P(n.d||S.s===n.s?S:NaN)),n;if(S.s!=n.s)return n.s=-n.s,S.minus(n);if(M=S.d,b=n.d,c=P.precision,g=P.rounding,!M[0]||!b[0])return b[0]||(n=new P(S)),V?K(n,c,g):n;if(l=ze(S.e/H),o=ze(n.e/H),M=M.slice(),t=l-o,t){for(t<0?(r=M,t=-t,p=b.length):(r=b,o=l,p=M.length),l=Math.ceil(c/H),p=l>p?l+1:p+1,t>p&&(t=p,r.length=1),r.reverse();t--;)r.push(0);r.reverse()}for(p=M.length,t=b.length,p-t<0&&(t=p,r=b,b=M,M=r),i=0;t;)i=(M[--t]=M[t]+b[t]+i)/tt|0,M[t]%=tt;for(i&&(M.unshift(i),++o),p=M.length;M[--p]==0;)M.pop();return n.d=M,n.e=Ut(M,o),V?K(n,c,g):n};B.precision=B.sd=function(n){var i,r=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(dt+n);return r.d?(i=di(r.d),n&&r.e+1>i&&(i=r.e+1)):i=NaN,i};B.round=function(){var n=this,i=n.constructor;return K(new i(n),n.e+1,i.rounding)};B.sine=B.sin=function(){var n,i,r=this,o=r.constructor;return r.isFinite()?r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+H,o.rounding=1,r=wn(o,mi(o,r)),o.precision=n,o.rounding=i,K(at>2?r.neg():r,n,i,!0)):new o(NaN)};B.squareRoot=B.sqrt=function(){var n,i,r,o,t,l,p=this,c=p.d,g=p.e,M=p.s,b=p.constructor;if(M!==1||!c||!c[0])return new b(!M||M<0&&(!c||c[0])?NaN:c?p:1/0);for(V=!1,M=Math.sqrt(+p),M==0||M==1/0?(i=$e(c),(i.length+g)%2==0&&(i+="0"),M=Math.sqrt(i),g=ze((g+1)/2)-(g<0||g%2),M==1/0?i="5e"+g:(i=M.toExponential(),i=i.slice(0,i.indexOf("e")+1)+g),o=new b(i)):o=new b(M.toString()),r=(g=b.precision)+3;;)if(l=o,o=l.plus(ie(p,l,r+2,1)).times(.5),$e(l.d).slice(0,r)===(i=$e(o.d)).slice(0,r))if(i=i.slice(r-3,r+1),i=="9999"||!t&&i=="4999"){if(!t&&(K(l,g+1,0),l.times(l).eq(p))){o=l;break}r+=4,t=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(K(o,g+1,1),n=!o.times(o).eq(p));break}return V=!0,K(o,g,b.rounding,n)};B.tangent=B.tan=function(){var n,i,r=this,o=r.constructor;return r.isFinite()?r.isZero()?new o(r):(n=o.precision,i=o.rounding,o.precision=n+10,o.rounding=1,r=r.sin(),r.s=1,r=ie(r,new o(1).minus(r.times(r)).sqrt(),n+10,0),o.precision=n,o.rounding=i,K(at==2||at==4?r.neg():r,n,i,!0)):new o(NaN)};B.times=B.mul=function(n){var i,r,o,t,l,p,c,g,M,b=this,S=b.constructor,P=b.d,T=(n=new S(n)).d;if(n.s*=b.s,!P||!P[0]||!T||!T[0])return new S(!n.s||P&&!P[0]&&!T||T&&!T[0]&&!P?NaN:!P||!T?n.s/0:n.s*0);for(r=ze(b.e/H)+ze(n.e/H),g=P.length,M=T.length,g<M&&(l=P,P=T,T=l,p=g,g=M,M=p),l=[],p=g+M,o=p;o--;)l.push(0);for(o=M;--o>=0;){for(i=0,t=g+o;t>o;)c=l[t]+T[o]*P[t-o-1]+i,l[t--]=c%tt|0,i=c/tt|0;l[t]=(l[t]+i)%tt|0}for(;!l[--p];)l.pop();return i?++r:l.shift(),n.d=l,n.e=Ut(l,r),V?K(n,S.precision,S.rounding):n};B.toBinary=function(n,i){return Sr(this,2,n,i)};B.toDecimalPlaces=B.toDP=function(n,i){var r=this,o=r.constructor;return r=new o(r),n===void 0?r:(He(n,0,ht),i===void 0?i=o.rounding:He(i,0,8),K(r,n+r.e+1,i))};B.toExponential=function(n,i){var r,o=this,t=o.constructor;return n===void 0?r=nt(o,!0):(He(n,0,ht),i===void 0?i=t.rounding:He(i,0,8),o=K(new t(o),n+1,i),r=nt(o,!0,n+1)),o.isNeg()&&!o.isZero()?"-"+r:r};B.toFixed=function(n,i){var r,o,t=this,l=t.constructor;return n===void 0?r=nt(t):(He(n,0,ht),i===void 0?i=l.rounding:He(i,0,8),o=K(new l(t),n+t.e+1,i),r=nt(o,!1,n+o.e+1)),t.isNeg()&&!t.isZero()?"-"+r:r};B.toFraction=function(n){var i,r,o,t,l,p,c,g,M,b,S,P,T=this,D=T.d,O=T.constructor;if(!D)return new O(T);if(M=r=new O(1),o=g=new O(0),i=new O(o),l=i.e=di(D)-T.e-1,p=l%H,i.d[0]=Fe(10,p<0?H+p:p),n==null)n=l>0?i:M;else{if(c=new O(n),!c.isInt()||c.lt(M))throw Error(dt+c);n=c.gt(i)?l>0?i:M:c}for(V=!1,c=new O($e(D)),b=O.precision,O.precision=l=D.length*H*2;S=ie(c,i,0,1,1),t=r.plus(S.times(o)),t.cmp(n)!=1;)r=o,o=t,t=M,M=g.plus(S.times(t)),g=t,t=i,i=c.minus(S.times(t)),c=t;return t=ie(n.minus(r),o,0,1,1),g=g.plus(t.times(M)),r=r.plus(t.times(o)),g.s=M.s=T.s,P=ie(M,o,l,1).minus(T).abs().cmp(ie(g,r,l,1).minus(T).abs())<1?[M,o]:[g,r],O.precision=b,V=!0,P};B.toHexadecimal=B.toHex=function(n,i){return Sr(this,16,n,i)};B.toNearest=function(n,i){var r=this,o=r.constructor;if(r=new o(r),n==null){if(!r.d)return r;n=new o(1),i=o.rounding}else{if(n=new o(n),i===void 0?i=o.rounding:He(i,0,8),!r.d)return n.s?r:n;if(!n.d)return n.s&&(n.s=r.s),n}return n.d[0]?(V=!1,r=ie(r,n,0,i,1).times(n),V=!0,K(r)):(n.s=r.s,r=n),r};B.toNumber=function(){return+this};B.toOctal=function(n,i){return Sr(this,8,n,i)};B.toPower=B.pow=function(n){var i,r,o,t,l,p,c=this,g=c.constructor,M=+(n=new g(n));if(!c.d||!n.d||!c.d[0]||!n.d[0])return new g(Fe(+c,M));if(c=new g(c),c.eq(1))return c;if(o=g.precision,l=g.rounding,n.eq(1))return K(c,o,l);if(i=ze(n.e/H),i>=n.d.length-1&&(r=M<0?-M:M)<=pn)return t=hi(g,c,r,o),n.s<0?new g(1).div(t):K(t,o,l);if(p=c.s,p<0){if(i<n.d.length-1)return new g(NaN);if((n.d[i]&1)==0&&(p=1),c.e==0&&c.d[0]==1&&c.d.length==1)return c.s=p,c}return r=Fe(+c,M),i=r==0||!isFinite(r)?ze(M*(Math.log("0."+$e(c.d))/Math.LN10+c.e+1)):new g(r+"").e,i>g.maxE+1||i<g.minE-1?new g(i>0?p/0:0):(V=!1,g.rounding=c.s=1,r=Math.min(12,(i+"").length),t=Ar(n.times(ct(c,o+r)),o),t.d&&(t=K(t,o+5,1),St(t.d,o,l)&&(i=o+10,t=K(Ar(n.times(ct(c,i+r)),i),i+5,1),+$e(t.d).slice(o+1,o+15)+1==1e14&&(t=K(t,o+1,0)))),t.s=p,V=!0,g.rounding=l,K(t,o,l))};B.toPrecision=function(n,i){var r,o=this,t=o.constructor;return n===void 0?r=nt(o,o.e<=t.toExpNeg||o.e>=t.toExpPos):(He(n,1,ht),i===void 0?i=t.rounding:He(i,0,8),o=K(new t(o),n,i),r=nt(o,n<=o.e||o.e<=t.toExpNeg,n)),o.isNeg()&&!o.isZero()?"-"+r:r};B.toSignificantDigits=B.toSD=function(n,i){var r=this,o=r.constructor;return n===void 0?(n=o.precision,i=o.rounding):(He(n,1,ht),i===void 0?i=o.rounding:He(i,0,8)),K(new o(r),n,i)};B.toString=function(){var n=this,i=n.constructor,r=nt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos);return n.isNeg()&&!n.isZero()?"-"+r:r};B.truncated=B.trunc=function(){return K(new this.constructor(this),this.e+1,1)};B.valueOf=B.toJSON=function(){var n=this,i=n.constructor,r=nt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos);return n.isNeg()?"-"+r:r};function $e(n){var i,r,o,t=n.length-1,l="",p=n[0];if(t>0){for(l+=p,i=1;i<t;i++)o=n[i]+"",r=H-o.length,r&&(l+=ft(r)),l+=o;p=n[i],o=p+"",r=H-o.length,r&&(l+=ft(r))}else if(p===0)return"0";for(;p%10===0;)p/=10;return l+p}function He(n,i,r){if(n!==~~n||n<i||n>r)throw Error(dt+n)}function St(n,i,r,o){var t,l,p,c;for(l=n[0];l>=10;l/=10)--i;return--i<0?(i+=H,t=0):(t=Math.ceil((i+1)/H),i%=H),l=Fe(10,H-i),c=n[t]%l|0,o==null?i<3?(i==0?c=c/100|0:i==1&&(c=c/10|0),p=r<4&&c==99999||r>3&&c==49999||c==5e4||c==0):p=(r<4&&c+1==l||r>3&&c+1==l/2)&&(n[t+1]/l/100|0)==Fe(10,i-2)-1||(c==l/2||c==0)&&(n[t+1]/l/100|0)==0:i<4?(i==0?c=c/1e3|0:i==1?c=c/100|0:i==2&&(c=c/10|0),p=(o||r<4)&&c==9999||!o&&r>3&&c==4999):p=((o||r<4)&&c+1==l||!o&&r>3&&c+1==l/2)&&(n[t+1]/l/1e3|0)==Fe(10,i-3)-1,p}function It(n,i,r){for(var o,t=[0],l,p=0,c=n.length;p<c;){for(l=t.length;l--;)t[l]*=i;for(t[0]+=yr.indexOf(n.charAt(p++)),o=0;o<t.length;o++)t[o]>r-1&&(t[o+1]===void 0&&(t[o+1]=0),t[o+1]+=t[o]/r|0,t[o]%=r)}return t.reverse()}function mn(n,i){var r,o,t;if(i.isZero())return i;o=i.d.length,o<32?(r=Math.ceil(o/3),t=(1/qt(4,r)).toString()):(r=16,t="2.3283064365386962890625e-10"),n.precision+=r,i=yt(n,1,i.times(t),new n(1));for(var l=r;l--;){var p=i.times(i);i=p.times(p).minus(p).times(8).plus(1)}return n.precision-=r,i}var ie=(function(){function n(o,t,l){var p,c=0,g=o.length;for(o=o.slice();g--;)p=o[g]*t+c,o[g]=p%l|0,c=p/l|0;return c&&o.unshift(c),o}function i(o,t,l,p){var c,g;if(l!=p)g=l>p?1:-1;else for(c=g=0;c<l;c++)if(o[c]!=t[c]){g=o[c]>t[c]?1:-1;break}return g}function r(o,t,l,p){for(var c=0;l--;)o[l]-=c,c=o[l]<t[l]?1:0,o[l]=c*p+o[l]-t[l];for(;!o[0]&&o.length>1;)o.shift()}return function(o,t,l,p,c,g){var M,b,S,P,T,D,O,N,I,x,q,j,z,$,Z,m,y,A,C,L,h=o.constructor,e=o.s==t.s?1:-1,s=o.d,u=t.d;if(!s||!s[0]||!u||!u[0])return new h(!o.s||!t.s||(s?u&&s[0]==u[0]:!u)?NaN:s&&s[0]==0||!u?e*0:e/0);for(g?(T=1,b=o.e-t.e):(g=tt,T=H,b=ze(o.e/T)-ze(t.e/T)),C=u.length,y=s.length,I=new h(e),x=I.d=[],S=0;u[S]==(s[S]||0);S++);if(u[S]>(s[S]||0)&&b--,l==null?($=l=h.precision,p=h.rounding):c?$=l+(o.e-t.e)+1:$=l,$<0)x.push(1),D=!0;else{if($=$/T+2|0,S=0,C==1){for(P=0,u=u[0],$++;(S<y||P)&&$--;S++)Z=P*g+(s[S]||0),x[S]=Z/u|0,P=Z%u|0;D=P||S<y}else{for(P=g/(u[0]+1)|0,P>1&&(u=n(u,P,g),s=n(s,P,g),C=u.length,y=s.length),m=C,q=s.slice(0,C),j=q.length;j<C;)q[j++]=0;L=u.slice(),L.unshift(0),A=u[0],u[1]>=g/2&&++A;do P=0,M=i(u,q,C,j),M<0?(z=q[0],C!=j&&(z=z*g+(q[1]||0)),P=z/A|0,P>1?(P>=g&&(P=g-1),O=n(u,P,g),N=O.length,j=q.length,M=i(O,q,N,j),M==1&&(P--,r(O,C<N?L:u,N,g))):(P==0&&(M=P=1),O=u.slice()),N=O.length,N<j&&O.unshift(0),r(q,O,j,g),M==-1&&(j=q.length,M=i(u,q,C,j),M<1&&(P++,r(q,C<j?L:u,j,g))),j=q.length):M===0&&(P++,q=[0]),x[S++]=P,M&&q[0]?q[j++]=s[m]||0:(q=[s[m]],j=1);while((m++<y||q[0]!==void 0)&&$--);D=q[0]!==void 0}x[0]||x.shift()}if(T==1)I.e=b,ai=D;else{for(S=1,P=x[0];P>=10;P/=10)S++;I.e=S+b*T-1,K(I,c?l+I.e+1:l,p,D)}return I}})();function K(n,i,r,o){var t,l,p,c,g,M,b,S,P,T=n.constructor;e:if(i!=null){if(S=n.d,!S)return n;for(t=1,c=S[0];c>=10;c/=10)t++;if(l=i-t,l<0)l+=H,p=i,b=S[P=0],g=b/Fe(10,t-p-1)%10|0;else if(P=Math.ceil((l+1)/H),c=S.length,P>=c)if(o){for(;c++<=P;)S.push(0);b=g=0,t=1,l%=H,p=l-H+1}else break e;else{for(b=c=S[P],t=1;c>=10;c/=10)t++;l%=H,p=l-H+t,g=p<0?0:b/Fe(10,t-p-1)%10|0}if(o=o||i<0||S[P+1]!==void 0||(p<0?b:b%Fe(10,t-p-1)),M=r<4?(g||o)&&(r==0||r==(n.s<0?3:2)):g>5||g==5&&(r==4||o||r==6&&(l>0?p>0?b/Fe(10,t-p):0:S[P-1])%10&1||r==(n.s<0?8:7)),i<1||!S[0])return S.length=0,M?(i-=n.e+1,S[0]=Fe(10,(H-i%H)%H),n.e=-i||0):S[0]=n.e=0,n;if(l==0?(S.length=P,c=1,P--):(S.length=P+1,c=Fe(10,H-l),S[P]=p>0?(b/Fe(10,t-p)%Fe(10,p)|0)*c:0),M)for(;;)if(P==0){for(l=1,p=S[0];p>=10;p/=10)l++;for(p=S[0]+=c,c=1;p>=10;p/=10)c++;l!=c&&(n.e++,S[0]==tt&&(S[0]=1));break}else{if(S[P]+=c,S[P]!=tt)break;S[P--]=0,c=1}for(l=S.length;S[--l]===0;)S.pop()}return V&&(n.e>T.maxE?(n.d=null,n.e=NaN):n.e<T.minE&&(n.e=0,n.d=[0])),n}function nt(n,i,r){if(!n.isFinite())return gi(n);var o,t=n.e,l=$e(n.d),p=l.length;return i?(r&&(o=r-p)>0?l=l.charAt(0)+"."+l.slice(1)+ft(o):p>1&&(l=l.charAt(0)+"."+l.slice(1)),l=l+(n.e<0?"e":"e+")+n.e):t<0?(l="0."+ft(-t-1)+l,r&&(o=r-p)>0&&(l+=ft(o))):t>=p?(l+=ft(t+1-p),r&&(o=r-t-1)>0&&(l=l+"."+ft(o))):((o=t+1)<p&&(l=l.slice(0,o)+"."+l.slice(o)),r&&(o=r-p)>0&&(t+1===p&&(l+="."),l+=ft(o))),l}function Ut(n,i){var r=n[0];for(i*=H;r>=10;r/=10)i++;return i}function Et(n,i,r){if(i>gn)throw V=!0,r&&(n.precision=r),Error(li);return K(new n(Bt),i,1,!0)}function it(n,i,r){if(i>kr)throw Error(li);return K(new n(Nt),i,r,!0)}function di(n){var i=n.length-1,r=i*H+1;if(i=n[i],i){for(;i%10==0;i/=10)r--;for(i=n[0];i>=10;i/=10)r++}return r}function ft(n){for(var i="";n--;)i+="0";return i}function hi(n,i,r,o){var t,l=new n(1),p=Math.ceil(o/H+4);for(V=!1;;){if(r%2&&(l=l.times(i),oi(l.d,p)&&(t=!0)),r=ze(r/2),r===0){r=l.d.length-1,t&&l.d[r]===0&&++l.d[r];break}i=i.times(i),oi(i.d,p)}return V=!0,l}function ni(n){return n.d[n.d.length-1]&1}function pi(n,i,r){for(var o,t,l=new n(i[0]),p=0;++p<i.length;){if(t=new n(i[p]),!t.s){l=t;break}o=l.cmp(t),(o===r||o===0&&l.s===r)&&(l=t)}return l}function Ar(n,i){var r,o,t,l,p,c,g,M=0,b=0,S=0,P=n.constructor,T=P.rounding,D=P.precision;if(!n.d||!n.d[0]||n.e>17)return new P(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(i==null?(V=!1,g=D):g=i,c=new P(.03125);n.e>-2;)n=n.times(c),S+=5;for(o=Math.log(Fe(2,S))/Math.LN10*2+5|0,g+=o,r=l=p=new P(1),P.precision=g;;){if(l=K(l.times(n),g,1),r=r.times(++b),c=p.plus(ie(l,r,g,1)),$e(c.d).slice(0,g)===$e(p.d).slice(0,g)){for(t=S;t--;)p=K(p.times(p),g,1);if(i==null)if(M<3&&St(p.d,g-o,T,M))P.precision=g+=10,r=l=c=new P(1),b=0,M++;else return K(p,P.precision=D,T,V=!0);else return P.precision=D,p}p=c}}function ct(n,i){var r,o,t,l,p,c,g,M,b,S,P,T=1,D=10,O=n,N=O.d,I=O.constructor,x=I.rounding,q=I.precision;if(O.s<0||!N||!N[0]||!O.e&&N[0]==1&&N.length==1)return new I(N&&!N[0]?-1/0:O.s!=1?NaN:N?0:O);if(i==null?(V=!1,b=q):b=i,I.precision=b+=D,r=$e(N),o=r.charAt(0),Math.abs(l=O.e)<15e14){for(;o<7&&o!=1||o==1&&r.charAt(1)>3;)O=O.times(n),r=$e(O.d),o=r.charAt(0),T++;l=O.e,o>1?(O=new I("0."+r),l++):O=new I(o+"."+r.slice(1))}else return M=Et(I,b+2,q).times(l+""),O=ct(new I(o+"."+r.slice(1)),b-D).plus(M),I.precision=q,i==null?K(O,q,x,V=!0):O;for(S=O,g=p=O=ie(O.minus(1),O.plus(1),b,1),P=K(O.times(O),b,1),t=3;;){if(p=K(p.times(P),b,1),M=g.plus(ie(p,new I(t),b,1)),$e(M.d).slice(0,b)===$e(g.d).slice(0,b))if(g=g.times(2),l!==0&&(g=g.plus(Et(I,b+2,q).times(l+""))),g=ie(g,new I(T),b,1),i==null)if(St(g.d,b-D,x,c))I.precision=b+=D,M=p=O=ie(S.minus(1),S.plus(1),b,1),P=K(O.times(O),b,1),t=c=1;else return K(g,I.precision=q,x,V=!0);else return I.precision=q,g;g=M,t+=2}}function gi(n){return String(n.s*n.s/0)}function Rt(n,i){var r,o,t;for((r=i.indexOf("."))>-1&&(i=i.replace(".","")),(o=i.search(/e/i))>0?(r<0&&(r=o),r+=+i.slice(o+1),i=i.substring(0,o)):r<0&&(r=i.length),o=0;i.charCodeAt(o)===48;o++);for(t=i.length;i.charCodeAt(t-1)===48;--t);if(i=i.slice(o,t),i){if(t-=o,n.e=r=r-o-1,n.d=[],o=(r+1)%H,r<0&&(o+=H),o<t){for(o&&n.d.push(+i.slice(0,o)),t-=H;o<t;)n.d.push(+i.slice(o,o+=H));i=i.slice(o),o=H-i.length}else o-=t;for(;o--;)i+="0";n.d.push(+i),V&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function vn(n,i){var r,o,t,l,p,c,g,M,b;if(i.indexOf("_")>-1){if(i=i.replace(/(\d)_(?=\d)/g,"$1"),ci.test(i))return Rt(n,i)}else if(i==="Infinity"||i==="NaN")return+i||(n.s=NaN),n.e=NaN,n.d=null,n;if(dn.test(i))r=16,i=i.toLowerCase();else if(cn.test(i))r=2;else if(hn.test(i))r=8;else throw Error(dt+i);for(l=i.search(/p/i),l>0?(g=+i.slice(l+1),i=i.substring(2,l)):i=i.slice(2),l=i.indexOf("."),p=l>=0,o=n.constructor,p&&(i=i.replace(".",""),c=i.length,l=c-l,t=hi(o,new o(r),l,l*2)),M=It(i,r,tt),b=M.length-1,l=b;M[l]===0;--l)M.pop();return l<0?new o(n.s*0):(n.e=Ut(M,b),n.d=M,V=!1,p&&(n=ie(n,t,c*4)),g&&(n=n.times(Math.abs(g)<54?Fe(2,g):Pt.pow(2,g))),V=!0,n)}function wn(n,i){var r,o=i.d.length;if(o<3)return i.isZero()?i:yt(n,2,i,i);r=1.4*Math.sqrt(o),r=r>16?16:r|0,i=i.times(1/qt(5,r)),i=yt(n,2,i,i);for(var t,l=new n(5),p=new n(16),c=new n(20);r--;)t=i.times(i),i=i.times(l.plus(t.times(p.times(t).minus(c))));return i}function yt(n,i,r,o,t){var l,p,c,g,M=1,b=n.precision,S=Math.ceil(b/H);for(V=!1,g=r.times(r),c=new n(o);;){if(p=ie(c.times(g),new n(i++*i++),b,1),c=t?o.plus(p):o.minus(p),o=ie(p.times(g),new n(i++*i++),b,1),p=c.plus(o),p.d[S]!==void 0){for(l=S;p.d[l]===c.d[l]&&l--;);if(l==-1)break}l=c,c=o,o=p,p=l,M++}return V=!0,p.d.length=S+1,p}function qt(n,i){for(var r=n;--i;)r*=n;return r}function mi(n,i){var r,o=i.s<0,t=it(n,n.precision,1),l=t.times(.5);if(i=i.abs(),i.lte(l))return at=o?4:1,i;if(r=i.divToInt(t),r.isZero())at=o?3:2;else{if(i=i.minus(r.times(t)),i.lte(l))return at=ni(r)?o?2:3:o?4:1,i;at=ni(r)?o?1:4:o?3:2}return i.minus(t).abs()}function Sr(n,i,r,o){var t,l,p,c,g,M,b,S,P,T=n.constructor,D=r!==void 0;if(D?(He(r,1,ht),o===void 0?o=T.rounding:He(o,0,8)):(r=T.precision,o=T.rounding),!n.isFinite())b=gi(n);else{for(b=nt(n),p=b.indexOf("."),D?(t=2,i==16?r=r*4-3:i==8&&(r=r*3-2)):t=i,p>=0&&(b=b.replace(".",""),P=new T(1),P.e=b.length-p,P.d=It(nt(P),10,t),P.e=P.d.length),S=It(b,10,t),l=g=S.length;S[--g]==0;)S.pop();if(!S[0])b=D?"0p+0":"0";else{if(p<0?l--:(n=new T(n),n.d=S,n.e=l,n=ie(n,P,r,o,0,t),S=n.d,l=n.e,M=ai),p=S[r],c=t/2,M=M||S[r+1]!==void 0,M=o<4?(p!==void 0||M)&&(o===0||o===(n.s<0?3:2)):p>c||p===c&&(o===4||M||o===6&&S[r-1]&1||o===(n.s<0?8:7)),S.length=r,M)for(;++S[--r]>t-1;)S[r]=0,r||(++l,S.unshift(1));for(g=S.length;!S[g-1];--g);for(p=0,b="";p<g;p++)b+=yr.charAt(S[p]);if(D){if(g>1)if(i==16||i==8){for(p=i==16?4:3,--g;g%p;g++)b+="0";for(S=It(b,t,i),g=S.length;!S[g-1];--g);for(p=1,b="1.";p<g;p++)b+=yr.charAt(S[p])}else b=b.charAt(0)+"."+b.slice(1);b=b+(l<0?"p":"p+")+l}else if(l<0){for(;++l;)b="0"+b;b="0."+b}else if(++l>g)for(l-=g;l--;)b+="0";else l<g&&(b=b.slice(0,l)+"."+b.slice(l))}b=(i==16?"0x":i==2?"0b":i==8?"0o":"")+b}return n.s<0?"-"+b:b}function oi(n,i){if(n.length>i)return n.length=i,!0}function Mn(n){return new this(n).abs()}function bn(n){return new this(n).acos()}function yn(n){return new this(n).acosh()}function _n(n,i){return new this(n).plus(i)}function kn(n){return new this(n).asin()}function An(n){return new this(n).asinh()}function Sn(n){return new this(n).atan()}function Pn(n){return new this(n).atanh()}function Cn(n,i){n=new this(n),i=new this(i);var r,o=this.precision,t=this.rounding,l=o+4;return!n.s||!i.s?r=new this(NaN):!n.d&&!i.d?(r=it(this,l,1).times(i.s>0?.25:.75),r.s=n.s):!i.d||n.isZero()?(r=i.s<0?it(this,o,t):new this(0),r.s=n.s):!n.d||i.isZero()?(r=it(this,l,1).times(.5),r.s=n.s):i.s<0?(this.precision=l,this.rounding=1,r=this.atan(ie(n,i,l,1)),i=it(this,l,1),this.precision=o,this.rounding=t,r=n.s<0?r.minus(i):r.plus(i)):r=this.atan(ie(n,i,l,1)),r}function Ln(n){return new this(n).cbrt()}function Tn(n){return K(n=new this(n),n.e+1,2)}function xn(n,i,r){return new this(n).clamp(i,r)}function Dn(n){if(!n||typeof n!="object")throw Error(Ft+"Object expected");var i,r,o,t=n.defaults===!0,l=["precision",1,ht,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(i=0;i<l.length;i+=3)if(r=l[i],t&&(this[r]=_r[r]),(o=n[r])!==void 0)if(ze(o)===o&&o>=l[i+1]&&o<=l[i+2])this[r]=o;else throw Error(dt+r+": "+o);if(r="crypto",t&&(this[r]=_r[r]),(o=n[r])!==void 0)if(o===!0||o===!1||o===0||o===1)if(o)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(ui);else this[r]=!1;else throw Error(dt+r+": "+o);return this}function On(n){return new this(n).cos()}function In(n){return new this(n).cosh()}function vi(n){var i,r,o;function t(l){var p,c,g,M=this;if(!(M instanceof t))return new t(l);if(M.constructor=t,si(l)){M.s=l.s,V?!l.d||l.e>t.maxE?(M.e=NaN,M.d=null):l.e<t.minE?(M.e=0,M.d=[0]):(M.e=l.e,M.d=l.d.slice()):(M.e=l.e,M.d=l.d?l.d.slice():l.d);return}if(g=typeof l,g==="number"){if(l===0){M.s=1/l<0?-1:1,M.e=0,M.d=[0];return}if(l<0?(l=-l,M.s=-1):M.s=1,l===~~l&&l<1e7){for(p=0,c=l;c>=10;c/=10)p++;V?p>t.maxE?(M.e=NaN,M.d=null):p<t.minE?(M.e=0,M.d=[0]):(M.e=p,M.d=[l]):(M.e=p,M.d=[l]);return}if(l*0!==0){l||(M.s=NaN),M.e=NaN,M.d=null;return}return Rt(M,l.toString())}if(g==="string")return(c=l.charCodeAt(0))===45?(l=l.slice(1),M.s=-1):(c===43&&(l=l.slice(1)),M.s=1),ci.test(l)?Rt(M,l):vn(M,l);if(g==="bigint")return l<0?(l=-l,M.s=-1):M.s=1,Rt(M,l.toString());throw Error(dt+l)}if(t.prototype=B,t.ROUND_UP=0,t.ROUND_DOWN=1,t.ROUND_CEIL=2,t.ROUND_FLOOR=3,t.ROUND_HALF_UP=4,t.ROUND_HALF_DOWN=5,t.ROUND_HALF_EVEN=6,t.ROUND_HALF_CEIL=7,t.ROUND_HALF_FLOOR=8,t.EUCLID=9,t.config=t.set=Dn,t.clone=vi,t.isDecimal=si,t.abs=Mn,t.acos=bn,t.acosh=yn,t.add=_n,t.asin=kn,t.asinh=An,t.atan=Sn,t.atanh=Pn,t.atan2=Cn,t.cbrt=Ln,t.ceil=Tn,t.clamp=xn,t.cos=On,t.cosh=In,t.div=Rn,t.exp=Bn,t.floor=Nn,t.hypot=En,t.ln=Fn,t.log=Un,t.log10=jn,t.log2=qn,t.max=$n,t.min=Zn,t.mod=Wn,t.mul=zn,t.pow=Kn,t.random=Gn,t.round=Hn,t.sign=Vn,t.sin=Qn,t.sinh=Xn,t.sqrt=Jn,t.sub=Yn,t.sum=eo,t.tan=to,t.tanh=ro,t.trunc=io,n===void 0&&(n={}),n&&n.defaults!==!0)for(o=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],i=0;i<o.length;)n.hasOwnProperty(r=o[i++])||(n[r]=this[r]);return t.config(n),t}function Rn(n,i){return new this(n).div(i)}function Bn(n){return new this(n).exp()}function Nn(n){return K(n=new this(n),n.e+1,3)}function En(){var n,i,r=new this(0);for(V=!1,n=0;n<arguments.length;)if(i=new this(arguments[n++]),i.d)r.d&&(r=r.plus(i.times(i)));else{if(i.s)return V=!0,new this(1/0);r=i}return V=!0,r.sqrt()}function si(n){return n instanceof Pt||n&&n.toStringTag===fi||!1}function Fn(n){return new this(n).ln()}function Un(n,i){return new this(n).log(i)}function qn(n){return new this(n).log(2)}function jn(n){return new this(n).log(10)}function $n(){return pi(this,arguments,-1)}function Zn(){return pi(this,arguments,1)}function Wn(n,i){return new this(n).mod(i)}function zn(n,i){return new this(n).mul(i)}function Kn(n,i){return new this(n).pow(i)}function Gn(n){var i,r,o,t,l=0,p=new this(1),c=[];if(n===void 0?n=this.precision:He(n,1,ht),o=Math.ceil(n/H),this.crypto)if(crypto.getRandomValues)for(i=crypto.getRandomValues(new Uint32Array(o));l<o;)t=i[l],t>=429e7?i[l]=crypto.getRandomValues(new Uint32Array(1))[0]:c[l++]=t%1e7;else if(crypto.randomBytes){for(i=crypto.randomBytes(o*=4);l<o;)t=i[l]+(i[l+1]<<8)+(i[l+2]<<16)+((i[l+3]&127)<<24),t>=214e7?crypto.randomBytes(4).copy(i,l):(c.push(t%1e7),l+=4);l=o/4}else throw Error(ui);else for(;l<o;)c[l++]=Math.random()*1e7|0;for(o=c[--l],n%=H,o&&n&&(t=Fe(10,H-n),c[l]=(o/t|0)*t);c[l]===0;l--)c.pop();if(l<0)r=0,c=[0];else{for(r=-1;c[0]===0;r-=H)c.shift();for(o=1,t=c[0];t>=10;t/=10)o++;o<H&&(r-=H-o)}return p.e=r,p.d=c,p}function Hn(n){return K(n=new this(n),n.e+1,this.rounding)}function Vn(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Qn(n){return new this(n).sin()}function Xn(n){return new this(n).sinh()}function Jn(n){return new this(n).sqrt()}function Yn(n,i){return new this(n).sub(i)}function eo(){var n=0,i=arguments,r=new this(i[n]);for(V=!1;r.s&&++n<i.length;)r=r.plus(i[n]);return V=!0,K(r,this.precision,this.rounding)}function to(n){return new this(n).tan()}function ro(n){return new this(n).tanh()}function io(n){return K(n=new this(n),n.e+1,1)}B[Symbol.for("nodejs.util.inspect.custom")]=B.toString;B[Symbol.toStringTag]="Decimal";var Pt=B.constructor=vi(_r);Bt=new Pt(Bt);Nt=new Pt(Nt);var Ue=Pt;var Dr=qi(Mi());import{Transaction as rt}from"@mysten/sui/transactions";import{addHexPrefix as bi,d as ot,getObjectFields as Ai}from"@cetusprotocol/common-sdk";import{parseObligation as no}from"@suilend/sdk/parsers/obligation";import{getNetAprPercent as oo,getTotalAprPercent as yi,Side as _i,getFilteredRewards as ki}from"@suilend/sdk";var Cr=n=>{let i=Ai(n),{openPermissionsPause:r,closePermissionsPause:o,depositPermissionsPause:t,withdrawPermissionsPause:l,borrowPermissionsPause:p,repayPermissionsPause:c}=xr(i.permissions.toString(2));return{marketId:i.id.id,baseToken:bi(i.base_token.fields.name),quoteToken:bi(i.quote_token.fields.name),maxLongLeverage:ot(i.max_long_leverage).div(10**6).toString(),maxShortLeverage:ot(i.max_short_leverage).div(10**6).toString(),openFeeRate:ot(i.open_fee_rate).div(10**6).toString(),closeFeeRate:ot(i.close_fee_rate).div(10**6).toString(),openPermissionsPause:r,closePermissionsPause:o,depositPermissionsPause:t,withdrawPermissionsPause:l,borrowPermissionsPause:p,repayPermissionsPause:c}},Lr=(n,i)=>{let r=Ai(n);return{createdAt:r.created_ts,positionId:r.id.id,initDepositAmount:r.init_deposit_amount,isLong:r.is_long,lendingMarketId:r.lending_market_id,obligationOwnerCap:r.obligation_owner_cap.fields.obligation_id,marketId:r.market_id,positionCapId:i}},Tr=(n,i,r,o,t)=>{let l=no(i,r),p=oo(l,t,o);if(!l.deposits||l.deposits.length===0)throw new Error("No deposits found in obligation data");let c=l.deposits[0],g=ot(c.reserve.config.closeLtvPct).div(100).toString(),M=ot(c.reserve.config.openLtvPct).div(100).toString(),b=l.depositedAmountUsd.gt(0)?l.borrowedAmountUsd.div(l.depositedAmountUsd).toString():"0",S=ot(1).div(g).toString(),P=ot(g).sub(b).toString(),T="0",D="0",O="0",N="0";if(l.borrows&&l.borrows.length>0){let I=l.borrows[0],x=t[I?.coinType];x&&(T=yi(_i.BORROW,I?.reserve.borrowAprPercent,ki(x.borrow)).toString()),O=I.borrowedAmountUsd.toString(),N=I.borrowedAmount.toString()}if(l.deposits&&l.deposits.length>0){let I=l.deposits[0],x=t[I?.coinType];x&&(D=yi(_i.DEPOSIT,I?.reserve.depositAprPercent,ki(x.deposit)).toString())}return{...n,...l,originObligation:i,netAprPercent:p.toString(),suppliedAPR:ot(D).toString(),borrowedAPR:ot(T).toString(),closeLTV:g,openLTV:M,cr:b,ltr:S,liquidationBuffer:P,depositedAmountUsd:c.depositedAmountUsd.toString(),borrowedAmountUsd:O,depositedAmount:c.depositedAmount.toString(),borrowedAmount:N}},xr=n=>{let i=n.length,r=n.substring(i-1,i)==="0",o=n.substring(i-2,i-1)==="0",t=n.substring(i-3,i-2)==="0",l=n.substring(i-4,i-3)==="0",p=n.substring(i-5,i-4)==="0",c=n.substring(i-6,i-5)==="0";return{openPermissionsPause:r,closePermissionsPause:o,depositPermissionsPause:t,withdrawPermissionsPause:l,borrowPermissionsPause:p,repayPermissionsPause:c}};import{SUI_SYSTEM_STATE_OBJECT_ID as Li}from"@mysten/sui/utils";import{compoundDebt as Ti,getFilteredRewards as gt,getStakingYieldAprPercent as xi,getTotalAprPercent as jt,Side as kt}from"@suilend/sdk";var $t=class{constructor(i){this.getLeverageConfig=async()=>{let{package_id:i}=this._sdk.sdkOptions.leverage,r=ne(this._sdk.sdkOptions.leverage);try{let o=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::versioned::InitEvent`}),t=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::admin_cap::InitEvent`}),l=await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::config::InitEvent`}),c=(await this._sdk.FullClient.queryEventsByPage({MoveEventType:`${i}::market::InitEvent`})).data[0].parsedJson.markets_id,M=(await this._sdk.FullClient.getObject({id:c,options:{showContent:!0}})).data.content.fields.list.fields.id.id;return{versioned:o.data[0].parsedJson.versioned,admin_cap_id:t.data[0].parsedJson.admin_cap_id,global_config_id:l.data[0].parsedJson.global_config_id,markets:c,markets_table_id:M}}catch(o){return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:78 ~ LeverageModules ~ error:",o),{versioned:"",admin_cap_id:"",global_config_id:"",markets_table_id:"",markets:""}}};this.getLeverageMarketsList=async(i=!1)=>{let o=this._sdk.getCache("leverage_markets_list",i);if(o)return o;let{package_id:t}=this._sdk.sdkOptions.leverage,l=[];try{let p=`${t}::market::CreateMarketEvent`,c=await this._sdk.FullClient.queryEventsByPage({MoveEventType:p});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:98 ~ LeverageModules ~ objects:",c);let g=c.data.map(M=>M.parsedJson.market_id);if(g.length>0)return(await this._sdk.FullClient.batchGetObjects(g,{showContent:!0,showType:!0})).forEach(b=>{let S=Cr(b),P=`leverage_market_info_${S.marketId}`;this._sdk.updateCache(P,S),l.push(S)}),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:106 ~ LeverageModules ~ marketList:",l),l}catch(p){return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:108 ~ LeverageModules ~ error:",p),[]}};this.getLeverageMarketSuilendInfo=async i=>{let{baseToken:r,quoteToken:o}=await this.getLeverageMarketInfo(i),{lendingMarketId:t}=ne(this._sdk.sdkOptions.suilend),{allLendingMarketData:l,lstAprPercentMap:p}=await this._sdk.SuiLendModule.getLendingMarketData(!0),{baseReserveMapInfo:c,quoteReserveMapInfo:g}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(r,o,l),M=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:l,lstAprPercentMap:p},!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:100 ~ LeverageModules ~ obligations:",M);let b=M[t].rewardMap[r],S=M[t].rewardMap[o],{depositedAmountUsd:P,borrowedAmountUsd:T,depositAprPercent:D,borrowAprPercent:O,depositedAmount:N,borrowedAmount:I}=c,{depositLimit:x,borrowLimit:q}=c.config,{depositedAmountUsd:j,borrowedAmountUsd:z,depositAprPercent:$,borrowAprPercent:Z,depositedAmount:m,borrowedAmount:y}=g,{depositLimit:A,borrowLimit:C}=g.config,L=jt(kt.DEPOSIT,D,gt(b.deposit),xi(kt.DEPOSIT,r,p)),h=jt(kt.BORROW,O,gt(b.borrow)),e=jt(kt.DEPOSIT,$,gt(S.deposit),xi(kt.DEPOSIT,r,p)),s=jt(kt.BORROW,Z,gt(S.borrow)),u=c.config.borrowLimitUsd,f=g.config.borrowLimitUsd,d=R(j.toString()).sub(z.toString()).toString(),v=R(P.toString()).sub(T.toString()).toString(),k=R(x.toString()).sub(R(N.toString())).toString(),w=R(q.toString()).sub(R(I.toString())).toString(),a=R(A.toString()).sub(R(m.toString())).toString(),_=R(C.toString()).sub(R(y.toString())).toString();return{longLiquidity:d,shortLiquidity:v,baseTotalDepositAprPercent:L.toString(),baseTotalBorrowAprPercent:h.toString(),quoteTotalDepositAprPercent:e.toString(),quoteTotalBorrowAprPercent:s.toString(),baseTokenAvailableDepositAmount:k,baseTokenAvailableBorrowAmount:w,quoteTokenAvailableDepositAmount:a,quoteTokenAvailableBorrowAmount:_,baseDepositRewards:gt(b.deposit),quoteDepositRewards:gt(S.deposit),baseBorrowRewards:gt(b.borrow),quoteBorrowRewards:gt(S.borrow),baseDepositAprPercent:D.toString(),baseBorrowAprPercent:O.toString(),quoteDepositAprPercent:$.toString(),quoteBorrowAprPercent:Z.toString()}};this.getLeverageMarketInfo=async(i,r=!1)=>{let o=`leverage_market_info_${i}`,t=this._sdk.getCache(o,r);if(t)return t;let l=await this._sdk.FullClient.getObject({id:i,options:{showContent:!0}}),p=Cr(l);return this._sdk.updateCache(o,p,Si),p};this.getLeveragePositionList=async(i=this._sdk.getSenderAddress())=>{let r=await this._sdk.FullClient.getOwnedObjectsByPage(i,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{MatchAny:[{Package:this._sdk.sdkOptions.leverage.package_id}]}});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:126 ~ LeverageModules ~ ownerRes:",r);let{lendingMarketId:o,lendingMarketType:t}=ne(this._sdk.sdkOptions.suilend),l=await this._sdk.SuiLendModule.getSuilendClient(o,t),{allLendingMarketData:p,lstAprPercentMap:c}=await this._sdk.SuiLendModule.getLendingMarketData(),g=p[o].reserveMap,M=[],b=[],S=[];for(let D=0;D<r.data.length;D++){let O=Pi(r.data[D]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:259 ~ LeverageModules ~ fields:",O),O.position_id&&(b.push(O.position_id),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:260 ~ LeverageModules ~ positionIdList:",b),M.push(O.id.id))}let P=await this._sdk.FullClient.batchGetObjects(b,{showContent:!0}),T=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:p,lstAprPercentMap:c},!0);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:269 ~ LeverageModules ~ obligations:",T);for(let D=0;D<P.length;D++){let O=Lr(P[D],M[D]),N=await l.getObligation(O.obligationOwnerCap);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:250 ~ LeverageModules ~ rawObligation:",N);let I=Tr(O,N,g||{},c||{},T[o].rewardMap);S.push({...I})}return S};this.getLeveragePosition=async(i,r=this._sdk.getSenderAddress(),o=!0)=>{console.log("\u{1F680} ~ LeverageModules ~ walletAddress:",r);let t=`leverage_position_${i}`,l=this._sdk.getCache(t,o);if(l)return l;let p=await this._sdk.FullClient.getOwnedObjectsByPage(r,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{ObjectId:i}}),c=Pi(p.data[0]),g=await this._sdk.FullClient.batchGetObjects([c.position_id],{showContent:!0}),M=Lr(g[0],i),{lendingMarketId:b,lendingMarketType:S}=ne(this._sdk.sdkOptions.suilend),P=await this._sdk.SuiLendModule.getSuilendClient(b,S),{allLendingMarketData:T,lstAprPercentMap:D}=await this._sdk.SuiLendModule.getLendingMarketData(),O=T[b].reserveMap,N=await this._sdk.SuiLendModule.getInitializeObligations({allLendingMarketData:T,lstAprPercentMap:D},!0),I=await P.getObligation(M.obligationOwnerCap),q={...Tr(M,I,O||{},D||{},N[b].rewardMap)};return this._sdk.updateCache(t,q,Si),q};this.getClmmPoolInfo=async i=>{let r=await this._sdk.ClmmSDK.Pool.getPool(i,!1),{coin_type_a:o,coin_type_b:t,fee_rate:l}=r;return{clmmFeeTier:l/1e6,clmmPoolCoinTypeA:o,clmmPoolCoinTypeB:t}};this.openLeveragePosition=async i=>{let{isQuote:r,isLong:o,amount:t,swapClmmPool:l="",slippage:p,leverage:c,marketId:g}=i,{lendingMarketId:M}=ne(this._sdk.sdkOptions.suilend),b=new rt,{openFeeRate:S,baseToken:P,quoteToken:T}=await this.getLeverageMarketInfo(g),{baseReserveArrayIndex:D,quoteReserveArrayIndex:O,reserve:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(P,T),I=N[0].mintDecimals,x=N[1].mintDecimals,{inputCoin:q,initDepositAmount:j}=await this.handleSwapLogic({isLong:o,isQuote:r,amount:t,baseToken:P,quoteToken:T,swapClmmPool:l,slippage:p,tx:b}),{flashAmount:z,flashLoanCoin:$,isFlashA:Z,flashLoanFee:m,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A,clmmPool:C}=await this.calculateFlashLoanParams({isLong:o,leverage:c,baseToken:P,quoteToken:T,initDepositAmount:j,reserve:N,baseTokenDecimal:I,quoteTokenDecimal:x,openFeeRate:S});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:489 ~ LeverageModules ~ flashAmount:",z);let{balanceA:L,balanceB:h,receipt:e}=this.flashLoan({amount:R(z),clmmPool:C,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A,flashLoanCoin:$,tx:b}),{debtSwapAmountOut:s,debtSwapOutCoin:u}=await this.handleDebtSwapLogic({isLong:o,flashAmount:z,baseToken:P,quoteToken:T,swapClmmPool:l,isFlashA:Z,balanceA:L,balanceB:h,slippage:p,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A,tx:b});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:528 ~ LeverageModules ~ debtSwapAmountOut:",s.toString());let f=R(s).add(j).mul(1-S).toDP(0,Ue.ROUND_DOWN).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:550 ~ LeverageModules ~ totalDepositAmount:",f),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:528 ~ LeverageModules ~ debtSwapAmountOut:",s);let{positionCap:d,marginTradingContext:v}=this.createLeveragePosition({leverage:c,marketId:g,baseToken:P,quoteToken:T,isLong:o,initDepositAmount:R(t).toString(),initCoinType:r?T:P,tx:b});await this._sdk.SuiLendModule.refreshReservePrices(b,N);let k=o?D:O;await b.mergeCoins(u,[q]),await this.depositToLeveragePosition({isLong:o,marketId:g,positionCap:d,depositReserveArrayIndex:k,inputCoin:u,marginTradingContext:v},b);let w=R(z).add(m).toDP(0,Ue.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:407 ~ LeverageModules ~ borrowAmount:",{flashAmount:z,flashLoanFee:m,clmmPool:C});let a=this.borrowAsset({positionCap:d,reserveArrayIndex:o?O:D,borrowAmount:R(w),baseToken:P,quoteToken:T,isLong:o,lendingMarketId:M,marketId:g,marginTradingContext:v},b),_=Y.mintBalanceZero(Z?A:y,b);return this.repayFlashLoan({tx:b,clmmPool:C,repayBase:Z?Y.intoBalance(a,y,b):_,repayQuote:Z?_:Y.intoBalance(a,A,b),receipt:e,clmmPoolCoinTypeA:y,clmmPoolCoinTypeB:A}),b.transferObjects([d],b.pure.address(this._sdk.getSenderAddress())),Y.destroyBalanceZero(Z?h:L,Z?A:y,b),await this.marginTradingContextConfirm(v,b),b};this.positionManageSizeDeposit=async i=>{let{marketId:r,positionCapId:o,swapClmmPool:t="",isQuote:l,amount:p,slippage:c,leverage:g,txb:M}=i,{lendingMarketId:b}=ne(this._sdk.sdkOptions.suilend),{baseToken:S,quoteToken:P}=await this.getLeverageMarketInfo(r),{isLong:T,deposits:D,borrows:O}=await this.getLeveragePosition(o),{reserve:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(S,P),I=M||new rt,x=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"increase_size",coinType:l?P:S,amount:p.toString()},I),q=D[0].reserveArrayIndex.toString(),j=O[0].reserveArrayIndex.toString(),{inputCoin:z,initDepositAmount:$}=await this.handleSwapLogic({isLong:T,isQuote:l,amount:p,baseToken:S,quoteToken:P,swapClmmPool:t,slippage:c,tx:I}),{flashAmount:Z,flashLoanFee:m,flashLoanCoin:y,isFlashA:A,borrowAmount:C}=await this.calculatePositionDeposit({marketId:r,isLong:T,isQuote:l,amount:R(p),swapClmmPool:t,leverage:g,slippage:c}),{clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h,clmmPool:e}=await this.getFlashLoanPool(y,Z);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:492 ~ LeverageModules ~ flashLoanCoin:",y),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:492 ~ LeverageModules ~ borrowAmount:",C);let{balanceA:s,balanceB:u,receipt:f}=this.flashLoan({amount:R(Z),clmmPool:e,clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h,flashLoanCoin:y,tx:I}),{debtSwapAmountOut:d,debtSwapOutCoin:v}=await this.handleDebtSwapLogic({isLong:T,flashAmount:Z,baseToken:S,quoteToken:P,swapClmmPool:t,isFlashA:A,balanceA:s,balanceB:u,slippage:c,clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h,tx:I});I.mergeCoins(v,[z]),await this._sdk.SuiLendModule.refreshReservePrices(I,N),await this.depositToLeveragePosition({isLong:T,marketId:r,positionCapId:o,depositReserveArrayIndex:q,inputCoin:v,marginTradingContext:x},I),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:531 ~ LeverageModules ~ borrowAmount:",C);let k=this.borrowAsset({positionCapId:o,reserveArrayIndex:j,borrowAmount:R(C),baseToken:S,quoteToken:P,isLong:T,lendingMarketId:b,marketId:r,marginTradingContext:x},I),w=Y.mintBalanceZero(A?h:L,I);return this.repayFlashLoan({tx:I,clmmPool:e,repayBase:A?Y.intoBalance(k,L,I):w,repayQuote:A?w:Y.intoBalance(k,h,I),receipt:f,clmmPoolCoinTypeA:L,clmmPoolCoinTypeB:h}),Y.destroyBalanceZero(A?u:s,A?h:L,I),await this.marginTradingContextConfirm(x,I),I};this.positionManageSizeWithdraw=async i=>{let{marketId:r,amount:o,isQuote:t,txb:l,swapClmmPool:p="",slippage:c,positionCapId:g,isLong:M,leverage:b}=i,{lendingMarketType:S,lendingMarketId:P}=ne(this._sdk.sdkOptions.suilend),T=l||new rt,{withdrawCtokenAmount:D,repayAmount:O,isClose:N,deposits:I,borrows:x,reserve:q,baseToken:j,quoteToken:z,clmmPool:$,clmmPoolCoinTypeA:Z,clmmPoolCoinTypeB:m,clmmFeeTier:y}=await this.calculatePositionWithdraw({marketId:r,positionCapId:g,isLong:M,isQuote:t,swapClmmPool:p,amount:o,leverage:b});if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:575 ~ LeverageModules ~ withdrawAmount:",D),N)return this.leveragePositionCloseWithCoin({marketId:r,positionCapId:g,isQuote:t,slippage:c,swapClmmPool:p});let A=this.createMarginTradingContext({marketId:r,positionCapId:g,action:"decrease_size",coinType:t?z:j,amount:o.toString()},T);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:669 ~ LeverageModules ~ repayAmount:",O),await this._sdk.SuiLendModule.refreshReservePrices(T,q);let{balanceA:C,balanceB:L,receipt:h,isLoanA:e,loanCoinType:s}=this.flashLoan({tx:T,amount:R(O),flashLoanCoin:x[0].reserve.coinType,clmmPool:$,clmmPoolCoinTypeA:Z,clmmPoolCoinTypeB:m}),u=e?Y.fromBalance(C,Z,T):Y.fromBalance(L,m,T);this.repay({txb:T,positionCapId:g,repayReserveArrayIndex:x[0].reserveArrayIndex.toString(),repayCoin:u,repayCoinType:M?z:j,repayAmount:R(0),marketId:r,marginTradingContext:A}),T.transferObjects([u],this._sdk.getSenderAddress());let f=await this._sdk.SuiLendModule.getSuilendClient(P,S),d=await this._sdk.PythConnection.getPriceFeedsUpdateData([I[0].reserve.priceIdentifier]),v=await f.pythClient.updatePriceFeeds(T,d,[I[0].reserve.priceIdentifier]),k=this.withdrawAsset({marketId:r,positionCapId:g,withdrawAmount:D.toString(),withdrawReserveArrayIndex:I[0].reserveArrayIndex.toString(),withdrawCoinType:M?j:z,baseToken:j,quoteToken:z,priceObjectId:v&&v[0],marginTradingContext:A},T),w=M?j:z,a,_;if(w!==s){_=R(O).add(R(O).mul(y)).toDP(0,Ue.ROUND_UP).toString();let G=await this.findRouters(w,s,R(_),!1,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:748 ~ LeverageModules ~ routers:",{amountIn:G?.amount_in.toString(),amountOut:G?.amount_out.toString(),withdrawAmount:D}),_=G?.amount_in.toString();let te=T.splitCoins(k,[G?.amount_in.toString()]);a=await this.routerSwap({router:G?.route_obj,inputCoin:te,slippage:c,txb:T})}else a=T.splitCoins(k,[O]),_=O;let F=Y.mintBalanceZero(e?m:Z,T);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:761 ~ LeverageModules ~ clmmPoolCoinTypeA:",Z),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:761 ~ LeverageModules ~ clmmPoolCoinTypeB:",m),a&&this.repayFlashLoan({tx:T,clmmPool:$,repayBase:e?Y.intoBalance(a,Z,T):F,repayQuote:e?F:Y.intoBalance(a,m,T),clmmPoolCoinTypeA:Z,clmmPoolCoinTypeB:m,receipt:h});let E=t?z:j,U=R(D).sub(R(_)).toString(),W;if(E!==w){let G=await this.findRouters(w,E,R(U),!0,[p]);W=await this.routerSwap({router:G?.route_obj,inputCoin:k,slippage:c,txb:T})}else W=k;return W&&T.transferObjects([W],this._sdk.getSenderAddress()),Y.destroyBalanceZero(e?L:C,e?m:Z,T),await this.marginTradingContextConfirm(A,T),T};this.positionManageLeverageIncrease=async i=>{let{marketId:r,positionCapId:o,isLong:t,currentLeverage:l,targetLeverage:p,swapClmmPool:c="",slippage:g}=i,{lendingMarketId:M}=ne(this._sdk.sdkOptions.suilend),b=new rt,{flashLoanAmount:S,quoteToken:P,baseToken:T,reserve:D,deposits:O,borrows:N,borrowAmount:I,isFlashLoan:x}=await this.calculatePositionLeverage({marketId:r,positionCapId:o,currentLeverage:l,targetLeverage:p,swapClmmPool:c,slippage:g}),q=t?P:T,{clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z,clmmPool:$}=await this.getFlashLoanPool(q,S?.toString()||"");console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:896 ~ LeverageModules ~ clmmPoolCoinTypeA:",{clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z});let Z=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"increase_leverage",coinType:t?T:P,amount:"0"},b);if(D&&await this._sdk.SuiLendModule.refreshReservePrices(b,D),x){let{balanceA:m,balanceB:y,receipt:A,isLoanA:C}=this.flashLoan({tx:b,amount:R(S),clmmPool:$,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z,flashLoanCoin:q}),L=t?P:T,h=t?T:P,e=await this.findRouters(L,h,R(S),!0,[c]),s=await this.routerSwap({router:e?.route_obj,inputCoin:C?Y.fromBalance(m,j,b):Y.fromBalance(y,z,b),slippage:g,txb:b});await this.depositToLeveragePosition({isLong:t,marketId:r,positionCapId:o,depositReserveArrayIndex:O[0].reserveArrayIndex.toString(),inputCoin:s,marginTradingContext:Z},b);let u=await this.borrowAsset({positionCapId:o,reserveArrayIndex:t?D[1].arrayIndex.toString():D[0].arrayIndex.toString(),borrowAmount:R(I),baseToken:T,quoteToken:P,isLong:t,lendingMarketId:M,marketId:r,marginTradingContext:Z},b),f=Y.mintBalanceZero(C?z:j,b);this.repayFlashLoan({tx:b,clmmPool:$,repayBase:C?Y.intoBalance(u,j,b):f,repayQuote:C?f:Y.intoBalance(u,z,b),receipt:A,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z}),Y.destroyBalanceZero(C?y:m,C?z:j,b)}else{let m=await this.borrowAsset({positionCapId:o,reserveArrayIndex:t?D[1].arrayIndex.toString():D[0].arrayIndex.toString(),borrowAmount:R(I),baseToken:T,quoteToken:P,isLong:t,lendingMarketId:M,marketId:r,marginTradingContext:Z},b),y=await this.findRouters(t?P:T,t?T:P,R(I),!0,[c]),A=await this.routerSwap({router:y?.route_obj,inputCoin:m,slippage:g,txb:b});await this.depositToLeveragePosition({isLong:t,marketId:r,positionCapId:o,depositReserveArrayIndex:O[0].reserveArrayIndex.toString(),inputCoin:A,marginTradingContext:Z},b)}return await this.marginTradingContextConfirm(Z,b),b};this.positionManageLeverageDecrease=async i=>{let{marketId:r,positionCapId:o,isLong:t,currentLeverage:l,targetLeverage:p,swapClmmPool:c="",slippage:g}=i,{baseToken:M,quoteToken:b,closeFeeRate:S}=await this.getLeverageMarketInfo(r),{deposits:P,borrows:T}=await this.getLeveragePosition(o),{reserve:D}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b),{lendingMarketId:O,lendingMarketType:N}=ne(this._sdk.sdkOptions.suilend),I=new rt,{withdrawCtokenAmount:x,isFlashLoan:q}=await this.calculatePositionLeverage({marketId:r,positionCapId:o,currentLeverage:l,targetLeverage:p,swapClmmPool:c,slippage:g});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:654 ~ LeverageModules ~ withdrawCtokenAmount:",x,q);let j=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"decrease_leverage",coinType:t?M:b,amount:"0"},I);await this._sdk.SuiLendModule.refreshReservePrices(I,D);let z=await this._sdk.SuiLendModule.getSuilendClient(O,N),$=await this._sdk.PythConnection.getPriceFeedsUpdateData([P[0].reserve.priceIdentifier]),Z=await z.pythClient.updatePriceFeeds(I,$,[P[0].reserve.priceIdentifier]),{clmmPoolCoinTypeA:m,clmmPoolCoinTypeB:y,clmmPool:A,clmmFeeTier:C}=await this.getFlashLoanPool(P[0].reserve.coinType,x.toString());if(q){let{balanceA:L,balanceB:h,receipt:e,isLoanA:s}=this.flashLoan({tx:I,amount:R(x),clmmPool:A,clmmPoolCoinTypeA:m,clmmPoolCoinTypeB:y,flashLoanCoin:P[0].reserve.coinType});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1019 ~ LeverageModules ~ isLoanA:",s);let u=t?M:b,f=t?b:M,d=await this.findRouters(u,f,R(x),!0,[c]),v=await this.routerSwap({router:d?.route_obj,inputCoin:s?Y.fromBalance(L,m,I):Y.fromBalance(h,y,I),slippage:g,txb:I});await this.repay({txb:I,marketId:r,positionCapId:o,repayReserveArrayIndex:T[0].reserveArrayIndex.toString(),repayCoin:v,repayCoinType:t?b:M,repayAmount:R(0),marginTradingContext:j}),v&&I.transferObjects([v],this._sdk.getSenderAddress());let k=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:x.toString(),withdrawReserveArrayIndex:P[0].reserveArrayIndex.toString(),withdrawCoinType:t?M:b,baseToken:M,quoteToken:b,priceObjectId:Z&&Z[0],marginTradingContext:j},I),w=R(x).mul(R(1).add(C)).toDP(0,Ue.ROUND_UP),a=I.splitCoins(k,[w.toString()]);this.repayFlashLoan({tx:I,clmmPool:A,repayBase:s?Y.intoBalance(a,m,I):L,repayQuote:s?h:Y.intoBalance(a,y,I),receipt:e,clmmPoolCoinTypeA:m,clmmPoolCoinTypeB:y}),I.transferObjects([k],this._sdk.getSenderAddress())}else{let L=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:x.toString(),withdrawReserveArrayIndex:P[0].reserveArrayIndex.toString(),withdrawCoinType:t?M:b,baseToken:M,quoteToken:b,priceObjectId:Z&&Z[0],marginTradingContext:j},I),h=t?M:b,e=t?b:M,s=await this.findRouters(h,e,R(x),!0,[c]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:681 ~ LeverageModules ~ routers:",s,s?.route_obj.paths,h,e);let u=await this.routerSwap({router:s?.route_obj,inputCoin:L,slippage:g,txb:I});this.repay({txb:I,positionCapId:o,repayReserveArrayIndex:T[0].reserveArrayIndex.toString(),repayCoin:u,repayCoinType:t?b:M,repayAmount:R(0),marketId:r,marginTradingContext:j}),u&&I.transferObjects([u],this._sdk.getSenderAddress())}return await this.marginTradingContextConfirm(j,I),I};this.leveragePositionCloseWithCoin=async i=>{let{marketId:r,positionCapId:o,isQuote:t,slippage:l,swapClmmPool:p=""}=i,{baseToken:c,quoteToken:g,closeFeeRate:M}=await this.getLeverageMarketInfo(r),{deposits:b,borrows:S,isLong:P,originObligation:T}=await this.getLeveragePosition(o);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:847 ~ LeverageModules ~ borrows:",S);let D=new rt,O=t?g:c,N=P?c!==O:g!==O,{reserve:I}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(c,g),x=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"close_position",coinType:t?g:c,amount:"0"},D);await this._sdk.SuiLendModule.refreshReservePrices(D,I);let q=T.borrows.length>0,j,z,$,Z,m=R(0),y,A,C,L;if(q){let v=Ti(T.borrows[0],P?I[1]:I[0]),k=R(v.borrowedAmount.value.toString()).div(10**18).toDP(0,Ue.ROUND_UP).add(100),w=k,a=await this.getFlashLoanPool(S[0].reserve.coinType,w.toString());j=a.clmmPoolCoinTypeA,z=a.clmmPoolCoinTypeB,$=a.clmmPool,Z=a.clmmFeeTier;let _=w.mul(Z);m=w.add(_).toDP(0,Ue.ROUND_UP);let F=this.flashLoan({tx:D,amount:k,clmmPool:$,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z,flashLoanCoin:S[0].reserve.coinType});A=F.balanceA,C=F.balanceB,L=F.receipt,y=F.isLoanA;let E=y?Y.fromBalance(A,y?j:z,D):Y.fromBalance(C,y?j:z,D);this.repay({txb:D,positionCapId:o,repayReserveArrayIndex:S[0].reserveArrayIndex.toString(),repayCoin:E,repayCoinType:y?j:z,repayAmount:R(0),marketId:r,marginTradingContext:x}),D.transferObjects([E],this._sdk.getSenderAddress())}let{lendingMarketType:h,lendingMarketId:e}=ne(this._sdk.sdkOptions.suilend),s=await this._sdk.SuiLendModule.getSuilendClient(e,h),u=[];for(let v=0;v<b.length;v++){let k=await this._sdk.PythConnection.getPriceFeedsUpdateData([b[v].reserve.priceIdentifier]);u=await s.pythClient.updatePriceFeeds(D,k,[b[v].reserve.priceIdentifier])}let f=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:Ci.toString(),withdrawReserveArrayIndex:b[0].reserveArrayIndex.toString(),withdrawCoinType:P?c:g,baseToken:c,quoteToken:g,priceObjectId:u&&u[0],marginTradingContext:x},D);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1217 ~ LeverageModules ~ deposits:",b);for(let v=1;v<b.length;v++){let k=this.withdrawAsset({marketId:r,positionCapId:o,withdrawAmount:Ci.toString(),withdrawReserveArrayIndex:b[v].reserveArrayIndex.toString(),withdrawCoinType:b[v].coinType,baseToken:c,quoteToken:g,priceObjectId:u&&u[v],marginTradingContext:x},D);D.transferObjects([k],this._sdk.getSenderAddress())}let d=b[0].depositedCtokenAmount.toString();if(q){let v=y?j!==b[0].reserve.coinType:z!==b[0].reserve.coinType,k;if(v){let a=await this.findRouters(P?c:g,y?j:z,m,!1,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:902 ~ LeverageModules ~ isLong ? baseToken : quoteToken:",{from:P?c:g,to:y?j:z,amountIn:a?.amount_in.toString(),amountOut:m.toString()});let _=D.splitCoins(f,[a?.amount_in.toString()]);k=await this.routerSwap({router:a?.route_obj,inputCoin:_,slippage:l,txb:D}),d=R(b[0].depositedCtokenAmount.toString()).sub(a?.amount_in.toString()).toString()}else k=D.splitCoins(f,[m.toString()]),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:928 ~ LeverageModules ~ flashLoanAmountTotal.toString():",m.toString(),b[0].depositedCtokenAmount.toString()),d=R(b[0].depositedCtokenAmount.toString()).sub(m).toString();let w=y?C:A;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:921 ~ LeverageModules ~ isLoanA:",y),k&&this.repayFlashLoan({tx:D,clmmPool:$,repayBase:y?Y.intoBalance(k,j,D):w,repayQuote:y?w:Y.intoBalance(k,z,D),receipt:L,clmmPoolCoinTypeA:j,clmmPoolCoinTypeB:z})}if(N){let v=await this.findRouters(P?c:g,O,R(d),!0,[p]),k=await this.routerSwap({router:v?.route_obj,inputCoin:f,slippage:l,txb:D});k&&D.transferObjects([k],this._sdk.getSenderAddress())}else D.transferObjects([f],this._sdk.getSenderAddress());return this.leveragePositionClose({marketId:r,positionCapId:o,marginTradingContext:x},D),await this.marginTradingContextConfirm(x,D),D};this.leveragePositionClose=async(i,r)=>{let o=r||new rt,{marketId:t,positionCapId:l,marginTradingContext:p}=i,{leverage:c}=this._sdk.sdkOptions,{global_config_id:g,versioned:M}=ne(this._sdk.sdkOptions.leverage),{lendingMarketType:b,lendingMarketId:S}=ne(this._sdk.sdkOptions.suilend);return o.moveCall({target:`${c.published_at}::router::close_position`,typeArguments:[b],arguments:[p,o.object(g),o.object(S),o.object(t),o.object(l),o.object(pt),o.object(M)]}),o};this.leveragePositionRepay=async i=>{let{marketId:r,positionCapId:o,amount:t,isQuote:l,swapClmmPool:p="",slippage:c}=i,{baseToken:g,quoteToken:M}=await this.getLeverageMarketInfo(r),{borrows:b}=await this.getLeveragePosition(o),S=new rt,P=b[0].reserve.coinType,T=l?M!==P:g!==P,D,O=this.createMarginTradingContext({marketId:r,positionCapId:o,action:"repay_debt",coinType:l?M:g,amount:t.toString()},S);if(T){let N=await this.findRouters(l?M:g,P,t,!0,[p]),I=Y.buildCoinWithBalance(BigInt(t.toString()),l?M:g,S);D=await this.routerSwap({router:N?.route_obj,inputCoin:I,slippage:c,txb:S})}else D=Y.buildCoinWithBalance(BigInt(t.toString()),l?M:g,S);return this.repay({txb:S,positionCapId:o,repayReserveArrayIndex:b[0].reserveArrayIndex.toString(),repayCoin:D,repayCoinType:P,repayAmount:R(0),marketId:r,marginTradingContext:O}),S.transferObjects([D],this._sdk.getSenderAddress()),await this.marginTradingContextConfirm(O,S),S};this.positionTopUpCoken=async i=>{let{marketId:r,positionCapId:o,amount:t,isQuote:l,swapClmmPool:p="",slippage:c}=i,g=new rt,{baseToken:M,quoteToken:b}=await this.getLeverageMarketInfo(r),{isLong:S}=await this.getLeveragePosition(o),P=S&&l||!S&&!l,T=await this.createMarginTradingContext({marketId:r,positionCapId:o,action:"top_up_collateral",coinType:l?b:M,amount:t.toString()},g),D;if(P){let x=await this.findRouters(l?b:M,l?M:b,t,!0,[p]),q=Y.buildCoinWithBalance(BigInt(t.toString()),l?b:M,g);D=await this.routerSwap({router:x?.route_obj,inputCoin:q,slippage:c,txb:g})}else D=Y.buildCoinWithBalance(BigInt(t.toString()),l?b:M,g);let{baseReserveArrayIndex:O,quoteReserveArrayIndex:N,reserve:I}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b);return await this.depositToLeveragePosition({isLong:S,marketId:r,positionCapId:o,depositReserveArrayIndex:S?O:N,inputCoin:D,marginTradingContext:T},g),await this.marginTradingContextConfirm(T,g),g};this.flashLoan=i=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:698 ~ LeverageModules ~ params:",i);let{clmm_pool:r}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=ne(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{amount:t,clmmPool:l,clmmPoolCoinTypeA:p,clmmPoolCoinTypeB:c,flashLoanCoin:g,tx:M}=i,b=so(p)===g;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:983 ~ LeverageModules ~ isLoanA:",b);let[S,P,T]=M.moveCall({target:`${r.published_at}::pool::flash_loan`,arguments:[M.object(o),M.object(l),M.pure.bool(b),M.pure.u64(t.toString())],typeArguments:[p,c]});return{balanceA:S,balanceB:P,receipt:T,isLoanA:b,loanCoinType:b?p:c}};this.repayFlashLoan=i=>{let{clmm_pool:r}=this._sdk.ClmmSDK.sdkOptions,{global_config_id:o}=ne(this._sdk.ClmmSDK.sdkOptions.clmm_pool),{tx:t,repayBase:l,repayQuote:p,receipt:c,clmmPool:g,clmmPoolCoinTypeA:M,clmmPoolCoinTypeB:b}=i;return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:612 ~ LeverageModules ~ params:",i),t.moveCall({target:`${r.published_at}::pool::repay_flash_loan`,arguments:[t.object(o),t.object(g),l,p,c],typeArguments:[M,b]}),t};this.borrowAsset=(i,r)=>{let{reserveArrayIndex:o,borrowAmount:t,baseToken:l,quoteToken:p,lendingMarketId:c,isLong:g,marketId:M,positionCapId:b,positionCap:S,marginTradingContext:P}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:677 ~ LeverageModules ~ params:",i);let{leverage:T}=this._sdk.sdkOptions,{lendingMarketType:D}=ne(this._sdk.sdkOptions.suilend),{global_config_id:O,versioned:N}=ne(this._sdk.sdkOptions.leverage);return Y.isSuiCoin(g?p:l)?r.moveCall({target:`${T.published_at}::router::borrow_sui`,typeArguments:[D],arguments:[P,r.object(O),r.object(c),r.object(M),b?r.object(b):S,r.pure.u64(o),r.pure.u64(t.toString()),r.object(Li),r.object(pt),r.object(N)]}):r.moveCall({target:`${T.published_at}::router::borrow_not_sui`,typeArguments:[D,g?p:l],arguments:[P,r.object(O),r.object(c),r.object(M),b?r.object(b):S,r.pure.u64(o),r.pure.u64(t.toString()),r.object(pt),r.object(N)]})};this.withdrawAsset=(i,r)=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:749 ~ LeverageModules ~ params:",i);let{leverage:o}=this._sdk.sdkOptions,{lendingMarketId:t,lendingMarketType:l}=ne(this._sdk.sdkOptions.suilend),{global_config_id:p,versioned:c}=ne(this._sdk.sdkOptions.leverage),{package_id:g}=this._sdk.sdkOptions.suilend,{marketId:M,withdrawAmount:b,withdrawReserveArrayIndex:S,withdrawCoinType:P,baseToken:T,quoteToken:D,priceObjectId:O,positionCapId:N,marginTradingContext:I}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1596 ~ LeverageModules ~ withdrawAmount:",b);let[x]=r.moveCall({target:"0x1::option::none",typeArguments:[`${g}::lending_market::RateLimiterExemption<${l}, ${P}>`],arguments:[]});return Y.isSuiCoin(P)?r.moveCall({target:`${o.published_at}::router::withdraw_sui`,typeArguments:[l],arguments:[I,r.object(p),r.object(t),r.object(M),r.object(N),r.object(x),r.pure.u64(b),r.pure.u64(S),r.object(Li),r.object(pt),r.object(c)]}):r.moveCall({target:`${o.published_at}::router::withdraw_not_sui`,typeArguments:[l,P],arguments:[I,r.object(p),r.object(t),r.object(M),r.object(N),r.object(x),r.pure.u64(b),r.pure.u64(S),r.object(pt),r.object(c)]})};this.repay=i=>{console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1333 ~ LeverageModules ~ params:",i);let{leverage:r}=this._sdk.sdkOptions,{lendingMarketId:o,lendingMarketType:t}=ne(this._sdk.sdkOptions.suilend),{global_config_id:l,versioned:p}=ne(this._sdk.sdkOptions.leverage),{txb:c,repayAmount:g,repayCoinType:M,repayCoin:b,repayReserveArrayIndex:S,marketId:P,positionCapId:T,marginTradingContext:D}=i,O=c||new rt,N=b||Y.buildCoinWithBalance(BigInt(g.toString()),M,O);O.moveCall({target:`${r.published_at}::router::repay`,typeArguments:[t,M],arguments:[D,O.object(l),O.object(o),O.object(P),O.object(T),N,O.pure.u64(S.toString()),O.object(pt),O.object(p)]})};this.routerSwap=async i=>{let{slippage:r,txb:o,inputCoin:t,router:l}=i,p=o||new rt;if(l)return await this._sdk.AggregatorClient.routerSwap({router:l,inputCoin:t,slippage:r,txb:p})};this.calculatePositionDeposit=async i=>{let{isQuote:r,isLong:o,amount:t,swapClmmPool:l="",leverage:p,byAmountIn:c=!0,marketId:g}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1514 ~ LeverageModules ~ amount:",t.toString());let{baseToken:M,quoteToken:b,openFeeRate:S}=await this.getLeverageMarketInfo(g),{reserve:P}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b),T=P[0].mintDecimals,D=P[1].mintDecimals,O=t.toString();if(o&&r||!o&&!r){let s=o?b:M,u=o?M:b;O=(await this.findRouters(s,u,R(O),!0,[l]))?.amount_out.toString()}let{basePrice:I,quotePrice:x,flashAmount:q,flashLoanFee:j,flashLoanCoin:z,isFlashA:$,clmmPool:Z,clmmFeeTier:m}=await this.calculateFlashLoanParams({isLong:o,leverage:p,baseToken:M,quoteToken:b,initDepositAmount:O,reserve:P,baseTokenDecimal:T,quoteTokenDecimal:D,openFeeRate:S});console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1533 ~ LeverageModules ~ flashAmount:",q.toString(),O);let y=await this.findRouters(o?b:M,o?M:b,R(q),!0,[l]),A=R(O).add(R(y?.amount_out.toString())).toDP(0,Ue.ROUND_DOWN).toString(),C=R(A).mul(o?I:x).toString(),L=R(q).add(j).toDP(0,Ue.ROUND_UP).toString(),h=R(L).mul(o?x:I).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1541 ~ LeverageModules ~ isQuote:",r);let e=r?R(t).div(10**(r?D:T)).mul(10**T).mul(p).div(I).toDP(0,Ue.ROUND_DOWN).toString():R(t).mul(p).toDP(0,Ue.ROUND_DOWN).toString();return{routers:y,leverageDepositAmount:e,quotePrice:x,basePrice:I,clmmFeeTier:m,flashLoanFee:j,flashLoanCoin:z,depositAmount:A,borrowAmount:L,depositAmountUSD:C,borrowAmountUSD:h,flashAmount:q,isFlashA:$,initDepositAmount:O}};this.calculatePositionWithdraw=async i=>{let{marketId:r,positionCapId:o,isLong:t,isQuote:l,swapClmmPool:p="",amount:c,leverage:g}=i,{baseToken:M,quoteToken:b}=await this.getLeverageMarketInfo(r),{deposits:S,borrows:P,originObligation:T}=await this.getLeveragePosition(o),{reserve:D,baseReserveMapInfo:O,quoteReserveMapInfo:N}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1951 ~ LeverageModules ~ reserve:",D);let I=D[0].mintDecimals,x=D[1].mintDecimals,q=t?O.cTokenExchangeRate:N.cTokenExchangeRate;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1955 ~ LeverageModules ~ ctokenExchangeRate:",q.toString());let j=await this._sdk.SuiLendModule.getLatestPriceFeeds(D,!0),z=j[_t(b)]?.price,$=j[_t(M)]?.price,Z=R(0),m;t?(Z=R(l?c.mul(z).toString():c.mul($).toString()).div(l?10**x:10**I),m=l?c.div($).div(10**x).mul(10**I).toString():c):(Z=R(l?c.mul(z).toString():c.mul($).toString()).div(l?10**x:10**I),m=l?c:c.mul($).div(10**I).mul(10**x).toString()),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1973 ~ LeverageModules ~ withdrawAmount:",m);let y=R(S[0].depositedAmountUsd.toString()).sub(R(P[0].borrowedAmountUsd.toString())).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1887 ~ LeverageModules ~ availableWithdrawAmountUSD:",y);let A=R(y).div(t?$:z).mul(10**(t?I:x)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1893 ~ LeverageModules ~ availableWithdrawAmount:",A);let C=Z.div(R(y));console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1625 ~ LeverageModules ~ ratio:",C),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1899 ~ LeverageModules ~ borrows[0].borrowedAmount.toString():",P[0].borrowedAmount.toString()),m=R(m).mul(g).toDP(0,Ue.ROUND_DOWN).toString(),Z=R(Z).mul(g);let L=Ti(T.borrows[0],t?D[1]:D[0]),h=R(L.borrowedAmount.value.toString()).div(10**18).toDP(0,Ue.ROUND_UP),e=h.mul(C).toDP(0,Ue.ROUND_UP).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1901 ~ LeverageModules ~ repayAmount:",{repayAmount:e,ratio:C,withdrawAmount:m,borrowAmount:h,withdrawAmountUSD:Z,quotePrice:z,basePrice:$});let{clmmPoolCoinTypeA:s,clmmPoolCoinTypeB:u,clmmFeeTier:f,clmmPool:d}=await this.getFlashLoanPool(P[0].reserve.coinType,e),v=await this.findRouters(S[0].reserve.coinType,P[0].reserve.coinType,R(e),!1,[p]),k=h.mul(R(1).sub(C)).toString(),w=R(k).mul(t?z:$).toString(),a=R(S[0].depositedAmount.toString()).mul(t?10**I:10**x).sub(R(m)).toString(),_=R(a).mul(t?$:z).toString(),F=R(e).mul(f).toString(),E=R(v?.amount_in.toString()).toString(),U=R(v?.amount_out.toString()).toString(),W=R(C).gte(1);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1927 ~ LeverageModules ~ deposits[0].depositedAmount.toString():",{afterBorrowAmount:k,afterBorrowAmountUSD:w,afterDepositAmount:a,afterDepositAmountUSD:_});let G=R(m).div(q.toString()).toDP(0,Ue.ROUND_DOWN).toString();return console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1956 ~ LeverageModules ~ withdrawCtokenAmount:",G),{amountIn:E,amountOut:U,from:S[0].reserve.coinType,to:P[0].reserve.coinType,afterBorrowAmount:k,afterBorrowAmountUSD:w,afterDepositAmount:a,afterDepositAmountUSD:_,flashLoanFee:F,clmmFeeTier:f,withdrawAmount:m,withdrawCtokenAmount:G,repayAmount:e,ratio:C,isClose:W,isLong:t,deposits:S,borrows:P,reserve:D,baseToken:M,quoteToken:b,clmmPool:d,clmmPoolCoinTypeA:s,clmmPoolCoinTypeB:u}};this.calculatePositionLeverage=async i=>{let{marketId:r,positionCapId:o,currentLeverage:t,targetLeverage:l,swapClmmPool:p=""}=i,c=R(l).sub(R(t)),g=c.gt(0),{baseToken:M,quoteToken:b}=await this.getLeverageMarketInfo(r),{borrows:S,deposits:P,isLong:T}=await this.getLeveragePosition(o);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1540 ~ LeverageModules ~ deposits:",P[0].reserve.config);let{reserve:D}=await this._sdk.SuiLendModule.getSuiLendReserveInfo(M,b),O=D[0].mintDecimals,N=D[1].mintDecimals,I=await this._sdk.SuiLendModule.getLatestPriceFeeds(D,!0),x=I[_t(b)]?.price,q=I[_t(M)]?.price,j=S.length>0,z=P[0].depositedAmountUsd.toString(),$=P[0].depositedAmount.toString(),Z=j?R(S[0].borrowedAmount.toString()).mul(10**(T?N:O)):R(0),m=j?S[0].borrowedAmountUsd.toString():R(0),y=R(P[0].reserve.config.openLtvPct).div(100).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1552 ~ LeverageModules ~ openLTV:",y);let A=R(z).sub(R(m)).mul(y).toString();if(g){let C=R(z).div(t).mul(c).div(T?x:q).mul(10**(T?N:O)).toDP(0,Ue.ROUND_UP),L=C.gt(A),h=C;if(L){let e=T?b:M,s=T?M:b,u=await this.findRouters(e,s,h,!0,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:2106 ~ LeverageModules ~ routers:",{routers:u,from:e,to:s});let f=R(u?.amount_out.toString()).toString(),d=R(f).mul(T?q:x).toString(),{clmmPoolCoinTypeA:v,clmmPoolCoinTypeB:k,clmmPool:w,clmmFeeTier:a}=await this.getFlashLoanPool(e,h.toString()),_=h.mul(a).toString(),F=T?v==b:k==M,U=R(h).add(_).toDP(0,Ue.ROUND_UP).toString(),W=R(U).mul(T?x:q).toString(),G=R($).add(R(f).div(10**(T?O:N))).toString(),te=R(G).mul(T?q:x).toString(),Ze=R(Z).add(R(U)).div(10**(T?N:O)).toString(),J=R(Ze).mul(T?x:q).toString();return{amountIn:u?.amount_in.toString(),amountOut:u?.amount_out.toString(),flashLoanFee:_,depositAmount:f,borrowAmount:U,depositAmountUSD:d,borrowAmountUSD:W,flashLoanAmount:h,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,clmmFeeTier:a,isFlashLoan:L,isLoanA:F,clmmPoolCoinTypeA:v,clmmPoolCoinTypeB:k,afterDepositAmount:G,afterBorrowAmount:Ze,afterDepositAmountUSD:te,afterBorrowAmountUSD:J}}else{let e=h.toString(),s=R(e).mul(T?x:q).toString(),u=await this.findRouters(T?b:M,T?M:b,R(e),!0,[p]),f=R(u?.amount_out.toString()).toString(),d=R(f).mul(T?q:x).toString(),v=$.toString(),k=R(v).mul(T?q:x).toString(),w=R(Z).add(R(e)).div(10**(T?N:O)).toString(),a=R(w).mul(T?x:q).toString();return{amountIn:u?.amount_in.toString(),amountOut:u?.amount_out.toString(),depositAmount:f,borrowAmount:e,depositAmountUSD:d,borrowAmountUSD:s,flashLoanAmount:h,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,isFlashLoan:L,afterDepositAmount:v,afterBorrowAmount:w,afterDepositAmountUSD:k,afterBorrowAmountUSD:a}}}else{let C=R(z).div(t);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1598 ~ LeverageModules ~ netValue:",C.toString());let L=C.mul(c.abs()).div(T?x:q).mul(10**(T?N:O)).toDP(0,Ue.ROUND_UP);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1596 ~ LeverageModules ~ repayAmount:",L.toString());let h=await this.findRouters(P[0].reserve.coinType,S[0].reserve.coinType,L,!1,[p]),e=h?.amount_in.toString(),s=R(z).mul(y).toString(),u=R(s).lt(R(e));if(console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:2223 ~ LeverageModules ~ isFlashLoan:",u),u){console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1606 ~ LeverageModules ~ withdrawCtokenAmount:",e);let f=L.toString(),d=R(f).mul(T?x:q).toString(),v=e,k=R(v).mul(T?q:x).toString(),{clmmPoolCoinTypeA:w,clmmPoolCoinTypeB:a,clmmPool:_,clmmFeeTier:F}=await this.getFlashLoanPool(S[0].reserve.coinType,f.toString()),E=R($).sub(R(v).div(10**(T?O:N))).toString(),U=R(E).mul(T?q:x).toString(),W=R(Z).sub(R(f)).div(10**(T?N:O)).toString(),G=R(W).mul(T?x:q).toString();return{amountIn:h?.amount_in.toString(),amountOut:h?.amount_out.toString(),depositAmount:v,borrowAmount:f,depositAmountUSD:k,borrowAmountUSD:d,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,clmmFeeTier:F,withdrawCtokenAmount:e,isFlashLoan:u,clmmPoolCoinTypeA:w,clmmPoolCoinTypeB:a,afterDepositAmount:E,afterBorrowAmount:W,afterDepositAmountUSD:U,afterBorrowAmountUSD:G}}else{let d=(await this.findRouters(P[0].reserve.coinType,S[0].reserve.coinType,e,!0,[p]))?.amount_out.toString(),v=R(d).mul(T?x:q).toString(),k=e.toString(),w=R(k).mul(T?q:x).toString(),a=R($).sub(R(k).div(10**(T?O:N))).toString(),_=R(a).mul(T?q:x).toString(),F=R(Z).sub(R(d)).div(10**(T?N:O)).toString(),E=R(F).mul(T?x:q).toString();return{amountIn:h?.amount_in.toString(),amountOut:h?.amount_out.toString(),depositAmount:k,borrowAmount:d,depositAmountUSD:w,borrowAmountUSD:v,baseToken:M,quoteToken:b,reserve:D,deposits:P,borrows:S,withdrawCtokenAmount:e,isFlashLoan:u,afterDepositAmount:a,afterBorrowAmount:F,afterDepositAmountUSD:_,afterBorrowAmountUSD:E}}}};this.getFlashLoanPool=async(i,r)=>{let o=await fetch(`https://api-sui.cetus.zone/v3/sui/margin_trading/pools?coin_type=${i}&min_amount=${r}`);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:2151 ~ LeverageModules ~ res:",o);let{data:t}=await o.json();return t&&t.length>0?{clmmPoolCoinTypeA:t[0].coin_type_a,clmmPoolCoinTypeB:t[0].coin_type_b,clmmPool:t[0].pool_id,clmmFeeTier:R(t[0].fee_rate).div(1e6).toString()}:{clmmPoolCoinTypeA:"",clmmPoolCoinTypeB:"",clmmPool:"",clmmFeeTier:""}};this.createMarginTradingContext=(i,r)=>{let{published_at:o}=this._sdk.sdkOptions.leverage,t=vt(),{marketId:l,positionCapId:p,action:c,coinType:g,amount:M}=i;return r.moveCall({target:`${o}::router::create_margin_trading_context`,arguments:[r.pure.string(t),r.object(l),r.object(p),r.pure.string(c),r.pure.string(g),r.pure.u64(M)],typeArguments:[]})};this.marginTradingContextConfirm=(i,r)=>{let{published_at:o}=this._sdk.sdkOptions.leverage;return r.moveCall({target:`${o}::router::confirm`,arguments:[i],typeArguments:[]}),r};this._sdk=i}async handleSwapLogic(i){let{isLong:r,isQuote:o,amount:t,baseToken:l,quoteToken:p,swapClmmPool:c="",slippage:g,tx:M}=i,b=r&&o||!r&&!o;console.log("\u{1F680}\u{1F680}\u{1F680} ~ LeverageModules ~ hasSwap:",b);let S,P,T=t.toString();if(b){let D=r&&o?p:l,O=r&&o?l:p,N=await this.findRouters(D,O,t,!0,[c]);if(T=N?.amount_out.toString(),N){let I=Y.buildCoinWithBalance(BigInt(t.toString()),D,M);P=await this.routerSwap({router:N.route_obj,slippage:g,inputCoin:I,txb:M}),S=P}}else S=Y.buildCoinWithBalance(BigInt(t.toString()),o?p:l,M);return{hasSwap:b,inputCoin:S,initDepositAmount:T}}async handleDebtSwapLogic(i){let{isLong:r,flashAmount:o,baseToken:t,quoteToken:l,swapClmmPool:p="",isFlashA:c,balanceA:g,balanceB:M,slippage:b,clmmPoolCoinTypeA:S,clmmPoolCoinTypeB:P,tx:T}=i,D=r?l:t,O=r?t:l,N=await this.findRouters(D,O,R(o),!0,[p]);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:311 ~ LeverageModules ~ debtRouters:",{debtRouters:N,debtFrom:D,debtTo:O,clmmPoolCoinTypeA:S,clmmPoolCoinTypeB:P});let I=R(N?.amount_out||0),x;return N&&(x=await this.routerSwap({router:N.route_obj,inputCoin:c?Y.fromBalance(g,S,T):Y.fromBalance(M,P,T),slippage:b,txb:T})),{debtFrom:D,debtTo:O,debtRouters:N,debtSwapAmountOut:I,debtSwapOutCoin:x}}async calculateFlashLoanParams(i){let{isLong:r,leverage:o,baseToken:t,quoteToken:l,initDepositAmount:p,reserve:c,baseTokenDecimal:g,quoteTokenDecimal:M,openFeeRate:b}=i;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1403 ~ LeverageModules ~ calculateFlashLoanParams ~ params:",i),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1079 ~ LeverageModules ~ calculateFlashLoanParams ~ initDepositAmount:",p);let S=await this._sdk.SuiLendModule.getLatestPriceFeeds(c);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:587 ~ LeverageModules ~ calculateFlashLoanParams ~ priceUpdateData:",S,l,t);let P=S[_t(l)]?.price,T=S[_t(t)]?.price,D=r?R(T).div(R(P)).toString():R(P).div(R(T)).toString();console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1057 ~ LeverageModules ~ calculateFlashLoanParams ~ rate:",{rate:D}),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1424 ~ LeverageModules ~ calculateFlashLoanParams ~ initDepositAmount:",p);let O=R(p).mul(1-b).mul(o-1).mul(D).div(10**(r?g:M)).mul(10**(r?M:g)).toDP(0,Ue.ROUND_UP).toString(),N=r?l:t;console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1457 ~ LeverageModules ~ flashLoanCoin:",N),console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1457 ~ LeverageModules ~ flashLoanCoin:",N);let{clmmPoolCoinTypeA:I,clmmFeeTier:x,clmmPool:q,clmmPoolCoinTypeB:j}=await this.getFlashLoanPool(N,O);console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1094 ~ LeverageModules ~ calculateFlashLoanParams ~ flashAmount:",O,x,N);let z=I===N,$=R(O).mul(x).toString();return{flashAmount:O,rate:D,quotePrice:P,basePrice:T,flashLoanCoin:N,isFlashA:z,flashLoanFee:$,clmmPool:q,clmmPoolCoinTypeA:I,clmmPoolCoinTypeB:j,clmmFeeTier:x}}createLeveragePosition(i){console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:1493 ~ LeverageModules ~ createLeveragePosition ~ params:",i);let{lendingMarketId:r,lendingMarketType:o}=ne(this._sdk.sdkOptions.suilend),{global_config_id:t,versioned:l}=ne(this._sdk.sdkOptions.leverage),p=this._sdk.sdkOptions.leverage,{leverage:c,marketId:g,baseToken:M,quoteToken:b,isLong:S,initDepositAmount:P,tx:T,initCoinType:D}=i,O=vt(),[N,I]=T.moveCall({target:`${p.published_at}::router::open_position`,arguments:[T.object(t),T.object(g),T.object(r),T.pure.u64(P),T.pure.string(D),T.pure.u64(R(c).mul(1e4).toString()),T.pure.string(O),T.object(pt),T.object(l)],typeArguments:[o,S?M:b]});return{positionCap:N,marginTradingContext:I}}async depositToLeveragePosition(i,r){console.log("\u{1F680}\u{1F680}\u{1F680} ~ leverageModules.ts:651 ~ LeverageModules ~ depositToLeveragePosition ~ params:",i);let{leverage:o}=this._sdk.sdkOptions,{lendingMarketType:t,lendingMarketId:l}=ne(this._sdk.sdkOptions.suilend),{isLong:p,marketId:c,positionCapId:g,positionCap:M,depositReserveArrayIndex:b,inputCoin:S,marginTradingContext:P}=i,{global_config_id:T,versioned:D}=ne(this._sdk.sdkOptions.leverage),{baseToken:O,quoteToken:N}=await this.getLeverageMarketInfo(c);return r.moveCall({target:`${o.published_at}::router::deposit`,typeArguments:[t,p?O:N],arguments:[P,r.object(T),r.object(l),r.object(c),g?r.object(g):M,S,r.pure.u64(b),r.object(pt),r.object(D)]}),r}async findRouters(i,r,o,t,l){let{providers:p}=this._sdk.sdkOptions;try{let c={from:i,target:r,amount:new Dr.default(o.toFixed(0).toString()),byAmountIn:t,depth:3,providers:p},g=await this._sdk.AggregatorClient.findRouters(c);if(g?.error?.code===10001)return{...g,is_exceed:g.insufficientLiquidity};if(g?.insufficientLiquidity)return{...g,is_exceed:g.insufficientLiquidity};if(!g?.paths||g?.paths?.length===0)throw Error("Aggregator no router");return{amount_in:g.amountIn.toString(),amount_out:g.amountOut.toString(),is_exceed:g.insufficientLiquidity,route_obj:g,byAmountIn:!0,originRes:g}}catch{try{if(l){let g=await this._sdk.AggregatorClient.swapInPools({from:i,target:r,amount:new Dr.default(o.toFixed(0).toString()),byAmountIn:t,pools:l});return g?{amount_in:g.routeData.amountIn.toString(),amount_out:g.routeData.amountOut.toString(),is_exceed:g.isExceed,route_obj:g.routeData,byAmountIn:!0,originRes:g}:null}return null}catch{return null}}}};import{AggregatorClient as lo,Env as Di}from"@cetusprotocol/aggregator-sdk";import{normalizeSuiAddress as uo}from"@mysten/sui/utils";import{SuiClient as fo}from"@mysten/sui/client";import{CetusClmmSDK as co}from"@cetusprotocol/sui-clmm-sdk";import{SuiPriceServiceConnection as ho}from"@pythnetwork/pyth-sui-js";import{CLOCK_ADDRESS as At,getPackagerConfigs as Qe}from"@cetusprotocol/common-sdk";import{Transaction as Ve}from"@mysten/sui/transactions";var Zt=class{constructor(i){this.queryGlobalPermissions=async()=>{let i=this._sdk.sdkOptions.leverage,{global_config_id:r}=Qe(i),o=await this._sdk.FullClient.getObject({id:r,options:{showContent:!0}});if(o){let t=o.data.content.fields.permissions.toString(2),{openPermissionsPause:l,closePermissionsPause:p,depositPermissionsPause:c,withdrawPermissionsPause:g,borrowPermissionsPause:M,repayPermissionsPause:b}=xr(t);return{openPermissionsPause:l,closePermissionsPause:p,depositPermissionsPause:c,withdrawPermissionsPause:g,borrowPermissionsPause:M,repayPermissionsPause:b}}};this.updateGlobalPermissions=async i=>{let r=new Ve;return this.updateGlobalOpenPositionPermissions(i,r),this.updateGlobalClosePositionPermissions(i,r),this.updateGlobalDepositPermissions(i,r),this.updateGlobalBorrowPermissions(i,r),this.updateGlobalWithdrawPermissions(i,r),this.updateGlobalRepayPermissions(i,r),r};this.updateGlobalOpenPositionPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_open_position_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalClosePositionPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_close_position_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalDepositPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_deposit_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalBorrowPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_borrow_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalWithdrawPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_withdraw_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateGlobalRepayPermissions=async(i,r)=>{let o=this._sdk.sdkOptions.leverage,{global_config_id:t,versioned:l,admin_cap_id:p}=Qe(o),c=r||new Ve;return c.moveCall({target:`${o.published_at}::config::update_global_repay_permissions`,arguments:[c.object(p),c.object(t),c.pure.bool(i),c.object(At),c.object(l)],typeArguments:[]}),c};this.updateMarketCreatePositionPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_open_position_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketClosePositionPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_close_position_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketDepositPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_deposit_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketWithdrawPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_withdraw_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketBorrowPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_borrow_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketRepayPermissions=async(i,r,o)=>{let t=this._sdk.sdkOptions.leverage,{versioned:l,admin_cap_id:p}=Qe(t),c=o||new Ve;return c.moveCall({target:`${t.published_at}::market::update_market_repay_permission`,arguments:[c.object(p),c.object(i),c.pure.bool(r),c.object(l)],typeArguments:[]}),c};this.updateMarketPermissions=async(i,r,o)=>{let t=o||new Ve;return this.updateMarketCreatePositionPermissions(i,r,t),this.updateMarketClosePositionPermissions(i,r,t),this.updateMarketDepositPermissions(i,r,t),this.updateMarketWithdrawPermissions(i,r,t),this.updateMarketBorrowPermissions(i,r,t),this.updateMarketRepayPermissions(i,r,t),t};this._sdk=i}};import{getPackagerConfigs as Wt}from"@cetusprotocol/common-sdk";import{Transaction as Ct}from"@mysten/sui/transactions";var zt=class{constructor(i){this.createMarket=async i=>{let{package_id:r}=this._sdk.sdkOptions.leverage,{versioned:o,admin_cap_id:t,markets:l,global_config_id:p}=Wt(this._sdk.sdkOptions.leverage),c=new Ct;return c.moveCall({target:`${r}::market::create_market`,arguments:[c.object(t),c.object(p),c.object(l),c.pure.u64(i.maxLongLeverage),c.pure.u64(i.maxShortLeverage),c.pure.u64(i.openFeeRate),c.pure.u64(i.closeFeeRate),c.object(o)],typeArguments:[i.baseToken,i.quoteToken]}),c};this.updateMarketMaxLeverage=async i=>{let{package_id:r}=this._sdk.sdkOptions.leverage,{versioned:o,admin_cap_id:t}=Wt(this._sdk.sdkOptions.leverage),{marketId:l,maxLongLeverage:p,maxShortLeverage:c}=i,g=new Ct;return g.moveCall({target:`${r}::market::set_max_leverage`,arguments:[g.object(t),g.object(l),g.pure.u64(p),g.pure.u64(c),g.object(o)],typeArguments:[]}),g};this.updateMarketFeeRate=async i=>{let{package_id:r}=this._sdk.sdkOptions.leverage,{versioned:o,admin_cap_id:t}=Wt(this._sdk.sdkOptions.leverage),{marketId:l,openFeeRate:p,closeFeeRate:c}=i,g=new Ct;return g.moveCall({target:`${r}::market::set_fee_rate`,arguments:[g.object(t),g.object(l),g.pure.u64(p),g.pure.u64(c),g.object(o)],typeArguments:[]}),g};this.claimMarketFees=async(i,r)=>{let{package_id:o}=this._sdk.sdkOptions.leverage,{versioned:t,admin_cap_id:l}=Wt(this._sdk.sdkOptions.leverage),p=r||new Ct,{baseToken:c,quoteToken:g}=await this._sdk.LeverageModules.getLeverageMarketInfo(i);return p.moveCall({target:`${o}::market::claim_fees`,arguments:[p.object(l),p.object(i),p.object(t)],typeArguments:[c,g]}),p};this.claimAllMarketFees=async i=>{let r=new Ct;for(let o=0;o<i.length;o++){let t=i[o];this.claimMarketFees(t,r)}return r};this._sdk=i}};var Kt=class n extends ao{constructor(i,r){super(i),this._suilendModule=new Ot(this),this._leverageModules=new $t(this),this._permissionModules=new Zt(this),this._marketModules=new zt(this),this._aggregatorClient=new lo({signer:uo("0x0"),client:i.sui_client||new fo({url:i.full_rpc_url}),env:i.env==="testnet"?Di.Testnet:Di.Mainnet,pythUrls:i.pyth_urls}),this._clmmSDK=r||co.createSDK({env:i.env,full_rpc_url:i.full_rpc_url}),this._pythConnection=new ho("https://hermes.pyth.network",{timeout:30*1e3})}get SuiLendModule(){return this._suilendModule}get LeverageModules(){return this._leverageModules}get AggregatorClient(){return this._aggregatorClient}get ClmmSDK(){return this._clmmSDK}get PythConnection(){return this._pythConnection}get PermissionModules(){return this._permissionModules}get MarketModules(){return this._marketModules}static createSDK(i){return n.createCustomSDK({...Vr,...i})}static createCustomSDK(i){return new n(i)}};var Gs=Kt;export{Kt as CetusLeverageSDK,Uo as appendExtraRewards,wr as calculateBorrowAprPercent,ei as calculateDepositAprPercent,Yr as calculateUtilizationPercent,Gs as default,Zo as formatLtvPercentValue,ti as getPriceWithFormattedDecimals,jo as getRewardsAprMultiplier,qo as getUpdatedReserve,Vr as leverage_mainnet,Tr as mergePositionData,vr as oraclePriceMultiplierDecimal,$o as updateRewardsWithMultiplier,Cr as wrapMarketInfo,xr as wrapMarketPermissions,Lr as wrapPosition};
2
2
  /*! Bundled license information:
3
3
 
4
4
  decimal.js/decimal.mjs: