@mathzetta/inlinemath 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +64 -20
  2. package/dist/cas.external.js +2 -2
  3. package/dist/cas.js +2 -2
  4. package/dist/chunks/calculate-Cz87Lt0N.js +2 -0
  5. package/dist/chunks/draw-Bev17BJJ.js +2 -0
  6. package/dist/chunks/edit-C65xXzo8.js +2 -0
  7. package/dist/chunks/edit-M68aRA5o.js +2 -0
  8. package/dist/chunks/{html-CvuSyhzk.js → html-BimAqn7x.js} +2 -2
  9. package/dist/chunks/html-CupluJSh.js +2 -0
  10. package/dist/chunks/lite-3Fb-OHbt.js +2 -0
  11. package/dist/inlinemath-cas.external.global.min.js +2 -2
  12. package/dist/inlinemath-cas.global.min.js +2 -2
  13. package/dist/inlinemath-lite-calc.global.min.js +2 -2
  14. package/dist/inlinemath-lite.external.global.min.js +2 -2
  15. package/dist/inlinemath-lite.global.min.js +2 -2
  16. package/dist/inlinemath.css +32 -1
  17. package/dist/inlinemath.external.global.min.js +2 -2
  18. package/dist/inlinemath.external.js +2 -2
  19. package/dist/inlinemath.global.min.js +2 -2
  20. package/dist/inlinemath.js +2 -2
  21. package/dist/lite-calc.js +2 -2
  22. package/dist/lite.external.js +2 -2
  23. package/dist/lite.js +2 -2
  24. package/dist/markdown.external.js +2 -2
  25. package/dist/markdown.js +2 -2
  26. package/inlinemath.css +32 -1
  27. package/package.json +3 -3
  28. package/src/cas.js +25 -15
  29. package/src/edit.js +96 -0
  30. package/src/glyphs.js +2 -0
  31. package/src/index.d.ts +2 -2
  32. package/src/index.js +1 -1
  33. package/src/layout.js +55 -11
  34. package/src/markdown.d.ts +2 -2
  35. package/src/markdown.js +354 -39
  36. package/src/mathzetta.js +2 -1
  37. package/src/types.d.ts +77 -6
  38. package/src/variables.js +228 -0
  39. package/src/view.js +226 -6
  40. package/dist/chunks/calculate-BX9lJ7Ff.js +0 -2
  41. package/dist/chunks/draw-Cm4exbg7.js +0 -2
  42. package/dist/chunks/html-DWtfytjA.js +0 -2
  43. package/dist/chunks/lite-Bj_L6w2g.js +0 -2
