@extra2001/compute-engine
Version:
Symbolic computing and numeric evaluations for JavaScript and Node.js
11 lines • 538 kB
JavaScript
/** Compute Engine 0.28.0 */
(function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ComputeEngine = {}));})(this, (function (exports) { 'use strict';
var ComputeEngine=(()=>{var ms=Object.defineProperty;var ac=Object.getOwnPropertyDescriptor;var uc=Object.getOwnPropertyNames;var lc=Object.prototype.hasOwnProperty;var fc=(e,n)=>{for(var i in n)ms(e,i,{get:n[i],enumerable:!0})},cc=(e,n,i,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of uc(n))!lc.call(e,r)&&r!==i&&ms(e,r,{get:()=>n[r],enumerable:!(t=ac(n,r))||t.enumerable});return e};var pc=e=>cc(ms({},"__esModule",{value:!0}),e);var Mm={};fc(Mm,{ComputeEngine:()=>mt,version:()=>Rm});var _e=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},je=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},dc=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var i=e*e;return i*(i*(i*(i*(i*(i*(i*(i/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},mc=function(e,n){var i=Math.abs(e),t=Math.abs(n);return i<3e3&&t<3e3?Math.sqrt(i*i+t*t):(i<t?(i=t,t=e/n):t=n/e,i*Math.sqrt(1+t*t))},Si=function(){throw SyntaxError("Invalid Param")};function hs(e,n){var i=Math.abs(e),t=Math.abs(n);return e===0?Math.log(t):n===0?Math.log(i):i<3e3&&t<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var hc=function(e,n){var i={re:0,im:0};if(e==null)i.re=i.im=0;else if(n!==void 0)i.re=e,i.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)i.re=e.re,i.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return $.INFINITY;i.re=e.abs*Math.cos(e.arg),i.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return $.INFINITY;i.re=e.r*Math.cos(e.phi),i.im=e.r*Math.sin(e.phi)}else e.length===2?(i.re=e[0],i.im=e[1]):Si();break;case"string":i.im=i.re=0;var t=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,s=0;t===null&&Si();for(var o=0;o<t.length;o++){var a=t[o];a===" "||a===" "||a===`
`||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Si(),t[o+1]!==" "&&!isNaN(Number(t[o+1]))?(i.im+=parseFloat((s%2?"-":"")+t[o+1]),o++):i.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Si(),t[o+1]==="i"||t[o+1]==="I"?(i.im+=parseFloat((s%2?"-":"")+a),o++):i.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Si();break;case"number":i.im=0,i.re=e;break;default:Si()}return isNaN(i.re)||isNaN(i.im),i},$=class e{constructor(n,i){this.re=0,this.im=0;var t=hc(n,i);this.re=t.re,this.im=t.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,i){var t=new e(n,i);return this.isInfinite()&&t.isInfinite()?e.NAN:this.isInfinite()||t.isInfinite()?e.INFINITY:new e(this.re+t.re,this.im+t.im)}sub(n,i){var t=new e(n,i);return this.isInfinite()&&t.isInfinite()?e.NAN:this.isInfinite()||t.isInfinite()?e.INFINITY:new e(this.re-t.re,this.im-t.im)}mul(n,i){var t=new e(n,i);return this.isInfinite()&&t.isZero()||this.isZero()&&t.isInfinite()?e.NAN:this.isInfinite()||t.isInfinite()?e.INFINITY:t.im===0&&this.im===0?new e(this.re*t.re,0):new e(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)}div(n,i){var t=new e(n,i);if(this.isZero()&&t.isZero()||this.isInfinite()&&t.isInfinite())return e.NAN;if(this.isInfinite()||t.isZero())return e.INFINITY;if(this.isZero()||t.isInfinite())return e.ZERO;n=this.re,i=this.im;var r=t.re,s=t.im,o,a;return s===0?new e(n/r,i/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new e((n*a+i)/o,(i*a-n)/o)):(a=s/r,o=s*a+r,new e((n+i*a)/o,(i-n*a)/o))}pow(n,i){var t=new e(n,i);if(n=this.re,i=this.im,t.isZero())return e.ONE;if(t.im===0){if(i===0&&n>0)return new e(Math.pow(n,t.re),0);if(n===0)switch((t.re%4+4)%4){case 0:return new e(Math.pow(i,t.re),0);case 1:return new e(0,Math.pow(i,t.re));case 2:return new e(-Math.pow(i,t.re),0);case 3:return new e(0,-Math.pow(i,t.re))}}if(n===0&&i===0&&t.re>0&&t.im>=0)return e.ZERO;var r=Math.atan2(i,n),s=hs(n,i);return n=Math.exp(t.re*s-t.im*r),i=t.im*s+t.re*r,new e(n*Math.cos(i),n*Math.sin(i))}sqrt(){var n=this.re,i=this.im,t=this.abs(),r,s;if(n>=0){if(i===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(t+n))}else r=Math.abs(i)/Math.sqrt(2*(t-n));return n<=0?s=.5*Math.sqrt(2*(t-n)):s=Math.abs(i)/Math.sqrt(2*(t+n)),new e(r,i<0?-s:s)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,i=this.im;return new e(Math.expm1(n)*Math.cos(i)+dc(i),Math.exp(n)*Math.sin(i))}log(){var n=this.re,i=this.im;return i===0&&n>0,new e(hs(n,i),Math.atan2(i,n))}abs(){return mc(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,i=this.im;return new e(Math.sin(n)*_e(i),Math.cos(n)*je(i))}cos(){var n=this.re,i=this.im;return new e(Math.cos(n)*_e(i),-Math.sin(n)*je(i))}tan(){var n=2*this.re,i=2*this.im,t=Math.cos(n)+_e(i);return new e(Math.sin(n)/t,je(i)/t)}cot(){var n=2*this.re,i=2*this.im,t=Math.cos(n)-_e(i);return new e(-Math.sin(n)/t,je(i)/t)}sec(){var n=this.re,i=this.im,t=.5*_e(2*i)+.5*Math.cos(2*n);return new e(Math.cos(n)*_e(i)/t,Math.sin(n)*je(i)/t)}csc(){var n=this.re,i=this.im,t=.5*_e(2*i)-.5*Math.cos(2*n);return new e(Math.sin(n)*_e(i)/t,-Math.cos(n)*je(i)/t)}asin(){var n=this.re,i=this.im,t=new e(i*i-n*n+1,-2*n*i).sqrt(),r=new e(t.re-i,t.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,i=this.im,t=new e(i*i-n*n+1,-2*n*i).sqrt(),r=new e(t.re-i,t.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,i=this.im;if(n===0){if(i===1)return new e(0,1/0);if(i===-1)return new e(0,-1/0)}var t=n*n+(1-i)*(1-i),r=new e((1-i*i-n*n)/t,-2*n/t).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,i=this.im;if(i===0)return new e(Math.atan2(1,n),0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).atan():new e(n!==0?n/0:0,i!==0?-i/0:0).atan()}asec(){var n=this.re,i=this.im;if(n===0&&i===0)return new e(0,1/0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).acos():new e(n!==0?n/0:0,i!==0?-i/0:0).acos()}acsc(){var n=this.re,i=this.im;if(n===0&&i===0)return new e(Math.PI/2,1/0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).asin():new e(n!==0?n/0:0,i!==0?-i/0:0).asin()}sinh(){var n=this.re,i=this.im;return new e(je(n)*Math.cos(i),_e(n)*Math.sin(i))}cosh(){var n=this.re,i=this.im;return new e(_e(n)*Math.cos(i),je(n)*Math.sin(i))}tanh(){var n=2*this.re,i=2*this.im,t=_e(n)+Math.cos(i);return new e(je(n)/t,Math.sin(i)/t)}coth(){var n=2*this.re,i=2*this.im,t=_e(n)-Math.cos(i);return new e(je(n)/t,-Math.sin(i)/t)}csch(){var n=this.re,i=this.im,t=Math.cos(2*i)-_e(2*n);return new e(-2*je(n)*Math.cos(i)/t,2*_e(n)*Math.sin(i)/t)}sech(){var n=this.re,i=this.im,t=Math.cos(2*i)+_e(2*n);return new e(2*_e(n)*Math.cos(i)/t,-2*je(n)*Math.sin(i)/t)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var i=this.asin();return this.re=-this.im,this.im=n,n=i.re,i.re=-i.im,i.im=n,i}acosh(){var n=this.acos();if(n.im<=0){var i=n.re;n.re=-n.im,n.im=i}else{var i=n.im;n.im=-n.re,n.re=i}return n}atanh(){var n=this.re,i=this.im,t=n>1&&i===0,r=1-n,s=1+n,o=r*r+i*i,a=o!==0?new e((s*r-i*i)/o,(i*r+s*i)/o):new e(n!==-1?n/0:0,i!==0?i/0:0),u=a.re;return a.re=hs(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,t&&(a.im=-a.im),a}acoth(){var n=this.re,i=this.im;if(n===0&&i===0)return new e(0,Math.PI/2);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).atanh():new e(n!==0?n/0:0,i!==0?-i/0:0).atanh()}acsch(){var n=this.re,i=this.im;if(i===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).asinh():new e(n!==0?n/0:0,i!==0?-i/0:0).asinh()}asech(){var n=this.re,i=this.im;if(this.isZero())return e.INFINITY;var t=n*n+i*i;return t!==0?new e(n/t,-i/t).acosh():new e(n!==0?n/0:0,i!==0?-i/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,i=this.im,t=n*n+i*i;return new e(n/t,-i/t)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,i){var t=new e(n,i);return Math.abs(t.re-this.re)<=e.EPSILON&&Math.abs(t.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,i=this.im,t="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(i)<e.EPSILON&&(i=0),i===0?t+n:(n!==0?(t+=n,t+=" ",i<0?(i=-i,t+="-"):t+="+",t+=" "):i<0&&(i=-i,t+="-"),i!==1&&(t+=i),t+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};$.ZERO=new $(0,0);$.ONE=new $(1,0);$.I=new $(0,1);$.PI=new $(Math.PI,0);$.E=new $(Math.E,0);$.INFINITY=new $(1/0,1/0);$.NAN=new $(NaN,NaN);$.EPSILON=1e-15;var _i=9e15,$n=1e9,gs="0123456789abcdef",ur="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",xs={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-_i,maxE:_i,crypto:!1},ga,Sn,w=!0,cr="[DecimalError] ",qn=cr+"Invalid argument: ",xa=cr+"Precision limit exceeded",ya=cr+"crypto unavailable",ba="[object Decimal]",Ie=Math.floor,ge=Math.pow,gc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,xc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,yc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ea=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tn=1e7,B=7,bc=9007199254740991,Ec=ur.length-1,ys=lr.length-1,g={toStringTag:ba};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),S(e)};g.ceil=function(){return S(new this.constructor(this),this.e+1,2)};g.clampedTo=g.clamp=function(e,n){var i,t=this,r=t.constructor;if(e=new r(e),n=new r(n),!e.s||!n.s)return new r(NaN);if(e.gt(n))throw Error(qn+n);return i=t.cmp(e),i<0?e:t.cmp(n)>0?n:new r(t)};g.comparedTo=g.cmp=function(e){var n,i,t,r,s=this,o=s.d,a=(e=new s.constructor(e)).d,u=s.s,l=e.s;if(!o||!a)return!u||!l?NaN:u!==l?u:o===a?0:!o^u<0?1:-1;if(!o[0]||!a[0])return o[0]?u:a[0]?-l:0;if(u!==l)return u;if(s.e!==e.e)return s.e>e.e^u<0?1:-1;for(t=o.length,r=a.length,n=0,i=t<r?t:r;n<i;++n)if(o[n]!==a[n])return o[n]>a[n]^u<0?1:-1;return t===r?0:t>r^u<0?1:-1};g.cosine=g.cos=function(){var e,n,i=this,t=i.constructor;return i.d?i.d[0]?(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+B,t.rounding=1,i=Nc(t,_a(t,i)),t.precision=e,t.rounding=n,S(Sn==2||Sn==3?i.neg():i,e,n,!0)):new t(1):new t(NaN)};g.cubeRoot=g.cbrt=function(){var e,n,i,t,r,s,o,a,u,l,f=this,c=f.constructor;if(!f.isFinite()||f.isZero())return new c(f);for(w=!1,s=f.s*ge(f.s*f,1/3),!s||Math.abs(s)==1/0?(i=ve(f.d),e=f.e,(s=(e-i.length+1)%3)&&(i+=s==1||s==-2?"0":"00"),s=ge(i,1/3),e=Ie((e+1)/3)-(e%3==(e<0?-1:2)),s==1/0?i="5e"+e:(i=s.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),t=new c(i),t.s=f.s):t=new c(s.toString()),o=(e=c.precision)+3;;)if(a=t,u=a.times(a).times(a),l=u.plus(f),t=j(l.plus(f).times(a),l.plus(u),o+2,1),ve(a.d).slice(0,o)===(i=ve(t.d)).slice(0,o))if(i=i.slice(o-3,o+1),i=="9999"||!r&&i=="4999"){if(!r&&(S(a,e+1,0),a.times(a).times(a).eq(f))){t=a;break}o+=4,r=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(S(t,e+1,1),n=!t.times(t).times(t).eq(f));break}return w=!0,S(t,e,c.rounding,n)};g.decimalPlaces=g.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-Ie(this.e/B))*B,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};g.dividedBy=g.div=function(e){return j(this,new this.constructor(e))};g.dividedToIntegerBy=g.divToInt=function(e){var n=this,i=n.constructor;return S(j(n,new i(e),0,1,1),i.precision,i.rounding)};g.equals=g.eq=function(e){return this.cmp(e)===0};g.floor=function(){return S(new this.constructor(this),this.e+1,3)};g.greaterThan=g.gt=function(e){return this.cmp(e)>0};g.greaterThanOrEqualTo=g.gte=function(e){var n=this.cmp(e);return n==1||n===0};g.hyperbolicCosine=g.cosh=function(){var e,n,i,t,r,s=this,o=s.constructor,a=new o(1);if(!s.isFinite())return new o(s.s?1/0:NaN);if(s.isZero())return a;i=o.precision,t=o.rounding,o.precision=i+Math.max(s.e,s.sd())+4,o.rounding=1,r=s.d.length,r<32?(e=Math.ceil(r/3),n=(1/dr(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),s=Ii(o,1,s.times(n),new o(1),!0);for(var u,l=e,f=new o(8);l--;)u=s.times(s),s=a.minus(u.times(f.minus(u.times(f))));return S(s,o.precision=i,o.rounding=t,!0)};g.hyperbolicSine=g.sinh=function(){var e,n,i,t,r=this,s=r.constructor;if(!r.isFinite()||r.isZero())return new s(r);if(n=s.precision,i=s.rounding,s.precision=n+Math.max(r.e,r.sd())+4,s.rounding=1,t=r.d.length,t<3)r=Ii(s,2,r,r,!0);else{e=1.4*Math.sqrt(t),e=e>16?16:e|0,r=r.times(1/dr(5,e)),r=Ii(s,2,r,r,!0);for(var o,a=new s(5),u=new s(16),l=new s(20);e--;)o=r.times(r),r=r.times(a.plus(o.times(u.times(o).plus(l))))}return s.precision=n,s.rounding=i,S(r,n,i,!0)};g.hyperbolicTangent=g.tanh=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+7,t.rounding=1,j(i.sinh(),i.cosh(),t.precision=e,t.rounding=n)):new t(i.s)};g.inverseCosine=g.acos=function(){var e=this,n=e.constructor,i=e.abs().cmp(1),t=n.precision,r=n.rounding;return i!==-1?i===0?e.isNeg()?fn(n,t,r):new n(0):new n(NaN):e.isZero()?fn(n,t+4,r).times(.5):(n.precision=t+6,n.rounding=1,e=new n(1).minus(e).div(e.plus(1)).sqrt().atan(),n.precision=t,n.rounding=r,e.times(2))};g.inverseHyperbolicCosine=g.acosh=function(){var e,n,i=this,t=i.constructor;return i.lte(1)?new t(i.eq(1)?0:NaN):i.isFinite()?(e=t.precision,n=t.rounding,t.precision=e+Math.max(Math.abs(i.e),i.sd())+4,t.rounding=1,w=!1,i=i.times(i).minus(1).sqrt().plus(i),w=!0,t.precision=e,t.rounding=n,i.ln()):new t(i)};g.inverseHyperbolicSine=g.asinh=function(){var e,n,i=this,t=i.constructor;return!i.isFinite()||i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+2*Math.max(Math.abs(i.e),i.sd())+6,t.rounding=1,w=!1,i=i.times(i).plus(1).sqrt().plus(i),w=!0,t.precision=e,t.rounding=n,i.ln())};g.inverseHyperbolicTangent=g.atanh=function(){var e,n,i,t,r=this,s=r.constructor;return r.isFinite()?r.e>=0?new s(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=s.precision,n=s.rounding,t=r.sd(),Math.max(t,e)<2*-r.e-1?S(new s(r),e,n,!0):(s.precision=i=t-r.e,r=j(r.plus(1),new s(1).minus(r),i+e,1),s.precision=e+4,s.rounding=1,r=r.ln(),s.precision=e,s.rounding=n,r.times(.5))):new s(NaN)};g.inverseSine=g.asin=function(){var e,n,i,t,r=this,s=r.constructor;return r.isZero()?new s(r):(n=r.abs().cmp(1),i=s.precision,t=s.rounding,n!==-1?n===0?(e=fn(s,i+4,t).times(.5),e.s=r.s,e):new s(NaN):(s.precision=i+6,s.rounding=1,r=r.div(new s(1).minus(r.times(r)).sqrt().plus(1)).atan(),s.precision=i,s.rounding=t,r.times(2)))};g.inverseTangent=g.atan=function(){var e,n,i,t,r,s,o,a,u,l=this,f=l.constructor,c=f.precision,p=f.rounding;if(l.isFinite()){if(l.isZero())return new f(l);if(l.abs().eq(1)&&c+4<=ys)return o=fn(f,c+4,p).times(.25),o.s=l.s,o}else{if(!l.s)return new f(NaN);if(c+4<=ys)return o=fn(f,c+4,p).times(.5),o.s=l.s,o}for(f.precision=a=c+10,f.rounding=1,i=Math.min(28,a/B+2|0),e=i;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(w=!1,n=Math.ceil(a/B),t=1,u=l.times(l),o=new f(l),r=l;e!==-1;)if(r=r.times(u),s=o.minus(r.div(t+=2)),r=r.times(u),o=s.plus(r.div(t+=2)),o.d[n]!==void 0)for(e=n;o.d[e]===s.d[e]&&e--;);return i&&(o=o.times(2<<i-1)),w=!0,S(o,f.precision=c,f.rounding=p,!0)};g.isFinite=function(){return!!this.d};g.isInteger=g.isInt=function(){return!!this.d&&Ie(this.e/B)>this.d.length-2};g.isNaN=function(){return!this.s};g.isNegative=g.isNeg=function(){return this.s<0};g.isPositive=g.isPos=function(){return this.s>0};g.isZero=function(){return!!this.d&&this.d[0]===0};g.lessThan=g.lt=function(e){return this.cmp(e)<0};g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1};g.logarithm=g.log=function(e){var n,i,t,r,s,o,a,u,l=this,f=l.constructor,c=f.precision,p=f.rounding,m=5;if(e==null)e=new f(10),n=!0;else{if(e=new f(e),i=e.d,e.s<0||!i||!i[0]||e.eq(1))return new f(NaN);n=e.eq(10)}if(i=l.d,l.s<0||!i||!i[0]||l.eq(1))return new f(i&&!i[0]?-1/0:l.s!=1?NaN:i?0:1/0);if(n)if(i.length>1)s=!0;else{for(r=i[0];r%10===0;)r/=10;s=r!==1}if(w=!1,a=c+m,o=Fn(l,a),t=n?fr(f,a+10):Fn(e,a),u=j(o,t,a,1),gt(u.d,r=c,p))do if(a+=10,o=Fn(l,a),t=n?fr(f,a+10):Fn(e,a),u=j(o,t,a,1),!s){+ve(u.d).slice(r+1,r+15)+1==1e14&&(u=S(u,c+1,0));break}while(gt(u.d,r+=10,p));return w=!0,S(u,c,p)};g.minus=g.sub=function(e){var n,i,t,r,s,o,a,u,l,f,c,p,m=this,y=m.constructor;if(e=new y(e),!m.d||!e.d)return!m.s||!e.s?e=new y(NaN):m.d?e.s=-e.s:e=new y(e.d||m.s!==e.s?m:NaN),e;if(m.s!=e.s)return e.s=-e.s,m.plus(e);if(l=m.d,p=e.d,a=y.precision,u=y.rounding,!l[0]||!p[0]){if(p[0])e.s=-e.s;else if(l[0])e=new y(m);else return new y(u===3?-0:0);return w?S(e,a,u):e}if(i=Ie(e.e/B),f=Ie(m.e/B),l=l.slice(),s=f-i,s){for(c=s<0,c?(n=l,s=-s,o=p.length):(n=p,i=f,o=l.length),t=Math.max(Math.ceil(a/B),o)+2,s>t&&(s=t,n.length=1),n.reverse(),t=s;t--;)n.push(0);n.reverse()}else{for(t=l.length,o=p.length,c=t<o,c&&(o=t),t=0;t<o;t++)if(l[t]!=p[t]){c=l[t]<p[t];break}s=0}for(c&&(n=l,l=p,p=n,e.s=-e.s),o=l.length,t=p.length-o;t>0;--t)l[o++]=0;for(t=p.length;t>s;){if(l[--t]<p[t]){for(r=t;r&&l[--r]===0;)l[r]=tn-1;--l[r],l[t]+=tn}l[t]-=p[t]}for(;l[--o]===0;)l.pop();for(;l[0]===0;l.shift())--i;return l[0]?(e.d=l,e.e=pr(l,i),w?S(e,a,u):e):new y(u===3?-0:0)};g.modulo=g.mod=function(e){var n,i=this,t=i.constructor;return e=new t(e),!i.d||!e.s||e.d&&!e.d[0]?new t(NaN):!e.d||i.d&&!i.d[0]?S(new t(i),t.precision,t.rounding):(w=!1,t.modulo==9?(n=j(i,e.abs(),0,3,1),n.s*=e.s):n=j(i,e,0,t.modulo,1),n=n.times(e),w=!0,i.minus(n))};g.naturalExponential=g.exp=function(){return bs(this)};g.naturalLogarithm=g.ln=function(){return Fn(this)};g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s,S(e)};g.plus=g.add=function(e){var n,i,t,r,s,o,a,u,l,f,c=this,p=c.constructor;if(e=new p(e),!c.d||!e.d)return!c.s||!e.s?e=new p(NaN):c.d||(e=new p(e.d||c.s===e.s?c:NaN)),e;if(c.s!=e.s)return e.s=-e.s,c.minus(e);if(l=c.d,f=e.d,a=p.precision,u=p.rounding,!l[0]||!f[0])return f[0]||(e=new p(c)),w?S(e,a,u):e;if(s=Ie(c.e/B),t=Ie(e.e/B),l=l.slice(),r=s-t,r){for(r<0?(i=l,r=-r,o=f.length):(i=f,t=s,o=l.length),s=Math.ceil(a/B),o=s>o?s+1:o+1,r>o&&(r=o,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(o=l.length,r=f.length,o-r<0&&(r=o,i=f,f=l,l=i),n=0;r;)n=(l[--r]=l[r]+f[r]+n)/tn|0,l[r]%=tn;for(n&&(l.unshift(n),++t),o=l.length;l[--o]==0;)l.pop();return e.d=l,e.e=pr(l,t),w?S(e,a,u):e};g.precision=g.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(qn+e);return i.d?(n=Na(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};g.round=function(){var e=this,n=e.constructor;return S(new n(e),e.e+1,n.rounding)};g.sine=g.sin=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+B,t.rounding=1,i=Tc(t,_a(t,i)),t.precision=e,t.rounding=n,S(Sn>2?i.neg():i,e,n,!0)):new t(NaN)};g.squareRoot=g.sqrt=function(){var e,n,i,t,r,s,o=this,a=o.d,u=o.e,l=o.s,f=o.constructor;if(l!==1||!a||!a[0])return new f(!l||l<0&&(!a||a[0])?NaN:a?o:1/0);for(w=!1,l=Math.sqrt(+o),l==0||l==1/0?(n=ve(a),(n.length+u)%2==0&&(n+="0"),l=Math.sqrt(n),u=Ie((u+1)/2)-(u<0||u%2),l==1/0?n="5e"+u:(n=l.toExponential(),n=n.slice(0,n.indexOf("e")+1)+u),t=new f(n)):t=new f(l.toString()),i=(u=f.precision)+3;;)if(s=t,t=s.plus(j(o,s,i+2,1)).times(.5),ve(s.d).slice(0,i)===(n=ve(t.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!r&&n=="4999"){if(!r&&(S(s,u+1,0),s.times(s).eq(o))){t=s;break}i+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(S(t,u+1,1),e=!t.times(t).eq(o));break}return w=!0,S(t,u,f.rounding,e)};g.tangent=g.tan=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+10,t.rounding=1,i=i.sin(),i.s=1,i=j(i,new t(1).minus(i.times(i)).sqrt(),e+10,0),t.precision=e,t.rounding=n,S(Sn==2||Sn==4?i.neg():i,e,n,!0)):new t(NaN)};g.times=g.mul=function(e){var n,i,t,r,s,o,a,u,l,f=this,c=f.constructor,p=f.d,m=(e=new c(e)).d;if(e.s*=f.s,!p||!p[0]||!m||!m[0])return new c(!e.s||p&&!p[0]&&!m||m&&!m[0]&&!p?NaN:!p||!m?e.s/0:e.s*0);for(i=Ie(f.e/B)+Ie(e.e/B),u=p.length,l=m.length,u<l&&(s=p,p=m,m=s,o=u,u=l,l=o),s=[],o=u+l,t=o;t--;)s.push(0);for(t=l;--t>=0;){for(n=0,r=u+t;r>t;)a=s[r]+m[t]*p[r-t-1]+n,s[r--]=a%tn|0,n=a/tn|0;s[r]=(s[r]+n)%tn|0}for(;!s[--o];)s.pop();return n?++i:s.shift(),e.d=s,e.e=pr(s,i),w?S(e,c.precision,c.rounding):e};g.toBinary=function(e,n){return Es(this,2,e,n)};g.toDecimalPlaces=g.toDP=function(e,n){var i=this,t=i.constructor;return i=new t(i),e===void 0?i:(Me(e,0,$n),n===void 0?n=t.rounding:Me(n,0,8),S(i,e+i.e+1,n))};g.toExponential=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=cn(t,!0):(Me(e,0,$n),n===void 0?n=r.rounding:Me(n,0,8),t=S(new r(t),e+1,n),i=cn(t,!0,e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};g.toFixed=function(e,n){var i,t,r=this,s=r.constructor;return e===void 0?i=cn(r):(Me(e,0,$n),n===void 0?n=s.rounding:Me(n,0,8),t=S(new s(r),e+r.e+1,n),i=cn(t,!1,e+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};g.toFraction=function(e){var n,i,t,r,s,o,a,u,l,f,c,p,m=this,y=m.d,x=m.constructor;if(!y)return new x(m);if(l=i=new x(1),t=u=new x(0),n=new x(t),s=n.e=Na(y)-m.e-1,o=s%B,n.d[0]=ge(10,o<0?B+o:o),e==null)e=s>0?n:l;else{if(a=new x(e),!a.isInt()||a.lt(l))throw Error(qn+a);e=a.gt(n)?s>0?n:l:a}for(w=!1,a=new x(ve(y)),f=x.precision,x.precision=s=y.length*B*2;c=j(a,n,0,1,1),r=i.plus(c.times(t)),r.cmp(e)!=1;)i=t,t=r,r=l,l=u.plus(c.times(r)),u=r,r=n,n=a.minus(c.times(r)),a=r;return r=j(e.minus(i),t,0,1,1),u=u.plus(r.times(l)),i=i.plus(r.times(t)),u.s=l.s=m.s,p=j(l,t,s,1).minus(m).abs().cmp(j(u,i,s,1).minus(m).abs())<1?[l,t]:[u,i],x.precision=f,w=!0,p};g.toHexadecimal=g.toHex=function(e,n){return Es(this,16,e,n)};g.toNearest=function(e,n){var i=this,t=i.constructor;if(i=new t(i),e==null){if(!i.d)return i;e=new t(1),n=t.rounding}else{if(e=new t(e),n===void 0?n=t.rounding:Me(n,0,8),!i.d)return e.s?i:e;if(!e.d)return e.s&&(e.s=i.s),e}return e.d[0]?(w=!1,i=j(i,e,0,n,1).times(e),w=!0,S(i)):(e.s=i.s,i=e),i};g.toNumber=function(){return+this};g.toOctal=function(e,n){return Es(this,8,e,n)};g.toPower=g.pow=function(e){var n,i,t,r,s,o,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(ge(+a,l));if(a=new u(a),a.eq(1))return a;if(t=u.precision,s=u.rounding,e.eq(1))return S(a,t,s);if(n=Ie(e.e/B),n>=e.d.length-1&&(i=l<0?-l:l)<=bc)return r=va(u,a,i,t),e.s<0?new u(1).div(r):S(r,t,s);if(o=a.s,o<0){if(n<e.d.length-1)return new u(NaN);if(e.d[n]&1||(o=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=o,a}return i=ge(+a,l),n=i==0||!isFinite(i)?Ie(l*(Math.log("0."+ve(a.d))/Math.LN10+a.e+1)):new u(i+"").e,n>u.maxE+1||n<u.minE-1?new u(n>0?o/0:0):(w=!1,u.rounding=a.s=1,i=Math.min(12,(n+"").length),r=bs(e.times(Fn(a,t+i)),t),r.d&&(r=S(r,t+5,1),gt(r.d,t,s)&&(n=t+10,r=S(bs(e.times(Fn(a,n+i)),n),n+5,1),+ve(r.d).slice(t+1,t+15)+1==1e14&&(r=S(r,t+1,0)))),r.s=o,w=!0,u.rounding=s,S(r,t,s))};g.toPrecision=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=cn(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(Me(e,1,$n),n===void 0?n=r.rounding:Me(n,0,8),t=S(new r(t),e,n),i=cn(t,e<=t.e||t.e<=r.toExpNeg,e)),t.isNeg()&&!t.isZero()?"-"+i:i};g.toSignificantDigits=g.toSD=function(e,n){var i=this,t=i.constructor;return e===void 0?(e=t.precision,n=t.rounding):(Me(e,1,$n),n===void 0?n=t.rounding:Me(n,0,8)),S(new t(i),e,n)};g.toString=function(){var e=this,n=e.constructor,i=cn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};g.truncated=g.trunc=function(){return S(new this.constructor(this),this.e+1,1)};g.valueOf=g.toJSON=function(){var e=this,n=e.constructor,i=cn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function ve(e){var n,i,t,r=e.length-1,s="",o=e[0];if(r>0){for(s+=o,n=1;n<r;n++)t=e[n]+"",i=B-t.length,i&&(s+=Ln(i)),s+=t;o=e[n],t=o+"",i=B-t.length,i&&(s+=Ln(i))}else if(o===0)return"0";for(;o%10===0;)o/=10;return s+o}function Me(e,n,i){if(e!==~~e||e<n||e>i)throw Error(qn+e)}function gt(e,n,i,t){var r,s,o,a;for(s=e[0];s>=10;s/=10)--n;return--n<0?(n+=B,r=0):(r=Math.ceil((n+1)/B),n%=B),s=ge(10,B-n),a=e[r]%s|0,t==null?n<3?(n==0?a=a/100|0:n==1&&(a=a/10|0),o=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):o=(i<4&&a+1==s||i>3&&a+1==s/2)&&(e[r+1]/s/100|0)==ge(10,n-2)-1||(a==s/2||a==0)&&(e[r+1]/s/100|0)==0:n<4?(n==0?a=a/1e3|0:n==1?a=a/100|0:n==2&&(a=a/10|0),o=(t||i<4)&&a==9999||!t&&i>3&&a==4999):o=((t||i<4)&&a+1==s||!t&&i>3&&a+1==s/2)&&(e[r+1]/s/1e3|0)==ge(10,n-3)-1,o}function or(e,n,i){for(var t,r=[0],s,o=0,a=e.length;o<a;){for(s=r.length;s--;)r[s]*=n;for(r[0]+=gs.indexOf(e.charAt(o++)),t=0;t<r.length;t++)r[t]>i-1&&(r[t+1]===void 0&&(r[t+1]=0),r[t+1]+=r[t]/i|0,r[t]%=i)}return r.reverse()}function Nc(e,n){var i,t,r;if(n.isZero())return n;t=n.d.length,t<32?(i=Math.ceil(t/3),r=(1/dr(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,n=Ii(e,1,n.times(r),new e(1));for(var s=i;s--;){var o=n.times(n);n=o.times(o).minus(o).times(8).plus(1)}return e.precision-=i,n}var j=function(){function e(t,r,s){var o,a=0,u=t.length;for(t=t.slice();u--;)o=t[u]*r+a,t[u]=o%s|0,a=o/s|0;return a&&t.unshift(a),t}function n(t,r,s,o){var a,u;if(s!=o)u=s>o?1:-1;else for(a=u=0;a<s;a++)if(t[a]!=r[a]){u=t[a]>r[a]?1:-1;break}return u}function i(t,r,s,o){for(var a=0;s--;)t[s]-=a,a=t[s]<r[s]?1:0,t[s]=a*o+t[s]-r[s];for(;!t[0]&&t.length>1;)t.shift()}return function(t,r,s,o,a,u){var l,f,c,p,m,y,x,E,_,R,I,q,Ee,Ne,Ti,tr,ht,ps,nn,rr,sr=t.constructor,ds=t.s==r.s?1:-1,Se=t.d,W=r.d;if(!Se||!Se[0]||!W||!W[0])return new sr(!t.s||!r.s||(Se?W&&Se[0]==W[0]:!W)?NaN:Se&&Se[0]==0||!W?ds*0:ds/0);for(u?(m=1,f=t.e-r.e):(u=tn,m=B,f=Ie(t.e/m)-Ie(r.e/m)),nn=W.length,ht=Se.length,_=new sr(ds),R=_.d=[],c=0;W[c]==(Se[c]||0);c++);if(W[c]>(Se[c]||0)&&f--,s==null?(Ne=s=sr.precision,o=sr.rounding):a?Ne=s+(t.e-r.e)+1:Ne=s,Ne<0)R.push(1),y=!0;else{if(Ne=Ne/m+2|0,c=0,nn==1){for(p=0,W=W[0],Ne++;(c<ht||p)&&Ne--;c++)Ti=p*u+(Se[c]||0),R[c]=Ti/W|0,p=Ti%W|0;y=p||c<ht}else{for(p=u/(W[0]+1)|0,p>1&&(W=e(W,p,u),Se=e(Se,p,u),nn=W.length,ht=Se.length),tr=nn,I=Se.slice(0,nn),q=I.length;q<nn;)I[q++]=0;rr=W.slice(),rr.unshift(0),ps=W[0],W[1]>=u/2&&++ps;do p=0,l=n(W,I,nn,q),l<0?(Ee=I[0],nn!=q&&(Ee=Ee*u+(I[1]||0)),p=Ee/ps|0,p>1?(p>=u&&(p=u-1),x=e(W,p,u),E=x.length,q=I.length,l=n(x,I,E,q),l==1&&(p--,i(x,nn<E?rr:W,E,u))):(p==0&&(l=p=1),x=W.slice()),E=x.length,E<q&&x.unshift(0),i(I,x,q,u),l==-1&&(q=I.length,l=n(W,I,nn,q),l<1&&(p++,i(I,nn<q?rr:W,q,u))),q=I.length):l===0&&(p++,I=[0]),R[c++]=p,l&&I[0]?I[q++]=Se[tr]||0:(I=[Se[tr]],q=1);while((tr++<ht||I[0]!==void 0)&&Ne--);y=I[0]!==void 0}R[0]||R.shift()}if(m==1)_.e=f,ga=y;else{for(c=1,p=R[0];p>=10;p/=10)c++;_.e=c+f*m-1,S(_,a?s+_.e+1:s,o,y)}return _}}();function S(e,n,i,t){var r,s,o,a,u,l,f,c,p,m=e.constructor;e:if(n!=null){if(c=e.d,!c)return e;for(r=1,a=c[0];a>=10;a/=10)r++;if(s=n-r,s<0)s+=B,o=n,f=c[p=0],u=f/ge(10,r-o-1)%10|0;else if(p=Math.ceil((s+1)/B),a=c.length,p>=a)if(t){for(;a++<=p;)c.push(0);f=u=0,r=1,s%=B,o=s-B+1}else break e;else{for(f=a=c[p],r=1;a>=10;a/=10)r++;s%=B,o=s-B+r,u=o<0?0:f/ge(10,r-o-1)%10|0}if(t=t||n<0||c[p+1]!==void 0||(o<0?f:f%ge(10,r-o-1)),l=i<4?(u||t)&&(i==0||i==(e.s<0?3:2)):u>5||u==5&&(i==4||t||i==6&&(s>0?o>0?f/ge(10,r-o):0:c[p-1])%10&1||i==(e.s<0?8:7)),n<1||!c[0])return c.length=0,l?(n-=e.e+1,c[0]=ge(10,(B-n%B)%B),e.e=-n||0):c[0]=e.e=0,e;if(s==0?(c.length=p,a=1,p--):(c.length=p+1,a=ge(10,B-s),c[p]=o>0?(f/ge(10,r-o)%ge(10,o)|0)*a:0),l)for(;;)if(p==0){for(s=1,o=c[0];o>=10;o/=10)s++;for(o=c[0]+=a,a=1;o>=10;o/=10)a++;s!=a&&(e.e++,c[0]==tn&&(c[0]=1));break}else{if(c[p]+=a,c[p]!=tn)break;c[p--]=0,a=1}for(s=c.length;c[--s]===0;)c.pop()}return w&&(e.e>m.maxE?(e.d=null,e.e=NaN):e.e<m.minE&&(e.e=0,e.d=[0])),e}function cn(e,n,i){if(!e.isFinite())return Sa(e);var t,r=e.e,s=ve(e.d),o=s.length;return n?(i&&(t=i-o)>0?s=s.charAt(0)+"."+s.slice(1)+Ln(t):o>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(e.e<0?"e":"e+")+e.e):r<0?(s="0."+Ln(-r-1)+s,i&&(t=i-o)>0&&(s+=Ln(t))):r>=o?(s+=Ln(r+1-o),i&&(t=i-r-1)>0&&(s=s+"."+Ln(t))):((t=r+1)<o&&(s=s.slice(0,t)+"."+s.slice(t)),i&&(t=i-o)>0&&(r+1===o&&(s+="."),s+=Ln(t))),s}function pr(e,n){var i=e[0];for(n*=B;i>=10;i/=10)n++;return n}function fr(e,n,i){if(n>Ec)throw w=!0,i&&(e.precision=i),Error(xa);return S(new e(ur),n,1,!0)}function fn(e,n,i){if(n>ys)throw Error(xa);return S(new e(lr),n,i,!0)}function Na(e){var n=e.length-1,i=n*B+1;if(n=e[n],n){for(;n%10==0;n/=10)i--;for(n=e[0];n>=10;n/=10)i++}return i}function Ln(e){for(var n="";e--;)n+="0";return n}function va(e,n,i,t){var r,s=new e(1),o=Math.ceil(t/B+4);for(w=!1;;){if(i%2&&(s=s.times(n),ma(s.d,o)&&(r=!0)),i=Ie(i/2),i===0){i=s.d.length-1,r&&s.d[i]===0&&++s.d[i];break}n=n.times(n),ma(n.d,o)}return w=!0,s}function da(e){return e.d[e.d.length-1]&1}function Ta(e,n,i){for(var t,r,s=new e(n[0]),o=0;++o<n.length;){if(r=new e(n[o]),!r.s){s=r;break}t=s.cmp(r),(t===i||t===0&&s.s===i)&&(s=r)}return s}function bs(e,n){var i,t,r,s,o,a,u,l=0,f=0,c=0,p=e.constructor,m=p.rounding,y=p.precision;if(!e.d||!e.d[0]||e.e>17)return new p(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(n==null?(w=!1,u=y):u=n,a=new p(.03125);e.e>-2;)e=e.times(a),c+=5;for(t=Math.log(ge(2,c))/Math.LN10*2+5|0,u+=t,i=s=o=new p(1),p.precision=u;;){if(s=S(s.times(e),u,1),i=i.times(++f),a=o.plus(j(s,i,u,1)),ve(a.d).slice(0,u)===ve(o.d).slice(0,u)){for(r=c;r--;)o=S(o.times(o),u,1);if(n==null)if(l<3&>(o.d,u-t,m,l))p.precision=u+=10,i=s=a=new p(1),f=0,l++;else return S(o,p.precision=y,m,w=!0);else return p.precision=y,o}o=a}}function Fn(e,n){var i,t,r,s,o,a,u,l,f,c,p,m=1,y=10,x=e,E=x.d,_=x.constructor,R=_.rounding,I=_.precision;if(x.s<0||!E||!E[0]||!x.e&&E[0]==1&&E.length==1)return new _(E&&!E[0]?-1/0:x.s!=1?NaN:E?0:x);if(n==null?(w=!1,f=I):f=n,_.precision=f+=y,i=ve(E),t=i.charAt(0),Math.abs(s=x.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)x=x.times(e),i=ve(x.d),t=i.charAt(0),m++;s=x.e,t>1?(x=new _("0."+i),s++):x=new _(t+"."+i.slice(1))}else return l=fr(_,f+2,I).times(s+""),x=Fn(new _(t+"."+i.slice(1)),f-y).plus(l),_.precision=I,n==null?S(x,I,R,w=!0):x;for(c=x,u=o=x=j(x.minus(1),x.plus(1),f,1),p=S(x.times(x),f,1),r=3;;){if(o=S(o.times(p),f,1),l=u.plus(j(o,new _(r),f,1)),ve(l.d).slice(0,f)===ve(u.d).slice(0,f))if(u=u.times(2),s!==0&&(u=u.plus(fr(_,f+2,I).times(s+""))),u=j(u,new _(m),f,1),n==null)if(gt(u.d,f-y,R,a))_.precision=f+=y,l=o=x=j(c.minus(1),c.plus(1),f,1),p=S(x.times(x),f,1),r=a=1;else return S(u,_.precision=I,R,w=!0);else return _.precision=I,u;u=l,r+=2}}function Sa(e){return String(e.s*e.s/0)}function ar(e,n){var i,t,r;for((i=n.indexOf("."))>-1&&(n=n.replace(".","")),(t=n.search(/e/i))>0?(i<0&&(i=t),i+=+n.slice(t+1),n=n.substring(0,t)):i<0&&(i=n.length),t=0;n.charCodeAt(t)===48;t++);for(r=n.length;n.charCodeAt(r-1)===48;--r);if(n=n.slice(t,r),n){if(r-=t,e.e=i=i-t-1,e.d=[],t=(i+1)%B,i<0&&(t+=B),t<r){for(t&&e.d.push(+n.slice(0,t)),r-=B;t<r;)e.d.push(+n.slice(t,t+=B));n=n.slice(t),t=B-n.length}else t-=r;for(;t--;)n+="0";e.d.push(+n),w&&(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 vc(e,n){var i,t,r,s,o,a,u,l,f;if(n.indexOf("_")>-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),Ea.test(n))return ar(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(xc.test(n))i=16,n=n.toLowerCase();else if(gc.test(n))i=2;else if(yc.test(n))i=8;else throw Error(qn+n);for(s=n.search(/p/i),s>0?(u=+n.slice(s+1),n=n.substring(2,s)):n=n.slice(2),s=n.indexOf("."),o=s>=0,t=e.constructor,o&&(n=n.replace(".",""),a=n.length,s=a-s,r=va(t,new t(i),s,s*2)),l=or(n,i,tn),f=l.length-1,s=f;l[s]===0;--s)l.pop();return s<0?new t(e.s*0):(e.e=pr(l,f),e.d=l,w=!1,o&&(e=j(e,r,a*4)),u&&(e=e.times(Math.abs(u)<54?ge(2,u):M.pow(2,u))),w=!0,e)}function Tc(e,n){var i,t=n.d.length;if(t<3)return n.isZero()?n:Ii(e,2,n,n);i=1.4*Math.sqrt(t),i=i>16?16:i|0,n=n.times(1/dr(5,i)),n=Ii(e,2,n,n);for(var r,s=new e(5),o=new e(16),a=new e(20);i--;)r=n.times(n),n=n.times(s.plus(r.times(o.times(r).minus(a))));return n}function Ii(e,n,i,t,r){var s,o,a,u,l=1,f=e.precision,c=Math.ceil(f/B);for(w=!1,u=i.times(i),a=new e(t);;){if(o=j(a.times(u),new e(n++*n++),f,1),a=r?t.plus(o):t.minus(o),t=j(o.times(u),new e(n++*n++),f,1),o=a.plus(t),o.d[c]!==void 0){for(s=c;o.d[s]===a.d[s]&&s--;);if(s==-1)break}s=a,a=t,t=o,o=s,l++}return w=!0,o.d.length=c+1,o}function dr(e,n){for(var i=e;--n;)i*=e;return i}function _a(e,n){var i,t=n.s<0,r=fn(e,e.precision,1),s=r.times(.5);if(n=n.abs(),n.lte(s))return Sn=t?4:1,n;if(i=n.divToInt(r),i.isZero())Sn=t?3:2;else{if(n=n.minus(i.times(r)),n.lte(s))return Sn=da(i)?t?2:3:t?4:1,n;Sn=da(i)?t?1:4:t?3:2}return n.minus(r).abs()}function Es(e,n,i,t){var r,s,o,a,u,l,f,c,p,m=e.constructor,y=i!==void 0;if(y?(Me(i,1,$n),t===void 0?t=m.rounding:Me(t,0,8)):(i=m.precision,t=m.rounding),!e.isFinite())f=Sa(e);else{for(f=cn(e),o=f.indexOf("."),y?(r=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):r=n,o>=0&&(f=f.replace(".",""),p=new m(1),p.e=f.length-o,p.d=or(cn(p),10,r),p.e=p.d.length),c=or(f,10,r),s=u=c.length;c[--u]==0;)c.pop();if(!c[0])f=y?"0p+0":"0";else{if(o<0?s--:(e=new m(e),e.d=c,e.e=s,e=j(e,p,i,t,0,r),c=e.d,s=e.e,l=ga),o=c[i],a=r/2,l=l||c[i+1]!==void 0,l=t<4?(o!==void 0||l)&&(t===0||t===(e.s<0?3:2)):o>a||o===a&&(t===4||l||t===6&&c[i-1]&1||t===(e.s<0?8:7)),c.length=i,l)for(;++c[--i]>r-1;)c[i]=0,i||(++s,c.unshift(1));for(u=c.length;!c[u-1];--u);for(o=0,f="";o<u;o++)f+=gs.charAt(c[o]);if(y){if(u>1)if(n==16||n==8){for(o=n==16?4:3,--u;u%o;u++)f+="0";for(c=or(f,r,n),u=c.length;!c[u-1];--u);for(o=1,f="1.";o<u;o++)f+=gs.charAt(c[o])}else f=f.charAt(0)+"."+f.slice(1);f=f+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)f="0"+f;f="0."+f}else if(++s>u)for(s-=u;s--;)f+="0";else s<u&&(f=f.slice(0,s)+"."+f.slice(s))}f=(n==16?"0x":n==2?"0b":n==8?"0o":"")+f}return e.s<0?"-"+f:f}function ma(e,n){if(e.length>n)return e.length=n,!0}function Sc(e){return new this(e).abs()}function _c(e){return new this(e).acos()}function Ic(e){return new this(e).acosh()}function Bc(e,n){return new this(e).plus(n)}function kc(e){return new this(e).asin()}function wc(e){return new this(e).asinh()}function Dc(e){return new this(e).atan()}function Ac(e){return new this(e).atanh()}function Rc(e,n){e=new this(e),n=new this(n);var i,t=this.precision,r=this.rounding,s=t+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=fn(this,s,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?fn(this,t,r):new this(0),i.s=e.s):!e.d||n.isZero()?(i=fn(this,s,1).times(.5),i.s=e.s):n.s<0?(this.precision=s,this.rounding=1,i=this.atan(j(e,n,s,1)),n=fn(this,s,1),this.precision=t,this.rounding=r,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(j(e,n,s,1)),i}function Mc(e){return new this(e).cbrt()}function Cc(e){return S(e=new this(e),e.e+1,2)}function Pc(e,n,i){return new this(e).clamp(n,i)}function Oc(e){if(!e||typeof e!="object")throw Error(cr+"Object expected");var n,i,t,r=e.defaults===!0,s=["precision",1,$n,"rounding",0,8,"toExpNeg",-_i,0,"toExpPos",0,_i,"maxE",0,_i,"minE",-_i,0,"modulo",0,9];for(n=0;n<s.length;n+=3)if(i=s[n],r&&(this[i]=xs[i]),(t=e[i])!==void 0)if(Ie(t)===t&&t>=s[n+1]&&t<=s[n+2])this[i]=t;else throw Error(qn+i+": "+t);if(i="crypto",r&&(this[i]=xs[i]),(t=e[i])!==void 0)if(t===!0||t===!1||t===0||t===1)if(t)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(ya);else this[i]=!1;else throw Error(qn+i+": "+t);return this}function Lc(e){return new this(e).cos()}function Fc(e){return new this(e).cosh()}function Ia(e){var n,i,t;function r(s){var o,a,u,l=this;if(!(l instanceof r))return new r(s);if(l.constructor=r,ha(s)){l.s=s.s,w?!s.d||s.e>r.maxE?(l.e=NaN,l.d=null):s.e<r.minE?(l.e=0,l.d=[0]):(l.e=s.e,l.d=s.d.slice()):(l.e=s.e,l.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){l.s=1/s<0?-1:1,l.e=0,l.d=[0];return}if(s<0?(s=-s,l.s=-1):l.s=1,s===~~s&&s<1e7){for(o=0,a=s;a>=10;a/=10)o++;w?o>r.maxE?(l.e=NaN,l.d=null):o<r.minE?(l.e=0,l.d=[0]):(l.e=o,l.d=[s]):(l.e=o,l.d=[s]);return}if(s*0!==0){s||(l.s=NaN),l.e=NaN,l.d=null;return}return ar(l,s.toString())}if(u==="string")return(a=s.charCodeAt(0))===45?(s=s.slice(1),l.s=-1):(a===43&&(s=s.slice(1)),l.s=1),Ea.test(s)?ar(l,s):vc(l,s);if(u==="bigint")return s<0?(s=-s,l.s=-1):l.s=1,ar(l,s.toString());throw Error(qn+s)}if(r.prototype=g,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Oc,r.clone=Ia,r.isDecimal=ha,r.abs=Sc,r.acos=_c,r.acosh=Ic,r.add=Bc,r.asin=kc,r.asinh=wc,r.atan=Dc,r.atanh=Ac,r.atan2=Rc,r.cbrt=Mc,r.ceil=Cc,r.clamp=Pc,r.cos=Lc,r.cosh=Fc,r.div=qc,r.exp=$c,r.floor=Vc,r.hypot=zc,r.ln=Gc,r.log=Uc,r.log10=Zc,r.log2=jc,r.max=Hc,r.min=Wc,r.mod=Jc,r.mul=Yc,r.pow=Qc,r.random=Xc,r.round=Kc,r.sign=ep,r.sin=np,r.sinh=ip,r.sqrt=tp,r.sub=rp,r.sum=sp,r.tan=op,r.tanh=ap,r.trunc=up,e===void 0&&(e={}),e&&e.defaults!==!0)for(t=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],n=0;n<t.length;)e.hasOwnProperty(i=t[n++])||(e[i]=this[i]);return r.config(e),r}function qc(e,n){return new this(e).div(n)}function $c(e){return new this(e).exp()}function Vc(e){return S(e=new this(e),e.e+1,3)}function zc(){var e,n,i=new this(0);for(w=!1,e=0;e<arguments.length;)if(n=new this(arguments[e++]),n.d)i.d&&(i=i.plus(n.times(n)));else{if(n.s)return w=!0,new this(1/0);i=n}return w=!0,i.sqrt()}function ha(e){return e instanceof M||e&&e.toStringTag===ba||!1}function Gc(e){return new this(e).ln()}function Uc(e,n){return new this(e).log(n)}function jc(e){return new this(e).log(2)}function Zc(e){return new this(e).log(10)}function Hc(){return Ta(this,arguments,-1)}function Wc(){return Ta(this,arguments,1)}function Jc(e,n){return new this(e).mod(n)}function Yc(e,n){return new this(e).mul(n)}function Qc(e,n){return new this(e).pow(n)}function Xc(e){var n,i,t,r,s=0,o=new this(1),a=[];if(e===void 0?e=this.precision:Me(e,1,$n),t=Math.ceil(e/B),this.crypto)if(crypto.getRandomValues)for(n=crypto.getRandomValues(new Uint32Array(t));s<t;)r=n[s],r>=429e7?n[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=r%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(t*=4);s<t;)r=n[s]+(n[s+1]<<8)+(n[s+2]<<16)+((n[s+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(n,s):(a.push(r%1e7),s+=4);s=t/4}else throw Error(ya);else for(;s<t;)a[s++]=Math.random()*1e7|0;for(t=a[--s],e%=B,t&&e&&(r=ge(10,B-e),a[s]=(t/r|0)*r);a[s]===0;s--)a.pop();if(s<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=B)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<B&&(i-=B-t)}return o.e=i,o.d=a,o}function Kc(e){return S(e=new this(e),e.e+1,this.rounding)}function ep(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function np(e){return new this(e).sin()}function ip(e){return new this(e).sinh()}function tp(e){return new this(e).sqrt()}function rp(e,n){return new this(e).sub(n)}function sp(){var e=0,n=arguments,i=new this(n[e]);for(w=!1;i.s&&++e<n.length;)i=i.plus(n[e]);return w=!0,S(i,this.precision,this.rounding)}function op(e){return new this(e).tan()}function ap(e){return new this(e).tanh()}function up(e){return S(e=new this(e),e.e+1,1)}g[Symbol.for("nodejs.util.inspect.custom")]=g.toString;g[Symbol.toStringTag]="Decimal";var M=g.constructor=Ia(xs);ur=new M(ur);lr=new M(lr);var mr=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],hr=["collection","list","set","tuple","map"],gr=["scalar",...mr,"boolean","string"],Ns=["value",...hr,...gr],vs=["expression","symbol","function",...Ns],Vn=["any","unknown","nothing","never","error",...vs];var Ba=3,ka=1,wa=2,lp=4,fp=5,cp=6,pp=7,dp=8,mp=9,hp=10;function ne(e,n=0){if(typeof e=="string")return e;let i="";switch(e.kind){case"value":typeof e.value=="string"?i=`"${e.value}"`:typeof e.value=="boolean"?i=e.value?"true":"false":i=e.value.toString();break;case"reference":i=e.ref;break;case"negation":i=`!${ne(e.type,Ba)}`;break;case"union":i=e.types.map(u=>ne(u,ka)).join(" | ");break;case"intersection":i=e.types.map(u=>ne(u,wa)).join(" & ");break;case"list":if(e.dimensions&&v(e.elements,"number")){if(e.dimensions===void 0)e.elements==="number"&&(i="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?i="vector":i=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?i=`vector<${ne(e.elements)}>`:i=`vector<${ne(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?i="matrix":i=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?i=`matrix<${ne(e.elements)}>`:i=`matrix<${ne(e.elements)}^(${u[0]}x${u[1]})>`}}if(!i){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";i=`list<${ne(e.elements)}${u}>`}break;case"map":i=`map<${Object.entries(e.elements).map(([u,l])=>`${u}: ${ne(l)}`).join(", ")}>`;break;case"set":i=`set<${ne(e.elements)}>`;break;case"collection":i=`collection<${ne(e.elements)}>`;break;case"tuple":if(e.elements.length===0)i="tuple";else if(e.elements.length===1){let[u]=e.elements;i=`tuple<${xt(u)}>`}else i="tuple<"+e.elements.map(u=>xt(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>xt(u)).join(", "):"",s=e.optArgs?e.optArgs.map(u=>xt(u)+"?").join(", "):"",o=e.restArg?`...${xt(e.restArg)}`:"";i=`(${[r,s,o].filter(u=>u).join(", ")}) -> ${ne(e.result)}`;break;default:i="error"}return n>0&&n>gp(e.kind)?`(${i})`:i}function xt(e){return e.name?`${e.name}: ${ne(e.type)}`:ne(e.type)}function gp(e){switch(e){case"negation":return Ba;case"union":return ka;case"intersection":return wa;case"list":return lp;case"map":return fp;case"set":return cp;case"collection":return pp;case"tuple":return dp;case"signature":return mp;case"value":return hp;default:return 0}}function xp(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||v(e,n)?e:v(n,e)?n:Aa(e,n)}function yp(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:v(e,n)?n:v(n,e)?e:Aa(e,n)}function Da(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(xp)}function we(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(yp)}function Kn(e){return e=typeof e=="string"?k(e):e,typeof e!="string"&&e.kind==="signature"}function ei(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function ni(e){if(e==="collection")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="list")return e.elements;if(e.kind==="map")return k(`tuple<string, ${we(...Object.values(e.elements))}>`);if(e.kind==="set")return e.elements;if(e.kind==="tuple")return we(...e.elements.map(n=>n.type))}}function _n(e){return typeof e=="string"?Vn.includes(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="tuple"||e.kind==="list"||e.kind==="map"||e.kind==="set"||e.kind==="function"||e.kind==="collection"||e.kind==="reference"}function Aa(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:le(e,n,"non_finite_number")?"non_finite_number":le(e,n,"finite_integer")?"finite_integer":le(e,n,"integer")?"integer":le(e,n,"finite_rational")?"finite_rational":le(e,n,"rational")?"rational":le(e,n,"finite_real")?"finite_real":le(e,n,"real")?"real":le(e,n,"imaginary")?"imaginary":le(e,n,"finite_complex")?"finite_complex":le(e,n,"complex")?"complex":le(e,n,"finite_number")?"finite_number":le(e,n,"number")?"number":le(e,n,"list")?"list":le(e,n,"map")?"map":le(e,n,"set")?"set":le(e,n,"tuple")?"tuple":le(e,n,"collection")?"collection":le(e,n,"scalar")?"scalar":le(e,n,"value")?"value":le(e,n,"function")?"function":le(e,n,"expression")?"expression":"any"}function le(e,n,i){return!!(v(e,i)&&v(n,i))}function bp(e,n){if(e===n)return 0;if(e.length===0)return n.length;if(n.length===0)return e.length;let i=Array.from({length:e.length+1},(r,s)=>s),t=new Array(e.length+1);for(let r=1;r<=n.length;r++){t[0]=r;for(let s=1;s<=e.length;s++){let o=e[s-1]===n[r-1]?0:1;t[s]=Math.min(i[s]+1,t[s-1]+1,i[s-1]+o)}[i,t]=[t,i]}return i[e.length]}function Ra(e,n){let t=null,r=1/0,s=e.length;for(let o of n){if(Math.abs(s-o.length)>3)continue;let a=bp(e,o);if(a===0)return o;a<=3&&a<r&&(r=a,t=o)}return t}var Ts=class{constructor(n,i){this.buffer=n,this.pos=0,this._valueParser=i?.value??(()=>null),this._typeParser=i?.type??(()=>null)}error(...n){throw new Error(`
Invalid type
| ${this.buffer}
| ${" ".repeat(this.pos)}^
|
| ${n.join(`
| `)}
`)}peek(){return this.buffer[this.pos]}consume(){return this.buffer[this.pos++]}match(n){if(n.length===1&&this.buffer[this.pos]===n)return this.pos++,!0;let i=this.pos;return this.buffer.slice(i,i+n.length)===n?(this.pos+=n.length,!0):!1}skipWhitespace(){for(;this.pos<this.buffer.length&&/\s/.test(this.buffer[this.pos]);)this.pos++}isEOF(){return this.pos>=this.buffer.length}parseValue(){this.skipWhitespace();let n=this._valueParser(this);return n===null?null:{kind:"value",value:n}}parseTypeReference(){this.skipWhitespace();let n=this._typeParser(this);return n===null?null:{kind:"reference",ref:n}}parsePrimitiveType(){this.skipWhitespace(),this.isEOF()&&this.error("Unexpected end of input");for(let n of Vn)if(this.match(n))return n;return null}parseArguments(){let n=[],i=[];for(;;){let o=this.parseNamedElement();if(o===null||(this.match("?")?i.push(o):(i.length>0&&this.error("Optional arguments must come after required arguments"),n.push(o)),this.skipWhitespace(),!this.match(",")))break}let t=this.pos,r=this.parseRestArgument()??void 0;r&&i.length>0&&(this.pos=t,this.error("Optional arguments cannot be followed by a rest argument"));let s=Ma([...n,...i,...r?[r]:[]]);return s&&this.error(`Duplicate argument name "${s}"`),[n,i,r]}parseRestArgument(){let n=this.pos,i=this.parseName();if(this.skipWhitespace(),!this.match("..."))return this.pos=n,null;let t=this.parsePrimitiveType()??this.parseGroup();if(!t&&!i&&(this.pos=n,this.match("...")&&this.parseName())){let r=this.parsePrimitiveType()??this.parseGroup();this.pos=n,this.error("The rest argument indicator is placed before the type, not the name",`Use "${i}: ...${r?ne(r):"number"}"`)}return this.skipWhitespace(),this.match(":")&&this.error('Unexpected ":" after rest argument. Use "x: ...number"'),t??(t="any"),i?{name:i,type:t}:{type:t}}parseFunctionSignature(){let n=[],i=[],t;this.skipWhitespace();let r=this.pos;if(!this.match("()")){if(this.match("(")){if([n,i,t]=this.parseArguments(),this.skipWhitespace(),!this.match(")"))return t&&(this.parseNamedElement()&&(this.pos=r,this.error("The rest argument must be the last argument")),this.error("The rest argument must have a valid type")),i.length>0&&(this.parseNamedElement()&&this.error("Optional arguments cannot be followed by required arguments"),this.skipWhitespace(),r=this.pos,this.match("->")&&(this.pos=r,this.error('Expected ")" to close the argument list')),this.error("Expected an argument")),this.pos=r,null}else if(t=this.parseRestArgument()??void 0,t?.name&&(this.pos=r,this.error("Named arguments must be enclosed in parentheses")),!t)return this.pos=r,null}if(this.skipWhitespace(),!this.match("->"))return this.pos=r,null;let s=this.parseType();return s===null&&this.error("Expected a return type.","Use `any` for any type, `nothing` for no return value, or `never` for a function that never returns"),n.length===0&&(n=void 0),i.length===0&&(i=void 0),{kind:"signature",args:n,optArgs:i,restArg:t,result:s}}parsePositiveIntegerLiteral(){let n=0;for(this.skipWhitespace();/[0-9]/.test(this.peek());)n=n*10+parseInt(this.consume());return n===0?null:n}par