just-bash 1.1.0 → 1.2.1

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 (82) hide show
  1. package/dist/Bash.d.ts +18 -0
  2. package/dist/ai/index.d.ts +6 -1
  3. package/dist/bin/chunks/awk2-4DKPX43H.js +20 -0
  4. package/dist/bin/chunks/awk2-6XCE67AX.js +20 -0
  5. package/dist/bin/chunks/awk2-DKAZ7LPG.js +20 -0
  6. package/dist/bin/chunks/awk2-GAJ72X3Z.js +20 -0
  7. package/dist/bin/chunks/awk2-HJAPWU2N.js +18 -0
  8. package/dist/bin/chunks/awk2-LVXC5OAC.js +20 -0
  9. package/dist/bin/chunks/awk2-T6HR4EYO.js +20 -0
  10. package/dist/bin/chunks/awk2-UYU2UYZ2.js +20 -0
  11. package/dist/bin/chunks/awk2-W64AZN7P.js +20 -0
  12. package/dist/bin/chunks/chunk-NWWB2XRE.js +6 -0
  13. package/dist/bin/chunks/find-7BUNQZX4.js +11 -0
  14. package/dist/bin/chunks/find-YATLECXJ.js +11 -0
  15. package/dist/bin/chunks/grep-PHBFGJCV.js +15 -0
  16. package/dist/bin/chunks/sed-B6FXUN7R.js +80 -0
  17. package/dist/bin/chunks/sed-LTCVBSRV.js +80 -0
  18. package/dist/bin/chunks/sed-RHLDIXPL.js +76 -0
  19. package/dist/bin/chunks/sed-SYSATJXR.js +75 -0
  20. package/dist/bin/just-bash.js +108 -108
  21. package/dist/bin/shell/chunks/awk2-4DKPX43H.js +20 -0
  22. package/dist/bin/shell/chunks/awk2-6XCE67AX.js +20 -0
  23. package/dist/bin/shell/chunks/awk2-DKAZ7LPG.js +20 -0
  24. package/dist/bin/shell/chunks/awk2-GAJ72X3Z.js +20 -0
  25. package/dist/bin/shell/chunks/awk2-HJAPWU2N.js +18 -0
  26. package/dist/bin/shell/chunks/awk2-LVXC5OAC.js +20 -0
  27. package/dist/bin/shell/chunks/awk2-T6HR4EYO.js +20 -0
  28. package/dist/bin/shell/chunks/awk2-UYU2UYZ2.js +20 -0
  29. package/dist/bin/shell/chunks/awk2-W64AZN7P.js +20 -0
  30. package/dist/bin/shell/chunks/chunk-NWWB2XRE.js +6 -0
  31. package/dist/bin/shell/chunks/find-7BUNQZX4.js +11 -0
  32. package/dist/bin/shell/chunks/find-YATLECXJ.js +11 -0
  33. package/dist/bin/shell/chunks/grep-PHBFGJCV.js +15 -0
  34. package/dist/bin/shell/chunks/sed-B6FXUN7R.js +80 -0
  35. package/dist/bin/shell/chunks/sed-LTCVBSRV.js +80 -0
  36. package/dist/bin/shell/chunks/sed-RHLDIXPL.js +76 -0
  37. package/dist/bin/shell/chunks/sed-SYSATJXR.js +75 -0
  38. package/dist/bin/shell/shell.js +116 -120
  39. package/dist/bundle/ai/index.js +410 -373
  40. package/dist/bundle/chunks/awk2-365HINHI.js +19 -0
  41. package/dist/bundle/chunks/awk2-4YCQ6UCB.js +19 -0
  42. package/dist/bundle/chunks/awk2-7YCFY7D2.js +19 -0
  43. package/dist/bundle/chunks/awk2-7YL3P4KU.js +19 -0
  44. package/dist/bundle/chunks/awk2-ETXZHQQ4.js +19 -0
  45. package/dist/bundle/chunks/awk2-FMEL7ESV.js +19 -0
  46. package/dist/bundle/chunks/awk2-LE4QUFGK.js +19 -0
  47. package/dist/bundle/chunks/awk2-MGHA6JPJ.js +17 -0
  48. package/dist/bundle/chunks/awk2-XEAK5PBN.js +19 -0
  49. package/dist/bundle/chunks/chunk-CG2HXOFG.js +5 -0
  50. package/dist/bundle/chunks/find-KP4M5DWC.js +10 -0
  51. package/dist/bundle/chunks/find-WM6ZETA7.js +10 -0
  52. package/dist/bundle/chunks/grep-CZTYKNEE.js +14 -0
  53. package/dist/bundle/chunks/sed-2WWCANZT.js +79 -0
  54. package/dist/bundle/chunks/sed-5LZHAGFR.js +74 -0
  55. package/dist/bundle/chunks/sed-IGVS3UIY.js +79 -0
  56. package/dist/bundle/chunks/sed-V7XSBPTD.js +75 -0
  57. package/dist/bundle/index.js +111 -111
  58. package/dist/commands/awk/ast.d.ts +201 -0
  59. package/dist/commands/awk/awk2.d.ts +7 -0
  60. package/dist/commands/awk/builtins.d.ts +17 -0
  61. package/dist/commands/awk/interpreter/context.d.ts +53 -0
  62. package/dist/commands/awk/interpreter/expressions.d.ts +17 -0
  63. package/dist/commands/awk/interpreter/fields.d.ts +25 -0
  64. package/dist/commands/awk/interpreter/helpers.d.ts +29 -0
  65. package/dist/commands/awk/interpreter/index.d.ts +8 -0
  66. package/dist/commands/awk/interpreter/interpreter.d.ts +50 -0
  67. package/dist/commands/awk/interpreter/statements.d.ts +11 -0
  68. package/dist/commands/awk/interpreter/types.d.ts +13 -0
  69. package/dist/commands/awk/interpreter/variables.d.ts +35 -0
  70. package/dist/commands/awk/interpreter2.d.ts +90 -0
  71. package/dist/commands/awk/lexer.d.ts +100 -0
  72. package/dist/commands/awk/parser2.d.ts +73 -0
  73. package/dist/commands/find/matcher.d.ts +6 -2
  74. package/dist/commands/find/types.d.ts +13 -0
  75. package/dist/commands/sed/executor.d.ts +1 -1
  76. package/dist/commands/sed/lexer.d.ts +74 -0
  77. package/dist/commands/sed/parser.d.ts +4 -0
  78. package/dist/commands/sed/types.d.ts +66 -2
  79. package/dist/index.d.ts +1 -1
  80. package/dist/interpreter/errors.d.ts +8 -0
  81. package/dist/interpreter/types.d.ts +2 -0
  82. package/package.json +2 -1
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ import{i as O}from"./chunk-LV662IGP.js";import{a as K,b as Q,c as x}from"./chunk-GTNBSMZR.js";import"./chunk-5KNEBKYN.js";function j(e,t,r){switch(r){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":return t!==0?e/t:0;case"%":return t!==0?e%t:0;case"^":case"**":return e**t;default:return 0}}function g(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}function w(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}async function ce(e,t,r){return e.length===0?t.line.length:w(await r.evalExpr(e[0])).length}async function he(e,t,r){if(e.length<2)return"";let n=w(await r.evalExpr(e[0])),a=Math.floor(g(await r.evalExpr(e[1])))-1;if(e.length>=3){let s=Math.floor(g(await r.evalExpr(e[2])));return n.substr(Math.max(0,a),s)}return n.substr(Math.max(0,a))}async function ue(e,t,r){if(e.length<2)return 0;let n=w(await r.evalExpr(e[0])),a=w(await r.evalExpr(e[1])),s=n.indexOf(a);return s===-1?0:s+1}async function pe(e,t,r){if(e.length<2)return 0;let n=w(await r.evalExpr(e[0])),a=e[1];if(a.type!=="variable")return 0;let s=a.name,o=t.FS;if(e.length>=3){let u=w(await r.evalExpr(e[2]));o=u===" "?/\s+/:u}else t.FS===" "&&(o=/\s+/);let l=n.split(o);t.arrays[s]={};for(let u=0;u<l.length;u++)t.arrays[s][String(u+1)]=l[u];return l.length}async function fe(e,t,r){if(e.length<2)return 0;let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s="$0";if(e.length>=3){let l=e[2];l.type==="variable"?s=l.name:l.type==="field"&&(s=`$${Math.floor(g(await r.evalExpr(l.index)))}`)}let o;if(s==="$0")o=t.line;else if(s.startsWith("$")){let l=parseInt(s.slice(1),10)-1;o=t.fields[l]||""}else o=w(t.vars[s]??"");try{let l=new RegExp(n),u=o.replace(l,z(a)),m=u!==o?1:0;if(s==="$0")t.line=u,t.fields=t.FS===" "?u.trim().split(/\s+/).filter(Boolean):u.split(t.fieldSep),t.NF=t.fields.length;else if(s.startsWith("$")){let N=parseInt(s.slice(1),10)-1;for(;t.fields.length<=N;)t.fields.push("");t.fields[N]=u,t.NF=t.fields.length,t.line=t.fields.join(t.OFS)}else t.vars[s]=u;return m}catch{return 0}}async function de(e,t,r){if(e.length<2)return 0;let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s="$0";if(e.length>=3){let l=e[2];l.type==="variable"?s=l.name:l.type==="field"&&(s=`$${Math.floor(g(await r.evalExpr(l.index)))}`)}let o;if(s==="$0")o=t.line;else if(s.startsWith("$")){let l=parseInt(s.slice(1),10)-1;o=t.fields[l]||""}else o=w(t.vars[s]??"");try{let l=new RegExp(n,"g"),u=o.match(l),m=u?u.length:0,N=o.replace(l,z(a));if(s==="$0")t.line=N,t.fields=t.FS===" "?N.trim().split(/\s+/).filter(Boolean):N.split(t.fieldSep),t.NF=t.fields.length;else if(s.startsWith("$")){let c=parseInt(s.slice(1),10)-1;for(;t.fields.length<=c;)t.fields.push("");t.fields[c]=N,t.NF=t.fields.length,t.line=t.fields.join(t.OFS)}else t.vars[s]=N;return m}catch{return 0}}function z(e){return t=>{let r="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length){let a=e[n+1];a==="&"?(r+="&",n+=2):a==="\\"?(r+="\\",n+=2):(r+=e[n+1],n+=2)}else e[n]==="&"?(r+=t,n++):(r+=e[n],n++);return r}}async function Ee(e,t,r){if(e.length<2)return t.RSTART=0,t.RLENGTH=-1,0;let n=w(await r.evalExpr(e[0])),a;e[1].type==="regex"?a=e[1].pattern:(a=w(await r.evalExpr(e[1])),a.startsWith("/")&&a.endsWith("/")&&(a=a.slice(1,-1)));try{let o=new RegExp(a).exec(n);if(o)return t.RSTART=o.index+1,t.RLENGTH=o[0].length,t.RSTART}catch{}return t.RSTART=0,t.RLENGTH=-1,0}async function Ne(e,t,r){if(e.length<3)return"";let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s=w(await r.evalExpr(e[2])),o=e.length>=4?w(await r.evalExpr(e[3])):t.line;try{let l=s.toLowerCase()==="g",u=l?0:parseInt(s,10)||1;if(l){let m=new RegExp(n,"g");return o.replace(m,(N,...c)=>q(a,N,c.slice(0,-2)))}else{let m=0,N=new RegExp(n,"g");return o.replace(N,(c,...d)=>(m++,m===u?q(a,c,d.slice(0,-2)):c))}}catch{return o}}function q(e,t,r){let n="",a=0;for(;a<e.length;)if(e[a]==="\\"&&a+1<e.length){let s=e[a+1];if(s==="&")n+="&",a+=2;else if(s==="0")n+=t,a+=2;else if(s>="1"&&s<="9"){let o=parseInt(s,10)-1;n+=r[o]||"",a+=2}else s==="n"?(n+=`
3
+ `,a+=2):s==="t"?(n+=" ",a+=2):(n+=s,a+=2)}else e[a]==="&"?(n+=t,a++):(n+=e[a],a++);return n}async function ye(e,t,r){return e.length===0?"":w(await r.evalExpr(e[0])).toLowerCase()}async function me(e,t,r){return e.length===0?"":w(await r.evalExpr(e[0])).toUpperCase()}async function we(e,t,r){if(e.length===0)return"";let n=w(await r.evalExpr(e[0])),a=[];for(let s=1;s<e.length;s++)a.push(await r.evalExpr(e[s]));return W(n,a)}async function Re(e,t,r){return e.length===0?0:Math.floor(g(await r.evalExpr(e[0])))}async function Se(e,t,r){return e.length===0?0:Math.sqrt(g(await r.evalExpr(e[0])))}async function ge(e,t,r){return e.length===0?0:Math.sin(g(await r.evalExpr(e[0])))}async function Ae(e,t,r){return e.length===0?0:Math.cos(g(await r.evalExpr(e[0])))}async function ve(e,t,r){let n=e.length>0?g(await r.evalExpr(e[0])):0,a=e.length>1?g(await r.evalExpr(e[1])):0;return Math.atan2(n,a)}async function ke(e,t,r){return e.length===0?0:Math.log(g(await r.evalExpr(e[0])))}async function Ie(e,t,r){return e.length===0?1:Math.exp(g(await r.evalExpr(e[0])))}function Ce(e,t,r){return t.random?t.random():Math.random()}async function be(e,t,r){let n=e.length>0?g(await r.evalExpr(e[0])):Date.now();return t.vars._srand_seed=n,n}function H(e,t){return()=>{throw new Error(`${e}() is not supported - ${t}`)}}function $(e){return()=>{throw new Error(`function '${e}()' is not implemented`)}}function W(e,t){let r=0,n="",a=0;for(;a<e.length;)if(e[a]==="%"&&a+1<e.length){let s=a+1,o="",l="",u="";for(;s<e.length&&/[-+ #0]/.test(e[s]);)o+=e[s++];for(;s<e.length&&/\d/.test(e[s]);)l+=e[s++];if(e[s]===".")for(s++;s<e.length&&/\d/.test(e[s]);)u+=e[s++];let m=e[s],N=t[r];switch(m){case"s":{let c=N!==void 0?String(N):"";if(u&&(c=c.substring(0,parseInt(u,10))),l){let d=parseInt(l,10);o.includes("-")?c=c.padEnd(d):c=c.padStart(d)}n+=c,r++;break}case"d":case"i":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=String(c);if(l){let h=parseInt(l,10);if(o.includes("-"))d=d.padEnd(h);else if(o.includes("0")&&!o.includes("-")){let f=c<0?"-":"";d=f+Math.abs(c).toString().padStart(h-f.length,"0")}else d=d.padStart(h)}n+=d,r++;break}case"f":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c.toFixed(d);if(l){let f=parseInt(l,10);o.includes("-")?h=h.padEnd(f):h=h.padStart(f)}n+=h,r++;break}case"e":case"E":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c.toExponential(d);if(m==="E"&&(h=h.toUpperCase()),l){let f=parseInt(l,10);o.includes("-")?h=h.padEnd(f):h=h.padStart(f)}n+=h,r++;break}case"g":case"G":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c!==0?Math.floor(Math.log10(Math.abs(c))):0,f;if(c===0?f="0":h<-4||h>=d?(f=c.toExponential(d-1),m==="G"&&(f=f.toUpperCase())):f=c.toPrecision(d),f=f.replace(/\.?0+$/,"").replace(/\.?0+e/,"e"),l){let S=parseInt(l,10);o.includes("-")?f=f.padEnd(S):f=f.padStart(S)}n+=f,r++;break}case"x":case"X":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=Math.abs(c).toString(16);if(m==="X"&&(d=d.toUpperCase()),l){let h=parseInt(l,10);o.includes("0")?d=d.padStart(h,"0"):o.includes("-")?d=d.padEnd(h):d=d.padStart(h)}n+=c<0?`-${d}`:d,r++;break}case"o":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=Math.abs(c).toString(8);if(l){let h=parseInt(l,10);o.includes("0")?d=d.padStart(h,"0"):o.includes("-")?d=d.padEnd(h):d=d.padStart(h)}n+=c<0?`-${d}`:d,r++;break}case"c":{typeof N=="number"?n+=String.fromCharCode(N):n+=String(N??"").charAt(0)||"",r++;break}case"%":n+="%";break;default:n+=e.substring(a,s+1)}a=s+1}else if(e[a]==="\\"&&a+1<e.length){let s=e[a+1];switch(s){case"n":n+=`
4
+ `;break;case"t":n+=" ";break;case"r":n+="\r";break;case"\\":n+="\\";break;default:n+=s}a+=2}else n+=e[a++];return n}var Z={length:ce,substr:he,index:ue,split:pe,sub:fe,gsub:de,match:Ee,gensub:Ne,tolower:ye,toupper:me,sprintf:we,int:Re,sqrt:Se,sin:ge,cos:Ae,atan2:ve,log:ke,exp:Ie,rand:Ce,srand:be,system:H("system","shell execution not allowed in sandboxed environment"),close:H("close","file operations not allowed"),fflush:H("fflush","file operations not allowed"),systime:$("systime"),mktime:$("mktime"),strftime:$("strftime")};function R(e){return typeof e=="number"?e!==0:e!==""}function E(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}function y(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}function D(e){if(typeof e=="number")return!0;let t=String(e).trim();return t===""?!1:!Number.isNaN(Number(t))}function P(e,t){try{return new RegExp(e).test(t)}catch{return!1}}function J(e,t){return e.FS===" "?t.trim().split(/\s+/).filter(Boolean):t.split(e.fieldSep)}function I(e,t){return t===0?e.line:t<0||t>e.fields.length?"":e.fields[t-1]??""}function M(e,t,r){if(t===0)e.line=y(r),e.fields=J(e,e.line),e.NF=e.fields.length;else if(t>0){for(;e.fields.length<t;)e.fields.push("");e.fields[t-1]=y(r),e.NF=e.fields.length,e.line=e.fields.join(e.OFS)}}function T(e,t){e.line=t,e.fields=J(e,t),e.NF=e.fields.length}function Y(e,t){if(e.FS=t,t===" ")e.fieldSep=/\s+/;else try{e.fieldSep=new RegExp(t)}catch{e.fieldSep=new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))}}function C(e,t){switch(t){case"FS":return e.FS;case"OFS":return e.OFS;case"ORS":return e.ORS;case"NR":return e.NR;case"NF":return e.NF;case"FNR":return e.FNR;case"FILENAME":return e.FILENAME;case"RSTART":return e.RSTART;case"RLENGTH":return e.RLENGTH;case"SUBSEP":return e.SUBSEP;case"ARGC":return e.ARGC}return e.vars[t]??""}function A(e,t,r){switch(t){case"FS":Y(e,y(r));return;case"OFS":e.OFS=y(r);return;case"ORS":e.ORS=y(r);return;case"NR":e.NR=Math.floor(E(r));return;case"NF":{let n=Math.floor(E(r));if(n<e.NF)e.fields=e.fields.slice(0,n),e.line=e.fields.join(e.OFS);else if(n>e.NF){for(;e.fields.length<n;)e.fields.push("");e.line=e.fields.join(e.OFS)}e.NF=n;return}case"FNR":e.FNR=Math.floor(E(r));return;case"FILENAME":e.FILENAME=y(r);return;case"RSTART":e.RSTART=Math.floor(E(r));return;case"RLENGTH":e.RLENGTH=Math.floor(E(r));return;case"SUBSEP":e.SUBSEP=y(r);return}e.vars[t]=r}function b(e,t,r){return t==="ARGV"?e.ARGV[r]??"":e.arrays[t]?.[r]??""}function F(e,t,r,n){e.arrays[t]||(e.arrays[t]={}),e.arrays[t][r]=n}function ee(e,t,r){return t==="ARGV"?e.ARGV[r]!==void 0:e.arrays[t]?.[r]!==void 0}function te(e,t,r){e.arrays[t]&&delete e.arrays[t][r]}function re(e,t){delete e.arrays[t]}var X=null;function ie(e){X=e}async function p(e,t){switch(t.type){case"number":return t.value;case"string":return t.value;case"regex":return P(t.pattern,e.line)?1:0;case"field":return Le(e,t);case"variable":return C(e,t.name);case"array_access":return Oe(e,t);case"binary":return Pe(e,t);case"unary":return Te(e,t);case"ternary":return R(await p(e,t.condition))?p(e,t.consequent):p(e,t.alternate);case"call":return _e(e,t.name,t.args);case"assignment":return De(e,t);case"pre_increment":return Be(e,t.operand);case"pre_decrement":return Ue(e,t.operand);case"post_increment":return xe(e,t.operand);case"post_decrement":return He(e,t.operand);case"in":return $e(e,t.key,t.array);case"getline":return We(e,t.variable,t.file);case"tuple":return Ve(e,t.elements);default:return""}}async function Le(e,t){let r=Math.floor(E(await p(e,t.index)));return I(e,r)}async function Oe(e,t){let r=y(await p(e,t.key));return b(e,t.array,r)}async function Pe(e,t){let r=t.operator;if(r==="||")return R(await p(e,t.left))||R(await p(e,t.right))?1:0;if(r==="&&")return R(await p(e,t.left))&&R(await p(e,t.right))?1:0;if(r==="~"){let l=await p(e,t.left),u=t.right.type==="regex"?t.right.pattern:y(await p(e,t.right));try{return new RegExp(u).test(y(l))?1:0}catch{return 0}}if(r==="!~"){let l=await p(e,t.left),u=t.right.type==="regex"?t.right.pattern:y(await p(e,t.right));try{return new RegExp(u).test(y(l))?0:1}catch{return 1}}let n=await p(e,t.left),a=await p(e,t.right);if(r===" ")return y(n)+y(a);if(Me(r))return Fe(n,a,r);let s=E(n),o=E(a);return j(s,o,r)}function Me(e){return["<","<=",">",">=","==","!="].includes(e)}function Fe(e,t,r){let n=D(e),a=D(t);if(n&&a){let l=E(e),u=E(t);switch(r){case"<":return l<u?1:0;case"<=":return l<=u?1:0;case">":return l>u?1:0;case">=":return l>=u?1:0;case"==":return l===u?1:0;case"!=":return l!==u?1:0}}let s=y(e),o=y(t);switch(r){case"<":return s<o?1:0;case"<=":return s<=o?1:0;case">":return s>o?1:0;case">=":return s>=o?1:0;case"==":return s===o?1:0;case"!=":return s!==o?1:0}return 0}async function Te(e,t){let r=await p(e,t.operand);switch(t.operator){case"!":return R(r)?0:1;case"-":return-E(r);case"+":return+E(r);default:return r}}async function _e(e,t,r){let n=Z[t];if(n)return n(r,e,{evalExpr:s=>p(e,s)});let a=e.functions.get(t);return a?Ge(e,a,r):""}async function Ge(e,t,r){if(e.currentRecursionDepth++,e.currentRecursionDepth>e.maxRecursionDepth)throw e.currentRecursionDepth--,new O(`awk: recursion depth exceeded maximum (${e.maxRecursionDepth})`,"recursion",e.output);let n={};for(let s of t.params)n[s]=e.vars[s];for(let s=0;s<t.params.length;s++){let o=t.params[s],l=s<r.length?await p(e,r[s]):"";e.vars[o]=l}e.hasReturn=!1,e.returnValue=void 0,X&&await X(e,t.body.statements);let a=e.returnValue??"";for(let s of t.params)n[s]!==void 0?e.vars[s]=n[s]:delete e.vars[s];return e.hasReturn=!1,e.returnValue=void 0,e.currentRecursionDepth--,a}async function De(e,t){let r=await p(e,t.value),n=t.target,a=t.operator,s;if(a==="=")s=r;else{let o;if(n.type==="field"){let m=Math.floor(E(await p(e,n.index)));o=I(e,m)}else if(n.type==="variable")o=C(e,n.name);else{let m=y(await p(e,n.key));o=b(e,n.array,m)}let l=E(o),u=E(r);switch(a){case"+=":s=l+u;break;case"-=":s=l-u;break;case"*=":s=l*u;break;case"/=":s=u!==0?l/u:0;break;case"%=":s=u!==0?l%u:0;break;case"^=":s=l**u;break;default:s=r}}if(n.type==="field"){let o=Math.floor(E(await p(e,n.index)));M(e,o,s)}else if(n.type==="variable")A(e,n.name,s);else{let o=y(await p(e,n.key));F(e,n.array,o,s)}return s}async function Be(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n))+1,M(e,n,r)}else if(t.type==="variable")r=E(C(e,t.name))+1,A(e,t.name,r);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n))+1,F(e,t.array,n,r)}return r}async function Ue(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n))-1,M(e,n,r)}else if(t.type==="variable")r=E(C(e,t.name))-1,A(e,t.name,r);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n))-1,F(e,t.array,n,r)}return r}async function xe(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n)),M(e,n,r+1)}else if(t.type==="variable")r=E(C(e,t.name)),A(e,t.name,r+1);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n)),F(e,t.array,n,r+1)}return r}async function He(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n)),M(e,n,r-1)}else if(t.type==="variable")r=E(C(e,t.name)),A(e,t.name,r-1);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n)),F(e,t.array,n,r-1)}return r}async function $e(e,t,r){let n;if(t.type==="tuple"){let a=[];for(let s of t.elements)a.push(y(await p(e,s)));n=a.join(e.SUBSEP)}else n=y(await p(e,t));return ee(e,r,n)?1:0}async function We(e,t,r){if(r)return Xe(e,t,r);if(!e.lines||e.lineIndex===void 0)return-1;let n=e.lineIndex+1;if(n>=e.lines.length)return 0;let a=e.lines[n];return t?A(e,t,a):T(e,a),e.NR++,e.lineIndex=n,1}async function Xe(e,t,r){if(!e.fs||!e.cwd)return-1;let n=y(await p(e,r)),a=e.fs.resolvePath(e.cwd,n);e.arrays.__file_cache__||(e.arrays.__file_cache__={});let s=`__fc_${a}`,o=`__fi_${a}`,l,u;if(e.vars[s]===void 0)try{l=(await e.fs.readFile(a)).split(`
5
+ `),l.length>0&&l[l.length-1]===""&&l.pop(),e.vars[s]=JSON.stringify(l),e.vars[o]=-1,u=-1}catch{return-1}else l=JSON.parse(e.vars[s]),u=e.vars[o];let m=u+1;if(m>=l.length)return 0;let N=l[m];return e.vars[o]=m,t?A(e,t,N):T(e,N),1}async function Ve(e,t){if(t.length===0)return"";for(let r=0;r<t.length-1;r++)await p(e,t[r]);return p(e,t[t.length-1])}ie(L);async function L(e,t){for(let r of t)if(await v(e,r),Ke(e))break}function Ke(e){return e.shouldExit||e.shouldNext||e.shouldNextFile||e.loopBreak||e.loopContinue||e.hasReturn}async function v(e,t){switch(t.type){case"block":await L(e,t.statements);break;case"expr_stmt":await p(e,t.expression);break;case"print":await Qe(e,t.args,t.output);break;case"printf":await je(e,t.format,t.args,t.output);break;case"if":await qe(e,t);break;case"while":await ze(e,t);break;case"do_while":await Ze(e,t);break;case"for":await Je(e,t);break;case"for_in":await Ye(e,t);break;case"break":e.loopBreak=!0;break;case"continue":e.loopContinue=!0;break;case"next":e.shouldNext=!0;break;case"nextfile":e.shouldNextFile=!0;break;case"exit":e.shouldExit=!0,e.exitCode=t.code?Math.floor(E(await p(e,t.code))):0;break;case"return":e.hasReturn=!0,e.returnValue=t.value?await p(e,t.value):"";break;case"delete":await et(e,t.target);break}}async function Qe(e,t,r){let n=[];for(let s of t)n.push(y(await p(e,s)));let a=n.join(e.OFS)+e.ORS;r?await ne(e,r.redirect,r.file,a):e.output+=a}async function je(e,t,r,n){let a=y(await p(e,t)),s=[];for(let l of r)s.push(await p(e,l));let o=W(a,s);n?await ne(e,n.redirect,n.file,o):e.output+=o}async function ne(e,t,r,n){if(!e.fs||!e.cwd){e.output+=n;return}let a=y(await p(e,r)),s=e.fs.resolvePath(e.cwd,a);t===">"?e.openedFiles.has(s)?await e.fs.appendFile(s,n):(await e.fs.writeFile(s,n),e.openedFiles.add(s)):(e.openedFiles.has(s)||e.openedFiles.add(s),await e.fs.appendFile(s,n))}async function qe(e,t){R(await p(e,t.condition))?await v(e,t.consequent):t.alternate&&await v(e,t.alternate)}async function ze(e,t){let r=0;for(;R(await p(e,t.condition));){if(r++,r>e.maxIterations)throw new O(`awk: while loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}}async function Ze(e,t){let r=0;do{if(r++,r>e.maxIterations)throw new O(`awk: do-while loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}while(R(await p(e,t.condition)))}async function Je(e,t){t.init&&await p(e,t.init);let r=0;for(;!t.condition||R(await p(e,t.condition));){if(r++,r>e.maxIterations)throw new O(`awk: for loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break;t.update&&await p(e,t.update)}}async function Ye(e,t){let r=e.arrays[t.array];if(r)for(let n of Object.keys(r)){if(e.vars[t.variable]=n,e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}}async function et(e,t){if(t.type==="array_access"){let r=y(await p(e,t.key));te(e,t.array,r)}else t.type==="variable"&&re(e,t.name)}var _=class{ctx;program=null;rangeStates=[];constructor(t){this.ctx=t}execute(t){this.program=t,this.ctx.output="";for(let r of t.functions)this.ctx.functions.set(r.name,r);this.rangeStates=t.rules.map(()=>!1)}async executeBegin(){if(this.program){for(let t of this.program.rules)if(t.pattern?.type==="begin"&&(await L(this.ctx,t.action.statements),this.ctx.shouldExit))break}}async executeLine(t){if(!(!this.program||this.ctx.shouldExit)){T(this.ctx,t),this.ctx.NR++,this.ctx.FNR++,this.ctx.shouldNext=!1;for(let r=0;r<this.program.rules.length&&!(this.ctx.shouldExit||this.ctx.shouldNext);r++){let n=this.program.rules[r];n.pattern?.type==="begin"||n.pattern?.type==="end"||await this.matchesRule(n,r)&&await L(this.ctx,n.action.statements)}}}async executeEnd(){if(!(!this.program||this.ctx.shouldExit)){for(let t of this.program.rules)if(t.pattern?.type==="end"&&(await L(this.ctx,t.action.statements),this.ctx.shouldExit))break}}getOutput(){return this.ctx.output}getExitCode(){return this.ctx.exitCode}getContext(){return this.ctx}async matchesRule(t,r){let n=t.pattern;if(!n)return!0;switch(n.type){case"begin":case"end":return!1;case"regex_pattern":return P(n.pattern,this.ctx.line);case"expr_pattern":return R(await p(this.ctx,n.expression));case"range":{let a=await this.matchPattern(n.start),s=await this.matchPattern(n.end);return this.rangeStates[r]?(s&&(this.rangeStates[r]=!1),!0):a?(this.rangeStates[r]=!0,s&&(this.rangeStates[r]=!1),!0):!1}default:return!1}}async matchPattern(t){switch(t.type){case"regex_pattern":return P(t.pattern,this.ctx.line);case"expr_pattern":return R(await p(this.ctx,t.expression));default:return!1}}};function V(e={}){let{fieldSep:t=/\s+/,maxIterations:r=1e4,maxRecursionDepth:n=1e3,fs:a,cwd:s}=e;return{FS:" ",OFS:" ",ORS:`
6
+ `,NR:0,NF:0,FNR:0,FILENAME:"",RSTART:0,RLENGTH:-1,SUBSEP:"",fields:[],line:"",vars:{},arrays:{},ARGC:0,ARGV:{},functions:new Map,fieldSep:t,maxIterations:r,maxRecursionDepth:n,currentRecursionDepth:0,exitCode:0,shouldExit:!1,shouldNext:!1,shouldNextFile:!1,loopBreak:!1,loopContinue:!1,hasReturn:!1,output:"",openedFiles:new Set,fs:a,cwd:s}}var i;(function(e){e.NUMBER="NUMBER",e.STRING="STRING",e.REGEX="REGEX",e.IDENT="IDENT",e.BEGIN="BEGIN",e.END="END",e.IF="IF",e.ELSE="ELSE",e.WHILE="WHILE",e.DO="DO",e.FOR="FOR",e.IN="IN",e.BREAK="BREAK",e.CONTINUE="CONTINUE",e.NEXT="NEXT",e.NEXTFILE="NEXTFILE",e.EXIT="EXIT",e.RETURN="RETURN",e.DELETE="DELETE",e.FUNCTION="FUNCTION",e.PRINT="PRINT",e.PRINTF="PRINTF",e.GETLINE="GETLINE",e.PLUS="PLUS",e.MINUS="MINUS",e.STAR="STAR",e.SLASH="SLASH",e.PERCENT="PERCENT",e.CARET="CARET",e.EQ="EQ",e.NE="NE",e.LT="LT",e.GT="GT",e.LE="LE",e.GE="GE",e.MATCH="MATCH",e.NOT_MATCH="NOT_MATCH",e.AND="AND",e.OR="OR",e.NOT="NOT",e.ASSIGN="ASSIGN",e.PLUS_ASSIGN="PLUS_ASSIGN",e.MINUS_ASSIGN="MINUS_ASSIGN",e.STAR_ASSIGN="STAR_ASSIGN",e.SLASH_ASSIGN="SLASH_ASSIGN",e.PERCENT_ASSIGN="PERCENT_ASSIGN",e.CARET_ASSIGN="CARET_ASSIGN",e.INCREMENT="INCREMENT",e.DECREMENT="DECREMENT",e.QUESTION="QUESTION",e.COLON="COLON",e.COMMA="COMMA",e.SEMICOLON="SEMICOLON",e.NEWLINE="NEWLINE",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.LBRACKET="LBRACKET",e.RBRACKET="RBRACKET",e.DOLLAR="DOLLAR",e.APPEND="APPEND",e.PIPE="PIPE",e.EOF="EOF"})(i||(i={}));var tt={BEGIN:i.BEGIN,END:i.END,if:i.IF,else:i.ELSE,while:i.WHILE,do:i.DO,for:i.FOR,in:i.IN,break:i.BREAK,continue:i.CONTINUE,next:i.NEXT,nextfile:i.NEXTFILE,exit:i.EXIT,return:i.RETURN,delete:i.DELETE,function:i.FUNCTION,print:i.PRINT,printf:i.PRINTF,getline:i.GETLINE};function rt(e){return e.replace(/\[\[:space:\]\]/g,"[ \\t\\n\\r\\f\\v]").replace(/\[\[:blank:\]\]/g,"[ \\t]").replace(/\[\[:alpha:\]\]/g,"[a-zA-Z]").replace(/\[\[:digit:\]\]/g,"[0-9]").replace(/\[\[:alnum:\]\]/g,"[a-zA-Z0-9]").replace(/\[\[:upper:\]\]/g,"[A-Z]").replace(/\[\[:lower:\]\]/g,"[a-z]").replace(/\[\[:punct:\]\]/g,"[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~]").replace(/\[\[:xdigit:\]\]/g,"[0-9A-Fa-f]").replace(/\[\[:graph:\]\]/g,"[!-~]").replace(/\[\[:print:\]\]/g,"[ -~]").replace(/\[\[:cntrl:\]\]/g,"[\\x00-\\x1f\\x7f]")}var B=class{input;pos=0;line=1;column=1;lastTokenType=null;constructor(t){this.input=t}tokenize(){let t=[];for(;this.pos<this.input.length;){let r=this.nextToken();r&&(t.push(r),this.lastTokenType=r.type)}return t.push(this.makeToken(i.EOF,"")),t}makeToken(t,r){return{type:t,value:r,line:this.line,column:this.column}}peek(t=0){return this.input[this.pos+t]||""}advance(){let t=this.input[this.pos++]||"";return t===`
7
+ `?(this.line++,this.column=1):this.column++,t}skipWhitespace(){for(;this.pos<this.input.length;){let t=this.peek();if(t===" "||t===" "||t==="\r")this.advance();else if(t==="\\")if(this.peek(1)===`
8
+ `)this.advance(),this.advance();else break;else if(t==="#")for(;this.pos<this.input.length&&this.peek()!==`
9
+ `;)this.advance();else break}}nextToken(){if(this.skipWhitespace(),this.pos>=this.input.length)return null;let t=this.line,r=this.column,n=this.peek();return n===`
10
+ `?(this.advance(),{type:i.NEWLINE,value:`
11
+ `,line:t,column:r}):n==='"'?this.readString():n==="/"&&this.canBeRegex()?this.readRegex():this.isDigit(n)||n==="."&&this.isDigit(this.peek(1))?this.readNumber():this.isAlpha(n)||n==="_"?this.readIdentifier():this.readOperator()}canBeRegex(){return new Set([null,i.NEWLINE,i.SEMICOLON,i.LBRACE,i.RBRACE,i.LPAREN,i.LBRACKET,i.COMMA,i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN,i.AND,i.OR,i.NOT,i.MATCH,i.NOT_MATCH,i.QUESTION,i.COLON,i.LT,i.GT,i.LE,i.GE,i.EQ,i.NE,i.PLUS,i.MINUS,i.STAR,i.PERCENT,i.CARET,i.PRINT,i.PRINTF,i.IF,i.WHILE,i.DO,i.FOR,i.RETURN]).has(this.lastTokenType)}readString(){let t=this.line,r=this.column;this.advance();let n="";for(;this.pos<this.input.length&&this.peek()!=='"';)if(this.peek()==="\\"){this.advance();let a=this.advance();switch(a){case"n":n+=`
12
+ `;break;case"t":n+=" ";break;case"r":n+="\r";break;case"\\":n+="\\";break;case'"':n+='"';break;case"/":n+="/";break;default:n+=a}}else n+=this.advance();return this.peek()==='"'&&this.advance(),{type:i.STRING,value:n,line:t,column:r}}readRegex(){let t=this.line,r=this.column;this.advance();let n="";for(;this.pos<this.input.length&&this.peek()!=="/";)if(this.peek()==="\\")n+=this.advance(),this.pos<this.input.length&&(n+=this.advance());else{if(this.peek()===`
13
+ `)break;n+=this.advance()}return this.peek()==="/"&&this.advance(),n=rt(n),{type:i.REGEX,value:n,line:t,column:r}}readNumber(){let t=this.line,r=this.column,n="";for(;this.isDigit(this.peek());)n+=this.advance();if(this.peek()==="."&&this.isDigit(this.peek(1)))for(n+=this.advance();this.isDigit(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());this.isDigit(this.peek());)n+=this.advance();return{type:i.NUMBER,value:parseFloat(n),line:t,column:r}}readIdentifier(){let t=this.line,r=this.column,n="";for(;this.isAlphaNumeric(this.peek())||this.peek()==="_";)n+=this.advance();let a=tt[n];return a?{type:a,value:n,line:t,column:r}:{type:i.IDENT,value:n,line:t,column:r}}readOperator(){let t=this.line,r=this.column,n=this.advance(),a=this.peek();switch(n){case"+":return a==="+"?(this.advance(),{type:i.INCREMENT,value:"++",line:t,column:r}):a==="="?(this.advance(),{type:i.PLUS_ASSIGN,value:"+=",line:t,column:r}):{type:i.PLUS,value:"+",line:t,column:r};case"-":return a==="-"?(this.advance(),{type:i.DECREMENT,value:"--",line:t,column:r}):a==="="?(this.advance(),{type:i.MINUS_ASSIGN,value:"-=",line:t,column:r}):{type:i.MINUS,value:"-",line:t,column:r};case"*":return a==="*"?(this.advance(),{type:i.CARET,value:"**",line:t,column:r}):a==="="?(this.advance(),{type:i.STAR_ASSIGN,value:"*=",line:t,column:r}):{type:i.STAR,value:"*",line:t,column:r};case"/":return a==="="?(this.advance(),{type:i.SLASH_ASSIGN,value:"/=",line:t,column:r}):{type:i.SLASH,value:"/",line:t,column:r};case"%":return a==="="?(this.advance(),{type:i.PERCENT_ASSIGN,value:"%=",line:t,column:r}):{type:i.PERCENT,value:"%",line:t,column:r};case"^":return a==="="?(this.advance(),{type:i.CARET_ASSIGN,value:"^=",line:t,column:r}):{type:i.CARET,value:"^",line:t,column:r};case"=":return a==="="?(this.advance(),{type:i.EQ,value:"==",line:t,column:r}):{type:i.ASSIGN,value:"=",line:t,column:r};case"!":return a==="="?(this.advance(),{type:i.NE,value:"!=",line:t,column:r}):a==="~"?(this.advance(),{type:i.NOT_MATCH,value:"!~",line:t,column:r}):{type:i.NOT,value:"!",line:t,column:r};case"<":return a==="="?(this.advance(),{type:i.LE,value:"<=",line:t,column:r}):{type:i.LT,value:"<",line:t,column:r};case">":return a==="="?(this.advance(),{type:i.GE,value:">=",line:t,column:r}):a===">"?(this.advance(),{type:i.APPEND,value:">>",line:t,column:r}):{type:i.GT,value:">",line:t,column:r};case"&":return a==="&"?(this.advance(),{type:i.AND,value:"&&",line:t,column:r}):{type:i.IDENT,value:"&",line:t,column:r};case"|":return a==="|"?(this.advance(),{type:i.OR,value:"||",line:t,column:r}):{type:i.PIPE,value:"|",line:t,column:r};case"~":return{type:i.MATCH,value:"~",line:t,column:r};case"?":return{type:i.QUESTION,value:"?",line:t,column:r};case":":return{type:i.COLON,value:":",line:t,column:r};case",":return{type:i.COMMA,value:",",line:t,column:r};case";":return{type:i.SEMICOLON,value:";",line:t,column:r};case"(":return{type:i.LPAREN,value:"(",line:t,column:r};case")":return{type:i.RPAREN,value:")",line:t,column:r};case"{":return{type:i.LBRACE,value:"{",line:t,column:r};case"}":return{type:i.RBRACE,value:"}",line:t,column:r};case"[":return{type:i.LBRACKET,value:"[",line:t,column:r};case"]":return{type:i.RBRACKET,value:"]",line:t,column:r};case"$":return{type:i.DOLLAR,value:"$",line:t,column:r};default:return{type:i.IDENT,value:n,line:t,column:r}}}isDigit(t){return t>="0"&&t<="9"}isAlpha(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}isAlphaNumeric(t){return this.isDigit(t)||this.isAlpha(t)}};var U=class{tokens=[];pos=0;parse(t){let r=new B(t);return this.tokens=r.tokenize(),this.pos=0,this.parseProgram()}current(){return this.tokens[this.pos]||{type:i.EOF,value:"",line:0,column:0}}advance(){let t=this.current();return this.pos<this.tokens.length&&this.pos++,t}match(...t){return t.includes(this.current().type)}check(t){return this.current().type===t}expect(t,r){if(!this.check(t)){let n=this.current();throw new Error(r||`Expected ${t}, got ${n.type} at line ${n.line}:${n.column}`)}return this.advance()}skipNewlines(){for(;this.check(i.NEWLINE);)this.advance()}skipTerminators(){for(;this.check(i.NEWLINE)||this.check(i.SEMICOLON);)this.advance()}parseProgram(){let t=[],r=[];for(this.skipNewlines();!this.check(i.EOF)&&(this.skipNewlines(),!this.check(i.EOF));)this.check(i.FUNCTION)?t.push(this.parseFunction()):r.push(this.parseRule()),this.skipTerminators();return{functions:t,rules:r}}parseFunction(){this.expect(i.FUNCTION);let t=this.expect(i.IDENT).value;this.expect(i.LPAREN);let r=[];if(!this.check(i.RPAREN))for(r.push(this.expect(i.IDENT).value);this.check(i.COMMA);)this.advance(),r.push(this.expect(i.IDENT).value);this.expect(i.RPAREN),this.skipNewlines();let n=this.parseBlock();return{name:t,params:r,body:n}}parseRule(){let t;if(this.check(i.BEGIN))this.advance(),t={type:"begin"};else if(this.check(i.END))this.advance(),t={type:"end"};else if(this.check(i.LBRACE))t=void 0;else if(this.check(i.REGEX)){let a={type:"regex_pattern",pattern:this.advance().value};if(this.check(i.COMMA)){this.advance();let s;this.check(i.REGEX)?s={type:"regex_pattern",pattern:this.advance().value}:s={type:"expr_pattern",expression:this.parseExpression()},t={type:"range",start:a,end:s}}else t=a}else{let a={type:"expr_pattern",expression:this.parseExpression()};if(this.check(i.COMMA)){this.advance();let s;this.check(i.REGEX)?s={type:"regex_pattern",pattern:this.advance().value}:s={type:"expr_pattern",expression:this.parseExpression()},t={type:"range",start:a,end:s}}else t=a}this.skipNewlines();let r;return this.check(i.LBRACE)?r=this.parseBlock():r={type:"block",statements:[{type:"print",args:[{type:"field",index:{type:"number",value:0}}]}]},{pattern:t,action:r}}parseBlock(){this.expect(i.LBRACE),this.skipNewlines();let t=[];for(;!this.check(i.RBRACE)&&!this.check(i.EOF);)t.push(this.parseStatement()),this.skipTerminators();return this.expect(i.RBRACE),{type:"block",statements:t}}parseStatement(){if(this.check(i.LBRACE))return this.parseBlock();if(this.check(i.IF))return this.parseIf();if(this.check(i.WHILE))return this.parseWhile();if(this.check(i.DO))return this.parseDoWhile();if(this.check(i.FOR))return this.parseFor();if(this.check(i.BREAK))return this.advance(),{type:"break"};if(this.check(i.CONTINUE))return this.advance(),{type:"continue"};if(this.check(i.NEXT))return this.advance(),{type:"next"};if(this.check(i.NEXTFILE))return this.advance(),{type:"nextfile"};if(this.check(i.EXIT)){this.advance();let r;return!this.check(i.NEWLINE)&&!this.check(i.SEMICOLON)&&!this.check(i.RBRACE)&&!this.check(i.EOF)&&(r=this.parseExpression()),{type:"exit",code:r}}if(this.check(i.RETURN)){this.advance();let r;return!this.check(i.NEWLINE)&&!this.check(i.SEMICOLON)&&!this.check(i.RBRACE)&&!this.check(i.EOF)&&(r=this.parseExpression()),{type:"return",value:r}}if(this.check(i.DELETE)){this.advance();let r=this.parsePrimary();if(r.type!=="array_access"&&r.type!=="variable")throw new Error("delete requires array element or array");return{type:"delete",target:r}}return this.check(i.PRINT)?this.parsePrint():this.check(i.PRINTF)?this.parsePrintf():{type:"expr_stmt",expression:this.parseExpression()}}parseIf(){this.expect(i.IF),this.expect(i.LPAREN);let t=this.parseExpression();this.expect(i.RPAREN),this.skipNewlines();let r=this.parseStatement();this.skipTerminators();let n;return this.check(i.ELSE)&&(this.advance(),this.skipNewlines(),n=this.parseStatement()),{type:"if",condition:t,consequent:r,alternate:n}}parseWhile(){this.expect(i.WHILE),this.expect(i.LPAREN);let t=this.parseExpression();this.expect(i.RPAREN),this.skipNewlines();let r=this.parseStatement();return{type:"while",condition:t,body:r}}parseDoWhile(){this.expect(i.DO),this.skipNewlines();let t=this.parseStatement();this.skipNewlines(),this.expect(i.WHILE),this.expect(i.LPAREN);let r=this.parseExpression();return this.expect(i.RPAREN),{type:"do_while",body:t,condition:r}}parseFor(){if(this.expect(i.FOR),this.expect(i.LPAREN),this.check(i.IDENT)){let s=this.advance();if(this.check(i.IN)){this.advance();let o=this.expect(i.IDENT).value;this.expect(i.RPAREN),this.skipNewlines();let l=this.parseStatement();return{type:"for_in",variable:s.value,array:o,body:l}}this.pos--}let t;this.check(i.SEMICOLON)||(t=this.parseExpression()),this.expect(i.SEMICOLON);let r;this.check(i.SEMICOLON)||(r=this.parseExpression()),this.expect(i.SEMICOLON);let n;this.check(i.RPAREN)||(n=this.parseExpression()),this.expect(i.RPAREN),this.skipNewlines();let a=this.parseStatement();return{type:"for",init:t,condition:r,update:n,body:a}}parsePrint(){this.expect(i.PRINT);let t=[];if(this.check(i.NEWLINE)||this.check(i.SEMICOLON)||this.check(i.RBRACE)||this.check(i.PIPE)||this.check(i.GT)||this.check(i.APPEND))t.push({type:"field",index:{type:"number",value:0}});else for(t.push(this.parsePrintArg());this.check(i.COMMA);)this.advance(),t.push(this.parsePrintArg());let r;return this.check(i.GT)?(this.advance(),r={redirect:">",file:this.parsePrimary()}):this.check(i.APPEND)&&(this.advance(),r={redirect:">>",file:this.parsePrimary()}),{type:"print",args:t,output:r}}parsePrintArg(){return this.lookAheadForTernary()?this.parseTernary():this.parsePrintOr()}lookAheadForTernary(){let t=0,r=this.pos;for(;r<this.tokens.length;){let n=this.tokens[r];if(n.type===i.LPAREN&&t++,n.type===i.RPAREN&&t--,n.type===i.QUESTION&&t===0)return!0;if(n.type===i.NEWLINE||n.type===i.SEMICOLON||n.type===i.RBRACE||n.type===i.COMMA||n.type===i.PIPE)return!1;r++}return!1}parsePrintOr(){let t=this.parsePrintAnd();for(;this.check(i.OR);){this.advance();let r=this.parsePrintAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parsePrintAnd(){let t=this.parsePrintIn();for(;this.check(i.AND);){this.advance();let r=this.parsePrintIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parsePrintIn(){let t=this.parsePrintMatch();if(this.check(i.IN)){this.advance();let r=String(this.expect(i.IDENT).value);return{type:"in",key:t,array:r}}return t}parsePrintMatch(){let t=this.parsePrintComparison();for(;this.match(i.MATCH,i.NOT_MATCH);){let r=this.advance().type===i.MATCH?"~":"!~",n=this.parsePrintComparison();t={type:"binary",operator:r,left:t,right:n}}return t}parsePrintComparison(){let t=this.parseConcatenation();for(;this.match(i.LT,i.LE,i.GE,i.EQ,i.NE);){let r=this.advance(),n=this.parseConcatenation();t={type:"binary",operator:{"<":"<","<=":"<=",">=":">=","==":"==","!=":"!="}[r.value],left:t,right:n}}return t}parsePrintf(){this.expect(i.PRINTF);let t=this.parsePrintArg(),r=[];for(;this.check(i.COMMA);)this.advance(),r.push(this.parsePrintArg());let n;return this.check(i.GT)?(this.advance(),n={redirect:">",file:this.parsePrimary()}):this.check(i.APPEND)&&(this.advance(),n={redirect:">>",file:this.parsePrimary()}),{type:"printf",format:t,args:r,output:n}}parseExpression(){return this.parseAssignment()}parseAssignment(){let t=this.parseTernary();if(this.match(i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN)){let r=this.advance(),n=this.parseAssignment();if(t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid assignment target");return{type:"assignment",operator:{"=":"=","+=":"+=","-=":"-=","*=":"*=","/=":"/=","%=":"%=","^=":"^="}[r.value],target:t,value:n}}return t}parseTernary(){let t=this.parseOr();if(this.check(i.QUESTION)){this.advance();let r=this.parseExpression();this.expect(i.COLON);let n=this.parseExpression();t={type:"ternary",condition:t,consequent:r,alternate:n}}return t}parseOr(){let t=this.parseAnd();for(;this.check(i.OR);){this.advance();let r=this.parseAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parseAnd(){let t=this.parseIn();for(;this.check(i.AND);){this.advance();let r=this.parseIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parseIn(){let t=this.parseMatch();if(this.check(i.IN)){this.advance();let r=this.expect(i.IDENT).value;return{type:"in",key:t,array:r}}return t}parseMatch(){let t=this.parseComparison();for(;this.match(i.MATCH,i.NOT_MATCH);){let r=this.advance().type===i.MATCH?"~":"!~",n=this.parseComparison();t={type:"binary",operator:r,left:t,right:n}}return t}parseComparison(){let t=this.parseConcatenation();for(;this.match(i.LT,i.LE,i.GT,i.GE,i.EQ,i.NE);){let r=this.advance(),n=this.parseConcatenation();t={type:"binary",operator:{"<":"<","<=":"<=",">":">",">=":">=","==":"==","!=":"!="}[r.value],left:t,right:n}}return t}parseConcatenation(){let t=this.parseAddSub();for(;this.canStartExpression()&&!this.isComparisonOrHigherOp();){let r=this.parseAddSub();t={type:"binary",operator:" ",left:t,right:r}}return t}canStartExpression(){return this.match(i.NUMBER,i.STRING,i.IDENT,i.DOLLAR,i.LPAREN,i.NOT,i.MINUS,i.PLUS,i.INCREMENT,i.DECREMENT)}isComparisonOrHigherOp(){return this.match(i.LT,i.LE,i.GT,i.GE,i.EQ,i.NE,i.AND,i.OR,i.QUESTION,i.MATCH,i.NOT_MATCH,i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN,i.COMMA,i.SEMICOLON,i.NEWLINE,i.RBRACE,i.RPAREN,i.RBRACKET,i.COLON,i.PIPE,i.APPEND,i.IN)}parseAddSub(){let t=this.parseMulDiv();for(;this.match(i.PLUS,i.MINUS);){let r=this.advance().value,n=this.parseMulDiv();t={type:"binary",operator:r,left:t,right:n}}return t}parseMulDiv(){let t=this.parseUnary();for(;this.match(i.STAR,i.SLASH,i.PERCENT);){let r=this.advance(),n=this.parseUnary();t={type:"binary",operator:{"*":"*","/":"/","%":"%"}[r.value],left:t,right:n}}return t}parseUnary(){if(this.check(i.INCREMENT)){this.advance();let t=this.parseUnary();return t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access"?{type:"unary",operator:"+",operand:{type:"unary",operator:"+",operand:t}}:{type:"pre_increment",operand:t}}if(this.check(i.DECREMENT)){this.advance();let t=this.parseUnary();return t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access"?{type:"unary",operator:"-",operand:{type:"unary",operator:"-",operand:t}}:{type:"pre_decrement",operand:t}}if(this.match(i.NOT,i.MINUS,i.PLUS)){let t=this.advance().value,r=this.parseUnary();return{type:"unary",operator:t,operand:r}}return this.parsePower()}parsePower(){let t=this.parsePostfix();if(this.check(i.CARET)){this.advance();let r=this.parsePower();t={type:"binary",operator:"^",left:t,right:r}}return t}parsePostfix(){let t=this.parsePrimary();if(this.check(i.INCREMENT)){if(this.advance(),t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid increment operand");return{type:"post_increment",operand:t}}if(this.check(i.DECREMENT)){if(this.advance(),t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid decrement operand");return{type:"post_decrement",operand:t}}return t}parsePrimary(){if(this.check(i.NUMBER))return{type:"number",value:this.advance().value};if(this.check(i.STRING))return{type:"string",value:this.advance().value};if(this.check(i.REGEX))return{type:"regex",pattern:this.advance().value};if(this.check(i.DOLLAR))return this.advance(),{type:"field",index:this.parsePrimary()};if(this.check(i.LPAREN)){this.advance();let t=this.parseExpression();if(this.check(i.COMMA)){let r=[t];for(;this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());return this.expect(i.RPAREN),{type:"tuple",elements:r}}return this.expect(i.RPAREN),t}if(this.check(i.GETLINE)){this.advance();let t,r;return this.check(i.IDENT)&&(t=this.advance().value),this.check(i.LT)&&(this.advance(),r=this.parsePrimary()),{type:"getline",variable:t,file:r}}if(this.check(i.IDENT)){let t=this.advance().value;if(this.check(i.LPAREN)){this.advance();let r=[];if(!this.check(i.RPAREN))for(r.push(this.parseExpression());this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());return this.expect(i.RPAREN),{type:"call",name:t,args:r}}if(this.check(i.LBRACKET)){this.advance();let r=[this.parseExpression()];for(;this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());this.expect(i.RBRACKET);let n;if(r.length===1)n=r[0];else{n=r[0];for(let a=1;a<r.length;a++)n={type:"binary",operator:" ",left:{type:"binary",operator:" ",left:n,right:{type:"variable",name:"SUBSEP"}},right:r[a]}}return{type:"array_access",array:t,key:n}}return{type:"variable",name:t}}throw new Error(`Unexpected token: ${this.current().type} at line ${this.current().line}:${this.current().column}`)}};var it={name:"awk",summary:"pattern scanning and text processing language",usage:"awk [OPTIONS] 'PROGRAM' [FILE...]",options:["-F FS use FS as field separator","-v VAR=VAL assign VAL to variable VAR"," --help display this help and exit"]},Wt={name:"awk",async execute(e,t){if(Q(e))return K(it);let r=/\s+/,n=" ",a={},s=0;for(let h=0;h<e.length;h++){let f=e[h];if(f==="-F"&&h+1<e.length)n=se(e[++h]),r=ae(n),s=h+1;else if(f.startsWith("-F"))n=se(f.slice(2)),r=ae(n),s=h+1;else if(f==="-v"&&h+1<e.length){let S=e[++h],G=S.indexOf("=");if(G>0){let k=S.slice(0,G),oe=S.slice(G+1);a[k]=oe}s=h+1}else{if(f.startsWith("--"))return x("awk",f);if(f.startsWith("-")&&f.length>1){let S=f[1];if(S!=="F"&&S!=="v")return x("awk",`-${S}`);s=h+1}else if(!f.startsWith("-")){s=h;break}}}if(s>=e.length)return{stdout:"",stderr:`awk: missing program
14
+ `,exitCode:1};let o=e[s],l=e.slice(s+1),u=new U,m;try{m=u.parse(o)}catch(h){return{stdout:"",stderr:`awk: ${h instanceof Error?h.message:String(h)}
15
+ `,exitCode:1}}let N={readFile:t.fs.readFile.bind(t.fs),writeFile:t.fs.writeFile.bind(t.fs),appendFile:async(h,f)=>{try{let S=await t.fs.readFile(h);await t.fs.writeFile(h,S+f)}catch{await t.fs.writeFile(h,f)}},resolvePath:t.fs.resolvePath.bind(t.fs)},c=V({fieldSep:r,maxIterations:t.limits?.maxAwkIterations,fs:N,cwd:t.cwd});c.FS=n,c.vars={...a},c.ARGC=l.length+1,c.ARGV={0:"awk"};for(let h=0;h<l.length;h++)c.ARGV[String(h+1)]=l[h];let d=new _(c);d.execute(m);try{if(await d.executeBegin(),c.shouldExit)return{stdout:d.getOutput(),stderr:"",exitCode:d.getExitCode()};let h=[];if(l.length>0)for(let f of l)try{let S=t.fs.resolvePath(t.cwd,f),k=(await t.fs.readFile(S)).split(`
16
+ `);k.length>0&&k[k.length-1]===""&&k.pop(),h.push({filename:f,lines:k})}catch{return{stdout:"",stderr:`awk: ${f}: No such file or directory
17
+ `,exitCode:1}}else{let f=t.stdin.split(`
18
+ `);f.length>0&&f[f.length-1]===""&&f.pop(),h.push({filename:"",lines:f})}for(let f of h){for(c.FILENAME=f.filename,c.FNR=0,c.lines=f.lines,c.lineIndex=-1,c.shouldNextFile=!1;c.lineIndex<f.lines.length-1&&(c.lineIndex++,await d.executeLine(f.lines[c.lineIndex]),!(c.shouldExit||c.shouldNextFile)););if(c.shouldExit)break}return c.shouldExit||await d.executeEnd(),{stdout:d.getOutput(),stderr:"",exitCode:d.getExitCode()}}catch(h){let f=h instanceof Error?h.message:String(h);return{stdout:d.getOutput(),stderr:`awk: ${f}
19
+ `,exitCode:2}}}};function se(e){return e.replace(/\\t/g," ").replace(/\\n/g,`
20
+ `).replace(/\\r/g,"\r").replace(/\\\\/g,"\\")}function ae(e){if(e===" ")return/\s+/;if(/[[\](){}.*+?^$|\\]/.test(e))try{return new RegExp(e)}catch{return new RegExp(le(e))}return new RegExp(le(e))}function le(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}export{Wt as awkCommand2};
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import{i as S}from"./chunk-LV662IGP.js";import{a as I,b,c as R}from"./chunk-GTNBSMZR.js";import"./chunk-5KNEBKYN.js";function w(r,e,t){switch(t){case"+":return r+e;case"-":return r-e;case"*":return r*e;case"/":return e!==0?r/e:0;case"%":return e!==0?r%e:0;case"^":case"**":return r**e;default:return 0}}function D(r,e,t){return r.length===0?e.line.length:t.toString(t.evalExpr(r[0])).length}function B(r,e,t){if(r.length<2)return"";let i=t.toString(t.evalExpr(r[0])),n=Math.floor(t.toNumber(t.evalExpr(r[1])))-1;if(r.length>=3){let a=Math.floor(t.toNumber(t.evalExpr(r[2])));return i.substr(Math.max(0,n),a)}return i.substr(Math.max(0,n))}function U(r,e,t){if(r.length<2)return 0;let i=t.toString(t.evalExpr(r[0])),n=t.toString(t.evalExpr(r[1])),a=i.indexOf(n);return a===-1?0:a+1}function H(r,e,t){if(r.length<2)return 0;let i=t.toString(t.evalExpr(r[0])),n=r[1];if(n.type!=="variable")return 0;let a=n.name,h=e.FS;if(r.length>=3){let u=t.toString(t.evalExpr(r[2]));h=u===" "?/\s+/:u}else e.FS===" "&&(h=/\s+/);let c=i.split(h);e.arrays[a]={};for(let u=0;u<c.length;u++)e.arrays[a][String(u+1)]=c[u];return c.length}function W(r,e,t){if(r.length<2)return 0;let i;r[0].type==="regex"?i=r[0].pattern:(i=t.toString(t.evalExpr(r[0])),i.startsWith("/")&&i.endsWith("/")&&(i=i.slice(1,-1)));let n=t.toString(t.evalExpr(r[1])),a="$0";if(r.length>=3){let c=r[2];c.type==="variable"?a=c.name:c.type==="field"&&(a=`$${Math.floor(t.toNumber(t.evalExpr(c.index)))}`)}let h;if(a==="$0")h=e.line;else if(a.startsWith("$")){let c=parseInt(a.slice(1),10)-1;h=e.fields[c]||""}else h=t.toString(e.vars[a]??"");try{let c=new RegExp(i),u=h.replace(c,L(n)),x=u!==h?1:0;if(a==="$0")e.line=u,e.fields=e.FS===" "?u.trim().split(/\s+/).filter(Boolean):u.split(e.fieldSep),e.NF=e.fields.length;else if(a.startsWith("$")){let p=parseInt(a.slice(1),10)-1;for(;e.fields.length<=p;)e.fields.push("");e.fields[p]=u,e.NF=e.fields.length,e.line=e.fields.join(e.OFS)}else e.vars[a]=u;return x}catch{return 0}}function $(r,e,t){if(r.length<2)return 0;let i;r[0].type==="regex"?i=r[0].pattern:(i=t.toString(t.evalExpr(r[0])),i.startsWith("/")&&i.endsWith("/")&&(i=i.slice(1,-1)));let n=t.toString(t.evalExpr(r[1])),a="$0";if(r.length>=3){let c=r[2];c.type==="variable"?a=c.name:c.type==="field"&&(a=`$${Math.floor(t.toNumber(t.evalExpr(c.index)))}`)}let h;if(a==="$0")h=e.line;else if(a.startsWith("$")){let c=parseInt(a.slice(1),10)-1;h=e.fields[c]||""}else h=t.toString(e.vars[a]??"");try{let c=new RegExp(i,"g"),u=h.match(c),x=u?u.length:0,p=h.replace(c,L(n));if(a==="$0")e.line=p,e.fields=e.FS===" "?p.trim().split(/\s+/).filter(Boolean):p.split(e.fieldSep),e.NF=e.fields.length;else if(a.startsWith("$")){let o=parseInt(a.slice(1),10)-1;for(;e.fields.length<=o;)e.fields.push("");e.fields[o]=p,e.NF=e.fields.length,e.line=e.fields.join(e.OFS)}else e.vars[a]=p;return x}catch{return 0}}function L(r){return e=>{let t="",i=0;for(;i<r.length;)if(r[i]==="\\"&&i+1<r.length){let n=r[i+1];n==="&"?(t+="&",i+=2):n==="\\"?(t+="\\",i+=2):(t+=r[i+1],i+=2)}else r[i]==="&"?(t+=e,i++):(t+=r[i],i++);return t}}function V(r,e,t){if(r.length<2)return e.RSTART=0,e.RLENGTH=-1,0;let i=t.toString(t.evalExpr(r[0])),n;r[1].type==="regex"?n=r[1].pattern:(n=t.toString(t.evalExpr(r[1])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));try{let h=new RegExp(n).exec(i);if(h)return e.RSTART=h.index+1,e.RLENGTH=h[0].length,e.RSTART}catch{}return e.RSTART=0,e.RLENGTH=-1,0}function X(r,e,t){if(r.length<3)return"";let i;r[0].type==="regex"?i=r[0].pattern:(i=t.toString(t.evalExpr(r[0])),i.startsWith("/")&&i.endsWith("/")&&(i=i.slice(1,-1)));let n=t.toString(t.evalExpr(r[1])),a=t.toString(t.evalExpr(r[2])),h=r.length>=4?t.toString(t.evalExpr(r[3])):e.line;try{let c=a.toLowerCase()==="g",u=c?0:parseInt(a,10)||1;if(c){let x=new RegExp(i,"g");return h.replace(x,(p,...o)=>C(n,p,o.slice(0,-2)))}else{let x=0,p=new RegExp(i,"g");return h.replace(p,(o,...f)=>(x++,x===u?C(n,o,f.slice(0,-2)):o))}}catch{return h}}function C(r,e,t){let i="",n=0;for(;n<r.length;)if(r[n]==="\\"&&n+1<r.length){let a=r[n+1];if(a==="&")i+="&",n+=2;else if(a==="0")i+=e,n+=2;else if(a>="1"&&a<="9"){let h=parseInt(a,10)-1;i+=t[h]||"",n+=2}else a==="n"?(i+=`
3
+ `,n+=2):a==="t"?(i+=" ",n+=2):(i+=a,n+=2)}else r[n]==="&"?(i+=e,n++):(i+=r[n],n++);return i}function K(r,e,t){return r.length===0?"":t.toString(t.evalExpr(r[0])).toLowerCase()}function Q(r,e,t){return r.length===0?"":t.toString(t.evalExpr(r[0])).toUpperCase()}function j(r,e,t){if(r.length===0)return"";let i=t.toString(t.evalExpr(r[0])),n=r.slice(1).map(a=>t.evalExpr(a));return A(i,n)}function q(r,e,t){return r.length===0?0:Math.floor(t.toNumber(t.evalExpr(r[0])))}function z(r,e,t){return r.length===0?0:Math.sqrt(t.toNumber(t.evalExpr(r[0])))}function Z(r,e,t){return r.length===0?0:Math.sin(t.toNumber(t.evalExpr(r[0])))}function Y(r,e,t){return r.length===0?0:Math.cos(t.toNumber(t.evalExpr(r[0])))}function J(r,e,t){let i=r.length>0?t.toNumber(t.evalExpr(r[0])):0,n=r.length>1?t.toNumber(t.evalExpr(r[1])):0;return Math.atan2(i,n)}function ee(r,e,t){return r.length===0?0:Math.log(t.toNumber(t.evalExpr(r[0])))}function te(r,e,t){return r.length===0?1:Math.exp(t.toNumber(t.evalExpr(r[0])))}function se(r,e,t){return e.random?e.random():Math.random()}function ie(r,e,t){let i=r.length>0?t.toNumber(t.evalExpr(r[0])):Date.now();return e.vars._srand_seed=i,i}function y(r,e){return()=>{throw new Error(`${r}() is not supported - ${e}`)}}function k(r){return()=>{throw new Error(`function '${r}()' is not implemented`)}}function A(r,e){let t=0,i="",n=0;for(;n<r.length;)if(r[n]==="%"&&n+1<r.length){let a=n+1,h="",c="",u="";for(;a<r.length&&/[-+ #0]/.test(r[a]);)h+=r[a++];for(;a<r.length&&/\d/.test(r[a]);)c+=r[a++];if(r[a]===".")for(a++;a<r.length&&/\d/.test(r[a]);)u+=r[a++];let x=r[a],p=e[t];switch(x){case"s":{let o=p!==void 0?String(p):"";if(u&&(o=o.substring(0,parseInt(u,10))),c){let f=parseInt(c,10);h.includes("-")?o=o.padEnd(f):o=o.padStart(f)}i+=o,t++;break}case"d":case"i":{let o=p!==void 0?Math.floor(Number(p)):0;Number.isNaN(o)&&(o=0);let f=String(o);if(c){let l=parseInt(c,10);if(h.includes("-"))f=f.padEnd(l);else if(h.includes("0")&&!h.includes("-")){let E=o<0?"-":"";f=E+Math.abs(o).toString().padStart(l-E.length,"0")}else f=f.padStart(l)}i+=f,t++;break}case"f":{let o=p!==void 0?Number(p):0;Number.isNaN(o)&&(o=0);let f=u?parseInt(u,10):6,l=o.toFixed(f);if(c){let E=parseInt(c,10);h.includes("-")?l=l.padEnd(E):l=l.padStart(E)}i+=l,t++;break}case"e":case"E":{let o=p!==void 0?Number(p):0;Number.isNaN(o)&&(o=0);let f=u?parseInt(u,10):6,l=o.toExponential(f);if(x==="E"&&(l=l.toUpperCase()),c){let E=parseInt(c,10);h.includes("-")?l=l.padEnd(E):l=l.padStart(E)}i+=l,t++;break}case"g":case"G":{let o=p!==void 0?Number(p):0;Number.isNaN(o)&&(o=0);let f=u?parseInt(u,10):6,l=o!==0?Math.floor(Math.log10(Math.abs(o))):0,E;if(o===0?E="0":l<-4||l>=f?(E=o.toExponential(f-1),x==="G"&&(E=E.toUpperCase())):E=o.toPrecision(f),E=E.replace(/\.?0+$/,"").replace(/\.?0+e/,"e"),c){let d=parseInt(c,10);h.includes("-")?E=E.padEnd(d):E=E.padStart(d)}i+=E,t++;break}case"x":case"X":{let o=p!==void 0?Math.floor(Number(p)):0;Number.isNaN(o)&&(o=0);let f=Math.abs(o).toString(16);if(x==="X"&&(f=f.toUpperCase()),c){let l=parseInt(c,10);h.includes("0")?f=f.padStart(l,"0"):h.includes("-")?f=f.padEnd(l):f=f.padStart(l)}i+=o<0?`-${f}`:f,t++;break}case"o":{let o=p!==void 0?Math.floor(Number(p)):0;Number.isNaN(o)&&(o=0);let f=Math.abs(o).toString(8);if(c){let l=parseInt(c,10);h.includes("0")?f=f.padStart(l,"0"):h.includes("-")?f=f.padEnd(l):f=f.padStart(l)}i+=o<0?`-${f}`:f,t++;break}case"c":{typeof p=="number"?i+=String.fromCharCode(p):i+=String(p??"").charAt(0)||"",t++;break}case"%":i+="%";break;default:i+=r.substring(n,a+1)}n=a+1}else if(r[n]==="\\"&&n+1<r.length){let a=r[n+1];switch(a){case"n":i+=`
4
+ `;break;case"t":i+=" ";break;case"r":i+="\r";break;case"\\":i+="\\";break;default:i+=a}n+=2}else i+=r[n++];return i}var O={length:D,substr:B,index:U,split:H,sub:W,gsub:$,match:V,gensub:X,tolower:K,toupper:Q,sprintf:j,int:q,sqrt:z,sin:Z,cos:Y,atan2:J,log:ee,exp:te,rand:se,srand:ie,system:y("system","shell execution not allowed in sandboxed environment"),close:y("close","file operations not allowed"),fflush:y("fflush","file operations not allowed"),systime:k("systime"),mktime:k("mktime"),strftime:k("strftime")};var re=1e4,ne=1e3;function M(r=/\s+/,e=re){return{FS:" ",OFS:" ",ORS:`
5
+ `,NR:0,NF:0,FNR:0,FILENAME:"",RSTART:0,RLENGTH:-1,SUBSEP:"",fields:[],line:"",vars:{},arrays:{},functions:new Map,fieldSep:r,maxIterations:e,maxRecursionDepth:ne,currentRecursionDepth:0,exitCode:0,shouldExit:!1,shouldNext:!1,loopBreak:!1,loopContinue:!1,hasReturn:!1,output:""}}var m=class{ctx;program=null;rangeStates=[];constructor(e){this.ctx=e}execute(e){this.program=e,this.ctx.output="";for(let t of e.functions)this.ctx.functions.set(t.name,t);return this.rangeStates=e.rules.map(()=>!1),this.ctx.output}executeBegin(){if(this.program){for(let e of this.program.rules)if(e.pattern?.type==="begin"&&(this.executeBlock(e.action),this.ctx.shouldExit))break}}executeLine(e){if(!(!this.program||this.ctx.shouldExit)){this.ctx.line=e,this.ctx.NR++,this.ctx.FNR++,this.ctx.fields=this.splitFields(e),this.ctx.NF=this.ctx.fields.length,this.ctx.shouldNext=!1;for(let t=0;t<this.program.rules.length&&!(this.ctx.shouldExit||this.ctx.shouldNext);t++){let i=this.program.rules[t];i.pattern?.type==="begin"||i.pattern?.type==="end"||this.matchesRule(i,t)&&this.executeBlock(i.action)}}}executeEnd(){if(!(!this.program||this.ctx.shouldExit)){for(let e of this.program.rules)if(e.pattern?.type==="end"&&(this.executeBlock(e.action),this.ctx.shouldExit))break}}getOutput(){return this.ctx.output}getExitCode(){return this.ctx.exitCode}splitFields(e){return this.ctx.FS===" "?e.trim().split(/\s+/).filter(Boolean):e.split(this.ctx.fieldSep)}matchesRule(e,t){let i=e.pattern;if(!i)return!0;switch(i.type){case"begin":case"end":return!1;case"regex_pattern":return this.matchRegex(i.pattern,this.ctx.line);case"expr_pattern":return this.isTruthy(this.evalExpr(i.expression));case"range":{let n=this.matchPattern(i.start),a=this.matchPattern(i.end);return this.rangeStates[t]?(a&&(this.rangeStates[t]=!1),!0):n?(this.rangeStates[t]=!0,a&&(this.rangeStates[t]=!1),!0):!1}default:return!1}}matchPattern(e){switch(e.type){case"regex_pattern":return this.matchRegex(e.pattern,this.ctx.line);case"expr_pattern":return this.isTruthy(this.evalExpr(e.expression));default:return!1}}matchRegex(e,t){try{return new RegExp(e).test(t)}catch{return!1}}executeBlock(e){for(let t of e.statements)if(this.executeStmt(t),this.ctx.shouldExit||this.ctx.shouldNext||this.ctx.loopBreak||this.ctx.loopContinue||this.ctx.hasReturn)break}executeStmt(e){switch(e.type){case"block":this.executeBlock(e);break;case"expr_stmt":this.evalExpr(e.expression);break;case"print":this.executePrint(e.args,e.output);break;case"printf":this.executePrintf(e.format,e.args,e.output);break;case"if":this.executeIf(e);break;case"while":this.executeWhile(e);break;case"do_while":this.executeDoWhile(e);break;case"for":this.executeFor(e);break;case"for_in":this.executeForIn(e);break;case"break":this.ctx.loopBreak=!0;break;case"continue":this.ctx.loopContinue=!0;break;case"next":this.ctx.shouldNext=!0;break;case"exit":this.ctx.shouldExit=!0,this.ctx.exitCode=e.code?Math.floor(this.toNumber(this.evalExpr(e.code))):0;break;case"return":this.ctx.hasReturn=!0,this.ctx.returnValue=e.value?this.evalExpr(e.value):"";break;case"delete":this.executeDelete(e.target);break}}executePrint(e,t){let n=e.map(a=>this.toString(this.evalExpr(a))).join(this.ctx.OFS)+this.ctx.ORS;t?this.ctx.output+=n:this.ctx.output+=n}executePrintf(e,t,i){let n=this.toString(this.evalExpr(e)),a=t.map(c=>this.evalExpr(c)),h=A(n,a);i?this.ctx.output+=h:this.ctx.output+=h}executeIf(e){this.isTruthy(this.evalExpr(e.condition))?this.executeStmt(e.consequent):e.alternate&&this.executeStmt(e.alternate)}executeWhile(e){let t=0;for(;this.isTruthy(this.evalExpr(e.condition));){if(t++,t>this.ctx.maxIterations)throw new S(`awk: while loop exceeded maximum iterations (${this.ctx.maxIterations})`,"iterations",this.ctx.output);if(this.ctx.loopContinue=!1,this.executeStmt(e.body),this.ctx.loopBreak){this.ctx.loopBreak=!1;break}if(this.ctx.shouldExit||this.ctx.shouldNext||this.ctx.hasReturn)break}}executeDoWhile(e){let t=0;do{if(t++,t>this.ctx.maxIterations)throw new S(`awk: do-while loop exceeded maximum iterations (${this.ctx.maxIterations})`,"iterations",this.ctx.output);if(this.ctx.loopContinue=!1,this.executeStmt(e.body),this.ctx.loopBreak){this.ctx.loopBreak=!1;break}if(this.ctx.shouldExit||this.ctx.shouldNext||this.ctx.hasReturn)break}while(this.isTruthy(this.evalExpr(e.condition)))}executeFor(e){e.init&&this.evalExpr(e.init);let t=0;for(;!e.condition||this.isTruthy(this.evalExpr(e.condition));){if(t++,t>this.ctx.maxIterations)throw new S(`awk: for loop exceeded maximum iterations (${this.ctx.maxIterations})`,"iterations",this.ctx.output);if(this.ctx.loopContinue=!1,this.executeStmt(e.body),this.ctx.loopBreak){this.ctx.loopBreak=!1;break}if(this.ctx.shouldExit||this.ctx.shouldNext||this.ctx.hasReturn)break;e.update&&this.evalExpr(e.update)}}executeForIn(e){let t=this.ctx.arrays[e.array];if(t)for(let i of Object.keys(t)){if(this.ctx.vars[e.variable]=i,this.ctx.loopContinue=!1,this.executeStmt(e.body),this.ctx.loopBreak){this.ctx.loopBreak=!1;break}if(this.ctx.shouldExit||this.ctx.shouldNext||this.ctx.hasReturn)break}}executeDelete(e){if(e.type==="array_access"){let t=this.ctx.arrays[e.array];if(t){let i=this.toString(this.evalExpr(e.key));delete t[i]}}else e.type==="variable"&&delete this.ctx.arrays[e.name]}evalExpr(e){switch(e.type){case"number":return e.value;case"string":return e.value;case"regex":return this.matchRegex(e.pattern,this.ctx.line)?1:0;case"field":return this.getField(e);case"variable":return this.getVariable(e.name);case"array_access":return this.getArrayElement(e.array,e.key);case"binary":return this.evalBinaryOp(e);case"unary":return this.evalUnaryOp(e);case"ternary":return this.isTruthy(this.evalExpr(e.condition))?this.evalExpr(e.consequent):this.evalExpr(e.alternate);case"call":return this.evalFunctionCall(e.name,e.args);case"assignment":return this.evalAssignment(e);case"pre_increment":return this.evalPreIncrement(e.operand);case"pre_decrement":return this.evalPreDecrement(e.operand);case"post_increment":return this.evalPostIncrement(e.operand);case"post_decrement":return this.evalPostDecrement(e.operand);case"in":return this.evalInExpr(e.key,e.array);case"getline":return this.evalGetline(e.variable,e.file);case"tuple":if(e.elements.length===0)return"";for(let t=0;t<e.elements.length-1;t++)this.evalExpr(e.elements[t]);return this.evalExpr(e.elements[e.elements.length-1]);default:return""}}getField(e){let t=Math.floor(this.toNumber(this.evalExpr(e.index)));return t===0?this.ctx.line:t<0||t>this.ctx.fields.length?"":this.ctx.fields[t-1]??""}setField(e,t){if(e===0)this.ctx.line=this.toString(t),this.ctx.fields=this.splitFields(this.ctx.line),this.ctx.NF=this.ctx.fields.length;else if(e>0){for(;this.ctx.fields.length<e;)this.ctx.fields.push("");this.ctx.fields[e-1]=this.toString(t),this.ctx.NF=this.ctx.fields.length,this.ctx.line=this.ctx.fields.join(this.ctx.OFS)}}getVariable(e){switch(e){case"FS":return this.ctx.FS;case"OFS":return this.ctx.OFS;case"ORS":return this.ctx.ORS;case"NR":return this.ctx.NR;case"NF":return this.ctx.NF;case"FNR":return this.ctx.FNR;case"FILENAME":return this.ctx.FILENAME;case"RSTART":return this.ctx.RSTART;case"RLENGTH":return this.ctx.RLENGTH;case"SUBSEP":return this.ctx.SUBSEP}return this.ctx.vars[e]??""}setVariable(e,t){switch(e){case"FS":if(this.ctx.FS=this.toString(t),this.ctx.FS===" ")this.ctx.fieldSep=/\s+/;else try{this.ctx.fieldSep=new RegExp(this.ctx.FS)}catch{this.ctx.fieldSep=new RegExp(this.ctx.FS.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))}return;case"OFS":this.ctx.OFS=this.toString(t);return;case"ORS":this.ctx.ORS=this.toString(t);return;case"NR":this.ctx.NR=Math.floor(this.toNumber(t));return;case"NF":{let i=Math.floor(this.toNumber(t));if(i<this.ctx.NF)this.ctx.fields=this.ctx.fields.slice(0,i),this.ctx.line=this.ctx.fields.join(this.ctx.OFS);else if(i>this.ctx.NF){for(;this.ctx.fields.length<i;)this.ctx.fields.push("");this.ctx.line=this.ctx.fields.join(this.ctx.OFS)}this.ctx.NF=i;return}case"FNR":this.ctx.FNR=Math.floor(this.toNumber(t));return;case"FILENAME":this.ctx.FILENAME=this.toString(t);return;case"RSTART":this.ctx.RSTART=Math.floor(this.toNumber(t));return;case"RLENGTH":this.ctx.RLENGTH=Math.floor(this.toNumber(t));return;case"SUBSEP":this.ctx.SUBSEP=this.toString(t);return}this.ctx.vars[e]=t}getArrayElement(e,t){let i=this.toString(this.evalExpr(t));return this.ctx.arrays[e]?.[i]??""}setArrayElement(e,t,i){this.ctx.arrays[e]||(this.ctx.arrays[e]={}),this.ctx.arrays[e][t]=i}evalBinaryOp(e){let t=e.operator;if(t==="||")return this.isTruthy(this.evalExpr(e.left))||this.isTruthy(this.evalExpr(e.right))?1:0;if(t==="&&")return this.isTruthy(this.evalExpr(e.left))&&this.isTruthy(this.evalExpr(e.right))?1:0;if(t==="~"){let c=this.evalExpr(e.left),u=e.right.type==="regex"?e.right.pattern:this.toString(this.evalExpr(e.right));try{return new RegExp(u).test(this.toString(c))?1:0}catch{return 0}}if(t==="!~"){let c=this.evalExpr(e.left),u=e.right.type==="regex"?e.right.pattern:this.toString(this.evalExpr(e.right));try{return new RegExp(u).test(this.toString(c))?0:1}catch{return 1}}let i=this.evalExpr(e.left),n=this.evalExpr(e.right);if(t===" ")return this.toString(i)+this.toString(n);if(this.isComparisonOp(t))return this.evalComparison(i,n,t);let a=this.toNumber(i),h=this.toNumber(n);return w(a,h,t)}isComparisonOp(e){return["<","<=",">",">=","==","!="].includes(e)}evalComparison(e,t,i){let n=this.looksLikeNumber(e),a=this.looksLikeNumber(t);if(n&&a){let u=this.toNumber(e),x=this.toNumber(t);switch(i){case"<":return u<x?1:0;case"<=":return u<=x?1:0;case">":return u>x?1:0;case">=":return u>=x?1:0;case"==":return u===x?1:0;case"!=":return u!==x?1:0}}let h=this.toString(e),c=this.toString(t);switch(i){case"<":return h<c?1:0;case"<=":return h<=c?1:0;case">":return h>c?1:0;case">=":return h>=c?1:0;case"==":return h===c?1:0;case"!=":return h!==c?1:0}return 0}looksLikeNumber(e){if(typeof e=="number")return!0;let t=String(e).trim();return t===""?!1:!Number.isNaN(Number(t))}evalUnaryOp(e){let t=this.evalExpr(e.operand);switch(e.operator){case"!":return this.isTruthy(t)?0:1;case"-":return-this.toNumber(t);case"+":return+this.toNumber(t);default:return t}}evalFunctionCall(e,t){let i=O[e];if(i)return i(t,this.ctx,this);let n=this.ctx.functions.get(e);return n?this.callUserFunction(n,t):""}callUserFunction(e,t){if(this.ctx.currentRecursionDepth++,this.ctx.currentRecursionDepth>this.ctx.maxRecursionDepth)throw this.ctx.currentRecursionDepth--,new S(`awk: recursion depth exceeded maximum (${this.ctx.maxRecursionDepth})`,"recursion",this.ctx.output);let i={...this.ctx.vars};for(let a=0;a<e.params.length;a++){let h=e.params[a],c=a<t.length?this.evalExpr(t[a]):"";this.ctx.vars[h]=c}this.ctx.hasReturn=!1,this.ctx.returnValue=void 0,this.executeBlock(e.body);let n=this.ctx.returnValue??"";return this.ctx.vars=i,this.ctx.hasReturn=!1,this.ctx.returnValue=void 0,this.ctx.currentRecursionDepth--,n}evalAssignment(e){let t=this.evalExpr(e.value),i=e.target,n=e.operator,a;if(n==="=")a=t;else{let h;i.type==="field"?h=this.getField(i):i.type==="variable"?h=this.getVariable(i.name):h=this.getArrayElement(i.array,i.key);let c=this.toNumber(h),u=this.toNumber(t);switch(n){case"+=":a=c+u;break;case"-=":a=c-u;break;case"*=":a=c*u;break;case"/=":a=u!==0?c/u:0;break;case"%=":a=u!==0?c%u:0;break;case"^=":a=c**u;break;default:a=t}}if(i.type==="field"){let h=Math.floor(this.toNumber(this.evalExpr(i.index)));this.setField(h,a)}else if(i.type==="variable")this.setVariable(i.name,a);else{let h=this.toString(this.evalExpr(i.key));this.setArrayElement(i.array,h,a)}return a}evalPreIncrement(e){let t;if(e.type==="field"){t=this.toNumber(this.getField(e))+1;let i=Math.floor(this.toNumber(this.evalExpr(e.index)));this.setField(i,t)}else if(e.type==="variable")t=this.toNumber(this.getVariable(e.name))+1,this.setVariable(e.name,t);else{let i=this.toString(this.evalExpr(e.key));t=this.toNumber(this.ctx.arrays[e.array]?.[i]??0)+1,this.setArrayElement(e.array,i,t)}return t}evalPreDecrement(e){let t;if(e.type==="field"){t=this.toNumber(this.getField(e))-1;let i=Math.floor(this.toNumber(this.evalExpr(e.index)));this.setField(i,t)}else if(e.type==="variable")t=this.toNumber(this.getVariable(e.name))-1,this.setVariable(e.name,t);else{let i=this.toString(this.evalExpr(e.key));t=this.toNumber(this.ctx.arrays[e.array]?.[i]??0)-1,this.setArrayElement(e.array,i,t)}return t}evalPostIncrement(e){let t;if(e.type==="field"){t=this.toNumber(this.getField(e));let i=Math.floor(this.toNumber(this.evalExpr(e.index)));this.setField(i,t+1)}else if(e.type==="variable")t=this.toNumber(this.getVariable(e.name)),this.setVariable(e.name,t+1);else{let i=this.toString(this.evalExpr(e.key));t=this.toNumber(this.ctx.arrays[e.array]?.[i]??0),this.setArrayElement(e.array,i,t+1)}return t}evalPostDecrement(e){let t;if(e.type==="field"){t=this.toNumber(this.getField(e));let i=Math.floor(this.toNumber(this.evalExpr(e.index)));this.setField(i,t-1)}else if(e.type==="variable")t=this.toNumber(this.getVariable(e.name)),this.setVariable(e.name,t-1);else{let i=this.toString(this.evalExpr(e.key));t=this.toNumber(this.ctx.arrays[e.array]?.[i]??0),this.setArrayElement(e.array,i,t-1)}return t}evalInExpr(e,t){let i;return e.type==="tuple"?i=e.elements.map(n=>this.toString(this.evalExpr(n))).join(this.ctx.SUBSEP):i=this.toString(this.evalExpr(e)),this.ctx.arrays[t]?.[i]!==void 0?1:0}evalGetline(e,t){if(!this.ctx.lines||this.ctx.lineIndex===void 0)return-1;let i=this.ctx.lineIndex+1;if(i>=this.ctx.lines.length)return 0;let n=this.ctx.lines[i];return e?this.setVariable(e,n):(this.ctx.line=n,this.ctx.fields=this.splitFields(n),this.ctx.NF=this.ctx.fields.length),this.ctx.NR++,this.ctx.lineIndex=i,1}isTruthy(e){return typeof e=="number"?e!==0:e!==""}toNumber(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}toString(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}};var s;(function(r){r.NUMBER="NUMBER",r.STRING="STRING",r.REGEX="REGEX",r.IDENT="IDENT",r.BEGIN="BEGIN",r.END="END",r.IF="IF",r.ELSE="ELSE",r.WHILE="WHILE",r.DO="DO",r.FOR="FOR",r.IN="IN",r.BREAK="BREAK",r.CONTINUE="CONTINUE",r.NEXT="NEXT",r.EXIT="EXIT",r.RETURN="RETURN",r.DELETE="DELETE",r.FUNCTION="FUNCTION",r.PRINT="PRINT",r.PRINTF="PRINTF",r.GETLINE="GETLINE",r.PLUS="PLUS",r.MINUS="MINUS",r.STAR="STAR",r.SLASH="SLASH",r.PERCENT="PERCENT",r.CARET="CARET",r.EQ="EQ",r.NE="NE",r.LT="LT",r.GT="GT",r.LE="LE",r.GE="GE",r.MATCH="MATCH",r.NOT_MATCH="NOT_MATCH",r.AND="AND",r.OR="OR",r.NOT="NOT",r.ASSIGN="ASSIGN",r.PLUS_ASSIGN="PLUS_ASSIGN",r.MINUS_ASSIGN="MINUS_ASSIGN",r.STAR_ASSIGN="STAR_ASSIGN",r.SLASH_ASSIGN="SLASH_ASSIGN",r.PERCENT_ASSIGN="PERCENT_ASSIGN",r.CARET_ASSIGN="CARET_ASSIGN",r.INCREMENT="INCREMENT",r.DECREMENT="DECREMENT",r.QUESTION="QUESTION",r.COLON="COLON",r.COMMA="COMMA",r.SEMICOLON="SEMICOLON",r.NEWLINE="NEWLINE",r.LPAREN="LPAREN",r.RPAREN="RPAREN",r.LBRACE="LBRACE",r.RBRACE="RBRACE",r.LBRACKET="LBRACKET",r.RBRACKET="RBRACKET",r.DOLLAR="DOLLAR",r.APPEND="APPEND",r.PIPE="PIPE",r.EOF="EOF"})(s||(s={}));var ae={BEGIN:s.BEGIN,END:s.END,if:s.IF,else:s.ELSE,while:s.WHILE,do:s.DO,for:s.FOR,in:s.IN,break:s.BREAK,continue:s.CONTINUE,next:s.NEXT,exit:s.EXIT,return:s.RETURN,delete:s.DELETE,function:s.FUNCTION,print:s.PRINT,printf:s.PRINTF,getline:s.GETLINE};function ce(r){return r.replace(/\[\[:space:\]\]/g,"[ \\t\\n\\r\\f\\v]").replace(/\[\[:blank:\]\]/g,"[ \\t]").replace(/\[\[:alpha:\]\]/g,"[a-zA-Z]").replace(/\[\[:digit:\]\]/g,"[0-9]").replace(/\[\[:alnum:\]\]/g,"[a-zA-Z0-9]").replace(/\[\[:upper:\]\]/g,"[A-Z]").replace(/\[\[:lower:\]\]/g,"[a-z]").replace(/\[\[:punct:\]\]/g,"[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~]").replace(/\[\[:xdigit:\]\]/g,"[0-9A-Fa-f]").replace(/\[\[:graph:\]\]/g,"[!-~]").replace(/\[\[:print:\]\]/g,"[ -~]").replace(/\[\[:cntrl:\]\]/g,"[\\x00-\\x1f\\x7f]")}var v=class{input;pos=0;line=1;column=1;lastTokenType=null;constructor(e){this.input=e}tokenize(){let e=[];for(;this.pos<this.input.length;){let t=this.nextToken();t&&(e.push(t),this.lastTokenType=t.type)}return e.push(this.makeToken(s.EOF,"")),e}makeToken(e,t){return{type:e,value:t,line:this.line,column:this.column}}peek(e=0){return this.input[this.pos+e]||""}advance(){let e=this.input[this.pos++]||"";return e===`
6
+ `?(this.line++,this.column=1):this.column++,e}skipWhitespace(){for(;this.pos<this.input.length;){let e=this.peek();if(e===" "||e===" "||e==="\r")this.advance();else if(e==="\\")if(this.peek(1)===`
7
+ `)this.advance(),this.advance();else break;else if(e==="#")for(;this.pos<this.input.length&&this.peek()!==`
8
+ `;)this.advance();else break}}nextToken(){if(this.skipWhitespace(),this.pos>=this.input.length)return null;let e=this.line,t=this.column,i=this.peek();return i===`
9
+ `?(this.advance(),{type:s.NEWLINE,value:`
10
+ `,line:e,column:t}):i==='"'?this.readString():i==="/"&&this.canBeRegex()?this.readRegex():this.isDigit(i)||i==="."&&this.isDigit(this.peek(1))?this.readNumber():this.isAlpha(i)||i==="_"?this.readIdentifier():this.readOperator()}canBeRegex(){return new Set([null,s.NEWLINE,s.SEMICOLON,s.LBRACE,s.RBRACE,s.LPAREN,s.LBRACKET,s.COMMA,s.ASSIGN,s.PLUS_ASSIGN,s.MINUS_ASSIGN,s.STAR_ASSIGN,s.SLASH_ASSIGN,s.PERCENT_ASSIGN,s.CARET_ASSIGN,s.AND,s.OR,s.NOT,s.MATCH,s.NOT_MATCH,s.QUESTION,s.COLON,s.LT,s.GT,s.LE,s.GE,s.EQ,s.NE,s.PLUS,s.MINUS,s.STAR,s.PERCENT,s.CARET,s.PRINT,s.PRINTF,s.IF,s.WHILE,s.DO,s.FOR,s.RETURN]).has(this.lastTokenType)}readString(){let e=this.line,t=this.column;this.advance();let i="";for(;this.pos<this.input.length&&this.peek()!=='"';)if(this.peek()==="\\"){this.advance();let n=this.advance();switch(n){case"n":i+=`
11
+ `;break;case"t":i+=" ";break;case"r":i+="\r";break;case"\\":i+="\\";break;case'"':i+='"';break;case"/":i+="/";break;default:i+=n}}else i+=this.advance();return this.peek()==='"'&&this.advance(),{type:s.STRING,value:i,line:e,column:t}}readRegex(){let e=this.line,t=this.column;this.advance();let i="";for(;this.pos<this.input.length&&this.peek()!=="/";)if(this.peek()==="\\")i+=this.advance(),this.pos<this.input.length&&(i+=this.advance());else{if(this.peek()===`
12
+ `)break;i+=this.advance()}return this.peek()==="/"&&this.advance(),i=ce(i),{type:s.REGEX,value:i,line:e,column:t}}readNumber(){let e=this.line,t=this.column,i="";for(;this.isDigit(this.peek());)i+=this.advance();if(this.peek()==="."&&this.isDigit(this.peek(1)))for(i+=this.advance();this.isDigit(this.peek());)i+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(i+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(i+=this.advance());this.isDigit(this.peek());)i+=this.advance();return{type:s.NUMBER,value:parseFloat(i),line:e,column:t}}readIdentifier(){let e=this.line,t=this.column,i="";for(;this.isAlphaNumeric(this.peek())||this.peek()==="_";)i+=this.advance();let n=ae[i];return n?{type:n,value:i,line:e,column:t}:{type:s.IDENT,value:i,line:e,column:t}}readOperator(){let e=this.line,t=this.column,i=this.advance(),n=this.peek();switch(i){case"+":return n==="+"?(this.advance(),{type:s.INCREMENT,value:"++",line:e,column:t}):n==="="?(this.advance(),{type:s.PLUS_ASSIGN,value:"+=",line:e,column:t}):{type:s.PLUS,value:"+",line:e,column:t};case"-":return n==="-"?(this.advance(),{type:s.DECREMENT,value:"--",line:e,column:t}):n==="="?(this.advance(),{type:s.MINUS_ASSIGN,value:"-=",line:e,column:t}):{type:s.MINUS,value:"-",line:e,column:t};case"*":return n==="*"?(this.advance(),{type:s.CARET,value:"**",line:e,column:t}):n==="="?(this.advance(),{type:s.STAR_ASSIGN,value:"*=",line:e,column:t}):{type:s.STAR,value:"*",line:e,column:t};case"/":return n==="="?(this.advance(),{type:s.SLASH_ASSIGN,value:"/=",line:e,column:t}):{type:s.SLASH,value:"/",line:e,column:t};case"%":return n==="="?(this.advance(),{type:s.PERCENT_ASSIGN,value:"%=",line:e,column:t}):{type:s.PERCENT,value:"%",line:e,column:t};case"^":return n==="="?(this.advance(),{type:s.CARET_ASSIGN,value:"^=",line:e,column:t}):{type:s.CARET,value:"^",line:e,column:t};case"=":return n==="="?(this.advance(),{type:s.EQ,value:"==",line:e,column:t}):{type:s.ASSIGN,value:"=",line:e,column:t};case"!":return n==="="?(this.advance(),{type:s.NE,value:"!=",line:e,column:t}):n==="~"?(this.advance(),{type:s.NOT_MATCH,value:"!~",line:e,column:t}):{type:s.NOT,value:"!",line:e,column:t};case"<":return n==="="?(this.advance(),{type:s.LE,value:"<=",line:e,column:t}):{type:s.LT,value:"<",line:e,column:t};case">":return n==="="?(this.advance(),{type:s.GE,value:">=",line:e,column:t}):n===">"?(this.advance(),{type:s.APPEND,value:">>",line:e,column:t}):{type:s.GT,value:">",line:e,column:t};case"&":return n==="&"?(this.advance(),{type:s.AND,value:"&&",line:e,column:t}):{type:s.IDENT,value:"&",line:e,column:t};case"|":return n==="|"?(this.advance(),{type:s.OR,value:"||",line:e,column:t}):{type:s.PIPE,value:"|",line:e,column:t};case"~":return{type:s.MATCH,value:"~",line:e,column:t};case"?":return{type:s.QUESTION,value:"?",line:e,column:t};case":":return{type:s.COLON,value:":",line:e,column:t};case",":return{type:s.COMMA,value:",",line:e,column:t};case";":return{type:s.SEMICOLON,value:";",line:e,column:t};case"(":return{type:s.LPAREN,value:"(",line:e,column:t};case")":return{type:s.RPAREN,value:")",line:e,column:t};case"{":return{type:s.LBRACE,value:"{",line:e,column:t};case"}":return{type:s.RBRACE,value:"}",line:e,column:t};case"[":return{type:s.LBRACKET,value:"[",line:e,column:t};case"]":return{type:s.RBRACKET,value:"]",line:e,column:t};case"$":return{type:s.DOLLAR,value:"$",line:e,column:t};default:return{type:s.IDENT,value:i,line:e,column:t}}}isDigit(e){return e>="0"&&e<="9"}isAlpha(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}isAlphaNumeric(e){return this.isDigit(e)||this.isAlpha(e)}};var g=class{tokens=[];pos=0;parse(e){let t=new v(e);return this.tokens=t.tokenize(),this.pos=0,this.parseProgram()}current(){return this.tokens[this.pos]||{type:s.EOF,value:"",line:0,column:0}}advance(){let e=this.current();return this.pos<this.tokens.length&&this.pos++,e}match(...e){return e.includes(this.current().type)}check(e){return this.current().type===e}expect(e,t){if(!this.check(e)){let i=this.current();throw new Error(t||`Expected ${e}, got ${i.type} at line ${i.line}:${i.column}`)}return this.advance()}skipNewlines(){for(;this.check(s.NEWLINE);)this.advance()}skipTerminators(){for(;this.check(s.NEWLINE)||this.check(s.SEMICOLON);)this.advance()}parseProgram(){let e=[],t=[];for(this.skipNewlines();!this.check(s.EOF)&&(this.skipNewlines(),!this.check(s.EOF));)this.check(s.FUNCTION)?e.push(this.parseFunction()):t.push(this.parseRule()),this.skipTerminators();return{functions:e,rules:t}}parseFunction(){this.expect(s.FUNCTION);let e=this.expect(s.IDENT).value;this.expect(s.LPAREN);let t=[];if(!this.check(s.RPAREN))for(t.push(this.expect(s.IDENT).value);this.check(s.COMMA);)this.advance(),t.push(this.expect(s.IDENT).value);this.expect(s.RPAREN),this.skipNewlines();let i=this.parseBlock();return{name:e,params:t,body:i}}parseRule(){let e;if(this.check(s.BEGIN))this.advance(),e={type:"begin"};else if(this.check(s.END))this.advance(),e={type:"end"};else if(this.check(s.LBRACE))e=void 0;else if(this.check(s.REGEX)){let n={type:"regex_pattern",pattern:this.advance().value};if(this.check(s.COMMA)){this.advance();let a;this.check(s.REGEX)?a={type:"regex_pattern",pattern:this.advance().value}:a={type:"expr_pattern",expression:this.parseExpression()},e={type:"range",start:n,end:a}}else e=n}else{let n={type:"expr_pattern",expression:this.parseExpression()};if(this.check(s.COMMA)){this.advance();let a;this.check(s.REGEX)?a={type:"regex_pattern",pattern:this.advance().value}:a={type:"expr_pattern",expression:this.parseExpression()},e={type:"range",start:n,end:a}}else e=n}this.skipNewlines();let t;return this.check(s.LBRACE)?t=this.parseBlock():t={type:"block",statements:[{type:"print",args:[{type:"field",index:{type:"number",value:0}}]}]},{pattern:e,action:t}}parseBlock(){this.expect(s.LBRACE),this.skipNewlines();let e=[];for(;!this.check(s.RBRACE)&&!this.check(s.EOF);)e.push(this.parseStatement()),this.skipTerminators();return this.expect(s.RBRACE),{type:"block",statements:e}}parseStatement(){if(this.check(s.LBRACE))return this.parseBlock();if(this.check(s.IF))return this.parseIf();if(this.check(s.WHILE))return this.parseWhile();if(this.check(s.DO))return this.parseDoWhile();if(this.check(s.FOR))return this.parseFor();if(this.check(s.BREAK))return this.advance(),{type:"break"};if(this.check(s.CONTINUE))return this.advance(),{type:"continue"};if(this.check(s.NEXT))return this.advance(),{type:"next"};if(this.check(s.EXIT)){this.advance();let t;return!this.check(s.NEWLINE)&&!this.check(s.SEMICOLON)&&!this.check(s.RBRACE)&&!this.check(s.EOF)&&(t=this.parseExpression()),{type:"exit",code:t}}if(this.check(s.RETURN)){this.advance();let t;return!this.check(s.NEWLINE)&&!this.check(s.SEMICOLON)&&!this.check(s.RBRACE)&&!this.check(s.EOF)&&(t=this.parseExpression()),{type:"return",value:t}}if(this.check(s.DELETE)){this.advance();let t=this.parsePrimary();if(t.type!=="array_access"&&t.type!=="variable")throw new Error("delete requires array element or array");return{type:"delete",target:t}}return this.check(s.PRINT)?this.parsePrint():this.check(s.PRINTF)?this.parsePrintf():{type:"expr_stmt",expression:this.parseExpression()}}parseIf(){this.expect(s.IF),this.expect(s.LPAREN);let e=this.parseExpression();this.expect(s.RPAREN),this.skipNewlines();let t=this.parseStatement();this.skipTerminators();let i;return this.check(s.ELSE)&&(this.advance(),this.skipNewlines(),i=this.parseStatement()),{type:"if",condition:e,consequent:t,alternate:i}}parseWhile(){this.expect(s.WHILE),this.expect(s.LPAREN);let e=this.parseExpression();this.expect(s.RPAREN),this.skipNewlines();let t=this.parseStatement();return{type:"while",condition:e,body:t}}parseDoWhile(){this.expect(s.DO),this.skipNewlines();let e=this.parseStatement();this.skipNewlines(),this.expect(s.WHILE),this.expect(s.LPAREN);let t=this.parseExpression();return this.expect(s.RPAREN),{type:"do_while",body:e,condition:t}}parseFor(){if(this.expect(s.FOR),this.expect(s.LPAREN),this.check(s.IDENT)){let a=this.advance();if(this.check(s.IN)){this.advance();let h=this.expect(s.IDENT).value;this.expect(s.RPAREN),this.skipNewlines();let c=this.parseStatement();return{type:"for_in",variable:a.value,array:h,body:c}}this.pos--}let e;this.check(s.SEMICOLON)||(e=this.parseExpression()),this.expect(s.SEMICOLON);let t;this.check(s.SEMICOLON)||(t=this.parseExpression()),this.expect(s.SEMICOLON);let i;this.check(s.RPAREN)||(i=this.parseExpression()),this.expect(s.RPAREN),this.skipNewlines();let n=this.parseStatement();return{type:"for",init:e,condition:t,update:i,body:n}}parsePrint(){this.expect(s.PRINT);let e=[];if(this.check(s.NEWLINE)||this.check(s.SEMICOLON)||this.check(s.RBRACE)||this.check(s.PIPE)||this.check(s.GT)||this.check(s.APPEND))e.push({type:"field",index:{type:"number",value:0}});else for(e.push(this.parseTernary());this.check(s.COMMA);)this.advance(),e.push(this.parseTernary());let t;return this.check(s.GT)?(this.advance(),t={redirect:">",file:this.parsePrimary()}):this.check(s.APPEND)&&(this.advance(),t={redirect:">>",file:this.parsePrimary()}),{type:"print",args:e,output:t}}parsePrintf(){this.expect(s.PRINTF);let e=this.parseExpression(),t=[];for(;this.check(s.COMMA);)this.advance(),t.push(this.parseExpression());let i;return this.check(s.GT)?(this.advance(),i={redirect:">",file:this.parsePrimary()}):this.check(s.APPEND)&&(this.advance(),i={redirect:">>",file:this.parsePrimary()}),{type:"printf",format:e,args:t,output:i}}parseExpression(){return this.parseAssignment()}parseAssignment(){let e=this.parseTernary();if(this.match(s.ASSIGN,s.PLUS_ASSIGN,s.MINUS_ASSIGN,s.STAR_ASSIGN,s.SLASH_ASSIGN,s.PERCENT_ASSIGN,s.CARET_ASSIGN)){let t=this.advance(),i=this.parseAssignment();if(e.type!=="variable"&&e.type!=="field"&&e.type!=="array_access")throw new Error("Invalid assignment target");return{type:"assignment",operator:{"=":"=","+=":"+=","-=":"-=","*=":"*=","/=":"/=","%=":"%=","^=":"^="}[t.value],target:e,value:i}}return e}parseTernary(){let e=this.parseOr();if(this.check(s.QUESTION)){this.advance();let t=this.parseExpression();this.expect(s.COLON);let i=this.parseExpression();e={type:"ternary",condition:e,consequent:t,alternate:i}}return e}parseOr(){let e=this.parseAnd();for(;this.check(s.OR);){this.advance();let t=this.parseAnd();e={type:"binary",operator:"||",left:e,right:t}}return e}parseAnd(){let e=this.parseIn();for(;this.check(s.AND);){this.advance();let t=this.parseIn();e={type:"binary",operator:"&&",left:e,right:t}}return e}parseIn(){let e=this.parseMatch();if(this.check(s.IN)){this.advance();let t=this.expect(s.IDENT).value;return{type:"in",key:e,array:t}}return e}parseMatch(){let e=this.parseComparison();for(;this.match(s.MATCH,s.NOT_MATCH);){let t=this.advance().type===s.MATCH?"~":"!~",i=this.parseComparison();e={type:"binary",operator:t,left:e,right:i}}return e}parseComparison(){let e=this.parseConcatenation();for(;this.match(s.LT,s.LE,s.GT,s.GE,s.EQ,s.NE);){let t=this.advance(),i=this.parseConcatenation();e={type:"binary",operator:{"<":"<","<=":"<=",">":">",">=":">=","==":"==","!=":"!="}[t.value],left:e,right:i}}return e}parseConcatenation(){let e=this.parseAddSub();for(;this.canStartExpression()&&!this.isComparisonOrHigherOp();){let t=this.parseAddSub();e={type:"binary",operator:" ",left:e,right:t}}return e}canStartExpression(){return this.match(s.NUMBER,s.STRING,s.IDENT,s.DOLLAR,s.LPAREN,s.NOT,s.MINUS,s.PLUS,s.INCREMENT,s.DECREMENT)}isComparisonOrHigherOp(){return this.match(s.LT,s.LE,s.GT,s.GE,s.EQ,s.NE,s.AND,s.OR,s.QUESTION,s.MATCH,s.NOT_MATCH,s.ASSIGN,s.PLUS_ASSIGN,s.MINUS_ASSIGN,s.STAR_ASSIGN,s.SLASH_ASSIGN,s.PERCENT_ASSIGN,s.CARET_ASSIGN,s.COMMA,s.SEMICOLON,s.NEWLINE,s.RBRACE,s.RPAREN,s.RBRACKET,s.COLON,s.PIPE,s.APPEND,s.IN)}parseAddSub(){let e=this.parseMulDiv();for(;this.match(s.PLUS,s.MINUS);){let t=this.advance().value,i=this.parseMulDiv();e={type:"binary",operator:t,left:e,right:i}}return e}parseMulDiv(){let e=this.parseUnary();for(;this.match(s.STAR,s.SLASH,s.PERCENT);){let t=this.advance(),i=this.parseUnary();e={type:"binary",operator:{"*":"*","/":"/","%":"%"}[t.value],left:e,right:i}}return e}parseUnary(){if(this.check(s.INCREMENT)){this.advance();let e=this.parseUnary();return e.type!=="variable"&&e.type!=="field"&&e.type!=="array_access"?{type:"unary",operator:"+",operand:{type:"unary",operator:"+",operand:e}}:{type:"pre_increment",operand:e}}if(this.check(s.DECREMENT)){this.advance();let e=this.parseUnary();return e.type!=="variable"&&e.type!=="field"&&e.type!=="array_access"?{type:"unary",operator:"-",operand:{type:"unary",operator:"-",operand:e}}:{type:"pre_decrement",operand:e}}if(this.match(s.NOT,s.MINUS,s.PLUS)){let e=this.advance().value,t=this.parseUnary();return{type:"unary",operator:e,operand:t}}return this.parsePower()}parsePower(){let e=this.parsePostfix();if(this.check(s.CARET)){this.advance();let t=this.parsePower();e={type:"binary",operator:"^",left:e,right:t}}return e}parsePostfix(){let e=this.parsePrimary();if(this.check(s.INCREMENT)){if(this.advance(),e.type!=="variable"&&e.type!=="field"&&e.type!=="array_access")throw new Error("Invalid increment operand");return{type:"post_increment",operand:e}}if(this.check(s.DECREMENT)){if(this.advance(),e.type!=="variable"&&e.type!=="field"&&e.type!=="array_access")throw new Error("Invalid decrement operand");return{type:"post_decrement",operand:e}}return e}parsePrimary(){if(this.check(s.NUMBER))return{type:"number",value:this.advance().value};if(this.check(s.STRING))return{type:"string",value:this.advance().value};if(this.check(s.REGEX))return{type:"regex",pattern:this.advance().value};if(this.check(s.DOLLAR))return this.advance(),{type:"field",index:this.parsePrimary()};if(this.check(s.LPAREN)){this.advance();let e=this.parseExpression();if(this.check(s.COMMA)){let t=[e];for(;this.check(s.COMMA);)this.advance(),t.push(this.parseExpression());return this.expect(s.RPAREN),{type:"tuple",elements:t}}return this.expect(s.RPAREN),e}if(this.check(s.GETLINE)){this.advance();let e,t;return this.check(s.IDENT)&&(e=this.advance().value),this.check(s.LT)&&(this.advance(),t=this.parsePrimary()),{type:"getline",variable:e,file:t}}if(this.check(s.IDENT)){let e=this.advance().value;if(this.check(s.LPAREN)){this.advance();let t=[];if(!this.check(s.RPAREN))for(t.push(this.parseExpression());this.check(s.COMMA);)this.advance(),t.push(this.parseExpression());return this.expect(s.RPAREN),{type:"call",name:e,args:t}}if(this.check(s.LBRACKET)){this.advance();let t=[this.parseExpression()];for(;this.check(s.COMMA);)this.advance(),t.push(this.parseExpression());this.expect(s.RBRACKET);let i;if(t.length===1)i=t[0];else{i=t[0];for(let n=1;n<t.length;n++)i={type:"binary",operator:" ",left:{type:"binary",operator:" ",left:i,right:{type:"variable",name:"SUBSEP"}},right:t[n]}}return{type:"array_access",array:e,key:i}}return{type:"variable",name:e}}throw new Error(`Unexpected token: ${this.current().type} at line ${this.current().line}:${this.current().column}`)}};var he={name:"awk",summary:"pattern scanning and text processing language",usage:"awk [OPTIONS] 'PROGRAM' [FILE...]",options:["-F FS use FS as field separator","-v VAR=VAL assign VAL to variable VAR"," --help display this help and exit"]},ge={name:"awk",async execute(r,e){if(b(r))return I(he);let t=/\s+/,i=" ",n={},a=0;for(let l=0;l<r.length;l++){let E=r[l];if(E==="-F"&&l+1<r.length)i=P(r[++l]),t=F(i),a=l+1;else if(E.startsWith("-F"))i=P(E.slice(2)),t=F(i),a=l+1;else if(E==="-v"&&l+1<r.length){let d=r[++l],N=d.indexOf("=");if(N>0){let _=d.slice(0,N),G=d.slice(N+1);n[_]=G}a=l+1}else{if(E.startsWith("--"))return R("awk",E);if(E.startsWith("-")&&E.length>1){let d=E[1];if(d!=="F"&&d!=="v")return R("awk",`-${d}`);a=l+1}else if(!E.startsWith("-")){a=l;break}}}if(a>=r.length)return{stdout:"",stderr:`awk: missing program
13
+ `,exitCode:1};let h=r[a],c=r.slice(a+1),u=new g,x;try{x=u.parse(h)}catch(l){return{stdout:"",stderr:`awk: ${l instanceof Error?l.message:String(l)}
14
+ `,exitCode:1}}let p=M(t,e.limits?.maxAwkIterations);p.FS=i,p.vars={...n};let o=new m(p);if(o.execute(x),o.executeBegin(),p.shouldExit)return{stdout:o.getOutput(),stderr:"",exitCode:o.getExitCode()};let f=[];if(c.length>0)for(let l of c)try{let E=e.fs.resolvePath(e.cwd,l),N=(await e.fs.readFile(E)).split(`
15
+ `);N.length>0&&N[N.length-1]===""&&N.pop(),f.push({filename:l,lines:N})}catch{return{stdout:"",stderr:`awk: ${l}: No such file or directory
16
+ `,exitCode:1}}else{let l=e.stdin.split(`
17
+ `);l.length>0&&l[l.length-1]===""&&l.pop(),f.push({filename:"",lines:l})}for(let l of f){for(p.FILENAME=l.filename,p.FNR=0,p.lines=l.lines,p.lineIndex=-1;p.lineIndex<l.lines.length-1&&(p.lineIndex++,o.executeLine(l.lines[p.lineIndex]),!p.shouldExit););if(p.shouldExit)break}return p.shouldExit||o.executeEnd(),{stdout:o.getOutput(),stderr:"",exitCode:o.getExitCode()}}};function P(r){return r.replace(/\\t/g," ").replace(/\\n/g,`
18
+ `).replace(/\\r/g,"\r").replace(/\\\\/g,"\\")}function F(r){if(r===" ")return/\s+/;if(/[[\](){}.*+?^$|\\]/.test(r))try{return new RegExp(r)}catch{return new RegExp(T(r))}return new RegExp(T(r))}function T(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}export{ge as awkCommand2};
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ import{i as P}from"./chunk-LV662IGP.js";import{a as K,b as Q,c as x}from"./chunk-GTNBSMZR.js";import"./chunk-5KNEBKYN.js";function j(e,t,r){switch(r){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":return t!==0?e/t:0;case"%":return t!==0?e%t:0;case"^":case"**":return e**t;default:return 0}}function g(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}function w(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}async function ce(e,t,r){return e.length===0?t.line.length:w(await r.evalExpr(e[0])).length}async function he(e,t,r){if(e.length<2)return"";let n=w(await r.evalExpr(e[0])),a=Math.floor(g(await r.evalExpr(e[1])))-1;if(e.length>=3){let s=Math.floor(g(await r.evalExpr(e[2])));return n.substr(Math.max(0,a),s)}return n.substr(Math.max(0,a))}async function ue(e,t,r){if(e.length<2)return 0;let n=w(await r.evalExpr(e[0])),a=w(await r.evalExpr(e[1])),s=n.indexOf(a);return s===-1?0:s+1}async function pe(e,t,r){if(e.length<2)return 0;let n=w(await r.evalExpr(e[0])),a=e[1];if(a.type!=="variable")return 0;let s=a.name,o=t.FS;if(e.length>=3){let u=w(await r.evalExpr(e[2]));o=u===" "?/\s+/:u}else t.FS===" "&&(o=/\s+/);let l=n.split(o);t.arrays[s]={};for(let u=0;u<l.length;u++)t.arrays[s][String(u+1)]=l[u];return l.length}async function fe(e,t,r){if(e.length<2)return 0;let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s="$0";if(e.length>=3){let l=e[2];l.type==="variable"?s=l.name:l.type==="field"&&(s=`$${Math.floor(g(await r.evalExpr(l.index)))}`)}let o;if(s==="$0")o=t.line;else if(s.startsWith("$")){let l=parseInt(s.slice(1),10)-1;o=t.fields[l]||""}else o=w(t.vars[s]??"");try{let l=new RegExp(n),u=o.replace(l,z(a)),m=u!==o?1:0;if(s==="$0")t.line=u,t.fields=t.FS===" "?u.trim().split(/\s+/).filter(Boolean):u.split(t.fieldSep),t.NF=t.fields.length;else if(s.startsWith("$")){let N=parseInt(s.slice(1),10)-1;for(;t.fields.length<=N;)t.fields.push("");t.fields[N]=u,t.NF=t.fields.length,t.line=t.fields.join(t.OFS)}else t.vars[s]=u;return m}catch{return 0}}async function de(e,t,r){if(e.length<2)return 0;let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s="$0";if(e.length>=3){let l=e[2];l.type==="variable"?s=l.name:l.type==="field"&&(s=`$${Math.floor(g(await r.evalExpr(l.index)))}`)}let o;if(s==="$0")o=t.line;else if(s.startsWith("$")){let l=parseInt(s.slice(1),10)-1;o=t.fields[l]||""}else o=w(t.vars[s]??"");try{let l=new RegExp(n,"g"),u=o.match(l),m=u?u.length:0,N=o.replace(l,z(a));if(s==="$0")t.line=N,t.fields=t.FS===" "?N.trim().split(/\s+/).filter(Boolean):N.split(t.fieldSep),t.NF=t.fields.length;else if(s.startsWith("$")){let c=parseInt(s.slice(1),10)-1;for(;t.fields.length<=c;)t.fields.push("");t.fields[c]=N,t.NF=t.fields.length,t.line=t.fields.join(t.OFS)}else t.vars[s]=N;return m}catch{return 0}}function z(e){return t=>{let r="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length){let a=e[n+1];a==="&"?(r+="&",n+=2):a==="\\"?(r+="\\",n+=2):(r+=e[n+1],n+=2)}else e[n]==="&"?(r+=t,n++):(r+=e[n],n++);return r}}async function Ee(e,t,r){if(e.length<2)return t.RSTART=0,t.RLENGTH=-1,0;let n=w(await r.evalExpr(e[0])),a;e[1].type==="regex"?a=e[1].pattern:(a=w(await r.evalExpr(e[1])),a.startsWith("/")&&a.endsWith("/")&&(a=a.slice(1,-1)));try{let o=new RegExp(a).exec(n);if(o)return t.RSTART=o.index+1,t.RLENGTH=o[0].length,t.RSTART}catch{}return t.RSTART=0,t.RLENGTH=-1,0}async function Ne(e,t,r){if(e.length<3)return"";let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s=w(await r.evalExpr(e[2])),o=e.length>=4?w(await r.evalExpr(e[3])):t.line;try{let l=s.toLowerCase()==="g",u=l?0:parseInt(s,10)||1;if(l){let m=new RegExp(n,"g");return o.replace(m,(N,...c)=>q(a,N,c.slice(0,-2)))}else{let m=0,N=new RegExp(n,"g");return o.replace(N,(c,...d)=>(m++,m===u?q(a,c,d.slice(0,-2)):c))}}catch{return o}}function q(e,t,r){let n="",a=0;for(;a<e.length;)if(e[a]==="\\"&&a+1<e.length){let s=e[a+1];if(s==="&")n+="&",a+=2;else if(s==="0")n+=t,a+=2;else if(s>="1"&&s<="9"){let o=parseInt(s,10)-1;n+=r[o]||"",a+=2}else s==="n"?(n+=`
3
+ `,a+=2):s==="t"?(n+=" ",a+=2):(n+=s,a+=2)}else e[a]==="&"?(n+=t,a++):(n+=e[a],a++);return n}async function ye(e,t,r){return e.length===0?"":w(await r.evalExpr(e[0])).toLowerCase()}async function me(e,t,r){return e.length===0?"":w(await r.evalExpr(e[0])).toUpperCase()}async function we(e,t,r){if(e.length===0)return"";let n=w(await r.evalExpr(e[0])),a=[];for(let s=1;s<e.length;s++)a.push(await r.evalExpr(e[s]));return W(n,a)}async function Re(e,t,r){return e.length===0?0:Math.floor(g(await r.evalExpr(e[0])))}async function Se(e,t,r){return e.length===0?0:Math.sqrt(g(await r.evalExpr(e[0])))}async function ge(e,t,r){return e.length===0?0:Math.sin(g(await r.evalExpr(e[0])))}async function Ae(e,t,r){return e.length===0?0:Math.cos(g(await r.evalExpr(e[0])))}async function ve(e,t,r){let n=e.length>0?g(await r.evalExpr(e[0])):0,a=e.length>1?g(await r.evalExpr(e[1])):0;return Math.atan2(n,a)}async function ke(e,t,r){return e.length===0?0:Math.log(g(await r.evalExpr(e[0])))}async function Ie(e,t,r){return e.length===0?1:Math.exp(g(await r.evalExpr(e[0])))}function Ce(e,t,r){return t.random?t.random():Math.random()}async function be(e,t,r){let n=e.length>0?g(await r.evalExpr(e[0])):Date.now();return t.vars._srand_seed=n,n}function H(e,t){return()=>{throw new Error(`${e}() is not supported - ${t}`)}}function $(e){return()=>{throw new Error(`function '${e}()' is not implemented`)}}function W(e,t){let r=0,n="",a=0;for(;a<e.length;)if(e[a]==="%"&&a+1<e.length){let s=a+1,o="",l="",u="";for(;s<e.length&&/[-+ #0]/.test(e[s]);)o+=e[s++];for(;s<e.length&&/\d/.test(e[s]);)l+=e[s++];if(e[s]===".")for(s++;s<e.length&&/\d/.test(e[s]);)u+=e[s++];let m=e[s],N=t[r];switch(m){case"s":{let c=N!==void 0?String(N):"";if(u&&(c=c.substring(0,parseInt(u,10))),l){let d=parseInt(l,10);o.includes("-")?c=c.padEnd(d):c=c.padStart(d)}n+=c,r++;break}case"d":case"i":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=String(c);if(l){let h=parseInt(l,10);if(o.includes("-"))d=d.padEnd(h);else if(o.includes("0")&&!o.includes("-")){let f=c<0?"-":"";d=f+Math.abs(c).toString().padStart(h-f.length,"0")}else d=d.padStart(h)}n+=d,r++;break}case"f":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c.toFixed(d);if(l){let f=parseInt(l,10);o.includes("-")?h=h.padEnd(f):h=h.padStart(f)}n+=h,r++;break}case"e":case"E":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c.toExponential(d);if(m==="E"&&(h=h.toUpperCase()),l){let f=parseInt(l,10);o.includes("-")?h=h.padEnd(f):h=h.padStart(f)}n+=h,r++;break}case"g":case"G":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c!==0?Math.floor(Math.log10(Math.abs(c))):0,f;if(c===0?f="0":h<-4||h>=d?(f=c.toExponential(d-1),m==="G"&&(f=f.toUpperCase())):f=c.toPrecision(d),f=f.replace(/\.?0+$/,"").replace(/\.?0+e/,"e"),l){let S=parseInt(l,10);o.includes("-")?f=f.padEnd(S):f=f.padStart(S)}n+=f,r++;break}case"x":case"X":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=Math.abs(c).toString(16);if(m==="X"&&(d=d.toUpperCase()),l){let h=parseInt(l,10);o.includes("0")?d=d.padStart(h,"0"):o.includes("-")?d=d.padEnd(h):d=d.padStart(h)}n+=c<0?`-${d}`:d,r++;break}case"o":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=Math.abs(c).toString(8);if(l){let h=parseInt(l,10);o.includes("0")?d=d.padStart(h,"0"):o.includes("-")?d=d.padEnd(h):d=d.padStart(h)}n+=c<0?`-${d}`:d,r++;break}case"c":{typeof N=="number"?n+=String.fromCharCode(N):n+=String(N??"").charAt(0)||"",r++;break}case"%":n+="%";break;default:n+=e.substring(a,s+1)}a=s+1}else if(e[a]==="\\"&&a+1<e.length){let s=e[a+1];switch(s){case"n":n+=`
4
+ `;break;case"t":n+=" ";break;case"r":n+="\r";break;case"\\":n+="\\";break;default:n+=s}a+=2}else n+=e[a++];return n}var Z={length:ce,substr:he,index:ue,split:pe,sub:fe,gsub:de,match:Ee,gensub:Ne,tolower:ye,toupper:me,sprintf:we,int:Re,sqrt:Se,sin:ge,cos:Ae,atan2:ve,log:ke,exp:Ie,rand:Ce,srand:be,system:H("system","shell execution not allowed in sandboxed environment"),close:H("close","file operations not allowed"),fflush:H("fflush","file operations not allowed"),systime:$("systime"),mktime:$("mktime"),strftime:$("strftime")};function R(e){return typeof e=="number"?e!==0:e!==""}function E(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}function y(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}function D(e){if(typeof e=="number")return!0;let t=String(e).trim();return t===""?!1:!Number.isNaN(Number(t))}function O(e,t){try{return new RegExp(e).test(t)}catch{return!1}}function J(e,t){return e.FS===" "?t.trim().split(/\s+/).filter(Boolean):t.split(e.fieldSep)}function I(e,t){return t===0?e.line:t<0||t>e.fields.length?"":e.fields[t-1]??""}function M(e,t,r){if(t===0)e.line=y(r),e.fields=J(e,e.line),e.NF=e.fields.length;else if(t>0){for(;e.fields.length<t;)e.fields.push("");e.fields[t-1]=y(r),e.NF=e.fields.length,e.line=e.fields.join(e.OFS)}}function T(e,t){e.line=t,e.fields=J(e,t),e.NF=e.fields.length}function Y(e,t){if(e.FS=t,t===" ")e.fieldSep=/\s+/;else try{e.fieldSep=new RegExp(t)}catch{e.fieldSep=new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))}}function C(e,t){switch(t){case"FS":return e.FS;case"OFS":return e.OFS;case"ORS":return e.ORS;case"NR":return e.NR;case"NF":return e.NF;case"FNR":return e.FNR;case"FILENAME":return e.FILENAME;case"RSTART":return e.RSTART;case"RLENGTH":return e.RLENGTH;case"SUBSEP":return e.SUBSEP;case"ARGC":return e.ARGC}return e.vars[t]??""}function A(e,t,r){switch(t){case"FS":Y(e,y(r));return;case"OFS":e.OFS=y(r);return;case"ORS":e.ORS=y(r);return;case"NR":e.NR=Math.floor(E(r));return;case"NF":{let n=Math.floor(E(r));if(n<e.NF)e.fields=e.fields.slice(0,n),e.line=e.fields.join(e.OFS);else if(n>e.NF){for(;e.fields.length<n;)e.fields.push("");e.line=e.fields.join(e.OFS)}e.NF=n;return}case"FNR":e.FNR=Math.floor(E(r));return;case"FILENAME":e.FILENAME=y(r);return;case"RSTART":e.RSTART=Math.floor(E(r));return;case"RLENGTH":e.RLENGTH=Math.floor(E(r));return;case"SUBSEP":e.SUBSEP=y(r);return}e.vars[t]=r}function b(e,t,r){return t==="ARGV"?e.ARGV[r]??"":e.arrays[t]?.[r]??""}function F(e,t,r,n){e.arrays[t]||(e.arrays[t]={}),e.arrays[t][r]=n}function ee(e,t,r){return t==="ARGV"?e.ARGV[r]!==void 0:e.arrays[t]?.[r]!==void 0}function te(e,t,r){e.arrays[t]&&delete e.arrays[t][r]}function re(e,t){delete e.arrays[t]}var X=null;function ie(e){X=e}async function p(e,t){switch(t.type){case"number":return t.value;case"string":return t.value;case"regex":return O(t.pattern,e.line)?1:0;case"field":return Le(e,t);case"variable":return C(e,t.name);case"array_access":return Pe(e,t);case"binary":return Oe(e,t);case"unary":return Te(e,t);case"ternary":return R(await p(e,t.condition))?p(e,t.consequent):p(e,t.alternate);case"call":return _e(e,t.name,t.args);case"assignment":return De(e,t);case"pre_increment":return Be(e,t.operand);case"pre_decrement":return Ue(e,t.operand);case"post_increment":return xe(e,t.operand);case"post_decrement":return He(e,t.operand);case"in":return $e(e,t.key,t.array);case"getline":return We(e,t.variable,t.file);case"tuple":return Ve(e,t.elements);default:return""}}async function Le(e,t){let r=Math.floor(E(await p(e,t.index)));return I(e,r)}async function Pe(e,t){let r=y(await p(e,t.key));return b(e,t.array,r)}async function Oe(e,t){let r=t.operator;if(r==="||")return R(await p(e,t.left))||R(await p(e,t.right))?1:0;if(r==="&&")return R(await p(e,t.left))&&R(await p(e,t.right))?1:0;if(r==="~"){let l=await p(e,t.left),u=t.right.type==="regex"?t.right.pattern:y(await p(e,t.right));try{return new RegExp(u).test(y(l))?1:0}catch{return 0}}if(r==="!~"){let l=await p(e,t.left),u=t.right.type==="regex"?t.right.pattern:y(await p(e,t.right));try{return new RegExp(u).test(y(l))?0:1}catch{return 1}}let n=await p(e,t.left),a=await p(e,t.right);if(r===" ")return y(n)+y(a);if(Me(r))return Fe(n,a,r);let s=E(n),o=E(a);return j(s,o,r)}function Me(e){return["<","<=",">",">=","==","!="].includes(e)}function Fe(e,t,r){let n=D(e),a=D(t);if(n&&a){let l=E(e),u=E(t);switch(r){case"<":return l<u?1:0;case"<=":return l<=u?1:0;case">":return l>u?1:0;case">=":return l>=u?1:0;case"==":return l===u?1:0;case"!=":return l!==u?1:0}}let s=y(e),o=y(t);switch(r){case"<":return s<o?1:0;case"<=":return s<=o?1:0;case">":return s>o?1:0;case">=":return s>=o?1:0;case"==":return s===o?1:0;case"!=":return s!==o?1:0}return 0}async function Te(e,t){let r=await p(e,t.operand);switch(t.operator){case"!":return R(r)?0:1;case"-":return-E(r);case"+":return+E(r);default:return r}}async function _e(e,t,r){let n=Z[t];if(n)return n(r,e,{evalExpr:s=>p(e,s)});let a=e.functions.get(t);return a?Ge(e,a,r):""}async function Ge(e,t,r){if(e.currentRecursionDepth++,e.currentRecursionDepth>e.maxRecursionDepth)throw e.currentRecursionDepth--,new P(`awk: recursion depth exceeded maximum (${e.maxRecursionDepth})`,"recursion",e.output);let n={};for(let s of t.params)n[s]=e.vars[s];for(let s=0;s<t.params.length;s++){let o=t.params[s],l=s<r.length?await p(e,r[s]):"";e.vars[o]=l}e.hasReturn=!1,e.returnValue=void 0,X&&await X(e,t.body.statements);let a=e.returnValue??"";for(let s of t.params)n[s]!==void 0?e.vars[s]=n[s]:delete e.vars[s];return e.hasReturn=!1,e.returnValue=void 0,e.currentRecursionDepth--,a}async function De(e,t){let r=await p(e,t.value),n=t.target,a=t.operator,s;if(a==="=")s=r;else{let o;if(n.type==="field"){let m=Math.floor(E(await p(e,n.index)));o=I(e,m)}else if(n.type==="variable")o=C(e,n.name);else{let m=y(await p(e,n.key));o=b(e,n.array,m)}let l=E(o),u=E(r);switch(a){case"+=":s=l+u;break;case"-=":s=l-u;break;case"*=":s=l*u;break;case"/=":s=u!==0?l/u:0;break;case"%=":s=u!==0?l%u:0;break;case"^=":s=l**u;break;default:s=r}}if(n.type==="field"){let o=Math.floor(E(await p(e,n.index)));M(e,o,s)}else if(n.type==="variable")A(e,n.name,s);else{let o=y(await p(e,n.key));F(e,n.array,o,s)}return s}async function Be(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n))+1,M(e,n,r)}else if(t.type==="variable")r=E(C(e,t.name))+1,A(e,t.name,r);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n))+1,F(e,t.array,n,r)}return r}async function Ue(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n))-1,M(e,n,r)}else if(t.type==="variable")r=E(C(e,t.name))-1,A(e,t.name,r);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n))-1,F(e,t.array,n,r)}return r}async function xe(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n)),M(e,n,r+1)}else if(t.type==="variable")r=E(C(e,t.name)),A(e,t.name,r+1);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n)),F(e,t.array,n,r+1)}return r}async function He(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n)),M(e,n,r-1)}else if(t.type==="variable")r=E(C(e,t.name)),A(e,t.name,r-1);else{let n=y(await p(e,t.key));r=E(b(e,t.array,n)),F(e,t.array,n,r-1)}return r}async function $e(e,t,r){let n;if(t.type==="tuple"){let a=[];for(let s of t.elements)a.push(y(await p(e,s)));n=a.join(e.SUBSEP)}else n=y(await p(e,t));return ee(e,r,n)?1:0}async function We(e,t,r){if(r)return Xe(e,t,r);if(!e.lines||e.lineIndex===void 0)return-1;let n=e.lineIndex+1;if(n>=e.lines.length)return 0;let a=e.lines[n];return t?A(e,t,a):T(e,a),e.NR++,e.lineIndex=n,1}async function Xe(e,t,r){if(!e.fs||!e.cwd)return-1;let n=y(await p(e,r)),a=e.fs.resolvePath(e.cwd,n);e.arrays.__file_cache__||(e.arrays.__file_cache__={});let s=`__fc_${a}`,o=`__fi_${a}`,l,u;if(e.vars[s]===void 0)try{l=(await e.fs.readFile(a)).split(`
5
+ `),l.length>0&&l[l.length-1]===""&&l.pop(),e.vars[s]=JSON.stringify(l),e.vars[o]=-1,u=-1}catch{return-1}else l=JSON.parse(e.vars[s]),u=e.vars[o];let m=u+1;if(m>=l.length)return 0;let N=l[m];return e.vars[o]=m,t?A(e,t,N):T(e,N),1}async function Ve(e,t){if(t.length===0)return"";for(let r=0;r<t.length-1;r++)await p(e,t[r]);return p(e,t[t.length-1])}ie(L);async function L(e,t){for(let r of t)if(await v(e,r),Ke(e))break}function Ke(e){return e.shouldExit||e.shouldNext||e.shouldNextFile||e.loopBreak||e.loopContinue||e.hasReturn}async function v(e,t){switch(t.type){case"block":await L(e,t.statements);break;case"expr_stmt":await p(e,t.expression);break;case"print":await Qe(e,t.args,t.output);break;case"printf":await je(e,t.format,t.args,t.output);break;case"if":await qe(e,t);break;case"while":await ze(e,t);break;case"do_while":await Ze(e,t);break;case"for":await Je(e,t);break;case"for_in":await Ye(e,t);break;case"break":e.loopBreak=!0;break;case"continue":e.loopContinue=!0;break;case"next":e.shouldNext=!0;break;case"nextfile":e.shouldNextFile=!0;break;case"exit":e.shouldExit=!0,e.exitCode=t.code?Math.floor(E(await p(e,t.code))):0;break;case"return":e.hasReturn=!0,e.returnValue=t.value?await p(e,t.value):"";break;case"delete":await et(e,t.target);break}}async function Qe(e,t,r){let n=[];for(let s of t)n.push(y(await p(e,s)));let a=n.join(e.OFS)+e.ORS;r?await ne(e,r.redirect,r.file,a):e.output+=a}async function je(e,t,r,n){let a=y(await p(e,t)),s=[];for(let l of r)s.push(await p(e,l));let o=W(a,s);n?await ne(e,n.redirect,n.file,o):e.output+=o}async function ne(e,t,r,n){if(!e.fs||!e.cwd){e.output+=n;return}let a=y(await p(e,r)),s=e.fs.resolvePath(e.cwd,a);t===">"?e.openedFiles.has(s)?await e.fs.appendFile(s,n):(await e.fs.writeFile(s,n),e.openedFiles.add(s)):(e.openedFiles.has(s)||e.openedFiles.add(s),await e.fs.appendFile(s,n))}async function qe(e,t){R(await p(e,t.condition))?await v(e,t.consequent):t.alternate&&await v(e,t.alternate)}async function ze(e,t){let r=0;for(;R(await p(e,t.condition));){if(r++,r>e.maxIterations)throw new P(`awk: while loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}}async function Ze(e,t){let r=0;do{if(r++,r>e.maxIterations)throw new P(`awk: do-while loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}while(R(await p(e,t.condition)))}async function Je(e,t){t.init&&await p(e,t.init);let r=0;for(;!t.condition||R(await p(e,t.condition));){if(r++,r>e.maxIterations)throw new P(`awk: for loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break;t.update&&await p(e,t.update)}}async function Ye(e,t){let r=e.arrays[t.array];if(r)for(let n of Object.keys(r)){if(e.vars[t.variable]=n,e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}}async function et(e,t){if(t.type==="array_access"){let r=y(await p(e,t.key));te(e,t.array,r)}else t.type==="variable"&&re(e,t.name)}var _=class{ctx;program=null;rangeStates=[];constructor(t){this.ctx=t}execute(t){this.program=t,this.ctx.output="";for(let r of t.functions)this.ctx.functions.set(r.name,r);this.rangeStates=t.rules.map(()=>!1)}async executeBegin(){if(this.program){for(let t of this.program.rules)if(t.pattern?.type==="begin"&&(await L(this.ctx,t.action.statements),this.ctx.shouldExit))break}}async executeLine(t){if(!(!this.program||this.ctx.shouldExit)){T(this.ctx,t),this.ctx.NR++,this.ctx.FNR++,this.ctx.shouldNext=!1;for(let r=0;r<this.program.rules.length&&!(this.ctx.shouldExit||this.ctx.shouldNext);r++){let n=this.program.rules[r];n.pattern?.type==="begin"||n.pattern?.type==="end"||await this.matchesRule(n,r)&&await L(this.ctx,n.action.statements)}}}async executeEnd(){if(!(!this.program||this.ctx.shouldExit)){for(let t of this.program.rules)if(t.pattern?.type==="end"&&(await L(this.ctx,t.action.statements),this.ctx.shouldExit))break}}getOutput(){return this.ctx.output}getExitCode(){return this.ctx.exitCode}getContext(){return this.ctx}async matchesRule(t,r){let n=t.pattern;if(!n)return!0;switch(n.type){case"begin":case"end":return!1;case"regex_pattern":return O(n.pattern,this.ctx.line);case"expr_pattern":return R(await p(this.ctx,n.expression));case"range":{let a=await this.matchPattern(n.start),s=await this.matchPattern(n.end);return this.rangeStates[r]?(s&&(this.rangeStates[r]=!1),!0):a?(this.rangeStates[r]=!0,s&&(this.rangeStates[r]=!1),!0):!1}default:return!1}}async matchPattern(t){switch(t.type){case"regex_pattern":return O(t.pattern,this.ctx.line);case"expr_pattern":return R(await p(this.ctx,t.expression));default:return!1}}};function V(e={}){let{fieldSep:t=/\s+/,maxIterations:r=1e4,maxRecursionDepth:n=1e3,fs:a,cwd:s}=e;return{FS:" ",OFS:" ",ORS:`
6
+ `,NR:0,NF:0,FNR:0,FILENAME:"",RSTART:0,RLENGTH:-1,SUBSEP:"",fields:[],line:"",vars:{},arrays:{},ARGC:0,ARGV:{},functions:new Map,fieldSep:t,maxIterations:r,maxRecursionDepth:n,currentRecursionDepth:0,exitCode:0,shouldExit:!1,shouldNext:!1,shouldNextFile:!1,loopBreak:!1,loopContinue:!1,hasReturn:!1,output:"",openedFiles:new Set,fs:a,cwd:s}}var i;(function(e){e.NUMBER="NUMBER",e.STRING="STRING",e.REGEX="REGEX",e.IDENT="IDENT",e.BEGIN="BEGIN",e.END="END",e.IF="IF",e.ELSE="ELSE",e.WHILE="WHILE",e.DO="DO",e.FOR="FOR",e.IN="IN",e.BREAK="BREAK",e.CONTINUE="CONTINUE",e.NEXT="NEXT",e.NEXTFILE="NEXTFILE",e.EXIT="EXIT",e.RETURN="RETURN",e.DELETE="DELETE",e.FUNCTION="FUNCTION",e.PRINT="PRINT",e.PRINTF="PRINTF",e.GETLINE="GETLINE",e.PLUS="PLUS",e.MINUS="MINUS",e.STAR="STAR",e.SLASH="SLASH",e.PERCENT="PERCENT",e.CARET="CARET",e.EQ="EQ",e.NE="NE",e.LT="LT",e.GT="GT",e.LE="LE",e.GE="GE",e.MATCH="MATCH",e.NOT_MATCH="NOT_MATCH",e.AND="AND",e.OR="OR",e.NOT="NOT",e.ASSIGN="ASSIGN",e.PLUS_ASSIGN="PLUS_ASSIGN",e.MINUS_ASSIGN="MINUS_ASSIGN",e.STAR_ASSIGN="STAR_ASSIGN",e.SLASH_ASSIGN="SLASH_ASSIGN",e.PERCENT_ASSIGN="PERCENT_ASSIGN",e.CARET_ASSIGN="CARET_ASSIGN",e.INCREMENT="INCREMENT",e.DECREMENT="DECREMENT",e.QUESTION="QUESTION",e.COLON="COLON",e.COMMA="COMMA",e.SEMICOLON="SEMICOLON",e.NEWLINE="NEWLINE",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.LBRACKET="LBRACKET",e.RBRACKET="RBRACKET",e.DOLLAR="DOLLAR",e.APPEND="APPEND",e.PIPE="PIPE",e.EOF="EOF"})(i||(i={}));var tt={BEGIN:i.BEGIN,END:i.END,if:i.IF,else:i.ELSE,while:i.WHILE,do:i.DO,for:i.FOR,in:i.IN,break:i.BREAK,continue:i.CONTINUE,next:i.NEXT,nextfile:i.NEXTFILE,exit:i.EXIT,return:i.RETURN,delete:i.DELETE,function:i.FUNCTION,print:i.PRINT,printf:i.PRINTF,getline:i.GETLINE};function rt(e){return e.replace(/\[\[:space:\]\]/g,"[ \\t\\n\\r\\f\\v]").replace(/\[\[:blank:\]\]/g,"[ \\t]").replace(/\[\[:alpha:\]\]/g,"[a-zA-Z]").replace(/\[\[:digit:\]\]/g,"[0-9]").replace(/\[\[:alnum:\]\]/g,"[a-zA-Z0-9]").replace(/\[\[:upper:\]\]/g,"[A-Z]").replace(/\[\[:lower:\]\]/g,"[a-z]").replace(/\[\[:punct:\]\]/g,"[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~]").replace(/\[\[:xdigit:\]\]/g,"[0-9A-Fa-f]").replace(/\[\[:graph:\]\]/g,"[!-~]").replace(/\[\[:print:\]\]/g,"[ -~]").replace(/\[\[:cntrl:\]\]/g,"[\\x00-\\x1f\\x7f]")}var B=class{input;pos=0;line=1;column=1;lastTokenType=null;constructor(t){this.input=t}tokenize(){let t=[];for(;this.pos<this.input.length;){let r=this.nextToken();r&&(t.push(r),this.lastTokenType=r.type)}return t.push(this.makeToken(i.EOF,"")),t}makeToken(t,r){return{type:t,value:r,line:this.line,column:this.column}}peek(t=0){return this.input[this.pos+t]||""}advance(){let t=this.input[this.pos++]||"";return t===`
7
+ `?(this.line++,this.column=1):this.column++,t}skipWhitespace(){for(;this.pos<this.input.length;){let t=this.peek();if(t===" "||t===" "||t==="\r")this.advance();else if(t==="\\")if(this.peek(1)===`
8
+ `)this.advance(),this.advance();else break;else if(t==="#")for(;this.pos<this.input.length&&this.peek()!==`
9
+ `;)this.advance();else break}}nextToken(){if(this.skipWhitespace(),this.pos>=this.input.length)return null;let t=this.line,r=this.column,n=this.peek();return n===`
10
+ `?(this.advance(),{type:i.NEWLINE,value:`
11
+ `,line:t,column:r}):n==='"'?this.readString():n==="/"&&this.canBeRegex()?this.readRegex():this.isDigit(n)||n==="."&&this.isDigit(this.peek(1))?this.readNumber():this.isAlpha(n)||n==="_"?this.readIdentifier():this.readOperator()}canBeRegex(){return new Set([null,i.NEWLINE,i.SEMICOLON,i.LBRACE,i.RBRACE,i.LPAREN,i.LBRACKET,i.COMMA,i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN,i.AND,i.OR,i.NOT,i.MATCH,i.NOT_MATCH,i.QUESTION,i.COLON,i.LT,i.GT,i.LE,i.GE,i.EQ,i.NE,i.PLUS,i.MINUS,i.STAR,i.PERCENT,i.CARET,i.PRINT,i.PRINTF,i.IF,i.WHILE,i.DO,i.FOR,i.RETURN]).has(this.lastTokenType)}readString(){let t=this.line,r=this.column;this.advance();let n="";for(;this.pos<this.input.length&&this.peek()!=='"';)if(this.peek()==="\\"){this.advance();let a=this.advance();switch(a){case"n":n+=`
12
+ `;break;case"t":n+=" ";break;case"r":n+="\r";break;case"\\":n+="\\";break;case'"':n+='"';break;case"/":n+="/";break;default:n+=a}}else n+=this.advance();return this.peek()==='"'&&this.advance(),{type:i.STRING,value:n,line:t,column:r}}readRegex(){let t=this.line,r=this.column;this.advance();let n="";for(;this.pos<this.input.length&&this.peek()!=="/";)if(this.peek()==="\\")n+=this.advance(),this.pos<this.input.length&&(n+=this.advance());else{if(this.peek()===`
13
+ `)break;n+=this.advance()}return this.peek()==="/"&&this.advance(),n=rt(n),{type:i.REGEX,value:n,line:t,column:r}}readNumber(){let t=this.line,r=this.column,n="";for(;this.isDigit(this.peek());)n+=this.advance();if(this.peek()==="."&&this.isDigit(this.peek(1)))for(n+=this.advance();this.isDigit(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());this.isDigit(this.peek());)n+=this.advance();return{type:i.NUMBER,value:parseFloat(n),line:t,column:r}}readIdentifier(){let t=this.line,r=this.column,n="";for(;this.isAlphaNumeric(this.peek())||this.peek()==="_";)n+=this.advance();let a=tt[n];return a?{type:a,value:n,line:t,column:r}:{type:i.IDENT,value:n,line:t,column:r}}readOperator(){let t=this.line,r=this.column,n=this.advance(),a=this.peek();switch(n){case"+":return a==="+"?(this.advance(),{type:i.INCREMENT,value:"++",line:t,column:r}):a==="="?(this.advance(),{type:i.PLUS_ASSIGN,value:"+=",line:t,column:r}):{type:i.PLUS,value:"+",line:t,column:r};case"-":return a==="-"?(this.advance(),{type:i.DECREMENT,value:"--",line:t,column:r}):a==="="?(this.advance(),{type:i.MINUS_ASSIGN,value:"-=",line:t,column:r}):{type:i.MINUS,value:"-",line:t,column:r};case"*":return a==="*"?(this.advance(),{type:i.CARET,value:"**",line:t,column:r}):a==="="?(this.advance(),{type:i.STAR_ASSIGN,value:"*=",line:t,column:r}):{type:i.STAR,value:"*",line:t,column:r};case"/":return a==="="?(this.advance(),{type:i.SLASH_ASSIGN,value:"/=",line:t,column:r}):{type:i.SLASH,value:"/",line:t,column:r};case"%":return a==="="?(this.advance(),{type:i.PERCENT_ASSIGN,value:"%=",line:t,column:r}):{type:i.PERCENT,value:"%",line:t,column:r};case"^":return a==="="?(this.advance(),{type:i.CARET_ASSIGN,value:"^=",line:t,column:r}):{type:i.CARET,value:"^",line:t,column:r};case"=":return a==="="?(this.advance(),{type:i.EQ,value:"==",line:t,column:r}):{type:i.ASSIGN,value:"=",line:t,column:r};case"!":return a==="="?(this.advance(),{type:i.NE,value:"!=",line:t,column:r}):a==="~"?(this.advance(),{type:i.NOT_MATCH,value:"!~",line:t,column:r}):{type:i.NOT,value:"!",line:t,column:r};case"<":return a==="="?(this.advance(),{type:i.LE,value:"<=",line:t,column:r}):{type:i.LT,value:"<",line:t,column:r};case">":return a==="="?(this.advance(),{type:i.GE,value:">=",line:t,column:r}):a===">"?(this.advance(),{type:i.APPEND,value:">>",line:t,column:r}):{type:i.GT,value:">",line:t,column:r};case"&":return a==="&"?(this.advance(),{type:i.AND,value:"&&",line:t,column:r}):{type:i.IDENT,value:"&",line:t,column:r};case"|":return a==="|"?(this.advance(),{type:i.OR,value:"||",line:t,column:r}):{type:i.PIPE,value:"|",line:t,column:r};case"~":return{type:i.MATCH,value:"~",line:t,column:r};case"?":return{type:i.QUESTION,value:"?",line:t,column:r};case":":return{type:i.COLON,value:":",line:t,column:r};case",":return{type:i.COMMA,value:",",line:t,column:r};case";":return{type:i.SEMICOLON,value:";",line:t,column:r};case"(":return{type:i.LPAREN,value:"(",line:t,column:r};case")":return{type:i.RPAREN,value:")",line:t,column:r};case"{":return{type:i.LBRACE,value:"{",line:t,column:r};case"}":return{type:i.RBRACE,value:"}",line:t,column:r};case"[":return{type:i.LBRACKET,value:"[",line:t,column:r};case"]":return{type:i.RBRACKET,value:"]",line:t,column:r};case"$":return{type:i.DOLLAR,value:"$",line:t,column:r};default:return{type:i.IDENT,value:n,line:t,column:r}}}isDigit(t){return t>="0"&&t<="9"}isAlpha(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}isAlphaNumeric(t){return this.isDigit(t)||this.isAlpha(t)}};var U=class{tokens=[];pos=0;parse(t){let r=new B(t);return this.tokens=r.tokenize(),this.pos=0,this.parseProgram()}current(){return this.tokens[this.pos]||{type:i.EOF,value:"",line:0,column:0}}advance(){let t=this.current();return this.pos<this.tokens.length&&this.pos++,t}match(...t){return t.includes(this.current().type)}check(t){return this.current().type===t}expect(t,r){if(!this.check(t)){let n=this.current();throw new Error(r||`Expected ${t}, got ${n.type} at line ${n.line}:${n.column}`)}return this.advance()}skipNewlines(){for(;this.check(i.NEWLINE);)this.advance()}skipTerminators(){for(;this.check(i.NEWLINE)||this.check(i.SEMICOLON);)this.advance()}parseProgram(){let t=[],r=[];for(this.skipNewlines();!this.check(i.EOF)&&(this.skipNewlines(),!this.check(i.EOF));)this.check(i.FUNCTION)?t.push(this.parseFunction()):r.push(this.parseRule()),this.skipTerminators();return{functions:t,rules:r}}parseFunction(){this.expect(i.FUNCTION);let t=this.expect(i.IDENT).value;this.expect(i.LPAREN);let r=[];if(!this.check(i.RPAREN))for(r.push(this.expect(i.IDENT).value);this.check(i.COMMA);)this.advance(),r.push(this.expect(i.IDENT).value);this.expect(i.RPAREN),this.skipNewlines();let n=this.parseBlock();return{name:t,params:r,body:n}}parseRule(){let t;if(this.check(i.BEGIN))this.advance(),t={type:"begin"};else if(this.check(i.END))this.advance(),t={type:"end"};else if(this.check(i.LBRACE))t=void 0;else if(this.check(i.REGEX)){let a={type:"regex_pattern",pattern:this.advance().value};if(this.check(i.COMMA)){this.advance();let s;this.check(i.REGEX)?s={type:"regex_pattern",pattern:this.advance().value}:s={type:"expr_pattern",expression:this.parseExpression()},t={type:"range",start:a,end:s}}else t=a}else{let a={type:"expr_pattern",expression:this.parseExpression()};if(this.check(i.COMMA)){this.advance();let s;this.check(i.REGEX)?s={type:"regex_pattern",pattern:this.advance().value}:s={type:"expr_pattern",expression:this.parseExpression()},t={type:"range",start:a,end:s}}else t=a}this.skipNewlines();let r;return this.check(i.LBRACE)?r=this.parseBlock():r={type:"block",statements:[{type:"print",args:[{type:"field",index:{type:"number",value:0}}]}]},{pattern:t,action:r}}parseBlock(){this.expect(i.LBRACE),this.skipNewlines();let t=[];for(;!this.check(i.RBRACE)&&!this.check(i.EOF);)t.push(this.parseStatement()),this.skipTerminators();return this.expect(i.RBRACE),{type:"block",statements:t}}parseStatement(){if(this.check(i.LBRACE))return this.parseBlock();if(this.check(i.IF))return this.parseIf();if(this.check(i.WHILE))return this.parseWhile();if(this.check(i.DO))return this.parseDoWhile();if(this.check(i.FOR))return this.parseFor();if(this.check(i.BREAK))return this.advance(),{type:"break"};if(this.check(i.CONTINUE))return this.advance(),{type:"continue"};if(this.check(i.NEXT))return this.advance(),{type:"next"};if(this.check(i.NEXTFILE))return this.advance(),{type:"nextfile"};if(this.check(i.EXIT)){this.advance();let r;return!this.check(i.NEWLINE)&&!this.check(i.SEMICOLON)&&!this.check(i.RBRACE)&&!this.check(i.EOF)&&(r=this.parseExpression()),{type:"exit",code:r}}if(this.check(i.RETURN)){this.advance();let r;return!this.check(i.NEWLINE)&&!this.check(i.SEMICOLON)&&!this.check(i.RBRACE)&&!this.check(i.EOF)&&(r=this.parseExpression()),{type:"return",value:r}}if(this.check(i.DELETE)){this.advance();let r=this.parsePrimary();if(r.type!=="array_access"&&r.type!=="variable")throw new Error("delete requires array element or array");return{type:"delete",target:r}}return this.check(i.PRINT)?this.parsePrint():this.check(i.PRINTF)?this.parsePrintf():{type:"expr_stmt",expression:this.parseExpression()}}parseIf(){this.expect(i.IF),this.expect(i.LPAREN);let t=this.parseExpression();this.expect(i.RPAREN),this.skipNewlines();let r=this.parseStatement();this.skipTerminators();let n;return this.check(i.ELSE)&&(this.advance(),this.skipNewlines(),n=this.parseStatement()),{type:"if",condition:t,consequent:r,alternate:n}}parseWhile(){this.expect(i.WHILE),this.expect(i.LPAREN);let t=this.parseExpression();this.expect(i.RPAREN),this.skipNewlines();let r=this.parseStatement();return{type:"while",condition:t,body:r}}parseDoWhile(){this.expect(i.DO),this.skipNewlines();let t=this.parseStatement();this.skipNewlines(),this.expect(i.WHILE),this.expect(i.LPAREN);let r=this.parseExpression();return this.expect(i.RPAREN),{type:"do_while",body:t,condition:r}}parseFor(){if(this.expect(i.FOR),this.expect(i.LPAREN),this.check(i.IDENT)){let s=this.advance();if(this.check(i.IN)){this.advance();let o=this.expect(i.IDENT).value;this.expect(i.RPAREN),this.skipNewlines();let l=this.parseStatement();return{type:"for_in",variable:s.value,array:o,body:l}}this.pos--}let t;this.check(i.SEMICOLON)||(t=this.parseExpression()),this.expect(i.SEMICOLON);let r;this.check(i.SEMICOLON)||(r=this.parseExpression()),this.expect(i.SEMICOLON);let n;this.check(i.RPAREN)||(n=this.parseExpression()),this.expect(i.RPAREN),this.skipNewlines();let a=this.parseStatement();return{type:"for",init:t,condition:r,update:n,body:a}}parsePrint(){this.expect(i.PRINT);let t=[];if(this.check(i.NEWLINE)||this.check(i.SEMICOLON)||this.check(i.RBRACE)||this.check(i.PIPE)||this.check(i.GT)||this.check(i.APPEND))t.push({type:"field",index:{type:"number",value:0}});else for(t.push(this.parsePrintArg());this.check(i.COMMA);)this.advance(),t.push(this.parsePrintArg());let r;return this.check(i.GT)?(this.advance(),r={redirect:">",file:this.parsePrimary()}):this.check(i.APPEND)&&(this.advance(),r={redirect:">>",file:this.parsePrimary()}),{type:"print",args:t,output:r}}parsePrintArg(){return this.lookAheadForTernary()?this.parseTernary():this.parsePrintOr()}lookAheadForTernary(){let t=0,r=this.pos;for(;r<this.tokens.length;){let n=this.tokens[r];if(n.type===i.LPAREN&&t++,n.type===i.RPAREN&&t--,n.type===i.QUESTION&&t===0)return!0;if(n.type===i.NEWLINE||n.type===i.SEMICOLON||n.type===i.RBRACE||n.type===i.COMMA||n.type===i.PIPE||(n.type===i.GT||n.type===i.APPEND)&&t===0)return!1;r++}return!1}parsePrintOr(){let t=this.parsePrintAnd();for(;this.check(i.OR);){this.advance();let r=this.parsePrintAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parsePrintAnd(){let t=this.parsePrintIn();for(;this.check(i.AND);){this.advance();let r=this.parsePrintIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parsePrintIn(){let t=this.parsePrintMatch();if(this.check(i.IN)){this.advance();let r=String(this.expect(i.IDENT).value);return{type:"in",key:t,array:r}}return t}parsePrintMatch(){let t=this.parsePrintComparison();for(;this.match(i.MATCH,i.NOT_MATCH);){let r=this.advance().type===i.MATCH?"~":"!~",n=this.parsePrintComparison();t={type:"binary",operator:r,left:t,right:n}}return t}parsePrintComparison(){let t=this.parseConcatenation();for(;this.match(i.LT,i.LE,i.GE,i.EQ,i.NE);){let r=this.advance(),n=this.parseConcatenation();t={type:"binary",operator:{"<":"<","<=":"<=",">=":">=","==":"==","!=":"!="}[r.value],left:t,right:n}}return t}parsePrintf(){this.expect(i.PRINTF);let t=this.parsePrintArg(),r=[];for(;this.check(i.COMMA);)this.advance(),r.push(this.parsePrintArg());let n;return this.check(i.GT)?(this.advance(),n={redirect:">",file:this.parsePrimary()}):this.check(i.APPEND)&&(this.advance(),n={redirect:">>",file:this.parsePrimary()}),{type:"printf",format:t,args:r,output:n}}parseExpression(){return this.parseAssignment()}parseAssignment(){let t=this.parseTernary();if(this.match(i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN)){let r=this.advance(),n=this.parseAssignment();if(t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid assignment target");return{type:"assignment",operator:{"=":"=","+=":"+=","-=":"-=","*=":"*=","/=":"/=","%=":"%=","^=":"^="}[r.value],target:t,value:n}}return t}parseTernary(){let t=this.parseOr();if(this.check(i.QUESTION)){this.advance();let r=this.parseExpression();this.expect(i.COLON);let n=this.parseExpression();t={type:"ternary",condition:t,consequent:r,alternate:n}}return t}parseOr(){let t=this.parseAnd();for(;this.check(i.OR);){this.advance();let r=this.parseAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parseAnd(){let t=this.parseIn();for(;this.check(i.AND);){this.advance();let r=this.parseIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parseIn(){let t=this.parseMatch();if(this.check(i.IN)){this.advance();let r=this.expect(i.IDENT).value;return{type:"in",key:t,array:r}}return t}parseMatch(){let t=this.parseComparison();for(;this.match(i.MATCH,i.NOT_MATCH);){let r=this.advance().type===i.MATCH?"~":"!~",n=this.parseComparison();t={type:"binary",operator:r,left:t,right:n}}return t}parseComparison(){let t=this.parseConcatenation();for(;this.match(i.LT,i.LE,i.GT,i.GE,i.EQ,i.NE);){let r=this.advance(),n=this.parseConcatenation();t={type:"binary",operator:{"<":"<","<=":"<=",">":">",">=":">=","==":"==","!=":"!="}[r.value],left:t,right:n}}return t}parseConcatenation(){let t=this.parseAddSub();for(;this.canStartExpression()&&!this.isComparisonOrHigherOp();){let r=this.parseAddSub();t={type:"binary",operator:" ",left:t,right:r}}return t}canStartExpression(){return this.match(i.NUMBER,i.STRING,i.IDENT,i.DOLLAR,i.LPAREN,i.NOT,i.MINUS,i.PLUS,i.INCREMENT,i.DECREMENT)}isComparisonOrHigherOp(){return this.match(i.LT,i.LE,i.GT,i.GE,i.EQ,i.NE,i.AND,i.OR,i.QUESTION,i.MATCH,i.NOT_MATCH,i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN,i.COMMA,i.SEMICOLON,i.NEWLINE,i.RBRACE,i.RPAREN,i.RBRACKET,i.COLON,i.PIPE,i.APPEND,i.IN)}parseAddSub(){let t=this.parseMulDiv();for(;this.match(i.PLUS,i.MINUS);){let r=this.advance().value,n=this.parseMulDiv();t={type:"binary",operator:r,left:t,right:n}}return t}parseMulDiv(){let t=this.parseUnary();for(;this.match(i.STAR,i.SLASH,i.PERCENT);){let r=this.advance(),n=this.parseUnary();t={type:"binary",operator:{"*":"*","/":"/","%":"%"}[r.value],left:t,right:n}}return t}parseUnary(){if(this.check(i.INCREMENT)){this.advance();let t=this.parseUnary();return t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access"?{type:"unary",operator:"+",operand:{type:"unary",operator:"+",operand:t}}:{type:"pre_increment",operand:t}}if(this.check(i.DECREMENT)){this.advance();let t=this.parseUnary();return t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access"?{type:"unary",operator:"-",operand:{type:"unary",operator:"-",operand:t}}:{type:"pre_decrement",operand:t}}if(this.match(i.NOT,i.MINUS,i.PLUS)){let t=this.advance().value,r=this.parseUnary();return{type:"unary",operator:t,operand:r}}return this.parsePower()}parsePower(){let t=this.parsePostfix();if(this.check(i.CARET)){this.advance();let r=this.parsePower();t={type:"binary",operator:"^",left:t,right:r}}return t}parsePostfix(){let t=this.parsePrimary();if(this.check(i.INCREMENT)){if(this.advance(),t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid increment operand");return{type:"post_increment",operand:t}}if(this.check(i.DECREMENT)){if(this.advance(),t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid decrement operand");return{type:"post_decrement",operand:t}}return t}parsePrimary(){if(this.check(i.NUMBER))return{type:"number",value:this.advance().value};if(this.check(i.STRING))return{type:"string",value:this.advance().value};if(this.check(i.REGEX))return{type:"regex",pattern:this.advance().value};if(this.check(i.DOLLAR))return this.advance(),{type:"field",index:this.parsePrimary()};if(this.check(i.LPAREN)){this.advance();let t=this.parseExpression();if(this.check(i.COMMA)){let r=[t];for(;this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());return this.expect(i.RPAREN),{type:"tuple",elements:r}}return this.expect(i.RPAREN),t}if(this.check(i.GETLINE)){this.advance();let t,r;return this.check(i.IDENT)&&(t=this.advance().value),this.check(i.LT)&&(this.advance(),r=this.parsePrimary()),{type:"getline",variable:t,file:r}}if(this.check(i.IDENT)){let t=this.advance().value;if(this.check(i.LPAREN)){this.advance();let r=[];if(!this.check(i.RPAREN))for(r.push(this.parseExpression());this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());return this.expect(i.RPAREN),{type:"call",name:t,args:r}}if(this.check(i.LBRACKET)){this.advance();let r=[this.parseExpression()];for(;this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());this.expect(i.RBRACKET);let n;if(r.length===1)n=r[0];else{n=r[0];for(let a=1;a<r.length;a++)n={type:"binary",operator:" ",left:{type:"binary",operator:" ",left:n,right:{type:"variable",name:"SUBSEP"}},right:r[a]}}return{type:"array_access",array:t,key:n}}return{type:"variable",name:t}}throw new Error(`Unexpected token: ${this.current().type} at line ${this.current().line}:${this.current().column}`)}};var it={name:"awk",summary:"pattern scanning and text processing language",usage:"awk [OPTIONS] 'PROGRAM' [FILE...]",options:["-F FS use FS as field separator","-v VAR=VAL assign VAL to variable VAR"," --help display this help and exit"]},Wt={name:"awk",async execute(e,t){if(Q(e))return K(it);let r=/\s+/,n=" ",a={},s=0;for(let h=0;h<e.length;h++){let f=e[h];if(f==="-F"&&h+1<e.length)n=se(e[++h]),r=ae(n),s=h+1;else if(f.startsWith("-F"))n=se(f.slice(2)),r=ae(n),s=h+1;else if(f==="-v"&&h+1<e.length){let S=e[++h],G=S.indexOf("=");if(G>0){let k=S.slice(0,G),oe=S.slice(G+1);a[k]=oe}s=h+1}else{if(f.startsWith("--"))return x("awk",f);if(f.startsWith("-")&&f.length>1){let S=f[1];if(S!=="F"&&S!=="v")return x("awk",`-${S}`);s=h+1}else if(!f.startsWith("-")){s=h;break}}}if(s>=e.length)return{stdout:"",stderr:`awk: missing program
14
+ `,exitCode:1};let o=e[s],l=e.slice(s+1),u=new U,m;try{m=u.parse(o)}catch(h){return{stdout:"",stderr:`awk: ${h instanceof Error?h.message:String(h)}
15
+ `,exitCode:1}}let N={readFile:t.fs.readFile.bind(t.fs),writeFile:t.fs.writeFile.bind(t.fs),appendFile:async(h,f)=>{try{let S=await t.fs.readFile(h);await t.fs.writeFile(h,S+f)}catch{await t.fs.writeFile(h,f)}},resolvePath:t.fs.resolvePath.bind(t.fs)},c=V({fieldSep:r,maxIterations:t.limits?.maxAwkIterations,fs:N,cwd:t.cwd});c.FS=n,c.vars={...a},c.ARGC=l.length+1,c.ARGV={0:"awk"};for(let h=0;h<l.length;h++)c.ARGV[String(h+1)]=l[h];let d=new _(c);d.execute(m);try{if(await d.executeBegin(),c.shouldExit)return{stdout:d.getOutput(),stderr:"",exitCode:d.getExitCode()};let h=[];if(l.length>0)for(let f of l)try{let S=t.fs.resolvePath(t.cwd,f),k=(await t.fs.readFile(S)).split(`
16
+ `);k.length>0&&k[k.length-1]===""&&k.pop(),h.push({filename:f,lines:k})}catch{return{stdout:"",stderr:`awk: ${f}: No such file or directory
17
+ `,exitCode:1}}else{let f=t.stdin.split(`
18
+ `);f.length>0&&f[f.length-1]===""&&f.pop(),h.push({filename:"",lines:f})}for(let f of h){for(c.FILENAME=f.filename,c.FNR=0,c.lines=f.lines,c.lineIndex=-1,c.shouldNextFile=!1;c.lineIndex<f.lines.length-1&&(c.lineIndex++,await d.executeLine(f.lines[c.lineIndex]),!(c.shouldExit||c.shouldNextFile)););if(c.shouldExit)break}return c.shouldExit||await d.executeEnd(),{stdout:d.getOutput(),stderr:"",exitCode:d.getExitCode()}}catch(h){let f=h instanceof Error?h.message:String(h);return{stdout:d.getOutput(),stderr:`awk: ${f}
19
+ `,exitCode:2}}}};function se(e){return e.replace(/\\t/g," ").replace(/\\n/g,`
20
+ `).replace(/\\r/g,"\r").replace(/\\\\/g,"\\")}function ae(e){if(e===" ")return/\s+/;if(/[[\](){}.*+?^$|\\]/.test(e))try{return new RegExp(e)}catch{return new RegExp(le(e))}return new RegExp(le(e))}function le(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}export{Wt as awkCommand2};
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ import{i as O}from"./chunk-LV662IGP.js";import{a as K,b as Q,c as x}from"./chunk-GTNBSMZR.js";import"./chunk-5KNEBKYN.js";function H(e={}){let{fieldSep:t=/\s+/,maxIterations:r=1e4,maxRecursionDepth:n=1e3,fs:a,cwd:s}=e;return{FS:" ",OFS:" ",ORS:`
3
+ `,NR:0,NF:0,FNR:0,FILENAME:"",RSTART:0,RLENGTH:-1,SUBSEP:"",fields:[],line:"",vars:{},arrays:{},ARGC:0,ARGV:{},functions:new Map,fieldSep:t,maxIterations:r,maxRecursionDepth:n,currentRecursionDepth:0,exitCode:0,shouldExit:!1,shouldNext:!1,shouldNextFile:!1,loopBreak:!1,loopContinue:!1,hasReturn:!1,output:"",openedFiles:new Set,fs:a,cwd:s}}function j(e,t,r){switch(r){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":return t!==0?e/t:0;case"%":return t!==0?e%t:0;case"^":case"**":return e**t;default:return 0}}function A(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}function w(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}async function ce(e,t,r){return e.length===0?t.line.length:w(await r.evalExpr(e[0])).length}async function he(e,t,r){if(e.length<2)return"";let n=w(await r.evalExpr(e[0])),a=Math.floor(A(await r.evalExpr(e[1])))-1;if(e.length>=3){let s=Math.floor(A(await r.evalExpr(e[2])));return n.substr(Math.max(0,a),s)}return n.substr(Math.max(0,a))}async function ue(e,t,r){if(e.length<2)return 0;let n=w(await r.evalExpr(e[0])),a=w(await r.evalExpr(e[1])),s=n.indexOf(a);return s===-1?0:s+1}async function pe(e,t,r){if(e.length<2)return 0;let n=w(await r.evalExpr(e[0])),a=e[1];if(a.type!=="variable")return 0;let s=a.name,o=t.FS;if(e.length>=3){let u=w(await r.evalExpr(e[2]));o=u===" "?/\s+/:u}else t.FS===" "&&(o=/\s+/);let l=n.split(o);t.arrays[s]={};for(let u=0;u<l.length;u++)t.arrays[s][String(u+1)]=l[u];return l.length}async function fe(e,t,r){if(e.length<2)return 0;let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s="$0";if(e.length>=3){let l=e[2];l.type==="variable"?s=l.name:l.type==="field"&&(s=`$${Math.floor(A(await r.evalExpr(l.index)))}`)}let o;if(s==="$0")o=t.line;else if(s.startsWith("$")){let l=parseInt(s.slice(1),10)-1;o=t.fields[l]||""}else o=w(t.vars[s]??"");try{let l=new RegExp(n),u=o.replace(l,z(a)),m=u!==o?1:0;if(s==="$0")t.line=u,t.fields=t.FS===" "?u.trim().split(/\s+/).filter(Boolean):u.split(t.fieldSep),t.NF=t.fields.length;else if(s.startsWith("$")){let N=parseInt(s.slice(1),10)-1;for(;t.fields.length<=N;)t.fields.push("");t.fields[N]=u,t.NF=t.fields.length,t.line=t.fields.join(t.OFS)}else t.vars[s]=u;return m}catch{return 0}}async function de(e,t,r){if(e.length<2)return 0;let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s="$0";if(e.length>=3){let l=e[2];l.type==="variable"?s=l.name:l.type==="field"&&(s=`$${Math.floor(A(await r.evalExpr(l.index)))}`)}let o;if(s==="$0")o=t.line;else if(s.startsWith("$")){let l=parseInt(s.slice(1),10)-1;o=t.fields[l]||""}else o=w(t.vars[s]??"");try{let l=new RegExp(n,"g"),u=o.match(l),m=u?u.length:0,N=o.replace(l,z(a));if(s==="$0")t.line=N,t.fields=t.FS===" "?N.trim().split(/\s+/).filter(Boolean):N.split(t.fieldSep),t.NF=t.fields.length;else if(s.startsWith("$")){let c=parseInt(s.slice(1),10)-1;for(;t.fields.length<=c;)t.fields.push("");t.fields[c]=N,t.NF=t.fields.length,t.line=t.fields.join(t.OFS)}else t.vars[s]=N;return m}catch{return 0}}function z(e){return t=>{let r="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length){let a=e[n+1];a==="&"?(r+="&",n+=2):a==="\\"?(r+="\\",n+=2):(r+=e[n+1],n+=2)}else e[n]==="&"?(r+=t,n++):(r+=e[n],n++);return r}}async function Ee(e,t,r){if(e.length<2)return t.RSTART=0,t.RLENGTH=-1,0;let n=w(await r.evalExpr(e[0])),a;e[1].type==="regex"?a=e[1].pattern:(a=w(await r.evalExpr(e[1])),a.startsWith("/")&&a.endsWith("/")&&(a=a.slice(1,-1)));try{let o=new RegExp(a).exec(n);if(o)return t.RSTART=o.index+1,t.RLENGTH=o[0].length,t.RSTART}catch{}return t.RSTART=0,t.RLENGTH=-1,0}async function Ne(e,t,r){if(e.length<3)return"";let n;e[0].type==="regex"?n=e[0].pattern:(n=w(await r.evalExpr(e[0])),n.startsWith("/")&&n.endsWith("/")&&(n=n.slice(1,-1)));let a=w(await r.evalExpr(e[1])),s=w(await r.evalExpr(e[2])),o=e.length>=4?w(await r.evalExpr(e[3])):t.line;try{let l=s.toLowerCase()==="g",u=l?0:parseInt(s,10)||1;if(l){let m=new RegExp(n,"g");return o.replace(m,(N,...c)=>q(a,N,c.slice(0,-2)))}else{let m=0,N=new RegExp(n,"g");return o.replace(N,(c,...d)=>(m++,m===u?q(a,c,d.slice(0,-2)):c))}}catch{return o}}function q(e,t,r){let n="",a=0;for(;a<e.length;)if(e[a]==="\\"&&a+1<e.length){let s=e[a+1];if(s==="&")n+="&",a+=2;else if(s==="0")n+=t,a+=2;else if(s>="1"&&s<="9"){let o=parseInt(s,10)-1;n+=r[o]||"",a+=2}else s==="n"?(n+=`
4
+ `,a+=2):s==="t"?(n+=" ",a+=2):(n+=s,a+=2)}else e[a]==="&"?(n+=t,a++):(n+=e[a],a++);return n}async function ye(e,t,r){return e.length===0?"":w(await r.evalExpr(e[0])).toLowerCase()}async function me(e,t,r){return e.length===0?"":w(await r.evalExpr(e[0])).toUpperCase()}async function we(e,t,r){if(e.length===0)return"";let n=w(await r.evalExpr(e[0])),a=[];for(let s=1;s<e.length;s++)a.push(await r.evalExpr(e[s]));return X(n,a)}async function Re(e,t,r){return e.length===0?0:Math.floor(A(await r.evalExpr(e[0])))}async function Se(e,t,r){return e.length===0?0:Math.sqrt(A(await r.evalExpr(e[0])))}async function Ae(e,t,r){return e.length===0?0:Math.sin(A(await r.evalExpr(e[0])))}async function ge(e,t,r){return e.length===0?0:Math.cos(A(await r.evalExpr(e[0])))}async function ve(e,t,r){let n=e.length>0?A(await r.evalExpr(e[0])):0,a=e.length>1?A(await r.evalExpr(e[1])):0;return Math.atan2(n,a)}async function ke(e,t,r){return e.length===0?0:Math.log(A(await r.evalExpr(e[0])))}async function Ie(e,t,r){return e.length===0?1:Math.exp(A(await r.evalExpr(e[0])))}function be(e,t,r){return t.random?t.random():Math.random()}async function Ce(e,t,r){let n=e.length>0?A(await r.evalExpr(e[0])):Date.now();return t.vars._srand_seed=n,n}function $(e,t){return()=>{throw new Error(`${e}() is not supported - ${t}`)}}function W(e){return()=>{throw new Error(`function '${e}()' is not implemented`)}}function X(e,t){let r=0,n="",a=0;for(;a<e.length;)if(e[a]==="%"&&a+1<e.length){let s=a+1,o="",l="",u="";for(;s<e.length&&/[-+ #0]/.test(e[s]);)o+=e[s++];for(;s<e.length&&/\d/.test(e[s]);)l+=e[s++];if(e[s]===".")for(s++;s<e.length&&/\d/.test(e[s]);)u+=e[s++];let m=e[s],N=t[r];switch(m){case"s":{let c=N!==void 0?String(N):"";if(u&&(c=c.substring(0,parseInt(u,10))),l){let d=parseInt(l,10);o.includes("-")?c=c.padEnd(d):c=c.padStart(d)}n+=c,r++;break}case"d":case"i":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=String(c);if(l){let h=parseInt(l,10);if(o.includes("-"))d=d.padEnd(h);else if(o.includes("0")&&!o.includes("-")){let f=c<0?"-":"";d=f+Math.abs(c).toString().padStart(h-f.length,"0")}else d=d.padStart(h)}n+=d,r++;break}case"f":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c.toFixed(d);if(l){let f=parseInt(l,10);o.includes("-")?h=h.padEnd(f):h=h.padStart(f)}n+=h,r++;break}case"e":case"E":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c.toExponential(d);if(m==="E"&&(h=h.toUpperCase()),l){let f=parseInt(l,10);o.includes("-")?h=h.padEnd(f):h=h.padStart(f)}n+=h,r++;break}case"g":case"G":{let c=N!==void 0?Number(N):0;Number.isNaN(c)&&(c=0);let d=u?parseInt(u,10):6,h=c!==0?Math.floor(Math.log10(Math.abs(c))):0,f;if(c===0?f="0":h<-4||h>=d?(f=c.toExponential(d-1),m==="G"&&(f=f.toUpperCase())):f=c.toPrecision(d),f=f.replace(/\.?0+$/,"").replace(/\.?0+e/,"e"),l){let S=parseInt(l,10);o.includes("-")?f=f.padEnd(S):f=f.padStart(S)}n+=f,r++;break}case"x":case"X":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=Math.abs(c).toString(16);if(m==="X"&&(d=d.toUpperCase()),l){let h=parseInt(l,10);o.includes("0")?d=d.padStart(h,"0"):o.includes("-")?d=d.padEnd(h):d=d.padStart(h)}n+=c<0?`-${d}`:d,r++;break}case"o":{let c=N!==void 0?Math.floor(Number(N)):0;Number.isNaN(c)&&(c=0);let d=Math.abs(c).toString(8);if(l){let h=parseInt(l,10);o.includes("0")?d=d.padStart(h,"0"):o.includes("-")?d=d.padEnd(h):d=d.padStart(h)}n+=c<0?`-${d}`:d,r++;break}case"c":{typeof N=="number"?n+=String.fromCharCode(N):n+=String(N??"").charAt(0)||"",r++;break}case"%":n+="%";break;default:n+=e.substring(a,s+1)}a=s+1}else if(e[a]==="\\"&&a+1<e.length){let s=e[a+1];switch(s){case"n":n+=`
5
+ `;break;case"t":n+=" ";break;case"r":n+="\r";break;case"\\":n+="\\";break;default:n+=s}a+=2}else n+=e[a++];return n}var Z={length:ce,substr:he,index:ue,split:pe,sub:fe,gsub:de,match:Ee,gensub:Ne,tolower:ye,toupper:me,sprintf:we,int:Re,sqrt:Se,sin:Ae,cos:ge,atan2:ve,log:ke,exp:Ie,rand:be,srand:Ce,system:$("system","shell execution not allowed in sandboxed environment"),close:$("close","file operations not allowed"),fflush:$("fflush","file operations not allowed"),systime:W("systime"),mktime:W("mktime"),strftime:W("strftime")};function R(e){return typeof e=="number"?e!==0:e!==""}function E(e){if(typeof e=="number")return e;let t=parseFloat(e);return Number.isNaN(t)?0:t}function y(e){return typeof e=="string"?e:(Number.isInteger(e),String(e))}function D(e){if(typeof e=="number")return!0;let t=String(e).trim();return t===""?!1:!Number.isNaN(Number(t))}function P(e,t){try{return new RegExp(e).test(t)}catch{return!1}}function J(e,t){return e.FS===" "?t.trim().split(/\s+/).filter(Boolean):t.split(e.fieldSep)}function I(e,t){return t===0?e.line:t<0||t>e.fields.length?"":e.fields[t-1]??""}function M(e,t,r){if(t===0)e.line=y(r),e.fields=J(e,e.line),e.NF=e.fields.length;else if(t>0){for(;e.fields.length<t;)e.fields.push("");e.fields[t-1]=y(r),e.NF=e.fields.length,e.line=e.fields.join(e.OFS)}}function T(e,t){e.line=t,e.fields=J(e,t),e.NF=e.fields.length}function Y(e,t){if(e.FS=t,t===" ")e.fieldSep=/\s+/;else try{e.fieldSep=new RegExp(t)}catch{e.fieldSep=new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))}}function b(e,t){switch(t){case"FS":return e.FS;case"OFS":return e.OFS;case"ORS":return e.ORS;case"NR":return e.NR;case"NF":return e.NF;case"FNR":return e.FNR;case"FILENAME":return e.FILENAME;case"RSTART":return e.RSTART;case"RLENGTH":return e.RLENGTH;case"SUBSEP":return e.SUBSEP;case"ARGC":return e.ARGC}return e.vars[t]??""}function g(e,t,r){switch(t){case"FS":Y(e,y(r));return;case"OFS":e.OFS=y(r);return;case"ORS":e.ORS=y(r);return;case"NR":e.NR=Math.floor(E(r));return;case"NF":{let n=Math.floor(E(r));if(n<e.NF)e.fields=e.fields.slice(0,n),e.line=e.fields.join(e.OFS);else if(n>e.NF){for(;e.fields.length<n;)e.fields.push("");e.line=e.fields.join(e.OFS)}e.NF=n;return}case"FNR":e.FNR=Math.floor(E(r));return;case"FILENAME":e.FILENAME=y(r);return;case"RSTART":e.RSTART=Math.floor(E(r));return;case"RLENGTH":e.RLENGTH=Math.floor(E(r));return;case"SUBSEP":e.SUBSEP=y(r);return}e.vars[t]=r}function C(e,t,r){return t==="ARGV"?e.ARGV[r]??"":e.arrays[t]?.[r]??""}function F(e,t,r,n){e.arrays[t]||(e.arrays[t]={}),e.arrays[t][r]=n}function ee(e,t,r){return t==="ARGV"?e.ARGV[r]!==void 0:e.arrays[t]?.[r]!==void 0}function te(e,t,r){e.arrays[t]&&delete e.arrays[t][r]}function re(e,t){delete e.arrays[t]}var V=null;function ie(e){V=e}async function p(e,t){switch(t.type){case"number":return t.value;case"string":return t.value;case"regex":return P(t.pattern,e.line)?1:0;case"field":return Le(e,t);case"variable":return b(e,t.name);case"array_access":return Oe(e,t);case"binary":return Pe(e,t);case"unary":return Te(e,t);case"ternary":return R(await p(e,t.condition))?p(e,t.consequent):p(e,t.alternate);case"call":return _e(e,t.name,t.args);case"assignment":return De(e,t);case"pre_increment":return Be(e,t.operand);case"pre_decrement":return Ue(e,t.operand);case"post_increment":return xe(e,t.operand);case"post_decrement":return He(e,t.operand);case"in":return $e(e,t.key,t.array);case"getline":return We(e,t.variable,t.file);case"tuple":return Ve(e,t.elements);default:return""}}async function Le(e,t){let r=Math.floor(E(await p(e,t.index)));return I(e,r)}async function Oe(e,t){let r=y(await p(e,t.key));return C(e,t.array,r)}async function Pe(e,t){let r=t.operator;if(r==="||")return R(await p(e,t.left))||R(await p(e,t.right))?1:0;if(r==="&&")return R(await p(e,t.left))&&R(await p(e,t.right))?1:0;if(r==="~"){let l=await p(e,t.left),u=t.right.type==="regex"?t.right.pattern:y(await p(e,t.right));try{return new RegExp(u).test(y(l))?1:0}catch{return 0}}if(r==="!~"){let l=await p(e,t.left),u=t.right.type==="regex"?t.right.pattern:y(await p(e,t.right));try{return new RegExp(u).test(y(l))?0:1}catch{return 1}}let n=await p(e,t.left),a=await p(e,t.right);if(r===" ")return y(n)+y(a);if(Me(r))return Fe(n,a,r);let s=E(n),o=E(a);return j(s,o,r)}function Me(e){return["<","<=",">",">=","==","!="].includes(e)}function Fe(e,t,r){let n=D(e),a=D(t);if(n&&a){let l=E(e),u=E(t);switch(r){case"<":return l<u?1:0;case"<=":return l<=u?1:0;case">":return l>u?1:0;case">=":return l>=u?1:0;case"==":return l===u?1:0;case"!=":return l!==u?1:0}}let s=y(e),o=y(t);switch(r){case"<":return s<o?1:0;case"<=":return s<=o?1:0;case">":return s>o?1:0;case">=":return s>=o?1:0;case"==":return s===o?1:0;case"!=":return s!==o?1:0}return 0}async function Te(e,t){let r=await p(e,t.operand);switch(t.operator){case"!":return R(r)?0:1;case"-":return-E(r);case"+":return+E(r);default:return r}}async function _e(e,t,r){let n=Z[t];if(n)return n(r,e,{evalExpr:s=>p(e,s)});let a=e.functions.get(t);return a?Ge(e,a,r):""}async function Ge(e,t,r){if(e.currentRecursionDepth++,e.currentRecursionDepth>e.maxRecursionDepth)throw e.currentRecursionDepth--,new O(`awk: recursion depth exceeded maximum (${e.maxRecursionDepth})`,"recursion",e.output);let n={};for(let s of t.params)n[s]=e.vars[s];for(let s=0;s<t.params.length;s++){let o=t.params[s],l=s<r.length?await p(e,r[s]):"";e.vars[o]=l}e.hasReturn=!1,e.returnValue=void 0,V&&await V(e,t.body.statements);let a=e.returnValue??"";for(let s of t.params)n[s]!==void 0?e.vars[s]=n[s]:delete e.vars[s];return e.hasReturn=!1,e.returnValue=void 0,e.currentRecursionDepth--,a}async function De(e,t){let r=await p(e,t.value),n=t.target,a=t.operator,s;if(a==="=")s=r;else{let o;if(n.type==="field"){let m=Math.floor(E(await p(e,n.index)));o=I(e,m)}else if(n.type==="variable")o=b(e,n.name);else{let m=y(await p(e,n.key));o=C(e,n.array,m)}let l=E(o),u=E(r);switch(a){case"+=":s=l+u;break;case"-=":s=l-u;break;case"*=":s=l*u;break;case"/=":s=u!==0?l/u:0;break;case"%=":s=u!==0?l%u:0;break;case"^=":s=l**u;break;default:s=r}}if(n.type==="field"){let o=Math.floor(E(await p(e,n.index)));M(e,o,s)}else if(n.type==="variable")g(e,n.name,s);else{let o=y(await p(e,n.key));F(e,n.array,o,s)}return s}async function Be(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n))+1,M(e,n,r)}else if(t.type==="variable")r=E(b(e,t.name))+1,g(e,t.name,r);else{let n=y(await p(e,t.key));r=E(C(e,t.array,n))+1,F(e,t.array,n,r)}return r}async function Ue(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n))-1,M(e,n,r)}else if(t.type==="variable")r=E(b(e,t.name))-1,g(e,t.name,r);else{let n=y(await p(e,t.key));r=E(C(e,t.array,n))-1,F(e,t.array,n,r)}return r}async function xe(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n)),M(e,n,r+1)}else if(t.type==="variable")r=E(b(e,t.name)),g(e,t.name,r+1);else{let n=y(await p(e,t.key));r=E(C(e,t.array,n)),F(e,t.array,n,r+1)}return r}async function He(e,t){let r;if(t.type==="field"){let n=Math.floor(E(await p(e,t.index)));r=E(I(e,n)),M(e,n,r-1)}else if(t.type==="variable")r=E(b(e,t.name)),g(e,t.name,r-1);else{let n=y(await p(e,t.key));r=E(C(e,t.array,n)),F(e,t.array,n,r-1)}return r}async function $e(e,t,r){let n;if(t.type==="tuple"){let a=[];for(let s of t.elements)a.push(y(await p(e,s)));n=a.join(e.SUBSEP)}else n=y(await p(e,t));return ee(e,r,n)?1:0}async function We(e,t,r){if(r)return Xe(e,t,r);if(!e.lines||e.lineIndex===void 0)return-1;let n=e.lineIndex+1;if(n>=e.lines.length)return 0;let a=e.lines[n];return t?g(e,t,a):T(e,a),e.NR++,e.lineIndex=n,1}async function Xe(e,t,r){if(!e.fs||!e.cwd)return-1;let n=y(await p(e,r)),a=e.fs.resolvePath(e.cwd,n),s=`__fc_${a}`,o=`__fi_${a}`,l,u;if(e.vars[s]===void 0)try{l=(await e.fs.readFile(a)).split(`
6
+ `),l.length>0&&l[l.length-1]===""&&l.pop(),e.vars[s]=JSON.stringify(l),e.vars[o]=-1,u=-1}catch{return-1}else l=JSON.parse(e.vars[s]),u=e.vars[o];let m=u+1;if(m>=l.length)return 0;let N=l[m];return e.vars[o]=m,t?g(e,t,N):T(e,N),1}async function Ve(e,t){if(t.length===0)return"";for(let r=0;r<t.length-1;r++)await p(e,t[r]);return p(e,t[t.length-1])}ie(L);async function L(e,t){for(let r of t)if(await v(e,r),Ke(e))break}function Ke(e){return e.shouldExit||e.shouldNext||e.shouldNextFile||e.loopBreak||e.loopContinue||e.hasReturn}async function v(e,t){switch(t.type){case"block":await L(e,t.statements);break;case"expr_stmt":await p(e,t.expression);break;case"print":await Qe(e,t.args,t.output);break;case"printf":await je(e,t.format,t.args,t.output);break;case"if":await qe(e,t);break;case"while":await ze(e,t);break;case"do_while":await Ze(e,t);break;case"for":await Je(e,t);break;case"for_in":await Ye(e,t);break;case"break":e.loopBreak=!0;break;case"continue":e.loopContinue=!0;break;case"next":e.shouldNext=!0;break;case"nextfile":e.shouldNextFile=!0;break;case"exit":e.shouldExit=!0,e.exitCode=t.code?Math.floor(E(await p(e,t.code))):0;break;case"return":e.hasReturn=!0,e.returnValue=t.value?await p(e,t.value):"";break;case"delete":await et(e,t.target);break}}async function Qe(e,t,r){let n=[];for(let s of t)n.push(y(await p(e,s)));let a=n.join(e.OFS)+e.ORS;r?await ne(e,r.redirect,r.file,a):e.output+=a}async function je(e,t,r,n){let a=y(await p(e,t)),s=[];for(let l of r)s.push(await p(e,l));let o=X(a,s);n?await ne(e,n.redirect,n.file,o):e.output+=o}async function ne(e,t,r,n){if(!e.fs||!e.cwd){e.output+=n;return}let a=y(await p(e,r)),s=e.fs.resolvePath(e.cwd,a);t===">"?e.openedFiles.has(s)?await e.fs.appendFile(s,n):(await e.fs.writeFile(s,n),e.openedFiles.add(s)):(e.openedFiles.has(s)||e.openedFiles.add(s),await e.fs.appendFile(s,n))}async function qe(e,t){R(await p(e,t.condition))?await v(e,t.consequent):t.alternate&&await v(e,t.alternate)}async function ze(e,t){let r=0;for(;R(await p(e,t.condition));){if(r++,r>e.maxIterations)throw new O(`awk: while loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}}async function Ze(e,t){let r=0;do{if(r++,r>e.maxIterations)throw new O(`awk: do-while loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}while(R(await p(e,t.condition)))}async function Je(e,t){t.init&&await p(e,t.init);let r=0;for(;!t.condition||R(await p(e,t.condition));){if(r++,r>e.maxIterations)throw new O(`awk: for loop exceeded maximum iterations (${e.maxIterations})`,"iterations",e.output);if(e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break;t.update&&await p(e,t.update)}}async function Ye(e,t){let r=e.arrays[t.array];if(r)for(let n of Object.keys(r)){if(e.vars[t.variable]=n,e.loopContinue=!1,await v(e,t.body),e.loopBreak){e.loopBreak=!1;break}if(e.shouldExit||e.shouldNext||e.hasReturn)break}}async function et(e,t){if(t.type==="array_access"){let r=y(await p(e,t.key));te(e,t.array,r)}else t.type==="variable"&&re(e,t.name)}var _=class{ctx;program=null;rangeStates=[];constructor(t){this.ctx=t}execute(t){this.program=t,this.ctx.output="";for(let r of t.functions)this.ctx.functions.set(r.name,r);this.rangeStates=t.rules.map(()=>!1)}async executeBegin(){if(this.program){for(let t of this.program.rules)if(t.pattern?.type==="begin"&&(await L(this.ctx,t.action.statements),this.ctx.shouldExit))break}}async executeLine(t){if(!(!this.program||this.ctx.shouldExit)){T(this.ctx,t),this.ctx.NR++,this.ctx.FNR++,this.ctx.shouldNext=!1;for(let r=0;r<this.program.rules.length&&!(this.ctx.shouldExit||this.ctx.shouldNext||this.ctx.shouldNextFile);r++){let n=this.program.rules[r];n.pattern?.type==="begin"||n.pattern?.type==="end"||await this.matchesRule(n,r)&&await L(this.ctx,n.action.statements)}}}async executeEnd(){if(!(!this.program||this.ctx.shouldExit)){for(let t of this.program.rules)if(t.pattern?.type==="end"&&(await L(this.ctx,t.action.statements),this.ctx.shouldExit))break}}getOutput(){return this.ctx.output}getExitCode(){return this.ctx.exitCode}getContext(){return this.ctx}async matchesRule(t,r){let n=t.pattern;if(!n)return!0;switch(n.type){case"begin":case"end":return!1;case"regex_pattern":return P(n.pattern,this.ctx.line);case"expr_pattern":return R(await p(this.ctx,n.expression));case"range":{let a=await this.matchPattern(n.start),s=await this.matchPattern(n.end);return this.rangeStates[r]?(s&&(this.rangeStates[r]=!1),!0):a?(this.rangeStates[r]=!0,s&&(this.rangeStates[r]=!1),!0):!1}default:return!1}}async matchPattern(t){switch(t.type){case"regex_pattern":return P(t.pattern,this.ctx.line);case"expr_pattern":return R(await p(this.ctx,t.expression));default:return!1}}};var i;(function(e){e.NUMBER="NUMBER",e.STRING="STRING",e.REGEX="REGEX",e.IDENT="IDENT",e.BEGIN="BEGIN",e.END="END",e.IF="IF",e.ELSE="ELSE",e.WHILE="WHILE",e.DO="DO",e.FOR="FOR",e.IN="IN",e.BREAK="BREAK",e.CONTINUE="CONTINUE",e.NEXT="NEXT",e.NEXTFILE="NEXTFILE",e.EXIT="EXIT",e.RETURN="RETURN",e.DELETE="DELETE",e.FUNCTION="FUNCTION",e.PRINT="PRINT",e.PRINTF="PRINTF",e.GETLINE="GETLINE",e.PLUS="PLUS",e.MINUS="MINUS",e.STAR="STAR",e.SLASH="SLASH",e.PERCENT="PERCENT",e.CARET="CARET",e.EQ="EQ",e.NE="NE",e.LT="LT",e.GT="GT",e.LE="LE",e.GE="GE",e.MATCH="MATCH",e.NOT_MATCH="NOT_MATCH",e.AND="AND",e.OR="OR",e.NOT="NOT",e.ASSIGN="ASSIGN",e.PLUS_ASSIGN="PLUS_ASSIGN",e.MINUS_ASSIGN="MINUS_ASSIGN",e.STAR_ASSIGN="STAR_ASSIGN",e.SLASH_ASSIGN="SLASH_ASSIGN",e.PERCENT_ASSIGN="PERCENT_ASSIGN",e.CARET_ASSIGN="CARET_ASSIGN",e.INCREMENT="INCREMENT",e.DECREMENT="DECREMENT",e.QUESTION="QUESTION",e.COLON="COLON",e.COMMA="COMMA",e.SEMICOLON="SEMICOLON",e.NEWLINE="NEWLINE",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.LBRACKET="LBRACKET",e.RBRACKET="RBRACKET",e.DOLLAR="DOLLAR",e.APPEND="APPEND",e.PIPE="PIPE",e.EOF="EOF"})(i||(i={}));var tt={BEGIN:i.BEGIN,END:i.END,if:i.IF,else:i.ELSE,while:i.WHILE,do:i.DO,for:i.FOR,in:i.IN,break:i.BREAK,continue:i.CONTINUE,next:i.NEXT,nextfile:i.NEXTFILE,exit:i.EXIT,return:i.RETURN,delete:i.DELETE,function:i.FUNCTION,print:i.PRINT,printf:i.PRINTF,getline:i.GETLINE};function rt(e){return e.replace(/\[\[:space:\]\]/g,"[ \\t\\n\\r\\f\\v]").replace(/\[\[:blank:\]\]/g,"[ \\t]").replace(/\[\[:alpha:\]\]/g,"[a-zA-Z]").replace(/\[\[:digit:\]\]/g,"[0-9]").replace(/\[\[:alnum:\]\]/g,"[a-zA-Z0-9]").replace(/\[\[:upper:\]\]/g,"[A-Z]").replace(/\[\[:lower:\]\]/g,"[a-z]").replace(/\[\[:punct:\]\]/g,"[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~]").replace(/\[\[:xdigit:\]\]/g,"[0-9A-Fa-f]").replace(/\[\[:graph:\]\]/g,"[!-~]").replace(/\[\[:print:\]\]/g,"[ -~]").replace(/\[\[:cntrl:\]\]/g,"[\\x00-\\x1f\\x7f]")}var B=class{input;pos=0;line=1;column=1;lastTokenType=null;constructor(t){this.input=t}tokenize(){let t=[];for(;this.pos<this.input.length;){let r=this.nextToken();r&&(t.push(r),this.lastTokenType=r.type)}return t.push(this.makeToken(i.EOF,"")),t}makeToken(t,r){return{type:t,value:r,line:this.line,column:this.column}}peek(t=0){return this.input[this.pos+t]||""}advance(){let t=this.input[this.pos++]||"";return t===`
7
+ `?(this.line++,this.column=1):this.column++,t}skipWhitespace(){for(;this.pos<this.input.length;){let t=this.peek();if(t===" "||t===" "||t==="\r")this.advance();else if(t==="\\")if(this.peek(1)===`
8
+ `)this.advance(),this.advance();else break;else if(t==="#")for(;this.pos<this.input.length&&this.peek()!==`
9
+ `;)this.advance();else break}}nextToken(){if(this.skipWhitespace(),this.pos>=this.input.length)return null;let t=this.line,r=this.column,n=this.peek();return n===`
10
+ `?(this.advance(),{type:i.NEWLINE,value:`
11
+ `,line:t,column:r}):n==='"'?this.readString():n==="/"&&this.canBeRegex()?this.readRegex():this.isDigit(n)||n==="."&&this.isDigit(this.peek(1))?this.readNumber():this.isAlpha(n)||n==="_"?this.readIdentifier():this.readOperator()}canBeRegex(){return new Set([null,i.NEWLINE,i.SEMICOLON,i.LBRACE,i.RBRACE,i.LPAREN,i.LBRACKET,i.COMMA,i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN,i.AND,i.OR,i.NOT,i.MATCH,i.NOT_MATCH,i.QUESTION,i.COLON,i.LT,i.GT,i.LE,i.GE,i.EQ,i.NE,i.PLUS,i.MINUS,i.STAR,i.PERCENT,i.CARET,i.PRINT,i.PRINTF,i.IF,i.WHILE,i.DO,i.FOR,i.RETURN]).has(this.lastTokenType)}readString(){let t=this.line,r=this.column;this.advance();let n="";for(;this.pos<this.input.length&&this.peek()!=='"';)if(this.peek()==="\\"){this.advance();let a=this.advance();switch(a){case"n":n+=`
12
+ `;break;case"t":n+=" ";break;case"r":n+="\r";break;case"\\":n+="\\";break;case'"':n+='"';break;case"/":n+="/";break;default:n+=a}}else n+=this.advance();return this.peek()==='"'&&this.advance(),{type:i.STRING,value:n,line:t,column:r}}readRegex(){let t=this.line,r=this.column;this.advance();let n="";for(;this.pos<this.input.length&&this.peek()!=="/";)if(this.peek()==="\\")n+=this.advance(),this.pos<this.input.length&&(n+=this.advance());else{if(this.peek()===`
13
+ `)break;n+=this.advance()}return this.peek()==="/"&&this.advance(),n=rt(n),{type:i.REGEX,value:n,line:t,column:r}}readNumber(){let t=this.line,r=this.column,n="";for(;this.isDigit(this.peek());)n+=this.advance();if(this.peek()==="."&&this.isDigit(this.peek(1)))for(n+=this.advance();this.isDigit(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());this.isDigit(this.peek());)n+=this.advance();return{type:i.NUMBER,value:parseFloat(n),line:t,column:r}}readIdentifier(){let t=this.line,r=this.column,n="";for(;this.isAlphaNumeric(this.peek())||this.peek()==="_";)n+=this.advance();let a=tt[n];return a?{type:a,value:n,line:t,column:r}:{type:i.IDENT,value:n,line:t,column:r}}readOperator(){let t=this.line,r=this.column,n=this.advance(),a=this.peek();switch(n){case"+":return a==="+"?(this.advance(),{type:i.INCREMENT,value:"++",line:t,column:r}):a==="="?(this.advance(),{type:i.PLUS_ASSIGN,value:"+=",line:t,column:r}):{type:i.PLUS,value:"+",line:t,column:r};case"-":return a==="-"?(this.advance(),{type:i.DECREMENT,value:"--",line:t,column:r}):a==="="?(this.advance(),{type:i.MINUS_ASSIGN,value:"-=",line:t,column:r}):{type:i.MINUS,value:"-",line:t,column:r};case"*":return a==="*"?(this.advance(),{type:i.CARET,value:"**",line:t,column:r}):a==="="?(this.advance(),{type:i.STAR_ASSIGN,value:"*=",line:t,column:r}):{type:i.STAR,value:"*",line:t,column:r};case"/":return a==="="?(this.advance(),{type:i.SLASH_ASSIGN,value:"/=",line:t,column:r}):{type:i.SLASH,value:"/",line:t,column:r};case"%":return a==="="?(this.advance(),{type:i.PERCENT_ASSIGN,value:"%=",line:t,column:r}):{type:i.PERCENT,value:"%",line:t,column:r};case"^":return a==="="?(this.advance(),{type:i.CARET_ASSIGN,value:"^=",line:t,column:r}):{type:i.CARET,value:"^",line:t,column:r};case"=":return a==="="?(this.advance(),{type:i.EQ,value:"==",line:t,column:r}):{type:i.ASSIGN,value:"=",line:t,column:r};case"!":return a==="="?(this.advance(),{type:i.NE,value:"!=",line:t,column:r}):a==="~"?(this.advance(),{type:i.NOT_MATCH,value:"!~",line:t,column:r}):{type:i.NOT,value:"!",line:t,column:r};case"<":return a==="="?(this.advance(),{type:i.LE,value:"<=",line:t,column:r}):{type:i.LT,value:"<",line:t,column:r};case">":return a==="="?(this.advance(),{type:i.GE,value:">=",line:t,column:r}):a===">"?(this.advance(),{type:i.APPEND,value:">>",line:t,column:r}):{type:i.GT,value:">",line:t,column:r};case"&":return a==="&"?(this.advance(),{type:i.AND,value:"&&",line:t,column:r}):{type:i.IDENT,value:"&",line:t,column:r};case"|":return a==="|"?(this.advance(),{type:i.OR,value:"||",line:t,column:r}):{type:i.PIPE,value:"|",line:t,column:r};case"~":return{type:i.MATCH,value:"~",line:t,column:r};case"?":return{type:i.QUESTION,value:"?",line:t,column:r};case":":return{type:i.COLON,value:":",line:t,column:r};case",":return{type:i.COMMA,value:",",line:t,column:r};case";":return{type:i.SEMICOLON,value:";",line:t,column:r};case"(":return{type:i.LPAREN,value:"(",line:t,column:r};case")":return{type:i.RPAREN,value:")",line:t,column:r};case"{":return{type:i.LBRACE,value:"{",line:t,column:r};case"}":return{type:i.RBRACE,value:"}",line:t,column:r};case"[":return{type:i.LBRACKET,value:"[",line:t,column:r};case"]":return{type:i.RBRACKET,value:"]",line:t,column:r};case"$":return{type:i.DOLLAR,value:"$",line:t,column:r};default:return{type:i.IDENT,value:n,line:t,column:r}}}isDigit(t){return t>="0"&&t<="9"}isAlpha(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}isAlphaNumeric(t){return this.isDigit(t)||this.isAlpha(t)}};var U=class{tokens=[];pos=0;parse(t){let r=new B(t);return this.tokens=r.tokenize(),this.pos=0,this.parseProgram()}current(){return this.tokens[this.pos]||{type:i.EOF,value:"",line:0,column:0}}advance(){let t=this.current();return this.pos<this.tokens.length&&this.pos++,t}match(...t){return t.includes(this.current().type)}check(t){return this.current().type===t}expect(t,r){if(!this.check(t)){let n=this.current();throw new Error(r||`Expected ${t}, got ${n.type} at line ${n.line}:${n.column}`)}return this.advance()}skipNewlines(){for(;this.check(i.NEWLINE);)this.advance()}skipTerminators(){for(;this.check(i.NEWLINE)||this.check(i.SEMICOLON);)this.advance()}parseProgram(){let t=[],r=[];for(this.skipNewlines();!this.check(i.EOF)&&(this.skipNewlines(),!this.check(i.EOF));)this.check(i.FUNCTION)?t.push(this.parseFunction()):r.push(this.parseRule()),this.skipTerminators();return{functions:t,rules:r}}parseFunction(){this.expect(i.FUNCTION);let t=this.expect(i.IDENT).value;this.expect(i.LPAREN);let r=[];if(!this.check(i.RPAREN))for(r.push(this.expect(i.IDENT).value);this.check(i.COMMA);)this.advance(),r.push(this.expect(i.IDENT).value);this.expect(i.RPAREN),this.skipNewlines();let n=this.parseBlock();return{name:t,params:r,body:n}}parseRule(){let t;if(this.check(i.BEGIN))this.advance(),t={type:"begin"};else if(this.check(i.END))this.advance(),t={type:"end"};else if(this.check(i.LBRACE))t=void 0;else if(this.check(i.REGEX)){let n=this.advance();if(this.check(i.AND)||this.check(i.OR)){let a={type:"binary",operator:"~",left:{type:"field",index:{type:"number",value:0}},right:{type:"regex",pattern:n.value}};t={type:"expr_pattern",expression:this.parseLogicalOrRest(a)}}else{let a={type:"regex_pattern",pattern:n.value};if(this.check(i.COMMA)){this.advance();let s;this.check(i.REGEX)?s={type:"regex_pattern",pattern:this.advance().value}:s={type:"expr_pattern",expression:this.parseExpression()},t={type:"range",start:a,end:s}}else t=a}}else{let a={type:"expr_pattern",expression:this.parseExpression()};if(this.check(i.COMMA)){this.advance();let s;this.check(i.REGEX)?s={type:"regex_pattern",pattern:this.advance().value}:s={type:"expr_pattern",expression:this.parseExpression()},t={type:"range",start:a,end:s}}else t=a}this.skipNewlines();let r;return this.check(i.LBRACE)?r=this.parseBlock():r={type:"block",statements:[{type:"print",args:[{type:"field",index:{type:"number",value:0}}]}]},{pattern:t,action:r}}parseBlock(){this.expect(i.LBRACE),this.skipNewlines();let t=[];for(;!this.check(i.RBRACE)&&!this.check(i.EOF);)t.push(this.parseStatement()),this.skipTerminators();return this.expect(i.RBRACE),{type:"block",statements:t}}parseStatement(){if(this.check(i.LBRACE))return this.parseBlock();if(this.check(i.IF))return this.parseIf();if(this.check(i.WHILE))return this.parseWhile();if(this.check(i.DO))return this.parseDoWhile();if(this.check(i.FOR))return this.parseFor();if(this.check(i.BREAK))return this.advance(),{type:"break"};if(this.check(i.CONTINUE))return this.advance(),{type:"continue"};if(this.check(i.NEXT))return this.advance(),{type:"next"};if(this.check(i.NEXTFILE))return this.advance(),{type:"nextfile"};if(this.check(i.EXIT)){this.advance();let r;return!this.check(i.NEWLINE)&&!this.check(i.SEMICOLON)&&!this.check(i.RBRACE)&&!this.check(i.EOF)&&(r=this.parseExpression()),{type:"exit",code:r}}if(this.check(i.RETURN)){this.advance();let r;return!this.check(i.NEWLINE)&&!this.check(i.SEMICOLON)&&!this.check(i.RBRACE)&&!this.check(i.EOF)&&(r=this.parseExpression()),{type:"return",value:r}}if(this.check(i.DELETE)){this.advance();let r=this.parsePrimary();if(r.type!=="array_access"&&r.type!=="variable")throw new Error("delete requires array element or array");return{type:"delete",target:r}}return this.check(i.PRINT)?this.parsePrint():this.check(i.PRINTF)?this.parsePrintf():{type:"expr_stmt",expression:this.parseExpression()}}parseIf(){this.expect(i.IF),this.expect(i.LPAREN);let t=this.parseExpression();this.expect(i.RPAREN),this.skipNewlines();let r=this.parseStatement();this.skipTerminators();let n;return this.check(i.ELSE)&&(this.advance(),this.skipNewlines(),n=this.parseStatement()),{type:"if",condition:t,consequent:r,alternate:n}}parseWhile(){this.expect(i.WHILE),this.expect(i.LPAREN);let t=this.parseExpression();this.expect(i.RPAREN),this.skipNewlines();let r=this.parseStatement();return{type:"while",condition:t,body:r}}parseDoWhile(){this.expect(i.DO),this.skipNewlines();let t=this.parseStatement();this.skipNewlines(),this.expect(i.WHILE),this.expect(i.LPAREN);let r=this.parseExpression();return this.expect(i.RPAREN),{type:"do_while",body:t,condition:r}}parseFor(){if(this.expect(i.FOR),this.expect(i.LPAREN),this.check(i.IDENT)){let s=this.advance();if(this.check(i.IN)){this.advance();let o=this.expect(i.IDENT).value;this.expect(i.RPAREN),this.skipNewlines();let l=this.parseStatement();return{type:"for_in",variable:s.value,array:o,body:l}}this.pos--}let t;this.check(i.SEMICOLON)||(t=this.parseExpression()),this.expect(i.SEMICOLON);let r;this.check(i.SEMICOLON)||(r=this.parseExpression()),this.expect(i.SEMICOLON);let n;this.check(i.RPAREN)||(n=this.parseExpression()),this.expect(i.RPAREN),this.skipNewlines();let a=this.parseStatement();return{type:"for",init:t,condition:r,update:n,body:a}}parsePrint(){this.expect(i.PRINT);let t=[];if(this.check(i.NEWLINE)||this.check(i.SEMICOLON)||this.check(i.RBRACE)||this.check(i.PIPE)||this.check(i.GT)||this.check(i.APPEND))t.push({type:"field",index:{type:"number",value:0}});else for(t.push(this.parsePrintArg());this.check(i.COMMA);)this.advance(),t.push(this.parsePrintArg());let r;return this.check(i.GT)?(this.advance(),r={redirect:">",file:this.parsePrimary()}):this.check(i.APPEND)&&(this.advance(),r={redirect:">>",file:this.parsePrimary()}),{type:"print",args:t,output:r}}parsePrintArg(){return this.lookAheadForTernary()?this.parseTernary():this.parsePrintOr()}lookAheadForTernary(){let t=0,r=this.pos;for(;r<this.tokens.length;){let n=this.tokens[r];if(n.type===i.LPAREN&&t++,n.type===i.RPAREN&&t--,n.type===i.QUESTION&&t===0)return!0;if(n.type===i.NEWLINE||n.type===i.SEMICOLON||n.type===i.RBRACE||n.type===i.COMMA||n.type===i.PIPE)return!1;r++}return!1}parsePrintOr(){let t=this.parsePrintAnd();for(;this.check(i.OR);){this.advance();let r=this.parsePrintAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parsePrintAnd(){let t=this.parsePrintIn();for(;this.check(i.AND);){this.advance();let r=this.parsePrintIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parsePrintIn(){let t=this.parsePrintMatch();if(this.check(i.IN)){this.advance();let r=String(this.expect(i.IDENT).value);return{type:"in",key:t,array:r}}return t}parsePrintMatch(){let t=this.parsePrintComparison();for(;this.match(i.MATCH,i.NOT_MATCH);){let r=this.advance().type===i.MATCH?"~":"!~",n=this.parsePrintComparison();t={type:"binary",operator:r,left:t,right:n}}return t}parsePrintComparison(){let t=this.parseConcatenation();for(;this.match(i.LT,i.LE,i.GE,i.EQ,i.NE);){let r=this.advance(),n=this.parseConcatenation();t={type:"binary",operator:{"<":"<","<=":"<=",">=":">=","==":"==","!=":"!="}[r.value],left:t,right:n}}return t}parsePrintf(){this.expect(i.PRINTF);let t=this.parsePrintArg(),r=[];for(;this.check(i.COMMA);)this.advance(),r.push(this.parsePrintArg());let n;return this.check(i.GT)?(this.advance(),n={redirect:">",file:this.parsePrimary()}):this.check(i.APPEND)&&(this.advance(),n={redirect:">>",file:this.parsePrimary()}),{type:"printf",format:t,args:r,output:n}}parseExpression(){return this.parseAssignment()}parseAssignment(){let t=this.parseTernary();if(this.match(i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN)){let r=this.advance(),n=this.parseAssignment();if(t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid assignment target");return{type:"assignment",operator:{"=":"=","+=":"+=","-=":"-=","*=":"*=","/=":"/=","%=":"%=","^=":"^="}[r.value],target:t,value:n}}return t}parseTernary(){let t=this.parseOr();if(this.check(i.QUESTION)){this.advance();let r=this.parseExpression();this.expect(i.COLON);let n=this.parseExpression();t={type:"ternary",condition:t,consequent:r,alternate:n}}return t}parseOr(){let t=this.parseAnd();for(;this.check(i.OR);){this.advance();let r=this.parseAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parseLogicalOrRest(t){for(t=this.parseLogicalAndRest(t);this.check(i.OR);){this.advance();let r=this.parseAnd();t={type:"binary",operator:"||",left:t,right:r}}return t}parseLogicalAndRest(t){for(;this.check(i.AND);){this.advance();let r=this.parseIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parseAnd(){let t=this.parseIn();for(;this.check(i.AND);){this.advance();let r=this.parseIn();t={type:"binary",operator:"&&",left:t,right:r}}return t}parseIn(){let t=this.parseMatch();if(this.check(i.IN)){this.advance();let r=this.expect(i.IDENT).value;return{type:"in",key:t,array:r}}return t}parseMatch(){let t=this.parseComparison();for(;this.match(i.MATCH,i.NOT_MATCH);){let r=this.advance().type===i.MATCH?"~":"!~",n=this.parseComparison();t={type:"binary",operator:r,left:t,right:n}}return t}parseComparison(){let t=this.parseConcatenation();for(;this.match(i.LT,i.LE,i.GT,i.GE,i.EQ,i.NE);){let r=this.advance(),n=this.parseConcatenation();t={type:"binary",operator:{"<":"<","<=":"<=",">":">",">=":">=","==":"==","!=":"!="}[r.value],left:t,right:n}}return t}parseConcatenation(){let t=this.parseAddSub();for(;this.canStartExpression()&&!this.isComparisonOrHigherOp();){let r=this.parseAddSub();t={type:"binary",operator:" ",left:t,right:r}}return t}canStartExpression(){return this.match(i.NUMBER,i.STRING,i.IDENT,i.DOLLAR,i.LPAREN,i.NOT,i.MINUS,i.PLUS,i.INCREMENT,i.DECREMENT)}isComparisonOrHigherOp(){return this.match(i.LT,i.LE,i.GT,i.GE,i.EQ,i.NE,i.AND,i.OR,i.QUESTION,i.MATCH,i.NOT_MATCH,i.ASSIGN,i.PLUS_ASSIGN,i.MINUS_ASSIGN,i.STAR_ASSIGN,i.SLASH_ASSIGN,i.PERCENT_ASSIGN,i.CARET_ASSIGN,i.COMMA,i.SEMICOLON,i.NEWLINE,i.RBRACE,i.RPAREN,i.RBRACKET,i.COLON,i.PIPE,i.APPEND,i.IN)}parseAddSub(){let t=this.parseMulDiv();for(;this.match(i.PLUS,i.MINUS);){let r=this.advance().value,n=this.parseMulDiv();t={type:"binary",operator:r,left:t,right:n}}return t}parseMulDiv(){let t=this.parseUnary();for(;this.match(i.STAR,i.SLASH,i.PERCENT);){let r=this.advance(),n=this.parseUnary();t={type:"binary",operator:{"*":"*","/":"/","%":"%"}[r.value],left:t,right:n}}return t}parseUnary(){if(this.check(i.INCREMENT)){this.advance();let t=this.parseUnary();return t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access"?{type:"unary",operator:"+",operand:{type:"unary",operator:"+",operand:t}}:{type:"pre_increment",operand:t}}if(this.check(i.DECREMENT)){this.advance();let t=this.parseUnary();return t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access"?{type:"unary",operator:"-",operand:{type:"unary",operator:"-",operand:t}}:{type:"pre_decrement",operand:t}}if(this.match(i.NOT,i.MINUS,i.PLUS)){let t=this.advance().value,r=this.parseUnary();return{type:"unary",operator:t,operand:r}}return this.parsePower()}parsePower(){let t=this.parsePostfix();if(this.check(i.CARET)){this.advance();let r=this.parsePower();t={type:"binary",operator:"^",left:t,right:r}}return t}parsePostfix(){let t=this.parsePrimary();if(this.check(i.INCREMENT)){if(this.advance(),t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid increment operand");return{type:"post_increment",operand:t}}if(this.check(i.DECREMENT)){if(this.advance(),t.type!=="variable"&&t.type!=="field"&&t.type!=="array_access")throw new Error("Invalid decrement operand");return{type:"post_decrement",operand:t}}return t}parsePrimary(){if(this.check(i.NUMBER))return{type:"number",value:this.advance().value};if(this.check(i.STRING))return{type:"string",value:this.advance().value};if(this.check(i.REGEX))return{type:"regex",pattern:this.advance().value};if(this.check(i.DOLLAR))return this.advance(),{type:"field",index:this.parsePrimary()};if(this.check(i.LPAREN)){this.advance();let t=this.parseExpression();if(this.check(i.COMMA)){let r=[t];for(;this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());return this.expect(i.RPAREN),{type:"tuple",elements:r}}return this.expect(i.RPAREN),t}if(this.check(i.GETLINE)){this.advance();let t,r;return this.check(i.IDENT)&&(t=this.advance().value),this.check(i.LT)&&(this.advance(),r=this.parsePrimary()),{type:"getline",variable:t,file:r}}if(this.check(i.IDENT)){let t=this.advance().value;if(this.check(i.LPAREN)){this.advance();let r=[];if(!this.check(i.RPAREN))for(r.push(this.parseExpression());this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());return this.expect(i.RPAREN),{type:"call",name:t,args:r}}if(this.check(i.LBRACKET)){this.advance();let r=[this.parseExpression()];for(;this.check(i.COMMA);)this.advance(),r.push(this.parseExpression());this.expect(i.RBRACKET);let n;if(r.length===1)n=r[0];else{n=r[0];for(let a=1;a<r.length;a++)n={type:"binary",operator:" ",left:{type:"binary",operator:" ",left:n,right:{type:"variable",name:"SUBSEP"}},right:r[a]}}return{type:"array_access",array:t,key:n}}return{type:"variable",name:t}}throw new Error(`Unexpected token: ${this.current().type} at line ${this.current().line}:${this.current().column}`)}};var it={name:"awk",summary:"pattern scanning and text processing language",usage:"awk [OPTIONS] 'PROGRAM' [FILE...]",options:["-F FS use FS as field separator","-v VAR=VAL assign VAL to variable VAR"," --help display this help and exit"]},Wt={name:"awk",async execute(e,t){if(Q(e))return K(it);let r=/\s+/,n=" ",a={},s=0;for(let h=0;h<e.length;h++){let f=e[h];if(f==="-F"&&h+1<e.length)n=se(e[++h]),r=ae(n),s=h+1;else if(f.startsWith("-F"))n=se(f.slice(2)),r=ae(n),s=h+1;else if(f==="-v"&&h+1<e.length){let S=e[++h],G=S.indexOf("=");if(G>0){let k=S.slice(0,G),oe=S.slice(G+1);a[k]=oe}s=h+1}else{if(f.startsWith("--"))return x("awk",f);if(f.startsWith("-")&&f.length>1){let S=f[1];if(S!=="F"&&S!=="v")return x("awk",`-${S}`);s=h+1}else if(!f.startsWith("-")){s=h;break}}}if(s>=e.length)return{stdout:"",stderr:`awk: missing program
14
+ `,exitCode:1};let o=e[s],l=e.slice(s+1),u=new U,m;try{m=u.parse(o)}catch(h){return{stdout:"",stderr:`awk: ${h instanceof Error?h.message:String(h)}
15
+ `,exitCode:1}}let N={readFile:t.fs.readFile.bind(t.fs),writeFile:t.fs.writeFile.bind(t.fs),appendFile:async(h,f)=>{try{let S=await t.fs.readFile(h);await t.fs.writeFile(h,S+f)}catch{await t.fs.writeFile(h,f)}},resolvePath:t.fs.resolvePath.bind(t.fs)},c=H({fieldSep:r,maxIterations:t.limits?.maxAwkIterations,fs:N,cwd:t.cwd});c.FS=n,c.vars={...a},c.ARGC=l.length+1,c.ARGV={0:"awk"};for(let h=0;h<l.length;h++)c.ARGV[String(h+1)]=l[h];let d=new _(c);d.execute(m);try{if(await d.executeBegin(),c.shouldExit)return{stdout:d.getOutput(),stderr:"",exitCode:d.getExitCode()};let h=[];if(l.length>0)for(let f of l)try{let S=t.fs.resolvePath(t.cwd,f),k=(await t.fs.readFile(S)).split(`
16
+ `);k.length>0&&k[k.length-1]===""&&k.pop(),h.push({filename:f,lines:k})}catch{return{stdout:"",stderr:`awk: ${f}: No such file or directory
17
+ `,exitCode:1}}else{let f=t.stdin.split(`
18
+ `);f.length>0&&f[f.length-1]===""&&f.pop(),h.push({filename:"",lines:f})}for(let f of h){for(c.FILENAME=f.filename,c.FNR=0,c.lines=f.lines,c.lineIndex=-1,c.shouldNextFile=!1;c.lineIndex<f.lines.length-1&&(c.lineIndex++,await d.executeLine(f.lines[c.lineIndex]),!(c.shouldExit||c.shouldNextFile)););if(c.shouldExit)break}return c.shouldExit||await d.executeEnd(),{stdout:d.getOutput(),stderr:"",exitCode:d.getExitCode()}}catch(h){let f=h instanceof Error?h.message:String(h);return{stdout:d.getOutput(),stderr:`awk: ${f}
19
+ `,exitCode:2}}}};function se(e){return e.replace(/\\t/g," ").replace(/\\n/g,`
20
+ `).replace(/\\r/g,"\r").replace(/\\\\/g,"\\")}function ae(e){if(e===" ")return/\s+/;if(/[[\](){}.*+?^$|\\]/.test(e))try{return new RegExp(e)}catch{return new RegExp(le(e))}return new RegExp(le(e))}function le(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}export{Wt as awkCommand2};