@raydium-io/raydium-sdk-v2 0.1.5-alpha → 0.1.7-alpha
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/lib/api/api.d.ts +1 -1
- package/lib/api/index.d.ts +1 -1
- package/lib/api/type.d.ts +1 -1
- package/lib/common/accountInfo.d.ts +1 -1
- package/lib/common/bignumber.d.ts +1 -1
- package/lib/common/fractionUtil.d.ts +1 -1
- package/lib/common/index.d.ts +1 -1
- package/lib/common/transfer.d.ts +1 -1
- package/lib/common/txTool/txTool.d.ts +1 -1
- package/lib/common/txTool/txUtils.d.ts +1 -1
- package/lib/common/utility.d.ts +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/module/amount.d.ts +1 -1
- package/lib/module/fraction.d.ts +1 -1
- package/lib/module/index.d.ts +1 -1
- package/lib/module/percent.d.ts +1 -1
- package/lib/module/price.d.ts +1 -1
- package/lib/raydium/account/account.d.ts +3 -3
- package/lib/raydium/account/index.d.ts +1 -1
- package/lib/raydium/account/instruction.d.ts +1 -1
- package/lib/raydium/account/layout.d.ts +1 -1
- package/lib/raydium/account/types.d.ts +1 -1
- package/lib/raydium/account/util.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +3 -3
- package/lib/raydium/clmm/index.d.ts +3 -3
- package/lib/raydium/clmm/instrument.d.ts +2 -2
- package/lib/raydium/clmm/layout.d.ts +3 -3
- package/lib/raydium/clmm/type.d.ts +2 -2
- package/lib/raydium/clmm/utils/math.d.ts +2 -2
- package/lib/raydium/clmm/utils/pool.d.ts +2 -2
- package/lib/raydium/clmm/utils/position.d.ts +2 -2
- package/lib/raydium/clmm/utils/tick.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
- package/lib/raydium/cpmm/cpmm.d.ts +3 -3
- package/lib/raydium/cpmm/cpmm.js +1 -1
- package/lib/raydium/cpmm/cpmm.js.map +1 -1
- package/lib/raydium/cpmm/cpmm.mjs +1 -1
- package/lib/raydium/cpmm/cpmm.mjs.map +1 -1
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/type.d.ts +4 -1
- package/lib/raydium/cpmm/type.js.map +1 -1
- package/lib/raydium/farm/config.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +3 -3
- package/lib/raydium/farm/index.d.ts +1 -1
- package/lib/raydium/farm/instruction.d.ts +1 -1
- package/lib/raydium/farm/layout.d.ts +1 -1
- package/lib/raydium/farm/type.d.ts +1 -1
- package/lib/raydium/farm/util.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +3 -3
- package/lib/raydium/ido/index.d.ts +3 -3
- package/lib/raydium/ido/instruction.d.ts +1 -1
- package/lib/raydium/ido/type.d.ts +1 -1
- package/lib/raydium/index.d.ts +3 -3
- package/lib/raydium/index.js +1 -1
- package/lib/raydium/index.js.map +1 -1
- package/lib/raydium/index.mjs +1 -1
- package/lib/raydium/index.mjs.map +1 -1
- package/lib/raydium/liquidity/index.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/layout.d.ts +2 -2
- package/lib/raydium/liquidity/liquidity.d.ts +3 -3
- package/lib/raydium/liquidity/type.d.ts +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/index.d.ts +3 -3
- package/lib/raydium/moduleBase.d.ts +3 -3
- package/lib/raydium/raydium.d.ts +3 -3
- package/lib/raydium/raydium.js +1 -1
- package/lib/raydium/raydium.js.map +1 -1
- package/lib/raydium/raydium.mjs +1 -1
- package/lib/raydium/raydium.mjs.map +1 -1
- package/lib/raydium/token/constant.d.ts +1 -1
- package/lib/raydium/token/index.d.ts +1 -1
- package/lib/raydium/token/token.d.ts +3 -3
- package/lib/raydium/token/type.d.ts +1 -1
- package/lib/raydium/token/utils.d.ts +1 -1
- package/lib/raydium/tradeV2/index.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/trade.d.ts +3 -3
- package/lib/raydium/tradeV2/type.d.ts +2 -2
- package/lib/raydium/type.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +3 -3
- package/lib/raydium/utils1216/utils1216.d.ts +3 -3
- package/lib/{raydium-e681ad95.d.ts → raydium-6c4df6ad.d.ts} +4 -4
- package/lib/{type-389634c9.d.ts → type-68b778f2.d.ts} +1 -1
- package/lib/{type-9fe71e3c.d.ts → type-bdbaf9b2.d.ts} +7 -7
- package/package.json +1 -1
- package/src/raydium/cpmm/cpmm.ts +28 -12
- package/src/raydium/cpmm/type.ts +3 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var On=Object.defineProperty,Fn=Object.defineProperties;var Wn=Object.getOwnPropertyDescriptors;var Ge=Object.getOwnPropertySymbols;var Kt=Object.prototype.hasOwnProperty,Dt=Object.prototype.propertyIsEnumerable;var Et=(e,t,n)=>t in e?On(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,V=(e,t)=>{for(var n in t||(t={}))Kt.call(t,n)&&Et(e,n,t[n]);if(Ge)for(var n of Ge(t))Dt.call(t,n)&&Et(e,n,t[n]);return e},ee=(e,t)=>Fn(e,Wn(t));var ae=(e,t)=>{var n={};for(var r in e)Kt.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ge)for(var r of Ge(e))t.indexOf(r)<0&&Dt.call(e,r)&&(n[r]=e[r]);return n};import{PublicKey as A}from"@solana/web3.js";import{NATIVE_MINT as at,TOKEN_PROGRAM_ID as be,AccountLayout as Mi}from"@solana/spl-token";import Yr from"big.js";import Ts from"bn.js";import $ from"bn.js";var Te=9e15,ge=1e9,ut="0123456789abcdef",je="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ze="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ct={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Te,maxE:Te,crypto:!1},Ot,ue,S=!0,Ye="[DecimalError] ",de=Ye+"Invalid argument: ",Ft=Ye+"Precision limit exceeded",Wt=Ye+"crypto unavailable",Vt="[object Decimal]",Z=Math.floor,q=Math.pow,Vn=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,qn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Un=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qt=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,re=1e7,k=7,Gn=9007199254740991,Hn=je.length-1,lt=Ze.length-1,b={toStringTag:Vt};b.absoluteValue=b.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),B(e)};b.ceil=function(){return B(new this.constructor(this),this.e+1,2)};b.clampedTo=b.clamp=function(e,t){var n,r=this,i=r.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(de+t);return n=r.cmp(e),n<0?e:r.cmp(t)>0?t:new i(r)};b.comparedTo=b.cmp=function(e){var t,n,r,i,o=this,s=o.d,a=(e=new o.constructor(e)).d,c=o.s,u=e.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==e.e)return o.e>e.e^c<0?1:-1;for(r=s.length,i=a.length,t=0,n=r<i?r:i;t<n;++t)if(s[t]!==a[t])return s[t]>a[t]^c<0?1:-1;return r===i?0:r>i^c<0?1:-1};b.cosine=b.cos=function(){var e,t,n=this,r=n.constructor;return n.d?n.d[0]?(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+k,r.rounding=1,n=jn(r,Zt(r,n)),r.precision=e,r.rounding=t,B(ue==2||ue==3?n.neg():n,e,t,!0)):new r(1):new r(NaN)};b.cubeRoot=b.cbrt=function(){var e,t,n,r,i,o,s,a,c,u,f=this,l=f.constructor;if(!f.isFinite()||f.isZero())return new l(f);for(S=!1,o=f.s*q(f.s*f,1/3),!o||Math.abs(o)==1/0?(n=j(f.d),e=f.e,(o=(e-n.length+1)%3)&&(n+=o==1||o==-2?"0":"00"),o=q(n,1/3),e=Z((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?n="5e"+e:(n=o.toExponential(),n=n.slice(0,n.indexOf("e")+1)+e),r=new l(n),r.s=f.s):r=new l(o.toString()),s=(e=l.precision)+3;;)if(a=r,c=a.times(a).times(a),u=c.plus(f),r=v(u.plus(f).times(a),u.plus(c),s+2,1),j(a.d).slice(0,s)===(n=j(r.d)).slice(0,s))if(n=n.slice(s-3,s+1),n=="9999"||!i&&n=="4999"){if(!i&&(B(a,e+1,0),a.times(a).times(a).eq(f))){r=a;break}s+=4,i=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(B(r,e+1,1),t=!r.times(r).times(r).eq(f));break}return S=!0,B(r,e,l.rounding,t)};b.decimalPlaces=b.dp=function(){var e,t=this.d,n=NaN;if(t){if(e=t.length-1,n=(e-Z(this.e/k))*k,e=t[e],e)for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n};b.dividedBy=b.div=function(e){return v(this,new this.constructor(e))};b.dividedToIntegerBy=b.divToInt=function(e){var t=this,n=t.constructor;return B(v(t,new n(e),0,1,1),n.precision,n.rounding)};b.equals=b.eq=function(e){return this.cmp(e)===0};b.floor=function(){return B(new this.constructor(this),this.e+1,3)};b.greaterThan=b.gt=function(e){return this.cmp(e)>0};b.greaterThanOrEqualTo=b.gte=function(e){var t=this.cmp(e);return t==1||t===0};b.hyperbolicCosine=b.cosh=function(){var e,t,n,r,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;n=s.precision,r=s.rounding,s.precision=n+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/Xe(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=xe(s,1,o.times(t),new s(1),!0);for(var c,u=e,f=new s(8);u--;)c=o.times(o),o=a.minus(c.times(f.minus(c.times(f))));return B(o,s.precision=n,s.rounding=r,!0)};b.hyperbolicSine=b.sinh=function(){var e,t,n,r,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,n=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,r=i.d.length,r<3)i=xe(o,2,i,i,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,i=i.times(1/Xe(5,e)),i=xe(o,2,i,i,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);e--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=t,o.rounding=n,B(i,t,n,!0)};b.hyperbolicTangent=b.tanh=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,v(n.sinh(),n.cosh(),r.precision=e,r.rounding=t)):new r(n.s)};b.inverseCosine=b.acos=function(){var e,t=this,n=t.constructor,r=t.abs().cmp(1),i=n.precision,o=n.rounding;return r!==-1?r===0?t.isNeg()?ne(n,i,o):new n(0):new n(NaN):t.isZero()?ne(n,i+4,o).times(.5):(n.precision=i+6,n.rounding=1,t=t.asin(),e=ne(n,i+4,o).times(.5),n.precision=i,n.rounding=o,e.minus(t))};b.inverseHyperbolicCosine=b.acosh=function(){var e,t,n=this,r=n.constructor;return n.lte(1)?new r(n.eq(1)?0:NaN):n.isFinite()?(e=r.precision,t=r.rounding,r.precision=e+Math.max(Math.abs(n.e),n.sd())+4,r.rounding=1,S=!1,n=n.times(n).minus(1).sqrt().plus(n),S=!0,r.precision=e,r.rounding=t,n.ln()):new r(n)};b.inverseHyperbolicSine=b.asinh=function(){var e,t,n=this,r=n.constructor;return!n.isFinite()||n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,r.rounding=1,S=!1,n=n.times(n).plus(1).sqrt().plus(n),S=!0,r.precision=e,r.rounding=t,n.ln())};b.inverseHyperbolicTangent=b.atanh=function(){var e,t,n,r,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,r=i.sd(),Math.max(r,e)<2*-i.e-1?B(new o(i),e,t,!0):(o.precision=n=r-i.e,i=v(i.plus(1),new o(1).minus(i),n+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};b.inverseSine=b.asin=function(){var e,t,n,r,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),n=o.precision,r=o.rounding,t!==-1?t===0?(e=ne(o,n+4,r).times(.5),e.s=i.s,e):new o(NaN):(o.precision=n+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=r,i.times(2)))};b.inverseTangent=b.atan=function(){var e,t,n,r,i,o,s,a,c,u=this,f=u.constructor,l=f.precision,m=f.rounding;if(u.isFinite()){if(u.isZero())return new f(u);if(u.abs().eq(1)&&l+4<=lt)return s=ne(f,l+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new f(NaN);if(l+4<=lt)return s=ne(f,l+4,m).times(.5),s.s=u.s,s}for(f.precision=a=l+10,f.rounding=1,n=Math.min(28,a/k+2|0),e=n;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(S=!1,t=Math.ceil(a/k),r=1,c=u.times(u),s=new f(u),i=u;e!==-1;)if(i=i.times(c),o=s.minus(i.div(r+=2)),i=i.times(c),s=o.plus(i.div(r+=2)),s.d[t]!==void 0)for(e=t;s.d[e]===o.d[e]&&e--;);return n&&(s=s.times(2<<n-1)),S=!0,B(s,f.precision=l,f.rounding=m,!0)};b.isFinite=function(){return!!this.d};b.isInteger=b.isInt=function(){return!!this.d&&Z(this.e/k)>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(e){return this.cmp(e)<0};b.lessThanOrEqualTo=b.lte=function(e){return this.cmp(e)<1};b.logarithm=b.log=function(e){var t,n,r,i,o,s,a,c,u=this,f=u.constructor,l=f.precision,m=f.rounding,p=5;if(e==null)e=new f(10),t=!0;else{if(e=new f(e),n=e.d,e.s<0||!n||!n[0]||e.eq(1))return new f(NaN);t=e.eq(10)}if(n=u.d,u.s<0||!n||!n[0]||u.eq(1))return new f(n&&!n[0]?-1/0:u.s!=1?NaN:n?0:1/0);if(t)if(n.length>1)o=!0;else{for(i=n[0];i%10===0;)i/=10;o=i!==1}if(S=!1,a=l+p,s=pe(u,a),r=t?ze(f,a+10):pe(e,a),c=v(s,r,a,1),Ce(c.d,i=l,m))do if(a+=10,s=pe(u,a),r=t?ze(f,a+10):pe(e,a),c=v(s,r,a,1),!o){+j(c.d).slice(i+1,i+15)+1==1e14&&(c=B(c,l+1,0));break}while(Ce(c.d,i+=10,m));return S=!0,B(c,l,m)};b.minus=b.sub=function(e){var t,n,r,i,o,s,a,c,u,f,l,m,p=this,w=p.constructor;if(e=new w(e),!p.d||!e.d)return!p.s||!e.s?e=new w(NaN):p.d?e.s=-e.s:e=new w(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(u=p.d,m=e.d,a=w.precision,c=w.rounding,!u[0]||!m[0]){if(m[0])e.s=-e.s;else if(u[0])e=new w(p);else return new w(c===3?-0:0);return S?B(e,a,c):e}if(n=Z(e.e/k),f=Z(p.e/k),u=u.slice(),o=f-n,o){for(l=o<0,l?(t=u,o=-o,s=m.length):(t=m,n=f,s=u.length),r=Math.max(Math.ceil(a/k),s)+2,o>r&&(o=r,t.length=1),t.reverse(),r=o;r--;)t.push(0);t.reverse()}else{for(r=u.length,s=m.length,l=r<s,l&&(s=r),r=0;r<s;r++)if(u[r]!=m[r]){l=u[r]<m[r];break}o=0}for(l&&(t=u,u=m,m=t,e.s=-e.s),s=u.length,r=m.length-s;r>0;--r)u[s++]=0;for(r=m.length;r>o;){if(u[--r]<m[r]){for(i=r;i&&u[--i]===0;)u[i]=re-1;--u[i],u[r]+=re}u[r]-=m[r]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--n;return u[0]?(e.d=u,e.e=Je(u,n),S?B(e,a,c):e):new w(c===3?-0:0)};b.modulo=b.mod=function(e){var t,n=this,r=n.constructor;return e=new r(e),!n.d||!e.s||e.d&&!e.d[0]?new r(NaN):!e.d||n.d&&!n.d[0]?B(new r(n),r.precision,r.rounding):(S=!1,r.modulo==9?(t=v(n,e.abs(),0,3,1),t.s*=e.s):t=v(n,e,0,r.modulo,1),t=t.times(e),S=!0,n.minus(t))};b.naturalExponential=b.exp=function(){return ft(this)};b.naturalLogarithm=b.ln=function(){return pe(this)};b.negated=b.neg=function(){var e=new this.constructor(this);return e.s=-e.s,B(e)};b.plus=b.add=function(e){var t,n,r,i,o,s,a,c,u,f,l=this,m=l.constructor;if(e=new m(e),!l.d||!e.d)return!l.s||!e.s?e=new m(NaN):l.d||(e=new m(e.d||l.s===e.s?l:NaN)),e;if(l.s!=e.s)return e.s=-e.s,l.minus(e);if(u=l.d,f=e.d,a=m.precision,c=m.rounding,!u[0]||!f[0])return f[0]||(e=new m(l)),S?B(e,a,c):e;if(o=Z(l.e/k),r=Z(e.e/k),u=u.slice(),i=o-r,i){for(i<0?(n=u,i=-i,s=f.length):(n=f,r=o,s=u.length),o=Math.ceil(a/k),s=o>s?o+1:s+1,i>s&&(i=s,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for(s=u.length,i=f.length,s-i<0&&(i=s,n=f,f=u,u=n),t=0;i;)t=(u[--i]=u[i]+f[i]+t)/re|0,u[i]%=re;for(t&&(u.unshift(t),++r),s=u.length;u[--s]==0;)u.pop();return e.d=u,e.e=Je(u,r),S?B(e,a,c):e};b.precision=b.sd=function(e){var t,n=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(de+e);return n.d?(t=Ut(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t};b.round=function(){var e=this,t=e.constructor;return B(new t(e),e.e+1,t.rounding)};b.sine=b.sin=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+k,r.rounding=1,n=zn(r,Zt(r,n)),r.precision=e,r.rounding=t,B(ue>2?n.neg():n,e,t,!0)):new r(NaN)};b.squareRoot=b.sqrt=function(){var e,t,n,r,i,o,s=this,a=s.d,c=s.e,u=s.s,f=s.constructor;if(u!==1||!a||!a[0])return new f(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(S=!1,u=Math.sqrt(+s),u==0||u==1/0?(t=j(a),(t.length+c)%2==0&&(t+="0"),u=Math.sqrt(t),c=Z((c+1)/2)-(c<0||c%2),u==1/0?t="5e"+c:(t=u.toExponential(),t=t.slice(0,t.indexOf("e")+1)+c),r=new f(t)):r=new f(u.toString()),n=(c=f.precision)+3;;)if(o=r,r=o.plus(v(s,o,n+2,1)).times(.5),j(o.d).slice(0,n)===(t=j(r.d)).slice(0,n))if(t=t.slice(n-3,n+1),t=="9999"||!i&&t=="4999"){if(!i&&(B(o,c+1,0),o.times(o).eq(s))){r=o;break}n+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(B(r,c+1,1),e=!r.times(r).eq(s));break}return S=!0,B(r,c,f.rounding,e)};b.tangent=b.tan=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+10,r.rounding=1,n=n.sin(),n.s=1,n=v(n,new r(1).minus(n.times(n)).sqrt(),e+10,0),r.precision=e,r.rounding=t,B(ue==2||ue==4?n.neg():n,e,t,!0)):new r(NaN)};b.times=b.mul=function(e){var t,n,r,i,o,s,a,c,u,f=this,l=f.constructor,m=f.d,p=(e=new l(e)).d;if(e.s*=f.s,!m||!m[0]||!p||!p[0])return new l(!e.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?e.s/0:e.s*0);for(n=Z(f.e/k)+Z(e.e/k),c=m.length,u=p.length,c<u&&(o=m,m=p,p=o,s=c,c=u,u=s),o=[],s=c+u,r=s;r--;)o.push(0);for(r=u;--r>=0;){for(t=0,i=c+r;i>r;)a=o[i]+p[r]*m[i-r-1]+t,o[i--]=a%re|0,t=a/re|0;o[i]=(o[i]+t)%re|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=Je(o,n),S?B(e,l.precision,l.rounding):e};b.toBinary=function(e,t){return pt(this,2,e,t)};b.toDecimalPlaces=b.toDP=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(Q(e,0,ge),t===void 0?t=r.rounding:Q(t,0,8),B(n,e+n.e+1,t))};b.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=oe(r,!0):(Q(e,0,ge),t===void 0?t=i.rounding:Q(t,0,8),r=B(new i(r),e+1,t),n=oe(r,!0,e+1)),r.isNeg()&&!r.isZero()?"-"+n:n};b.toFixed=function(e,t){var n,r,i=this,o=i.constructor;return e===void 0?n=oe(i):(Q(e,0,ge),t===void 0?t=o.rounding:Q(t,0,8),r=B(new o(i),e+i.e+1,t),n=oe(r,!1,e+r.e+1)),i.isNeg()&&!i.isZero()?"-"+n:n};b.toFraction=function(e){var t,n,r,i,o,s,a,c,u,f,l,m,p=this,w=p.d,d=p.constructor;if(!w)return new d(p);if(u=n=new d(1),r=c=new d(0),t=new d(r),o=t.e=Ut(w)-p.e-1,s=o%k,t.d[0]=q(10,s<0?k+s:s),e==null)e=o>0?t:u;else{if(a=new d(e),!a.isInt()||a.lt(u))throw Error(de+a);e=a.gt(t)?o>0?t:u:a}for(S=!1,a=new d(j(w)),f=d.precision,d.precision=o=w.length*k*2;l=v(a,t,0,1,1),i=n.plus(l.times(r)),i.cmp(e)!=1;)n=r,r=i,i=u,u=c.plus(l.times(i)),c=i,i=t,t=a.minus(l.times(i)),a=i;return i=v(e.minus(n),r,0,1,1),c=c.plus(i.times(u)),n=n.plus(i.times(r)),c.s=u.s=p.s,m=v(u,r,o,1).minus(p).abs().cmp(v(c,n,o,1).minus(p).abs())<1?[u,r]:[c,n],d.precision=f,S=!0,m};b.toHexadecimal=b.toHex=function(e,t){return pt(this,16,e,t)};b.toNearest=function(e,t){var n=this,r=n.constructor;if(n=new r(n),e==null){if(!n.d)return n;e=new r(1),t=r.rounding}else{if(e=new r(e),t===void 0?t=r.rounding:Q(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(S=!1,n=v(n,e,0,t,1).times(e),S=!0,B(n)):(e.s=n.s,n=e),n};b.toNumber=function(){return+this};b.toOctal=function(e,t){return pt(this,8,e,t)};b.toPower=b.pow=function(e){var t,n,r,i,o,s,a=this,c=a.constructor,u=+(e=new c(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new c(q(+a,u));if(a=new c(a),a.eq(1))return a;if(r=c.precision,o=c.rounding,e.eq(1))return B(a,r,o);if(t=Z(e.e/k),t>=e.d.length-1&&(n=u<0?-u:u)<=Gn)return i=Gt(c,a,n,r),e.s<0?new c(1).div(i):B(i,r,o);if(s=a.s,s<0){if(t<e.d.length-1)return new c(NaN);if((e.d[t]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return n=q(+a,u),t=n==0||!isFinite(n)?Z(u*(Math.log("0."+j(a.d))/Math.LN10+a.e+1)):new c(n+"").e,t>c.maxE+1||t<c.minE-1?new c(t>0?s/0:0):(S=!1,c.rounding=a.s=1,n=Math.min(12,(t+"").length),i=ft(e.times(pe(a,r+n)),r),i.d&&(i=B(i,r+5,1),Ce(i.d,r,o)&&(t=r+10,i=B(ft(e.times(pe(a,t+n)),t),t+5,1),+j(i.d).slice(r+1,r+15)+1==1e14&&(i=B(i,r+1,0)))),i.s=s,S=!0,c.rounding=o,B(i,r,o))};b.toPrecision=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=oe(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(Q(e,1,ge),t===void 0?t=i.rounding:Q(t,0,8),r=B(new i(r),e,t),n=oe(r,e<=r.e||r.e<=i.toExpNeg,e)),r.isNeg()&&!r.isZero()?"-"+n:n};b.toSignificantDigits=b.toSD=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(Q(e,1,ge),t===void 0?t=r.rounding:Q(t,0,8)),B(new r(n),e,t)};b.toString=function(){var e=this,t=e.constructor,n=oe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n};b.truncated=b.trunc=function(){return B(new this.constructor(this),this.e+1,1)};b.valueOf=b.toJSON=function(){var e=this,t=e.constructor,n=oe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};function j(e){var t,n,r,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,t=1;t<i;t++)r=e[t]+"",n=k-r.length,n&&(o+=me(n)),o+=r;s=e[t],r=s+"",n=k-r.length,n&&(o+=me(n))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Q(e,t,n){if(e!==~~e||e<t||e>n)throw Error(de+e)}function Ce(e,t,n,r){var i,o,s,a;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=k,i=0):(i=Math.ceil((t+1)/k),t%=k),o=q(10,k-t),a=e[i]%o|0,r==null?t<3?(t==0?a=a/100|0:t==1&&(a=a/10|0),s=n<4&&a==99999||n>3&&a==49999||a==5e4||a==0):s=(n<4&&a+1==o||n>3&&a+1==o/2)&&(e[i+1]/o/100|0)==q(10,t-2)-1||(a==o/2||a==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?a=a/1e3|0:t==1?a=a/100|0:t==2&&(a=a/10|0),s=(r||n<4)&&a==9999||!r&&n>3&&a==4999):s=((r||n<4)&&a+1==o||!r&&n>3&&a+1==o/2)&&(e[i+1]/o/1e3|0)==q(10,t-3)-1,s}function He(e,t,n){for(var r,i=[0],o,s=0,a=e.length;s<a;){for(o=i.length;o--;)i[o]*=t;for(i[0]+=ut.indexOf(e.charAt(s++)),r=0;r<i.length;r++)i[r]>n-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/n|0,i[r]%=n)}return i.reverse()}function jn(e,t){var n,r,i;if(t.isZero())return t;r=t.d.length,r<32?(n=Math.ceil(r/3),i=(1/Xe(4,n)).toString()):(n=16,i="2.3283064365386962890625e-10"),e.precision+=n,t=xe(e,1,t.times(i),new e(1));for(var o=n;o--;){var s=t.times(t);t=s.times(s).minus(s).times(8).plus(1)}return e.precision-=n,t}var v=function(){function e(r,i,o){var s,a=0,c=r.length;for(r=r.slice();c--;)s=r[c]*i+a,r[c]=s%o|0,a=s/o|0;return a&&r.unshift(a),r}function t(r,i,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(r[a]!=i[a]){c=r[a]>i[a]?1:-1;break}return c}function n(r,i,o,s){for(var a=0;o--;)r[o]-=a,a=r[o]<i[o]?1:0,r[o]=a*s+r[o]-i[o];for(;!r[0]&&r.length>1;)r.shift()}return function(r,i,o,s,a,c){var u,f,l,m,p,w,d,P,g,y,h,T,x,C,L,M,N,F,I,G,H=r.constructor,X=r.s==i.s?1:-1,U=r.d,R=i.d;if(!U||!U[0]||!R||!R[0])return new H(!r.s||!i.s||(U?R&&U[0]==R[0]:!R)?NaN:U&&U[0]==0||!R?X*0:X/0);for(c?(p=1,f=r.e-i.e):(c=re,p=k,f=Z(r.e/p)-Z(i.e/p)),I=R.length,N=U.length,g=new H(X),y=g.d=[],l=0;R[l]==(U[l]||0);l++);if(R[l]>(U[l]||0)&&f--,o==null?(C=o=H.precision,s=H.rounding):a?C=o+(r.e-i.e)+1:C=o,C<0)y.push(1),w=!0;else{if(C=C/p+2|0,l=0,I==1){for(m=0,R=R[0],C++;(l<N||m)&&C--;l++)L=m*c+(U[l]||0),y[l]=L/R|0,m=L%R|0;w=m||l<N}else{for(m=c/(R[0]+1)|0,m>1&&(R=e(R,m,c),U=e(U,m,c),I=R.length,N=U.length),M=I,h=U.slice(0,I),T=h.length;T<I;)h[T++]=0;G=R.slice(),G.unshift(0),F=R[0],R[1]>=c/2&&++F;do m=0,u=t(R,h,I,T),u<0?(x=h[0],I!=T&&(x=x*c+(h[1]||0)),m=x/F|0,m>1?(m>=c&&(m=c-1),d=e(R,m,c),P=d.length,T=h.length,u=t(d,h,P,T),u==1&&(m--,n(d,I<P?G:R,P,c))):(m==0&&(u=m=1),d=R.slice()),P=d.length,P<T&&d.unshift(0),n(h,d,T,c),u==-1&&(T=h.length,u=t(R,h,I,T),u<1&&(m++,n(h,I<T?G:R,T,c))),T=h.length):u===0&&(m++,h=[0]),y[l++]=m,u&&h[0]?h[T++]=U[M]||0:(h=[U[M]],T=1);while((M++<N||h[0]!==void 0)&&C--);w=h[0]!==void 0}y[0]||y.shift()}if(p==1)g.e=f,Ot=w;else{for(l=1,m=y[0];m>=10;m/=10)l++;g.e=l+f*p-1,B(g,a?o+g.e+1:o,s,w)}return g}}();function B(e,t,n,r){var i,o,s,a,c,u,f,l,m,p=e.constructor;e:if(t!=null){if(l=e.d,!l)return e;for(i=1,a=l[0];a>=10;a/=10)i++;if(o=t-i,o<0)o+=k,s=t,f=l[m=0],c=f/q(10,i-s-1)%10|0;else if(m=Math.ceil((o+1)/k),a=l.length,m>=a)if(r){for(;a++<=m;)l.push(0);f=c=0,i=1,o%=k,s=o-k+1}else break e;else{for(f=a=l[m],i=1;a>=10;a/=10)i++;o%=k,s=o-k+i,c=s<0?0:f/q(10,i-s-1)%10|0}if(r=r||t<0||l[m+1]!==void 0||(s<0?f:f%q(10,i-s-1)),u=n<4?(c||r)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||r||n==6&&(o>0?s>0?f/q(10,i-s):0:l[m-1])%10&1||n==(e.s<0?8:7)),t<1||!l[0])return l.length=0,u?(t-=e.e+1,l[0]=q(10,(k-t%k)%k),e.e=-t||0):l[0]=e.e=0,e;if(o==0?(l.length=m,a=1,m--):(l.length=m+1,a=q(10,k-o),l[m]=s>0?(f/q(10,i-s)%q(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,l[0]==re&&(l[0]=1));break}else{if(l[m]+=a,l[m]!=re)break;l[m--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return S&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function oe(e,t,n){if(!e.isFinite())return jt(e);var r,i=e.e,o=j(e.d),s=o.length;return t?(n&&(r=n-s)>0?o=o.charAt(0)+"."+o.slice(1)+me(r):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+me(-i-1)+o,n&&(r=n-s)>0&&(o+=me(r))):i>=s?(o+=me(i+1-s),n&&(r=n-i-1)>0&&(o=o+"."+me(r))):((r=i+1)<s&&(o=o.slice(0,r)+"."+o.slice(r)),n&&(r=n-s)>0&&(i+1===s&&(o+="."),o+=me(r))),o}function Je(e,t){var n=e[0];for(t*=k;n>=10;n/=10)t++;return t}function ze(e,t,n){if(t>Hn)throw S=!0,n&&(e.precision=n),Error(Ft);return B(new e(je),t,1,!0)}function ne(e,t,n){if(t>lt)throw Error(Ft);return B(new e(Ze),t,n,!0)}function Ut(e){var t=e.length-1,n=t*k+1;if(t=e[t],t){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function me(e){for(var t="";e--;)t+="0";return t}function Gt(e,t,n,r){var i,o=new e(1),s=Math.ceil(r/k+4);for(S=!1;;){if(n%2&&(o=o.times(t),vt(o.d,s)&&(i=!0)),n=Z(n/2),n===0){n=o.d.length-1,i&&o.d[n]===0&&++o.d[n];break}t=t.times(t),vt(t.d,s)}return S=!0,o}function Rt(e){return e.d[e.d.length-1]&1}function Ht(e,t,n){for(var r,i=new e(t[0]),o=0;++o<t.length;)if(r=new e(t[o]),r.s)i[n](r)&&(i=r);else{i=r;break}return i}function ft(e,t){var n,r,i,o,s,a,c,u=0,f=0,l=0,m=e.constructor,p=m.rounding,w=m.precision;if(!e.d||!e.d[0]||e.e>17)return new m(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:0/0);for(t==null?(S=!1,c=w):c=t,a=new m(.03125);e.e>-2;)e=e.times(a),l+=5;for(r=Math.log(q(2,l))/Math.LN10*2+5|0,c+=r,n=o=s=new m(1),m.precision=c;;){if(o=B(o.times(e),c,1),n=n.times(++f),a=s.plus(v(o,n,c,1)),j(a.d).slice(0,c)===j(s.d).slice(0,c)){for(i=l;i--;)s=B(s.times(s),c,1);if(t==null)if(u<3&&Ce(s.d,c-r,p,u))m.precision=c+=10,n=o=a=new m(1),f=0,u++;else return B(s,m.precision=w,p,S=!0);else return m.precision=w,s}s=a}}function pe(e,t){var n,r,i,o,s,a,c,u,f,l,m,p=1,w=10,d=e,P=d.d,g=d.constructor,y=g.rounding,h=g.precision;if(d.s<0||!P||!P[0]||!d.e&&P[0]==1&&P.length==1)return new g(P&&!P[0]?-1/0:d.s!=1?NaN:P?0:d);if(t==null?(S=!1,f=h):f=t,g.precision=f+=w,n=j(P),r=n.charAt(0),Math.abs(o=d.e)<15e14){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)d=d.times(e),n=j(d.d),r=n.charAt(0),p++;o=d.e,r>1?(d=new g("0."+n),o++):d=new g(r+"."+n.slice(1))}else return u=ze(g,f+2,h).times(o+""),d=pe(new g(r+"."+n.slice(1)),f-w).plus(u),g.precision=h,t==null?B(d,h,y,S=!0):d;for(l=d,c=s=d=v(d.minus(1),d.plus(1),f,1),m=B(d.times(d),f,1),i=3;;){if(s=B(s.times(m),f,1),u=c.plus(v(s,new g(i),f,1)),j(u.d).slice(0,f)===j(c.d).slice(0,f))if(c=c.times(2),o!==0&&(c=c.plus(ze(g,f+2,h).times(o+""))),c=v(c,new g(p),f,1),t==null)if(Ce(c.d,f-w,y,a))g.precision=f+=w,u=s=d=v(l.minus(1),l.plus(1),f,1),m=B(d.times(d),f,1),i=a=1;else return B(c,g.precision=h,y,S=!0);else return g.precision=h,c;c=u,i+=2}}function jt(e){return String(e.s*e.s/0)}function mt(e,t){var n,r,i;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;r++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(r,i),t){if(i-=r,e.e=n=n-r-1,e.d=[],r=(n+1)%k,n<0&&(r+=k),r<i){for(r&&e.d.push(+t.slice(0,r)),i-=k;r<i;)e.d.push(+t.slice(r,r+=k));t=t.slice(r),r=k-t.length}else r-=i;for(;r--;)t+="0";e.d.push(+t),S&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function Zn(e,t){var n,r,i,o,s,a,c,u,f;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),qt.test(t))return mt(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(qn.test(t))n=16,t=t.toLowerCase();else if(Vn.test(t))n=2;else if(Un.test(t))n=8;else throw Error(de+t);for(o=t.search(/p/i),o>0?(c=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),s=o>=0,r=e.constructor,s&&(t=t.replace(".",""),a=t.length,o=a-o,i=Gt(r,new r(n),o,o*2)),u=He(t,n,re),f=u.length-1,o=f;u[o]===0;--o)u.pop();return o<0?new r(e.s*0):(e.e=Je(u,f),e.d=u,S=!1,s&&(e=v(e,i,a*4)),c&&(e=e.times(Math.abs(c)<54?q(2,c):Ie.pow(2,c))),S=!0,e)}function zn(e,t){var n,r=t.d.length;if(r<3)return t.isZero()?t:xe(e,2,t,t);n=1.4*Math.sqrt(r),n=n>16?16:n|0,t=t.times(1/Xe(5,n)),t=xe(e,2,t,t);for(var i,o=new e(5),s=new e(16),a=new e(20);n--;)i=t.times(t),t=t.times(o.plus(i.times(s.times(i).minus(a))));return t}function xe(e,t,n,r,i){var o,s,a,c,u=1,f=e.precision,l=Math.ceil(f/k);for(S=!1,c=n.times(n),a=new e(r);;){if(s=v(a.times(c),new e(t++*t++),f,1),a=i?r.plus(s):r.minus(s),r=v(s.times(c),new e(t++*t++),f,1),s=a.plus(r),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=r,r=s,s=o,u++}return S=!0,s.d.length=l+1,s}function Xe(e,t){for(var n=e;--t;)n*=e;return n}function Zt(e,t){var n,r=t.s<0,i=ne(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return ue=r?4:1,t;if(n=t.divToInt(i),n.isZero())ue=r?3:2;else{if(t=t.minus(n.times(i)),t.lte(o))return ue=Rt(n)?r?2:3:r?4:1,t;ue=Rt(n)?r?1:4:r?3:2}return t.minus(i).abs()}function pt(e,t,n,r){var i,o,s,a,c,u,f,l,m,p=e.constructor,w=n!==void 0;if(w?(Q(n,1,ge),r===void 0?r=p.rounding:Q(r,0,8)):(n=p.precision,r=p.rounding),!e.isFinite())f=jt(e);else{for(f=oe(e),s=f.indexOf("."),w?(i=2,t==16?n=n*4-3:t==8&&(n=n*3-2)):i=t,s>=0&&(f=f.replace(".",""),m=new p(1),m.e=f.length-s,m.d=He(oe(m),10,i),m.e=m.d.length),l=He(f,10,i),o=c=l.length;l[--c]==0;)l.pop();if(!l[0])f=w?"0p+0":"0";else{if(s<0?o--:(e=new p(e),e.d=l,e.e=o,e=v(e,m,n,r,0,i),l=e.d,o=e.e,u=Ot),s=l[n],a=i/2,u=u||l[n+1]!==void 0,u=r<4?(s!==void 0||u)&&(r===0||r===(e.s<0?3:2)):s>a||s===a&&(r===4||u||r===6&&l[n-1]&1||r===(e.s<0?8:7)),l.length=n,u)for(;++l[--n]>i-1;)l[n]=0,n||(++o,l.unshift(1));for(c=l.length;!l[c-1];--c);for(s=0,f="";s<c;s++)f+=ut.charAt(l[s]);if(w){if(c>1)if(t==16||t==8){for(s=t==16?4:3,--c;c%s;c++)f+="0";for(l=He(f,i,t),c=l.length;!l[c-1];--c);for(s=1,f="1.";s<c;s++)f+=ut.charAt(l[s])}else f=f.charAt(0)+"."+f.slice(1);f=f+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)f="0"+f;f="0."+f}else if(++o>c)for(o-=c;o--;)f+="0";else o<c&&(f=f.slice(0,o)+"."+f.slice(o))}f=(t==16?"0x":t==2?"0b":t==8?"0o":"")+f}return e.s<0?"-"+f:f}function vt(e,t){if(e.length>t)return e.length=t,!0}function Yn(e){return new this(e).abs()}function Jn(e){return new this(e).acos()}function Xn(e){return new this(e).acosh()}function Qn(e,t){return new this(e).plus(t)}function $n(e){return new this(e).asin()}function er(e){return new this(e).asinh()}function tr(e){return new this(e).atan()}function nr(e){return new this(e).atanh()}function rr(e,t){e=new this(e),t=new this(t);var n,r=this.precision,i=this.rounding,o=r+4;return!e.s||!t.s?n=new this(NaN):!e.d&&!t.d?(n=ne(this,o,1).times(t.s>0?.25:.75),n.s=e.s):!t.d||e.isZero()?(n=t.s<0?ne(this,r,i):new this(0),n.s=e.s):!e.d||t.isZero()?(n=ne(this,o,1).times(.5),n.s=e.s):t.s<0?(this.precision=o,this.rounding=1,n=this.atan(v(e,t,o,1)),t=ne(this,o,1),this.precision=r,this.rounding=i,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(v(e,t,o,1)),n}function ir(e){return new this(e).cbrt()}function or(e){return B(e=new this(e),e.e+1,2)}function sr(e,t,n){return new this(e).clamp(t,n)}function ar(e){if(!e||typeof e!="object")throw Error(Ye+"Object expected");var t,n,r,i=e.defaults===!0,o=["precision",1,ge,"rounding",0,8,"toExpNeg",-Te,0,"toExpPos",0,Te,"maxE",0,Te,"minE",-Te,0,"modulo",0,9];for(t=0;t<o.length;t+=3)if(n=o[t],i&&(this[n]=ct[n]),(r=e[n])!==void 0)if(Z(r)===r&&r>=o[t+1]&&r<=o[t+2])this[n]=r;else throw Error(de+n+": "+r);if(n="crypto",i&&(this[n]=ct[n]),(r=e[n])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error(Wt);else this[n]=!1;else throw Error(de+n+": "+r);return this}function ur(e){return new this(e).cos()}function cr(e){return new this(e).cosh()}function zt(e){var t,n,r;function i(o){var s,a,c,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,_t(o)){u.s=o.s,S?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e<i.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;S?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return mt(u,o.toString())}else if(c!=="string")throw Error(de+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),qt.test(o)?mt(u,o):Zn(u,o)}if(i.prototype=b,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ar,i.clone=zt,i.isDecimal=_t,i.abs=Yn,i.acos=Jn,i.acosh=Xn,i.add=Qn,i.asin=$n,i.asinh=er,i.atan=tr,i.atanh=nr,i.atan2=rr,i.cbrt=ir,i.ceil=or,i.clamp=sr,i.cos=ur,i.cosh=cr,i.div=lr,i.exp=fr,i.floor=mr,i.hypot=pr,i.ln=dr,i.log=gr,i.log10=br,i.log2=hr,i.max=yr,i.min=wr,i.mod=Pr,i.mul=Tr,i.pow=xr,i.random=Ar,i.round=Br,i.sign=kr,i.sin=Sr,i.sinh=Cr,i.sqrt=Ir,i.sub=Lr,i.sum=Nr,i.tan=Mr,i.tanh=Er,i.trunc=Kr,e===void 0&&(e={}),e&&e.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return i.config(e),i}function lr(e,t){return new this(e).div(t)}function fr(e){return new this(e).exp()}function mr(e){return B(e=new this(e),e.e+1,3)}function pr(){var e,t,n=new this(0);for(S=!1,e=0;e<arguments.length;)if(t=new this(arguments[e++]),t.d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return S=!0,new this(1/0);n=t}return S=!0,n.sqrt()}function _t(e){return e instanceof Ie||e&&e.toStringTag===Vt||!1}function dr(e){return new this(e).ln()}function gr(e,t){return new this(e).log(t)}function hr(e){return new this(e).log(2)}function br(e){return new this(e).log(10)}function yr(){return Ht(this,arguments,"lt")}function wr(){return Ht(this,arguments,"gt")}function Pr(e,t){return new this(e).mod(t)}function Tr(e,t){return new this(e).mul(t)}function xr(e,t){return new this(e).pow(t)}function Ar(e){var t,n,r,i,o=0,s=new this(1),a=[];if(e===void 0?e=this.precision:Q(e,1,ge),r=Math.ceil(e/k),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(r));o<r;)i=t[o],i>=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(r*=4);o<r;)i=t[o]+(t[o+1]<<8)+(t[o+2]<<16)+((t[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(t,o):(a.push(i%1e7),o+=4);o=r/4}else throw Error(Wt);else for(;o<r;)a[o++]=Math.random()*1e7|0;for(r=a[--o],e%=k,r&&e&&(i=q(10,k-e),a[o]=(r/i|0)*i);a[o]===0;o--)a.pop();if(o<0)n=0,a=[0];else{for(n=-1;a[0]===0;n-=k)a.shift();for(r=1,i=a[0];i>=10;i/=10)r++;r<k&&(n-=k-r)}return s.e=n,s.d=a,s}function Br(e){return B(e=new this(e),e.e+1,this.rounding)}function kr(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function Sr(e){return new this(e).sin()}function Cr(e){return new this(e).sinh()}function Ir(e){return new this(e).sqrt()}function Lr(e,t){return new this(e).sub(t)}function Nr(){var e=0,t=arguments,n=new this(t[e]);for(S=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return S=!0,B(n,this.precision,this.rounding)}function Mr(e){return new this(e).tan()}function Er(e){return new this(e).tanh()}function Kr(e){return B(e=new this(e),e.e+1,1)}b[Symbol.for("nodejs.util.inspect.custom")]=b.toString;b[Symbol.toStringTag]="Decimal";var Ie=b.constructor=zt(ct);je=new Ie(je);Ze=new Ie(Ze);var J=Ie;import{PublicKey as gt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Dr}from"@solana/spl-token";import{PublicKey as W,SystemProgram as Yt,SYSVAR_RENT_PUBKEY as Rr}from"@solana/web3.js";function dt({pubkey:e,isSigner:t=!1,isWritable:n=!0}){return{pubkey:e,isWritable:n,isSigner:t}}var Oi=[dt({pubkey:Dr,isWritable:!1}),dt({pubkey:Yt.programId,isWritable:!1}),dt({pubkey:Rr,isWritable:!1})];function Jt({publicKey:e,transformSol:t}){let n=Xt(e.toString());if(n instanceof W)return t&&n.equals(Ne)?Le:n;if(t&&n.toString()===Ne.toBase58())return Le;if(typeof n=="string"){if(n===W.default.toBase58())return W.default;try{return new W(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Xt(e){try{return new W(e)}catch{return e}}var Fi=new W("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Qt=new W("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$t=new W("SysvarRent111111111111111111111111111111111"),Wi=new W("SysvarC1ock11111111111111111111111111111111"),Vi=new W("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),qi=new W("Sysvar1nstructions1111111111111111111111111"),en=Yt.programId,Ui=new W("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Gi=new W("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Hi=new W("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ji=new W("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Zi=new W("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),zi=new W("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Yi=new W("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ji=new W("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Xi=new W("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Qi=new W("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),$i=new W("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Le=new W("So11111111111111111111111111111111111111112"),Ne=W.default;import{PublicKey as vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tn}from"@solana/spl-token";var nn={chainId:101,address:vr.default.toBase58(),programId:tn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:tn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var ht=class{constructor({mint:t,decimals:n,symbol:r,name:i,skipMint:o=!1,isToken2022:s=!1}){if(t===Ne.toBase58()||t instanceof gt&&Ne.equals(t)){this.decimals=ye.decimals,this.symbol=ye.symbol,this.name=ye.name,this.mint=new gt(ye.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=r||t.toString().substring(0,6),this.name=i||t.toString().substring(0,6),this.mint=o?gt.default:Jt({publicKey:t}),this.isToken2022=s}equals(t){return this===t?!0:this.mint.equals(t.mint)}},Ae=ht;Ae.WSOL=new ht(ee(V({},ye),{mint:ye.address}));import{get as rn,set as _r}from"lodash";import sn from"dayjs";import Or from"dayjs/plugin/utc";sn.extend(Or);var bt=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return sn().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(r=>typeof r=="object"?JSON.stringify(r):r).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},on={},Fr={};function z(e){let t=rn(on,e);if(!t){let n=rn(Fr,e);t=new bt({name:e,logLevel:n}),_r(on,e,t)}return t}import $e from"big.js";import qr from"bn.js";import Ur from"decimal.js-light";import Wr from"toformat";var Vr=Wr,Me=Vr;var Qe=z("module/fraction"),yt=Me($e),Ee=Me(Ur),Gr={[0]:Ee.ROUND_DOWN,[1]:Ee.ROUND_HALF_UP,[2]:Ee.ROUND_UP},Hr={[0]:$e.roundDown,[1]:$e.roundHalfUp,[2]:$e.roundUp},O=class{constructor(t,n=new qr(1)){this.numerator=he(t),this.denominator=he(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new O(this.denominator,this.numerator)}add(t){let n=t instanceof O?t:new O(he(t));return this.denominator.eq(n.denominator)?new O(this.numerator.add(n.numerator),this.denominator):new O(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof O?t:new O(he(t));return this.denominator.eq(n.denominator)?new O(this.numerator.sub(n.numerator),this.denominator):new O(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof O?t:new O(he(t));return new O(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof O?t:new O(he(t));return new O(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},r=1){Number.isInteger(t)||Qe.logWithError(`${t} is not an integer.`),t<=0&&Qe.logWithError(`${t} is not positive.`),Ee.set({precision:t+1,rounding:Gr[r]});let i=new Ee(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return i.toFormat(i.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},r=1){return Number.isInteger(t)||Qe.logWithError(`${t} is not an integer.`),t<0&&Qe.logWithError(`${t} is negative.`),yt.DP=t,yt.RM=Hr[r]||1,new yt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var No=z("Raydium_price");var wt=class{constructor({decimals:t,symbol:n="UNKNOWN",name:r="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=r}equals(t){return this===t}},et=wt;et.SOL=new wt(nn);import Zr from"bn.js";var an=new O(new Zr(100)),se=class extends O{toSignificant(t=5,n,r){return this.mul(an).toSignificant(t,n,r)}toFixed(t=2,n,r){return this.mul(an).toFixed(t,n,r)}};import{PublicKey as Ho}from"@solana/web3.js";import Zo from"bn.js";var Pt=new $(0),ls=new $(1),fs=new $(2),ms=new $(3),ps=new $(5),zr=new $(10),ds=new $(100),gs=new $(1e3),hs=new $(1e4),ln=9007199254740991;function he(e){let t=z("Raydium_parseBigNumberish");if(e instanceof $)return e;if(typeof e=="string"){if(e.match(/^-?[0-9]+$/))return new $(e);t.logWithError(`invalid BigNumberish string: ${e}`)}return typeof e=="number"?(e%1&&t.logWithError(`BigNumberish number underflow: ${e}`),(e>=ln||e<=-ln)&&t.logWithError(`BigNumberish number overflow: ${e}`),new $(String(e))):typeof e=="bigint"?new $(e.toString()):(t.error(`invalid BigNumberish value: ${e}`),new $(0))}var Ls=z("Raydium_amount"),Ns=Me(Yr);import{PublicKey as ti}from"@solana/web3.js";import{PublicKey as Jr,ComputeBudgetProgram as fn,Transaction as pn,TransactionMessage as Xr,Keypair as dn,VersionedTransaction as gn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qr}from"@solana/spl-token";var ce={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};var mn=z("Raydium_txUtil"),hn=1644;function tt(e){let t=[],n=[];return e.microLamports&&(t.push(fn.setComputeUnitPrice({microLamports:e.microLamports})),n.push(ce.SetComputeUnitPrice)),e.units&&(t.push(fn.setComputeUnitLimit({units:e.units})),n.push(ce.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Be(e){var t,n;try{return((n=await((t=e.getLatestBlockhash)==null?void 0:t.call(e)))==null?void 0:n.blockhash)||(await e.getRecentBlockhash()).blockhash}catch{return(await e.getRecentBlockhash()).blockhash}}function $r(e,t){e.length<1&&mn.logWithError(`no instructions provided: ${e.toString()}`),t.length<1&&mn.logWithError(`no signers provided:, ${t.toString()}`);let n=new pn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...e);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<hn}catch{return!1}}function le(e,t){let[n,r]=Jr.findProgramAddressSync(e,t);return{publicKey:n,nonce:r}}function Ke({instructions:e,payer:t,signers:n}){return $r(e,[t,...n])}function De({instructions:e,payer:t,lookupTableAddressAccount:n,recentBlockhash:r=dn.generate().publicKey.toString()}){let o=new Xr({payerKey:t,recentBlockhash:r,instructions:e}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new gn(o).serialize()).toString("base64").length<hn}catch{return!1}}var ei=e=>Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e);function we(e){let t=[];return e.forEach(n=>{n instanceof pn&&(n.recentBlockhash||(n.recentBlockhash=Qr.toBase58()),n.feePayer||(n.feePayer=dn.generate().publicKey));let r=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof gn&&(r=ei(r));let i=r.toString("base64");t.push(i)}),console.log("simulate tx string:",t),t}import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";function bn(e,t,n){return le([e.toBuffer(),(n!=null?n:ni).toBuffer(),t.toBuffer()],new ti("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as ve,sendAndConfirmTransaction as _e,Transaction as Oe,TransactionMessage as Fe,VersionedTransaction as We}from"@solana/web3.js";import ai from"axios";import{PublicKey as wn,AddressLookupTableAccount as nt}from"@solana/web3.js";import{PublicKey as si}from"@solana/web3.js";import{getTransferFeeConfig as za,unpackMint as Ya}from"@solana/spl-token";function Tt(e,t=1,n=[]){let r=[...e];if(t<=0)return n;for(;r.length;)n.push(r.splice(0,t));return n}import{PublicKey as D}from"@solana/web3.js";var ia=new D("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),oa=new D("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),sa=new D("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),aa=new D("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ua=new D("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ca=new D("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),la=new D("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),fa=new D("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ma=new D("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),pa=new D("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),da=new D("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),ga=new D("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ha=new D("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ba=new D("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ya=new D("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wa=new D("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Pa=new D("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Ta=new D("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ri=new D("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ii=new D("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),oi=new D("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var xa={SERUM_MARKET:D.default,OPENBOOK_MARKET:new D("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:D.default,FarmV3:new D("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new D("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new D("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new D("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new D("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new D("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new D("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ri,CREATE_CPMM_POOL_AUTH:ii,CREATE_CPMM_POOL_FEE_ACC:oi,FEE_DESTINATION_ID:new D("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import ie from"bn.js";var Re=1e4;function ke(e,t,n,r){if(t===void 0)return{amount:e,fee:void 0,expirationTime:void 0};let i=ee(V({},t),{olderTransferFee:{epoch:BigInt(t.olderTransferFee.epoch),maximumFee:BigInt(t.olderTransferFee.maximumFee),transferFeeBasisPoints:t.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(t.newerTransferFee.epoch),maximumFee:BigInt(t.newerTransferFee.maximumFee),transferFeeBasisPoints:t.newerTransferFee.transferFeeBasisPoints}}),o=n.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new ie(o.maximumFee.toString()),a=n.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*n.slotsInEpoch-n.absoluteSlot)*400/1e3:void 0;if(r)if(o.transferFeeBasisPoints===Re){let c=new ie(o.maximumFee.toString());return{amount:e.add(c),fee:c,expirationTime:a}}else{let c=xt(e.mul(new ie(Re)),new ie(Re-o.transferFeeBasisPoints)),u=new ie(o.maximumFee.toString()),f=c.sub(e).gt(u)?e.add(u):c,l=xt(f.mul(new ie(o.transferFeeBasisPoints)),new ie(Re)),m=l.gt(s)?s:l;return{amount:f,fee:m,expirationTime:a}}else{let c=xt(e.mul(new ie(o.transferFeeBasisPoints)),new ie(Re)),u=c.gt(s)?s:c;return{amount:e,fee:u,expirationTime:a}}}function xt(e,t){let{div:n,mod:r}=e.divmod(t);return r.gt(new ie(0))?n.add(new ie(1)):n}var At=z("Raydium_accountInfo_util");async function yn(e,t,n){let{batchRequest:r,commitment:i="confirmed"}=V({batchRequest:!1},n),o=Tt(t,100),s=new Array(o.length).fill([]);if(r){let a=o.map(f=>{let l=e._buildArgs([f.map(m=>m.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:l}}),c=Tt(a,10);s=(await(await Promise.all(c.map(async f=>await e._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&At.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.error.message}`),f.result.value.map(l=>{if(l){let{data:m,executable:p,lamports:w,owner:d,rentEpoch:P}=l;return m.length!==2&&m[1]!=="base64"&&At.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:p,lamports:w,owner:new si(d),rentEpoch:P}}return null})))}else try{s=await Promise.all(o.map(a=>e.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&At.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Bt({connection:e,address:t}){let n=await yn(e,[...new Set(t.map(i=>i.toString()))].map(i=>new wn(i))),r={};for(let i=0;i<t.length;i++){let o=n[i],s=t[i];if(!o)continue;let a=new nt({key:s,state:nt.deserialize(o.data)});r[s.toString()]=a,rt[s.toString()]=a}return r}var rt={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new nt({key:new wn("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:nt.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var it=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var r;let t=(await ai.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(r=t==null?void 0:t[15])!=null?r:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:r}=tt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...r),!0}return!1}async calComputeBudget({config:t,defaultIns:n}){try{let r=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(r))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:r=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...r),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==ve.default.toString())),this}async versionBuild({txVersion:t,extInfo:n}){return t===0?await this.buildV0(V({},n||{})):this.build(n)}build(t){let n=new Oe;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=r||{},s=i!=null?i:await Be(this.connection);if(n.recentBlockhash=s,this.signers.length&&n.sign(...this.signers),we([n]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await _e(this.connection,n,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:n};if(this.signAllTransactions){let c=await this.signAllTransactions([n]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){let{extraPreBuildData:n=[],extInfo:r}=t,{transaction:i}=this.build(r),o=n.filter(u=>u.transaction.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var d;let{sequentially:f,onTxUpdate:l,recentBlockHash:m,skipPreflight:p=!0}=u||{},w=m!=null?m:await Be(this.connection);if((d=this.owner)!=null&&d.isKeyPair){if(f){let P=[];for(let g of s){let y=await _e(this.connection,g,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});P.push(y)}return{txIds:P,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(P,g)=>(P.recentBlockhash=w,await _e(this.connection,P,a[g].find(y=>y.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let P=s.map((y,h)=>(y.recentBlockhash=w,a[h].length&&y.sign(...a[h]),y));we(P);let g=await this.signAllTransactions(P);if(f){let y=0,h=[],T=async()=>{if(!g[y])return;let x=await this.connection.sendRawTransaction(g[y].serialize(),{skipPreflight:p});h.push({txId:x,status:"sent",signedTx:g[y]}),l==null||l([...h]),y++,this.connection.onSignature(x,C=>{let L=h.findIndex(M=>M.txId===x);L>-1&&(h[L].status=C.err?"error":"success"),l==null||l([...h]),C.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:h.map(x=>x.txId),signedTxs:g}}else{let y=[];for(let h=0;h<g.length;h+=1){let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});y.push(T)}return{txIds:y,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:r}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:r||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:r})}async buildV0(t){let m=t||{},{lookupTableCache:n={},lookupTableAddress:r=[],forerunCreate:i}=m,o=ae(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=V(V({},this.cluster==="devnet"?{}:rt),n),a=Array.from(new Set([...r,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new ve(p));let u=await Bt({connection:this.connection,address:c});for(let[p,w]of Object.entries(u))s[p]=w;let f=new Fe({payerKey:this.feePayer,recentBlockhash:i?ve.default.toBase58():await Be(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),l=new We(f);return l.sign(this.signers),{builder:this,transaction:l,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var P;let{recentBlockHash:w,skipPreflight:d=!0}=p||{};if(w&&(l.message.recentBlockhash=w),we([l]),(P=this.owner)!=null&&P.isKeyPair){this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))||l.sign([this.owner.signer]);let g=await this.connection.sendTransaction(l,{skipPreflight:d}),{lastValidBlockHeight:y,blockhash:h}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:y,signature:g},"confirmed"),{txId:g,signedTx:l}}if(this.signAllTransactions){let g=await this.signAllTransactions([l]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:d}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(t){let{extraPreBuildData:n=[],buildProps:r}=t,{transaction:i}=await this.buildV0(r),o=n.filter(u=>u.builder.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,f)=>{u.sign(a[f])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:r,execute:async u=>{var w;let{sequentially:f,onTxUpdate:l,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&s.forEach(d=>d.message.recentBlockhash=m),we(s),(w=this.owner)!=null&&w.isKeyPair){let{lastValidBlockHeight:d,blockhash:P}=await this.connection.getLatestBlockhash();if(s.forEach((g,y)=>{a[y].find(h=>h.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),f){let g=[];for(let y of s){let h=await this.connection.sendTransaction(y,{skipPreflight:p}),{lastValidBlockHeight:T,blockhash:x}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:T,signature:h},"confirmed"),g.push(h)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let y=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:d,signature:y},"confirmed"),y})),signedTxs:s}}if(this.signAllTransactions){let d=await this.signAllTransactions(s);if(f){let P=0,g=[],y=async()=>{if(!d[P])return;let h=await this.connection.sendTransaction(d[P],{skipPreflight:p});g.push({txId:h,status:"sent",signedTx:d[P]}),l==null||l([...g]),P++,this.connection.onSignature(h,T=>{let x=g.findIndex(C=>C.txId===h);x>-1&&(g[x].status=T.err?"error":"success"),l==null||l([...g]),T.err||y()},"processed"),this.connection.getSignatureStatus(h)};return y(),{txIds:[],signedTxs:d}}else{let P=[];for(let g=0;g<d.length;g+=1){let y=await this.connection.sendTransaction(d[g],{skipPreflight:p});P.push(y)}return{txIds:P,signedTxs:d}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuild(t){let u=t||{},{computeBudgetConfig:n}=u,r=ae(u,["computeBudgetConfig"]),i=n?tt(n):{instructions:[],instructionTypes:[]},o=this.signers.reduce((f,l)=>ee(V({},f),{[l.publicKey.toBase58()]:l}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(f=>{let l=[...c,f],m=n?[...i.instructions,...l]:l,w=[...new Set(l.map(d=>d.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(d=>new ve(d));if(c.length<12&&Ke({instructions:m,payer:this.feePayer,signers:w})||Ke({instructions:l,payer:this.feePayer,signers:w}))c.push(f);else{if(c.length===0)throw Error("item ins too big");Ke({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:w})?s.push(new Oe().add(...i.instructions,...c)):s.push(new Oe().add(...c)),a.push(Array.from(new Set(c.map(d=>d.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(d=>o[d]).filter(d=>d!==void 0)),c=[f]}}),c.length>0){let l=[...new Set(c.map(m=>m.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(m=>o[m]).filter(m=>m!==void 0);Ke({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:l.map(m=>m.publicKey)})?s.push(new Oe().add(...i.instructions,...c)):s.push(new Oe().add(...c)),a.push(l)}return s.forEach(f=>f.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async f=>{var P;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:w=!0}=f||{},d=p!=null?p:await Be(this.connection);if(s.forEach(async(g,y)=>{g.recentBlockhash=d,a[y].length&&g.sign(...a[y])}),we(s),(P=this.owner)!=null&&P.isKeyPair){if(l){let g=[];for(let y of s){let h=await _e(this.connection,y,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});g.push(h)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,y)=>await _e(this.connection,g,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:w}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(l){let y=0,h=[],T=async()=>{if(!g[y])return;let x=await this.connection.sendRawTransaction(g[y].serialize(),{skipPreflight:w});h.push({txId:x,status:"sent",signedTx:g[y]}),m==null||m([...h]),y++,this.connection.onSignature(x,C=>{let L=h.findIndex(M=>M.txId===x);L>-1&&(h[L].status=C.err?"error":"success"),m==null||m([...h]),C.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:h.map(x=>x.txId),signedTxs:g}}else{let y=[];for(let h=0;h<g.length;h+=1){let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:w});y.push(T)}return{txIds:y,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(t){let P=t||{},{computeBudgetConfig:n,lookupTableCache:r={},lookupTableAddress:i=[]}=P,o=ae(P,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=V(V({},this.cluster==="devnet"?{}:rt),r),a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let g of a)s[g]===void 0&&c.push(new ve(g));let u=await Bt({connection:this.connection,address:c});for(let[g,y]of Object.entries(u))s[g]=y;let f=n?tt(n):{instructions:[],instructionTypes:[]},l=await Be(this.connection),m=this.signers.reduce((g,y)=>ee(V({},g),{[y.publicKey.toBase58()]:y}),{}),p=[],w=[],d=[];if(this.allInstructions.forEach(g=>{let y=[...d,g],h=n?[...f.instructions,...y]:y;if(d.length<12&&De({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||De({instructions:y,payer:this.feePayer,lookupTableAddressAccount:s}))d.push(g);else{if(d.length===0)throw Error("item ins too big");let T={};for(let x of[...new Set(a)])s[x]!==void 0&&(T[x]=s[x]);if(n&&De({instructions:[...f.instructions,...d],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let x=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f.instructions,...d]}).compileToV0Message(Object.values(s));p.push(new We(x))}else{let x=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...d]}).compileToV0Message(Object.values(s));p.push(new We(x))}w.push(Array.from(new Set(d.map(x=>x.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat())).map(x=>m[x]).filter(x=>x!==void 0)),d=[g]}}),d.length>0){let y=[...new Set(d.map(h=>h.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(h=>m[h]).filter(h=>h!==void 0);if(n&&De({instructions:[...f.instructions,...d],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let h=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f.instructions,...d]}).compileToV0Message(Object.values(s));p.push(new We(h))}else{let h=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...d]}).compileToV0Message(Object.values(s));p.push(new We(h))}w.push(y)}return{builder:this,transactions:p,buildProps:t,signers:w,instructionTypes:this.instructionTypes,execute:async g=>{var C;let{sequentially:y,onTxUpdate:h,recentBlockHash:T,skipPreflight:x=!0}=g||{};if(p.map(async(L,M)=>{w[M].length&&L.sign(w[M]),T&&(L.message.recentBlockhash=T)}),we(p),(C=this.owner)!=null&&C.isKeyPair){let{lastValidBlockHeight:L,blockhash:M}=await this.connection.getLatestBlockhash();if(p.forEach((N,F)=>{w[F].find(I=>I.publicKey.equals(this.owner.publicKey))||N.sign([this.owner.signer])}),y){let N=[];for(let F of p){let I=await this.connection.sendTransaction(F,{skipPreflight:x}),{lastValidBlockHeight:G,blockhash:H}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:H,lastValidBlockHeight:G,signature:I},"confirmed"),N.push(I)}return{txIds:N,signedTxs:p}}return{txIds:await Promise.all(p.map(async N=>{let F=await this.connection.sendTransaction(N,{skipPreflight:x});return await this.connection.confirmTransaction({blockhash:M,lastValidBlockHeight:L,signature:F},"confirmed"),F})),signedTxs:p}}if(this.signAllTransactions){let L=await this.signAllTransactions(p);if(y){let M=0,N=[],F=async()=>{if(!L[M])return;let I=await this.connection.sendTransaction(L[M],{skipPreflight:x});N.push({txId:I,status:"sent",signedTx:L[M]}),h==null||h([...N]),M++,this.connection.onSignature(I,G=>{let H=N.findIndex(X=>X.txId===I);H>-1&&(N[H].status=G.err?"error":"success"),h==null||h([...N]),G.err||F()},"processed"),this.connection.getSignatureStatus(I)};return F(),{txIds:[],signedTxs:L}}else{let M=[];for(let N=0;N<L.length;N+=1){let F=await this.connection.sendTransaction(L[N],{skipPreflight:x});M.push(F)}return{txIds:M,signedTxs:L}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var kt=(...e)=>e.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),Ve=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=z(n)}createTxBuilder(t){return this.scope.checkOwner(),new it({connection:this.scope.connection,feePayer:t||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...t){this.logger.debug(kt(t))}logInfo(...t){this.logger.info(kt(t))}logAndCreateError(...t){let n=kt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var ui=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ci=Buffer.from("amm_config","utf8"),li=Buffer.from("pool","utf8"),fi=Buffer.from("pool_lp_mint","utf8"),mi=Buffer.from("pool_vault","utf8"),pi=Buffer.from("observation","utf8");function di(e){return le([ui],e)}function gi(e,t){return le([ci,yi(t)],e)}function hi(e,t,n,r){return le([li,t.toBuffer(),n.toBuffer(),r.toBuffer()],e)}function bi(e,t){return le([fi,t.toBuffer()],e)}function Pn(e,t,n){return le([mi,t.toBuffer(),n.toBuffer()],e)}function ot(e,t){return le([pi,t.toBuffer()],e)}function yi(e){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,e,!1),new Uint8Array(t)}function Tn({programId:e,mintA:t,mintB:n}){let r=gi(e,0).publicKey,i=di(e).publicKey,o=hi(e,r,t,n).publicKey,s=bi(e,o).publicKey,a=Pn(e,o,t).publicKey,c=Pn(e,o,n).publicKey,u=ot(e,o).publicKey;return{poolId:o,configId:r,authority:i,lpMint:s,vaultA:a,vaultB:c,observationId:u}}import{TransactionInstruction as qe}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nt,TOKEN_2022_PROGRAM_ID as Nn,ASSOCIATED_TOKEN_PROGRAM_ID as Li}from"@solana/spl-token";import{PublicKey as Si}from"@solana/web3.js";import Cn,{isBN as In}from"bn.js";import{bits as Tu,BitStructure as xu,blob as wi,Blob as Au,cstr as Bu,f32 as ku,f32be as Su,f64 as Cu,f64be as Iu,greedy as Lu,Layout as Pi,ns64 as Nu,ns64be as Mu,nu64 as Eu,nu64be as Ku,offset as Du,s16 as Ru,s16be as vu,s24 as _u,s24be as Ou,s32 as Fu,s32be as Wu,s40 as Vu,s40be as qu,s48 as Uu,s48be as Gu,s8 as Hu,seq as Ti,struct as ju,Structure as xi,u16 as Ai,u16be as Zu,u24 as zu,u24be as Yu,u32 as Ju,u32be as Xu,u40 as Qu,u40be as $u,u48 as ec,u48be as tc,u8 as Bi,UInt as ki,union as nc,Union as rc,unionLayoutDiscriminator as ic,utf8 as oc}from"@solana/buffer-layout";var St=Pi,xn=xi;var An=ki;var Bn=Bi,kn=Ai;var Sn=Ti;var Se=wi;var Ct=class extends St{constructor(n,r,i){super(n,i);this.blob=Se(n),this.signed=r}decode(n,r=0){let i=new Cn(this.blob.decode(n,r),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(n,r,i=0){return typeof n=="number"&&(n=new Cn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),r,i)}};function Pe(e){return new An(1,e)}function _(e){return new Ct(8,!1,e)}var st=class extends St{constructor(n,r,i,o){super(n.span,o);this.layout=n,this.decoder=r,this.encoder=i}decode(n,r){return this.decoder(this.layout.decode(n,r))}encode(n,r,i){return this.layout.encode(this.encoder(n),r,i)}getSpan(n,r){return this.layout.getSpan(n,r)}};function te(e){return new st(Se(32),t=>new Si(t),t=>t.toBuffer(),e)}function Ln(e){return new st(Bn(),Ci,Ii,e)}function Ci(e){if(e===0)return!1;if(e===1)return!0;throw new Error("Invalid bool: "+e)}function Ii(e){return e?1:0}var It=class extends xn{decode(t,n){return super.decode(t,n)}};function fe(e,t,n){return new It(e,t,n)}function Lt(e,t,n){let r,i=typeof t=="number"?t:In(t)?t.toNumber():new Proxy(t,{get(o,s){if(!r){let a=Reflect.get(o,"count");r=In(a)?a.toNumber():a,Reflect.set(o,"count",r)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(r=a),Reflect.set(o,s,a)}});return Sn(e,i,n)}var Ni=z("Raydium_cpmm"),Ue={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Mn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w,d,P,g,y,h){let T=fe([_("amountMaxA"),_("amountMaxB"),_("openTime")]),x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Li,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1}],C=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:y,openTime:h},C),new qe({keys:x,programId:e,data:Buffer.from([...Ue.initialize,...C])})}function En(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w){let d=fe([_("lpAmount"),_("amountMaxA"),_("amountMaxB")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0}],g=Buffer.alloc(d.span);return Ni.debug("cpmm deposit data",{lpAmount:m.toString(),amountMaxA:p.toString(),amountMaxB:w.toString()}),d.encode({lpAmount:m,amountMaxA:p,amountMaxB:w},g),new qe({keys:P,programId:e,data:Buffer.from([...Ue.deposit,...g])})}function Kn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w){let d=fe([_("lpAmount"),_("amountMinA"),_("amountMinB")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Qt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(d.span);return d.encode({lpAmount:m,amountMinA:p,amountMinB:w},g),new qe({keys:P,programId:e,data:Buffer.from([...Ue.withdraw,...g])})}function Dn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w,d){let P=fe([_("amountIn"),_("amounOutMin")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],y=Buffer.alloc(P.span);return P.encode({amountIn:w,amounOutMin:d},y),new qe({keys:g,programId:e,data:Buffer.from([...Ue.swapBaseInput,...y])})}function Rn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w,d){let P=fe([_("amountInMax"),_("amountOut")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],y=Buffer.alloc(P.span);return P.encode({amountInMax:w,amountOut:d},y),new qe({keys:g,programId:e,data:Buffer.from([...Ue.swapBaseOutput,...y])})}import Y from"bn.js";var vn=fe([Se(8),Pe("bump"),Ln("disableCreatePool"),kn("index"),_("tradeFeeRate"),_("protocolFeeRate"),_("fundFeeRate"),_("createPoolFee"),te("protocolOwner"),te("fundOwner"),Lt(_(),16)]),_n=fe([Se(8),te("configId"),te("poolCreator"),te("vaultA"),te("vaultB"),te("mintLp"),te("mintA"),te("mintB"),te("mintProgramA"),te("mintProgramB"),te("observationId"),Pe("bump"),Pe("status"),Pe("lpDecimals"),Pe("mintDecimalA"),Pe("mintDecimalB"),_("lpAmount"),_("protocolFeesMintA"),_("protocolFeesMintB"),_("fundFeesMintA"),_("fundFeesMintB"),_("openTime"),Lt(_(),32)]);var Mt=class extends Ve{constructor(t){super(t)}async load(){this.checkDisabled()}async getCpmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async getRpcPoolInfo(t,n){return(await this.getRpcPoolInfos([t],n))[t]}async getRpcPoolInfos(t,n){let r=await this.scope.connection.getMultipleAccountsInfo(t.map(l=>new A(l))),i={},o=new Set,s=[];for(let l=0;l<t.length;l++){let m=r[l];if(m===null)throw Error("fetch pool info error: "+String(t[l]));let p=_n.decode(m.data);i[String(t[l])]=p,o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(n){let l=[...o],m=await this.scope.connection.getMultipleAccountsInfo(l.map(p=>new A(p)));for(let p=0;p<l.length;p++){let w=m[p];if(w===null)throw Error("fetch pool config error: "+l[p]);a[l[p]]=vn.decode(w.data)}}let c={},u=await this.scope.connection.getMultipleAccountsInfo(s.map(l=>new A(l)));for(let l=0;l<s.length;l++){let m=u[l];if(m===null)throw Error("fetch vault info error: "+s[l]);c[String(s[l])]=new Y(Mi.decode(m.data).amount.toString())}let f={};for(let[l,m]of Object.entries(i)){let p=c[m.vaultA.toString()].sub(m.protocolFeesMintA).sub(m.fundFeesMintA),w=c[m.vaultB.toString()].sub(m.protocolFeesMintB).sub(m.fundFeesMintB);f[l]=ee(V({},m),{baseReserve:p,quoteReserve:w,configInfo:a[m.configId.toString()],poolPrice:new J(w.toString()).div(new J(10).pow(m.mintDecimalB)).div(new J(p.toString()).div(new J(10).pow(m.mintDecimalA)))})}return f}async createPool(f){var l=f,{programId:t,poolFeeAccount:n,startTime:r,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:c}=l,u=ae(l,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var G,H,X;let m=i.feePayer||((G=this.scope.owner)==null?void 0:G.publicKey),p=new Y(new A(u.mintA.address).toBuffer()).lte(new Y(new A(u.mintB.address).toBuffer())),[w,d]=p?[u.mintA,u.mintB]:[u.mintB,u.mintA],[P,g]=p?[u.mintAAmount,u.mintBAmount]:[u.mintBAmount,u.mintAAmount],y=i.useSOLBalance&&w.address===at.toBase58(),h=i.useSOLBalance&&d.address===at.toBase58(),[T,x]=[new A(w.address),new A(d.address)],C=this.createTxBuilder(),{account:L,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:w.programId,owner:this.scope.ownerPubKey,createInfo:y?{payer:m,amount:P}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:o,checkCreateATAOwner:s});C.addInstruction(M||{});let{account:N,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({mint:new A(d.address),tokenProgram:d.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:m,amount:g}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});if(C.addInstruction(F||{}),L===void 0||N===void 0)throw Error("you don't has some token account");let I=Tn({programId:t,mintA:T,mintB:x});return C.addInstruction({instructions:[Mn(t,this.scope.ownerPubKey,I.configId,I.authority,I.poolId,T,x,I.lpMint,L,N,bn(this.scope.ownerPubKey,I.lpMint).publicKey,I.vaultA,I.vaultB,n,new A((H=w.programId)!=null?H:be),new A((X=d.programId)!=null?X:be),I.observationId,P,g,r)],instructionTypes:[ce.CpmmCreatePool]}),C.addCustomComputeBudget(c),C.versionBuild({txVersion:a,extInfo:{address:ee(V({},I),{mintA:w,mintB:d,programId:t,poolFeeAccount:n})}})}async addLiquidity(t){let{poolInfo:n,inputAmount:r,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:c,txVersion:u}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:f}=this.scope,{bypassAssociatedCheck:l,checkCreateATAOwner:m}=V({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),p=await this.getRpcPoolInfo(n.id),{liquidity:w,inputAmountFee:d,anotherAmount:P}=s||this.computePairAmount({poolInfo:ee(V({},n),{mintAmountA:new J(p.baseReserve.toString()).div(10**n.mintA.decimals).toNumber(),mintAmountB:new J(p.quoteReserve.toString()).div(10**n.mintB.decimals).toNumber(),lpAmount:new J(p.lpAmount.toString()).div(10**n.lpMint.decimals).toNumber()}),slippage:new se(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new J(r.toString()).div(10**(i?n.mintA.decimals:n.mintB.decimals))}),g=P.amount,y=n.mintA.address===at.toString(),h=n.mintB.address===at.toString(),T=this.createTxBuilder(),[x,C]=[new A(n.mintA.address),new A(n.mintB.address)],{account:L,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new A(n.mintA.address),owner:this.scope.ownerPubKey,createInfo:y||(i?r:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?r:g}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:!1,checkCreateATAOwner:m});T.addInstruction(M||{});let{account:N,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new A(n.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(i?g:r).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:r}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:m});T.addInstruction(F||{}),!L&&!N&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let I=await f.getCreatedTokenAccount({mint:new A(n.lpMint.address)}),R=await f.handleTokenAccount({side:"out",amount:0,mint:new A(n.lpMint.address),tokenAccount:I,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:G}=R,H=ae(R,["tokenAccount"]);T.addInstruction(H);let X=await this.getCpmmPoolKeys(n.id),U=new se(new Y(1)).sub(o);return T.addInstruction({instructions:[En(new A(n.programId),this.scope.ownerPubKey,new A(X.authority),new A(n.id),G,L,N,new A(X.vault.A),new A(X.vault.B),x,C,new A(n.lpMint.address),s?s==null?void 0:s.liquidity:U.mul(w).quotient,i?d.amount:g,i?g:d.amount)],instructionTypes:[ce.CpmmAddLiquidity],lookupTableAddress:X.lookupTableAccount?[X.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:u})}async withdrawLiquidity(t){var G,H;let{poolInfo:n,lpAmount:r,slippage:i,computeBudgetConfig:o,txVersion:s}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new se(new Y(1)).sub(i),c=await this.getRpcPoolInfo(n.id),[u,f]=[a.mul(r.mul(c.baseReserve).div(c.lpAmount)).quotient,a.mul(r.mul(c.quoteReserve).div(c.lpAmount)).quotient],l=await this.scope.fetchEpochInfo(),[m,p]=[ke(u,n.mintA.extensions.feeConfig,l,!0),ke(f,n.mintB.extensions.feeConfig,l,!0)],{account:w}=this.scope,d=this.createTxBuilder(),[P,g]=[new A(n.mintA.address),new A(n.mintB.address)],y=P.equals(Le),h=g.equals(Le),T,x,{account:C,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new A(n.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:!y,checkCreateATAOwner:!1});T=C,L&&d.addInstruction(L);let{account:M,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new A(n.mintB.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});x=M,N&&d.addInstruction(N),(!T||!x)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",w.tokenAccounts);let F=await w.getCreatedTokenAccount({mint:new A(n.lpMint.address)});F||this.logAndCreateError("cannot found lp token account","tokenAccounts",w.tokenAccounts);let I=await this.getCpmmPoolKeys(n.id);return d.addInstruction({instructions:[Kn(new A(n.programId),this.scope.ownerPubKey,new A(I.authority),new A(n.id),F,T,x,new A(I.vault.A),new A(I.vault.B),P,g,new A(n.lpMint.address),r,u.sub((G=m.fee)!=null?G:new Y(0)),f.sub((H=p.fee)!=null?H:new Y(0)))],instructionTypes:[ce.CpmmWithdrawLiquidity],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]}),d.addCustomComputeBudget(o),d.versionBuild({txVersion:s})}async swap(t){var T,x,M,N,F,I;let{poolInfo:n,baseIn:r,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=t,{bypassAssociatedCheck:c,checkCreateATAOwner:u}=V({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),f=this.createTxBuilder(),[l,m]=[new A(n.mintA.address),new A(n.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new A((T=n.mintA.programId)!=null?T:be),mint:l,associatedOnly:!1}),w=await this.scope.account.getCreatedTokenAccount({programId:new A((x=n.mintB.programId)!=null?x:be),mint:m,associatedOnly:!1}),C=await this.scope.account.handleTokenAccount({side:r?"in":"out",amount:r?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:l,tokenAccount:p,bypassAssociatedCheck:c,checkCreateATAOwner:u}),{tokenAccount:d}=C,P=ae(C,["tokenAccount"]);f.addInstruction(P);let L=await this.scope.account.handleTokenAccount({side:r?"out":"in",amount:r?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:m,tokenAccount:w,bypassAssociatedCheck:c,checkCreateATAOwner:u}),{tokenAccount:g}=L,y=ae(L,["tokenAccount"]);f.addInstruction(y),!d&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getCpmmPoolKeys(n.id);return f.addInstruction({instructions:[r?Dn(new A(n.programId),this.scope.ownerPubKey,new A(h.authority),new A(h.config.id),new A(n.id),d,g,new A(h.vault.A),new A(h.vault.B),new A((M=n.mintA.programId)!=null?M:be),new A((N=n.mintB.programId)!=null?N:be),l,m,ot(new A(n.programId),new A(n.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Rn(new A(n.programId),this.scope.ownerPubKey,new A(h.authority),new A(h.config.id),new A(n.id),g,d,new A(h.vault.B),new A(h.vault.A),new A((F=n.mintB.programId)!=null?F:be),new A((I=n.mintA.programId)!=null?I:be),m,l,ot(new A(n.programId),new A(n.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[r?ce.CpmmSwapBaseIn:ce.CpmmSwapBaseOut]}),f.addCustomComputeBudget(s),f.versionBuild({txVersion:a})}computePairAmount({poolInfo:t,amount:n,slippage:r,epochInfo:i,baseIn:o}){var y,h,T,x,C,L,M,N;let s=1-Number(r.toSignificant())/100,a=new Y(new J(n).mul(10**t[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),c=ke(a,t[o?"mintA":"mintB"].extensions.feeConfig,i,!1),u=a.sub((y=c.fee)!=null?y:new Y(0)),[f,l]=[new Y(new J(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Y(new J(t.mintAmountB).mul(10**t.mintB.decimals).toString())],m=new Y(new J(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,J.ROUND_DOWN));this.logDebug("baseReserve:",f.toString(),"quoteReserve:",l.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(T=(h=c.fee)==null?void 0:h.toString())!=null?T:0,"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let w=u.mul(m).div(p==="base"?f:l),d={amount:Pt,fee:void 0,expirationTime:void 0};u.isZero()||(d=ke(Ei(w,f,l,m)[o?"amountB":"amountA"],t[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let P=new se(new Y(1)).add(r),g=ke(P.mul(d.amount.sub((x=d.fee)!=null?x:new Y(0))).quotient,t[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",d.amount.toString(),"anotherAmountFee:",(L=(C=d.fee)==null?void 0:C.toString())!=null?L:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(N=(M=g.fee)==null?void 0:M.toString())!=null?N:0),{inputAmountFee:c,anotherAmount:d,maxAnotherAmount:g,liquidity:w}}};function Ei(e,t,n,r){let i=e.mul(t).div(r);!i.isZero()&&!e.mul(t).mod(r).isZero()&&(i=i.add(new Y(1)));let o=e.mul(n).div(r);return!o.isZero()&&!e.mul(n).mod(r).isZero()&&(o=o.add(new Y(1))),{amountA:i,amountB:o}}export{Mt as default};
|
|
1
|
+
var On=Object.defineProperty,Fn=Object.defineProperties;var Wn=Object.getOwnPropertyDescriptors;var Ge=Object.getOwnPropertySymbols;var Kt=Object.prototype.hasOwnProperty,Dt=Object.prototype.propertyIsEnumerable;var Et=(e,t,n)=>t in e?On(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,V=(e,t)=>{for(var n in t||(t={}))Kt.call(t,n)&&Et(e,n,t[n]);if(Ge)for(var n of Ge(t))Dt.call(t,n)&&Et(e,n,t[n]);return e},$=(e,t)=>Fn(e,Wn(t));var ae=(e,t)=>{var n={};for(var r in e)Kt.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ge)for(var r of Ge(e))t.indexOf(r)<0&&Dt.call(e,r)&&(n[r]=e[r]);return n};import{PublicKey as A}from"@solana/web3.js";import{NATIVE_MINT as at,TOKEN_PROGRAM_ID as be,AccountLayout as Mi}from"@solana/spl-token";import Yr from"big.js";import Ts from"bn.js";import Q from"bn.js";var Te=9e15,ge=1e9,ut="0123456789abcdef",je="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ze="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ct={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Te,maxE:Te,crypto:!1},Ot,ue,S=!0,Ye="[DecimalError] ",de=Ye+"Invalid argument: ",Ft=Ye+"Precision limit exceeded",Wt=Ye+"crypto unavailable",Vt="[object Decimal]",Z=Math.floor,U=Math.pow,Vn=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,qn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Un=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qt=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ne=1e7,k=7,Gn=9007199254740991,Hn=je.length-1,lt=Ze.length-1,b={toStringTag:Vt};b.absoluteValue=b.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),B(e)};b.ceil=function(){return B(new this.constructor(this),this.e+1,2)};b.clampedTo=b.clamp=function(e,t){var n,r=this,i=r.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(de+t);return n=r.cmp(e),n<0?e:r.cmp(t)>0?t:new i(r)};b.comparedTo=b.cmp=function(e){var t,n,r,i,o=this,s=o.d,a=(e=new o.constructor(e)).d,c=o.s,u=e.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==e.e)return o.e>e.e^c<0?1:-1;for(r=s.length,i=a.length,t=0,n=r<i?r:i;t<n;++t)if(s[t]!==a[t])return s[t]>a[t]^c<0?1:-1;return r===i?0:r>i^c<0?1:-1};b.cosine=b.cos=function(){var e,t,n=this,r=n.constructor;return n.d?n.d[0]?(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+k,r.rounding=1,n=jn(r,Zt(r,n)),r.precision=e,r.rounding=t,B(ue==2||ue==3?n.neg():n,e,t,!0)):new r(1):new r(NaN)};b.cubeRoot=b.cbrt=function(){var e,t,n,r,i,o,s,a,c,u,f=this,l=f.constructor;if(!f.isFinite()||f.isZero())return new l(f);for(S=!1,o=f.s*U(f.s*f,1/3),!o||Math.abs(o)==1/0?(n=j(f.d),e=f.e,(o=(e-n.length+1)%3)&&(n+=o==1||o==-2?"0":"00"),o=U(n,1/3),e=Z((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?n="5e"+e:(n=o.toExponential(),n=n.slice(0,n.indexOf("e")+1)+e),r=new l(n),r.s=f.s):r=new l(o.toString()),s=(e=l.precision)+3;;)if(a=r,c=a.times(a).times(a),u=c.plus(f),r=_(u.plus(f).times(a),u.plus(c),s+2,1),j(a.d).slice(0,s)===(n=j(r.d)).slice(0,s))if(n=n.slice(s-3,s+1),n=="9999"||!i&&n=="4999"){if(!i&&(B(a,e+1,0),a.times(a).times(a).eq(f))){r=a;break}s+=4,i=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(B(r,e+1,1),t=!r.times(r).times(r).eq(f));break}return S=!0,B(r,e,l.rounding,t)};b.decimalPlaces=b.dp=function(){var e,t=this.d,n=NaN;if(t){if(e=t.length-1,n=(e-Z(this.e/k))*k,e=t[e],e)for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n};b.dividedBy=b.div=function(e){return _(this,new this.constructor(e))};b.dividedToIntegerBy=b.divToInt=function(e){var t=this,n=t.constructor;return B(_(t,new n(e),0,1,1),n.precision,n.rounding)};b.equals=b.eq=function(e){return this.cmp(e)===0};b.floor=function(){return B(new this.constructor(this),this.e+1,3)};b.greaterThan=b.gt=function(e){return this.cmp(e)>0};b.greaterThanOrEqualTo=b.gte=function(e){var t=this.cmp(e);return t==1||t===0};b.hyperbolicCosine=b.cosh=function(){var e,t,n,r,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;n=s.precision,r=s.rounding,s.precision=n+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(e=Math.ceil(i/3),t=(1/Xe(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),o=xe(s,1,o.times(t),new s(1),!0);for(var c,u=e,f=new s(8);u--;)c=o.times(o),o=a.minus(c.times(f.minus(c.times(f))));return B(o,s.precision=n,s.rounding=r,!0)};b.hyperbolicSine=b.sinh=function(){var e,t,n,r,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(t=o.precision,n=o.rounding,o.precision=t+Math.max(i.e,i.sd())+4,o.rounding=1,r=i.d.length,r<3)i=xe(o,2,i,i,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,i=i.times(1/Xe(5,e)),i=xe(o,2,i,i,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);e--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=t,o.rounding=n,B(i,t,n,!0)};b.hyperbolicTangent=b.tanh=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,_(n.sinh(),n.cosh(),r.precision=e,r.rounding=t)):new r(n.s)};b.inverseCosine=b.acos=function(){var e,t=this,n=t.constructor,r=t.abs().cmp(1),i=n.precision,o=n.rounding;return r!==-1?r===0?t.isNeg()?te(n,i,o):new n(0):new n(NaN):t.isZero()?te(n,i+4,o).times(.5):(n.precision=i+6,n.rounding=1,t=t.asin(),e=te(n,i+4,o).times(.5),n.precision=i,n.rounding=o,e.minus(t))};b.inverseHyperbolicCosine=b.acosh=function(){var e,t,n=this,r=n.constructor;return n.lte(1)?new r(n.eq(1)?0:NaN):n.isFinite()?(e=r.precision,t=r.rounding,r.precision=e+Math.max(Math.abs(n.e),n.sd())+4,r.rounding=1,S=!1,n=n.times(n).minus(1).sqrt().plus(n),S=!0,r.precision=e,r.rounding=t,n.ln()):new r(n)};b.inverseHyperbolicSine=b.asinh=function(){var e,t,n=this,r=n.constructor;return!n.isFinite()||n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,r.rounding=1,S=!1,n=n.times(n).plus(1).sqrt().plus(n),S=!0,r.precision=e,r.rounding=t,n.ln())};b.inverseHyperbolicTangent=b.atanh=function(){var e,t,n,r,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=o.precision,t=o.rounding,r=i.sd(),Math.max(r,e)<2*-i.e-1?B(new o(i),e,t,!0):(o.precision=n=r-i.e,i=_(i.plus(1),new o(1).minus(i),n+e,1),o.precision=e+4,o.rounding=1,i=i.ln(),o.precision=e,o.rounding=t,i.times(.5))):new o(NaN)};b.inverseSine=b.asin=function(){var e,t,n,r,i=this,o=i.constructor;return i.isZero()?new o(i):(t=i.abs().cmp(1),n=o.precision,r=o.rounding,t!==-1?t===0?(e=te(o,n+4,r).times(.5),e.s=i.s,e):new o(NaN):(o.precision=n+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=r,i.times(2)))};b.inverseTangent=b.atan=function(){var e,t,n,r,i,o,s,a,c,u=this,f=u.constructor,l=f.precision,m=f.rounding;if(u.isFinite()){if(u.isZero())return new f(u);if(u.abs().eq(1)&&l+4<=lt)return s=te(f,l+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new f(NaN);if(l+4<=lt)return s=te(f,l+4,m).times(.5),s.s=u.s,s}for(f.precision=a=l+10,f.rounding=1,n=Math.min(28,a/k+2|0),e=n;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(S=!1,t=Math.ceil(a/k),r=1,c=u.times(u),s=new f(u),i=u;e!==-1;)if(i=i.times(c),o=s.minus(i.div(r+=2)),i=i.times(c),s=o.plus(i.div(r+=2)),s.d[t]!==void 0)for(e=t;s.d[e]===o.d[e]&&e--;);return n&&(s=s.times(2<<n-1)),S=!0,B(s,f.precision=l,f.rounding=m,!0)};b.isFinite=function(){return!!this.d};b.isInteger=b.isInt=function(){return!!this.d&&Z(this.e/k)>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(e){return this.cmp(e)<0};b.lessThanOrEqualTo=b.lte=function(e){return this.cmp(e)<1};b.logarithm=b.log=function(e){var t,n,r,i,o,s,a,c,u=this,f=u.constructor,l=f.precision,m=f.rounding,p=5;if(e==null)e=new f(10),t=!0;else{if(e=new f(e),n=e.d,e.s<0||!n||!n[0]||e.eq(1))return new f(NaN);t=e.eq(10)}if(n=u.d,u.s<0||!n||!n[0]||u.eq(1))return new f(n&&!n[0]?-1/0:u.s!=1?NaN:n?0:1/0);if(t)if(n.length>1)o=!0;else{for(i=n[0];i%10===0;)i/=10;o=i!==1}if(S=!1,a=l+p,s=pe(u,a),r=t?ze(f,a+10):pe(e,a),c=_(s,r,a,1),Ce(c.d,i=l,m))do if(a+=10,s=pe(u,a),r=t?ze(f,a+10):pe(e,a),c=_(s,r,a,1),!o){+j(c.d).slice(i+1,i+15)+1==1e14&&(c=B(c,l+1,0));break}while(Ce(c.d,i+=10,m));return S=!0,B(c,l,m)};b.minus=b.sub=function(e){var t,n,r,i,o,s,a,c,u,f,l,m,p=this,w=p.constructor;if(e=new w(e),!p.d||!e.d)return!p.s||!e.s?e=new w(NaN):p.d?e.s=-e.s:e=new w(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(u=p.d,m=e.d,a=w.precision,c=w.rounding,!u[0]||!m[0]){if(m[0])e.s=-e.s;else if(u[0])e=new w(p);else return new w(c===3?-0:0);return S?B(e,a,c):e}if(n=Z(e.e/k),f=Z(p.e/k),u=u.slice(),o=f-n,o){for(l=o<0,l?(t=u,o=-o,s=m.length):(t=m,n=f,s=u.length),r=Math.max(Math.ceil(a/k),s)+2,o>r&&(o=r,t.length=1),t.reverse(),r=o;r--;)t.push(0);t.reverse()}else{for(r=u.length,s=m.length,l=r<s,l&&(s=r),r=0;r<s;r++)if(u[r]!=m[r]){l=u[r]<m[r];break}o=0}for(l&&(t=u,u=m,m=t,e.s=-e.s),s=u.length,r=m.length-s;r>0;--r)u[s++]=0;for(r=m.length;r>o;){if(u[--r]<m[r]){for(i=r;i&&u[--i]===0;)u[i]=ne-1;--u[i],u[r]+=ne}u[r]-=m[r]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--n;return u[0]?(e.d=u,e.e=Je(u,n),S?B(e,a,c):e):new w(c===3?-0:0)};b.modulo=b.mod=function(e){var t,n=this,r=n.constructor;return e=new r(e),!n.d||!e.s||e.d&&!e.d[0]?new r(NaN):!e.d||n.d&&!n.d[0]?B(new r(n),r.precision,r.rounding):(S=!1,r.modulo==9?(t=_(n,e.abs(),0,3,1),t.s*=e.s):t=_(n,e,0,r.modulo,1),t=t.times(e),S=!0,n.minus(t))};b.naturalExponential=b.exp=function(){return ft(this)};b.naturalLogarithm=b.ln=function(){return pe(this)};b.negated=b.neg=function(){var e=new this.constructor(this);return e.s=-e.s,B(e)};b.plus=b.add=function(e){var t,n,r,i,o,s,a,c,u,f,l=this,m=l.constructor;if(e=new m(e),!l.d||!e.d)return!l.s||!e.s?e=new m(NaN):l.d||(e=new m(e.d||l.s===e.s?l:NaN)),e;if(l.s!=e.s)return e.s=-e.s,l.minus(e);if(u=l.d,f=e.d,a=m.precision,c=m.rounding,!u[0]||!f[0])return f[0]||(e=new m(l)),S?B(e,a,c):e;if(o=Z(l.e/k),r=Z(e.e/k),u=u.slice(),i=o-r,i){for(i<0?(n=u,i=-i,s=f.length):(n=f,r=o,s=u.length),o=Math.ceil(a/k),s=o>s?o+1:s+1,i>s&&(i=s,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for(s=u.length,i=f.length,s-i<0&&(i=s,n=f,f=u,u=n),t=0;i;)t=(u[--i]=u[i]+f[i]+t)/ne|0,u[i]%=ne;for(t&&(u.unshift(t),++r),s=u.length;u[--s]==0;)u.pop();return e.d=u,e.e=Je(u,r),S?B(e,a,c):e};b.precision=b.sd=function(e){var t,n=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(de+e);return n.d?(t=Ut(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t};b.round=function(){var e=this,t=e.constructor;return B(new t(e),e.e+1,t.rounding)};b.sine=b.sin=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+k,r.rounding=1,n=zn(r,Zt(r,n)),r.precision=e,r.rounding=t,B(ue>2?n.neg():n,e,t,!0)):new r(NaN)};b.squareRoot=b.sqrt=function(){var e,t,n,r,i,o,s=this,a=s.d,c=s.e,u=s.s,f=s.constructor;if(u!==1||!a||!a[0])return new f(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(S=!1,u=Math.sqrt(+s),u==0||u==1/0?(t=j(a),(t.length+c)%2==0&&(t+="0"),u=Math.sqrt(t),c=Z((c+1)/2)-(c<0||c%2),u==1/0?t="5e"+c:(t=u.toExponential(),t=t.slice(0,t.indexOf("e")+1)+c),r=new f(t)):r=new f(u.toString()),n=(c=f.precision)+3;;)if(o=r,r=o.plus(_(s,o,n+2,1)).times(.5),j(o.d).slice(0,n)===(t=j(r.d)).slice(0,n))if(t=t.slice(n-3,n+1),t=="9999"||!i&&t=="4999"){if(!i&&(B(o,c+1,0),o.times(o).eq(s))){r=o;break}n+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(B(r,c+1,1),e=!r.times(r).eq(s));break}return S=!0,B(r,c,f.rounding,e)};b.tangent=b.tan=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+10,r.rounding=1,n=n.sin(),n.s=1,n=_(n,new r(1).minus(n.times(n)).sqrt(),e+10,0),r.precision=e,r.rounding=t,B(ue==2||ue==4?n.neg():n,e,t,!0)):new r(NaN)};b.times=b.mul=function(e){var t,n,r,i,o,s,a,c,u,f=this,l=f.constructor,m=f.d,p=(e=new l(e)).d;if(e.s*=f.s,!m||!m[0]||!p||!p[0])return new l(!e.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?e.s/0:e.s*0);for(n=Z(f.e/k)+Z(e.e/k),c=m.length,u=p.length,c<u&&(o=m,m=p,p=o,s=c,c=u,u=s),o=[],s=c+u,r=s;r--;)o.push(0);for(r=u;--r>=0;){for(t=0,i=c+r;i>r;)a=o[i]+p[r]*m[i-r-1]+t,o[i--]=a%ne|0,t=a/ne|0;o[i]=(o[i]+t)%ne|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=Je(o,n),S?B(e,l.precision,l.rounding):e};b.toBinary=function(e,t){return pt(this,2,e,t)};b.toDecimalPlaces=b.toDP=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(X(e,0,ge),t===void 0?t=r.rounding:X(t,0,8),B(n,e+n.e+1,t))};b.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=oe(r,!0):(X(e,0,ge),t===void 0?t=i.rounding:X(t,0,8),r=B(new i(r),e+1,t),n=oe(r,!0,e+1)),r.isNeg()&&!r.isZero()?"-"+n:n};b.toFixed=function(e,t){var n,r,i=this,o=i.constructor;return e===void 0?n=oe(i):(X(e,0,ge),t===void 0?t=o.rounding:X(t,0,8),r=B(new o(i),e+i.e+1,t),n=oe(r,!1,e+r.e+1)),i.isNeg()&&!i.isZero()?"-"+n:n};b.toFraction=function(e){var t,n,r,i,o,s,a,c,u,f,l,m,p=this,w=p.d,d=p.constructor;if(!w)return new d(p);if(u=n=new d(1),r=c=new d(0),t=new d(r),o=t.e=Ut(w)-p.e-1,s=o%k,t.d[0]=U(10,s<0?k+s:s),e==null)e=o>0?t:u;else{if(a=new d(e),!a.isInt()||a.lt(u))throw Error(de+a);e=a.gt(t)?o>0?t:u:a}for(S=!1,a=new d(j(w)),f=d.precision,d.precision=o=w.length*k*2;l=_(a,t,0,1,1),i=n.plus(l.times(r)),i.cmp(e)!=1;)n=r,r=i,i=u,u=c.plus(l.times(i)),c=i,i=t,t=a.minus(l.times(i)),a=i;return i=_(e.minus(n),r,0,1,1),c=c.plus(i.times(u)),n=n.plus(i.times(r)),c.s=u.s=p.s,m=_(u,r,o,1).minus(p).abs().cmp(_(c,n,o,1).minus(p).abs())<1?[u,r]:[c,n],d.precision=f,S=!0,m};b.toHexadecimal=b.toHex=function(e,t){return pt(this,16,e,t)};b.toNearest=function(e,t){var n=this,r=n.constructor;if(n=new r(n),e==null){if(!n.d)return n;e=new r(1),t=r.rounding}else{if(e=new r(e),t===void 0?t=r.rounding:X(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(S=!1,n=_(n,e,0,t,1).times(e),S=!0,B(n)):(e.s=n.s,n=e),n};b.toNumber=function(){return+this};b.toOctal=function(e,t){return pt(this,8,e,t)};b.toPower=b.pow=function(e){var t,n,r,i,o,s,a=this,c=a.constructor,u=+(e=new c(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new c(U(+a,u));if(a=new c(a),a.eq(1))return a;if(r=c.precision,o=c.rounding,e.eq(1))return B(a,r,o);if(t=Z(e.e/k),t>=e.d.length-1&&(n=u<0?-u:u)<=Gn)return i=Gt(c,a,n,r),e.s<0?new c(1).div(i):B(i,r,o);if(s=a.s,s<0){if(t<e.d.length-1)return new c(NaN);if((e.d[t]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return n=U(+a,u),t=n==0||!isFinite(n)?Z(u*(Math.log("0."+j(a.d))/Math.LN10+a.e+1)):new c(n+"").e,t>c.maxE+1||t<c.minE-1?new c(t>0?s/0:0):(S=!1,c.rounding=a.s=1,n=Math.min(12,(t+"").length),i=ft(e.times(pe(a,r+n)),r),i.d&&(i=B(i,r+5,1),Ce(i.d,r,o)&&(t=r+10,i=B(ft(e.times(pe(a,t+n)),t),t+5,1),+j(i.d).slice(r+1,r+15)+1==1e14&&(i=B(i,r+1,0)))),i.s=s,S=!0,c.rounding=o,B(i,r,o))};b.toPrecision=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=oe(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(X(e,1,ge),t===void 0?t=i.rounding:X(t,0,8),r=B(new i(r),e,t),n=oe(r,e<=r.e||r.e<=i.toExpNeg,e)),r.isNeg()&&!r.isZero()?"-"+n:n};b.toSignificantDigits=b.toSD=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(X(e,1,ge),t===void 0?t=r.rounding:X(t,0,8)),B(new r(n),e,t)};b.toString=function(){var e=this,t=e.constructor,n=oe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n};b.truncated=b.trunc=function(){return B(new this.constructor(this),this.e+1,1)};b.valueOf=b.toJSON=function(){var e=this,t=e.constructor,n=oe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};function j(e){var t,n,r,i=e.length-1,o="",s=e[0];if(i>0){for(o+=s,t=1;t<i;t++)r=e[t]+"",n=k-r.length,n&&(o+=me(n)),o+=r;s=e[t],r=s+"",n=k-r.length,n&&(o+=me(n))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function X(e,t,n){if(e!==~~e||e<t||e>n)throw Error(de+e)}function Ce(e,t,n,r){var i,o,s,a;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=k,i=0):(i=Math.ceil((t+1)/k),t%=k),o=U(10,k-t),a=e[i]%o|0,r==null?t<3?(t==0?a=a/100|0:t==1&&(a=a/10|0),s=n<4&&a==99999||n>3&&a==49999||a==5e4||a==0):s=(n<4&&a+1==o||n>3&&a+1==o/2)&&(e[i+1]/o/100|0)==U(10,t-2)-1||(a==o/2||a==0)&&(e[i+1]/o/100|0)==0:t<4?(t==0?a=a/1e3|0:t==1?a=a/100|0:t==2&&(a=a/10|0),s=(r||n<4)&&a==9999||!r&&n>3&&a==4999):s=((r||n<4)&&a+1==o||!r&&n>3&&a+1==o/2)&&(e[i+1]/o/1e3|0)==U(10,t-3)-1,s}function He(e,t,n){for(var r,i=[0],o,s=0,a=e.length;s<a;){for(o=i.length;o--;)i[o]*=t;for(i[0]+=ut.indexOf(e.charAt(s++)),r=0;r<i.length;r++)i[r]>n-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/n|0,i[r]%=n)}return i.reverse()}function jn(e,t){var n,r,i;if(t.isZero())return t;r=t.d.length,r<32?(n=Math.ceil(r/3),i=(1/Xe(4,n)).toString()):(n=16,i="2.3283064365386962890625e-10"),e.precision+=n,t=xe(e,1,t.times(i),new e(1));for(var o=n;o--;){var s=t.times(t);t=s.times(s).minus(s).times(8).plus(1)}return e.precision-=n,t}var _=function(){function e(r,i,o){var s,a=0,c=r.length;for(r=r.slice();c--;)s=r[c]*i+a,r[c]=s%o|0,a=s/o|0;return a&&r.unshift(a),r}function t(r,i,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(r[a]!=i[a]){c=r[a]>i[a]?1:-1;break}return c}function n(r,i,o,s){for(var a=0;o--;)r[o]-=a,a=r[o]<i[o]?1:0,r[o]=a*s+r[o]-i[o];for(;!r[0]&&r.length>1;)r.shift()}return function(r,i,o,s,a,c){var u,f,l,m,p,w,d,P,g,y,h,T,x,C,L,M,N,R,I,q,H=r.constructor,J=r.s==i.s?1:-1,G=r.d,v=i.d;if(!G||!G[0]||!v||!v[0])return new H(!r.s||!i.s||(G?v&&G[0]==v[0]:!v)?NaN:G&&G[0]==0||!v?J*0:J/0);for(c?(p=1,f=r.e-i.e):(c=ne,p=k,f=Z(r.e/p)-Z(i.e/p)),I=v.length,N=G.length,g=new H(J),y=g.d=[],l=0;v[l]==(G[l]||0);l++);if(v[l]>(G[l]||0)&&f--,o==null?(C=o=H.precision,s=H.rounding):a?C=o+(r.e-i.e)+1:C=o,C<0)y.push(1),w=!0;else{if(C=C/p+2|0,l=0,I==1){for(m=0,v=v[0],C++;(l<N||m)&&C--;l++)L=m*c+(G[l]||0),y[l]=L/v|0,m=L%v|0;w=m||l<N}else{for(m=c/(v[0]+1)|0,m>1&&(v=e(v,m,c),G=e(G,m,c),I=v.length,N=G.length),M=I,h=G.slice(0,I),T=h.length;T<I;)h[T++]=0;q=v.slice(),q.unshift(0),R=v[0],v[1]>=c/2&&++R;do m=0,u=t(v,h,I,T),u<0?(x=h[0],I!=T&&(x=x*c+(h[1]||0)),m=x/R|0,m>1?(m>=c&&(m=c-1),d=e(v,m,c),P=d.length,T=h.length,u=t(d,h,P,T),u==1&&(m--,n(d,I<P?q:v,P,c))):(m==0&&(u=m=1),d=v.slice()),P=d.length,P<T&&d.unshift(0),n(h,d,T,c),u==-1&&(T=h.length,u=t(v,h,I,T),u<1&&(m++,n(h,I<T?q:v,T,c))),T=h.length):u===0&&(m++,h=[0]),y[l++]=m,u&&h[0]?h[T++]=G[M]||0:(h=[G[M]],T=1);while((M++<N||h[0]!==void 0)&&C--);w=h[0]!==void 0}y[0]||y.shift()}if(p==1)g.e=f,Ot=w;else{for(l=1,m=y[0];m>=10;m/=10)l++;g.e=l+f*p-1,B(g,a?o+g.e+1:o,s,w)}return g}}();function B(e,t,n,r){var i,o,s,a,c,u,f,l,m,p=e.constructor;e:if(t!=null){if(l=e.d,!l)return e;for(i=1,a=l[0];a>=10;a/=10)i++;if(o=t-i,o<0)o+=k,s=t,f=l[m=0],c=f/U(10,i-s-1)%10|0;else if(m=Math.ceil((o+1)/k),a=l.length,m>=a)if(r){for(;a++<=m;)l.push(0);f=c=0,i=1,o%=k,s=o-k+1}else break e;else{for(f=a=l[m],i=1;a>=10;a/=10)i++;o%=k,s=o-k+i,c=s<0?0:f/U(10,i-s-1)%10|0}if(r=r||t<0||l[m+1]!==void 0||(s<0?f:f%U(10,i-s-1)),u=n<4?(c||r)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||r||n==6&&(o>0?s>0?f/U(10,i-s):0:l[m-1])%10&1||n==(e.s<0?8:7)),t<1||!l[0])return l.length=0,u?(t-=e.e+1,l[0]=U(10,(k-t%k)%k),e.e=-t||0):l[0]=e.e=0,e;if(o==0?(l.length=m,a=1,m--):(l.length=m+1,a=U(10,k-o),l[m]=s>0?(f/U(10,i-s)%U(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,l[0]==ne&&(l[0]=1));break}else{if(l[m]+=a,l[m]!=ne)break;l[m--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return S&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function oe(e,t,n){if(!e.isFinite())return jt(e);var r,i=e.e,o=j(e.d),s=o.length;return t?(n&&(r=n-s)>0?o=o.charAt(0)+"."+o.slice(1)+me(r):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+me(-i-1)+o,n&&(r=n-s)>0&&(o+=me(r))):i>=s?(o+=me(i+1-s),n&&(r=n-i-1)>0&&(o=o+"."+me(r))):((r=i+1)<s&&(o=o.slice(0,r)+"."+o.slice(r)),n&&(r=n-s)>0&&(i+1===s&&(o+="."),o+=me(r))),o}function Je(e,t){var n=e[0];for(t*=k;n>=10;n/=10)t++;return t}function ze(e,t,n){if(t>Hn)throw S=!0,n&&(e.precision=n),Error(Ft);return B(new e(je),t,1,!0)}function te(e,t,n){if(t>lt)throw Error(Ft);return B(new e(Ze),t,n,!0)}function Ut(e){var t=e.length-1,n=t*k+1;if(t=e[t],t){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function me(e){for(var t="";e--;)t+="0";return t}function Gt(e,t,n,r){var i,o=new e(1),s=Math.ceil(r/k+4);for(S=!1;;){if(n%2&&(o=o.times(t),vt(o.d,s)&&(i=!0)),n=Z(n/2),n===0){n=o.d.length-1,i&&o.d[n]===0&&++o.d[n];break}t=t.times(t),vt(t.d,s)}return S=!0,o}function Rt(e){return e.d[e.d.length-1]&1}function Ht(e,t,n){for(var r,i=new e(t[0]),o=0;++o<t.length;)if(r=new e(t[o]),r.s)i[n](r)&&(i=r);else{i=r;break}return i}function ft(e,t){var n,r,i,o,s,a,c,u=0,f=0,l=0,m=e.constructor,p=m.rounding,w=m.precision;if(!e.d||!e.d[0]||e.e>17)return new m(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:0/0);for(t==null?(S=!1,c=w):c=t,a=new m(.03125);e.e>-2;)e=e.times(a),l+=5;for(r=Math.log(U(2,l))/Math.LN10*2+5|0,c+=r,n=o=s=new m(1),m.precision=c;;){if(o=B(o.times(e),c,1),n=n.times(++f),a=s.plus(_(o,n,c,1)),j(a.d).slice(0,c)===j(s.d).slice(0,c)){for(i=l;i--;)s=B(s.times(s),c,1);if(t==null)if(u<3&&Ce(s.d,c-r,p,u))m.precision=c+=10,n=o=a=new m(1),f=0,u++;else return B(s,m.precision=w,p,S=!0);else return m.precision=w,s}s=a}}function pe(e,t){var n,r,i,o,s,a,c,u,f,l,m,p=1,w=10,d=e,P=d.d,g=d.constructor,y=g.rounding,h=g.precision;if(d.s<0||!P||!P[0]||!d.e&&P[0]==1&&P.length==1)return new g(P&&!P[0]?-1/0:d.s!=1?NaN:P?0:d);if(t==null?(S=!1,f=h):f=t,g.precision=f+=w,n=j(P),r=n.charAt(0),Math.abs(o=d.e)<15e14){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)d=d.times(e),n=j(d.d),r=n.charAt(0),p++;o=d.e,r>1?(d=new g("0."+n),o++):d=new g(r+"."+n.slice(1))}else return u=ze(g,f+2,h).times(o+""),d=pe(new g(r+"."+n.slice(1)),f-w).plus(u),g.precision=h,t==null?B(d,h,y,S=!0):d;for(l=d,c=s=d=_(d.minus(1),d.plus(1),f,1),m=B(d.times(d),f,1),i=3;;){if(s=B(s.times(m),f,1),u=c.plus(_(s,new g(i),f,1)),j(u.d).slice(0,f)===j(c.d).slice(0,f))if(c=c.times(2),o!==0&&(c=c.plus(ze(g,f+2,h).times(o+""))),c=_(c,new g(p),f,1),t==null)if(Ce(c.d,f-w,y,a))g.precision=f+=w,u=s=d=_(l.minus(1),l.plus(1),f,1),m=B(d.times(d),f,1),i=a=1;else return B(c,g.precision=h,y,S=!0);else return g.precision=h,c;c=u,i+=2}}function jt(e){return String(e.s*e.s/0)}function mt(e,t){var n,r,i;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;r++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(r,i),t){if(i-=r,e.e=n=n-r-1,e.d=[],r=(n+1)%k,n<0&&(r+=k),r<i){for(r&&e.d.push(+t.slice(0,r)),i-=k;r<i;)e.d.push(+t.slice(r,r+=k));t=t.slice(r),r=k-t.length}else r-=i;for(;r--;)t+="0";e.d.push(+t),S&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function Zn(e,t){var n,r,i,o,s,a,c,u,f;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),qt.test(t))return mt(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(qn.test(t))n=16,t=t.toLowerCase();else if(Vn.test(t))n=2;else if(Un.test(t))n=8;else throw Error(de+t);for(o=t.search(/p/i),o>0?(c=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),o=t.indexOf("."),s=o>=0,r=e.constructor,s&&(t=t.replace(".",""),a=t.length,o=a-o,i=Gt(r,new r(n),o,o*2)),u=He(t,n,ne),f=u.length-1,o=f;u[o]===0;--o)u.pop();return o<0?new r(e.s*0):(e.e=Je(u,f),e.d=u,S=!1,s&&(e=_(e,i,a*4)),c&&(e=e.times(Math.abs(c)<54?U(2,c):Ie.pow(2,c))),S=!0,e)}function zn(e,t){var n,r=t.d.length;if(r<3)return t.isZero()?t:xe(e,2,t,t);n=1.4*Math.sqrt(r),n=n>16?16:n|0,t=t.times(1/Xe(5,n)),t=xe(e,2,t,t);for(var i,o=new e(5),s=new e(16),a=new e(20);n--;)i=t.times(t),t=t.times(o.plus(i.times(s.times(i).minus(a))));return t}function xe(e,t,n,r,i){var o,s,a,c,u=1,f=e.precision,l=Math.ceil(f/k);for(S=!1,c=n.times(n),a=new e(r);;){if(s=_(a.times(c),new e(t++*t++),f,1),a=i?r.plus(s):r.minus(s),r=_(s.times(c),new e(t++*t++),f,1),s=a.plus(r),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=r,r=s,s=o,u++}return S=!0,s.d.length=l+1,s}function Xe(e,t){for(var n=e;--t;)n*=e;return n}function Zt(e,t){var n,r=t.s<0,i=te(e,e.precision,1),o=i.times(.5);if(t=t.abs(),t.lte(o))return ue=r?4:1,t;if(n=t.divToInt(i),n.isZero())ue=r?3:2;else{if(t=t.minus(n.times(i)),t.lte(o))return ue=Rt(n)?r?2:3:r?4:1,t;ue=Rt(n)?r?1:4:r?3:2}return t.minus(i).abs()}function pt(e,t,n,r){var i,o,s,a,c,u,f,l,m,p=e.constructor,w=n!==void 0;if(w?(X(n,1,ge),r===void 0?r=p.rounding:X(r,0,8)):(n=p.precision,r=p.rounding),!e.isFinite())f=jt(e);else{for(f=oe(e),s=f.indexOf("."),w?(i=2,t==16?n=n*4-3:t==8&&(n=n*3-2)):i=t,s>=0&&(f=f.replace(".",""),m=new p(1),m.e=f.length-s,m.d=He(oe(m),10,i),m.e=m.d.length),l=He(f,10,i),o=c=l.length;l[--c]==0;)l.pop();if(!l[0])f=w?"0p+0":"0";else{if(s<0?o--:(e=new p(e),e.d=l,e.e=o,e=_(e,m,n,r,0,i),l=e.d,o=e.e,u=Ot),s=l[n],a=i/2,u=u||l[n+1]!==void 0,u=r<4?(s!==void 0||u)&&(r===0||r===(e.s<0?3:2)):s>a||s===a&&(r===4||u||r===6&&l[n-1]&1||r===(e.s<0?8:7)),l.length=n,u)for(;++l[--n]>i-1;)l[n]=0,n||(++o,l.unshift(1));for(c=l.length;!l[c-1];--c);for(s=0,f="";s<c;s++)f+=ut.charAt(l[s]);if(w){if(c>1)if(t==16||t==8){for(s=t==16?4:3,--c;c%s;c++)f+="0";for(l=He(f,i,t),c=l.length;!l[c-1];--c);for(s=1,f="1.";s<c;s++)f+=ut.charAt(l[s])}else f=f.charAt(0)+"."+f.slice(1);f=f+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)f="0"+f;f="0."+f}else if(++o>c)for(o-=c;o--;)f+="0";else o<c&&(f=f.slice(0,o)+"."+f.slice(o))}f=(t==16?"0x":t==2?"0b":t==8?"0o":"")+f}return e.s<0?"-"+f:f}function vt(e,t){if(e.length>t)return e.length=t,!0}function Yn(e){return new this(e).abs()}function Jn(e){return new this(e).acos()}function Xn(e){return new this(e).acosh()}function Qn(e,t){return new this(e).plus(t)}function $n(e){return new this(e).asin()}function er(e){return new this(e).asinh()}function tr(e){return new this(e).atan()}function nr(e){return new this(e).atanh()}function rr(e,t){e=new this(e),t=new this(t);var n,r=this.precision,i=this.rounding,o=r+4;return!e.s||!t.s?n=new this(NaN):!e.d&&!t.d?(n=te(this,o,1).times(t.s>0?.25:.75),n.s=e.s):!t.d||e.isZero()?(n=t.s<0?te(this,r,i):new this(0),n.s=e.s):!e.d||t.isZero()?(n=te(this,o,1).times(.5),n.s=e.s):t.s<0?(this.precision=o,this.rounding=1,n=this.atan(_(e,t,o,1)),t=te(this,o,1),this.precision=r,this.rounding=i,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(_(e,t,o,1)),n}function ir(e){return new this(e).cbrt()}function or(e){return B(e=new this(e),e.e+1,2)}function sr(e,t,n){return new this(e).clamp(t,n)}function ar(e){if(!e||typeof e!="object")throw Error(Ye+"Object expected");var t,n,r,i=e.defaults===!0,o=["precision",1,ge,"rounding",0,8,"toExpNeg",-Te,0,"toExpPos",0,Te,"maxE",0,Te,"minE",-Te,0,"modulo",0,9];for(t=0;t<o.length;t+=3)if(n=o[t],i&&(this[n]=ct[n]),(r=e[n])!==void 0)if(Z(r)===r&&r>=o[t+1]&&r<=o[t+2])this[n]=r;else throw Error(de+n+": "+r);if(n="crypto",i&&(this[n]=ct[n]),(r=e[n])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error(Wt);else this[n]=!1;else throw Error(de+n+": "+r);return this}function ur(e){return new this(e).cos()}function cr(e){return new this(e).cosh()}function zt(e){var t,n,r;function i(o){var s,a,c,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,_t(o)){u.s=o.s,S?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e<i.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;S?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return mt(u,o.toString())}else if(c!=="string")throw Error(de+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),qt.test(o)?mt(u,o):Zn(u,o)}if(i.prototype=b,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ar,i.clone=zt,i.isDecimal=_t,i.abs=Yn,i.acos=Jn,i.acosh=Xn,i.add=Qn,i.asin=$n,i.asinh=er,i.atan=tr,i.atanh=nr,i.atan2=rr,i.cbrt=ir,i.ceil=or,i.clamp=sr,i.cos=ur,i.cosh=cr,i.div=lr,i.exp=fr,i.floor=mr,i.hypot=pr,i.ln=dr,i.log=gr,i.log10=br,i.log2=hr,i.max=yr,i.min=wr,i.mod=Pr,i.mul=Tr,i.pow=xr,i.random=Ar,i.round=Br,i.sign=kr,i.sin=Sr,i.sinh=Cr,i.sqrt=Ir,i.sub=Lr,i.sum=Nr,i.tan=Mr,i.tanh=Er,i.trunc=Kr,e===void 0&&(e={}),e&&e.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return i.config(e),i}function lr(e,t){return new this(e).div(t)}function fr(e){return new this(e).exp()}function mr(e){return B(e=new this(e),e.e+1,3)}function pr(){var e,t,n=new this(0);for(S=!1,e=0;e<arguments.length;)if(t=new this(arguments[e++]),t.d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return S=!0,new this(1/0);n=t}return S=!0,n.sqrt()}function _t(e){return e instanceof Ie||e&&e.toStringTag===Vt||!1}function dr(e){return new this(e).ln()}function gr(e,t){return new this(e).log(t)}function hr(e){return new this(e).log(2)}function br(e){return new this(e).log(10)}function yr(){return Ht(this,arguments,"lt")}function wr(){return Ht(this,arguments,"gt")}function Pr(e,t){return new this(e).mod(t)}function Tr(e,t){return new this(e).mul(t)}function xr(e,t){return new this(e).pow(t)}function Ar(e){var t,n,r,i,o=0,s=new this(1),a=[];if(e===void 0?e=this.precision:X(e,1,ge),r=Math.ceil(e/k),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(r));o<r;)i=t[o],i>=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(r*=4);o<r;)i=t[o]+(t[o+1]<<8)+(t[o+2]<<16)+((t[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(t,o):(a.push(i%1e7),o+=4);o=r/4}else throw Error(Wt);else for(;o<r;)a[o++]=Math.random()*1e7|0;for(r=a[--o],e%=k,r&&e&&(i=U(10,k-e),a[o]=(r/i|0)*i);a[o]===0;o--)a.pop();if(o<0)n=0,a=[0];else{for(n=-1;a[0]===0;n-=k)a.shift();for(r=1,i=a[0];i>=10;i/=10)r++;r<k&&(n-=k-r)}return s.e=n,s.d=a,s}function Br(e){return B(e=new this(e),e.e+1,this.rounding)}function kr(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function Sr(e){return new this(e).sin()}function Cr(e){return new this(e).sinh()}function Ir(e){return new this(e).sqrt()}function Lr(e,t){return new this(e).sub(t)}function Nr(){var e=0,t=arguments,n=new this(t[e]);for(S=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return S=!0,B(n,this.precision,this.rounding)}function Mr(e){return new this(e).tan()}function Er(e){return new this(e).tanh()}function Kr(e){return B(e=new this(e),e.e+1,1)}b[Symbol.for("nodejs.util.inspect.custom")]=b.toString;b[Symbol.toStringTag]="Decimal";var Ie=b.constructor=zt(ct);je=new Ie(je);Ze=new Ie(Ze);var re=Ie;import{PublicKey as gt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Dr}from"@solana/spl-token";import{PublicKey as W,SystemProgram as Yt,SYSVAR_RENT_PUBKEY as Rr}from"@solana/web3.js";function dt({pubkey:e,isSigner:t=!1,isWritable:n=!0}){return{pubkey:e,isWritable:n,isSigner:t}}var Oi=[dt({pubkey:Dr,isWritable:!1}),dt({pubkey:Yt.programId,isWritable:!1}),dt({pubkey:Rr,isWritable:!1})];function Jt({publicKey:e,transformSol:t}){let n=Xt(e.toString());if(n instanceof W)return t&&n.equals(Ne)?Le:n;if(t&&n.toString()===Ne.toBase58())return Le;if(typeof n=="string"){if(n===W.default.toBase58())return W.default;try{return new W(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Xt(e){try{return new W(e)}catch{return e}}var Fi=new W("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Qt=new W("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$t=new W("SysvarRent111111111111111111111111111111111"),Wi=new W("SysvarC1ock11111111111111111111111111111111"),Vi=new W("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),qi=new W("Sysvar1nstructions1111111111111111111111111"),en=Yt.programId,Ui=new W("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Gi=new W("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Hi=new W("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ji=new W("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Zi=new W("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),zi=new W("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Yi=new W("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ji=new W("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Xi=new W("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Qi=new W("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),$i=new W("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Le=new W("So11111111111111111111111111111111111111112"),Ne=W.default;import{PublicKey as vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tn}from"@solana/spl-token";var nn={chainId:101,address:vr.default.toBase58(),programId:tn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:tn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var ht=class{constructor({mint:t,decimals:n,symbol:r,name:i,skipMint:o=!1,isToken2022:s=!1}){if(t===Ne.toBase58()||t instanceof gt&&Ne.equals(t)){this.decimals=ye.decimals,this.symbol=ye.symbol,this.name=ye.name,this.mint=new gt(ye.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=r||t.toString().substring(0,6),this.name=i||t.toString().substring(0,6),this.mint=o?gt.default:Jt({publicKey:t}),this.isToken2022=s}equals(t){return this===t?!0:this.mint.equals(t.mint)}},Ae=ht;Ae.WSOL=new ht($(V({},ye),{mint:ye.address}));import{get as rn,set as _r}from"lodash";import sn from"dayjs";import Or from"dayjs/plugin/utc";sn.extend(Or);var bt=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return sn().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(r=>typeof r=="object"?JSON.stringify(r):r).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},on={},Fr={};function z(e){let t=rn(on,e);if(!t){let n=rn(Fr,e);t=new bt({name:e,logLevel:n}),_r(on,e,t)}return t}import $e from"big.js";import qr from"bn.js";import Ur from"decimal.js-light";import Wr from"toformat";var Vr=Wr,Me=Vr;var Qe=z("module/fraction"),yt=Me($e),Ee=Me(Ur),Gr={[0]:Ee.ROUND_DOWN,[1]:Ee.ROUND_HALF_UP,[2]:Ee.ROUND_UP},Hr={[0]:$e.roundDown,[1]:$e.roundHalfUp,[2]:$e.roundUp},F=class{constructor(t,n=new qr(1)){this.numerator=he(t),this.denominator=he(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new F(this.denominator,this.numerator)}add(t){let n=t instanceof F?t:new F(he(t));return this.denominator.eq(n.denominator)?new F(this.numerator.add(n.numerator),this.denominator):new F(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof F?t:new F(he(t));return this.denominator.eq(n.denominator)?new F(this.numerator.sub(n.numerator),this.denominator):new F(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof F?t:new F(he(t));return new F(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof F?t:new F(he(t));return new F(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},r=1){Number.isInteger(t)||Qe.logWithError(`${t} is not an integer.`),t<=0&&Qe.logWithError(`${t} is not positive.`),Ee.set({precision:t+1,rounding:Gr[r]});let i=new Ee(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return i.toFormat(i.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},r=1){return Number.isInteger(t)||Qe.logWithError(`${t} is not an integer.`),t<0&&Qe.logWithError(`${t} is negative.`),yt.DP=t,yt.RM=Hr[r]||1,new yt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var No=z("Raydium_price");var wt=class{constructor({decimals:t,symbol:n="UNKNOWN",name:r="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=r}equals(t){return this===t}},et=wt;et.SOL=new wt(nn);import Zr from"bn.js";var an=new F(new Zr(100)),se=class extends F{toSignificant(t=5,n,r){return this.mul(an).toSignificant(t,n,r)}toFixed(t=2,n,r){return this.mul(an).toFixed(t,n,r)}};import{PublicKey as Ho}from"@solana/web3.js";import Zo from"bn.js";var Pt=new Q(0),ls=new Q(1),fs=new Q(2),ms=new Q(3),ps=new Q(5),zr=new Q(10),ds=new Q(100),gs=new Q(1e3),hs=new Q(1e4),ln=9007199254740991;function he(e){let t=z("Raydium_parseBigNumberish");if(e instanceof Q)return e;if(typeof e=="string"){if(e.match(/^-?[0-9]+$/))return new Q(e);t.logWithError(`invalid BigNumberish string: ${e}`)}return typeof e=="number"?(e%1&&t.logWithError(`BigNumberish number underflow: ${e}`),(e>=ln||e<=-ln)&&t.logWithError(`BigNumberish number overflow: ${e}`),new Q(String(e))):typeof e=="bigint"?new Q(e.toString()):(t.error(`invalid BigNumberish value: ${e}`),new Q(0))}var Ls=z("Raydium_amount"),Ns=Me(Yr);import{PublicKey as ti}from"@solana/web3.js";import{PublicKey as Jr,ComputeBudgetProgram as fn,Transaction as pn,TransactionMessage as Xr,Keypair as dn,VersionedTransaction as gn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qr}from"@solana/spl-token";var ce={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};var mn=z("Raydium_txUtil"),hn=1644;function tt(e){let t=[],n=[];return e.microLamports&&(t.push(fn.setComputeUnitPrice({microLamports:e.microLamports})),n.push(ce.SetComputeUnitPrice)),e.units&&(t.push(fn.setComputeUnitLimit({units:e.units})),n.push(ce.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Be(e){var t,n;try{return((n=await((t=e.getLatestBlockhash)==null?void 0:t.call(e)))==null?void 0:n.blockhash)||(await e.getRecentBlockhash()).blockhash}catch{return(await e.getRecentBlockhash()).blockhash}}function $r(e,t){e.length<1&&mn.logWithError(`no instructions provided: ${e.toString()}`),t.length<1&&mn.logWithError(`no signers provided:, ${t.toString()}`);let n=new pn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...e);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<hn}catch{return!1}}function le(e,t){let[n,r]=Jr.findProgramAddressSync(e,t);return{publicKey:n,nonce:r}}function Ke({instructions:e,payer:t,signers:n}){return $r(e,[t,...n])}function De({instructions:e,payer:t,lookupTableAddressAccount:n,recentBlockhash:r=dn.generate().publicKey.toString()}){let o=new Xr({payerKey:t,recentBlockhash:r,instructions:e}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new gn(o).serialize()).toString("base64").length<hn}catch{return!1}}var ei=e=>Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e);function we(e){let t=[];return e.forEach(n=>{n instanceof pn&&(n.recentBlockhash||(n.recentBlockhash=Qr.toBase58()),n.feePayer||(n.feePayer=dn.generate().publicKey));let r=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof gn&&(r=ei(r));let i=r.toString("base64");t.push(i)}),console.log("simulate tx string:",t),t}import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";function bn(e,t,n){return le([e.toBuffer(),(n!=null?n:ni).toBuffer(),t.toBuffer()],new ti("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as ve,sendAndConfirmTransaction as _e,Transaction as Oe,TransactionMessage as Fe,VersionedTransaction as We}from"@solana/web3.js";import ai from"axios";import{PublicKey as wn,AddressLookupTableAccount as nt}from"@solana/web3.js";import{PublicKey as si}from"@solana/web3.js";import{getTransferFeeConfig as za,unpackMint as Ya}from"@solana/spl-token";function Tt(e,t=1,n=[]){let r=[...e];if(t<=0)return n;for(;r.length;)n.push(r.splice(0,t));return n}import{PublicKey as D}from"@solana/web3.js";var ia=new D("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),oa=new D("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),sa=new D("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),aa=new D("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ua=new D("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ca=new D("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),la=new D("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),fa=new D("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ma=new D("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),pa=new D("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),da=new D("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),ga=new D("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ha=new D("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ba=new D("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ya=new D("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wa=new D("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Pa=new D("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Ta=new D("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ri=new D("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ii=new D("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),oi=new D("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var xa={SERUM_MARKET:D.default,OPENBOOK_MARKET:new D("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:D.default,FarmV3:new D("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new D("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new D("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new D("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new D("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new D("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new D("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ri,CREATE_CPMM_POOL_AUTH:ii,CREATE_CPMM_POOL_FEE_ACC:oi,FEE_DESTINATION_ID:new D("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import ie from"bn.js";var Re=1e4;function ke(e,t,n,r){if(t===void 0)return{amount:e,fee:void 0,expirationTime:void 0};let i=$(V({},t),{olderTransferFee:{epoch:BigInt(t.olderTransferFee.epoch),maximumFee:BigInt(t.olderTransferFee.maximumFee),transferFeeBasisPoints:t.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(t.newerTransferFee.epoch),maximumFee:BigInt(t.newerTransferFee.maximumFee),transferFeeBasisPoints:t.newerTransferFee.transferFeeBasisPoints}}),o=n.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new ie(o.maximumFee.toString()),a=n.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*n.slotsInEpoch-n.absoluteSlot)*400/1e3:void 0;if(r)if(o.transferFeeBasisPoints===Re){let c=new ie(o.maximumFee.toString());return{amount:e.add(c),fee:c,expirationTime:a}}else{let c=xt(e.mul(new ie(Re)),new ie(Re-o.transferFeeBasisPoints)),u=new ie(o.maximumFee.toString()),f=c.sub(e).gt(u)?e.add(u):c,l=xt(f.mul(new ie(o.transferFeeBasisPoints)),new ie(Re)),m=l.gt(s)?s:l;return{amount:f,fee:m,expirationTime:a}}else{let c=xt(e.mul(new ie(o.transferFeeBasisPoints)),new ie(Re)),u=c.gt(s)?s:c;return{amount:e,fee:u,expirationTime:a}}}function xt(e,t){let{div:n,mod:r}=e.divmod(t);return r.gt(new ie(0))?n.add(new ie(1)):n}var At=z("Raydium_accountInfo_util");async function yn(e,t,n){let{batchRequest:r,commitment:i="confirmed"}=V({batchRequest:!1},n),o=Tt(t,100),s=new Array(o.length).fill([]);if(r){let a=o.map(f=>{let l=e._buildArgs([f.map(m=>m.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:l}}),c=Tt(a,10);s=(await(await Promise.all(c.map(async f=>await e._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&At.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.error.message}`),f.result.value.map(l=>{if(l){let{data:m,executable:p,lamports:w,owner:d,rentEpoch:P}=l;return m.length!==2&&m[1]!=="base64"&&At.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:p,lamports:w,owner:new si(d),rentEpoch:P}}return null})))}else try{s=await Promise.all(o.map(a=>e.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&At.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Bt({connection:e,address:t}){let n=await yn(e,[...new Set(t.map(i=>i.toString()))].map(i=>new wn(i))),r={};for(let i=0;i<t.length;i++){let o=n[i],s=t[i];if(!o)continue;let a=new nt({key:s,state:nt.deserialize(o.data)});r[s.toString()]=a,rt[s.toString()]=a}return r}var rt={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new nt({key:new wn("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:nt.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var it=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var r;let t=(await ai.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(r=t==null?void 0:t[15])!=null?r:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:r}=tt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...r),!0}return!1}async calComputeBudget({config:t,defaultIns:n}){try{let r=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(r))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:r=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...r),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==ve.default.toString())),this}async versionBuild({txVersion:t,extInfo:n}){return t===0?await this.buildV0(V({},n||{})):this.build(n)}build(t){let n=new Oe;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=r||{},s=i!=null?i:await Be(this.connection);if(n.recentBlockhash=s,this.signers.length&&n.sign(...this.signers),we([n]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await _e(this.connection,n,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:n};if(this.signAllTransactions){let c=await this.signAllTransactions([n]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){let{extraPreBuildData:n=[],extInfo:r}=t,{transaction:i}=this.build(r),o=n.filter(u=>u.transaction.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var d;let{sequentially:f,onTxUpdate:l,recentBlockHash:m,skipPreflight:p=!0}=u||{},w=m!=null?m:await Be(this.connection);if((d=this.owner)!=null&&d.isKeyPair){if(f){let P=[];for(let g of s){let y=await _e(this.connection,g,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});P.push(y)}return{txIds:P,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(P,g)=>(P.recentBlockhash=w,await _e(this.connection,P,a[g].find(y=>y.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let P=s.map((y,h)=>(y.recentBlockhash=w,a[h].length&&y.sign(...a[h]),y));we(P);let g=await this.signAllTransactions(P);if(f){let y=0,h=[],T=async()=>{if(!g[y])return;let x=await this.connection.sendRawTransaction(g[y].serialize(),{skipPreflight:p});h.push({txId:x,status:"sent",signedTx:g[y]}),l==null||l([...h]),y++,this.connection.onSignature(x,C=>{let L=h.findIndex(M=>M.txId===x);L>-1&&(h[L].status=C.err?"error":"success"),l==null||l([...h]),C.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:h.map(x=>x.txId),signedTxs:g}}else{let y=[];for(let h=0;h<g.length;h+=1){let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});y.push(T)}return{txIds:y,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:r}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:r||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:r})}async buildV0(t){let m=t||{},{lookupTableCache:n={},lookupTableAddress:r=[],forerunCreate:i}=m,o=ae(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=V(V({},this.cluster==="devnet"?{}:rt),n),a=Array.from(new Set([...r,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new ve(p));let u=await Bt({connection:this.connection,address:c});for(let[p,w]of Object.entries(u))s[p]=w;let f=new Fe({payerKey:this.feePayer,recentBlockhash:i?ve.default.toBase58():await Be(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),l=new We(f);return l.sign(this.signers),{builder:this,transaction:l,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var P;let{recentBlockHash:w,skipPreflight:d=!0}=p||{};if(w&&(l.message.recentBlockhash=w),we([l]),(P=this.owner)!=null&&P.isKeyPair){this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))||l.sign([this.owner.signer]);let g=await this.connection.sendTransaction(l,{skipPreflight:d}),{lastValidBlockHeight:y,blockhash:h}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:y,signature:g},"confirmed"),{txId:g,signedTx:l}}if(this.signAllTransactions){let g=await this.signAllTransactions([l]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:d}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(t){let{extraPreBuildData:n=[],buildProps:r}=t,{transaction:i}=await this.buildV0(r),o=n.filter(u=>u.builder.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,f)=>{u.sign(a[f])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:r,execute:async u=>{var w;let{sequentially:f,onTxUpdate:l,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&s.forEach(d=>d.message.recentBlockhash=m),we(s),(w=this.owner)!=null&&w.isKeyPair){let{lastValidBlockHeight:d,blockhash:P}=await this.connection.getLatestBlockhash();if(s.forEach((g,y)=>{a[y].find(h=>h.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),f){let g=[];for(let y of s){let h=await this.connection.sendTransaction(y,{skipPreflight:p}),{lastValidBlockHeight:T,blockhash:x}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:T,signature:h},"confirmed"),g.push(h)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let y=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:d,signature:y},"confirmed"),y})),signedTxs:s}}if(this.signAllTransactions){let d=await this.signAllTransactions(s);if(f){let P=0,g=[],y=async()=>{if(!d[P])return;let h=await this.connection.sendTransaction(d[P],{skipPreflight:p});g.push({txId:h,status:"sent",signedTx:d[P]}),l==null||l([...g]),P++,this.connection.onSignature(h,T=>{let x=g.findIndex(C=>C.txId===h);x>-1&&(g[x].status=T.err?"error":"success"),l==null||l([...g]),T.err||y()},"processed"),this.connection.getSignatureStatus(h)};return y(),{txIds:[],signedTxs:d}}else{let P=[];for(let g=0;g<d.length;g+=1){let y=await this.connection.sendTransaction(d[g],{skipPreflight:p});P.push(y)}return{txIds:P,signedTxs:d}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuild(t){let u=t||{},{computeBudgetConfig:n}=u,r=ae(u,["computeBudgetConfig"]),i=n?tt(n):{instructions:[],instructionTypes:[]},o=this.signers.reduce((f,l)=>$(V({},f),{[l.publicKey.toBase58()]:l}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(f=>{let l=[...c,f],m=n?[...i.instructions,...l]:l,w=[...new Set(l.map(d=>d.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(d=>new ve(d));if(c.length<12&&Ke({instructions:m,payer:this.feePayer,signers:w})||Ke({instructions:l,payer:this.feePayer,signers:w}))c.push(f);else{if(c.length===0)throw Error("item ins too big");Ke({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:w})?s.push(new Oe().add(...i.instructions,...c)):s.push(new Oe().add(...c)),a.push(Array.from(new Set(c.map(d=>d.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(d=>o[d]).filter(d=>d!==void 0)),c=[f]}}),c.length>0){let l=[...new Set(c.map(m=>m.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(m=>o[m]).filter(m=>m!==void 0);Ke({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:l.map(m=>m.publicKey)})?s.push(new Oe().add(...i.instructions,...c)):s.push(new Oe().add(...c)),a.push(l)}return s.forEach(f=>f.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async f=>{var P;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:w=!0}=f||{},d=p!=null?p:await Be(this.connection);if(s.forEach(async(g,y)=>{g.recentBlockhash=d,a[y].length&&g.sign(...a[y])}),we(s),(P=this.owner)!=null&&P.isKeyPair){if(l){let g=[];for(let y of s){let h=await _e(this.connection,y,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});g.push(h)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,y)=>await _e(this.connection,g,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:w}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(l){let y=0,h=[],T=async()=>{if(!g[y])return;let x=await this.connection.sendRawTransaction(g[y].serialize(),{skipPreflight:w});h.push({txId:x,status:"sent",signedTx:g[y]}),m==null||m([...h]),y++,this.connection.onSignature(x,C=>{let L=h.findIndex(M=>M.txId===x);L>-1&&(h[L].status=C.err?"error":"success"),m==null||m([...h]),C.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:h.map(x=>x.txId),signedTxs:g}}else{let y=[];for(let h=0;h<g.length;h+=1){let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:w});y.push(T)}return{txIds:y,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(t){let P=t||{},{computeBudgetConfig:n,lookupTableCache:r={},lookupTableAddress:i=[]}=P,o=ae(P,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=V(V({},this.cluster==="devnet"?{}:rt),r),a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let g of a)s[g]===void 0&&c.push(new ve(g));let u=await Bt({connection:this.connection,address:c});for(let[g,y]of Object.entries(u))s[g]=y;let f=n?tt(n):{instructions:[],instructionTypes:[]},l=await Be(this.connection),m=this.signers.reduce((g,y)=>$(V({},g),{[y.publicKey.toBase58()]:y}),{}),p=[],w=[],d=[];if(this.allInstructions.forEach(g=>{let y=[...d,g],h=n?[...f.instructions,...y]:y;if(d.length<12&&De({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||De({instructions:y,payer:this.feePayer,lookupTableAddressAccount:s}))d.push(g);else{if(d.length===0)throw Error("item ins too big");let T={};for(let x of[...new Set(a)])s[x]!==void 0&&(T[x]=s[x]);if(n&&De({instructions:[...f.instructions,...d],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let x=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f.instructions,...d]}).compileToV0Message(Object.values(s));p.push(new We(x))}else{let x=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...d]}).compileToV0Message(Object.values(s));p.push(new We(x))}w.push(Array.from(new Set(d.map(x=>x.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat())).map(x=>m[x]).filter(x=>x!==void 0)),d=[g]}}),d.length>0){let y=[...new Set(d.map(h=>h.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(h=>m[h]).filter(h=>h!==void 0);if(n&&De({instructions:[...f.instructions,...d],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let h=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f.instructions,...d]}).compileToV0Message(Object.values(s));p.push(new We(h))}else{let h=new Fe({payerKey:this.feePayer,recentBlockhash:l,instructions:[...d]}).compileToV0Message(Object.values(s));p.push(new We(h))}w.push(y)}return{builder:this,transactions:p,buildProps:t,signers:w,instructionTypes:this.instructionTypes,execute:async g=>{var C;let{sequentially:y,onTxUpdate:h,recentBlockHash:T,skipPreflight:x=!0}=g||{};if(p.map(async(L,M)=>{w[M].length&&L.sign(w[M]),T&&(L.message.recentBlockhash=T)}),we(p),(C=this.owner)!=null&&C.isKeyPair){let{lastValidBlockHeight:L,blockhash:M}=await this.connection.getLatestBlockhash();if(p.forEach((N,R)=>{w[R].find(I=>I.publicKey.equals(this.owner.publicKey))||N.sign([this.owner.signer])}),y){let N=[];for(let R of p){let I=await this.connection.sendTransaction(R,{skipPreflight:x}),{lastValidBlockHeight:q,blockhash:H}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:H,lastValidBlockHeight:q,signature:I},"confirmed"),N.push(I)}return{txIds:N,signedTxs:p}}return{txIds:await Promise.all(p.map(async N=>{let R=await this.connection.sendTransaction(N,{skipPreflight:x});return await this.connection.confirmTransaction({blockhash:M,lastValidBlockHeight:L,signature:R},"confirmed"),R})),signedTxs:p}}if(this.signAllTransactions){let L=await this.signAllTransactions(p);if(y){let M=0,N=[],R=async()=>{if(!L[M])return;let I=await this.connection.sendTransaction(L[M],{skipPreflight:x});N.push({txId:I,status:"sent",signedTx:L[M]}),h==null||h([...N]),M++,this.connection.onSignature(I,q=>{let H=N.findIndex(J=>J.txId===I);H>-1&&(N[H].status=q.err?"error":"success"),h==null||h([...N]),q.err||R()},"processed"),this.connection.getSignatureStatus(I)};return R(),{txIds:[],signedTxs:L}}else{let M=[];for(let N=0;N<L.length;N+=1){let R=await this.connection.sendTransaction(L[N],{skipPreflight:x});M.push(R)}return{txIds:M,signedTxs:L}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var kt=(...e)=>e.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),Ve=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=z(n)}createTxBuilder(t){return this.scope.checkOwner(),new it({connection:this.scope.connection,feePayer:t||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...t){this.logger.debug(kt(t))}logInfo(...t){this.logger.info(kt(t))}logAndCreateError(...t){let n=kt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var ui=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ci=Buffer.from("amm_config","utf8"),li=Buffer.from("pool","utf8"),fi=Buffer.from("pool_lp_mint","utf8"),mi=Buffer.from("pool_vault","utf8"),pi=Buffer.from("observation","utf8");function di(e){return le([ui],e)}function gi(e,t){return le([ci,yi(t)],e)}function hi(e,t,n,r){return le([li,t.toBuffer(),n.toBuffer(),r.toBuffer()],e)}function bi(e,t){return le([fi,t.toBuffer()],e)}function Pn(e,t,n){return le([mi,t.toBuffer(),n.toBuffer()],e)}function ot(e,t){return le([pi,t.toBuffer()],e)}function yi(e){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,e,!1),new Uint8Array(t)}function Tn({programId:e,mintA:t,mintB:n}){let r=gi(e,0).publicKey,i=di(e).publicKey,o=hi(e,r,t,n).publicKey,s=bi(e,o).publicKey,a=Pn(e,o,t).publicKey,c=Pn(e,o,n).publicKey,u=ot(e,o).publicKey;return{poolId:o,configId:r,authority:i,lpMint:s,vaultA:a,vaultB:c,observationId:u}}import{TransactionInstruction as qe}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nt,TOKEN_2022_PROGRAM_ID as Nn,ASSOCIATED_TOKEN_PROGRAM_ID as Li}from"@solana/spl-token";import{PublicKey as Si}from"@solana/web3.js";import Cn,{isBN as In}from"bn.js";import{bits as Tu,BitStructure as xu,blob as wi,Blob as Au,cstr as Bu,f32 as ku,f32be as Su,f64 as Cu,f64be as Iu,greedy as Lu,Layout as Pi,ns64 as Nu,ns64be as Mu,nu64 as Eu,nu64be as Ku,offset as Du,s16 as Ru,s16be as vu,s24 as _u,s24be as Ou,s32 as Fu,s32be as Wu,s40 as Vu,s40be as qu,s48 as Uu,s48be as Gu,s8 as Hu,seq as Ti,struct as ju,Structure as xi,u16 as Ai,u16be as Zu,u24 as zu,u24be as Yu,u32 as Ju,u32be as Xu,u40 as Qu,u40be as $u,u48 as ec,u48be as tc,u8 as Bi,UInt as ki,union as nc,Union as rc,unionLayoutDiscriminator as ic,utf8 as oc}from"@solana/buffer-layout";var St=Pi,xn=xi;var An=ki;var Bn=Bi,kn=Ai;var Sn=Ti;var Se=wi;var Ct=class extends St{constructor(n,r,i){super(n,i);this.blob=Se(n),this.signed=r}decode(n,r=0){let i=new Cn(this.blob.decode(n,r),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(n,r,i=0){return typeof n=="number"&&(n=new Cn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),r,i)}};function Pe(e){return new An(1,e)}function O(e){return new Ct(8,!1,e)}var st=class extends St{constructor(n,r,i,o){super(n.span,o);this.layout=n,this.decoder=r,this.encoder=i}decode(n,r){return this.decoder(this.layout.decode(n,r))}encode(n,r,i){return this.layout.encode(this.encoder(n),r,i)}getSpan(n,r){return this.layout.getSpan(n,r)}};function ee(e){return new st(Se(32),t=>new Si(t),t=>t.toBuffer(),e)}function Ln(e){return new st(Bn(),Ci,Ii,e)}function Ci(e){if(e===0)return!1;if(e===1)return!0;throw new Error("Invalid bool: "+e)}function Ii(e){return e?1:0}var It=class extends xn{decode(t,n){return super.decode(t,n)}};function fe(e,t,n){return new It(e,t,n)}function Lt(e,t,n){let r,i=typeof t=="number"?t:In(t)?t.toNumber():new Proxy(t,{get(o,s){if(!r){let a=Reflect.get(o,"count");r=In(a)?a.toNumber():a,Reflect.set(o,"count",r)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(r=a),Reflect.set(o,s,a)}});return Sn(e,i,n)}var Ni=z("Raydium_cpmm"),Ue={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Mn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w,d,P,g,y,h){let T=fe([O("amountMaxA"),O("amountMaxB"),O("openTime")]),x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Li,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1}],C=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:y,openTime:h},C),new qe({keys:x,programId:e,data:Buffer.from([...Ue.initialize,...C])})}function En(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w){let d=fe([O("lpAmount"),O("amountMaxA"),O("amountMaxB")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0}],g=Buffer.alloc(d.span);return Ni.debug("cpmm deposit data",{lpAmount:m.toString(),amountMaxA:p.toString(),amountMaxB:w.toString()}),d.encode({lpAmount:m,amountMaxA:p,amountMaxB:w},g),new qe({keys:P,programId:e,data:Buffer.from([...Ue.deposit,...g])})}function Kn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w){let d=fe([O("lpAmount"),O("amountMinA"),O("amountMinB")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Qt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(d.span);return d.encode({lpAmount:m,amountMinA:p,amountMinB:w},g),new qe({keys:P,programId:e,data:Buffer.from([...Ue.withdraw,...g])})}function Dn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w,d){let P=fe([O("amountIn"),O("amounOutMin")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],y=Buffer.alloc(P.span);return P.encode({amountIn:w,amounOutMin:d},y),new qe({keys:g,programId:e,data:Buffer.from([...Ue.swapBaseInput,...y])})}function Rn(e,t,n,r,i,o,s,a,c,u,f,l,m,p,w,d){let P=fe([O("amountInMax"),O("amountOut")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],y=Buffer.alloc(P.span);return P.encode({amountInMax:w,amountOut:d},y),new qe({keys:g,programId:e,data:Buffer.from([...Ue.swapBaseOutput,...y])})}import Y from"bn.js";var vn=fe([Se(8),Pe("bump"),Ln("disableCreatePool"),kn("index"),O("tradeFeeRate"),O("protocolFeeRate"),O("fundFeeRate"),O("createPoolFee"),ee("protocolOwner"),ee("fundOwner"),Lt(O(),16)]),_n=fe([Se(8),ee("configId"),ee("poolCreator"),ee("vaultA"),ee("vaultB"),ee("mintLp"),ee("mintA"),ee("mintB"),ee("mintProgramA"),ee("mintProgramB"),ee("observationId"),Pe("bump"),Pe("status"),Pe("lpDecimals"),Pe("mintDecimalA"),Pe("mintDecimalB"),O("lpAmount"),O("protocolFeesMintA"),O("protocolFeesMintB"),O("fundFeesMintA"),O("fundFeesMintB"),O("openTime"),Lt(O(),32)]);var Mt=class extends Ve{constructor(t){super(t)}async load(){this.checkDisabled()}async getCpmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async getRpcPoolInfo(t,n){return(await this.getRpcPoolInfos([t],n))[t]}async getRpcPoolInfos(t,n){let r=await this.scope.connection.getMultipleAccountsInfo(t.map(l=>new A(l))),i={},o=new Set,s=[];for(let l=0;l<t.length;l++){let m=r[l];if(m===null)throw Error("fetch pool info error: "+String(t[l]));let p=_n.decode(m.data);i[String(t[l])]=p,o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(n){let l=[...o],m=await this.scope.connection.getMultipleAccountsInfo(l.map(p=>new A(p)));for(let p=0;p<l.length;p++){let w=m[p];if(w===null)throw Error("fetch pool config error: "+l[p]);a[l[p]]=vn.decode(w.data)}}let c={},u=await this.scope.connection.getMultipleAccountsInfo(s.map(l=>new A(l)));for(let l=0;l<s.length;l++){let m=u[l];if(m===null)throw Error("fetch vault info error: "+s[l]);c[String(s[l])]=new Y(Mi.decode(m.data).amount.toString())}let f={};for(let[l,m]of Object.entries(i)){let p=c[m.vaultA.toString()].sub(m.protocolFeesMintA).sub(m.fundFeesMintA),w=c[m.vaultB.toString()].sub(m.protocolFeesMintB).sub(m.fundFeesMintB);f[l]=$(V({},m),{baseReserve:p,quoteReserve:w,configInfo:a[m.configId.toString()],poolPrice:new re(w.toString()).div(new re(10).pow(m.mintDecimalB)).div(new re(p.toString()).div(new re(10).pow(m.mintDecimalA)))})}return f}async createPool(f){var l=f,{programId:t,poolFeeAccount:n,startTime:r,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:c}=l,u=ae(l,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var q,H,J;let m=i.feePayer||((q=this.scope.owner)==null?void 0:q.publicKey),p=new Y(new A(u.mintA.address).toBuffer()).lte(new Y(new A(u.mintB.address).toBuffer())),[w,d]=p?[u.mintA,u.mintB]:[u.mintB,u.mintA],[P,g]=p?[u.mintAAmount,u.mintBAmount]:[u.mintBAmount,u.mintAAmount],y=i.useSOLBalance&&w.address===at.toBase58(),h=i.useSOLBalance&&d.address===at.toBase58(),[T,x]=[new A(w.address),new A(d.address)],C=this.createTxBuilder(),{account:L,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:w.programId,owner:this.scope.ownerPubKey,createInfo:y?{payer:m,amount:P}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:o,checkCreateATAOwner:s});C.addInstruction(M||{});let{account:N,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:new A(d.address),tokenProgram:d.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:m,amount:g}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});if(C.addInstruction(R||{}),L===void 0||N===void 0)throw Error("you don't has some token account");let I=Tn({programId:t,mintA:T,mintB:x});return C.addInstruction({instructions:[Mn(t,this.scope.ownerPubKey,I.configId,I.authority,I.poolId,T,x,I.lpMint,L,N,bn(this.scope.ownerPubKey,I.lpMint).publicKey,I.vaultA,I.vaultB,n,new A((H=w.programId)!=null?H:be),new A((J=d.programId)!=null?J:be),I.observationId,P,g,r)],instructionTypes:[ce.CpmmCreatePool]}),C.addCustomComputeBudget(c),C.versionBuild({txVersion:a,extInfo:{address:$(V({},I),{mintA:w,mintB:d,programId:t,poolFeeAccount:n})}})}async addLiquidity(t){let{poolInfo:n,inputAmount:r,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:c,txVersion:u}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:f}=this.scope,{bypassAssociatedCheck:l,checkCreateATAOwner:m}=V({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),p=s?void 0:await this.getRpcPoolInfo(n.id),{liquidity:w,inputAmountFee:d,anotherAmount:P}=s||this.computePairAmount({poolInfo:$(V({},n),{lpAmount:new re(p.lpAmount.toString()).div(10**n.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new se(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new re(r.toString()).div(10**(i?n.mintA.decimals:n.mintB.decimals))}),g=P.amount,y=n.mintA.address===at.toString(),h=n.mintB.address===at.toString(),T=this.createTxBuilder(),[x,C]=[new A(n.mintA.address),new A(n.mintB.address)],{account:L,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new A(n.mintA.address),owner:this.scope.ownerPubKey,createInfo:y||(i?r:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?r:g}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:!1,checkCreateATAOwner:m});T.addInstruction(M||{});let{account:N,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new A(n.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(i?g:r).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:r}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:m});T.addInstruction(R||{}),!L&&!N&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let I=await f.getCreatedTokenAccount({mint:new A(n.lpMint.address)}),v=await f.handleTokenAccount({side:"out",amount:0,mint:new A(n.lpMint.address),tokenAccount:I,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:q}=v,H=ae(v,["tokenAccount"]);T.addInstruction(H);let J=await this.getCpmmPoolKeys(n.id),G=new se(new Y(1)).sub(o);return T.addInstruction({instructions:[En(new A(n.programId),this.scope.ownerPubKey,new A(J.authority),new A(n.id),q,L,N,new A(J.vault.A),new A(J.vault.B),x,C,new A(n.lpMint.address),s?s==null?void 0:s.liquidity:G.mul(w).quotient,i?d.amount:g,i?g:d.amount)],instructionTypes:[ce.CpmmAddLiquidity],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:u})}async withdrawLiquidity(t){var q,H;let{poolInfo:n,lpAmount:r,slippage:i,computeBudgetConfig:o,txVersion:s}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new se(new Y(1)).sub(i),c=await this.getRpcPoolInfo(n.id),[u,f]=[a.mul(r.mul(c.baseReserve).div(c.lpAmount)).quotient,a.mul(r.mul(c.quoteReserve).div(c.lpAmount)).quotient],l=await this.scope.fetchEpochInfo(),[m,p]=[ke(u,n.mintA.extensions.feeConfig,l,!0),ke(f,n.mintB.extensions.feeConfig,l,!0)],{account:w}=this.scope,d=this.createTxBuilder(),[P,g]=[new A(n.mintA.address),new A(n.mintB.address)],y=P.equals(Le),h=g.equals(Le),T,x,{account:C,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new A(n.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:!y,checkCreateATAOwner:!1});T=C,L&&d.addInstruction(L);let{account:M,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new A(n.mintB.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});x=M,N&&d.addInstruction(N),(!T||!x)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",w.tokenAccounts);let R=await w.getCreatedTokenAccount({mint:new A(n.lpMint.address)});R||this.logAndCreateError("cannot found lp token account","tokenAccounts",w.tokenAccounts);let I=await this.getCpmmPoolKeys(n.id);return d.addInstruction({instructions:[Kn(new A(n.programId),this.scope.ownerPubKey,new A(I.authority),new A(n.id),R,T,x,new A(I.vault.A),new A(I.vault.B),P,g,new A(n.lpMint.address),r,u.sub((q=m.fee)!=null?q:new Y(0)),f.sub((H=p.fee)!=null?H:new Y(0)))],instructionTypes:[ce.CpmmWithdrawLiquidity],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]}),d.addCustomComputeBudget(o),d.versionBuild({txVersion:s})}async swap(t){var x,C,N,R,I,q;let{poolInfo:n,baseIn:r,swapResult:i,slippage:o=0,config:s,computeBudgetConfig:a,txVersion:c}=t,{bypassAssociatedCheck:u,checkCreateATAOwner:f}=V({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),l=this.createTxBuilder(),[m,p]=[new A(n.mintA.address),new A(n.mintB.address)],w=await this.scope.account.getCreatedTokenAccount({programId:new A((x=n.mintA.programId)!=null?x:be),mint:m,associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({programId:new A((C=n.mintB.programId)!=null?C:be),mint:p,associatedOnly:!1});i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new Y((1-o)*1e4)).div(new Y(1e4));let L=await this.scope.account.handleTokenAccount({side:r?"in":"out",amount:r?i.sourceAmountSwapped:i.destinationAmountSwapped,programId:new A(n.mintA.programId),mint:m,tokenAccount:w,bypassAssociatedCheck:u,checkCreateATAOwner:f}),{tokenAccount:P}=L,g=ae(L,["tokenAccount"]);l.addInstruction(g);let M=await this.scope.account.handleTokenAccount({side:r?"out":"in",amount:r?i.destinationAmountSwapped:i.sourceAmountSwapped,programId:new A(n.mintB.programId),mint:p,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:f}),{tokenAccount:y}=M,h=ae(M,["tokenAccount"]);l.addInstruction(h),!P&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getCpmmPoolKeys(n.id);return l.addInstruction({instructions:[r?Dn(new A(n.programId),this.scope.ownerPubKey,new A(T.authority),new A(T.config.id),new A(n.id),P,y,new A(T.vault.A),new A(T.vault.B),new A((N=n.mintA.programId)!=null?N:be),new A((R=n.mintB.programId)!=null?R:be),m,p,ot(new A(n.programId),new A(n.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Rn(new A(n.programId),this.scope.ownerPubKey,new A(T.authority),new A(T.config.id),new A(n.id),y,P,new A(T.vault.B),new A(T.vault.A),new A((I=n.mintB.programId)!=null?I:be),new A((q=n.mintA.programId)!=null?q:be),p,m,ot(new A(n.programId),new A(n.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[r?ce.CpmmSwapBaseIn:ce.CpmmSwapBaseOut]}),l.addCustomComputeBudget(a),l.versionBuild({txVersion:c})}computePairAmount({poolInfo:t,baseReserve:n,quoteReserve:r,amount:i,slippage:o,epochInfo:s,baseIn:a}){var y,h,T,x,C,L,M,N;let c=1-Number(o.toSignificant())/100,u=new Y(new re(i).mul(10**t[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),f=ke(u,t[a?"mintA":"mintB"].extensions.feeConfig,s,!1),l=u.sub((y=f.fee)!=null?y:new Y(0)),m=new Y(new re(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,re.ROUND_DOWN));this.logDebug("baseReserve:",n.toString(),"quoteReserve:",r.toString()),this.logDebug("tokenIn:",a?t.mintA.symbol:t.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(T=(h=f.fee)==null?void 0:h.toString())!=null?T:0,"anotherToken:",a?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let w=l.mul(m).div(p==="base"?n:r),d={amount:Pt,fee:void 0,expirationTime:void 0};if(!l.isZero()){let R=Ei(w,n,r,m);this.logDebug("lpAmountData:",{amountA:R.amountA.toString(),amountB:R.amountB.toString()}),d=ke(R[a?"amountB":"amountA"],t[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let P=new se(new Y(1)).add(o),g=ke(P.mul(d.amount.sub((x=d.fee)!=null?x:new Y(0))).quotient,t[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",d.amount.toString(),"anotherAmountFee:",(L=(C=d.fee)==null?void 0:C.toString())!=null?L:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(N=(M=g.fee)==null?void 0:M.toString())!=null?N:0),{inputAmountFee:f,anotherAmount:d,maxAnotherAmount:g,liquidity:w}}};function Ei(e,t,n,r){let i=e.mul(t).div(r);!i.isZero()&&!e.mul(t).mod(r).isZero()&&(i=i.add(new Y(1)));let o=e.mul(n).div(r);return!o.isZero()&&!e.mul(n).mod(r).isZero()&&(o=o.add(new Y(1))),{amountA:i,amountB:o}}export{Mt as default};
|
|
2
2
|
//# sourceMappingURL=cpmm.mjs.map
|