@@ -0,0 +1,2 @@
1
+ /* Inline Math 0.2.0 — MIT licence; includes mathzetta (and @mathzetta/cas, for the CAS) */
2
+ import{h as t,i as n,j as e,k as r,m as o,o as i}from"./lite-3Fb-OHbt.js";function a(t){return Array.isArray(t)&&t.length>0&&t.every(n=>Array.isArray(n)&&n.length>0&&n.length===t[0].length&&!n.some(Array.isArray))}const s=t=>Array.isArray(t)&&t.length>0&&!t.some(Array.isArray);function u(t){const n=t,e=n.make??(t=>t),r=n.size??(()=>1),o=t=>`${t.length} by ${t[0].length}`,i=(t,r)=>e(Array.from({length:t},(e,r)=>Array.from({length:t},(t,e)=>r===e?n.one():n.zero())),r);function s(t,r){return t[0].length!==r.length&&n.fail(`a ${o(t)} matrix times a ${o(r)} one`),e(t.map(t=>r[0].map((e,o)=>t.reduce((t,e,i)=>n.add(t,n.mul(e,r[i][o])),n.zero()))),t)}function u(t){const e=t.map(t=>t.slice()),o=e.length,i=e[0].length;let a=n.one(),s=0;for(let t=0;t<i&&s<o;t++){let i=-1;for(let a=s;a<o;a++)n.isZero(e[a][t])||(i<0||r(e[a][t])>r(e[i][t]))&&(i=a);if(i<0){a=n.zero();continue}i!==s&&([e[i],e[s]]=[e[s],e[i]],a=n.sub(n.zero(),a));const u=e[s][t];a=n.mul(a,u),e[s]=e[s].map(t=>n.div(t,u));for(let r=0;r<o;r++){if(r===s||n.isZero(e[r][t]))continue;const o=e[r][t];e[r]=e[r].map((t,r)=>n.sub(t,n.mul(o,e[s][r])))}s++}return s<o&&(a=n.zero()),{M:e,det:a,rank:s}}function c(t){const r=t.length;r!==t[0].length&&n.fail(`a ${o(t)} matrix has no inverse`);const a=i(r),{M:s,rank:c}=u(t.map((t,n)=>[...t,...a[n]]));return(c<r||s.some((t,e)=>n.isZero(t[e])))&&n.fail("the matrix has no inverse (its determinant is 0)"),e(s.map(t=>t.slice(r)),t)}return{identity:i,transpose:t=>e(t[0].map((n,e)=>t.map(t=>t[e])),t),times:s,det:function(t){return t.length!==t[0].length&&n.fail(`a ${o(t)} matrix has no determinant`),u(t).det},inverse:c,power:function(t,e){t.length!==t[0].length&&n.fail(`a ${o(t)} matrix has no powers`);let r=e<0n?c(t):t,a=e<0n?-e:e,u=i(t.length,t);for(;a>0n;)1n&a&&(u=s(u,r)),r=s(r,r),a>>=1n;return u},trace:t=>(t.length!==t[0].length&&n.fail(`a ${o(t)} matrix has no trace`),t.reduce((t,e,r)=>n.add(t,e[r]),n.zero())),dot:(t,e)=>(t.length!==e.length&&n.fail("vectors of different lengths"),t.reduce((t,r,o)=>n.add(t,n.mul(r,e[o])),n.zero())),cross:(t,e)=>(3===t.length&&3===e.length||n.fail("the cross product is for vectors of 3 numbers"),[n.sub(n.mul(t[1],e[2]),n.mul(t[2],e[1])),n.sub(n.mul(t[2],e[0]),n.mul(t[0],e[2])),n.sub(n.mul(t[0],e[1]),n.mul(t[1],e[0]))]),solve:function(t,n){return a(n)?s(c(t),n):s(c(t),n.map(t=>[t])).map(t=>t[0])},rank:t=>u(t).rank,rref:t=>e(u(t).M,t),timesVector:(t,n)=>s(t,n.map(t=>[t])).map(t=>t[0]),vectorTimes:(t,n)=>s([t],n)[0]}}const c=u({add:(t,n)=>t+n,sub:(t,n)=>t-n,mul:(t,n)=>t*n,div:(t,n)=>t/n,isZero:t=>Math.abs(t)<1e-12,zero:()=>0,one:()=>1,size:Math.abs,fail:t=>{throw new Error(t)}}),l=t=>a(t)&&(t.length>1||t[0].length>1),f=t=>s(t)&&!l(t),h=t=>{const n=(e,r)=>{if(Array.isArray(e)&&Array.isArray(r)){if(e.length!==r.length)throw new Error("Lists of different lengths");return e.map((t,e)=>n(t,r[e]))}return Array.isArray(e)?e.map(t=>n(t,r)):Array.isArray(r)?r.map(t=>n(e,t)):t(e,r)};return n},m=(t,n)=>l(t)&&l(n)?c.times(t,n):l(t)&&f(n)?c.timesVector(t,n):f(t)&&l(n)?c.vectorTimes(t,n):h((t,n)=>t*n)(t,n),g=t=>n=>t(n.length>1&&n.every(f)?n:n[0]),p={det:g(c.det),inv:g(c.inverse),inverse:g(c.inverse),transpose:g(c.transpose),trace:g(c.trace),tr:g(c.trace),rank:g(c.rank),rref:g(c.rref),identity:([t])=>c.identity(t),dot:([t,n])=>c.dot(t,n),cross:([t,n])=>c.cross(t,n),linsolve:([t,n])=>c.solve(t,n)},d=(t,n)=>t.args.map(t=>"op"===t.type&&"[]"===t.op?t.args.map(t=>A(t,n)):[A(t,n)]),b={pi:Math.PI,"π":Math.PI,e:Math.E,tau:2*Math.PI,"τ":2*Math.PI,"∞":1/0,"-∞":-1/0,true:!0,false:!1},w=(t,n)=>n?w(n,t%n):Math.abs(t),M={neg:t=>-t,pm:t=>[t,-t],"!":t=>{if(!Number.isInteger(t)||t<0)return NaN;if(t>170)return 1/0;let n=1;for(let e=2;e<=t;e++)n*=e;return n},"\\not":t=>!t,sqrt:Math.sqrt,abs:Math.abs,floor:Math.floor,ceil:Math.ceil,det:t=>c.det(t),ln:Math.log,loglog:t=>Math.log(Math.log(t)),logloglog:t=>Math.log(Math.log(Math.log(t))),expm1:Math.expm1,sin:Math.sin,cos:Math.cos,tan:Math.tan,csc:t=>1/Math.sin(t),sec:t=>1/Math.cos(t),cot:t=>1/Math.tan(t),sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,arcsin:Math.asin,arccos:Math.acos,arctan:Math.atan,arcsinh:Math.asinh,arccosh:Math.acosh,arctanh:Math.atanh},y={"+":(t,n)=>Array.isArray(t)||Array.isArray(n)?h((t,n)=>t+n)(t,n):t+n,"-":(t,n)=>Array.isArray(t)||Array.isArray(n)?h((t,n)=>t-n)(t,n):t-n,"*":m,"/":(t,n)=>l(n)?m(t,c.inverse(n)):Array.isArray(t)||Array.isArray(n)?h((t,n)=>t/n)(t,n):t/n,"^":(t,n)=>{if(!l(t))return Array.isArray(t)?h((t,n)=>t**n)(t,n):t**n;if(!Number.isInteger(n))throw new Error("A matrix to a power that is not a whole number");return c.power(t,BigInt(n))},mod:(t,n)=>t%n,log:(t,n)=>Math.log(n)/Math.log(t),root:(t,n)=>n**(1/t),atan2:Math.atan2,round:(t,n)=>Math.round(t*10**n)/10**n,"±":(t,n)=>[t+n,t-n],fixed:(t,n)=>Number(t).toFixed(n),perm:(t,n)=>{if(!Number.isInteger(t)||!Number.isInteger(n)||n<0||n>t)return NaN;let e=1;for(let r=t-n+1;r<=t&&e!==1/0;r++)e*=r;return e},comb:(t,n)=>{if(!Number.isInteger(t)||!Number.isInteger(n)||n<0||n>t)return NaN;n=Math.min(n,t-n);let e=1;for(let r=1;r<=n&&e!==1/0;r++)e=e*(t-n+r)/r;return Math.round(e)},"=":(t,n)=>t==n,"===":(t,n)=>t===n,"≠":(t,n)=>t!=n,"≠=":(t,n)=>t!==n,"≈":(t,n)=>Math.abs(t-n)<1e-9,"≡":(t,n)=>t===n,"∪":(t,n)=>[...new Set([...[].concat(t),...[].concat(n)])],"∩":(t,n)=>[].concat(t).filter(t=>[].concat(n).includes(t)),"<":(t,n)=>t<n,">":(t,n)=>t>n,"≤":(t,n)=>t<=n,"≥":(t,n)=>t>=n,"&":(t,n)=>t&&n,"|":(t,n)=>t||n,"\\xor":(t,n)=>Boolean(t)!==Boolean(n),"\\nor":(t,n)=>!(t||n),"\\nand":(t,n)=>!(t&&n)},v={max:t=>Math.max(...t),min:t=>Math.min(...t),sum:t=>t.reduce((t,n)=>t+n,0),prod:t=>t.reduce((t,n)=>t*n,1),mean:t=>t.reduce((t,n)=>t+n,0)/t.length,gcd:t=>t.reduce(w),"()":t=>t,"[]":t=>t,"{}":t=>t};const x=5e6;let N=0,I=0;function A(t,e){if(++N>x)throw new Error("Too much to work out");switch(t.type){case"number":return Number(t.value);case"string":return t.value.slice(1,-1);case"symbol":if(Object.prototype.hasOwnProperty.call(e,t.value))return e[t.value];if(Object.prototype.hasOwnProperty.call(b,t.value))return b[t.value];throw new Error(`No value for '${t.value}'`)}const r=n(t);if(r)return A(r,e);const{op:o,args:i}=t;if("?:"===o)return A(i[0],e)?A(i[1],e):A(i[2],e);if("∈"===o||"∉"===o)return function(t,n){const[e,r]=t.args,o=A(e,n);let i;if("symbol"===r.type&&$[r.value])return i=$[r.value](o),"∈"===t.op?i:!i;if("op"===r.type&&["()","[]","(]","[)"].includes(r.op)&&2===r.args.length){const[t,e]=r.args.map(t=>A(t,n)),a="["===r.op[0]?o>=t:o>t,s="]"===r.op[1]?o<=e:o<e;i=a&&s}else{const t=A(r,n);i=Array.isArray(t)&&t.includes(o)}return"∈"===t.op?i:!i}(t,e);if("random"===o)return Math.random();if(("\\sumidx"===o||"\\prodidx"===o)&&3===i.length&&"op"===i[1].type&&"="===i[1].op&&"symbol"===i[1].args[0].type){const[t,n,r]=[i[0],i[1].args[1],i[2]],a=i[1].args[0].value,s=A(n,e),u=A(r,e);if(!Number.isFinite(s)||!Number.isFinite(u)||u-s>1e6)throw new Error(`Can't evaluate '${o}' over that range`);let c="\\sumidx"===o?0:1;for(let n=s;n<=u;n++){const r=A(t,{...e,[a]:n});c="\\sumidx"===o?c+r:c*r}return c}if("pmod"===o){const[t,n]=i,r=A(n,e);if("op"===t.type&&["≡","="].includes(t.op)){const[n,o]=t.args.map(t=>A(t,e));return(n-o)%r===0}return A(t,e)%r}if("pmatrix"===o||"bmatrix"===o)return d(t,e);if("vmatrix"===o)return c.det(d(t,e));if("^"===o&&"symbol"===i[1].type&&"T"===i[1].value&&!Object.prototype.hasOwnProperty.call(e,"T")){const t=A(i[0],e);if(l(t))return c.transpose(t)}const a=i.map(t=>A(t,e));if(o.startsWith("\\:")&&Object.prototype.hasOwnProperty.call(p,o.slice(2)))return p[o.slice(2)](a);if(M[o]&&1===a.length)return M[o](a[0]);if(y[o]&&2===a.length)return y[o](a[0],a[1]);if(v[o])return v[o](a);throw new Error(`Can't evaluate '${o}'`)}const $={"ℝ":Number.isFinite,"ℤ":Number.isInteger,"ℕ":t=>Number.isInteger(t)&&t>0,"ℚ":Number.isFinite,"ℂ":t=>"number"==typeof t&&!Number.isNaN(t)};for(const t of[b,M,y,v,$,p])Object.setPrototypeOf(t,null);class B extends Error{}class F extends Error{}const O={bits:2e5,factorial:2e4,terms:1e5,rootIndex:12,steps:5e6};let k=0,j=0;const P=t=>t<0n?-t:t,S=t=>0n===t?0:P(t).toString(2).length;function z(t,n){for(t=P(t),n=P(n);n;)[t,n]=[n,t%n];return t}function E(t,n=1n){if(0n===n)throw new B("division by zero");n<0n&&(t=-t,n=-n);const e=z(t,n)||1n;return{n:t/e,d:n/e}}const T=E(0n),W=E(1n),Z=(t,n)=>E(t.n*n.d+n.n*t.d,t.d*n.d),q=(t,n)=>E(t.n*n.n,t.d*n.d),D=(t,n)=>E(t.n*n.d,t.d*n.n),_=t=>({n:-t.n,d:t.d}),C=(t,n)=>{const e=t.n*n.d-n.n*t.d;return e<0n?-1:e>0n?1:0},V=t=>{const n=t.n/t.d;return t.n<0n&&n*t.d!==t.n?n-1n:n};function L(t){const n=S(t.n),e=S(t.d);if(n<1e3&&e<1e3)return Number(t.n)/Number(t.d);const r=BigInt(Math.max(n,e)-1e3),o=t.d>>r;return 0n===o?t.n<0n?-1/0:1/0:Number(t.n>>r)/Number(o)}function G(t){let n=String(t).trim(),e=1n;n.startsWith("-")&&(e=-1n,n=n.slice(1));const r=n.endsWith("..");r&&(n=n.slice(0,-2));let o=0;const i=n.search(/e/i);i>=0&&(o=Number(n.slice(i+1)),n=n.slice(0,i));const[a="",s=""]=n.split(".");if(!(/^\d*$/.test(a)&&/^\d*$/.test(s)&&a+s))throw new F(`'${t}' is not a number`);let u;if(r&&s){let t=1;for(let n=1;2*n<=s.length;n++)if(s.slice(-n)===s.slice(-2*n,-n)){t=n;break}const n=s.slice(-t);let e=s;for(;e.endsWith(n);)e=e.slice(0,-t);const r=BigInt(e||"0"),o=BigInt(e+n);u=Z(E(BigInt(a||"0")),E(o-r,(10n**BigInt(t)-1n)*10n**BigInt(e.length)))}else u=E(BigInt(a+s||"0"),10n**BigInt(s.length));return o&&(u=o>0?q(u,E(10n**BigInt(o))):D(u,E(10n**BigInt(-o)))),e<0n?_(u):u}function J(t,n=0,e=0,r=null){return 0n===t.n?{kind:"x",c:T,pi:0,e:0,root:null}:{kind:"x",c:t,pi:n,e:e,root:r}}const R=(t,n=1n)=>J(E(BigInt(t),BigInt(n))),X=J(W,1),H=J(W,0,1),K=t=>null!==t&&"object"==typeof t&&"x"===t.kind,Q=t=>K(t)&&!t.pi&&!t.e&&!t.root,U=t=>K(t)?0n===t.c.n:0===t,Y=t=>Q(t)&&1n===t.c.d?t.c.n:null,tt=(t,n)=>Object.assign(t,{group:n}),nt=t=>({kind:"s",text:t});function et(t,n){return t&&n?t.n===n.n&&t.r===n.r:t===n}const rt=(t,n)=>0===C(t.c,n.c)&&t.pi===n.pi&&t.e===n.e&&et(t.root,n.root);function ot(t){if("number"==typeof t)return t;if(K(t)){let n=L(t.c);return t.pi&&(n*=Math.PI**t.pi),t.e&&(n*=Math.E**t.e),t.root&&(n*=L(E(t.root.r))**(1/t.root.n)),n}if("boolean"==typeof t)return t?1:0;throw new F("not a number")}function it(t,...n){if(Number.isNaN(t))throw new B("undefined");if(!Number.isFinite(t)&&n.every(Number.isFinite))throw new F("too large to calculate");return t}const at=t=>"boolean"==typeof t?t:K(t)?0n!==t.c.n:"number"==typeof t?0!==t:Boolean(t);function st(t){if("bigint"==typeof t)return J(E(t));if("number"==typeof t)return Number.isFinite(t)?J(Number.isInteger(t)&&Math.abs(t)<=Number.MAX_SAFE_INTEGER?E(BigInt(t)):G(String(t))):t;if("boolean"==typeof t)return t;if("string"==typeof t)return/^-?(\d+\.?\d*|\.\d+)(\.\.)?$/.test(t.trim())?J(G(t)):Yt(e(t),{});if(Array.isArray(t))return!t.group&&a(t)?tt(t.map(t=>tt(t.map(st),"[]")),"[]"):tt(t.map(st),t.group||"()");if(K(t)||"function"==typeof t)return t;throw new F(`can't use ${typeof t} as a value`)}function ut(t){return Array.isArray(t)?t.map(ut):t&&"s"===t.kind?t.text:"boolean"==typeof t?t:ot(t)}function ct(t,n){if(t<2n)return t;const e=BigInt(n);let r=1n<<BigInt(Math.ceil(S(t)/n));for(;;){const n=((e-1n)*r+t/r**(e-1n))/e;if(n>=r)return r;r=n}}function lt(t,n,e,r=0,o=0){if(0n===e)return J(T);const{coef:i,root:a}=function(t,n){let e=1n,r=n;const o=BigInt(t),i=r<10n**24n?1000000n:10000n;for(let t=2n;t<=i&&t*t<=r;t+=2n===t?1n:2n){const n=t**o;for(;r%n===0n;)r/=n,e*=t}const a=ct(r,t);if(a**o===r&&(e*=a,r=1n),1n===r)return{coef:e,root:null};for(let n=t;n>=2;n--){if(t%n!==0)continue;const o=ct(r,n);if(o**BigInt(n)===r)return{coef:e,root:{n:t/n,r:o}}}return{coef:e,root:{n:t,r:r}}}(n,e);return a&&1===a.n?J(q(t,E(i*a.r)),r,o):J(q(t,E(i)),r,o,a)}function ft(t,n){const e=q(t.c,n.c);if(S(e.n)+S(e.d)>O.bits)return null;const r=t.pi+n.pi,o=t.e+n.e;if(!t.root||!n.root)return J(e,r,o,t.root||n.root);const i=Wt(t.root.n,n.root.n);if(i>O.rootIndex)return null;const a=t.root.r**BigInt(i/t.root.n)*n.root.r**BigInt(i/n.root.n);return S(a)>4e3?null:lt(e,i,a,r,o)}function ht(t){if(0n===t.c.n)throw new B("division by zero");const n=J(D(W,t.c),-t.pi,-t.e);if(!t.root)return n;const{n:e,r:r}=t.root;return ft(n,lt(E(1n,r),e,r**BigInt(e-1)))}function mt(t,n){if(0n===n){if(0n===t.c.n)throw new B("0^0 is undefined");return J(W)}if(n<0n){const e=ht(t);return e&&mt(e,-n)}if((S(t.c.n)+S(t.c.d)+(t.root?S(t.root.r):0))*Number(n)>O.bits||n>100000n)return null;const e=E(t.c.n**n,t.c.d**n),r=Number(n);if(!t.root)return J(e,t.pi*r,t.e*r);const{n:o,r:i}=t.root,a=i**(n/BigInt(o));return lt(q(e,E(a)),o,i**(n%BigInt(o))||1n,t.pi*r,t.e*r)}function gt(t,n,e){if(!Q(t)||e>1000n)return null;const r=mt(t,n);if(!r)return null;let{n:o,d:i}=r.c,a=!1;if(o<0n){if(e%2n==0n)throw new B("not a real number");a=!0,o=-o}const s=function(t,n){const e=t.n*t.d**BigInt(n-1);return S(e)>4e3?null:lt(E(1n,t.d),n,e)}({n:o,d:i},Number(e));return s?a?J(_(s.c),s.pi,s.e,s.root):s:null}function pt(t){return n=>Array.isArray(n)?tt(n.map(n=>pt(t)(n)),n.group):t(n)}function dt(t){const n=(e,r)=>{const o=Array.isArray(e),i=Array.isArray(r);if(o&&i){if(e.length!==r.length)throw new B("lists of different lengths");return tt(e.map((t,e)=>n(t,r[e])),e.group)}return o?tt(e.map(t=>n(t,r)),e.group):i?tt(r.map(t=>n(e,t)),r.group):t(e,r)};return n}const bt=dt((t,n)=>K(t)&&K(n)&&function(t,n){if(0n===t.c.n)return n;if(0n===n.c.n)return t;if(t.pi!==n.pi||t.e!==n.e||!et(t.root,n.root))return null;const e=Z(t.c,n.c);return S(e.n)+S(e.d)>O.bits?null:J(e,t.pi,t.e,t.root)}(t,n)||it(ot(t)+ot(n),ot(t),ot(n))),wt=pt(t=>K(t)?J(_(t.c),t.pi,t.e,t.root):-ot(t)),Mt=(t,n)=>bt(t,wt(n)),yt=dt((t,n)=>K(t)&&K(n)&&ft(t,n)||it(ot(t)*ot(n),ot(t),ot(n))),vt=dt((t,n)=>{if(U(n))throw new B("division by zero");if(K(t)&&K(n)){const e=ht(n),r=e&&ft(t,e);if(r)return r}return it(ot(t)/ot(n),ot(t),ot(n))}),xt=dt((t,n)=>{if(K(t)&&Q(n)){const{n:e,d:r}=n.c,o=1n===r?mt(t,e):gt(t,e,r);if(o)return o}const e=ot(t),r=ot(n);if(0===e&&0===r)throw new B("0^0 is undefined");if(0===e&&r<0)throw new B("division by zero");if(e<0&&!Number.isInteger(r))throw new B("not a real number");return it(e**r,e,r)});function Nt(t,n){if(Q(t)&&Q(n))return C(t.c,n.c);if(K(t)&&K(n)&&rt(t,n))return 0;const e=ot(t),r=ot(n);return e===r||Number.isFinite(e)&&Number.isFinite(r)&&Math.abs(e-r)<=1e-12*Math.max(1,Math.abs(e),Math.abs(r))?0:e<r?-1:1}function It(t,n){return Array.isArray(t)||Array.isArray(n)?Array.isArray(t)&&Array.isArray(n)&&t.length===n.length&&t.every((t,e)=>It(t,n[e])):t&&"s"===t.kind?Boolean(n&&"s"===n.kind&&t.text===n.text):"boolean"==typeof t||"boolean"==typeof n?t===n:0===Nt(t,n)}const At={0:()=>R(0),2:()=>R(1,2),3:()=>lt(E(1n,2n),2,2n),4:()=>lt(E(1n,2n),2,3n),6:()=>R(1)};function $t(t){t=(t%24+24)%24;const[n,e]=t<=6?[t,1]:t<=12?[12-t,1]:t<=18?[t-12,-1]:[24-t,-1],r=At[n];return r?e<0?wt(r()):r():null}const Bt=t=>$t(t+6),Ft=(t,n)=>Math.abs(t)<1e-15&&Math.abs(n)>1e-6?0:t;function Ot(t,n){const e=function(t){if(U(t))return 0;if(!K(t)||1!==t.pi||t.e||t.root)return null;const n=q(t.c,E(12n));return 1n!==n.d?null:Number((n.n%24n+24n)%24n)}(n);if(null!==e){const n=$t(e),r=Bt(e);if(n&&r)switch(t){case"sin":return n;case"cos":return r;case"tan":return vt(n,r);case"cot":return vt(r,n);case"sec":return vt(R(1),r);case"csc":return vt(R(1),n)}}const r=ot(n),o=Ft(Math.sin(r),r),i=Ft(Math.cos(r),r),a={sin:o,cos:i,tan:o/i,cot:i/o,sec:1/i,csc:1/o}[t];if(!Number.isFinite(a)&&Number.isFinite(r))throw new B("undefined");return it(a)}function kt(t,n){const e={arcsin:[-6,6],arccos:[0,12],arctan:[-5,5]}[t],r=n=>"arcsin"===t?$t(n):"arccos"===t?Bt(n):Bt(n)&&!U(Bt(n))?vt($t(n),Bt(n)):null;if(K(n))for(let t=e[0];t<=e[1];t++){const e=r(t);if(e&&K(e)&&rt(e,n))return J(E(BigInt(t),12n),1)}const o=ot(n);if("arctan"!==t&&Math.abs(o)>1)throw new B("not a real number");return{arcsin:Math.asin,arccos:Math.acos,arctan:Math.atan}[t](o)}function jt(t){if(K(t)){if(0n===t.c.n)throw new B("ln 0 is undefined");if(t.c.n<0n)throw new B("not a real number");if(1n===t.c.n&&1n===t.c.d&&!t.pi&&!t.root)return R(t.e)}const n=ot(t);if(n<=0)throw new B(0===n?"ln 0 is undefined":"not a real number");return Math.log(n)}function Pt(t){if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*Pt(1-t));const n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];let e=n[0];const r=(t-=1)+7+.5;for(let r=1;r<9;r++)e+=n[r]/(t+r);return Math.sqrt(2*Math.PI)*r**(t+.5)*Math.exp(-r)*e}function St(t,n){const e=Y(t)??("number"==typeof t&&Number.isInteger(t)?BigInt(t):null);if(null===e)throw new B(`${n} needs whole numbers`);return e}const zt=pt(t=>Q(t)?J(E(V(t.c))):st(Math.floor(ot(t)))),Et=pt(t=>Q(t)?J(E(-V(_(t.c)))):st(Math.ceil(ot(t))));function Tt(t,n){const e=Number(St(n,"round"));if(Q(t)){const n=E(10n**BigInt(Math.abs(e))),r=e>=0?q(t.c,n):D(t.c,n),o=V(Z(q(E(2n),E(P(r.n),r.d)),W))/2n,i=E(r.n<0n?-o:o);return J(e>=0?D(i,n):q(i,n))}const r=10**e;return Math.sign(ot(t))*Math.round(Math.abs(ot(t))*r)/r}const Wt=(t,n)=>t/Zt(t,n)*n,Zt=(t,n)=>n?Zt(n,t%n):t,qt={pi:()=>X,"π":()=>X,tau:()=>J(E(2n),1),"τ":()=>J(E(2n),1),e:()=>H,"∞":()=>1/0,"-∞":()=>-1/0,true:()=>!0,false:()=>!1},Dt={abs:t=>K(t)?J(E(P(t.c.n),t.c.d),t.pi,t.e,t.root):Math.abs(ot(t)),floor:zt,ceil:Et,sqrt:t=>xt(t,R(1,2)),ln:pt(jt),loglog:pt(t=>jt(jt(t))),logloglog:pt(t=>jt(jt(jt(t)))),expm1:pt(t=>U(t)?R(0):Math.expm1(ot(t))),sinh:pt(t=>U(t)?R(0):Math.sinh(ot(t))),cosh:pt(t=>U(t)?R(1):Math.cosh(ot(t))),tanh:pt(t=>U(t)?R(0):Math.tanh(ot(t))),arcsinh:pt(t=>U(t)?R(0):Math.asinh(ot(t))),arccosh:pt(t=>{const n=ot(t);if(n<1)throw new B("not a real number");return 1===n?R(0):Math.acosh(n)}),arctanh:pt(t=>{const n=ot(t);if(Math.abs(n)>=1)throw new B("undefined");return U(t)?R(0):Math.atanh(n)}),"!":pt(function(t){const n=Y(t)??("number"==typeof t&&Number.isInteger(t)?BigInt(t):null);if(null!==n){if(n<0n)throw new B("factorial of a negative number");if(n>BigInt(O.factorial))throw new F("too large to calculate");let t=1n;for(let e=2n;e<=n;e++)t*=e;return J(E(t))}const e=ot(t);if(e<0&&Number.isInteger(e))throw new B("factorial of a negative number");return it(Pt(e+1),e)}),neg:wt,pm:t=>tt([t,wt(t)],"pm"),"\\not":t=>!at(t),det:t=>Xt.det(t)};for(const t of["sin","cos","tan","csc","sec","cot"])Dt[t]=pt(n=>Ot(t,n));for(const t of["arcsin","arccos","arctan"])Dt[t]=pt(n=>kt(t,n));const _t=new Set(["pmatrix","bmatrix"]),Ct=t=>a(t)&&(_t.has(t.group)||"[]"===t.group&&t.every(t=>"[]"===t.group)&&(t.length>1||t[0].length>1)),Vt=t=>s(t)&&!Ct(t)&&"pm"!==t.group,Lt=u({add:bt,sub:Mt,mul:yt,div:vt,isZero:t=>K(t)?0n===t.c.n:Math.abs(ot(t))<1e-12,zero:()=>R(0),one:()=>R(1),size:t=>Math.abs(ot(t)),fail:t=>{throw new B(t)},make:(t,n)=>tt(t.map(t=>tt(t,"[]")),n&&n.group?n.group:"bmatrix")}),Gt=(t,n)=>tt(t,n&&n.group?n.group:"[]"),Jt=(t,n)=>(...e)=>{const r=e.length>1&&e.every(Vt)?tt(e.map(t=>tt(t,"[]")),"[]"):e[0];if(e.length>1&&r===e[0])throw new F(`${t} of more than one thing`);if(!Ct(r))throw new F(`${t} of something that isn't a matrix`);return n(r)};function Rt(t,n){return Ct(t)&&Ct(n)?Lt.times(t,n):Ct(t)&&Vt(n)?Gt(Lt.timesVector(t,n),n):Vt(t)&&Ct(n)?Gt(Lt.vectorTimes(t,n),t):yt(t,n)}const Xt={det:Jt("det",Lt.det),inv:Jt("inv",Lt.inverse),inverse:Jt("inverse",Lt.inverse),transpose:Jt("transpose",Lt.transpose),trace:Jt("trace",Lt.trace),tr:Jt("tr",Lt.trace),rank:Jt("rank",t=>R(Lt.rank(t))),rref:Jt("rref",Lt.rref),identity:t=>{const n=Y(t);if(null===n||n<1n||n>100n)throw new F("identity(n) needs a whole number n");return Lt.identity(Number(n))},dot:(t,n)=>{if(!Vt(t)||!Vt(n))throw new F("dot of something that isn't a vector");return Lt.dot(t,n)},cross:(t,n)=>{if(!Vt(t)||!Vt(n))throw new F("cross of something that isn't a vector");return Gt(Lt.cross(t,n),t)},linsolve:(t,n)=>{if(!Ct(t)||!Ct(n)&&!Vt(n))throw new F("linsolve(A, b) needs a matrix and a vector");return Ct(n)?Lt.solve(t,n):Gt(Lt.solve(t,n),n)}};function Ht(t,n){const e=t.args.map(t=>tt("op"===t.type&&"[]"===t.op?t.args.map(n):[n(t)],"[]"));if(e.some(t=>t.length!==e[0].length))throw new B("rows of different lengths");return tt(e,"vmatrix"===t.op?"bmatrix":t.op)}const Kt={"+":bt,"-":Mt,"*":Rt,"/":(t,n)=>Ct(n)?Rt(t,Lt.inverse(n)):vt(t,n),"^":function(t,n){if(!Ct(t))return xt(t,n);const e=Y(n);if(null===e)throw new F("a matrix to a power that is not a whole number");return Lt.power(t,e)},"±":(t,n)=>tt([bt(t,n),Mt(t,n)],"pm"),mod:dt(function(t,n){if(U(n))throw new B("division by zero");if(Q(t)&&Q(n))return J(Z(t.c,_(q(n.c,E(V(D(t.c,n.c)))))));const e=ot(t),r=ot(n);return it((e%r+r)%r)}),log:dt(function(t,n){if(K(t)&&rt(t,H))return jt(n);const e=ot(t),r=ot(n);if(e<=0||1===e)throw new B("not a valid base");if(r<=0)throw new B(0===r?"log 0 is undefined":"not a real number");const o=Math.log(r)/Math.log(e);if(Q(t)&&Q(n))for(let e=1n;e<=12n;e++){const r=Math.round(o*Number(e));if(Math.abs(o*Number(e)-r)>1e-9)continue;const i=mt(t,BigInt(r)),a=mt(n,e);if(i&&a&&rt(i,a))return J(E(BigInt(r),e))}return o}),root:dt((t,n)=>xt(n,vt(R(1),t))),atan2:(t,n)=>Math.atan2(ot(t),ot(n)),round:Tt,fixed:function(t,n){const e=Number(St(n,"fixed"));if(e<0)throw new B("fixed needs 0 or more decimal places");const r=Tt(t,n);if(Q(r)){const t=r.c.n*10n**BigInt(e)/r.c.d,n=(t<0n?-t:t).toString().padStart(e+1,"0");return nt(`${t<0n?"-":""}${n.slice(0,n.length-e)}${e?"."+n.slice(-e):""}`)}return nt(Number(ot(r)).toFixed(e))},perm:function(t,n){const e=St(t,"permutations"),r=St(n,"permutations");if(r<0n||r>e)throw new B("undefined");if(r>BigInt(O.terms))throw new F("too large to calculate");let o=1n;for(let t=e-r+1n;t<=e;t++)o*=t;return J(E(o))},comb:function(t,n){const e=St(t,"combinations");let r=St(n,"combinations");if(r<0n||r>e)throw new B("undefined");if(e-r<r&&(r=e-r),r>BigInt(O.terms))throw new F("too large to calculate");let o=1n;for(let t=1n;t<=r;t++)o=o*(e-r+t)/t;return J(E(o))},"=":(t,n)=>It(t,n),"===":(t,n)=>It(t,n),"≠":(t,n)=>!It(t,n),"≠=":(t,n)=>!It(t,n),"≈":(t,n)=>Math.abs(ot(t)-ot(n))<=1e-9*Math.max(1,Math.abs(ot(t)),Math.abs(ot(n))),"<":(t,n)=>Nt(t,n)<0,">":(t,n)=>Nt(t,n)>0,"≤":(t,n)=>Nt(t,n)<=0,"≥":(t,n)=>Nt(t,n)>=0,"&":(t,n)=>at(t)&&at(n),"|":(t,n)=>at(t)||at(n),"\\xor":(t,n)=>at(t)!==at(n),"\\nor":(t,n)=>!(at(t)||at(n)),"\\nand":(t,n)=>!(at(t)&&at(n))},Qt={sum:t=>t.reduce((t,n)=>bt(t,n),R(0)),prod:t=>t.reduce((t,n)=>yt(t,n),R(1)),max:t=>t.reduce((t,n)=>Nt(n,t)>0?n:t),min:t=>t.reduce((t,n)=>Nt(n,t)<0?n:t),mean:t=>vt(Qt.sum(t),R(t.length)),gcd:t=>J(E(t.map(t=>St(t,"gcd")).reduce(z)))},Ut=["∈","∉","∪","∩","pmod","random","(]","[)"];function Yt(e,r){if(++k>O.steps)throw new F("too much to work out");switch(e.type){case"number":return J(G(e.value));case"string":return nt(e.value.slice(1,-1));case"symbol":return tn(e.value,r)}const i=n(e);if(i)return Yt(i,r);const{op:a,args:s}=e,u=t=>Yt(t,r);if("?:"===a)return at(u(s[0]))?u(s[1]):u(s[2]);if("_"===a){if(s.every(t=>"op"!==t.type))return tn(`${s[0].value}_${s[1].value}`,r);throw new F("subscript")}if("der"===a)return function(t,n){const[e,r]=t.args,o=en(r);if(!o||!Object.prototype.hasOwnProperty.call(n,o))throw new F(`a derivative needs a value for ${o||"its variable"}`);const i=ot(n[o]),a=nn(e,o,n);if(!Number.isFinite(a(i)))throw new B("undefined");const s=1e-6*Math.max(1,Math.abs(i)),u=(a(i+s)-a(i))/s,c=(a(i)-a(i-s))/s;if(!Number.isFinite(u)||!Number.isFinite(c)||Math.abs(u-c)>.001*Math.max(1,Math.abs(u)))throw new B("not differentiable here");let l=.1*Math.max(1,Math.abs(i));const f=1.4,h=[[(a(i+l)-a(i-l))/(2*l)]];let m=h[0][0],g=1/0;for(let t=1;t<12;t++){l/=f,h[t]=[(a(i+l)-a(i-l))/(2*l)];let n=f*f;for(let e=1;e<=t;e++){h[t][e]=(h[t][e-1]*n-h[t-1][e-1])/(n-1),n*=f*f;const r=Math.max(Math.abs(h[t][e]-h[t][e-1]),Math.abs(h[t][e]-h[t-1][e-1]));r<=g&&(g=r,m=h[t][e])}if(Math.abs(h[t][t]-h[t-1][t-1])>=2*g)break}if(!Number.isFinite(m))throw new B("not differentiable here");return sn(m,g)}(e,r);if("int"===a)return function(t,n){const[e,r,i,a]=t,s=t=>t&&"symbol"===t.type&&/^[a-zA-Zʹ-Ͽ]$/.test(t.value);let u,c,l;if(4===t.length)[u,c,l]=[en(r),i,a];else{if(3!==t.length||s(r))throw new F("an integral needs limits to be calculated");[u,c,l]=[o(e)||"x",r,i]}let f=ot(Yt(c,n)),h=ot(Yt(l,n));if(f===h)return R(0);let m=1;f>h&&([f,h]=[h,f],m=-1);const g=nn(e,u,n),{value:p,error:d}=rn(g,f,h);return sn(m*p,d)}(s,r);if("lim"===a)return function(t,n){const[e,r,i,a]=t;let s,u,c=0;if(2===t.length&&"op"===r.type&&"→"===r.op)[s,u]=[en(r.args[0]),r.args[1]];else if(2===t.length)[s,u]=[o(e),r];else{if(!(t.length>=3))throw new F("a limit needs a point");[s,u]=[en(r),i]}if(4===t.length){const t="op"===a.type?"":String(a.value).toLowerCase();c=t.startsWith("r")||"+"===t?1:-1}if(!s)throw new F("a limit needs a variable");const l=Yt(u,n),f=ot(l),h=nn(e,s,n);let m,g;if(Number.isFinite(f))if(c)({value:m,error:g}=an(t=>h(f+c*t*Math.max(1,Math.abs(f)))));else{const t=an(t=>h(f+t*Math.max(1,Math.abs(f)))),r=an(t=>h(f-t*Math.max(1,Math.abs(f))));if(t.value===r.value)({value:m,error:g}=t);else{if(!(Number.isFinite(t.value)&&Number.isFinite(r.value)&&Math.abs(t.value-r.value)<=1e-6*Math.max(1,Math.abs(t.value))))throw new B("the limit does not exist");m=(t.value+r.value)/2,g=Math.max(t.error,r.error,Math.abs(t.value-r.value))}try{const t=Yt(e,{...n,[s]:l});if(Math.abs(ot(t)-m)<=1e-6*Math.max(1,Math.abs(m)))return t}catch(t){if(!(t instanceof B))throw t}}else({value:m,error:g}=an(t=>h(Math.sign(f)/t)));return Number.isFinite(m)?sn(m,g):m}(s,r);if("\\sumidx"===a||"\\prodidx"===a)return function(t,n,e){const[r,i,a]=n;if(n.length<3)throw new F("a sum needs its limits");let s,u=i;"op"===i.type&&"="===i.op&&"symbol"===i.args[0].type?[s,u]=[i.args[0].value,i.args[1]]:s=o(r)||"n";const c=St(Yt(u,e),"a sum"),l=Yt(a,e),f=t?bt:yt;if(l===1/0){if(!t)throw new F("an infinite product");return function(t,n){const e=[],r=[];let o=0,i=n;for(let a=4;a<=17;a++){const s=2**a;for(;i<n+s;i++){const n=t(i);if(!Number.isFinite(n))throw new B("undefined");o+=n}if(e.push(s),r.push(o),a>=6&&r[r.length-1]===r[r.length-2])return sn(o,0)}const a=r[r.length-1]-r[r.length-2],s=r[r.length-2]-r[r.length-3];if(Math.abs(a)>=.9*Math.abs(s)&&Math.abs(a)>1e-12)throw new B("the series diverges");const u=e.slice(-7).map(t=>1/t),c=r.slice(-7),l=r.slice(-8,-1),f=(t,n)=>{const e=n.slice();for(let n=1;n<t.length;n++)for(let r=0;r<t.length-n;r++)e[r]=(t[r+n]*e[r]-t[r]*e[r+1])/(t[r+n]-t[r]);return e[0]},h=f(u,c),m=f(e.slice(-8,-1).map(t=>1/t),l);return sn(h,Math.abs(h-m))}(nn(r,s,e),Number(c))}const h=St(l,"a sum");if(h-c+1n>BigInt(O.terms))throw new F("too many terms to add one by one");let m=R(t?0:1);for(let t=c;t<=h;t++)m=f(m,Yt(r,{...e,[s]:J(E(t))}));return m}("\\sumidx"===a,s,r);if(["()","[]","{}"].includes(a))return tt(s.map(u),a);if("pmatrix"===a||"bmatrix"===a)return Ht(e,u);if("vmatrix"===a)return Lt.det(Ht(e,u));if("^"===a&&"symbol"===s[1].type&&"T"===s[1].value&&!Object.prototype.hasOwnProperty.call(r,"T")){const t=u(s[0]);if(Ct(t))return Lt.transpose(t)}if(Ut.includes(a))return function(n,e){const r={};for(const[t,n]of Object.entries(e))"function"!=typeof n&&(r[t]=ut(n));try{return st(function(n,e={}){0===I&&(N=0),I++;try{return A(t(n),e)}finally{I--}}(n,r))}catch(t){throw new F(t.message)}}(e,r);if(a.startsWith("\\:")){const t=a.slice(2);if("function"!=typeof r[t]&&Object.prototype.hasOwnProperty.call(Xt,t))return Xt[t](...s.map(u));const n=r[t];if("function"!=typeof n)throw new F(`no function ${a.slice(2)}`);return st(n(...s.map(t=>ut(u(t)))))}if(Dt[a]&&1===s.length)return Dt[a](u(s[0]));if(Kt[a]&&2===s.length)return Kt[a](u(s[0]),u(s[1]));if(Qt[a])return Qt[a](s.map(u));throw new F(`can't calculate '${a}'`)}function tn(t,n){if(Object.prototype.hasOwnProperty.call(n,t))return n[t];if(Object.prototype.hasOwnProperty.call(qt,t))return qt[t]();throw new F(`no value for '${t}'`)}function nn(t,n,e){return r=>{try{return ot(Yt(t,{...e,[n]:r}))}catch(t){if(t instanceof B)return NaN;throw t}}}const en=t=>"symbol"===t.type?t.value:null;function rn(t,n,e){if(n===-1/0&&e===1/0){const n=rn(t,-1/0,0),e=rn(t,0,1/0);return{value:n.value+e.value,error:n.error+e.error}}return e===1/0?on(e=>t(n+e/(1-e))/((1-e)*(1-e)),0,1):n===-1/0?on(n=>t(e-n/(1-n))/((1-n)*(1-n)),0,1):on(t,n,e)}function on(t,n,e){const r=(e-n)/2;let o=1,i=0,a=NaN,s=NaN,u=0;const c=o=>{const i=Math.PI/2*Math.sinh(Math.abs(o)),a=Math.exp(-2*i),s=2*r*a/(1+a),c=r*(Math.PI/2)*Math.cosh(o)*(4*a)/((1+a)*(1+a));if(0===s||0===c)return 0;const l=o>0?e-s:n+s;if(0!==o&&(l<=n||l>=e))return 0;const f=t(0===o?(n+e)/2:l);if(!Number.isFinite(f)){if(s<1e-6*r)return 0;throw new B("the integral diverges")}return Math.abs(o)>3.5&&(u=Math.max(u,Math.abs(c*f))),c*f};i=c(0);for(let t=o;t<=4;t+=o)i+=c(t)+c(-t);a=o*i;for(let t=1;t<=8;t++){o/=2;for(let t=o;t<=4;t+=2*o)i+=c(t)+c(-t);s=a,a=o*i;const n=Math.max(1,Math.abs(a));if(u>1e-8*n)throw new B("the integral diverges");if(t>=3&&Math.abs(a-s)<=1e-13*n)break}const l=Math.abs(a-s);if(!Number.isFinite(a)||l>1e-6*Math.max(1,Math.abs(a)))throw new B("the integral does not converge");return{value:a,error:l}}function an(t){const n=[],e=[];for(let r=0;r<30;r++){const o=.1/2**r,i=t(o);Number.isFinite(i)&&(n.push(o),e.push(i))}if(e.length<6)throw new B("undefined");const r=e.slice(1).map((t,n)=>t-e[n]).slice(-6);if(r.every(t=>Math.sign(t)===Math.sign(r[0])&&0!==t)&&Math.abs(r[5])>=.95*Math.abs(r[0])&&Math.abs(e[e.length-1])>10)return{value:Math.sign(r[0])*(1/0),error:0};const o=t=>{const r=n.slice(t,t+8),o=e.slice(t,t+8);for(let t=1;t<r.length;t++)for(let n=0;n<r.length-t;n++)o[n]=(r[n+t]*o[n]-r[n]*o[n+1])/(r[n+t]-r[n]);return o[0]};let i=null;for(let t=0;t+9<=e.length;t++){const n=o(t),e=o(t+1),r=Math.abs(n-e);Number.isFinite(n)&&(!i||r<i.error)&&(i={value:n,error:r})}const a=e[e.length-1],s=Math.abs(a-e[e.length-2]);if(!i||i.error>Math.max(s,1e-6*Math.max(1,Math.abs(a)))){if(s<=1e-6*Math.max(1,Math.abs(a)))return{value:a,error:10*s};throw new B("the limit could not be found")}return i}function sn(t,n=0){if(!Number.isFinite(t))return t;const e=Math.max(1e-10,4*n)*Math.max(1,Math.abs(t));if(e>1e-6*Math.max(1,Math.abs(t)))return t;if(Math.abs(t)<e)return R(0);const r=[[R(1),1e3],[X,100],[J(W,2),100],[H,100],...[2n,3n,5n,6n,7n].map(t=>[J(W,0,0,{n:2,r:t}),100])];for(const[n,o]of r){const r=t/ot(n),i=un(r,o);if(i&&Math.abs(Number(i.n)/Number(i.d)-r)*ot(n)<=e)return ft(J(i),n)}return t}function un(t,n){if(!Number.isFinite(t)||Math.abs(t)>1e12)return null;let[e,r,o,i]=[0,1,1,0],a=t;for(let t=0;t<40;t++){const t=Math.floor(a),s=t*r+e,u=t*i+o;if(u>n)break;if([e,r,o,i]=[r,s,i,u],Math.abs(a-t)<1e-15)break;a=1/(a-t)}return i?E(BigInt(r),BigInt(i)):null}function cn(t,n){if("boolean"==typeof t)return String(t);if(t&&"s"===t.kind)return JSON.stringify(t.text);if(Array.isArray(t)){if("pm"===t.group&&2===t.length&&It(t[1],wt(t[0])))return`±${ln(t[0],n)}`;if(_t.has(t.group)&&a(t))return`${t.group}(${t.map(t=>`[${t.map(t=>cn(t,n)).join(", ")}]`).join(", ")})`;const[e,r]={"()":"()","[]":"[]","{}":"{}"}[t.group]||"{}";return e+t.map(t=>cn(t,n)).join(", ")+r}return"number"==typeof t?fn(t,n):n.decimal||null!==n.places?function(t,n){if(Q(t)&&null===n.places){let e=t.c.d,r=0,o=0;for(;e%2n==0n;)e/=2n,r++;for(;e%5n==0n;)e/=5n,o++;const i=Math.max(r,o);if(1n===e&&i<=n.digits){const e=t.c.n*10n**BigInt(i)/t.c.d,r=e<0n,o=P(e).toString().padStart(i+1,"0"),a=i?`${o.slice(0,-i)}.${o.slice(-i)}`:o;if(o.length<=n.maxDigits)return(r?"-":"")+hn(a)}}return Q(t)&&null!==n.places?cn(Tt(t,R(n.places)),{...n,places:null,decimal:!0}):fn(ot(t),n)}(t,n):function(t,n){const{c:e}=t,r=P(e.n);if(r.toString().length>n.maxDigits||e.d.toString().length>n.maxDigits)return function(t,n){if(!Q(t)||1n!==t.c.d)return fn(ot(t),n);const e=P(t.c.n).toString(),r=BigInt(e.slice(0,n.digits+1)),o=((r+5n)/10n).toString(),i=e.length-1+(o.length>n.digits?1:0),a=hn(`${o[0]}.${o.slice(1,n.digits)}`);return`${t.c.n<0n?"-":""}${a}*10^(${i})`}(t,n);const o=(t,n)=>1===n?t:`${t}^${n}`,i=[],a=[];t.pi>0&&i.push(o("pi",t.pi));t.pi<0&&a.push(o("pi",-t.pi));t.e>0&&i.push(o("e",t.e));t.e<0&&a.push(o("e",-t.e));t.root&&i.push(2===t.root.n?`sqrt(${t.root.r})`:`root(${t.root.n}, ${t.root.r})`);1n===r&&i.length||i.unshift(r.toString());1n!==e.d&&a.unshift(e.d.toString());const s=t=>t.length>1?`(${t.join("*")})`:t[0],u=a.length?`${s(i)}/${s(a)}`:i.join("*");return(e.n<0n?"-":"")+u}(t,n)}const ln=(t,n)=>{const e=cn(t,n);return/^[\d.]+$|^[a-zπ]+$/i.test(e)?e:`(${e})`};function fn(t,n){if(t===1/0)return"∞";if(t===-1/0)return"-∞";if(Object.is(t,-0)||0===t)return"0";if(null!==n.places&&Math.abs(t)<1e21)return t.toFixed(n.places);const e=Math.abs(t);if(e>=1e15||e<1e-6){const[e,r]=t.toExponential(n.digits-1).split("e");return`${hn(e)}*10^(${Number(r)})`}return String(Number(t.toPrecision(n.digits)))}const hn=t=>t.includes(".")?t.replace(/\.?0+$/,""):t;function mn(t,n={},o={}){const i="string"==typeof t?e(t):r(t),a={};for(const[t,e]of Object.entries(n))a[t]=st(e);let s;0===j&&(k=0),j++;try{s=Yt(i,a)}finally{j--}const u={decimal:!1,places:null,digits:12,maxDigits:50,...o};void 0===u.places&&(u.places=null);const c=t=>Array.isArray(t)?t.every(c):"number"!=typeof t;return{value:ut(s),text:cn(s,u),exact:c(s)}}function gn(t,n={}){let e=t.trim();const r={},o=/^(~|≈)\s*(\d+)?/.exec(e);o&&(r.decimal=!0,void 0!==o[2]&&(r.places=Number(o[2])),e=e.slice(o[0].length)),/\d\.\d|\.\d/.test(e)&&(r.decimal=!0);try{const{text:t}=mn(e,n,r);return t.startsWith('"')||/^\d+(\.\d+)?$/.test(t)?t:`(${t})`}catch(t){if(t instanceof B)return'"undefined"';if(t instanceof F)return`(${e})`;throw t}}i(gn);for(const t of[O,At,qt,Dt,Kt,Qt])Object.setPrototypeOf(t,null);Object.setPrototypeOf(Xt,null);export{mn as a,gn as c};
@@ -0,0 +1,2 @@
1
+ /* Inline Math 0.2.0 — MIT licence; MathZetta not included: map mathzetta, mathzetta/speech and mathzetta/calculate with an import map */
2
+ import{GREEK as t,isCustomFunction as e,matrixRows as r,unaryNeedsBrackets as s,isMinusOneTimes as i,bracketedSides as n,isImplicitProduct as a,customName as l,needsBrackets as h,derivativeOrder as o,bracketOp as c,precedenceOf as u,isVariable as d,firstLeaf as p,firstVariable as m,MATRICES as f,walk as g,toPostfix as b,operator as $,VARIADIC as x,parseTree as v,fromPostfix as y}from"mathzetta";import{toAudioSpeech as w}from"mathzetta/speech";const L={"(":{fill:"M0.92,0 C0.1,0.2 0.1,0.8 0.92,1 L1,0.975 C0.48,0.75 0.48,0.25 1,0.025 Z"},")":{fill:"M0.08,0 C0.9,0.2 0.9,0.8 0.08,1 L0,0.975 C0.52,0.75 0.52,0.25 0,0.025 Z"},"{":{fill:"M1,0 C0.45,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.35,0.49 0.05,0.5 C0.35,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.45,1 1,1 L1,0.985 C0.68,0.985 0.64,0.95 0.64,0.8 L0.64,0.62 C0.64,0.53 0.55,0.505 0.3,0.5 C0.55,0.495 0.64,0.47 0.64,0.38 L0.64,0.2 C0.64,0.05 0.68,0.015 1,0.015 Z"},"}":{fill:"M0,0 C0.55,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.65,0.49 0.95,0.5 C0.65,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.55,1 0,1 L0,0.985 C0.32,0.985 0.36,0.95 0.36,0.8 L0.36,0.62 C0.36,0.53 0.45,0.505 0.7,0.5 C0.45,0.495 0.36,0.47 0.36,0.38 L0.36,0.2 C0.36,0.05 0.32,0.015 0,0.015 Z"},sqrt:{stroke:"M0,0.62 L0.18,0.55 L0.45,0.97 L0.98,0.015"},cancel:{stroke:"M0,1 L1,0"},int:{stroke:"M0.95,0.09 C0.9,0.01 0.72,0 0.66,0.12 C0.6,0.25 0.42,0.75 0.34,0.88 C0.28,0.99 0.1,0.99 0.05,0.91"},sum:{fill:"M0.04,0 L0.94,0 L0.98,0.24 L0.94,0.24 C0.9,0.1 0.8,0.07 0.62,0.07 L0.24,0.07 L0.58,0.5 L0.2,0.93 L0.64,0.93 C0.82,0.93 0.92,0.9 0.95,0.76 L0.99,0.76 L0.94,1 L0.02,1 L0.47,0.47 Z"},prod:{fill:"M0,0 L1,0 L1,0.04 L0.88,0.05 L0.88,0.95 L1,0.96 L1,1 L0.62,1 L0.62,0.96 L0.74,0.95 L0.74,0.06 L0.26,0.06 L0.26,0.95 L0.38,0.96 L0.38,1 L0,1 L0,0.96 L0.12,0.95 L0.12,0.05 L0,0.04 Z"}};function M(t,e,r=""){const s=L[t];return`<svg class="${e}" viewBox="0 0 1 1" preserveAspectRatio="none" aria-hidden="true"${r?` style="${r}"`:""}>${s.fill?`<path d="${s.fill}" fill="currentColor"/>`:`<path d="${s.stroke}" fill="none" stroke="currentColor" vector-effect="non-scaling-stroke"/>`}</svg>`}const k=.8,C=.2,z=.25,P=.7,j="−",A={"+":"add","-":"sub","*":"mul","/":"frac","^":"pow",_:"subscript",neg:"neg",pm:"pm","!":"factorial","=":"eq","===":"eq","≠":"neq","≠=":"neq","<":"lt",">":"gt","≤":"le","≥":"ge","≈":"approx","≡":"equiv","∈":"in","∉":"notin","∪":"union","∩":"intersect","→":"to","±":"pm","&":"and","|":"or","\\not":"not","\\xor":"xor","\\nand":"nand","\\nor":"nor","?:":"cases","()":"tuple","[]":"list","{}":"set","(]":"interval","[)":"interval","\\sumidx":"sum","\\prodidx":"prod",mod:"mod",pmod:"pmod",pmatrix:"matrix",bmatrix:"matrix",vmatrix:"matrix"},Z={"=":"=","===":"=","≠":"≠","≠=":"≠","<":"<",">":">","≤":"≤","≥":"≥","∈":"∈","∉":"∉","→":"→","≈":"≈","≡":"≡","&":"∧","|":"∨","\\xor":"⊕","\\nand":"↑","\\nor":"↓"},q={"±":"±","∪":"∪","∩":"∩",mod:"mod"},B=["sin","cos","tan","csc","sec","cot","sinh","cosh","tanh"],F={arcsin:"sin",arccos:"cos",arctan:"tan",arcsinh:"sinh",arccosh:"cosh",arctanh:"tanh"},O=[...B,...Object.keys(F),"ln","det"],S={atan2:"atan2",max:"max",min:"min",gcd:"gcd",mean:"mean",round:"round",fixed:"fixed",expm1:"expm1",random:"random"},W={"()":["(",")"],"[]":["[","]"],"{}":["{","}"],"(]":["(","]"],"[)":["[",")"]},E={"\\partial":"∂","\\nabla":"∇","\\ell":"ℓ","\\infty":"∞","\\emptyset":"∅"},_={vec:"→",hat:"ˆ",widehat:"ˆ",tilde:"˜",dot:"˙",ddot:"¨"},I=["boxed","overline","bar","underline","cancel",...Object.keys(_)],N={prefix:"mv",display:!0,fnParens:"auto",trigPowers:!0,inverseTrig:"arc",derivativeBrackets:"[",scriptFractions:"slash",cases:!0,label:!0,mathml:null,attributes:null,style:null},T=t=>String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),D=t=>+t.toFixed(3)+"em",R=(t,e=k,r=C)=>({html:t,h:e,d:r});function G(...t){const e=t.flat().filter(Boolean);return{html:e.map(t=>t.html).join(""),h:Math.max(k,...e.map(t=>t.h)),d:Math.max(C,...e.map(t=>t.d))}}function H(t,e={}){const r=new J({...N,...e}),s=r.render(t,{level:0}),i=`${r.p}${r.o.display?` ${r.p}-display`:""}`,n="function"==typeof r.o.mathml?function(t,e,r,s){try{return String(t(e)).replace(/ id="mz-\d+"/g,"").replace(/^<math>/,`<math class="${r}-sr-math"${s?' display="block"':""}>`)}catch{return""}}(r.o.mathml,t,r.p,r.o.display):"",a=n?null:function(t,e){if(!1===e||null===e)return null;if("string"==typeof e)return e;try{return"function"==typeof e?e(t):w(t)}catch{return null}}(t,r.o.label),l=null!==a||n?s.html.replace(/^<span /,'<span aria-hidden="true" '):s.html;return{html:`<span class="${i}"${null===a?"":` role="math" aria-label="${T(a)}"`}>${l}${n}</span>`,h:s.h,d:s.d}}class J{constructor(t){this.o=t,this.p=t.prefix}el(t,e,r="",s=""){return`<span class="${t.split(" ").map(t=>`${this.p}-${t}`).join(" ")}"${r?` style="${r}"`:""}${s}>${e}</span>`}text(t,e){const r=R(this.el(t,T(e)));return r.leaf={kind:t,content:T(e)},r}bin(t){return this.text("bin",t)}rel(t){return this.text("rel",t)}punct(t){return this.text("punct",t)}word(t){return this.text("word",t)}wrap(t,e,r){let s="";void 0!==t.id&&(s+=` data-node="${t.id}"`),"op"===t.type&&(s+=` data-op="${T(t.op)}"`);const i=this.o.attributes&&this.o.attributes(t)||{};for(const[t,e]of Object.entries(i))"class"!==t&&"style"!==t&&(s+=` ${t}="${T(e)}"`);const n=[i.style,this.o.style&&this.o.style(t)].filter(Boolean).join(";"),a=(r.leaf?["n",...e,r.leaf.kind]:["n",...e]).map(t=>`${this.p}-${t}`).concat(i.class?[i.class]:[]).join(" "),l=r.leaf?r.leaf.content:r.html;return{html:`<span class="${a}"${n?` style="${T(n)}"`:""}${s}>${l}</span>`,h:r.h,d:r.d}}render(t,e){return"number"===t.type?this.number(t):"string"===t.type?this.wrap(t,["text"],this.text("text",t.value.replace(/^["'`]|["'`]$/g,""))):"symbol"===t.type?this.wrap(t,["symbol"],this.symbol(t.value)):this.operation(t,e)}number(t){return this.wrap(t,["number"],this.text("num",t.value.replace(/^-/,j)))}symbol(e){return t[e]&&(e=t[e]),E[e]?this.text("ord",E[e]):"\\+"===e||"\\-"===e?this.text("ord",e[1]):"-∞"===e?this.text("ord","−∞"):/^[A-Za-z]$/.test(e)||/^[α-ω]$/.test(e)?this.text("var",e):/^[A-Za-z]′+$/.test(e)?R(this.el("var",T(e[0]))+this.el("prime",T(e.slice(1)))):/^Δ[A-Za-z]$/.test(e)?R(this.el("ord","Δ")+this.el("var",e[1])):e.endsWith("⁻¹")?this.script(this.symbol(e.slice(0,-2)),this.text("num","−1"),{level:0}):/^\\[A-Za-z]+$/.test(e)?this.text("name",e.slice(1)):/^[A-Za-z]{2,}$/.test(e)?this.text("name",e):this.text("ord",e)}operation(t,n){const{op:a,args:l}=t,[o,c]=l,u=(t,e={})=>this.render(t,{...n,...e,forceParens:e.forceParens||!1,before:e.before||!1}),d=A[a]??(/^[a-z0-9]+$/i.test(a)?a:"other"),p=e=>this.wrap(t,["op",`op-${d}`],e),m=(e,r)=>h(t,e,r)&&"/"!==e.op?this.fence(u(e)):u(e);if(O.includes(a)||"log"===a)return p(this.named(t,n));if(S[a])return p(G(this.word(S[a]),this.fence(this.list(l,n))));if(e(a))return p(this.custom(t,n));const f=r(t);if(f)return p(this.matrix(t,f,n));if(W[a])return p(this.fence(this.list(l,n),...W[a]));if(Z[a]&&2===l.length)return p(G(m(o,"left"),this.rel(Z[a]),m(c,"right")));if(q[a]&&2===l.length)return p(G(m(o,"left"),this.bin(q[a]),m(c,"right")));switch(a){case"+":return i(c)?p(G(m(o,"left"),this.bin(j),this.wrap(c,["op","op-mul"],this.render(c.args[1],n)))):"number"===c.type&&c.value.startsWith("-")?p(G(m(o,"left"),this.bin(j),this.wrap(c,["number"],this.text("num",c.value.slice(1))))):p(G(m(o,"left"),this.bin("+"),this.signed(c,m(c,"right"))));case"-":return p(G(m(o,"left"),this.bin(j),this.signed(c,m(c,"right"))));case"*":return p(this.product(t,n));case"/":return p(this.fraction(t,n));case"^":return p(this.power(t,n));case"_":return p(this.script(u(o,{forceParens:!0}),null,n,u(c,{level:n.level+1})));case"neg":return p(G(this.text("sign",j),s(a,o)?this.fence(u(o)):u(o,{before:n.before})));case"pm":return p(G(this.text("sign","±"),s(a,o)?this.fence(u(o)):u(o)));case"!":return p(G(s(a,o)?this.fence(u(o)):u(o,{forceParens:!0}),this.text("ord","!")));case"\\not":return p(G(this.text("sign","¬"),s(a,o)?this.fence(u(o)):u(o)));case"pmod":return p(G(u(o),this.fence(G(this.word("mod"),this.text("space",""),u(c)))));case"sqrt":return p(this.radical(u(o)));case"root":return p(this.radical(u(c),this.render(o,{level:n.level+2})));case"abs":return p(this.fence(u(o),"|","|"));case"floor":return p(this.fence(u(o),"⌊","⌋"));case"ceil":return p(this.fence(u(o),"⌈","⌉"));case"loglog":return p(G(this.word("ln"),this.fence(G(this.word("ln"),this.fence(u(o))))));case"logloglog":return p(G(this.word("ln"),this.fence(G(this.word("ln"),this.fence(G(this.word("ln"),this.fence(u(o))))))));case"perm":return p(this.script(this.script(R(""),this.render(o,{level:n.level+1}),n),null,n,this.render(c,{level:n.level+1}),this.word("P")));case"comb":return p(this.fence(this.stack(u(o),u(c),!1)));case"?:":return p(this.o.cases?this.cases(t,n):G(u(o),this.bin("?"),u(c),this.bin(":"),u(l[2])));case"sum":return p(G(l.map((t,e)=>e?[this.bin("+"),u(t)]:[u(t)]).flat()));case"prod":return p(G(l.map((t,e)=>e?[this.bin("·"),u(t)]:[u(t)]).flat()));case"der":return p(this.derivative(t,n));case"int":return p(this.integral(l,n));case"lim":return p(this.limit(l,n));case"\\sumidx":return p(this.bigOperator("sum",l,n));case"\\prodidx":return p(this.bigOperator("prod",l,n))}throw new Error(`Inline Math cannot draw '${a}'`)}signed(t,e){return("number"===t.type?t.value.startsWith("-"):"neg"===t.op||"pm"===t.op)&&!e.fenced?this.fence(e):e}list(t,e){return G(t.map((t,r)=>r?[this.punct(","),this.render(t,e)]:[this.render(t,e)]).flat())}product(t,r){const[s,l]=t.args;if(i(t))return G(this.text("sign",j),this.render(l,r));const h=n(t),o=a(s,l,h),c=function(t){for(;"op"===t.type;){if(O.includes(t.op)||"log"===t.op||S[t.op]||e(t.op))return!0;if("^"!==t.op&&"*"!==t.op)return!1;t=t.args[0]}return!1}(l),u=h.left?this.fence(this.render(s,r)):this.render(s,{...r,before:o&&!c}),d=h.right?this.fence(this.render(l,r)):this.render(l,{...r,before:r.before});return G(u,o?R(this.el(c?"fnspace":"times","")):this.bin("·"),d)}named(t,e,r=null){const{op:s,args:i}=t,n="log"===s?i[1]:i[0];let a;a=F[s]&&"power"===this.o.inverseTrig?this.script(this.word(F[s]),this.text("num","−1"),e):this.word(s),r&&(a=this.script(a,r,e)),"log"===s&&(a=this.script(a,null,e,this.render(i[0],{level:e.level+1})));const l="auto"===this.o.fnParens&&!e.forceParens&&!e.before&&K(n),h=this.render(n,{...e,forceParens:!1,before:!1});return G(a,l?G(R(this.el("fnspace","")),h):this.fence(h))}custom(t,e){const r=l(t.op),s=t.args;if(I.includes(r)&&1===s.length)return this.decorate(r,this.render(s[0],e));return G(/^[A-Za-z]′*(⁻¹)?$/.test(r)?this.symbol(r):this.word(r),R(this.el("callgap","")),this.fence(this.list(s,e)))}decorate(t,e){switch(t){case"boxed":return R(this.el("boxed",e.html),e.h+.22,e.d+.22);case"cancel":return R(this.el("cancel",e.html+M("cancel",`${this.p}-cancel-line`)),e.h,e.d);case"underline":return R(this.el("underline",e.html),e.h,e.d+.12);case"overline":case"bar":return R(this.el("over",e.html),e.h+.14,e.d);default:return R(this.el("accent",this.el("accent-mark",_[t])+e.html),e.h+.3,e.d)}}fraction(t,e){const[r,s]=t.args;if(e.level>0&&"slash"===this.o.scriptFractions&&K(r,!0)&&K(s,!0)){const t=t=>"op"!==t.type||K(t)?this.render(t,e):this.fence(this.render(t,e));return G(t(r),this.text("ord","/"),t(s))}const i=e.level>0||e.inFraction||!this.o.display?.8:1,n={...e,inFraction:!0,forceParens:!1,before:!1};return this.stack(this.render(r,n),this.render(s,n),!0,i)}stack(t,e,r=!0,s=1){const i=t=>1===s?t.html:this.el("scaled",t.html,`font-size:${D(s)}`),n=r?.06:0,a=z+n/2+.1+Math.max(C,s*t.d),l=this.el("frac"+(r?"":" frac-nobar"),this.el("numer",i(t))+this.el("denom",i(e)),`vertical-align:${D(a)}`);return R(l,a+Math.max(k,s*t.h),Math.max(k,s*e.h)+Math.max(C,s*e.d)+.1+n/2-z)}power(t,e){const[r,s]=t.args,i={...e,level:e.level+1,forceParens:!1,before:!1,inFraction:!1},n=()=>this.render(s,i);if(this.o.trigPowers&&B.includes(r.op)&&U(s))return this.wrap(r,["op",`op-${r.op}`],this.named(r,e,n()));if("_"===r.op){const t=this.render(r.args[1],i);return this.wrap(r,["op","op-subscript"],this.script(this.render(r.args[0],{...e,forceParens:!0}),n(),e,t))}const a=h(t,r,"left")||"number"===r.type&&r.value.startsWith("-")||"/"===r.op||O.includes(r.op)?this.fence(this.render(r,e)):this.render(r,{...e,forceParens:!0});return this.script(a,n(),e)}script(t,e,r,s=null,i=null){const n=r.level>0?.8:P,a=i?G(t,i):t;let l=e?Math.max(.42,t.h-.38,n*e.d+.12):0,h=s?Math.max(.2,t.d-.05,n*s.h-.45):0;if(e&&s){const t=.1-(l-n*e.d-(n*s.h-h));t>0&&(h+=t)}const o=t=>this.el("script",t.html,`font-size:${D(n)}`);if(e&&!s)return R(t.html+this.el("sup",e.html,`font-size:${D(n)};vertical-align:${D(l/n)}`),Math.max(a.h,l+n*e.h),Math.max(a.d,n*e.d-l));if(s&&!e)return R(a.html+this.el("sub",s.html,`font-size:${D(n)};vertical-align:${D(-h/n)}`),Math.max(a.h,n*s.h-h),Math.max(a.d,h+n*s.d));const c=l+n*e.h,u=h+n*s.d,d=this.el("subsup",o(e)+o(s),`vertical-align:${D(l)};height:${D(c+u)}`);return R(a.html+d,Math.max(a.h,c),Math.max(a.d,u))}radical(t,e=null){const r=Math.max(t.h,k)+.1+.06,s=Math.max(t.d,C),i=r+s,n=M("sqrt",`${this.p}-hook`,`height:${D(i)};width:${D(.5+.06*(i-1))};vertical-align:${D(-s)}`);let a="";if(e){const t=.8*P;a=this.el("rootindex",e.html,`font-size:${D(t)};vertical-align:${D((.55*i-s)/t)}`)}return R(this.el("sqrt",a+n+this.el("radicand",t.html)),r,s)}fence(t,e="(",r=")"){const s=Math.max(t.h,k)+Math.max(t.d,C),i=s>1.25,n=i?.1:0,a=(t,e)=>{if(!t)return{html:"",w:0};const r={"(":.26,")":.26,"{":.36,"}":.36}[t];if(r){const n=r+(i?Math.min(.2,.05*(s-1)):0);return{html:M(t,`${this.p}-delim ${this.p}-delim-${e}`,`width:${D(n)}`),w:n+.1}}const n={"[":"lbrack","]":"rbrack","|":"vert","⌊":"lfloor","⌋":"rfloor","⌈":"lceil","⌉":"rceil"}[t];return{html:this.el(`delim ${n} delim-${e}`,""),w:"|"===t?.18:.3}},l=a(e,"l"),h=a(r,"r"),o=`padding:${D(n)} ${D(h.w)} ${D(n)} ${D(l.w)}`,c=R(this.el("fence",l.html+t.html+h.html,o),Math.max(t.h,k)+n,Math.max(t.d,C)+n);return c.fenced=!0,c}derivative(t,e){const{n:r,body:s,by:i,variable:n}=o(t),a={...e,level:e.level+1},l=()=>this.text("d","d"),h=()=>r>1?this.render({type:"number",value:String(r)},a):null,d={...e,inFraction:!0},p=G(l(),h()?this.script(this.render(i,d),h(),d):this.render(i,d)),m=t=>G(h()?this.script(l(),h(),d):l(),t||[]),f=e.level>0||e.inFraction||!this.o.display?.8:1;if(n)return this.stack(m(this.render(s,d)),p,!0,f);const g=c(s)&&u(c(s))<100,[b,$]="("===this.o.derivativeBrackets?["(",")"]:["[","]"],x=g?this.fence(this.render(s,e),b,$):this.render(s,e);return G(this.stack(m(),p,!0,f),x)}integral(t,e){const[r,s,i,n]=t,a=t=>this.render(t,e),l=t=>t?this.render(t,{...e,level:e.level+1}):null,h=()=>this.text("var",m(r)||"x");let o,c=null,u=null;switch(t.length){case 1:o=h();break;case 2:d(s)?o=a(s):(o=h(),c=l(s));break;case 3:d(s)?(o=a(s),c=l(i)):(o=h(),c=l(s),u=l(i));break;default:o=a(s),c=l(i),u=l(n)}const p=a(r),f=R(this.el("dx",this.el("d","d")+o.html),o.h,o.d);return G(this.bigSign("int",p,c,u,e),p,f)}bigSign(t,e,r,s,i){const n=!this.o.display||i.level>0,a=Math.max(n?.6:.95,Math.max(e.h-z,e.d+z)+.12),l=M(t,`${this.p}-bigsign ${this.p}-${t}sign`,`height:${D(2*a)};width:${D(n?.38:.5)};vertical-align:${D(z-a)}`);if(!r&&!s)return R(l,z+a,a-z);const h=P,o=s||R(""),c=r||R(""),u=z+a-h*o.h;c.d;const d=this.el("limits",this.el("script",o.html,`font-size:${D(h)}`)+this.el("script lower",c.html,`font-size:${D(h)}`),`vertical-align:${D(u)};height:${D(2*a)}`);return R(l+d,z+a,a-z)}limit(t,e){const[r,s,i,n]=t,a={...e,level:e.level+1},l=t=>this.render(t,a),h=()=>this.rel("→");let o;switch(t.length){case 1:return G(this.word("lim"),R(this.el("fnspace","")),this.render(r,e));case 2:{const t=m(r),e="number"===s.type||"symbol"===s.type&&s.value.includes("∞");o=t&&e?G(this.text("var",t),h(),l(s)):l(s);break}case 3:o=G(l(s),h(),l(i));break;default:{const t=p(n).toLowerCase().startsWith("r")?"+":j;o=G(l(s),h(),this.script(l(i),this.wrap(n,["symbol"],this.text("ord",t)),a))}}return G(this.under(this.word("lim"),o,e),this.render(r,e))}under(t,e,r){return!this.o.display||r.level>0?this.script(t,null,r,e):R(this.el("under",t.html+this.el("script",e.html,`font-size:${D(.7)}`)),t.h,Math.max(t.d,C)+.05+.7*(e.h+e.d))}bigOperator(t,e,r){const[s,i,n]=e,a={...r,level:r.level+1},l=i?this.render(i,a):null,h=n?this.render(n,a):null,o=this.render(s,r);if(!this.o.display||r.level>0){const e=.55,s=M(t,`${this.p}-bigsign`,`height:${D(2*e)};width:${D(.8)};vertical-align:${D(z-e)}`);return G(this.script(R(s,z+e,e-z),h,r,l),o)}const c=.68,u=P,d=M(t,`${this.p}-bigsign`,`height:${D(1.36)};width:${D("sum"===t?1:1.05)}`),p=h?1.01+u*h.d:z-c,m=t=>this.el("script",t.html,`font-size:${D(u)}`),f=this.el("bigop",(h?m(h):"")+d+(l?m(l):""),`vertical-align:${D(p)}`);return G(R(f,.93+(h?.08+u*(h.h+h.d):0),c-z+(l?.08+u*(l.h+l.d):0)),o)}matrix(t,e,r){const s=e.map(t=>t.map(t=>this.render(t,r))),i=s.map(t=>({h:Math.max(k,...t.map(t=>t.h)),d:Math.max(C,...t.map(t=>t.d))})),n=i.reduce((t,e)=>t+e.h+e.d,0)+.3*(e.length-1),a=z+n/2-i[0].h,l=s.map((e,r)=>{const s=e.map(t=>this.el("matrix-cell",t.html)).join(""),i=t.args[r];return i&&"op"===i.type&&"[]"===i.op?this.wrap(i,["op","op-list","matrix-row"],R(s)).html:s}).join(""),h=e[0].length,o=R(this.el("matrix",l,`grid-template-columns:repeat(${h},auto);vertical-align:${D(a)}`),z+n/2,n/2-z),[c,u]=f[t.op]??["[","]"];return this.fence(o,c,u)}cases(t,e){const r=[];let s=t;for(;"op"===s.type&&"?:"===s.op;)r.push([this.render(s.args[1],e),G(this.word("if"),this.text("space",""),this.render(s.args[0],e))]),s=s.args[2];"symbol"===s.type&&"unchanged"===s.value||r.push([this.render(s,e),this.word("otherwise")]);const i=r.map(([t,e])=>({h:Math.max(t.h,e.h),d:Math.max(t.d,e.d)})),n=i.reduce((t,e)=>t+e.h+e.d,0)+.25*(r.length-1),a=z+n/2-i[0].h,l=r.map(([t,e])=>this.el("case-value",t.html)+this.el("case-cond",e.html)).join(""),h=R(this.el("cases",l,`vertical-align:${D(a)}`),z+n/2,n/2-z);return this.fence(h,"{","")}}function K(t,e=!1){return"number"===t.type?!t.value.startsWith("-")||e:"symbol"===t.type||"op"===t.type&&("abs"===t.op||r(t)?!e:!e||"neg"!==t.op&&"^"!==t.op?"*"===t.op&&!i(t)&&t.args.every(t=>"number"===t.type&&!t.value.startsWith("-")||Q(t)||"*"===t.op&&K(t,e)):K(t.args[0],!0)&&("neg"===t.op||K(t.args[1],!0)))}const Q=e=>"symbol"===e.type&&(1===e.value.length||/^[α-ωΑ-Ω]$/.test(e.value)||Boolean(t[e.value])),U=t=>"number"===t.type&&/^[1-9]\d*$/.test(t.value)&&Number(t.value)<10;const V=t=>b(t).join(" ");function X(t,e){const r=new Set;Y(t,e,r);const s=[];return g(t,t=>{r.has(t)&&s.push(t)}),s}function Y(t,e,r){if(null!=e)if(Array.isArray(e))e.forEach(e=>Y(t,e,r));else if("number"!=typeof e)if("function"!=typeof e){if("string"==typeof e){const s=V(v(e));return void g(t,t=>{V(t)===s&&r.add(t)})}if(e.path){const s=tt(t,e.path);return void(s&&r.add(s))}if(e.type){const s=V(e);g(t,t=>{t!==e&&V(t)!==s||r.add(t)})}}else g(t,(t,s)=>{e(t,s)&&r.add(t)});else g(t,t=>{t.id===e&&r.add(t)})}function tt(t,e){let r=t;for(const t of e){if("op"!==r.type||!r.args[t])return null;r=r.args[t]}return r}function et(t,e){const r=[],s=t=>{if(t.id===e)return!0;if("op"!==t.type)return!1;for(let e=0;e<t.args.length;e++){if(r.push(e),s(t.args[e]))return!0;r.pop()}return!1};return s(t)?r:null}function rt(t){let e=0;const r=t=>{"op"===t.type&&(t.args.forEach(r),$(t.op)?.arity===x&&e++),t.id=e++};return r(t),t}function st(t,e={}){const{blocks:r}=e;if("string"==typeof t)return v(t,r?{blocks:t=>r(t,e.scope)}:{});if(Array.isArray(t))return y(t);if(t&&"object"==typeof t&&t.type)return void 0===t.id?rt(structuredClone(t)):t;throw new Error("Inline Math needs an expression, standard postfix or a tree")}function it(t,e={}){const r=st(t,e);return H(r,nt(r,e)).html}function nt(t,e){const{colors:r,highlight:s,scope:i,blocks:n,...a}=e,l=new Map;for(const[e,s]of function(t){return t?Array.isArray(t)?t:Object.entries(t).map(([t,e])=>[/^\d+$/.test(t)?Number(t):t,e]):[]}(r))if(at(s))for(const r of X(t,e))l.set(r,`color:${s}`);const h=new Set(void 0===s?[]:X(t,s));if(!l.size&&!h.size)return a;const o=a.prefix||"mv";return{...a,style:t=>[l.get(t),a.style&&a.style(t)].filter(Boolean).join(";"),attributes:t=>{const e={...a.attributes?a.attributes(t):{}};return h.has(t)&&(e.class=[e.class,`${o}-hl`].filter(Boolean).join(" ")),e}}}function at(t){return"string"==typeof t&&/^[#\w\s.,%()/+-]+$/.test(t)&&!/url\s*\(|expression/i.test(t)}export{N as D,L as P,st as a,nt as b,tt as c,V as d,H as l,rt as n,et as p,X as s,it as t};
@@ -0,0 +1,2 @@
1
+ /* Inline Math 0.2.0 — MIT licence; MathZetta not included: map mathzetta, mathzetta/speech and mathzetta/calculate with an import map */
2
+ const e=Symbol.for("inlinemath.expressions"),t=new Set(["symbol","number"]);function n(e){return e?"symbol"===e.type?e.value:"op"===e.type&&"_"===e.op&&2===e.args.length&&"symbol"===e.args[0].type&&t.has(e.args[1].type)?`${e.args[0].value}_${e.args[1].value}`:null:null}function s(e){const{id:t,from:n,...r}=e;return r.args&&(r.args=r.args.map(s)),r}function r(e){const{id:t,...n}=e;return n.args&&(n.args=n.args.map(r)),n}function i(e,t){const n=(e,s)=>{if(!s&&void 0!==e.from)return t(e.from);const{id:r,from:i,...o}=e;return o.args&&(o.args=o.args.map(e=>n(e,!1))),o};return n(e,!0)}function o(e,t){let i=!1;const o=new Set,a=e=>{const r=n(e);if(null!==r){if(!o.has(r)){const e=t(r);if(e){i=!0,o.add(r);const t={...a(s(e)),from:r};return o.delete(r),t}}return e}return e.args?{...e,args:e.args.map(a)}:e},l=a(e);return{tree:i?r(l):e,changed:i}}const a="[-+]?(?:\\d+\\.?\\d*|\\.\\d+)",l=new RegExp(`^(${a})\\s*\\.\\.\\s*(${a})(?:\\s+step\\s+(${a}))?(?:\\s*=\\s*(${a}))?$`);function u(e){const t=/^\s*\[\[([\s\S]*)\]\]\s*$/.exec(e);if(!t||/\]\s*,\s*\[/.test(t[1]))return null;const n=t[1].trim(),s=l.exec(n);if(s){const e=Number(s[1]),t=Number(s[2]);if(!(t>e))return null;const n=void 0!==s[3]?Number(s[3]):Number.isInteger(e)&&Number.isInteger(t)?1:(t-e)/100;if(!(n>0))return null;const r=void 0!==s[4]?Math.min(t,Math.max(e,Number(s[4]))):e;return{kind:"slider",min:e,max:t,step:n,default:String(r)}}if(n.includes("|")){const e=n.split("|").map(e=>e.trim()).filter(Boolean);if(e.length)return{kind:"dropdown",options:e,default:e[0]}}return{kind:"textbox",default:n}}const c=Symbol("set on the page");class f{constructor(){this.owners=new Map,this.chosen=new Map,this.listeners=new Set}definitions(e){const t=new Map;for(const[n,s]of this.owners)if(n!==e)for(const[e,n]of s)t.delete(e),t.set(e,n);return t}textOf(e){const t=this.chosen.get(e.name);return t&&t.key===e.key?t.text:e.text}get(e){const t=this.definitions().get(e);return t?this.textOf(t):void 0}names(){return[...this.definitions().keys()]}set(e,t){t=String(t);const n=this.definitions().get(e);if(n&&n.input){const s=this.chosen.get(e);if(s&&s.key===n.key&&s.text===t)return this;this.chosen.set(e,{key:n.key,text:t})}else{const n=new Map(this.owners.get(c));n.set(e,{name:e,text:t,key:`page:${t}`,input:null}),this.owners.delete(c),this.owners.set(c,n)}return this.notify(null,e),this}clear(e){return void 0===e?(this.owners.clear(),this.chosen.clear()):(this.owners.get(c)?.delete(e),this.chosen.delete(e)),this.notify(null,e),this}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}own(e,t){const n=this.owners.get(e);var s,r;(s=n,r=t,(s?.size??0)===(r?.size??0)&&[...s??[]].every(([e,t])=>r?.get(e)?.key===t.key))?t&&this.owners.set(e,t):(t&&t.size?this.owners.set(e,t):this.owners.delete(e),this.notify(e))}notify(e,t){for(const n of[...this.listeners])n(e,t)}}function h(){return new f}const d=h();function g(e,t,n){const r=(e,s)=>s===t.length?n:{...e,args:e.args.map((e,n)=>n===t[s]?r(e,s+1):e)};return s(r(e,0))}function m(e,t,{parse:n,commit:s,cancel:r,label:i="Edit"}){const o=e.ownerDocument;if(!o||!o.body)return null;const a=o.defaultView,l=e.getBoundingClientRect(),u=o.createElement("input");u.type="text",u.className="mv-edit",u.value=t,u.spellcheck=!1,u.autocomplete="off",u.setAttribute("aria-label",i);const c=()=>{u.style.width=`${Math.max(4,u.value.length+2)}ch`},f=a.getComputedStyle(e);Object.assign(u.style,{position:"absolute",left:`${l.left+a.scrollX}px`,top:`${l.top+a.scrollY+l.height/2}px`,minWidth:`${Math.max(l.width,32)}px`,fontSize:f.fontSize}),c(),o.body.appendChild(u),a.getSelection?.()?.removeAllRanges(),u.focus(),u.select();let h=!1;const d=()=>{h=!0,u.remove()},g=e=>{if(h)return!0;if(!e||u.value===t)return d(),r&&r(),!0;let i;try{i=n(u.value)}catch(e){return u.setAttribute("aria-invalid","true"),u.title=e.message,!1}return d(),s(i,u.value),!0};return u.addEventListener("keydown",e=>{e.stopPropagation(),"Enter"===e.key&&(e.preventDefault(),g(!0)),"Escape"===e.key&&(e.preventDefault(),g(!1))}),u.addEventListener("input",()=>{c(),u.removeAttribute("aria-invalid"),u.removeAttribute("title")}),u.addEventListener("blur",()=>{g(!0)||g(!1)}),u}export{e as E,f as V,s as b,h as c,u as i,n,m as o,g as r,o as s,i as u,d as v};
@@ -0,0 +1,2 @@
1
+ /* Inline Math 0.2.0 — MIT licence; includes mathzetta (and @mathzetta/cas, for the CAS) */
2
+ const e=Symbol.for("inlinemath.expressions"),t=new Set(["symbol","number"]);function n(e){return e?"symbol"===e.type?e.value:"op"===e.type&&"_"===e.op&&2===e.args.length&&"symbol"===e.args[0].type&&t.has(e.args[1].type)?`${e.args[0].value}_${e.args[1].value}`:null:null}function s(e){const{id:t,from:n,...r}=e;return r.args&&(r.args=r.args.map(s)),r}function r(e){const{id:t,...n}=e;return n.args&&(n.args=n.args.map(r)),n}function i(e,t){const n=(e,s)=>{if(!s&&void 0!==e.from)return t(e.from);const{id:r,from:i,...o}=e;return o.args&&(o.args=o.args.map(e=>n(e,!1))),o};return n(e,!0)}function o(e,t){let i=!1;const o=new Set,a=e=>{const r=n(e);if(null!==r){if(!o.has(r)){const e=t(r);if(e){i=!0,o.add(r);const t={...a(s(e)),from:r};return o.delete(r),t}}return e}return e.args?{...e,args:e.args.map(a)}:e},l=a(e);return{tree:i?r(l):e,changed:i}}const a="[-+]?(?:\\d+\\.?\\d*|\\.\\d+)",l=new RegExp(`^(${a})\\s*\\.\\.\\s*(${a})(?:\\s+step\\s+(${a}))?(?:\\s*=\\s*(${a}))?$`);function u(e){const t=/^\s*\[\[([\s\S]*)\]\]\s*$/.exec(e);if(!t||/\]\s*,\s*\[/.test(t[1]))return null;const n=t[1].trim(),s=l.exec(n);if(s){const e=Number(s[1]),t=Number(s[2]);if(!(t>e))return null;const n=void 0!==s[3]?Number(s[3]):Number.isInteger(e)&&Number.isInteger(t)?1:(t-e)/100;if(!(n>0))return null;const r=void 0!==s[4]?Math.min(t,Math.max(e,Number(s[4]))):e;return{kind:"slider",min:e,max:t,step:n,default:String(r)}}if(n.includes("|")){const e=n.split("|").map(e=>e.trim()).filter(Boolean);if(e.length)return{kind:"dropdown",options:e,default:e[0]}}return{kind:"textbox",default:n}}const c=Symbol("set on the page");class f{constructor(){this.owners=new Map,this.chosen=new Map,this.listeners=new Set}definitions(e){const t=new Map;for(const[n,s]of this.owners)if(n!==e)for(const[e,n]of s)t.delete(e),t.set(e,n);return t}textOf(e){const t=this.chosen.get(e.name);return t&&t.key===e.key?t.text:e.text}get(e){const t=this.definitions().get(e);return t?this.textOf(t):void 0}names(){return[...this.definitions().keys()]}set(e,t){t=String(t);const n=this.definitions().get(e);if(n&&n.input){const s=this.chosen.get(e);if(s&&s.key===n.key&&s.text===t)return this;this.chosen.set(e,{key:n.key,text:t})}else{const n=new Map(this.owners.get(c));n.set(e,{name:e,text:t,key:`page:${t}`,input:null}),this.owners.delete(c),this.owners.set(c,n)}return this.notify(null,e),this}clear(e){return void 0===e?(this.owners.clear(),this.chosen.clear()):(this.owners.get(c)?.delete(e),this.chosen.delete(e)),this.notify(null,e),this}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}own(e,t){const n=this.owners.get(e);var s,r;(s=n,r=t,(s?.size??0)===(r?.size??0)&&[...s??[]].every(([e,t])=>r?.get(e)?.key===t.key))?t&&this.owners.set(e,t):(t&&t.size?this.owners.set(e,t):this.owners.delete(e),this.notify(e))}notify(e,t){for(const n of[...this.listeners])n(e,t)}}function h(){return new f}const d=h();function g(e,t,n){const r=(e,s)=>s===t.length?n:{...e,args:e.args.map((e,n)=>n===t[s]?r(e,s+1):e)};return s(r(e,0))}function m(e,t,{parse:n,commit:s,cancel:r,label:i="Edit"}){const o=e.ownerDocument;if(!o||!o.body)return null;const a=o.defaultView,l=e.getBoundingClientRect(),u=o.createElement("input");u.type="text",u.className="mv-edit",u.value=t,u.spellcheck=!1,u.autocomplete="off",u.setAttribute("aria-label",i);const c=()=>{u.style.width=`${Math.max(4,u.value.length+2)}ch`},f=a.getComputedStyle(e);Object.assign(u.style,{position:"absolute",left:`${l.left+a.scrollX}px`,top:`${l.top+a.scrollY+l.height/2}px`,minWidth:`${Math.max(l.width,32)}px`,fontSize:f.fontSize}),c(),o.body.appendChild(u),a.getSelection?.()?.removeAllRanges(),u.focus(),u.select();let h=!1;const d=()=>{h=!0,u.remove()},g=e=>{if(h)return!0;if(!e||u.value===t)return d(),r&&r(),!0;let i;try{i=n(u.value)}catch(e){return u.setAttribute("aria-invalid","true"),u.title=e.message,!1}return d(),s(i,u.value),!0};return u.addEventListener("keydown",e=>{e.stopPropagation(),"Enter"===e.key&&(e.preventDefault(),g(!0)),"Escape"===e.key&&(e.preventDefault(),g(!1))}),u.addEventListener("input",()=>{c(),u.removeAttribute("aria-invalid"),u.removeAttribute("title")}),u.addEventListener("blur",()=>{g(!0)||g(!1)}),u}export{e as E,f as V,s as b,h as c,u as i,n,m as o,g as r,o as s,i as u,d as v};
@@ -1,2 +1,2 @@
1
- /* Inline Math 0.1.0 — MIT licence; MathZetta not included: map mathzetta, mathzetta/speech and mathzetta/calculate with an import map */
2
- import{calculateBlock as t}from"mathzetta/calculate";import{t as a,a as o}from"./draw-Cm4exbg7.js";function r(a,r={}){return o(a,{...r,blocks:r.blocks??t})}function s(o,r={}){return a(o,{...r,blocks:r.blocks??t})}export{s as a,r as t};
1
+ /* Inline Math 0.2.0 — MIT licence; MathZetta not included: map mathzetta, mathzetta/speech and mathzetta/calculate with an import map */
2
+ import{calculateBlock as t}from"mathzetta/calculate";import{t as a,a as o}from"./draw-Bev17BJJ.js";function r(a,r={}){return o(a,{...r,blocks:r.blocks??t})}function s(o,r={}){return a(o,{...r,blocks:r.blocks??t})}export{s as a,r as t};
@@ -0,0 +1,2 @@
1
+ /* Inline Math 0.2.0 — MIT licence; includes mathzetta (and @mathzetta/cas, for the CAS) */
2
+ import{c as o}from"./calculate-Cz87Lt0N.js";import{e as s,f as t}from"./lite-3Fb-OHbt.js";function c(s,c={}){return t(s,{...c,blocks:c.blocks??o})}function r(t,c={}){return s(t,{...c,blocks:c.blocks??o})}export{r as a,c as t};
@@ -0,0 +1,2 @@
1
+ /* Inline Math 0.2.0 — MIT licence; includes mathzetta (and @mathzetta/cas, for the CAS) */
2
+ const e=-1,t={"+":{prec:50,assoc:"left",arity:2,fixity:"infix"},"-":{prec:50,assoc:"left",arity:2,fixity:"infix"},"±":{prec:50,assoc:"left",arity:2,fixity:"infix"},"*":{prec:70,assoc:"left",arity:2,fixity:"infix"},"/":{prec:70,assoc:"left",arity:2,fixity:"infix"},"^":{prec:80,assoc:"right",arity:2,fixity:"infix"},mod:{prec:45,assoc:"left",arity:2,fixity:"infix"},neg:{prec:75,assoc:"none",arity:1,fixity:"prefix"},pm:{prec:75,assoc:"none",arity:1,fixity:"prefix"},"!":{prec:90,assoc:"none",arity:1,fixity:"postfix"},_:{prec:100,assoc:"none",arity:2,fixity:"infix"},sqrt:n(1),abs:n(1),floor:n(1),ceil:n(1),det:n(1),ln:n(1),loglog:n(1),logloglog:n(1),expm1:n(1),sin:n(1),cos:n(1),tan:n(1),csc:n(1),sec:n(1),cot:n(1),sinh:n(1),cosh:n(1),tanh:n(1),arcsin:n(1),arccos:n(1),arctan:n(1),arcsinh:n(1),arccosh:n(1),arctanh:n(1),random:n(0),log:n(2),root:n(2),atan2:n(2),round:n(2),fixed:n(2),perm:n(2),comb:n(2),der:n(2),max:n(e),min:n(e),gcd:n(e),mean:n(e),sum:n(e),prod:n(e),int:n(e),lim:n(e),"\\sumidx":n(e),"\\prodidx":n(e),pmatrix:n(e),bmatrix:n(e),vmatrix:n(e),"()":s(),"[]":s(),"{}":s(),"(]":s(),"[)":s(),"=":{prec:30,assoc:"left",arity:2,fixity:"infix"},"===":{prec:30,assoc:"left",arity:2,fixity:"infix"},"≠":{prec:30,assoc:"left",arity:2,fixity:"infix"},"≠=":{prec:30,assoc:"left",arity:2,fixity:"infix"},"<":{prec:34,assoc:"left",arity:2,fixity:"infix"},">":{prec:34,assoc:"left",arity:2,fixity:"infix"},"≤":{prec:34,assoc:"left",arity:2,fixity:"infix"},"≥":{prec:34,assoc:"left",arity:2,fixity:"infix"},"∈":{prec:32,assoc:"left",arity:2,fixity:"infix"},"∉":{prec:32,assoc:"left",arity:2,fixity:"infix"},"∪":{prec:33,assoc:"left",arity:2,fixity:"infix"},"∩":{prec:33,assoc:"left",arity:2,fixity:"infix"},"≈":{prec:30,assoc:"left",arity:2,fixity:"infix"},"≡":{prec:30,assoc:"left",arity:2,fixity:"infix"},pmod:{prec:2,assoc:"left",arity:2,fixity:"infix"},"→":{prec:38,assoc:"left",arity:2,fixity:"infix"},"\\not":{prec:85,assoc:"none",arity:1,fixity:"prefix"},"&":{prec:20,assoc:"left",arity:2,fixity:"infix"},"\\xor":{prec:19,assoc:"left",arity:2,fixity:"infix"},"|":{prec:18,assoc:"left",arity:2,fixity:"infix"},"\\nor":{prec:17,assoc:"left",arity:2,fixity:"infix"},"\\nand":{prec:17,assoc:"left",arity:2,fixity:"infix"},"?:":{prec:10,assoc:"right",arity:3,fixity:"infix"}};function n(e){return{prec:100,assoc:"none",arity:e,fixity:"prefix"}}function s(){return{prec:5,assoc:"left",arity:e,fixity:"none",group:!0}}const r="\\:",i=e=>"string"==typeof e&&e.startsWith(r)&&e.length>2;function o(e){return Object.prototype.hasOwnProperty.call(t,e)?t[e]:i(e)?a:void 0}const a=n(e),l=e=>o(e)?.prec;function c(e,t,n){if("mod"===e&&t)return l(t)<=70;if("mod"===t&&["*","/"].includes(e))return!0;if("mod"===t&&["+","-","±"].includes(e))return"right"===n;const s=l(e),r=l(t);if(!s||!r)return!1;if(r!==s)return r<s;const i=o(e).assoc;return"left"===i?"right"===n:"right"===i&&"left"===n}const h=100,u={ln:h,log:h,loglog:h,logloglog:h,sqrt:h,sqrtpow:h,pow:h,expm1:h,der:h,lim:h,int:h,round:h,fixed:h,floor:h,ceil:h,abs:h,random:h,sum:h,prod:h,"\\sumidx":h,"\\prodidx":h,perm:h,comb:h,"\\perm":h,"\\comb":h,"\\binom":h,max:h,min:h,gcd:h,mean:h,pmatrix:h,bmatrix:h,vmatrix:h,det:h,sin:h,cos:h,tan:h,csc:h,sec:h,cot:h,sinh:h,cosh:h,tanh:h,arcsin:h,arccos:h,arctan:h,arcsinh:h,arccosh:h,arctanh:h,atan2:h,_:h,"!":90,"\\not":85,"^":80,"*":70,"/":70,frac:70,mod:45,"+":50,"-":50,"±":50,"→":38,"<":34,">":34,"≤":34,"≥":34,"∈":32,"∉":32,"∪":33,"∩":33,"=":30,"==":30,"===":30,"≠":30,"≠=":30,"!==":30,"≈":30,"≡":30,pmod:2,"&":20,"\\xor":19,"|":18,"∨":18,"\\nor":17,"\\nand":17,"?:":10,"?":9,",":5},p=e=>Object.prototype.hasOwnProperty.call(u,e),f=new Set(["^","?:","?","log"]),g=["(","{","["],m=[")","}","]"];function d(e,t=!1){if(!e)return!1;for(let n=0;n<e.length;n++)if(!("0123456789.".includes(e[n])||t&&0===n&&"-"===e[n]&&e.length>1))return!1;return!0}for(const e of[u])Object.setPrototypeOf(e,null);const $=e=>({type:"number",value:String(e)}),x=e=>({type:"symbol",value:e}),y=(e,t)=>({type:"op",op:e,args:t}),b=['"',"'","`"];function w(e){return d(e,!0)?$(e):b.includes(e[0])?{type:"string",value:e}:x(e)}const v={"0-":"neg",sqrtpow:"root",pow:"^","==":"=","!==":"≠="};function k(t){if(!Array.isArray(t)||0===t.length)throw new Error("Empty postfix");const n=[],s=[];if(t.forEach((t,r)=>{const i=v[t]??String(t),a=o(i);if(!a)return n.push({...w(i),id:r}),void s.push(1);let l=a.arity;if(l===e){const e=n.pop();if(s.pop(),l=e&&"number"===e.type?Number(e.value):NaN,!Number.isInteger(l)||l<0)throw new Error(`'${i}' takes a variable number of arguments, so it must follow a count`)}if(n.length<l)throw new Error(`'${i}' needs ${l} operand${1===l?"":"s"}`);const c=1+Math.max(0,...s.splice(s.length-l,l));if(c>1e3)throw new Error("Nested too deeply (more than 1000 levels)");s.push(c),n.push({...y(i,n.splice(n.length-l,l)),id:r})}),1!==n.length)throw new Error(`Postfix leaves ${n.length} values instead of 1`);return n[0]}function _(t){const n=[];return function t(s){"op"===s.type?(s.args.forEach(t),o(s.op)?.arity===e&&n.push(String(s.args.length)),n.push(s.op)):n.push(s.value)}(t),n}function E(e){if(Array.isArray(e))return k(e);if(e&&"object"==typeof e&&e.type)return e;throw new Error("Expected a postfix array or an expression tree")}function M(e,t,n=null){t(e,n),"op"===e.type&&e.args.forEach(n=>M(n,t,e))}function A(e){let t="";return M(e,e=>{!t&&"symbol"===e.type&&1===e.value.length&&/[a-zA-Zʹ-Ͽ]/.test(e.value)&&(t=e.value)}),t}for(const e of[v])Object.setPrototypeOf(e,null);function q(e){const t=new Map;for(const[n,s,r]of e)if(n&&""!==n.trim()&&(t.set(n,s),!r))for(const e of N(n))t.get(e)||t.set(e,s);const n=new Map;for(const e of t.keys()){let t=n;for(let n=0;n<e.length;n++)t.has(e[n])||t.set(e[n],new Map),t=t.get(e[n]);t.end=!0}return e=>{let s="",r=0;for(;r<e.length;){const i=O(n,e,r);i?(s+=t.get(e.slice(r,r+i)),r+=i):s+=e[r++]}return s}}function O(e,t,n){let s=e,r=0;for(let e=n;e<t.length&&(s=s.get(t[e]),s);e++)s.end&&(r=e-n+1);return r}function N(e){const t=new Set([e.toLowerCase(),e.toUpperCase(),S(e)]);return t.delete(e),t}function S(e){let t="",n=!1;for(const s of e){const e=s>="a"&&s<="z",r=s>="A"&&s<="Z";t+=!n&&e?s.toUpperCase():s,n=e||r}return t}const L="({[",C=")}]";function R(e){const t=e.replace(/^\s*(?:\\(?:text|textrm|mathrm)\s*\{\s*(?:if|for|when|where)\s*\}|\b(?:if|for|when|where)\b)\s*,?/,"").replace(/[\s,.;]+$/,"").trim();return/^(?:\\(?:text|textrm|mathrm)\s*\{\s*)?(?:otherwise|else)\s*\}?$/.test(t)?"":t}function T(e,t){const n=[];let s=0,r=0;for(let i=0;i<e.length;i++)L.includes(e[i])?s++:C.includes(e[i])?s--:0===s&&e.startsWith(t,i)&&(n.push(e.slice(r,i)),i+=t.length-1,r=i+1);return n.push(e.slice(r)),n}function z(e,t,n){let s=0;const r=new RegExp(`\\b${n}\\b`,"iy");for(let n=t;n<e.length;n++)if(L.includes(e[n]))s++;else if(C.includes(e[n])){if(--s<0)return-1}else if(0===s&&(r.lastIndex=n,r.test(e)))return n;return-1}function I(e,t){let n=0;for(let s=t;s<e.length;s++)if(L.includes(e[s]))n++;else if(C.includes(e[s])&&--n<0)return s;return e.length}function j(e,t){let n=1;for(let s=t+1;s<e.length;s++)if("?"===e[s])n++;else if(":"===e[s]&&0===--n)return e.slice(0,t+1)+"("+e.slice(t+1,s)+")?:"+e.slice(s+1);return e}function Z(e){for(let t=2;t<e.length;t++)if("g"===e[t]&&"log"===e.slice(t-2,t+1))if("_"===e[t+1]){if(L.includes(e[t+2]))continue;const n=/^(?:\d+(?:\.\d+)?|[A-Za-z\u0370-\u03FF])/.exec(e.slice(t+2))?.[0];if(!n)continue;const s=t+2+n.length;e=e.slice(0,t+2)+"{"+n+"}"+e.slice(s)}else if("("===e[t+1]){let n=1,s=0,r="",i="",o=0;for(let a=t+2;a<e.length;a++){if(")]".includes(e[a])?n--:"([".includes(e[a])&&n++,0===n){o=a;break}1===n&&","===e[a]?s++:0===s?r+=e[a]:i+=e[a]}1===s&&(e=e.slice(0,t+1)+"_{"+i+"}("+r+")"+e.slice(o+1))}return e}function P(e){const t="⌈"===e[0]?"ceil":"floor";let n=1;for(let s=1;s<e.length;s++)if("⌊"===e[s]||"⌈"===e[s]?n++:"⌋"!==e[s]&&"⌉"!==e[s]||n--,0===n)return t+"("+e.slice(1,s)+")"+e.slice(s+1);return e}function F(e){let t=1;for(let n=0;n<e.length;n++){if(")]".includes(e[n])?t--:"([".includes(e[n])&&t++,0!==t)continue;const s=e.slice(0,n),r=e[n+1];if("{"===r||"("===r)return r+s+","+e.slice(n+2);const i=/^[A-Za-z0-9.\u0370-\u03FF]+/.exec(e.slice(n+1))?.[0]??"";return"{"+s+","+i+"}"+e.slice(n+1+i.length)}return e}const W=new Set(["pmatrix","bmatrix","vmatrix"]);function D(e){const t=e.indexOf("}"),n=e.indexOf("{");if(t<0||n>=0&&n<t)return!1;const s=e.slice(0,t);if(!s.includes("matrix"))return!1;const r=e.indexOf("\\end{"+s+"}"),i=e.indexOf("\\begin{"+s+"}",t+1);if(r<0||-1!==i&&i<r)return!1;const o=e.slice(t+1,r).trim().split("\\\\").map(e=>e.trim()).filter(e=>e.length).map(e=>"["+e.replace(/&/g,", ")+"]"),a=e.slice(r+6+s.length);return W.has(s)?s+"("+o.join(", ")+")"+a:"["+o.join(", ")+"]"+a}function U(e,t){if("{"!==e[t+1])return[e[t+1],t+2];let n=1,s="";for(let r=t+2;r<e.length;r++){if("{"===e[r])n++;else if("}"===e[r]&&0===--n)return[s,r+1];s+=e[r]}return[s,e.length]}function B(e){const{lower:t,upper:n,next:s}=function(e){let t="",n="",s=0;return"_"===e[0]&&([t,s]=U(e,0),"^"===e[s]&&([n,s]=U(e,s))),{lower:t,upper:n,next:s}}(e),r=e.slice(s),i=e=>e.replace(/\\,/g,"").replace(/\\!/g,"");let o,a="",l="",c=r.indexOf("\\mathrm{d}");if(c>=0){o=r.slice(0,c);const e=/^\{([^{}]*)\}/.exec(r.slice(c+10));a=e?e[1]:r[c+10],l=r.slice(c+10+(e?e[0].length:1))}else(c=function(e){let t=0;for(let n=0;n<e.length;n++)if(L.includes(e[n]))t++;else if(C.includes(e[n]))t--;else if(0===t&&"d"===e[n]&&/[A-Za-z\u0370-\u03FF]/.test(e[n+1]??"")&&!/[A-Za-z]/.test(e[n+2]??""))return n;return-1}(r))>=0?(o=r.slice(0,c),a=r[c+1],l=r.slice(c+2)):o=r;if(!a){const e=/frac\{d([A-Za-z])\}/.exec(o);e&&(a=e[1],o=o.replace(e[0],"frac{1}"))}if(!a&&/^[A-Za-z]$/.test(t)){a=[...i(o).matchAll(/(?<![A-Za-z\\])([A-Za-z])(?![A-Za-z(])/g)].map(e=>e[1]).find(e=>e!==t&&e!==n)??"x"}let h="int("+(i(o)||"1");return a&&(h+=","+a),(t||n)&&(h+=","+t+","+n),h+")"+l}function G(e){const t=e[0];if(!(t>="A"&&t<="Z"||t>="a"&&t<="z"||t>="α"&&t<="ω"))return!1;const n=e.slice(2);let s=1;for(let e=0;e<n.length;e++)if(C.includes(n[e])?s--:L.includes(n[e])&&s++,0===s)return"("+n.slice(0,e)+","+t+")"+n.slice(e+1);return!1}function H(e){return"{"===e[0]||e.length<2?e:"{"+e[0]+"}{"+e[1]+"}"+e.slice(2)}const Q=/[A-Za-z\u0370-\u03FF]/;function V(e,t){if("{"!==e[t])return null;let n=0;for(let s=t;s<e.length;s++)if("{"===e[s])n++;else if("}"===e[s]&&0===--n)return[e.slice(t+1,s),s+1];return null}function X(e,t){const n=/^\^(?:\{(\d+)\}|(\d))/.exec(e.slice(t));return n?[Number(n[1]??n[2]),t+n[0].length]:[1,t]}function J(e,t){const n=e.replace(/\\mathrm\{d\}/g,"d"),s=t.replace(/\\mathrm\{d\}/g,"d"),r=/^d(?:\^\{?(\d+)\}?)?([A-Za-z\u0370-\u03FF]?)$/.exec(n),i=/^d([A-Za-z\u0370-\u03FF])(?:\^\{?(\d+)\}?)?$/.exec(s);return r&&i?{n:Number(r[1]??1),of:r[2],by:i[1]}:null}function K(e,t){if(L.includes(e[t])){let n=0;for(let s=t;s<e.length;s++)if(L.includes(e[s]))n++;else if(C.includes(e[s])&&0===--n)return[e.slice(t,s+1),s+1];return[e.slice(t),e.length]}let n=0;for(let s=t;s<e.length;s++)if(L.includes(e[s]))n++;else{if(C.includes(e[s])&&--n<0)return[e.slice(t,s),s];if(0===n&&("="===e[s]||","===e[s]))return[e.slice(t,s),s]}return[e.slice(t),e.length]}const Y=(e,t,n)=>`der(${e},${t}${n>1?","+n:""})`;const ee="strtktk",te="ABCDEFGHIJ",ne=e=>ee+[...String(e)].map(e=>te[e]).join("");function se(e,t){let n=!1;for(let s=t+1;s<e.length;s++)if(n)n=!1;else if("\\"===e[s])n=!0;else if(e[s]===e[t])return s;return e.length-1}function re(e,t){if(!t||0===t.size)return e;const n=[...t].sort((e,t)=>t[0].length-e[0].length);return e.map(e=>{for(const[t,s]of n)e=e.split(t).join(s);return e})}const ie={factorial:"((n) => { if (!Number.isInteger(n) || n < 0) return NaN; let r = 1; for (let i = 2; i <= n; i++) r *= i; return r; })",perm:"((n, k) => { let r = 1; for (let i = n - k + 1; i <= n; i++) r *= i; return r; })",comb:"((n, k) => { let r = 1; for (let i = 1; i <= k; i++) r = r * (n - k + i) / i; return r; })",gcd:"((args)=>{let gcd = function(a,b) { return (!b)?a:gcd(b,a%b); }; return Math.abs(args.reduce(gcd));})"};for(const e of[ie])Object.setPrototypeOf(e,null);const oe="([{",ae=")]}";function le(e,t){let n=0;for(let s=t;s<e.length;s++)if(oe.includes(e[s]))n++;else if(ae.includes(e[s])&&0===--n)return s;return-1}function ce(e){if(!e.trim())return[];const t=[];let n=0,s=0;for(let r=0;r<e.length;r++)oe.includes(e[r])?n++:ae.includes(e[r])?n--:","===e[r]&&0===n&&(t.push(e.slice(s,r).trim()),s=r+1);return t.push(e.slice(s).trim()),t}function he(e,t,n){const s=[...e.matchAll(t)];for(let t=s.length-1;t>=0;t--){const r=s[t],i=r.index+r[0].length-1,o=le(e,i);if(o<0)continue;const a=n(ce(e.slice(i+1,o)),r,e.slice(o+1));if(null==a)continue;const[l,c=0]=Array.isArray(a)?a:[a];if((e=e.slice(0,r.index)+l+e.slice(o+1+c)).length>1e5)throw new Error("The expression expands too much when read")}return e}const ue=e=>new RegExp(`(?<![\\w.])(${e})\\s*\\(`,"g"),pe=e=>`(${e})`,fe=e=>/^\[.*\]$/s.test(e.trim())?`{${e.trim().slice(1,-1)}}`:e;const ge={IF:e=>e.length>=2&&`((${e[0]}) ? (${e[1]}) : (${e[2]??"false"}))`,AND:e=>e.length&&`(${e.map(pe).join(" & ")})`,OR:e=>e.length&&`(${e.map(pe).join(" ∨ ")})`,NOT:e=>1===e.length&&`(!(${e[0]}))`,XOR:e=>2===e.length&&`((${e[0]}) \\xor (${e[1]}))`,LOG:e=>2===e.length?`log_{${e[1]}}(${e[0]})`:1===e.length&&`log_{10}(${e[0]})`,ATAN2:e=>2===e.length&&`atan2(${e[1]}, ${e[0]})`,INT:e=>1===e.length&&`floor(${e[0]})`,FIXED:e=>(1===e.length||2===e.length)&&`fixed(${e[0]}, ${e[1]??2})`,"FLOOR.MATH":e=>1===e.length&&`floor(${e[0]})`,"CEILING.MATH":e=>1===e.length&&`ceil(${e[0]})`,FACT:e=>1===e.length&&`((${e[0]})!)`,COMBIN:e=>2===e.length&&`comb(${e.join(", ")})`,PERMUT:e=>2===e.length&&`perm(${e.join(", ")})`,AVERAGE:e=>`mean(${e.join(", ")})`,SUM:e=>`sum(${e.join(", ")})`,PRODUCT:e=>`prod(${e.join(", ")})`,MAX:e=>`max(${e.join(", ")})`,MIN:e=>`min(${e.join(", ")})`,MEDIAN:e=>`median(${e.join(", ")})`,"STDEV.P":e=>`stdev(${e.join(", ")})`,STDEVP:e=>`stdev(${e.join(", ")})`,CEILING:e=>(1===e.length||2===e.length&&"1"===e[1].trim())&&`ceil(${e[0]})`,RAND:e=>!e.length&&"random()",ISNUMBER:e=>1===e.length&&`((${e[0]}) ∈ ℝ)`,LOG10:e=>1===e.length&&`log_{10}(${e[0]})`};const me={POWER:"pow",SQRT:"sqrt",ABS:"abs",LN:"ln",EXP:"exp",FLOOR:"floor",CEIL:"ceil",CEILING:"ceil",ROUND:"round",GREATEST:"max",LEAST:"min",MOD:"mod",ATAN2:"atan2",FACTORIAL:"factorial",SIN:"sin",COS:"cos",TAN:"tan",SEC:"sec",CSC:"csc",COT:"cot",ASIN:"asin",ACOS:"acos",ATAN:"atan",SINH:"sinh",COSH:"cosh",TANH:"tanh",ASINH:"asinh",ACOSH:"acosh",ATANH:"atanh",COMB:"comb",PERM:"perm",GCD:"gcd",DERIVATIVE:"derivative",LIMIT:"limit",UNION:"union",EXPM1:"expm1",TRUNC:"trunc",SUMMATION:"sum"},de="strtktk[A-J]+";function $e(e){for(let t=!0;t;){const n=e;t=(e=e.replace(new RegExp(`(${de})\\s*\\|\\|\\s*(${de})`,"g"),"$1 + $2"))!==n}const t=new RegExp(`^\\(typeof\\(([^()]*)\\)\\s+IN\\s+\\(${de},\\s*${de}\\)\\s+AND\\s+(.*)\\)$`,"s");for(let n=e.lastIndexOf("(typeof(");n>=0;n=n>0?e.lastIndexOf("(typeof(",n-1):-1){const s=le(e,n),r=s>0&&t.exec(e.slice(n,s+1));if(!r)continue;const[,i,o]=r,a={[`${i} = TRUNC(${i})`]:"ℤ",[`${i} = TRUNC(${i}) AND ${i} > 0`]:"ℕ",[`ABS(${i}) < ∞`]:"ℝ"}[o.trim()];a&&(e=`${e.slice(0,n)}((${i}) ∈ ${a})${e.slice(s+1)}`)}e=he(e,/(?<![\w.])CAST\s*\(/gi,e=>{const t=1===e.length&&/^(.*)\s+AS\s+(?:REAL|FLOAT|DOUBLE(?:\s+PRECISION)?|NUMERIC|DECIMAL|INTEGER|INT)\s*$/is.exec(e[0]);return t?`(${t[1]})`:null}),e=(e=(e=he(e=function(e){for(let t=0;t<50;t++){const t=[...e.matchAll(/\bCASE\s+WHEN\b/gi)];if(!t.length)return e;const n=t[t.length-1].index,s=/\bEND\b/i.exec(e.slice(n));if(!s)return e;const r=e.slice(n+4,n+s.index).split(/\b(WHEN|THEN|ELSE)\b/i).map(e=>e.trim()),i=[];let o="null";for(let e=1;e<r.length;e+=2){const t=r[e].toUpperCase();"WHEN"===t?i.push([r[e+1],r[e+3]]):"ELSE"===t&&(o=r[e+1])}const a=i.reduceRight((e,[t,n])=>`((${t}) ? (${n}) : ${e})`,pe(o));e=e.slice(0,n)+a+e.slice(n+s.index+3)}return e}(e=e.replace(/(?<![\w.])ARRAY\s*\[/g,"[")),/(?<![\w.])LOG\s*\(/g,e=>2===e.length?`log_{${e[0]}}(${e[1]})`:`log_{10}(${e[0]})`)).replace(/(?<![\w.])PI\s*\(\s*\)/g,"π")).replace(/(?<![\w.])([A-Z][A-Z0-9]*)(?=\s*\()/g,e=>me[e]??e);for(const[t,n]of[[/\bNOT\s+IN\s*\(/g,"∉"],[/\bIN\s*\(/g,"∈"]])for(let s=t.exec(e);s;s=t.exec(e)){const r=s.index+s[0].length-1,i=le(e,r);if(i<0)break;e=`${e.slice(0,s.index)}${n} {${e.slice(r+1,i)}}${e.slice(i+1)}`,t.lastIndex=0}return e.replace(/<>/g," ≠ ")}const xe={sin:"sin",cos:"cos",tan:"tan",sinh:"sinh",cosh:"cosh",tanh:"tanh",arcsin:"asin",arccos:"acos",arctan:"atan",arcsinh:"asinh",arccosh:"acosh",arctanh:"atanh",arctan2:"atan2",sqrt:"sqrt",cbrt:"cbrt",exp:"exp",expm1:"expm1",log:"log",log2:"log2",log10:"log10",floor:"floor",ceil:"ceil",round:"round",power:"pow",abs:"abs",absolute:"abs",fabs:"abs",pi:"PI",e:"E",gcd:"gcd"},ye={maximum:"max",minimum:"min",nanmax:"max",nanmin:"min",nansum:"sum",nanprod:"prod",nanmean:"mean",nanmedian:"median",nanstd:"stdev",mod:"mod",fmod:"mod",where:"where",isin:"isin",isclose:"isclose",isfinite:"isfinite",logical_and:"logical_and",logical_or:"logical_or",logical_not:"logical_not",logical_xor:"logical_xor",prod:"prod",sum:"sum",trunc:"trunc"};function be(e){return(e=(e=function(e){return e=e.replace(/(?<![\w.])sympy\.Interval\.(open|Lopen|Ropen)\s*\(/g,(e,t)=>`sympy_interval_${t}(`),e=e.replace(/(?<![\w.])sympy\.S\.(\w+)/g,(e,t)=>ve[t]??e),e=e.replace(/(?<![\w.])sympy\.(Reals|Integers|Naturals0?|Rationals|Complexes)\b/g,(e,t)=>ve[t]),e.replace(/(?<![\w.])sympy\.(\w+)/g,(e,t)=>ke[t]??we[t]??e)}(e=(e=(e=(e=(e=(e=(e=e.replace(/(?<![\w.])(?:np|numpy)\.random\.random\(\s*\)|(?<![\w.])random\.random\(\s*\)/g,"Math.random()")).replace(/(?<![\w.])(?:np|numpy)\.linalg\.(det|inv)\b/g,"$1")).replace(/(?<![\w.])(?:np|numpy)\.array\s*\(/g,"(")).replace(/(?<![\w.])(?:np|numpy)\.(\w+)/g,(e,t)=>xe[t]?`Math.${xe[t]}`:ye[t]?ye[t]:{inf:"∞",nan:"NaN"}[t]??e)).replace(/(?<![\w.])(?:math|Math)\.(factorial|isfinite|isclose|prod|inf|nan|abs|trunc)\b/g,(e,t)=>({inf:"∞",nan:"NaN"}[t]??t))).replace(/(?<![\w.])Number\.(isInteger|isFinite)\b/g,(e,t)=>t.toLowerCase())).replace(/(?<![\w.])scipy\.(?:special|integrate)\.(\w+)/g,"$1"))).replace(/\bMZ_INFINITY\b/g,"∞")).replace(/(?<![\w.])mz_(?=\w+\s*\()/g,"")}const we={pi:"π",E:"e",oo:"∞",true:"true",false:"false",nan:"NaN",I:"i"},ve={Reals:"ℝ",Integers:"ℤ",Naturals:"ℕ",Naturals0:"ℕ",Rationals:"ℚ",Complexes:"ℂ"},ke={sqrt:"Math.sqrt",exp:"Math.exp",sin:"Math.sin",cos:"Math.cos",tan:"Math.tan",sinh:"Math.sinh",cosh:"Math.cosh",tanh:"Math.tanh",asin:"Math.asin",acos:"Math.acos",atan:"Math.atan",asinh:"Math.asinh",acosh:"Math.acosh",atanh:"Math.atanh",atan2:"atan2",csc:"csc",sec:"sec",cot:"cot",log:"log",Abs:"abs",floor:"floor",ceiling:"ceil",Max:"max",Min:"min",factorial:"factorial",binomial:"comb",ff:"perm",gcd:"gcd",gcd_list:"sympy_list_gcd",Mod:"mod",root:"sympy_root",Rational:"sympy_rational",Integer:"sympy_value",Float:"sympy_value",Eq:"sympy_eq",Ne:"sympy_ne",And:"sympy_and",Or:"sympy_or",Not:"sympy_not",Xor:"sympy_xor",Nand:"sympy_nand",Nor:"sympy_nor",Piecewise:"sympy_piecewise",FiniteSet:"sympy_set",Interval:"sympy_interval",Contains:"sympy_contains",Union:"union",Intersection:"intersection",diff:"derivative",integrate:"sympy_integrate",limit:"sympy_limit",summation:"sympy_summation",product:"sympy_product",expm1:"expm1",Matrix:""},_e={open:"()",Lopen:"(]",Ropen:"[)"};const Ee=e=>{const t=/^\((.*)\)$/s.exec(e.trim());return t?ce(t[1]):null},Me=e=>t=>2===t.length&&`${e[0]}${t[0]}, ${t[1]}${e[1]}`,Ae=e=>Ee(e)??[e],qe={where:e=>3===e.length&&`((${e[0]}) ? (${e[1]}) : (${e[2]}))`,logical_and:e=>2===e.length&&`((${e[0]}) & (${e[1]}))`,logical_or:e=>2===e.length&&`((${e[0]}) ∨ (${e[1]}))`,logical_xor:e=>2===e.length&&`((${e[0]}) \\xor (${e[1]}))`,logical_not:e=>1===e.length&&`(!(${e[0]}))`,isin:e=>2===e.length&&`((${e[0]}) ∈ ${fe(e[1])})`,contains:e=>2===e.length&&`((${e[1]}) ∈ ${fe(e[0])})`,isclose:e=>e.length>=2&&`((${e[0]}) ≈ (${e[1]}))`,isfinite:e=>1===e.length&&`((${e[0]}) ∈ ℝ)`,isinteger:e=>1===e.length&&`((${e[0]}) ∈ ℤ)`,factorial:e=>1===e.length&&`((${e[0]})!)`,union:e=>2===e.length&&`((${e[0]}) ∪ (${e[1]}))`,union_:e=>2===e.length&&`((${e[0]}) ∪ (${e[1]}))`,intersection:e=>2===e.length&&`((${e[0]}) ∩ (${e[1]}))`,sq:e=>1===e.length&&`((${e[0]})^2)`,cube:e=>1===e.length&&`((${e[0]})^3)`,fract:e=>1===e.length&&`((${e[0]}) - floor(${e[0]}))`,inversesqrt:e=>1===e.length&&`(1/sqrt(${e[0]}))`,mod:e=>2===e.length&&`((${e[0]}) \\mod (${e[1]}))`,atan:e=>2===e.length&&`atan2(${e[0]}, ${e[1]})`,exp2:e=>1===e.length&&`((2)^(${e[0]}))`,trunc:e=>1===e.length&&`((${e[0]}) - ((${e[0]}) \\mod 1))`,vec2:e=>`(${e.join(", ")})`,vec3:e=>`(${e.join(", ")})`,vec4:e=>`(${e.join(", ")})`,derivative:e=>e.length>=2&&`der(${e.join(", ")})`,sympy_rational:e=>2===e.length&&`((${e[0]})/(${e[1]}))`,sympy_value:e=>1===e.length&&`(${e[0]})`,sympy_eq:e=>2===e.length&&`((${e[0]}) = (${e[1]}))`,sympy_ne:e=>2===e.length&&`((${e[0]}) ≠ (${e[1]}))`,sympy_and:e=>e.length&&`(${e.map(pe).join(" & ")})`,sympy_or:e=>e.length&&`(${e.map(pe).join(" ∨ ")})`,sympy_not:e=>1===e.length&&`(!(${e[0]}))`,sympy_xor:e=>2===e.length&&`((${e[0]}) \\xor (${e[1]}))`,sympy_nand:e=>2===e.length&&`((${e[0]}) \\nand (${e[1]}))`,sympy_nor:e=>2===e.length&&`((${e[0]}) \\nor (${e[1]}))`,sympy_piecewise:e=>{const t=e.map(Ee);return!t.length||t.some(e=>!e||2!==e.length)?null:t.reduceRight((e,[t,n])=>null===e||/^True$|^true$/.test(n.trim())&&void 0===e?`(${t})`:`((${n}) ? (${t}) : ${e??"(null)"})`,void 0)},sympy_set:e=>`{${e.join(", ")}}`,sympy_interval:Me("[]"),sympy_interval_open:Me("()"),sympy_interval_Lopen:Me("(]"),sympy_interval_Ropen:Me("[)"),sympy_contains:e=>2===e.length&&`((${e[0]}) ∈ ${e[1]})`,sympy_list_gcd:e=>1===e.length&&`gcd(${e[0].trim().replace(/^\[|\]$/g,"")})`,sympy_root:e=>2===e.length&&`root(${e[1]}, ${e[0]})`,sympy_integrate:e=>{if(2!==e.length)return null;const t=Ae(e[1]);return 3===t.length?`int(${e[0]}, ${t.join(", ")})`:1===t.length?`int(${e[0]}, ${t[0]})`:null},sympy_limit:e=>e.length>=3&&`lim(${e.slice(0,3).join(", ")}${e[3]?`, ${e[3]}`:""})`,sympy_summation:e=>{if(3===e.length&&/^\s*[A-Za-z]\w*\s*==/.test(e[1]))return`sum(${e[0]}, ${e[1].replace("==","=")}, ${e[2]})`;const t=2===e.length&&Ae(e[1]);return 3===t?.length&&`(\\sum_{${t[0]}=${t[1]}}^{${t[2]}} (${e[0]}))`},sympy_product:e=>{if(3===e.length&&/^\s*[A-Za-z]\w*\s*==/.test(e[1]))return`prod(${e[0]}, ${e[1].replace("==","=")}, ${e[2]})`;const t=2===e.length&&Ae(e[1]);return 3===t?.length&&`(\\prod_{${t[0]}=${t[1]}}^{${t[2]}} (${e[0]}))`},limit:e=>e.length>=3&&`lim(${e.join(", ")})`,summation:e=>3===e.length&&/^\s*[A-Za-z]\w*\s*==/.test(e[1])&&`sum(${e[0]}, ${e[1].replace("==","=")}, ${e[2]})`,sum:Oe("sum"),prod:Oe("prod")};function Oe(e){return t=>{const n=1===t.length&&/^(.*?)\s+for\s+(\w+)\s+in\s+range\((.*)\)\s*$/s.exec(t[0]);if(!n)return null;const s=ce(n[3]),[r,i]=1===s.length?["0",s[0]]:s,o=/\s*\+\s*1$/.test(i)?i.replace(/\s*\+\s*1$/,""):`(${i}) - 1`;return`(\\${e}_{${n[2]}=${r}}^{${o}} (${n[1]}))`}}for(const e of[ge,me,xe,ye,we,ve,ke,_e,qe])Object.setPrototypeOf(e,null);const Ne=String.raw`(?:\([^()]*\)|\[[^\[\]]*\]|\{[^{}]*\}|(?<![\w.′^])[\w.′^]+)`,Se=e=>e.trim().split(/\s+/).join(String.raw`\s+`),Le=e=>new RegExp(String.raw`(?<![\w.])${Se(e)}(?![\w.])`,"gi"),Ce=[["is greater than or equal to","≥"],["is more than or equal to","≥"],["is at least","≥"],["is no less than","≥"],["is not less than","≥"],["is less than or equal to","≤"],["is at most","≤"],["is no more than","≤"],["is not more than","≤"],["is not greater than","≤"],["is greater than",">"],["is more than",">"],["is bigger than",">"],["is larger than",">"],["is above",">"],["exceeds",">"],["is less than","<"],["is smaller than","<"],["is fewer than","<"],["is below","<"],["is not equal to","≠"],["does not equal","≠"],["doesn't equal","≠"],["is different from","≠"],["is approximately equal to","≈"],["is approximately","≈"],["is about","≈"],["is roughly","≈"],["is close to","≈"],["is equal to","="],["is the same as","="],["equals","="],["greater than or equal to","≥"],["less than or equal to","≤"],["at least","≥"],["at most","≤"],["greater than",">"],["more than",">"],["less than","<"],["not equal to","≠"],["equal to","="]],Re="[<>≤≥=≠≈]",Te=[["is non-negative","≥ 0"],["is nonnegative","≥ 0"],["is not negative","≥ 0"],["is non-positive","≤ 0"],["is nonpositive","≤ 0"],["is not positive","≤ 0"],["is positive","> 0"],["is negative","< 0"],["is non-zero","≠ 0"],["is nonzero","≠ 0"],["is not zero","≠ 0"],["is zero","= 0"],["is a whole number","∈ ℤ"],["is an integer","∈ ℤ"],["is not an integer","∉ ℤ"],["is a natural number","∈ ℕ"],["is a real number","∈ ℝ"],["is real","∈ ℝ"],["is a rational number","∈ ℚ"],["is rational","∈ ℚ"]];const ze=q([[" And "," & "],[" Or "," ∨ "],[" Not In "," ∉ "],[" Nor "," \\nor "],[" Xor "," \\xor "],[" Nand "," \\nand "],[" In "," ∈ "],[" Mod "," \\mod "],[" % ","%"],[" Perm ","\\perm "],[" P ","\\perm",!0],[" Comb ","\\comb "],[" C ","\\comb",!0],[" choose ","\\comb "],["! ","!_"],["\\in ","∈"],["\\notin ","∉"],["\\not\\in ","∉"],["\\to ","→"],["===","=...="]]),Ie=q([["Math.atan2","atan2"],["Math.atan2(","atan2("],["atan2","atan2"],["\\atan2","atan2"],["Math.random()","random(1)"],["random.random()","random(1)"],["Math.log2(","log_{2}("],["Math.log10(","log_{10}("],["Math.log_{","log_{"],["Math.log","log_{e}"],["Math.ln","log_{e}"],["Math.abs(","abs("],["Math.fabs(","abs("],["Math.gcd(","gcd("],["Math.comb(","comb("],["Math.perm(","perm("],["Math.fmod(","mod("],["Math.exp(","(e)^("],["Math.exp2(","(2)^("],["Math.expm1(","expm1("],["Math.pow(","pow("],["**","^"],["Math.floor(","floor("],["Math.ceil(","ceil("],["Math.round(","round("],["Math.max(","max("],["Math.min(","min("],["Math.pi","π"],["Math.PI","π"],["math.Pi","π"],["Math.e","e"],["math.E","e"],["Math.sqrt2","sqrt(2)"],["Math.sqrt(","sqrt("],["Math.SQRT1_2","sqrt(1/2)"],["Math.SQRT1_{2}","sqrt(1/2)"],["Math.SQRT2","sqrt(2)"],["cbrt","sqrt[3]"],["Math.cbrt","sqrt[3]"],["Sqrt","sqrt"],["Root","sqrt"],["\\sqrt{","sqrt{"],["\\frac","frac"],["\\dfrac","frac"],["\\tfrac","frac"],["\\lim","lim"],["\\sum","\\sumidx"],["\\prod","\\prodidx"],["\\displaystyle",""],["\\textstyle",""],["\\,",""],["\\;",""],["\\!",""],["\\quad",""],["\\qquad",""],["\\lvert","|"],["\\rvert","|"],["\\vert","|"],["^\\prime","′"],["^{\\prime}","′"],["^{\\prime\\prime}","′′"],["\\prime","′"],["\\approx","≈"],["\\varepsilon","ε"],["\\vartheta","θ"],["\\varphi","φ"],["\\cup","∪"],["\\mathbb{R}","ℝ",!0],["\\mathbb{N}","ℕ",!0],["\\mathbb{Z}","ℤ",!0],["\\mathbb{Q}","ℚ",!0],["\\mathbb{C}","ℂ",!0],["\\cap","∩"],["\\barwedge","\\nand"],["∧","&"],["¬","!"],["↑","\\nand"],["↓","\\nor"],["\\downarrow","\\nor"],["∫","\\int"],["∑","\\sum"],["∏","\\prod"],["asin(","arcsin("],["acos(","arccos("],["atan(","arctan("],["asinh(","arcsinh("],["acosh(","arccosh("],["atanh(","arctanh("],["\\sqrt*","sqrt"],["Log","log"],["Max","max"],["Min","min"],["Floor","floor"],["Ceil","ceil"],["Round","round"],["Abs","abs"],["Sum","sum"],["Prod","prod"],["Mean","mean"],["Avg","mean"],["Average","mean"],["Gcd","gcd"],["Math.LOG2e","log_{2}(e)"],["Math.LOG10e","log_{10}(e)"],["Math.LN2","log_{e}(2)"],["Math.LN10","log_{e}(10)"],["Math.tau","τ"],["infinity","∞"],["\\infty","∞"],["\\cdot","*"],["\\times","*"],["×","*"],["·","*"],["÷","/"],["->","→"],["\\to","→"],["\\max","max"],["\\min","min"],["\\det","det"],["^{\\top}","^{T}",!0],["^\\top","^T",!0],["^{\\intercal}","^{T}",!0],["^\\intercal","^T",!0],["^{\\mathsf{T}}","^{T}",!0],["^{\\mathrm{T}}","^{T}",!0],["product(","prod("],["log[","log_["],["\\log[","log_["],["\\log_","log_"],["\\log","log_{e}"],["\\ln","log_{e}"],["log(","log_{e}("],["ln(","log_{e}("],["log2(","log_{2}("],["log3(","log_{3}("],["log4(","log_{4}("],["log5(","log_{5}("],["log6(","log_{6}("],["log7(","log_{7}("],["log8(","log_{8}("],["log9(","log_{9}("],["log10(","log_{10}("],["log_10","log_{10}"],["\\log2(","log_{2}("],["\\log3(","log_{3}("],["\\log4(","log_{4}("],["\\log5(","log_{5}("],["\\log6(","log_{6}("],["\\log7(","log_{7}("],["\\log8(","log_{8}("],["\\log9(","log_{9}("],["\\log10(","log_{10}("],["\\log_10","log_{10}"],["log2{","log_{2}{"],["log3{","log_{3}{"],["log4{","log_{4}{"],["log5{","log_{5}{"],["log6{","log_{6}{"],["log7{","log_{7}{"],["log8{","log_{8}{"],["log9{","log_{9}{"],["log10{","log_{10}{"],["\\log2{","log_{2}{"],["\\log3{","log_{3}{"],["\\log4{","log_{4}{"],["\\log5{","log_{5}{"],["\\log6{","log_{6}{"],["\\log7{","log_{7}{"],["\\log8{","log_{8}{"],["\\log9{","log_{9}{"],["\\log10{","log_{10}{"],["\\log_10","log_{10}"],["\\log\\log","\\loglog"],["\\log\\log\\log","\\logloglog"],["\\loglog","\\loglog"],["\\logloglog","\\logloglog"],["loglog(","loglog("],["\\exp","e^"],["exp(","e^("],["\\div","/"],["\\int","\\int"],["\\in","∈"],["\\not\\in","∉"],["\\notin","∉"],["\\nor"," \\nor "],["\\xor"," \\xor "],["\\nand"," \\nand "],["\\uparrow"," \\nand "],["\\downarrow"," \\nor "],["\\oplus"," \\xor "],["\\lor","∨"],["\\land","&"],["Not"," \\not "],["&&","&"],["\\neg"," \\not "],["\\not"," \\not "],["\\rightarrow","→"],["\\limits_","_"],["\\pmod"," pmod "],["\\equiv","≡"],["\\mod"," mod "],["\\bmod"," mod "],["\\pm","±"],["\\plusmn","±"],["\\neq","≠"],["\\ne","≠"],["!==","≠="],["==","="],["=...=","==="],["!=","≠"],["\\gt",">"],["\\lt","<"],["\\ge","≥"],["\\geq","≥"],[">=","≥"],["\\le","≤"],["\\leq","≤"],["<=","≤"],["<>","≠"],["\\lparen","("],["\\rparen",")"],["\\left(","("],["\\right)",")"],["\\left[","["],["\\right]","]"],["\\left{","{"],["\\right}","}"],["\\left\\{","{"],["\\{","{"],["\\}","}"],["\\right\\}","}"],["\\left|","|"],["\\right|","|"],["\\lfloor","⌊"],["\\rfloor","⌋"],["\\lceil","⌈"],["\\rceil","⌉"],["ceiling(","ceil("],["√","sqrt"],["²","^2"],["³","^3"],["⁴","^4"],["⁵","^5"],["⁶","^6"],["⁷","^7"],["⁸","^8"],["⁹","^9"],["⁰","^0"],["¹","^1"],["ⁿ","^n"],["⁻¹","^{-1}"],["⁻²","^{-2}"],["⁻³","^{-3}"],["∛","sqrt[3]"],["∜","sqrt[4]"],["½","(1/2)"],["⅓","(1/3)"],["⅔","(2/3)"],["¼","(1/4)"],["¾","(3/4)"],["⅛","(1/8)"],["⅜","(3/8)"],["⅝","(5/8)"],["⅞","(7/8)"],["⊕"," \\xor "],["∞","∞"],["⋅","*"],["−","-"],["\\wedge","&"],["∨","∨"],["\\vee","∨"],["\\Pi","Π",!0],["\\Alpha","Α",!0],["\\Beta","Β",!0],["\\Gamma","Γ",!0],["\\Delta","Δ",!0],["\\Delta ","Δ",!0],["\\Epsilon","Ε",!0],["\\Zeta","Ζ",!0],["\\Eta","Η",!0],["\\Theta","Θ",!0],["\\Iota","Ι",!0],["\\Kappa","Κ",!0],["\\Lambda","Λ",!0],["\\Mu","Μ",!0],["\\Nu","Ν",!0],["\\Xi","Ξ",!0],["\\Omicron","Ο",!0],["\\Rho","Ρ",!0],["\\Sigma","Σ",!0],["\\Tau","Τ",!0],["\\Upsilon","Υ",!0],["\\Phi","Φ",!0],["\\Chi","Χ",!0],["\\Psi","Ψ",!0],["\\Omega","Ω",!0],["\\pi","π",!0],["\\alpha","α",!0],["\\beta","β",!0],["\\gamma","γ",!0],["\\delta","δ",!0],["\\epsilon","ε",!0],["\\zeta","ζ",!0],["\\eta","η",!0],["\\theta","θ",!0],["\\iota","ι",!0],["\\kappa","κ",!0],["\\lambda","λ",!0],["\\mu","μ",!0],["\\nu","ν",!0],["\\xi","ξ",!0],["\\omicron","ο",!0],["\\rho","ρ",!0],["\\sigma","σ",!0],["\\tau","τ",!0],["\\upsilon","υ",!0],["\\phi","φ",!0],["\\chi","χ",!0],["\\psi","ψ",!0],["\\omega","ω",!0],...function(){const e=[],t=(t,n)=>{e.push([t,n],[t+"(",n+"("])};for(const n of["sin","cos","tan","cot","csc","sec"])if(e.push(["Math."+n+"(",n+"("],["\\"+n+"(",n+"("],["\\"+n,n]),["sin","cos","tan"].includes(n))for(const e of["","h"]){const s=n+e,r="arc"+n+e;e&&(t("Math."+s,s),t("\\"+s,s));for(const n of["^-1","^{-1}","-1"])t("\\"+s+n,r),t(s+n,r),e||t("Math."+s+n,r);e||t("\\a"+s,r),t("\\arc"+s,r),t("Math.a"+s,r),t("Math.arc"+s,r)}return e}()]),je=[["code",function(e){return/^\s*=|[(.%^<_eE]|\|\||\bif\b|\b(?:True|False|None|TRUE|FALSE|NULL)\b/.test(e)?(/^\s*=(?!=)/.test(e)&&(e=function(e){const t="(?:[\\p{L}_][\\p{L}\\p{N}_.]*|\\d+(?:\\.\\d+)?|§\\d+§)";e=(e=(e=e.replace(/^\s*=/,"").replace(/(?<![\w.])_xlfn\./g,"")).replace(/&/g,"+")).replace(new RegExp(`(^|[(,=<>*/+^-]\\s*)-\\s*(${t})(?=\\s*\\^)`,"gu"),"$1(-$2)");for(let n=!0;n;){const s=e;n=(e=e.replace(new RegExp(`(^|[^\\p{L}\\p{N}_.)§])(${t}\\s*\\^\\s*${t})(?=\\s*\\^)`,"u"),"$1($2)"))!==s}return he(e,/(?<![\w.])([A-Z][A-Z0-9]*(?:\.[A-Z]+)?)\s*\(/g,(e,t)=>ge[t[1]]?.(e)||null)}(e)),e=function(e){e=he(e,ue("quad"),(e,t,n)=>{const s=/^lambda\s+(\w+)\s*:\s*(.*)$/s.exec(e[0]??"");if(!s||3!==e.length)return null;const r=/^\s*\[\s*0\s*\]/.exec(n);return[`int(${s[2]}, ${s[1]}, ${e[1]}, ${e[2]})`,r?r[0].length:0]}),e=he(e,ue(Object.keys(qe).join("|")),(e,t)=>qe[t[1]](e)||null);for(let t=(e=he(e,ue("float"),(e,t,n)=>{const s=/^\s*\.is_integer\(\s*\)/.exec(n);return s&&1===e.length?[`((${e[0]}) ∈ ℤ)`,s[0].length]:null})).lastIndexOf(".includes(");t>=0;t=t>0?e.lastIndexOf(".includes(",t-1):-1){const n=t+9,s=le(e,n);let r=t;if(ae.includes(e[t-1])){let n=0;for(r=t-1;r>=0;r--)if(ae.includes(e[r]))n++;else if(oe.includes(e[r])&&0===--n)break}else for(;r>0&&/[\w.]/.test(e[r-1]);)r--;s<0||r<0||r===t||(e=`${e.slice(0,r)}((${e.slice(n+1,s)}) ∈ ${fe(e.slice(r,t))})${e.slice(s+1)}`)}return e}(e=be(e=$e(e=(e=(e=function(e){for(const[t,n]of Object.entries(ie))for(let s=e.lastIndexOf(n);s>=0;s=s>0?e.lastIndexOf(n,s-1):-1){const r=s+n.length,i="("===e[r]?le(e,r):-1;if(i<0)continue;let o=e.slice(r+1,i);"gcd"===t&&(o=o.trim().replace(/^\[|\]$/g,""));const a="factorial"===t?`((${o})!)`:`${t}(${o})`;e=e.slice(0,s)+a+e.slice(i+1)}for(let t=e.lastIndexOf(").toFixed(");t>=0;t=t>0?e.lastIndexOf(").toFixed(",t-1):-1){const n=t+10-1,s=le(e,n),r=e.lastIndexOf("Number(",t);s<0||r<0||le(e,r+7-1)!==t||(e=e.slice(0,r)+`fixed(${e.slice(r+7,t)}, ${e.slice(n+1,s)})`+e.slice(s+1))}return e.replace(/\(\(\)=>\{let (sum|prod) = [01]; let loopCount = 0; for \(let (\w+)=(.*?);\2<=(.*?);\2\+\+\) \{if \(loopCount\+\+ > 1000000\)\{break\};\1 [+*]= (.*?);\}; return \1;\}\)\(\)/g,(e,t,n,s,r,i)=>`(\\${"sum"===t?"sum":"prod"}_{${n}=${s}}^{${r}} (${i}))`)}(e)).replace(/(?<![\w.])9e999\b/g,"∞")).replace(/(?<![\w.])(\d+(?:\.\d+)?)[eE]([+-]\d+)(?![\w.])/g,"($1*10^{$2})")))),(e=(e=(e=function(e){for(let t=0;t<50;t++){let t=!0;for(const n of e.matchAll(/\bif\b/g)){const s=n.index;let r=0,i=-1,o=e.length;for(let t=s+2;t<e.length;t++)if(oe.includes(e[t]))r++;else{if(ae.includes(e[t])&&--r<0){o=t;break}if(0===r&&","===e[t]){o=t;break}if(0===r&&/^then\b/.test(e.slice(t))&&/\W/.test(e[t-1])){i=-2;break}0===r&&i<0&&/^else\b/.test(e.slice(t))&&/\W/.test(e[t-1])&&(i=t)}if(i<0)continue;r=0;let a=0;for(let t=s-1;t>=0;t--)if(ae.includes(e[t]))r++;else{if(oe.includes(e[t])&&--r<0){a=t+1;break}if(0===r&&","===e[t]){a=t+1;break}}const l=e.slice(a,s).trim();if(!l)continue;const c=`((${e.slice(s+2,i).trim()}) ? (${l}) : (${e.slice(i+4,o).trim()}))`;e=e.slice(0,a)+c+e.slice(o),t=!1;break}if(t)return e}return e}(e)).replace(/\b(?:True|TRUE)\b/g,"true").replace(/\b(?:False|FALSE)\b/g,"false").replace(/\b(?:None|NULL)\b/g,"null")).replace(/\^\^/g," \\xor ")).replace(/%(?=\s*(?:[(-]|[A-Za-z_][\w.]*\s*\())/g," \\mod ")):e}],["english",function(e){if(!/[A-Za-z]{2}/.test(e))return e;let t=e;const n=(e,n,s,r="∈")=>{t=t.replace(new RegExp(String.raw`(?<![\w.])${Se(e)}\s+(${Ne})\s+(?:and|to)\s+(${Ne})(?:\s+(inclusive|exclusive))?(?![\w.])`,"gi"),(e,t,i,o)=>{const[a,l]="exclusive"===o?.toLowerCase()?["(",")"]:"inclusive"===o?.toLowerCase()?["[","]"]:[n,s];return` ${r} ${a}${t}, ${i}${l} `})};n("is not strictly between","(",")","∉"),n("is not between","[","]","∉"),n("is strictly between","(",")"),n("is between","[","]"),n("between","[","]"),t=t.replace(new RegExp(String.raw`(?<![\w.])is\s+(not\s+)?in\s+the\s+(open|closed|half-open)\s+interval\s+from\s+(${Ne})\s+to\s+(${Ne})`,"gi"),(e,t,n,s,r)=>{const[i,o]={open:["(",")"],closed:["[","]"],"half-open":["[",")"]}[n.toLowerCase()];return` ${t?"∉":"∈"} ${i}${s}, ${r}${o} `});const s=String.raw`(${Ne})\s+`;t=t.replace(new RegExp(s+String.raw`is\s+(not\s+)?within\s+(${Ne})\s*(%|\s+percent)?\s+of\s+(${Ne})`,"gi"),(e,t,n,s,r,i)=>`(abs((${t}) - (${i})) ${n?">":"≤"} ${r?`(${s})/100 * ${/^\d+(\.\d+)?$/.test(i)?i:`abs(${i})`}`:`(${s})`})`),t=t.replace(new RegExp(s+String.raw`is\s+(?:a\s+)?multiple\s+of\s+(${Ne})`,"gi"),"(($1) mod ($2) = 0)"),t=t.replace(new RegExp(s+String.raw`is\s+(not\s+)?divisible\s+by\s+(${Ne})`,"gi"),(e,t,n,s)=>`((${t}) mod (${s}) ${n?"≠":"="} 0)`),t=t.replace(new RegExp(String.raw`(${Ne})\s+divides\s+(${Ne})`,"gi"),"(($2) mod ($1) = 0)"),t=t.replace(new RegExp(s+String.raw`is\s+(not\s+)?(even|odd)(?![\w.])`,"gi"),(e,t,n,s)=>`((${t}) mod 2 ${"even"===s.toLowerCase()!==Boolean(n)?"=":"≠"} 0)`);for(const[e,n]of Te)t=t.replace(Le(e),` ${n} `);t=t.replace(Le("is not in")," ∉ ").replace(Le("is in")," ∈ ").replace(Le("is an element of")," ∈ ");for(const[e,n]of Ce)t=t.replace(Le(e),` ${n} `);t=t.replace(Le("is not")," ≠ "),t=t.replace(/(?<=[\w.)\]}′]\s+)is(?=\s+[\w.(\[{-])/gi," = ");for(let e=!0;e;){const n=t;t=t.replace(new RegExp(String.raw`(${Ne})\s*(${Re})\s*(${Ne})\s+(and|or)\s+(${Re})`,"gi"),"$1 $2 $3 $4 $1 $5"),e=t!==n}t=t.replace(new RegExp(String.raw`(?<![\w.])(?:the\s+)?absolute\s+value\s+of\s+(${Ne})`,"gi"),"abs($1)"),t=t.replace(new RegExp(String.raw`(?<![\w.])(?:the\s+)?square\s+root\s+of\s+(${Ne})`,"gi"),"sqrt($1)"),t=t.replace(new RegExp(String.raw`(?<![\w.])(?:the\s+)?cube\s+root\s+of\s+(${Ne})`,"gi"),"root(3, $1)"),t=t.replace(new RegExp(String.raw`(${Ne})\s+to\s+the\s+power\s+of\s+(${Ne})`,"gi"),"($1)^($2)");const r={second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10};t=t.replace(new RegExp(String.raw`(${Ne})\s+to\s+the\s+(${Object.keys(r).join("|")}|(\d+|n)(?:st|nd|rd|th))(?:\s+power)?(?![\w.])`,"gi"),(e,t,n,s)=>`(${t})^(${r[n.toLowerCase()]??s})`),t=t.replace(new RegExp(String.raw`(${Ne})\s+to\s+the\s+(${Ne})(?![\w.])`,"gi"),"($1)^($2)");const i={sine:"sin",cosine:"cos",tangent:"tan",secant:"sec",cosecant:"csc",cotangent:"cot","natural log":"ln","natural logarithm":"ln",arcsine:"arcsin",arccosine:"arccos",arctangent:"arctan","hyperbolic sine":"sinh","hyperbolic cosine":"cosh","hyperbolic tangent":"tanh",floor:"floor",ceiling:"ceil"};for(const[e,n]of Object.entries(i).sort((e,t)=>t[0].length-e[0].length))t=t.replace(new RegExp(String.raw`(?<![\w.])(?:the\s+)?${Se(e)}\s+of\s+(${Ne})`,"gi"),`${n}($1)`);t=t.replace(new RegExp(String.raw`(${Ne})\s+squared(?![\w.])`,"gi"),"($1)^2"),t=t.replace(new RegExp(String.raw`(${Ne})\s+cubed(?![\w.])`,"gi"),"($1)^3"),t=t.replace(new RegExp(String.raw`(?<![\w.])half\s+of\s+(${Ne})`,"gi"),"($1)/2"),t=t.replace(new RegExp(String.raw`(?<![\w.])twice\s+(${Ne})`,"gi"),"2*($1)"),t=t.replace(new RegExp(String.raw`(\d+(?:\.\d+)?)\s+percent(?![\w.])`,"gi"),"$1%");const o=e=>new RegExp(String.raw`(?<=[\w.′)\]}]\s+)${Se(e)}(?=\s+[\w.(\[{-])`,"gi");for(const[e,n]of[["divided by","/"],["over","/"],["multiplied by","*"],["times","*"],["plus","+"],["minus","-"],["modulo","mod"]])t=t.replace(o(e),` ${n} `);return t}],["words",ze],["spaced",function(e){e=Z(e=function(e){for(let t=0;t<e.length;t++){const n=n=>e.slice(Math.max(0,t-n),t+1);if("t"===e[t]&&"\\text"===n(4)&&"{"===e[t+1]){let n=1,s=t+2,r="";for(;n>0&&s<e.length;)"{"===e[s]?n++:"}"===e[s]?n--:r+=e[s],s++;e=e.slice(0,t-4)+r+e.slice(s)}}return e}(e=(e=(e=function(e){for(let t=0;t<100;t++){const t=[...e.matchAll(/\bif\b/gi)];if(!t.length)return e;const n=t[t.length-1].index,s=z(e,n+2,"then");if(s<0)return e;const r=e.slice(n+2,s),i=z(e,s+4,"else"),o=I(e,i<0?s+4:i+4),a=e.slice(s+4,i<0?o:i),l=i<0?"unchanged":e.slice(i+4,o).trim();e=`${e.slice(0,n)}((${r.trim()}) ? (${a.trim()}) : (${l}))${e.slice(o)}`}return e}(e)).replace(/\(\s*\\?b?mod\s+([^()]+?)\s*\)/g," \\pmod{$1}")).replace(/(^|[^A-Za-z\\])lim\s+([^\s_{}]+?)\s*(->|→|\\to)\s*([^\s]+)\s+/g,"$1lim_{$2→$4} ")));for(let t=0;t<e.length-1;t++)if("?"===e[t]&&":"!==e[t+1])e=j(e,t);else if("_"===e[t]||"^"===e[t]){const n=/^§\d+§/.exec(e.slice(t+1));if(n){e=`${e.slice(0,t+1)}{${n[0]}}${e.slice(t+1+n[0].length)}`;continue}let s=t+1;for("-"===e[s]&&s++;s<e.length&&".0123456789".includes(e[s]);)s++;s===t+2&&"-"===e[t+1]&&(s=t+1),s>t+1&&(e=e.slice(0,t+1)+"{"+e.slice(t+1,s)+"}"+e.slice(s))}return e}],["squeeze",function(e){return e.replace(/\s+/g,(t,n)=>{const s=e[n-1]??"",r=e[n+t.length]??"";return"Δ"===s?"":/[A-Za-z\u0370-\u03FF′]/.test(s)&&/[A-Za-z\u0370-\u03FF]/.test(r)?" ":""})}],["symbols",Ie],["compact",function(e){e=function(e){for(let t=0;t<e.length;t++){const n=t>0&&Q.test(e[t-1]);let s,r=null,i=t;if(e.startsWith("frac{",t)){const n=V(e,t+4),s=n&&V(e,n[1]);r=s&&J(n[0],s[0]),r&&(i=s[1])}else if("d"===e[t]&&!n){let[n,s]=X(e,t+1),o="";if(Q.test(e[s]??"")&&"/"===e[s+1]&&(o=e[s++]),"/"===e[s]&&"d"===e[s+1]&&Q.test(e[s+2]??"")){const t=e[s+2],[,a]=X(e,s+3);r={n:n,of:o,by:t},i=a}}if(r){if(r.of)s=Y(r.of,r.by,r.n);else{const[t,n]=K(e,i);if(!t)continue;s=Y(t,r.by,r.n),i=n}e=e.slice(0,t)+s+e.slice(i),t+=3}}return e}(e=function(e){for(let t=e.indexOf(")′");t>=0;t=e.indexOf(")′",t+1)){let n=0,s=-1;for(let r=t;r>=0;r--)if(")"===e[r])n++;else if("("===e[r]&&0===--n){s=r;break}if(s<0)continue;for(;s>0&&/[A-Za-z\u0370-\u03FF′]/.test(e[s-1]);)s--;let r=0;for(;"′"===e[t+1+r];)r++;e=e.slice(0,s)+Y(e.slice(s,t+1),"x",r)+e.slice(t+1+r),t=s}return e}(e=(e=Z(e)).replace(/(?<![A-Za-z])frac(\d)(\d)/g,"frac{$1}{$2}")));for(let t=0;t<e.length;t++){const n=e[t],s=n=>e.slice(Math.max(0,t-n),t),r=n=>e.slice(Math.max(0,t-n),t+1);if("{"===n){if("\\begin"===s(6)){const n=D(e.slice(t+1));n&&(e=e.slice(0,t-6)+n)}}else if("["===n)"\\sqrt"===s(5)?e=e.slice(0,t-5)+"sqrt"+F(e.slice(t+1)):"sqrt"===s(4)&&(e=e.slice(0,t-4)+"sqrt"+F(e.slice(t+1)));else if("⌊"===n||"⌈"===n)e=e.slice(0,t)+P(e.slice(t));else if("t"===n)"\\int"===r(3)&&(e=e.slice(0,t-3)+B(e.slice(t+1)));else if("m"===n)"\\binom"===r(5)&&(e=e.slice(0,t-5)+"\\binom"+H(e.slice(t+1)));else if("d"===n&&"dd"===r(1)&&"("===e[t+2]){const n=G(e.slice(t+1));n&&(e=e.slice(0,t-1)+"der"+n)}}return e.replace(/\\log/g,"log")}],["tidy",e=>e.replace(/ {2,}/g," ").trim()]];function Ze(e,t={}){if("string"!=typeof e)throw new Error("Expression must be a string");const{text:n,strings:s}=function(e){const t=new Map;let n="",s=0;for(;s<e.length;){const r=e[s];if('"'!==r&&"'"!==r&&"`"!==r){n+=e[s++];continue}let i=s+1,o="",a=!1;for(;i<e.length&&(a||e[i]!==r);)a=!a&&"\\"===e[i],o+=e[i++];const l=ne(t.size);t.set(l,r+o+r),n+=l,s=i+1}return{text:n,strings:t}}(function(e){let t="";for(let n=0;n<e.length;n++){const s=e[n];if('"'===s||"`"===s){const s=se(e,n);t+=e.slice(n,s+1),n=s}else if("'"===s)if(/[A-Za-z0-9)\]′\u0370-\u03FF]/.test(t[t.length-1]??""))t+="′";else{const s=se(e,n);t+=e.slice(n,s+1),n=s}else t+=s}return t}(e));let r=n.replace(/\t/g," ");t.evaluate&&(r=function(e,t,n){let s=0;for(;;){const r=e.indexOf("{{",s);if(r<0)return e;const i=Pe(e,r);if(i<0)return e;let o=e.slice(r+2,i).trim();for(const[e,n]of t)o=o.split(e).join(n);try{let a=n(o);if(/^["'`]/.test(a)){const e=ne(t.size);t.set(e,a),a=e}const l=e.slice(0,r).trimEnd(),c=e.slice(i+2).trimStart();/^[\d.]/.test(a)&&(/[\d.]$/.test(l)||/^[\d.]/.test(c))&&(a=`(${a})`),e=e.slice(0,r)+" "+a+" "+e.slice(i+2),s=0}catch{s=i+2}}}(r,s,t.evaluate));const i=[["strings",r]];for(const[e,t]of je){if(r=t(r),r.length>1e5)throw new Error("The expression expands too much when read");i.push([e,r])}return{cleaned:r,stringMap:s,steps:i}}function Pe(e,t){let n=0;for(let s=t+2;s<e.length;s++){if(e.startsWith("}}",s)&&0===n)return s;"{"===e[s]?n++:"}"===e[s]&&n--}return-1}const Fe={alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω"};function We(e){for(;"op"===e.type&&e.args.length;)e=e.args[0];return"op"===e.type?"":e.value}function De(e){if("*"!==e.op)return!1;const[t,n]=e.args;return"number"===t.type&&"-1"===t.value&&"-1"!==We(n)}function Ue(e){return"op"!==e.type||o(e.op)?.group?null:"sum"===e.op?"+":"prod"===e.op?"*":De(e)?null:e.op}const Be=new Set(["=","===","≠","≠=","<",">","≤","≥","≈","≡","→"]),Ge=(e,t,n)=>("op"!==t.type||"?:"!==t.op||!Be.has(e.op))&&c(e.op,Ue(t),n);function He(e,t){const n=Ue(t),s=n&&o(n)?.prec;return!!s&&("!"===e?s<=o("!").prec:"\\not"===e?s<o("\\not").prec:s<70||et(t)||"\\not"===n)}function Qe(e,t,n={}){const s=n.left?"bracket":Ke(e),r=n.right?"bracket":Je(t);return"digit"!==r&&"sign"!==r&&"word"!==s&&"word"!==r&&"other"!==s&&("frac"!==r||"digit"!==s&&"frac"!==s)}function Ve(e){return 1===e.length||Boolean(Fe[e])||/^Δ.$/.test(e)||/^.′+$/.test(e)}function Xe(e){return"op"===e.type&&!o(e.op)?.group&&(o(e.op)?.prec??100)<70&&!["sum","prod"].includes(e.op)}function Je(e){if("number"===e.type)return e.value.startsWith("-")?"sign":"digit";if("op"!==e.type)return"symbol"===e.type&&Ve(e.value)?"name":"word";const t=e.op;return"neg"===t||"pm"===t||De(e)?"sign":"/"===t?"frac":o(t)?.group||Xe(e)?"bracket":Ye(e)||["der","int","lim","comb"].includes(t)?"call":["^","!","_"].includes(t)?Xe(e.args[0])?"bracket":Je(e.args[0]):["*","sum","prod","perm"].includes(t)?Je(e.args[0]):"other"}function Ke(e){if("number"===e.type)return"digit";if("op"!==e.type)return"symbol"===e.type&&Ve(e.value)?"name":"word";const t=e.op;return"/"===t?"frac":"^"===t||"_"===t?"script":o(t)?.group||Xe(e)||Ye(e)||["der","int","lim","comb","perm"].includes(t)?"bracket":["*","neg","pm","sum","prod"].includes(t)?Ke(e.args[e.args.length-1]):"other"}function Ye(e){if("op"!==e.type)return!1;const t=o(e.op);return"prefix"===t?.fixity&&100===t.prec}function et(e){if("number"===e.type)return e.value.startsWith("-");if("op"!==e.type)return!1;if("neg"===e.op||De(e))return!0;const t=o(e.op);return"infix"===t?.fixity&&!Ge(e,e.args[0],"left")&&et(e.args[0])}const tt=e=>"symbol"===e.type&&1===e.value.length&&/[a-zA-Zʹ-Ͽ]/.test(e.value),nt=e=>e.slice(2);function st(e){const t=e.args[1];let n=0,s=e;for(;"op"===s.type&&"der"===s.op&&rt(s.args[1],t);)n++,s=s.args[0];return{n:n,body:s,by:t,variable:"symbol"===s.type&&Ve(s.value)}}const rt=(e,t)=>e.type===t.type&&e.value===t.value&&"op"!==e.type,it=new Set(["<",">","≤","≥","=","≠"]);function ot(e){if("op"!==e.type||!it.has(e.op)||2!==e.args.length)return null;const[t,n]=e.args;if("op"!==t.type||!it.has(t.op)||2!==t.args.length)return null;return{type:"op",op:"&",args:[ot(t)??t,{type:"op",op:e.op,args:[t.args[1],n]}]}}for(const e of[Fe])Object.setPrototypeOf(e,null);function at(e){if(e.length>1e6)throw new Error("The output would be too long");return e}const lt={pmatrix:["(",")"],bmatrix:["[","]"],vmatrix:["|","|"]};function ct(e){if(!e||"op"!==e.type)return null;if(Object.prototype.hasOwnProperty.call(lt,e.op))return e.args.map(e=>"op"===e.type&&"[]"===e.op?e.args:[e]);if("[]"!==e.op||!e.args.length||!e.args.every(e=>"op"===e.type&&"[]"===e.op))return null;const t=e.args[0].args.length;return!t||!e.args.every(e=>e.args.length===t)||e.args.length<2&&t<2?null:e.args.map(e=>e.args)}const ht=Object.keys(u).filter(e=>100===u[e]&&/^[a-z]{2,}$/.test(e)),ut=["frac"],pt=[...Object.keys(Fe),"pi","tau","inf","infinity","exp"],ft="\n cost costs coast cosine cosines cosy sine sines since sincere sinus single\n tank tanks tango stand stank\n point points print prints paint paints pint pints mint hint hints lint tint saint faint joint into\n spin spine pipe pipes pine pines pick picks pink pity pie pies pilot pivot pixel pizza piano\n order orders under wonder border render older elder ladder cider rider wider bidder\n logic logo logs blog clog login slog\n model models mode modes modal modest modern module modules\n limb limbs slim lime limo limit limits climb\n maxi minute minutes mince mind mine mines\n sums sumo summit rounds floors ceils means meant sect sects secs expo kiln\n meta metal metals taxi must mute muse nut nuts\n".trim().split(/\s+/),gt=new Set([...pt,...ft,"true","false","null","undefined","unchanged","deg","mod","pmod","NaN","Infinity"]),mt=/^[a-zA-ZͰ-Ͽ]$/,dt=new Set(["f","g","h","u","v","F","G","H"]),$t=e=>ht.includes(e)||ut.includes(e),xt=[...ht,...ut,...pt].sort((e,t)=>t.length-e.length),yt=[...ht,...ut,"pi"].sort((e,t)=>t.length-e.length);function bt(e,t=xt){const n=[];let s=0;for(;s<e.length;){const r=t.find(t=>e.startsWith(t,s))??e[s];n.push(r),s+=r.length}return n}function wt(e){if($t(e))return!0;const t=bt(e,yt);return t.length>1&&$t(t[t.length-1])&&!gt.has(e)}function vt(e,{mode:t="plain",followed:n=!0}={}){if(e.includes("′")&&/^[a-zA-Z′]+$/.test(e)&&!/^.′+$/.test(e))return e.match(/[a-zA-Z]′*/g);if(!((s=e).length>0&&[...s].every(e=>mt.test(e)))||1===e.length||gt.has(e)||$t(e))return[e];var s;if("Δ"===e[0]&&2===e.length)return[e];if("latex"===t)return kt(bt(e),n);if(e.length<=2)return[...e];const r=kt(bt(e,yt),n),i=r.findIndex(e=>e.length>1);if(i<0)return[e];if("pi"===r[i]&&!r.some(e=>ht.includes(e)))return 3===e.length?r:[e];const o=i;let a=0,l=0;for(const e of r.slice(i))a=1===e.length?a+1:0,l=Math.max(l,a);return o<=1&&l<=2?r:[e]}function kt(e,t){const n=e[e.length-1];return t||!ht.includes(n)?e:[...e.slice(0,-1),...n]}const _t="§",Et=/[A-Za-zͰ-Ͽ′]/,Mt=e=>/^[A-Za-zͰ-Ͽ][A-Za-zͰ-Ͽ′]*$/.test(e);function At(e,t="plain"){if("string"!=typeof e)throw new Error("Tokenizer input must be a string");const n=[];let s="";const i=e=>{s&&(Mt(s)?n.push(...function(e,t,n){if((e=>new RegExp(`^${ee}[${te}]+$`).test(e))(e))return[e];if(g.includes(t))return function(e,t){if(/^[a-zA-Z]′+$/.test(e))return[r+e];if("if"===e.toLowerCase())return["\\:if"];if(1===e.length)return dt.has(e)?[r+e]:[e];if(p(e))return[e];const n=vt(e,{mode:t,followed:!0});return n.length>1?n:e.length<=2?[...e]:[r+e]}(e,n);const s=void 0!==t&&!/[+\-*/=<>),\]}|!≤≥≠]/.test(t);return vt(e,{mode:n,followed:s})}(s,e,t)):n.push(s),s="")};for(let t=0;t<e.length;t++){const o=e[t];if(o===_t){i(o);const s=e.indexOf(_t,t+1),a=e.slice(t,s+1);n.push(g.includes(e[s+1])?r+a:a),t=s;continue}if(Mt(s)&&/[0-9]/.test(o)&&p(s+o)){const{op:r,end:i}=qt(e,t,s+o);n.push(r),s="",t=i;continue}if(Et.test(o)&&"′"!==o&&d(s)&&(n.push(s),s=""),Et.test(o)&&(""===s?"′"!==o:Mt(s)))s+=o;else if(/[0-9]/.test(o)&&Mt(s)&&!wt(s))s+=o;else if(Mt(s)&&i(" "===o?e[t+1]:o),"(){}[]".includes(o))s&&n.push(...Ot(s,o)),s="",n.push(o);else if("_"!==o&&" "!==o){if(p(s+o)){const{op:r,end:i}=qt(e,t,s+o);n.push(r),s="",t=i;continue}if(p(o)){i(o);const{op:s,end:r}=qt(e,t,o);n.push(s),t=r;continue}s+=o}else i(e[t+1]),"_"===o&&n.push("_")}if(i(void 0),n.some(e=>/^:/.test(e)))throw new Error("Unmatched ':'");return n}function qt(e,t,n){let s=t;for(;s+1<e.length&&p(n+e[s+1]);)n+=e[s+1],s++;return"!"===n&&"_"===e[s+1]&&s++,{op:n,end:s}}function Ot(e,t){if(!g.includes(t))return[e];if("\\"===e[0]){const t=e.slice(1);return[p(t)?t:r+t]}return d(e)?[e,"*"]:p(e)||$t(e)||d(e[0])?[e]:[r+e]}const Nt=70,St=100,Lt="%mod",Ct=e=>g.includes(e),Rt=e=>m.includes(e),Tt=e=>i(e)||u[e]===St&&"_"!==e,zt=new Set(["\\comb","\\perm","comb","perm"]),It={frac:"/","\\binom":"\\binom"},jt={"\\comb":"comb","\\perm":"perm",deg:"°","π":"pi","∨":"|"};class Zt{constructor(e){this.tokens=e,this.pos=0,this.out=[],this.absDepth=0,this.frames=[]}peek(e=0){return this.tokens[this.pos+e]}next(){return this.tokens[this.pos++]}emit(...e){this.out.push(...e)}parseAll(){if(!this.tokens.length)throw new Error("Empty expression");this.parseExpression(0);const e=this.peek();if(void 0!==e)throw new Error(Rt(e)?`Unmatched '${e}'`:`Unexpected '${e}'`);return this.out}parseExpression(e,t=!1){for(this.parseOperand();;){const n=this.peek();if(void 0===n||Rt(n))return;const s=this.operatorAt(n,t);if(!s||s.lbp<=e)return;s.run()}}operatorAt(e,t){if("|"===e)return this.pipe();if(","===e)return{lbp:5,run:()=>{this.next(),this.frames.length&&(this.frames[this.frames.length-1].comma=!0),this.parseExpression(5),this.emit(",")}};if("?"===e)return{lbp:9,run:()=>this.ternary()};if("mod"===e)return{lbp:u.mod,run:()=>this.modulo()};if(e===Lt)return{lbp:Nt,run:()=>{this.next(),this.parseExpression(Nt),this.emit("mod")}};if("pmod"===e)return{lbp:u.pmod,run:()=>{this.next(),this.parseScript(),this.emit("pmod")}};if("?:"===e)return{lbp:10,run:()=>{throw new Error("Unmatched ':'")}};if("!"===e)return{lbp:90,run:()=>{this.next(),this.emit("!")}};if("_"===e)return{lbp:St,run:()=>{this.next(),this.parseScript(),this.emit("_")}};if(zt.has(e))return{lbp:St,run:()=>{this.next(),this.parseExpression(St),this.emit(e)}};const n=u[e];if(void 0!==n&&!Tt(e)&&"\\not"!==e&&!(e in It)){const t=f.has(e)?n-1:n;return{lbp:n,run:()=>{this.next(),this.parseExpression(t),this.emit(e)}}}return this.startsOperand(e)?this.implicit(e,t):null}implicit(e,t){return{lbp:t&&!Tt(e)?71:Nt,run:()=>{this.parseExpression(Nt),this.emit("*")}}}startsOperand(e){return void 0===e||Rt(e)||"|"===e?"|"===e:e!==Lt&&(!!(Ct(e)||Tt(e)||e in It)||!p(e))}pipe(){if(this.absDepth>0)return null;let e=0;for(let t=this.pos;t<this.tokens.length;t++)"|"===this.tokens[t]&&e++;const t="|"===this.peek(1);return e%2==0&&!t&&this.startsOperand(this.peek(1))?this.implicit("|",!1):{lbp:u["|"],run:()=>{this.next(),t&&e%2==0&&this.next(),this.parseExpression(u["|"]),this.emit("|")}}}modulo(){this.next(),this.parseExpression(Nt,!0),this.emit("mod")}ternary(){if(this.next(),this.parseExpression(10),"?:"!==this.next())throw new Error("Unmatched '?'");this.parseExpression(8),this.emit("?:")}parseOperand(){const e=this.next(),t=this.tokens[this.pos-2],n=this.peek();if(void 0===e)throw new Error("An operator is missing an operand at the end");if(Ct(e))return this.bracket(e,"{"===e&&("∈"===t||"∉"===t));if("|"===e)return this.absolute();if("-"===e||"+"===e){return"^"===t&&(void 0===n||Rt(n))||Ct(t)&&Rt(n)?this.emit("\\"+e):"+"===e?this.parseExpression(75):this.negate()}if("±"===e)return this.parseExpression(75),this.emit("pm");if("!"===e||"\\not"===e)return this.parseExpression(85),this.emit("\\not");if(e in It)return this.parseScript(),this.parseScript(),this.emit(It[e]);if("log"===e)return this.logarithm();if("lim"===e&&"_"===n)return this.limit();if(("\\sumidx"===e||"\\prodidx"===e)&&"_"===n)return this.bigOperator(e);if(Tt(e))return this.functionCall(e);if(Rt(e)||p(e))throw new Error(`'${e}' is missing an operand`);this.emit(e)}negate(){const e=this.out.length;this.parseExpression(75);const t=this.out.slice(e);1!==t.length||!d(t[0])&&"∞"!==t[0]?this.emit("neg"):this.out[e]="-"+t[0]}bracket(e,t=!1){if(Rt(this.peek()))return void this.emit("∅",e+this.next());this.frames.push({comma:!1}),this.parseExpression(0);const{comma:n}=this.frames.pop(),s=this.peek();Rt(s)&&(this.next(),n?this.emit(e+s):t&&this.emit("{}"))}absolute(){this.absDepth++,this.parseExpression(0),this.absDepth--,"|"===this.peek()&&this.next(),this.emit("abs")}parseScript(){const e=this.peek();if(Ct(e))return this.parseOperand();if("-"===e||"+"===e)return this.parseOperand();if(Tt(e))return this.parseOperand();if(this.next(),void 0===e||Rt(e)||p(e))throw new Error("Missing a sub- or superscript");this.emit(e)}logarithm(){"_"===this.peek()?(this.next(),this.parseScript()):this.emit("e"),this.argument(),this.emit("log")}limit(){this.next();const e=this.out.length;this.parseScript();const t=this.out.splice(e);this.parseExpression(u["+"],!0),this.emit(...t,",","()","lim")}bigOperator(e){this.next();const t=this.out.length;this.parseScript();let n=this.out.splice(t);"^"===this.peek()&&(this.next(),this.parseScript(),n=[...n,...this.out.splice(t),","]),this.parseExpression(u["+"],!0),this.emit(...n,",","()",e)}functionCall(e){if(void 0===this.peek())return this.emit(e);let t=null;if("^"===this.peek()){this.next();const e=this.out.length;this.parseScript(),t=this.out.splice(e)}if(0===o(e)?.arity&&!Ct(this.peek()))return this.emit(e);this.argument(),this.emit(e),t&&this.emit(...t,"^")}argument(){const e=this.peek();if(Ct(e))return this.next(),this.bracket(e);this.parseExpression(Nt,!0)}}function Pt(e,t){e=function(e){const t=[];for(let n=0;n<e.length;n++){const s=e[n],i=e=>"string"==typeof e&&/^[a-zA-Z]$/.test(e);if(dt.has(s)&&"^ { - 1 } ("===e.slice(n+1,n+7).join(" ")){t.push(r+s+"⁻¹"),n+=5;continue}const[o,a,l]=e.slice(n+1,n+4),c=i(a)?a!==s:d(a);i(s)&&"e"!==s&&"("===o&&c&&")"===l?t.push(r+s):t.push(s)}return t}(e);const n=[];for(const s of e)p(s)||Ct(s)||Rt(s)||"_"===s||i(s)||d(s)?n.push(s):n.push(...Ft(s,t));return n}function Ft(e,t){const n=e=>Pt(At(e,t),t);let s=0;for(;s<e.length&&d(e.slice(0,s+1));)s++;if(0===s){if("%"===e[0])return[Lt,...n(e.slice(1))];const s=e.indexOf("%");return s>0&&s<e.length-1?[...Ft(e.slice(0,s),t),Lt,...n(e.slice(s+1))]:[e]}const r=e.slice(s);return"%"===r[0]?1===r.length?[e]:[e.slice(0,s),Lt,...n(r.slice(1))]:[e.slice(0,s),...n(r)]}for(const e of[It,jt])Object.setPrototypeOf(e,null);const Wt=new Set(["()","[]","{}","(]","[)"]),Dt={pow:"^",sqrtpow:"root","\\binom":"comb","\\comb":"comb","\\perm":"perm",frac:"/","==":"=","!==":"≠="},Ut=new Set(["round","fixed","der"]),Bt=e=>i(e)||100===u[e];function Gt(t){const n=[],s=e=>{if(!n.length)throw new Error(`'${e}' is missing an operand`);return n.pop()},r=e=>e.list?e.list:[e],a=(e,t)=>{if(e.list)throw new Error(`A list of values needs brackets around it (near '${t}')`);return e};if(t.forEach((l,c)=>{if("∅"===l)return void n.push({list:[]});if(","===l){const e=s(l),t=s(l);return void n.push({list:[...r(t),...r(e)]})}if(Wt.has(l)){const e=r(s(l));if(!e.length&&!Bt(t[c+1]))throw new Error("Empty brackets");return void n.push(y(l,e))}const h=Dt[l]??l,u=o(h);if(!u){if("?"===l||"abs("===l)throw new Error(`Unmatched '${l[0]}'`);return void n.push(w(l))}let p;if(Bt(l)&&Wt.has(t[c-1])&&n[n.length-1]?.op===t[c-1])p=n.pop().args;else{let t=u.arity===e||Ut.has(h)?1:u.arity;if(n.length<t)throw new Error(`'${l}' needs ${t} operand${1===t?"":"s"}`);p=n.splice(n.length-t,t).map(e=>a(e,l))}n.push(function(t,n){switch(t){case"sqrt":if(2===n.length)return y("root",n);break;case"round":if(1===n.length)return y("round",[n[0],$(0)]);break;case"sum":case"prod":{const e=n[1];if("op"===e?.type&&"symbol"===e.args[0]?.type&&(3===n.length&&"="===e.op||2===n.length&&"∈"===e.op))return y("sum"===t?"\\sumidx":"\\prodidx",n);break}case"det":if(n.length>1&&n.every(e=>"op"===e.type&&"[]"===e.op))return y("det",[y("[]",n)]);break;case"fixed":if(1===n.length)return y("fixed",[n[0],$(2)]);break;case"der":if(1===n.length)return y("der",[n[0],x("x")]);if(3===n.length)return function([e,t,n]){const s="number"===n.type?Number(n.value):NaN;if(!Number.isInteger(s)||s<1||s>20)throw new Error("der(f, x, n) needs n to be a whole number from 1 to 20");let r=e;for(let e=0;e<s;e++)r=y("der",[r,t]);return r}(n);break;case"log":if("symbol"===n[0].type&&"e"===n[0].value)return y("ln",[n[1]]);break;case"lim":return y("lim",function(e){const t=e=>"op"===e.type&&"^"===e.op&&"symbol"===e.args[1].type?{"\\+":"r","\\-":"l"}[e.args[1].value]:void 0,[n,s,r]=e;if(2===e.length&&"op"===s.type&&"→"===s.op&&t(s.args[1])){const[e,r]=s.args;return[n,e,r.args[0],x(t(r))]}return 3===e.length&&t(r)?[n,s,r.args[0],x(t(r))]:e}(n));case"\\:if":if(2===n.length||3===n.length)return y("?:",[n[0],n[1],n[2]??x("unchanged")]);throw new Error("if() takes a condition, a value, and optionally an alternative")}return function(t,n){const{arity:s}=o(t);if(s===e){if(0===n.length&&!i(t))throw new Error(`'${t}' needs at least one argument`);return}if(n.length!==s){throw new Error(`'${t}' takes ${s} argument${1===s?"":"s"}, not ${n.length}`)}}(t,n),y(t,n)}(h,p))}),1!==n.length)throw new Error(n.length?"Some values are not connected by an operator":"Empty expression");return a(n[0],"end")}for(const e of[Dt])Object.setPrototypeOf(e,null);const Ht=/\\(?:text|textrm|textit|mathrm|mathit|operatorname)\{\s*([A-Za-z][A-Za-z0-9 ]*[A-Za-z0-9])\s*\}/g;const Qt=e=>/^[a-z][a-z0-9]*$/.test(e)&&p(e);function Vt(e){return e.includes("\\")?(e=function(e){for(let t=0;t<50;t++){const t=e.lastIndexOf("\\begin{cases}"),n=t<0?-1:e.indexOf("\\end{cases}",t);if(n<0)return e;const s=T(e.slice(t+13,n),"\\\\").map(e=>T(e,"&")).filter(e=>e.join("").trim());let r=null;for(let e=s.length-1;e>=0;e--){const t=s[e][0].trim(),n=R(s[e].slice(1).join("&"));r=null!==r||n?`((${n||"true"}) ? (${t}) : ${r??"(unchanged)"})`:`(${t})`}e=e.slice(0,t)+(r??"")+e.slice(n+11)}return e}(e),e.replace(/\{\}\^\{([^{}]*)\}\s*\\mathrm\{P\}\s*_\{([^{}]*)\}/g,"\\perm($1,$2)")):e}function Xt(e){Jt=e}let Jt=null;function Kt(e,t={}){const n={original:e};try{if("string"!=typeof e)throw new Error("Expression must be a string");const s=t.maxLength??5e3;if(e.length>s)throw new Error(`Longer than ${s} characters (options.maxLength)`);const r=/^\s*=(?!=)/.test(e);r&&(e=e.replace(/("(?:[^"]|"")*")|\$(?=[A-Za-z]{0,3}\d|[A-Za-z]{1,3}\$?\d)/g,(e,t)=>t??""));const i=r?[...new Set(e.replace(/"(?:[^"]|"")*"/g,"").match(/(?<![\w.])[A-Za-z]{1,3}\d+(?::[A-Za-z]{1,3}\d+)?(?![\w.(])/g)??[])]:[],{text:o,protectedNames:a}=function(e,t=[],n=[]){const s=new Map,r=e=>{const t=`${_t}${s.size}${_t}`;return s.set(t,e),t};e=e.replace(Ht,(e,t)=>Qt(t.trim())?` ${t.trim()}`:r(t.trim()));for(const n of[...t].sort((e,t)=>t.length-e.length)){const t=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp(`(?<![A-Za-z_])${t}(?![A-Za-z0-9_])`,"g"),()=>r(n))}for(const t of[...n].sort((e,t)=>t.length-e.length)){const n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp(`(?<![A-Za-z_])${n}(?![A-Za-z0-9_])(\\s*)(\\(?)`,"g"),(e,n,s)=>r(t)+(s?" * (":n))}return{text:e,protectedNames:s}}(Vt(e),t.names,[...t.values??[],...i]),l=(e=>/\\[A-Za-z]/.test(e)?"latex":"plain")(o),{cleaned:c,stringMap:h,steps:u}=((e,t={})=>{const n=void 0===t.blocks?Jt:t.blocks;return Ze(e,{evaluate:n?e=>n(e,t.scope):void 0})})(o,{blocks:t.blocks,scope:t.scope}),p=e=>re(re(e,h),a);n.mode=l,n.cleaned=p([c])[0],n.cleanSteps=u,n.tokens=At(c,l),n.rawPostfix=p(function(e,t="plain"){return new Zt(Pt(e,t)).parseAll().map(e=>jt[e]??e)}(n.tokens,l));const f=_(Gt(n.rawPostfix));n.postfix=f,n.tree=k(f)}catch(e){n.error=e instanceof RangeError?"Nested too deeply":e.message}return n}const Yt=e=>"string"==typeof e&&e.length>80?`${e.slice(0,77)}…`:e;function en(e,t={}){const n=Kt(e,t);if(t.keepIntermediateSteps)return n;if(!n.error)return n.postfix;if(t.allowUnvalidated&&n.rawPostfix)return n.rawPostfix;throw new Error(`Failed to parse expression "${Yt(e)}": ${n.error}`)}function tn(e,t={}){const n=Kt(e,t);if(n.error)throw new Error(`Failed to parse expression "${Yt(e)}": ${n.error}`);return n.tree}const nn=(e,t)=>"string"==typeof e?tn(e,t):E(e),sn=e=>Array.isArray(e)&&0===e.length,rn={plus:"plus",minus:"minus",times:"times",over:"over",negative:"negative",plusOrMinus:"plus or minus",quantity:"the quantity",of:"of",and:"and",or:"or",not:"not",xor:"exclusive or",nand:"nand",nor:"nor",squared:"squared",cubed:"cubed",toThe:"to the",toThePowerOf:"to the power of",power:"power",sub:"sub",factorial:"factorial",prime:"prime",doublePrime:"double prime",triplePrime:"triple prime",inverse:"inverse",mod:"mod",percent:"percent",degrees:"degrees",equals:"equals",notEqual:"is not equal to",lessThan:"is less than",greaterThan:"is greater than",lessOrEqual:"is less than or equal to",greaterOrEqual:"is greater than or equal to",approx:"is approximately",congruent:"is congruent to",approaches:"approaches",tendsTo:"approaches",isIn:"is in",isNotIn:"is not in",union:"union",intersect:"intersect",squareRoot:"the square root of",cubeRoot:"the cube root of",nthRoot:e=>`the ${e} root of`,absoluteValue:"the absolute value of",floor:"the floor of",ceiling:"the ceiling of",logBase:"log base",naturalLog:"the natural log of",choose:"choose",permute:"permute",derivative:"the derivative",secondDerivative:"the second derivative",nthDerivative:e=>`the ${e} derivative`,withRespectTo:"with respect to",d:"d",integralOf:"the integral of",integralFrom:"the integral from",to:"to",limitAs:"the limit as",fromTheRight:"from the right",fromTheLeft:"from the left",sumFrom:"the sum from",sumOver:"the sum over",sumOf:"the sum of",productFrom:"the product from",productOver:"the product over",productOf:"the product of",matrix:(e,t)=>`the ${e} by ${t} matrix`,row:e=>`row ${e}`,determinantOf:"the determinant of",theSet:"the set",theList:"the list",openInterval:"the open interval from",closedInterval:"the closed interval from",halfOpenInterval:"the half-open interval from",comma:",",if:"if",then:"then",otherwise:"otherwise",infinity:"infinity",pi:"pi",e:"e",delta:"delta",randomNumber:"a random number",rounded:"rounded to",decimalPlaces:"decimal places",nearestWholeNumber:"the nearest whole number",writtenTo:"written to",asWholeNumber:"written as a whole number",reals:"the real numbers",integers:"the integers",naturals:"the natural numbers",rationals:"the rational numbers",complexes:"the complex numbers",repeating:"repeating",eToThe:"e to the",endQuantity:"end quantity",endFraction:"end fraction",endRoot:"end root",endExponent:"end exponent",endSub:"end sub",endAbsoluteValue:"end absolute value",endFloor:"end floor",endCeiling:"end ceiling",endLimit:"end limit",endSum:"end sum",endMatrix:"end matrix",endProduct:"end product",endDerivative:"end derivative",half:"half",halves:"halves",ordinals:["","","half","third","quarter","fifth","sixth","seventh","eighth","ninth","tenth"],numerators:["","one","two","three","four","five","six","seven","eight","nine"],powers:["","first","squared","cubed","fourth","fifth","sixth","seventh","eighth","ninth","tenth"]},on={sin:"sine",cos:"cosine",tan:"tangent",csc:"cosecant",sec:"secant",cot:"cotangent",sinh:"hyperbolic sine",cosh:"hyperbolic cosine",tanh:"hyperbolic tangent",arcsin:"inverse sine",arccos:"inverse cosine",arctan:"inverse tangent",arcsinh:"inverse hyperbolic sine",arccosh:"inverse hyperbolic cosine",arctanh:"inverse hyperbolic tangent",ln:"the natural log",log:"log",loglog:"the log of the log",logloglog:"the log of the log of the log",expm1:"e to the power, minus 1, of",max:"the maximum",min:"the minimum",gcd:"the greatest common divisor",mean:"the mean",det:"the determinant",atan2:"the arctangent",round:"round",fixed:"fixed",random:"random"},an=Object.fromEntries(Object.entries(Fe).map(([e,t])=>[t,e]));function ln(e,t={}){return hn(function(e,t={}){return cn(e,t,!0)}(e,t))}function cn(e,t,n){return function(e){let t=e.length;for(;t>0&&(e[t-1].close||!e[t-1].text.replace(/,/g,"").trim());)t--;const n=[];for(const{text:s,id:r}of e.slice(0,t)){const e=s.trim();if(!e)continue;const t=e.startsWith(","),i=t?e.slice(1).trim():e;t&&n.length&&!n[n.length-1].text.endsWith(",")&&(n[n.length-1].text+=","),i&&n.push({text:i,id:r})}n.length&&(n[n.length-1].text=n[n.length-1].text.replace(/,$/,""));return n}(new fn({...rn,...t.words},{...on,...t.names},t.say||{},n).speak(e))}function hn(e){return e.map(e=>e.text).join(" ").replace(/\s+/g," ").replace(/ ,/g,",").replace(/,(\s*,)+/g,",").replace(/^,\s*/,"").replace(/,\s*$/,"").trim()}const un={"=":"equals","===":"equals","≠":"notEqual","≠=":"notEqual","<":"lessThan",">":"greaterThan","≤":"lessOrEqual","≥":"greaterOrEqual","≈":"approx","≡":"congruent","→":"tendsTo","∈":"isIn","∉":"isNotIn","∪":"union","∩":"intersect","±":"plusOrMinus","&":"and","|":"or","\\xor":"xor","\\nand":"nand","\\nor":"nor"},pn={"ℝ":"reals","ℤ":"integers","ℕ":"naturals","ℚ":"rationals","ℂ":"complexes"};class fn{constructor(e,t,n,s=!1){this.w=e,this.names=t,this.say=n,this.audio=s}speak(e){const t=this.say["op"===e.type?e.op:e.type];if(t){return[{text:t("op"===e.type?e.args.map(e=>hn(this.speak(e))):[e.value],e,e=>hn(this.speak(e))),id:e.id}]}return"number"===e.type?[this.seg(e,this.number(e.value))]:"string"===e.type?[this.seg(e,e.value.slice(1,-1))]:"symbol"===e.type?[this.seg(e,this.symbol(e.value))]:this.operation(e)}seg(e,t){return{text:t,id:e.id}}number(e){const t=this.w;return e.endsWith("..")?`${e.replace(/\.+$/,"")} ${t.repeating}`:e.startsWith("-")?`${t.negative} ${e.slice(1)}`:e}symbol(e){const t=this.w;if("∞"===e)return t.infinity;if("-∞"===e)return`${t.negative} ${t.infinity}`;if("pi"===e||"π"===e)return t.pi;if("tau"===e||"τ"===e)return"tau";if("\\+"===e)return t.plus;if("\\-"===e)return t.minus;if("°"===e)return t.degrees;if(pn[e])return t[pn[e]];if(an[e])return an[e].toLowerCase();if(/^Δ.+$/.test(e))return`${t.delta} ${this.symbol(e.slice(1))}`;const n=/′+$/.exec(e);return n?`${this.symbol(e.slice(0,-n[0].length))} ${this.primes(n[0].length)}`:e.endsWith("⁻¹")?`${this.symbol(e.slice(0,-2))} ${t.inverse}`:e}primes(e){const t=this.w;return[t.prime,t.doublePrime,t.triplePrime][e-1]??`${e} ${t.prime}`}isCompound(e){if("op"!==e.type)return!1;if("sum"===e.op||"?:"===e.op)return!0;const t=l(e.op);return void 0!==t&&t<=50&&!o(e.op).group}quantity(e,t="endQuantity"){return this.isCompound(e)?[this.seg(e,this.w.quantity),...this.speak(e),...this.closer(e,t)]:this.speak(e)}closer(e,t){const n=this.seg(e,this.w.comma);return this.audio&&t?[n,{text:this.w[t],id:e.id,close:!0},n]:[n]}contents(e,t){return this.audio&&this.isCompound(e)?this.quantity(e,t):[...this.speak(e),...this.pauseAfter(e)]}argument(e){return this.quantity(e)}operation(e){const{op:t,args:n}=e,[s,r]=n,o=this.w,a=t=>this.seg(e,t),l=()=>n.flatMap((e,t)=>t?[a(o.comma),...this.speak(e)]:this.speak(e));if(un[t])return[...this.speak(s),a(o[un[t]]),...this.speak(r)];if(i(t)){const e=this.symbol(nt(t));return n.length?[a(`${e} ${o.of}`),...this.arguments(n)]:[a(e)]}if(this.names[t]&&!["log","round","fixed","atan2","random","expm1"].includes(t))return[a(`${this.names[t]} ${o.of}`),...this.arguments(n)];switch(t){case"+":return De(r)?[...this.speak(s),a(o.minus),...this.speak(r.args[1])]:[...this.speak(s),a(o.plus),...this.speak(r)];case"-":return De(r)?[...this.speak(s),a(o.plus),...this.speak(r.args[1])]:[...this.speak(s),a(o.minus),...this.quantityIfSum(r)];case"*":return this.product(e);case"/":return this.fraction(e);case"^":return this.power(e);case"_":return[...this.speak(s),a(o.sub),...this.audio?this.quantity(r,"endSub"):this.speak(r)];case"neg":return this.isCompound(s)||"op"===s.type&&"neg"===s.op?[a(`${o.negative} ${o.quantity}`),...this.speak(s),...this.closer(s,"endQuantity")]:[a(o.negative),...this.speak(s)];case"pm":return[a(o.plusOrMinus),...this.speak(s)];case"!":return[...this.quantity(s),a(o.factorial)];case"\\not":return[a(o.not),...this.quantity(s)];case"sqrt":return[a(o.squareRoot),...this.contents(s,"endRoot")];case"root":{const e="number"===s.type?Number(s.value):NaN,t=3===e?o.cubeRoot:2===e?o.squareRoot:o.nthRoot(e?this.ordinal(e):hn(this.speak(s))+"th");return[a(t),...this.contents(r,"endRoot")]}case"abs":return[a(o.absoluteValue),...this.contents(s,"endAbsoluteValue")];case"floor":return[a(o.floor),...this.contents(s,"endFloor")];case"ceil":return[a(o.ceiling),...this.contents(s,"endCeiling")];case"log":return"symbol"===s.type&&"e"===s.value?[a(`${this.names.ln} ${o.of}`),...this.argument(r)]:[a(`${o.logBase}`),...this.speak(s),a(o.of),...this.argument(r)];case"mod":return[...this.quantity(s),a(o.mod),...this.quantity(r)];case"pmod":return[...this.speak(s),a(`${o.comma} ${o.mod}`),...this.speak(r)];case"perm":return[...this.quantity(s),a(o.permute),...this.quantity(r)];case"comb":return[...this.quantity(s),a(o.choose),...this.quantity(r)];case"round":{const e=0===("number"===r.type?Number(r.value):NaN)?o.nearestWholeNumber:`${hn(this.speak(r))} ${o.decimalPlaces}`;return[...this.speak(s),a(`${o.comma} ${o.rounded} ${e}`)]}case"fixed":return 0===("number"===r.type?Number(r.value):NaN)?[...this.speak(s),a(`${o.comma} ${o.asWholeNumber}`)]:[...this.speak(s),a(`${o.comma} ${o.writtenTo}`),...this.speak(r),a(o.decimalPlaces)];case"atan2":return[a(`${this.names.atan2} ${o.of}`),...this.speak(s),a(o.over),...this.speak(r)];case"random":return[a(o.randomNumber)];case"expm1":return[a(o.eToThe),...this.speak(s),a(`${o.comma} ${o.minus} 1`)];case"?:":{const e=[a(o.if),...this.speak(s),a(`${o.comma} ${o.then}`),...this.speak(r)];return(e=>"symbol"===e.type&&"unchanged"===e.value)(n[2])?e:[...e,a(`${o.comma} ${o.otherwise}`),...this.speak(n[2])]}case"sum":return n.flatMap((e,t)=>t?[a(o.plus),...this.speak(e)]:this.speak(e));case"prod":return n.flatMap((e,t)=>t?[a(o.times),...this.quantity(e)]:this.quantity(e));case"mean":case"max":case"min":case"gcd":return[a(`${this.names[t]} ${o.of}`),...l()];case"()":return 2===n.length?[a(o.openInterval),...this.speak(s),a(o.to),...this.speak(r)]:l();case"pmatrix":case"bmatrix":return this.matrix(e);case"vmatrix":return[a(o.determinantOf),...this.matrix(e)];case"[]":return ct(e)?this.matrix(e):2===n.length?[a(o.closedInterval),...this.speak(s),a(o.to),...this.speak(r)]:[a(o.theList),...l()];case"(]":case"[)":return[a(o.halfOpenInterval),...this.speak(s),a(o.to),...this.speak(r)];case"{}":return[a(o.theSet),...l()];case"der":return this.derivative(e);case"int":return this.integral(e);case"lim":return this.limit(e);case"\\sumidx":return this.bigOperator(e,o.sumFrom,o.sumOver,o.sumOf,"endSum");case"\\prodidx":return this.bigOperator(e,o.productFrom,o.productOver,o.productOf,"endProduct")}throw new Error(`No speech for '${t}'`)}matrix(e){const t=this.w,n=ct(e),s=[this.seg(e,t.matrix(n.length,n[0].length))];return n.forEach((n,r)=>{const i=e.args[r];s.push(this.seg(e,t.comma),this.seg("op"===i.type&&"[]"===i.op?i:e,`${t.row(r+1)}:`)),n.forEach((n,r)=>s.push(...r?[this.seg(e,t.comma)]:[],...this.speak(n)))}),[...s,...this.closer(e,"endMatrix")]}arguments(e){return 1===e.length?this.argument(e[0]):e.flatMap((e,t)=>t?[{text:this.w.comma,id:e.id},...this.speak(e)]:this.speak(e))}pauseAfter(e){return this.isCompound(e)?[this.seg(e,this.w.comma)]:[]}quantityIfSum(e){return this.quantity(e)}product(e){const[t,n]=e.args,s=this.w;if(De(e))return[this.seg(e,s.negative),...this.speak(n)];if("symbol"===n.type&&"°"===n.value)return[...this.speak(t),this.seg(e,s.degrees)];const r=this.quantity(t),i=this.quantity(n);return this.isCompound(t)||this.isCompound(n)||this.isWord(t)||this.isWord(n)||this.startsWithNumber(n)||"op"===n.type&&"/"===n.op||this.isCall(t)||i[0].text.startsWith("the ")?[...r,this.seg(e,s.times),...i]:[...r,...i]}isWord(e){return"symbol"===e.type&&/^[A-Za-z]{2,}$/.test(e.value)&&!Fe[e.value]&&!["pi","tau"].includes(e.value)}isCall(e){return"op"===e.type&&(i(e.op)||"prefix"===o(e.op)?.fixity&&100===l(e.op))}startsWithNumber(e){let t=e;for(;"op"===t.type&&t.args.length;)t=t.args[0];return"number"===t.type}fraction(e){const[t,n]=e.args,s=this.w,r=t=>this.seg(e,t);if("number"===t.type&&"number"===n.type&&/^[1-9]$/.test(t.value)&&/^([2-9]|10)$/.test(n.value)){const e=Number(t.value),i=Number(n.value),o=2===i?1===e?s.half:s.halves:s.ordinals[i]+(1===e?"":"s");return[r(`${s.numerators[e]} ${o}`)]}return[...this.quantity(t,null),...this.isCall(t)?[r(s.comma)]:[],r(s.over),...this.quantity(n,"endFraction")]}power(e){const[t,n]=e.args,s=this.w,r=t=>this.seg(e,t),i=this.isCompound(t)||this.isCall(t)||"number"===t.type&&t.value.startsWith("-")||"op"===t.type&&"/"===t.op||this.audio&&"op"===t.type&&"^"===t.op?[r(s.quantity),...this.speak(t),...this.closer(t,"endQuantity")]:this.speak(t);if(this.isCall(t)&&this.names[t.op]&&"number"===n.type&&/^[2-3]$/.test(n.value)&&1===t.args.length){const e=2===Number(n.value)?s.squared:s.cubed;return[r(`${this.names[t.op]} ${e} ${s.of}`),...this.argument(t.args[0])]}if("number"===n.type&&/^(?:[1-9]|10)$/.test(n.value)){const e=Number(n.value);return 2===e||3===e?[...i,r(s.powers[e])]:[...i,r(`${s.toThe} ${s.powers[e]}`)]}if("number"===n.type&&/^\d+$/.test(n.value))return[...i,r(`${s.toThe} ${this.ordinal(Number(n.value))}`)];return!(this.isCompound(n)||"op"===n.type&&"/"===n.op&&this.isCompound(n.args[0]))?[...i,r(s.toThe),...this.speak(n)]:this.audio?[...i,r(s.toThePowerOf),r(s.quantity),...this.speak(n),...this.closer(n,"endExponent")]:[...i,r(s.toThePowerOf),...this.speak(n),r(s.comma)]}ordinal(e){if(e<=10&&e>=1)return"squared"===this.w.powers[e]?"second":"cubed"===this.w.powers[e]?"third":this.w.powers[e];return`${e}${e%100>=11&&e%100<=13?"th":["th","st","nd","rd"][e%10]??"th"}`}derivative(e){const{n:t,body:n,by:s,variable:r}=st(e),i=this.w,o=t=>this.seg(e,t);if(r){return[o(1===t?i.d:`${i.d} ${2===t?i.squared:3===t?i.cubed:`${i.toThe} ${this.ordinal(t)}`}`),...this.speak(n),o(i.d),...this.speak(s),o(1===t?"":2===t?i.squared:3===t?i.cubed:`${i.toThe} ${this.ordinal(t)}`)]}return[o(`${1===t?i.derivative:2===t?i.secondDerivative:i.nthDerivative(this.ordinal(t))} ${i.withRespectTo}`),...this.speak(s),o(i.of),...this.contents(n,"endDerivative")]}integral(e){const{args:t}=e,[n,s,r,i]=t,o=this.w,a=t=>this.seg(e,t),l=t.length>=2&&"symbol"===s.type&&1===s.value.length,c=l?this.speak(s):[a(A(n)||"x")];let h=[];4===t.length?h=[r,i]:3===t.length?h=l?[r]:[s,r]:2!==t.length||l||(h=[s]);return[...2===h.length?[a(o.integralFrom),...this.speak(h[0]),a(o.to),...this.speak(h[1]),a(o.of)]:1===h.length?[a(o.integralFrom),...this.speak(h[0]),a(o.of)]:[a(o.integralOf)],...this.speak(n),a(`${o.comma} ${o.d}`),...c]}limit(e){const{args:t}=e,[n,s,r,i]=t,o=this.w,a=t=>this.seg(e,t);let l;if(t.length>=3){if(l=[...this.speak(s),a(o.approaches),...this.speak(r)],4===t.length){const e=String(i.value??"").toLowerCase().startsWith("r");l.push(a(e?o.fromTheRight:o.fromTheLeft))}}else if(2===t.length&&"op"===s.type&&"→"===s.op)l=[...this.speak(s.args[0]),a(o.approaches),...this.speak(s.args[1])];else{if(2!==t.length)return[a(`${o.limitAs.replace(/ as$/,"")} ${o.of}`),...this.speak(n)];{const e=A(n);l=e?[a(e),a(o.approaches),...this.speak(s)]:this.speak(s)}}return[a(o.limitAs),...l,a(o.of),...this.contents(n,"endLimit")]}bigOperator(e,t,n,s,r){const{args:i}=e,[o,a,l]=i,c=this.w,h=t=>this.seg(e,t);let u;return u=3===i.length?[h(t),...this.speak(a),h(c.to),...this.speak(l),h(c.of)]:2===i.length?[h(n),...this.speak(a),h(c.of)]:[h(s)],[...u,...this.contents(o,r)]}}for(const e of[rn,on,un,pn,an])Object.setPrototypeOf(e,null);function gn(e,t={}){return sn(e)?[]:function(e,t={}){return cn(e,t,!1)}(nn(e),t)}function mn(e,t={}){return sn(e)?"":ln(nn(e),t)}const dn={"(":{fill:"M0.92,0 C0.1,0.2 0.1,0.8 0.92,1 L1,0.975 C0.48,0.75 0.48,0.25 1,0.025 Z"},")":{fill:"M0.08,0 C0.9,0.2 0.9,0.8 0.08,1 L0,0.975 C0.52,0.75 0.52,0.25 0,0.025 Z"},"{":{fill:"M1,0 C0.45,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.35,0.49 0.05,0.5 C0.35,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.45,1 1,1 L1,0.985 C0.68,0.985 0.64,0.95 0.64,0.8 L0.64,0.62 C0.64,0.53 0.55,0.505 0.3,0.5 C0.55,0.495 0.64,0.47 0.64,0.38 L0.64,0.2 C0.64,0.05 0.68,0.015 1,0.015 Z"},"}":{fill:"M0,0 C0.55,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.65,0.49 0.95,0.5 C0.65,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.55,1 0,1 L0,0.985 C0.32,0.985 0.36,0.95 0.36,0.8 L0.36,0.62 C0.36,0.53 0.45,0.505 0.7,0.5 C0.45,0.495 0.36,0.47 0.36,0.38 L0.36,0.2 C0.36,0.05 0.32,0.015 0,0.015 Z"},sqrt:{stroke:"M0,0.62 L0.18,0.55 L0.45,0.97 L0.98,0.015"},cancel:{stroke:"M0,1 L1,0"},int:{stroke:"M0.95,0.09 C0.9,0.01 0.72,0 0.66,0.12 C0.6,0.25 0.42,0.75 0.34,0.88 C0.28,0.99 0.1,0.99 0.05,0.91"},sum:{fill:"M0.04,0 L0.94,0 L0.98,0.24 L0.94,0.24 C0.9,0.1 0.8,0.07 0.62,0.07 L0.24,0.07 L0.58,0.5 L0.2,0.93 L0.64,0.93 C0.82,0.93 0.92,0.9 0.95,0.76 L0.99,0.76 L0.94,1 L0.02,1 L0.47,0.47 Z"},prod:{fill:"M0,0 L1,0 L1,0.04 L0.88,0.05 L0.88,0.95 L1,0.96 L1,1 L0.62,1 L0.62,0.96 L0.74,0.95 L0.74,0.06 L0.26,0.06 L0.26,0.95 L0.38,0.96 L0.38,1 L0,1 L0,0.96 L0.12,0.95 L0.12,0.05 L0,0.04 Z"}};function $n(e,t,n=""){const s=dn[e];return`<svg class="${t}" viewBox="0 0 1 1" preserveAspectRatio="none" aria-hidden="true"${n?` style="${n}"`:""}>${s.fill?`<path d="${s.fill}" fill="currentColor"/>`:`<path d="${s.stroke}" fill="none" stroke="currentColor" vector-effect="non-scaling-stroke"/>`}</svg>`}const xn=.8,yn=.2,bn=.25,wn=.7,vn="−",kn={"+":"add","-":"sub","*":"mul","/":"frac","^":"pow",_:"subscript",neg:"neg",pm:"pm","!":"factorial","=":"eq","===":"eq","≠":"neq","≠=":"neq","<":"lt",">":"gt","≤":"le","≥":"ge","≈":"approx","≡":"equiv","∈":"in","∉":"notin","∪":"union","∩":"intersect","→":"to","±":"pm","&":"and","|":"or","\\not":"not","\\xor":"xor","\\nand":"nand","\\nor":"nor","?:":"cases","()":"tuple","[]":"list","{}":"set","(]":"interval","[)":"interval","\\sumidx":"sum","\\prodidx":"prod",mod:"mod",pmod:"pmod",pmatrix:"matrix",bmatrix:"matrix",vmatrix:"matrix"},_n={"=":"=","===":"=","≠":"≠","≠=":"≠","<":"<",">":">","≤":"≤","≥":"≥","∈":"∈","∉":"∉","→":"→","≈":"≈","≡":"≡","&":"∧","|":"∨","\\xor":"⊕","\\nand":"↑","\\nor":"↓"},En={"±":"±","∪":"∪","∩":"∩",mod:"mod"},Mn=["sin","cos","tan","csc","sec","cot","sinh","cosh","tanh"],An={arcsin:"sin",arccos:"cos",arctan:"tan",arcsinh:"sinh",arccosh:"cosh",arctanh:"tanh"},qn=[...Mn,...Object.keys(An),"ln","det"],On={atan2:"atan2",max:"max",min:"min",gcd:"gcd",mean:"mean",round:"round",fixed:"fixed",expm1:"expm1",random:"random"},Nn={"()":["(",")"],"[]":["[","]"],"{}":["{","}"],"(]":["(","]"],"[)":["[",")"]},Sn={"\\partial":"∂","\\nabla":"∇","\\ell":"ℓ","\\infty":"∞","\\emptyset":"∅"},Ln={vec:"→",hat:"ˆ",widehat:"ˆ",tilde:"˜",dot:"˙",ddot:"¨"},Cn=["boxed","overline","bar","underline","cancel",...Object.keys(Ln)],Rn={prefix:"mv",display:!0,fnParens:"auto",trigPowers:!0,inverseTrig:"arc",derivativeBrackets:"[",scriptFractions:"slash",cases:!0,label:!0,mathml:null,attributes:null,style:null},Tn=e=>String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),zn=e=>+e.toFixed(3)+"em",In=(e,t=xn,n=yn)=>({html:e,h:t,d:n});function jn(...e){const t=e.flat().filter(Boolean);return{html:t.map(e=>e.html).join(""),h:Math.max(xn,...t.map(e=>e.h)),d:Math.max(yn,...t.map(e=>e.d))}}function Zn(e,t={}){const n=new Pn({...Rn,...t}),s=n.render(e,{level:0}),r=`${n.p}${n.o.display?` ${n.p}-display`:""}`,i="function"==typeof n.o.mathml?function(e,t,n,s){try{return String(e(t)).replace(/ id="mz-\d+"/g,"").replace(/^<math>/,`<math class="${n}-sr-math"${s?' display="block"':""}>`)}catch{return""}}(n.o.mathml,e,n.p,n.o.display):"",o=i?null:function(e,t){if(!1===t||null===t)return null;if("string"==typeof t)return t;try{return"function"==typeof t?t(e):mn(e)}catch{return null}}(e,n.o.label),a=null!==o||i?s.html.replace(/^<span /,'<span aria-hidden="true" '):s.html;return{html:`<span class="${r}"${null===o?"":` role="math" aria-label="${Tn(o)}"`}>${a}${i}</span>`,h:s.h,d:s.d}}class Pn{constructor(e){this.o=e,this.p=e.prefix}el(e,t,n="",s=""){return`<span class="${e.split(" ").map(e=>`${this.p}-${e}`).join(" ")}"${n?` style="${n}"`:""}${s}>${t}</span>`}text(e,t){const n=In(this.el(e,Tn(t)));return n.leaf={kind:e,content:Tn(t)},n}bin(e){return this.text("bin",e)}rel(e){return this.text("rel",e)}punct(e){return this.text("punct",e)}word(e){return this.text("word",e)}wrap(e,t,n){let s="";void 0!==e.id&&(s+=` data-node="${e.id}"`),"op"===e.type&&(s+=` data-op="${Tn(e.op)}"`);const r=this.o.attributes&&this.o.attributes(e)||{};for(const[e,t]of Object.entries(r))"class"!==e&&"style"!==e&&(s+=` ${e}="${Tn(t)}"`);const i=[r.style,this.o.style&&this.o.style(e)].filter(Boolean).join(";"),o=(n.leaf?["n",...t,n.leaf.kind]:["n",...t]).map(e=>`${this.p}-${e}`).concat(r.class?[r.class]:[]).join(" "),a=n.leaf?n.leaf.content:n.html;return{html:`<span class="${o}"${i?` style="${Tn(i)}"`:""}${s}>${a}</span>`,h:n.h,d:n.d}}render(e,t){return"number"===e.type?this.number(e):"string"===e.type?this.wrap(e,["text"],this.text("text",e.value.replace(/^["'`]|["'`]$/g,""))):"symbol"===e.type?this.wrap(e,["symbol"],this.symbol(e.value)):this.operation(e,t)}number(e){return this.wrap(e,["number"],this.text("num",e.value.replace(/^-/,vn)))}symbol(e){return Fe[e]&&(e=Fe[e]),Sn[e]?this.text("ord",Sn[e]):"\\+"===e||"\\-"===e?this.text("ord",e[1]):"-∞"===e?this.text("ord","−∞"):/^[A-Za-z]$/.test(e)||/^[α-ω]$/.test(e)?this.text("var",e):/^[A-Za-z]′+$/.test(e)?In(this.el("var",Tn(e[0]))+this.el("prime",Tn(e.slice(1)))):/^Δ[A-Za-z]$/.test(e)?In(this.el("ord","Δ")+this.el("var",e[1])):e.endsWith("⁻¹")?this.script(this.symbol(e.slice(0,-2)),this.text("num","−1"),{level:0}):/^\\[A-Za-z]+$/.test(e)?this.text("name",e.slice(1)):/^[A-Za-z]{2,}$/.test(e)?this.text("name",e):this.text("ord",e)}operation(e,t){const{op:n,args:s}=e,[r,o]=s,a=(e,n={})=>this.render(e,{...t,...n,forceParens:n.forceParens||!1,before:n.before||!1}),l=kn[n]??(/^[a-z0-9]+$/i.test(n)?n:"other"),c=t=>this.wrap(e,["op",`op-${l}`],t),h=(t,n)=>Ge(e,t,n)&&"/"!==t.op?this.fence(a(t)):a(t);if(qn.includes(n)||"log"===n)return c(this.named(e,t));if(On[n])return c(jn(this.word(On[n]),this.fence(this.list(s,t))));if(i(n))return c(this.custom(e,t));const u=ct(e);if(u)return c(this.matrix(e,u,t));if(Nn[n])return c(this.fence(this.list(s,t),...Nn[n]));if(_n[n]&&2===s.length)return c(jn(h(r,"left"),this.rel(_n[n]),h(o,"right")));if(En[n]&&2===s.length)return c(jn(h(r,"left"),this.bin(En[n]),h(o,"right")));switch(n){case"+":return De(o)?c(jn(h(r,"left"),this.bin(vn),this.wrap(o,["op","op-mul"],this.render(o.args[1],t)))):"number"===o.type&&o.value.startsWith("-")?c(jn(h(r,"left"),this.bin(vn),this.wrap(o,["number"],this.text("num",o.value.slice(1))))):c(jn(h(r,"left"),this.bin("+"),this.signed(o,h(o,"right"))));case"-":return c(jn(h(r,"left"),this.bin(vn),this.signed(o,h(o,"right"))));case"*":return c(this.product(e,t));case"/":return c(this.fraction(e,t));case"^":return c(this.power(e,t));case"_":return c(this.script(a(r,{forceParens:!0}),null,t,a(o,{level:t.level+1})));case"neg":return c(jn(this.text("sign",vn),He(n,r)?this.fence(a(r)):a(r,{before:t.before})));case"pm":return c(jn(this.text("sign","±"),He(n,r)?this.fence(a(r)):a(r)));case"!":return c(jn(He(n,r)?this.fence(a(r)):a(r,{forceParens:!0}),this.text("ord","!")));case"\\not":return c(jn(this.text("sign","¬"),He(n,r)?this.fence(a(r)):a(r)));case"pmod":return c(jn(a(r),this.fence(jn(this.word("mod"),this.text("space",""),a(o)))));case"sqrt":return c(this.radical(a(r)));case"root":return c(this.radical(a(o),this.render(r,{level:t.level+2})));case"abs":return c(this.fence(a(r),"|","|"));case"floor":return c(this.fence(a(r),"⌊","⌋"));case"ceil":return c(this.fence(a(r),"⌈","⌉"));case"loglog":return c(jn(this.word("ln"),this.fence(jn(this.word("ln"),this.fence(a(r))))));case"logloglog":return c(jn(this.word("ln"),this.fence(jn(this.word("ln"),this.fence(jn(this.word("ln"),this.fence(a(r))))))));case"perm":return c(this.script(this.script(In(""),this.render(r,{level:t.level+1}),t),null,t,this.render(o,{level:t.level+1}),this.word("P")));case"comb":return c(this.fence(this.stack(a(r),a(o),!1)));case"?:":return c(this.o.cases?this.cases(e,t):jn(a(r),this.bin("?"),a(o),this.bin(":"),a(s[2])));case"sum":return c(jn(s.map((e,t)=>t?[this.bin("+"),a(e)]:[a(e)]).flat()));case"prod":return c(jn(s.map((e,t)=>t?[this.bin("·"),a(e)]:[a(e)]).flat()));case"der":return c(this.derivative(e,t));case"int":return c(this.integral(s,t));case"lim":return c(this.limit(s,t));case"\\sumidx":return c(this.bigOperator("sum",s,t));case"\\prodidx":return c(this.bigOperator("prod",s,t))}throw new Error(`Inline Math cannot draw '${n}'`)}signed(e,t){return("number"===e.type?e.value.startsWith("-"):"neg"===e.op||"pm"===e.op)&&!t.fenced?this.fence(t):t}list(e,t){return jn(e.map((e,n)=>n?[this.punct(","),this.render(e,t)]:[this.render(e,t)]).flat())}product(e,t){const[n,s]=e.args;if(De(e))return jn(this.text("sign",vn),this.render(s,t));const r=function(e){const[t,n]=e.args;return{left:Ge(e,t,"left")&&"/"!==t.op,right:Ge(e,n,"right")&&"/"!==n.op}}(e),o=Qe(n,s,r),a=function(e){for(;"op"===e.type;){if(qn.includes(e.op)||"log"===e.op||On[e.op]||i(e.op))return!0;if("^"!==e.op&&"*"!==e.op)return!1;e=e.args[0]}return!1}(s),l=r.left?this.fence(this.render(n,t)):this.render(n,{...t,before:o&&!a}),c=r.right?this.fence(this.render(s,t)):this.render(s,{...t,before:t.before});return jn(l,o?In(this.el(a?"fnspace":"times","")):this.bin("·"),c)}named(e,t,n=null){const{op:s,args:r}=e,i="log"===s?r[1]:r[0];let o;o=An[s]&&"power"===this.o.inverseTrig?this.script(this.word(An[s]),this.text("num","−1"),t):this.word(s),n&&(o=this.script(o,n,t)),"log"===s&&(o=this.script(o,null,t,this.render(r[0],{level:t.level+1})));const a="auto"===this.o.fnParens&&!t.forceParens&&!t.before&&Fn(i),l=this.render(i,{...t,forceParens:!1,before:!1});return jn(o,a?jn(In(this.el("fnspace","")),l):this.fence(l))}custom(e,t){const n=nt(e.op),s=e.args;if(Cn.includes(n)&&1===s.length)return this.decorate(n,this.render(s[0],t));return jn(/^[A-Za-z]′*(⁻¹)?$/.test(n)?this.symbol(n):this.word(n),In(this.el("callgap","")),this.fence(this.list(s,t)))}decorate(e,t){switch(e){case"boxed":return In(this.el("boxed",t.html),t.h+.22,t.d+.22);case"cancel":return In(this.el("cancel",t.html+$n("cancel",`${this.p}-cancel-line`)),t.h,t.d);case"underline":return In(this.el("underline",t.html),t.h,t.d+.12);case"overline":case"bar":return In(this.el("over",t.html),t.h+.14,t.d);default:return In(this.el("accent",this.el("accent-mark",Ln[e])+t.html),t.h+.3,t.d)}}fraction(e,t){const[n,s]=e.args;if(t.level>0&&"slash"===this.o.scriptFractions&&Fn(n,!0)&&Fn(s,!0)){const e=e=>"op"!==e.type||Fn(e)?this.render(e,t):this.fence(this.render(e,t));return jn(e(n),this.text("ord","/"),e(s))}const r=t.level>0||t.inFraction||!this.o.display?.8:1,i={...t,inFraction:!0,forceParens:!1,before:!1};return this.stack(this.render(n,i),this.render(s,i),!0,r)}stack(e,t,n=!0,s=1){const r=e=>1===s?e.html:this.el("scaled",e.html,`font-size:${zn(s)}`),i=n?.06:0,o=bn+i/2+.1+Math.max(yn,s*e.d),a=this.el("frac"+(n?"":" frac-nobar"),this.el("numer",r(e))+this.el("denom",r(t)),`vertical-align:${zn(o)}`);return In(a,o+Math.max(xn,s*e.h),Math.max(xn,s*t.h)+Math.max(yn,s*t.d)+.1+i/2-bn)}power(e,t){const[n,s]=e.args,r={...t,level:t.level+1,forceParens:!1,before:!1,inFraction:!1},i=()=>this.render(s,r);if(this.o.trigPowers&&Mn.includes(n.op)&&Dn(s))return this.wrap(n,["op",`op-${n.op}`],this.named(n,t,i()));if("_"===n.op){const e=this.render(n.args[1],r);return this.wrap(n,["op","op-subscript"],this.script(this.render(n.args[0],{...t,forceParens:!0}),i(),t,e))}const o=Ge(e,n,"left")||"number"===n.type&&n.value.startsWith("-")||"/"===n.op||qn.includes(n.op)?this.fence(this.render(n,t)):this.render(n,{...t,forceParens:!0});return this.script(o,i(),t)}script(e,t,n,s=null,r=null){const i=n.level>0?.8:wn,o=r?jn(e,r):e;let a=t?Math.max(.42,e.h-.38,i*t.d+.12):0,l=s?Math.max(.2,e.d-.05,i*s.h-.45):0;if(t&&s){const e=.1-(a-i*t.d-(i*s.h-l));e>0&&(l+=e)}const c=e=>this.el("script",e.html,`font-size:${zn(i)}`);if(t&&!s)return In(e.html+this.el("sup",t.html,`font-size:${zn(i)};vertical-align:${zn(a/i)}`),Math.max(o.h,a+i*t.h),Math.max(o.d,i*t.d-a));if(s&&!t)return In(o.html+this.el("sub",s.html,`font-size:${zn(i)};vertical-align:${zn(-l/i)}`),Math.max(o.h,i*s.h-l),Math.max(o.d,l+i*s.d));const h=a+i*t.h,u=l+i*s.d,p=this.el("subsup",c(t)+c(s),`vertical-align:${zn(a)};height:${zn(h+u)}`);return In(o.html+p,Math.max(o.h,h),Math.max(o.d,u))}radical(e,t=null){const n=Math.max(e.h,xn)+.1+.06,s=Math.max(e.d,yn),r=n+s,i=$n("sqrt",`${this.p}-hook`,`height:${zn(r)};width:${zn(.5+.06*(r-1))};vertical-align:${zn(-s)}`);let o="";if(t){const e=.8*wn;o=this.el("rootindex",t.html,`font-size:${zn(e)};vertical-align:${zn((.55*r-s)/e)}`)}return In(this.el("sqrt",o+i+this.el("radicand",e.html)),n,s)}fence(e,t="(",n=")"){const s=Math.max(e.h,xn)+Math.max(e.d,yn),r=s>1.25,i=r?.1:0,o=(e,t)=>{if(!e)return{html:"",w:0};const n={"(":.26,")":.26,"{":.36,"}":.36}[e];if(n){const i=n+(r?Math.min(.2,.05*(s-1)):0);return{html:$n(e,`${this.p}-delim ${this.p}-delim-${t}`,`width:${zn(i)}`),w:i+.1}}const i={"[":"lbrack","]":"rbrack","|":"vert","⌊":"lfloor","⌋":"rfloor","⌈":"lceil","⌉":"rceil"}[e];return{html:this.el(`delim ${i} delim-${t}`,""),w:"|"===e?.18:.3}},a=o(t,"l"),l=o(n,"r"),c=`padding:${zn(i)} ${zn(l.w)} ${zn(i)} ${zn(a.w)}`,h=In(this.el("fence",a.html+e.html+l.html,c),Math.max(e.h,xn)+i,Math.max(e.d,yn)+i);return h.fenced=!0,h}derivative(e,t){const{n:n,body:s,by:r,variable:i}=st(e),o={...t,level:t.level+1},a=()=>this.text("d","d"),c=()=>n>1?this.render({type:"number",value:String(n)},o):null,h={...t,inFraction:!0},u=jn(a(),c()?this.script(this.render(r,h),c(),h):this.render(r,h)),p=e=>jn(c()?this.script(a(),c(),h):a(),e||[]),f=t.level>0||t.inFraction||!this.o.display?.8:1;if(i)return this.stack(p(this.render(s,h)),u,!0,f);const g=Ue(s)&&l(Ue(s))<100,[m,d]="("===this.o.derivativeBrackets?["(",")"]:["[","]"],$=g?this.fence(this.render(s,t),m,d):this.render(s,t);return jn(this.stack(p(),u,!0,f),$)}integral(e,t){const[n,s,r,i]=e,o=e=>this.render(e,t),a=e=>e?this.render(e,{...t,level:t.level+1}):null,l=()=>this.text("var",A(n)||"x");let c,h=null,u=null;switch(e.length){case 1:c=l();break;case 2:tt(s)?c=o(s):(c=l(),h=a(s));break;case 3:tt(s)?(c=o(s),h=a(r)):(c=l(),h=a(s),u=a(r));break;default:c=o(s),h=a(r),u=a(i)}const p=o(n),f=In(this.el("dx",this.el("d","d")+c.html),c.h,c.d);return jn(this.bigSign("int",p,h,u,t),p,f)}bigSign(e,t,n,s,r){const i=!this.o.display||r.level>0,o=Math.max(i?.6:.95,Math.max(t.h-bn,t.d+bn)+.12),a=$n(e,`${this.p}-bigsign ${this.p}-${e}sign`,`height:${zn(2*o)};width:${zn(i?.38:.5)};vertical-align:${zn(bn-o)}`);if(!n&&!s)return In(a,bn+o,o-bn);const l=wn,c=s||In(""),h=n||In(""),u=bn+o-l*c.h;h.d;const p=this.el("limits",this.el("script",c.html,`font-size:${zn(l)}`)+this.el("script lower",h.html,`font-size:${zn(l)}`),`vertical-align:${zn(u)};height:${zn(2*o)}`);return In(a+p,bn+o,o-bn)}limit(e,t){const[n,s,r,i]=e,o={...t,level:t.level+1},a=e=>this.render(e,o),l=()=>this.rel("→");let c;switch(e.length){case 1:return jn(this.word("lim"),In(this.el("fnspace","")),this.render(n,t));case 2:{const e=A(n),t="number"===s.type||"symbol"===s.type&&s.value.includes("∞");c=e&&t?jn(this.text("var",e),l(),a(s)):a(s);break}case 3:c=jn(a(s),l(),a(r));break;default:{const e=We(i).toLowerCase().startsWith("r")?"+":vn;c=jn(a(s),l(),this.script(a(r),this.wrap(i,["symbol"],this.text("ord",e)),o))}}return jn(this.under(this.word("lim"),c,t),this.render(n,t))}under(e,t,n){return!this.o.display||n.level>0?this.script(e,null,n,t):In(this.el("under",e.html+this.el("script",t.html,`font-size:${zn(.7)}`)),e.h,Math.max(e.d,yn)+.05+.7*(t.h+t.d))}bigOperator(e,t,n){const[s,r,i]=t,o={...n,level:n.level+1},a=r?this.render(r,o):null,l=i?this.render(i,o):null,c=this.render(s,n);if(!this.o.display||n.level>0){const t=.55,s=$n(e,`${this.p}-bigsign`,`height:${zn(2*t)};width:${zn(.8)};vertical-align:${zn(bn-t)}`);return jn(this.script(In(s,bn+t,t-bn),l,n,a),c)}const h=.68,u=wn,p=$n(e,`${this.p}-bigsign`,`height:${zn(1.36)};width:${zn("sum"===e?1:1.05)}`),f=l?1.01+u*l.d:bn-h,g=e=>this.el("script",e.html,`font-size:${zn(u)}`),m=this.el("bigop",(l?g(l):"")+p+(a?g(a):""),`vertical-align:${zn(f)}`);return jn(In(m,.93+(l?.08+u*(l.h+l.d):0),h-bn+(a?.08+u*(a.h+a.d):0)),c)}matrix(e,t,n){const s=t.map(e=>e.map(e=>this.render(e,n))),r=s.map(e=>({h:Math.max(xn,...e.map(e=>e.h)),d:Math.max(yn,...e.map(e=>e.d))})),i=r.reduce((e,t)=>e+t.h+t.d,0)+.3*(t.length-1),o=bn+i/2-r[0].h,a=s.map((t,n)=>{const s=t.map(e=>this.el("matrix-cell",e.html)).join(""),r=e.args[n];return r&&"op"===r.type&&"[]"===r.op?this.wrap(r,["op","op-list","matrix-row"],In(s)).html:s}).join(""),l=t[0].length,c=In(this.el("matrix",a,`grid-template-columns:repeat(${l},auto);vertical-align:${zn(o)}`),bn+i/2,i/2-bn),[h,u]=lt[e.op]??["[","]"];return this.fence(c,h,u)}cases(e,t){const n=[];let s=e;for(;"op"===s.type&&"?:"===s.op;)n.push([this.render(s.args[1],t),jn(this.word("if"),this.text("space",""),this.render(s.args[0],t))]),s=s.args[2];"symbol"===s.type&&"unchanged"===s.value||n.push([this.render(s,t),this.word("otherwise")]);const r=n.map(([e,t])=>({h:Math.max(e.h,t.h),d:Math.max(e.d,t.d)})),i=r.reduce((e,t)=>e+t.h+t.d,0)+.25*(n.length-1),o=bn+i/2-r[0].h,a=n.map(([e,t])=>this.el("case-value",e.html)+this.el("case-cond",t.html)).join(""),l=In(this.el("cases",a,`vertical-align:${zn(o)}`),bn+i/2,i/2-bn);return this.fence(l,"{","")}}function Fn(e,t=!1){return"number"===e.type?!e.value.startsWith("-")||t:"symbol"===e.type||"op"===e.type&&("abs"===e.op||ct(e)?!t:!t||"neg"!==e.op&&"^"!==e.op?"*"===e.op&&!De(e)&&e.args.every(e=>"number"===e.type&&!e.value.startsWith("-")||Wn(e)||"*"===e.op&&Fn(e,t)):Fn(e.args[0],!0)&&("neg"===e.op||Fn(e.args[1],!0)))}const Wn=e=>"symbol"===e.type&&(1===e.value.length||/^[α-ωΑ-Ω]$/.test(e.value)||Boolean(Fe[e.value])),Dn=e=>"number"===e.type&&/^[1-9]\d*$/.test(e.value)&&Number(e.value)<10;const Un=e=>_(e).join(" ");function Bn(e,t){const n=new Set;Gn(e,t,n);const s=[];return M(e,e=>{n.has(e)&&s.push(e)}),s}function Gn(e,t,n){if(null!=t)if(Array.isArray(t))t.forEach(t=>Gn(e,t,n));else if("number"!=typeof t)if("function"!=typeof t){if("string"==typeof t){const s=Un(tn(t));return void M(e,e=>{Un(e)===s&&n.add(e)})}if(t.path){const s=Hn(e,t.path);return void(s&&n.add(s))}if(t.type){const s=Un(t);M(e,e=>{e!==t&&Un(e)!==s||n.add(e)})}}else M(e,(e,s)=>{t(e,s)&&n.add(e)});else M(e,e=>{e.id===t&&n.add(e)})}function Hn(e,t){let n=e;for(const e of t){if("op"!==n.type||!n.args[e])return null;n=n.args[e]}return n}function Qn(e,t){const n=[],s=e=>{if(e.id===t)return!0;if("op"!==e.type)return!1;for(let t=0;t<e.args.length;t++){if(n.push(t),s(e.args[t]))return!0;n.pop()}return!1};return s(e)?n:null}function Vn(t){let n=0;const s=t=>{"op"===t.type&&(t.args.forEach(s),o(t.op)?.arity===e&&n++),t.id=n++};return s(t),t}function Xn(e,t={}){const{blocks:n}=t;if("string"==typeof e)return tn(e,n?{blocks:e=>n(e,t.scope)}:{});if(Array.isArray(e))return k(e);if(e&&"object"==typeof e&&e.type)return void 0===e.id?Vn(structuredClone(e)):e;throw new Error("Inline Math needs an expression, standard postfix or a tree")}function Jn(e,t={}){const n=Xn(e,t);return Zn(n,Kn(n,t)).html}function Kn(e,t){const{colors:n,highlight:s,scope:r,blocks:i,...o}=t,a=new Map;for(const[t,s]of function(e){return e?Array.isArray(e)?e:Object.entries(e).map(([e,t])=>[/^\d+$/.test(e)?Number(e):e,t]):[]}(n))if(Yn(s))for(const n of Bn(e,t))a.set(n,`color:${s}`);const l=new Set(void 0===s?[]:Bn(e,s));if(!a.size&&!l.size)return o;const c=o.prefix||"mv";return{...o,style:e=>[a.get(e),o.style&&o.style(e)].filter(Boolean).join(";"),attributes:e=>{const t={...o.attributes?o.attributes(e):{}};return l.has(e)&&(t.class=[t.class,`${c}-hl`].filter(Boolean).join(" ")),t}}}function Yn(e){return"string"==typeof e&&/^[#\w\s.,%()/+-]+$/.test(e)&&!/url\s*\(|expression/i.test(e)}export{We as A,tt as B,He as C,Rn as D,sn as E,en as F,Fe as G,o as H,lt as M,dn as P,Kn as a,gn as b,Un as c,Vn as d,Jn as e,Xn as f,_ as g,nn as h,ot as i,tn as j,E as k,Zn as l,A as m,Hn as n,Xt as o,Qn as p,at as q,De as r,Bn as s,mn as t,ct as u,i as v,nt as w,st as x,c as y,Ue as z};