just-bash 2.12.7 → 2.12.8

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 (94) hide show
  1. package/dist/bin/chunks/{awk2-EB5SCHVW.js → awk2-J2PNSA7C.js} +1 -1
  2. package/dist/bin/{shell/chunks/chunk-BBRVF6XE.js → chunks/chunk-2V53PP6G.js} +1 -1
  3. package/dist/bin/chunks/{chunk-ROMKUVHI.js → chunk-AXWFPG37.js} +1 -1
  4. package/dist/bin/chunks/{chunk-VCKKRS7V.js → chunk-CZFRRDQC.js} +1 -1
  5. package/dist/bin/{shell/chunks/chunk-5MUD3WB2.js → chunks/chunk-MO4RPBN2.js} +1 -1
  6. package/dist/bin/{shell/chunks/chunk-JX6YLHDX.js → chunks/chunk-OOJCYVYF.js} +1 -1
  7. package/dist/bin/{shell/chunks/chunk-OLN6BSO3.js → chunks/chunk-REGSV3X5.js} +1 -1
  8. package/dist/bin/chunks/{chunk-ZNPXCE5B.js → chunk-UG4GMDQL.js} +1 -1
  9. package/dist/bin/{shell/chunks/chunk-DHFZMFUW.js → chunks/chunk-UPUMZYZE.js} +1 -1
  10. package/dist/bin/chunks/{chunk-IRCLOW32.js → chunk-VVFGRIJZ.js} +1 -1
  11. package/dist/bin/chunks/{chunk-QTII62YM.js → chunk-WS6P4H4S.js} +1 -1
  12. package/dist/bin/chunks/{chunk-PIBXJ3VX.js → chunk-YAEF6X2N.js} +1 -1
  13. package/dist/bin/chunks/{chunk-NTKUVXEL.js → chunk-YU6OGPZR.js} +2 -2
  14. package/dist/bin/{shell/chunks/chunk-PLKGKTIS.js → chunks/chunk-ZYQQ6B7B.js} +1 -1
  15. package/dist/bin/chunks/{flag-coverage-7GOZYXJT.js → flag-coverage-CFWN3JJN.js} +1 -1
  16. package/dist/bin/{shell/chunks/jq-P457LMHU.js → chunks/jq-JFXEKNLN.js} +1 -1
  17. package/dist/bin/chunks/{python3-45TMCI4M.js → python3-KI2FQWSN.js} +1 -1
  18. package/dist/bin/{shell/chunks/sed-UV2LTNVK.js → chunks/sed-3C6IBX5L.js} +1 -1
  19. package/dist/bin/chunks/sleep-ND6FZRZ4.js +2 -0
  20. package/dist/bin/{shell/chunks/sqlite3-B3P3OMPI.js → chunks/sqlite3-TZEE4O7U.js} +1 -1
  21. package/dist/bin/chunks/tar-TOWX2TDU.js +2 -0
  22. package/dist/bin/chunks/timeout-JJWIFL7W.js +2 -0
  23. package/dist/bin/chunks/worker.js +81 -0
  24. package/dist/bin/chunks/{xan-FZB7FHX3.js → xan-M6MLWZCU.js} +1 -1
  25. package/dist/bin/chunks/yq-YWUQUXJJ.js +2 -0
  26. package/dist/bin/just-bash.js +166 -166
  27. package/dist/bin/shell/chunks/{awk2-EB5SCHVW.js → awk2-J2PNSA7C.js} +1 -1
  28. package/dist/bin/{chunks/chunk-BBRVF6XE.js → shell/chunks/chunk-2V53PP6G.js} +1 -1
  29. package/dist/bin/shell/chunks/{chunk-ROMKUVHI.js → chunk-AXWFPG37.js} +1 -1
  30. package/dist/bin/shell/chunks/{chunk-VCKKRS7V.js → chunk-CZFRRDQC.js} +1 -1
  31. package/dist/bin/{chunks/chunk-5MUD3WB2.js → shell/chunks/chunk-MO4RPBN2.js} +1 -1
  32. package/dist/bin/{chunks/chunk-JX6YLHDX.js → shell/chunks/chunk-OOJCYVYF.js} +1 -1
  33. package/dist/bin/{chunks/chunk-OLN6BSO3.js → shell/chunks/chunk-REGSV3X5.js} +1 -1
  34. package/dist/bin/shell/chunks/{chunk-ZNPXCE5B.js → chunk-UG4GMDQL.js} +1 -1
  35. package/dist/bin/{chunks/chunk-DHFZMFUW.js → shell/chunks/chunk-UPUMZYZE.js} +1 -1
  36. package/dist/bin/shell/chunks/{chunk-IRCLOW32.js → chunk-VVFGRIJZ.js} +1 -1
  37. package/dist/bin/shell/chunks/{chunk-QTII62YM.js → chunk-WS6P4H4S.js} +1 -1
  38. package/dist/bin/shell/chunks/{chunk-PIBXJ3VX.js → chunk-YAEF6X2N.js} +1 -1
  39. package/dist/bin/shell/chunks/{chunk-NTKUVXEL.js → chunk-YU6OGPZR.js} +2 -2
  40. package/dist/bin/{chunks/chunk-PLKGKTIS.js → shell/chunks/chunk-ZYQQ6B7B.js} +1 -1
  41. package/dist/bin/shell/chunks/{flag-coverage-7GOZYXJT.js → flag-coverage-CFWN3JJN.js} +1 -1
  42. package/dist/bin/{chunks/jq-P457LMHU.js → shell/chunks/jq-JFXEKNLN.js} +1 -1
  43. package/dist/bin/shell/chunks/{python3-IV3DBMHM.js → python3-E5X6WBBU.js} +1 -1
  44. package/dist/bin/{chunks/sed-UV2LTNVK.js → shell/chunks/sed-3C6IBX5L.js} +1 -1
  45. package/dist/bin/shell/chunks/sleep-ND6FZRZ4.js +2 -0
  46. package/dist/bin/{chunks/sqlite3-B3P3OMPI.js → shell/chunks/sqlite3-TZEE4O7U.js} +1 -1
  47. package/dist/bin/shell/chunks/tar-TOWX2TDU.js +2 -0
  48. package/dist/bin/shell/chunks/timeout-JJWIFL7W.js +2 -0
  49. package/dist/bin/shell/chunks/{xan-FZB7FHX3.js → xan-M6MLWZCU.js} +1 -1
  50. package/dist/bin/shell/chunks/yq-YWUQUXJJ.js +2 -0
  51. package/dist/bin/shell/shell.js +166 -166
  52. package/dist/bundle/browser.js +425 -425
  53. package/dist/bundle/chunks/{awk2-VPBKDCSO.js → awk2-FUVZGMX2.js} +1 -1
  54. package/dist/bundle/chunks/{chunk-X36DXRVC.js → chunk-24IMIIXA.js} +1 -1
  55. package/dist/bundle/chunks/{chunk-72EQZSVH.js → chunk-5QMZ5MUS.js} +2 -2
  56. package/dist/bundle/chunks/{chunk-7YDOWJ75.js → chunk-A5O5YHGN.js} +1 -1
  57. package/dist/bundle/chunks/{chunk-U5FWK6IA.js → chunk-AKVMAONP.js} +1 -1
  58. package/dist/bundle/chunks/{chunk-KZ7BI7TV.js → chunk-D4QDMGEB.js} +1 -1
  59. package/dist/bundle/chunks/{chunk-X3CVFNQZ.js → chunk-GOV5EKKI.js} +1 -1
  60. package/dist/bundle/chunks/{chunk-AUD37QB3.js → chunk-IUWCBQII.js} +1 -1
  61. package/dist/bundle/chunks/{chunk-VSWTMNI3.js → chunk-JDMQDJYE.js} +1 -1
  62. package/dist/bundle/chunks/{chunk-C7ZTXK5C.js → chunk-JKLUDNMU.js} +1 -1
  63. package/dist/bundle/chunks/{chunk-VBF2GWEM.js → chunk-V3IEYMEA.js} +1 -1
  64. package/dist/bundle/chunks/{chunk-6HBBXB3L.js → chunk-WECLUBEQ.js} +1 -1
  65. package/dist/bundle/chunks/{chunk-4YPFHVJJ.js → chunk-ZLJ5TCLC.js} +1 -1
  66. package/dist/bundle/chunks/{chunk-BED5HSP2.js → chunk-ZXL7TQLN.js} +1 -1
  67. package/dist/bundle/chunks/{flag-coverage-NT32EG6Q.js → flag-coverage-VML3BMJT.js} +1 -1
  68. package/dist/bundle/chunks/{jq-NLRWI2Q6.js → jq-SSCW4AAA.js} +1 -1
  69. package/dist/bundle/chunks/{python3-G2ZUJAQL.js → python3-2OHR6PZU.js} +1 -1
  70. package/dist/bundle/chunks/{sed-2BILOGNL.js → sed-DISNI47D.js} +1 -1
  71. package/dist/bundle/chunks/sleep-VZFPZFWA.js +1 -0
  72. package/dist/bundle/chunks/{sqlite3-VEDNWJL6.js → sqlite3-7F22DOIP.js} +1 -1
  73. package/dist/bundle/chunks/tar-232RCEFK.js +1 -0
  74. package/dist/bundle/chunks/timeout-QCU4INQT.js +1 -0
  75. package/dist/bundle/chunks/worker.js +81 -0
  76. package/dist/bundle/chunks/{xan-KSDYKKEK.js → xan-K7XYDHFV.js} +1 -1
  77. package/dist/bundle/chunks/yq-WTK3HUOR.js +1 -0
  78. package/dist/bundle/index.cjs +604 -604
  79. package/dist/bundle/index.js +228 -228
  80. package/dist/network/allow-list/shared.d.ts +8 -0
  81. package/dist/network/types.d.ts +15 -1
  82. package/package.json +1 -1
  83. package/dist/bin/chunks/sleep-3WHM7JMW.js +0 -2
  84. package/dist/bin/chunks/tar-SO3XDDIW.js +0 -2
  85. package/dist/bin/chunks/timeout-BYB3L2JA.js +0 -2
  86. package/dist/bin/chunks/yq-H7D2U3HS.js +0 -2
  87. package/dist/bin/shell/chunks/sleep-3WHM7JMW.js +0 -2
  88. package/dist/bin/shell/chunks/tar-SO3XDDIW.js +0 -2
  89. package/dist/bin/shell/chunks/timeout-BYB3L2JA.js +0 -2
  90. package/dist/bin/shell/chunks/yq-H7D2U3HS.js +0 -2
  91. package/dist/bundle/chunks/sleep-IUBP5GMH.js +0 -1
  92. package/dist/bundle/chunks/tar-LKO7DKAK.js +0 -1
  93. package/dist/bundle/chunks/timeout-TL4Q5YKZ.js +0 -1
  94. package/dist/bundle/chunks/yq-HIQ4WMDY.js +0 -1
@@ -1,157 +1,157 @@
1
- import{B as qr,C as Gr,D as fe,E as Xe,F as se,G as Ae,H as Ut,I as Kr,J as L,K as Xr,L as Yr,M as _e,N as Ts,O as Ht,P as H,a as Wr,b as ks,c as zr,d as Bt,e as ee,f as B,g as ue,h as re,i as ke,j as Be,k as _s,l as jt,m as Vr,n as Cs,o as Br,p as ve,q as De,r as jr,s as Ur,t as Ns,u as Os,v as je,w as Hr,x as Zr,y as Se,z as xs}from"./chunks/chunk-TRD56HID.js";import{a as O,b as D,c as rt,d as Ve,e as Ke,f as nt,g as Te,h as Mt,i as Wt,j as zt,k as Mr,l as Vt}from"./chunks/chunk-XHM67O4N.js";import{c as Ps}from"./chunks/chunk-RH6GWZAJ.js";import{a as Tt,b as Dt}from"./chunks/chunk-7YDOWJ75.js";import{a as As}from"./chunks/chunk-IPJHKYVM.js";import{a as ze,b as we,c as Et}from"./chunks/chunk-OJDRYQWQ.js";import{a as bt,b as Fr}from"./chunks/chunk-X36DXRVC.js";import{a as Fe,b as pe}from"./chunks/chunk-72EQZSVH.js";import{a as vt}from"./chunks/chunk-YNYSPYQ5.js";import{a as me,b as ye,c as ce,d as ge,e as Ir,f as j,g as Ge,h as Rt,i as It,j as Lr,k as J,l as Lt,m as Me,n as Ft,o as $e}from"./chunks/chunk-GFQRA5P5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as We}from"./chunks/chunk-CCNMISUL.js";import{a as xe}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Ye=[{name:"echo",load:async()=>(await import("./chunks/echo-O45JWWI2.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-RDUMLXKC.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-CX64KX2P.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-KSXFZCWH.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-F6XHPXZC.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-XTQXT7RK.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DX2IJOQ4.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-FYNVTQIU.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XOYR4ABJ.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-Z6MORUFL.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-UJ6YJVBK.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-SYMGL4JA.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-D4OZ7N27.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-MI4GCHJF.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-HT2B6D2J.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-S5ULNTJU.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-TQB3VNOX.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BT5A227F.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-3AIAIJVR.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-3AIAIJVR.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-3AIAIJVR.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-RAICUFGG.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-2BILOGNL.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-VPBKDCSO.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-DCNRDA7U.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-SUNANL47.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-5SLSESQG.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-OPC3VAGB.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-7N6AFSDS.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-GVTWMRZB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-XOSYPP45.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-U5YJDM32.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-LDSORVYE.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-DTNXU4LQ.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-RGTMIGZM.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-7PLOGTPD.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-SITCSYCZ.js")).split},{name:"column",load:async()=>(await import("./chunks/column-WLPMMSTS.js")).column},{name:"join",load:async()=>(await import("./chunks/join-GG2LDHE5.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-O7VXZDCO.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-DOIVMX6X.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-AA2KJYZQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-LEMTZZFS.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-LYXBS7DC.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-WO2ENHXQ.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-XZY4LKEO.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-XZY4LKEO.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-J4QRNGRO.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-2BBAQDTC.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-5CZ5X4YR.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-IJWYRKFO.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-IJWYRKFO.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-NLRWI2Q6.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-4YMZCVJ5.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-HJF2MPDN.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-DD7FVA2V.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-IUBP5GMH.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-TL4Q5YKZ.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-XL42Z4U5.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-RN5ZUASB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-74QHYJL5.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-INMIK4DX.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-VJPNLNU6.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-PI32XWXY.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-ZIGAJ4YS.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-TFCECAGV.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-IA5CMGR4.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-XZHEH76L.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-SJGXQ4T2.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-BK6HG2DE.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-DGKU3D2X.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-VJEF2UR5.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-AQXSGOVS.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-AQXSGOVS.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-AQXSGOVS.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ye.push({name:"tar",load:async()=>(await import("./chunks/tar-LKO7DKAK.js")).tarCommand}),Ye.push({name:"yq",load:async()=>(await import("./chunks/yq-HIQ4WMDY.js")).yqCommand}),Ye.push({name:"xan",load:async()=>(await import("./chunks/xan-KSDYKKEK.js")).xanCommand}),Ye.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-VEDNWJL6.js")).sqlite3Command}));var Zt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Zt.push({name:"python3",load:async()=>(await import("./chunks/python3-G2ZUJAQL.js")).python3Command}),Zt.push({name:"python",load:async()=>(await import("./chunks/python3-G2ZUJAQL.js")).pythonCommand}));var Jr=[{name:"curl",load:async()=>(await import("./chunks/curl-KM2ZAUR6.js")).curlCommand}],Qr=new Map;function Ds(e){return{name:e.name,async execute(t,s){let r=Qr.get(e.name);if(r||(r=await pe.runTrustedAsync(()=>e.load()),Qr.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-NT32EG6Q.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function Bi(){return Ye.map(e=>e.name)}function ji(){return Jr.map(e=>e.name)}function en(e){return(e?Ye.filter(s=>e.includes(s.name)):Ye).map(Ds)}function tn(){return Jr.map(Ds)}function Ui(){return Zt.map(e=>e.name)}function sn(){return Zt.map(Ds)}function rn(e){return"load"in e&&typeof e.load=="function"}function Hi(e,t){return{name:e,trusted:!0,execute:t}}function nn(e){let t=null;return{name:e.name,trusted:!0,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}var Zi=new TextEncoder,qi=new TextDecoder;function Re(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)s[r/2]=parseInt(e.slice(r,r+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,n=>n.charCodeAt(0));let r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}return Zi.encode(e)}function it(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,r="";for(let n=0;n<e.length;n+=s){let i=e.subarray(n,n+s);r+=String.fromCharCode(...i)}return btoa(r)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let r="";for(let n=0;n<e.length;n+=s){let i=e.subarray(n,n+s);r+=String.fromCharCode(...i)}return r}return qi.decode(e)}function be(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ot=new TextEncoder;function Gi(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var Ie=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))typeof r=="function"?this.writeFileLazy(s,r):Gi(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}ensureParentDirs(t){let s=rt(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){D(t,"write");let i=O(t);this.ensureParentDirs(i);let o=be(r),a=Re(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}writeFileLazy(t,s,r){D(t,"write");let n=O(t);this.ensureParentDirs(n),this.data.set(n,{type:"file",lazy:s,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,s){let r=await s.lazy(),i={type:"file",content:typeof r=="string"?ot.encode(r):r,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return it(r,n)}async readFileBuffer(t){D(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let n=await this.materializeLazy(s,r);return n.content instanceof Uint8Array?n.content:ot.encode(n.content)}return r.content instanceof Uint8Array?r.content:ot.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){D(t,"append");let n=O(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=be(r),a=Re(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(n,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:ot.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(n,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){D(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ot.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){D(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ot.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveIntermediateSymlinks(t){let s=O(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=nt(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=O(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=nt(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){D(t,"mkdir");let r=O(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let n=rt(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){D(t,"scandir");let s=O(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=nt(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){D(t,"rm");let r=O(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=Ke(r,o);await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){D(t,"cp"),D(s,"cp");let n=O(t),i=O(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=Ke(n,l),u=Ke(i,l);await this.cp(c,u,r)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){return Ve(t,s)}async chmod(t,s){D(t,"chmod");let r=O(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){D(s,"symlink");let r=O(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){D(t,"link"),D(s,"link");let r=O(t),n=O(s),i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(n),this.data.set(n,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){D(t,"readlink");let s=O(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){D(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,r){D(t,"utimes");let n=O(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function Ki(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Xi(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function Yi(e){e.mkdirSync("/dev",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Qi(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Wr}
1
+ import{B as Gr,C as Kr,D as fe,E as Xe,F as se,G as Pe,H as Ut,I as Xr,J as L,K as Yr,L as Qr,M as Ce,N as Ds,O as Ht,P as H,a as zr,b as ks,c as Vr,d as Bt,e as ee,f as B,g as ue,h as re,i as _e,j as je,k as _s,l as jt,m as Br,n as Cs,o as jr,p as ve,q as Re,r as Ur,s as Hr,t as Ns,u as Os,v as Ue,w as Zr,x as qr,y as Se,z as xs}from"./chunks/chunk-TRD56HID.js";import{a as O,b as T,c as rt,d as Be,e as Ke,f as nt,g as Te,h as Mt,i as Wt,j as zt,k as Wr,l as Vt}from"./chunks/chunk-XHM67O4N.js";import{c as As}from"./chunks/chunk-RH6GWZAJ.js";import{a as Dt,b as Tt}from"./chunks/chunk-A5O5YHGN.js";import{a as Ps}from"./chunks/chunk-IPJHKYVM.js";import{a as Ve,b as we,c as Et}from"./chunks/chunk-OJDRYQWQ.js";import{a as bt,b as Mr}from"./chunks/chunk-24IMIIXA.js";import{a as Me,b as pe}from"./chunks/chunk-5QMZ5MUS.js";import{a as vt}from"./chunks/chunk-YNYSPYQ5.js";import{a as me,b as ye,c as ce,d as ge,e as Lr,f as j,g as Ge,h as Rt,i as It,j as Fr,k as J,l as Lt,m as We,n as Ft,o as $e}from"./chunks/chunk-GFQRA5P5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as ze}from"./chunks/chunk-CCNMISUL.js";import{a as De}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Ye=[{name:"echo",load:async()=>(await import("./chunks/echo-O45JWWI2.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-RDUMLXKC.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-CX64KX2P.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-KSXFZCWH.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-F6XHPXZC.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-XTQXT7RK.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DX2IJOQ4.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-FYNVTQIU.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XOYR4ABJ.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-Z6MORUFL.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-UJ6YJVBK.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-SYMGL4JA.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-D4OZ7N27.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-MI4GCHJF.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-HT2B6D2J.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-S5ULNTJU.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-TQB3VNOX.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-BT5A227F.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-3AIAIJVR.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-3AIAIJVR.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-3AIAIJVR.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-RAICUFGG.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-DISNI47D.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-FUVZGMX2.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-DCNRDA7U.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-SUNANL47.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-5SLSESQG.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-OPC3VAGB.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-7N6AFSDS.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-GVTWMRZB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-XOSYPP45.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-U5YJDM32.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-LDSORVYE.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-DTNXU4LQ.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-RGTMIGZM.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-7PLOGTPD.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-SITCSYCZ.js")).split},{name:"column",load:async()=>(await import("./chunks/column-WLPMMSTS.js")).column},{name:"join",load:async()=>(await import("./chunks/join-GG2LDHE5.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-O7VXZDCO.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-DOIVMX6X.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-AA2KJYZQ.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-LEMTZZFS.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-LYXBS7DC.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-WO2ENHXQ.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-XZY4LKEO.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-XZY4LKEO.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-JE7RI5QX.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-J4QRNGRO.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-2BBAQDTC.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-WHJNXCHG.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-5CZ5X4YR.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-IJWYRKFO.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-IJWYRKFO.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-SSCW4AAA.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-4YMZCVJ5.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-HJF2MPDN.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-DD7FVA2V.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-VZFPZFWA.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-QCU4INQT.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-XL42Z4U5.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-RN5ZUASB.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-74QHYJL5.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-INMIK4DX.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-VJPNLNU6.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-PI32XWXY.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-ZIGAJ4YS.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-TFCECAGV.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-IA5CMGR4.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-XZHEH76L.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-SJGXQ4T2.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-BK6HG2DE.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-DGKU3D2X.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-VJEF2UR5.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-AQXSGOVS.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-AQXSGOVS.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-AQXSGOVS.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ye.push({name:"tar",load:async()=>(await import("./chunks/tar-232RCEFK.js")).tarCommand}),Ye.push({name:"yq",load:async()=>(await import("./chunks/yq-WTK3HUOR.js")).yqCommand}),Ye.push({name:"xan",load:async()=>(await import("./chunks/xan-K7XYDHFV.js")).xanCommand}),Ye.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-7F22DOIP.js")).sqlite3Command}));var Zt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Zt.push({name:"python3",load:async()=>(await import("./chunks/python3-2OHR6PZU.js")).python3Command}),Zt.push({name:"python",load:async()=>(await import("./chunks/python3-2OHR6PZU.js")).pythonCommand}));var en=[{name:"curl",load:async()=>(await import("./chunks/curl-KM2ZAUR6.js")).curlCommand}],Jr=new Map;function Ts(e){return{name:e.name,async execute(t,s){let r=Jr.get(e.name);if(r||(r=await pe.runTrustedAsync(()=>e.load()),Jr.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-VML3BMJT.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function Bi(){return Ye.map(e=>e.name)}function ji(){return en.map(e=>e.name)}function tn(e){return(e?Ye.filter(s=>e.includes(s.name)):Ye).map(Ts)}function sn(){return en.map(Ts)}function Ui(){return Zt.map(e=>e.name)}function rn(){return Zt.map(Ts)}function nn(e){return"load"in e&&typeof e.load=="function"}function Hi(e,t){return{name:e,trusted:!0,execute:t}}function on(e){let t=null;return{name:e.name,trusted:!0,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}var Zi=new TextEncoder,qi=new TextDecoder;function Ie(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)s[r/2]=parseInt(e.slice(r,r+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,n=>n.charCodeAt(0));let r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}return Zi.encode(e)}function it(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,r="";for(let n=0;n<e.length;n+=s){let i=e.subarray(n,n+s);r+=String.fromCharCode(...i)}return btoa(r)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let r="";for(let n=0;n<e.length;n+=s){let i=e.subarray(n,n+s);r+=String.fromCharCode(...i)}return r}return qi.decode(e)}function be(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ot=new TextEncoder;function Gi(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var Le=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))typeof r=="function"?this.writeFileLazy(s,r):Gi(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}ensureParentDirs(t){let s=rt(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){T(t,"write");let i=O(t);this.ensureParentDirs(i);let o=be(r),a=Ie(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}writeFileLazy(t,s,r){T(t,"write");let n=O(t);this.ensureParentDirs(n),this.data.set(n,{type:"file",lazy:s,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,s){let r=await s.lazy(),i={type:"file",content:typeof r=="string"?ot.encode(r):r,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return it(r,n)}async readFileBuffer(t){T(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let n=await this.materializeLazy(s,r);return n.content instanceof Uint8Array?n.content:ot.encode(n.content)}return r.content instanceof Uint8Array?r.content:ot.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){T(t,"append");let n=O(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=be(r),a=Ie(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(n,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:ot.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(n,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){T(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ot.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){T(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(s,r));let n=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=ot.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveIntermediateSymlinks(t){let s=O(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=nt(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=O(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=nt(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){T(t,"mkdir");let r=O(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let n=rt(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){T(t,"scandir");let s=O(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=nt(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){T(t,"rm");let r=O(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=Ke(r,o);await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){T(t,"cp"),T(s,"cp");let n=O(t),i=O(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=Ke(n,l),u=Ke(i,l);await this.cp(c,u,r)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){return Be(t,s)}async chmod(t,s){T(t,"chmod");let r=O(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){T(s,"symlink");let r=O(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){T(t,"link"),T(s,"link");let r=O(t),n=O(s),i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(n),this.data.set(n,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){T(t,"readlink");let s=O(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){T(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,r){T(t,"utimes");let n=O(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function Ki(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Xi(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function Yi(e){e.mkdirSync("/dev",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Qi(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${zr}
2
2
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
3
- `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>ks(t)):e.writeFileSync("/proc/self/status",ks(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function on(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Ki(e)&&(Xi(e,t),Yi(e),Qi(e,s))}var Ji=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],eo=["braceexpand","hashall","interactive-comments"];function Is(e){let t=[],s=[...eo.map(r=>({name:r,enabled:!0})),...Ji.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function lt(e){e.state.env.set("SHELLOPTS",Is(e.state.options))}var to=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ls(e){let t=[];for(let s of to)e[s]&&t.push(s);return t.join(":")}function Fs(e){e.state.env.set("BASHOPTS",Ls(e.state.shoptOptions))}var so="BASH_ALIAS_";function an(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function ln(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function cn(e,t){return e.env.get(`${so}${t}`)}function Ms(e,t,s){if(!t.name||!an(t.name))return t;let r=ln(t.name);if(!r)return t;let n=cn(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new B,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=fn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof Bt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return un(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return un(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(an(f)){let d=ln(f);if(d&&cn(e,d)){let p={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},y=Ms(e,p,s);y!==p&&(u={...u,name:y.name,args:[...y.args]})}}}return u}catch(i){throw s.delete(r),i}}function un(e,t){let s=t;for(let o of e.args){let a=fn(o);s+=` ${a}`}let r=new B,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function fn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(r=>r.type==="Literal"?r.value:`$${r.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function dn(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let p of d)/^\s+$/.test(p)?(a||l)&&(i.push(a),a="",l=!1):p&&(a+=p)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=jt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await _e(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await L(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function hn(e,t){let s=-1,r=-1,n=!1;for(let h=0;h<t.parts.length;h++){let m=t.parts[h];if(m.type==="Literal"){let b=m.value.indexOf("+=");if(b!==-1){let A=m.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)){s=h,r=b,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(A)){s=h,r=b,n=!0;break}}let v=m.value.indexOf("=");if(v!==-1&&(v===0||m.value[v-1]!=="+")){let A=m.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(A)){s=h,r=v;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let h of i)f+=await L(e,{type:"Word",parts:[h]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},p=d.parts.length>0?await L(e,d):"";return`${f}${n?"+=":"="}${p}`}var ro=["tar","yq","xan","sqlite3","python3","python"];function pn(e){return ro.includes(e)}var W=Object.freeze({stdout:"",stderr:"",exitCode:0});function z(e=""){return{stdout:e,stderr:"",exitCode:0}}function P(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function Q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Ce(e,t,s="",r=""){throw new J(e,t,s,r)}function le(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new J(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function Ws(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Me;return W}if(t.length>1)throw new j(1,"",`bash: break: too many arguments
3
+ `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>ks(t)):e.writeFileSync("/proc/self/status",ks(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function an(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Ki(e)&&(Xi(e,t),Yi(e),Qi(e,s))}var Ji=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],eo=["braceexpand","hashall","interactive-comments"];function Is(e){let t=[],s=[...eo.map(r=>({name:r,enabled:!0})),...Ji.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function lt(e){e.state.env.set("SHELLOPTS",Is(e.state.options))}var to=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ls(e){let t=[];for(let s of to)e[s]&&t.push(s);return t.join(":")}function Fs(e){e.state.env.set("BASHOPTS",Ls(e.state.shoptOptions))}var so="BASH_ALIAS_";function ln(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function cn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function un(e,t){return e.env.get(`${so}${t}`)}function Ms(e,t,s){if(!t.name||!ln(t.name))return t;let r=cn(t.name);if(!r)return t;let n=un(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new B,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=dn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof Bt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return fn(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return fn(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(ln(f)){let d=cn(f);if(d&&un(e,d)){let p={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=Ms(e,p,s);m!==p&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function fn(e,t){let s=t;for(let o of e.args){let a=dn(o);s+=` ${a}`}let r=new B,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function dn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(r=>r.type==="Literal"?r.value:`$${r.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function hn(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let p of d)/^\s+$/.test(p)?(a||l)&&(i.push(a),a="",l=!1):p&&(a+=p)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=jt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await Ce(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await L(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function pn(e,t){let s=-1,r=-1,n=!1;for(let h=0;h<t.parts.length;h++){let y=t.parts[h];if(y.type==="Literal"){let b=y.value.indexOf("+=");if(b!==-1){let P=y.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(P)){s=h,r=b,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(P)){s=h,r=b,n=!0;break}}let v=y.value.indexOf("=");if(v!==-1&&(v===0||y.value[v-1]!=="+")){let P=y.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(P)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(P)){s=h,r=v;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let h of i)f+=await L(e,{type:"Word",parts:[h]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},p=d.parts.length>0?await L(e,d):"";return`${f}${n?"+=":"="}${p}`}var ro=["tar","yq","xan","sqlite3","python3","python"];function mn(e){return ro.includes(e)}var W=Object.freeze({stdout:"",stderr:"",exitCode:0});function z(e=""){return{stdout:e,stderr:"",exitCode:0}}function A(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function Q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Ne(e,t,s="",r=""){throw new J(e,t,s,r)}function le(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new J(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function Ws(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new We;return W}if(t.length>1)throw new j(1,"",`bash: break: too many arguments
4
4
  `);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new j(128,"",`bash: break: ${t[0]}: numeric argument required
5
- `);s=r}throw new me(s)}async function zs(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(p=>p);for(let p of d){let y=p.startsWith("/")?`${p}/${s}`:`${e.state.cwd}/${p}/${s}`;try{if((await e.fs.stat(y)).isDirectory){s=y,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return P(`bash: cd: ${s}: Not a directory
6
- `)}catch{return P(`bash: cd: ${s}: No such file or directory
5
+ `);s=r}throw new me(s)}async function zs(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(p=>p);for(let p of d){let m=p.startsWith("/")?`${p}/${s}`:`${e.state.cwd}/${p}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return A(`bash: cd: ${s}: Not a directory
6
+ `)}catch{return A(`bash: cd: ${s}: No such file or directory
7
7
  `)}}let u=c||"/";if(n)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),z(r?`${u}
8
8
  `:"")}function Vs(e,t){return e.fs.resolvePath(e.state.cwd,t)}var no=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Gt(e){return no.includes(e)}async function Kt(e,t,s){let r=Vs(e,s);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(r);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var io=["-nt","-ot","-ef"];function Xt(e){return io.includes(e)}async function Yt(e,t,s,r){let n=Vs(e,s),i=Vs(e,r);switch(t){case"-nt":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(n)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,n),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var oo=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Qt(e){return oo.has(e)}function Jt(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function $t(e){return e==="="||e==="=="||e==="!="}function es(e,t,s,r=!1,n=!1,i=!1){if(r){let a=ct(t,s,n,i);return e==="!="?!a:a}if(n){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var ao=new Set(["-z","-n"]);function ts(e){return ao.has(e)}function ss(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function rs(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let r=s[1],n=s[2];if(e.state.associativeArrays?.has(r)){let a=n;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),e.state.env.has(`${r}_${a}`)}let o;try{let a=new B,l=ee(a,n);o=await H(e,l.expression)}catch{if(/^-?\d+$/.test(n))o=Number.parseInt(n,10);else{let a=e.state.env.get(n);o=a?Number.parseInt(a,10):0}}if(o<0){let a=re(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
9
9
  `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
10
- `,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Be(e,t).length>0:re(e,t).length>0}async function Ue(e,t){switch(t.type){case"CondBinary":{let s=await L(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),n;if(t.operator==="=~")if(r){let i=await L(e,t.right);n=Gr(i)}else n=await Xr(e,t.right);else $t(t.operator)&&!r?n=await Yr(e,t.right):n=await L(e,t.right);if($t(t.operator)){let i=e.state.shoptOptions.nocasematch;return es(t.operator,s,n,!r,i,!0)}if(Qt(t.operator))return Jt(t.operator,await yn(e,s),await yn(e,n));if(Xt(t.operator))return Yt(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=fo(n),l=vt(o,i?"i":"").match(s);if(ke(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await L(e,t.operand);return Gt(t.operator)?Kt(e,t.operator,s):ts(t.operator)?ss(t.operator,s):t.operator==="-v"?await rs(e,s):t.operator==="-o"?js(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await L(e,t.operand.expression.word)})`!=="":!await Ue(e,t.operand);case"CondAnd":return await Ue(e,t.left)?await Ue(e,t.right):!1;case"CondOr":return await Ue(e,t.left)?!0:await Ue(e,t.right);case"CondGroup":return await Ue(e,t.expression);case"CondWord":return await L(e,t.word)!=="";default:return!1}}async function St(e,t){if(t.length===0)return _("","",1);if(t.length===1)return Q(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?P(`test: '(' without matching ')'
11
- `,2):Gt(r)?Q(await Kt(e,r,n)):ts(r)?Q(ss(r,n)):r==="!"?Q(!n):r==="-v"?Q(await rs(e,n)):r==="-o"?Q(js(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?P(`test: ${r}: unary operator expected
12
- `,2):_("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if($t(n))return Q(es(n,r,i));if(Qt(n)){let o=ns(r),a=ns(i);return!o.valid||!a.valid?_("","",2):Q(Jt(n,o.value,a.value))}if(Xt(n))return Q(await Yt(e,n,r,i));switch(n){case"-a":return Q(r!==""&&i!=="");case"-o":return Q(r!==""||i!=="");case">":return Q(r>i);case"<":return Q(r<i)}if(r==="!"){let o=await St(e,[n,i]);return _("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return Q(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await St(e,t.slice(1));return _("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return St(e,[t[1],t[2]])}let s=await wn(e,t,0);return s.pos<t.length?P(`test: too many arguments
13
- `,2):Q(s.value)}async function wn(e,t,s){return lo(e,t,s)}async function lo(e,t,s){let{value:r,pos:n}=await mn(e,t,s);for(;t[n]==="-o";){let i=await mn(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function mn(e,t,s){let{value:r,pos:n}=await Bs(e,t,s);for(;t[n]==="-a";){let i=await Bs(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function Bs(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await Bs(e,t,s+1);return{value:!r,pos:n}}return co(e,t,s)}async function co(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await wn(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if($t(n)){let i=r,o=t[s+2]??"";return{value:es(n,i,o),pos:s+3}}if(Qt(n)){let i=ns(r),o=ns(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:Jt(n,i.value,o.value),pos:s+3}}if(Xt(n)){let i=r,o=t[s+2]??"";return{value:await Yt(e,n,i,o),pos:s+3}}if(Gt(r)){let i=t[s+1]??"";return{value:await Kt(e,r,i),pos:s+2}}if(ts(r)){let i=t[s+1]??"";return{value:ss(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await rs(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:js(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function ct(e,t,s=!1,r=!1){let n=`^${vn(t,r)}$`;return vt(n,s?"is":"s").test(e)}function vn(e,t){let s="";for(let r=0;r<e.length;r++){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=bn(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=En(o),l=a.map(u=>vn(u,t)),c=l.length>0?l.join("|"):"(?:)";if(n==="@")s+=`(?:${c})`;else if(n==="*")s+=`(?:${c})*`;else if(n==="+")s+=`(?:${c})+`;else if(n==="?")s+=`(?:${c})?`;else if(n==="!")if(i<e.length-1){let f=a.map(p=>$n(p,t));if(f.every(p=>p!==null)&&f.every(p=>p===f[0])&&f[0]!==null){let p=f[0];if(p===0)s+="(?:.+)";else{let y=[];p>0&&y.push(`.{0,${p-1}}`),y.push(`.{${p+1},}`),y.push(`(?!(?:${c})).{${p}}`),s+=`(?:${y.join("|")})`}}else s+=`(?:(?!(?:${c})).)*?`}else s+=`(?!(?:${c})$).*`;r=i;continue}}if(n==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,r++}else s+="\\\\";else if(n==="*")s+=".*";else if(n==="?")s+=".";else if(n==="["){let i=e.indexOf("]",r+1);i!==-1?(s+=e.slice(r,i+1),r=i):s+="\\["}else/[\\^$.|+(){}]/.test(n)?s+=`\\${n}`:s+=n}return s}function bn(e,t){let s=1,r=t+1;for(;r<e.length&&s>0;){let n=e[r];if(n==="\\"){r+=2;continue}if(n==="(")s++;else if(n===")"&&(s--,s===0))return r;r++}return-1}function En(e){let t=[],s="",r=0,n=0;for(;n<e.length;){let i=e[n];if(i==="\\"){s+=i,n+1<e.length?(s+=e[n+1],n+=2):n++;continue}i==="("?(r++,s+=i):i===")"?(r--,s+=i):i==="|"&&r===0?(t.push(s),s=""):s+=i,n++}return t.push(s),t}function $n(e,t){let s=0,r=0;for(;r<e.length;){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=bn(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=En(o).map(c=>$n(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],r=i+1;continue}return null}return null}}if(n==="*")return null;if(n==="?"){s+=1,r++;continue}if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){s+=1,r=i+1;continue}s+=1,r++;continue}if(n==="\\"){s+=1,r+=2;continue}s+=1,r++}return s}function js(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function yn(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return gn(t);try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{return gn(t)}}function uo(e,t){let s=0;for(let r of e){let n;if(r>="0"&&r<="9")n=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")n=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")n=r.charCodeAt(0)-65+36;else if(r==="@")n=62;else if(r==="_")n=63;else return Number.NaN;if(n>=t)return Number.NaN;s=s*t+n}return s}function gn(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let n=Number.parseInt(r[1],10);n>=2&&n<=64?s=uo(r[2],n):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function ns(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let s=Number.parseInt(e,10);return Number.isNaN(s)?{value:0,valid:!1}:{value:t?-s:s,valid:!0}}function fo(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let r=ho(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function ho(e,t){let s=t+1,r="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(r+="^",s++);let n=!1;s<e.length&&e[s]==="]"&&(n=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let o="",a=!1;for(;s<e.length;){let l=e[s];if(l==="]"){a=!0,s++;break}if(l==="["&&s+1<e.length&&e[s+1]===":"){let c=e.indexOf(":]",s+2);if(c!==-1){let u=e.slice(s+2,c);o+=po(u),s=c+2;continue}}if(l==="["&&s+1<e.length){let c=e[s+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,s+2);if(f!==-1){let d=e.slice(s+2,f);o+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){o+=l+e[s+1],s+=2;continue}o+=l,s++}return a?(n&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:s}):{converted:"\\[",endIndex:t+1}}function po(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function Ne(e){let t=[],s="",r=!1,n=!1,i=!1,o=!1;for(let a of e){if(i){s+=a,i=!1,o=!0;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!n){r||(o=!0),r=!r;continue}if(a==='"'&&!r){n||(o=!0),n=!n;continue}if((a===" "||a===" "||a===`
14
- `)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function is(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)r+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)n+=e[s],s++;t.push([r,n])}return t}function Sn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ne(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let r=e.indexOf("=");return{name:e.slice(0,r),isArray:!1,value:e.slice(r+1)}}return{name:e,isArray:!1}}async function mo(e,t){try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function An(e,t,s={}){let{name:r,isArray:n,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=se(e,r);if(u)return u}if(n&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${r}_${u}`,i[u]);e.state.env.set(`${r}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await mo(e,a);e.state.env.set(`${r}_${u}`,o);let f=parseInt(e.state.env.get(`${r}__length`)??"0",10);u>=f&&e.state.env.set(`${r}__length`,String(u+1))}else o!==void 0&&e.state.env.set(r,o);return l&&fe(e,r),null}function He(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ut(e,t){return e.state.localVarDepth?.get(t)}function os(e,t){e.state.localVarDepth?.delete(t)}function Pn(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function as(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function kn(e,t){if(e.state.localVarStack)for(let[s,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(s)}}var Us=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function _n(e){return Us.has(e)}var Hs=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),ft=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]);async function Qe(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
10
+ `,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?je(e,t).length>0:re(e,t).length>0}async function He(e,t){switch(t.type){case"CondBinary":{let s=await L(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),n;if(t.operator==="=~")if(r){let i=await L(e,t.right);n=Kr(i)}else n=await Yr(e,t.right);else $t(t.operator)&&!r?n=await Qr(e,t.right):n=await L(e,t.right);if($t(t.operator)){let i=e.state.shoptOptions.nocasematch;return es(t.operator,s,n,!r,i,!0)}if(Qt(t.operator))return Jt(t.operator,await gn(e,s),await gn(e,n));if(Xt(t.operator))return Yt(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=fo(n),l=vt(o,i?"i":"").match(s);if(_e(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await L(e,t.operand);return Gt(t.operator)?Kt(e,t.operator,s):ts(t.operator)?ss(t.operator,s):t.operator==="-v"?await rs(e,s):t.operator==="-o"?js(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await L(e,t.operand.expression.word)})`!=="":!await He(e,t.operand);case"CondAnd":return await He(e,t.left)?await He(e,t.right):!1;case"CondOr":return await He(e,t.left)?!0:await He(e,t.right);case"CondGroup":return await He(e,t.expression);case"CondWord":return await L(e,t.word)!=="";default:return!1}}async function St(e,t){if(t.length===0)return _("","",1);if(t.length===1)return Q(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?A(`test: '(' without matching ')'
11
+ `,2):Gt(r)?Q(await Kt(e,r,n)):ts(r)?Q(ss(r,n)):r==="!"?Q(!n):r==="-v"?Q(await rs(e,n)):r==="-o"?Q(js(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?A(`test: ${r}: unary operator expected
12
+ `,2):_("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if($t(n))return Q(es(n,r,i));if(Qt(n)){let o=ns(r),a=ns(i);return!o.valid||!a.valid?_("","",2):Q(Jt(n,o.value,a.value))}if(Xt(n))return Q(await Yt(e,n,r,i));switch(n){case"-a":return Q(r!==""&&i!=="");case"-o":return Q(r!==""||i!=="");case">":return Q(r>i);case"<":return Q(r<i)}if(r==="!"){let o=await St(e,[n,i]);return _("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return Q(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await St(e,t.slice(1));return _("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return St(e,[t[1],t[2]])}let s=await vn(e,t,0);return s.pos<t.length?A(`test: too many arguments
13
+ `,2):Q(s.value)}async function vn(e,t,s){return lo(e,t,s)}async function lo(e,t,s){let{value:r,pos:n}=await yn(e,t,s);for(;t[n]==="-o";){let i=await yn(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function yn(e,t,s){let{value:r,pos:n}=await Bs(e,t,s);for(;t[n]==="-a";){let i=await Bs(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function Bs(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await Bs(e,t,s+1);return{value:!r,pos:n}}return co(e,t,s)}async function co(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await vn(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if($t(n)){let i=r,o=t[s+2]??"";return{value:es(n,i,o),pos:s+3}}if(Qt(n)){let i=ns(r),o=ns(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:Jt(n,i.value,o.value),pos:s+3}}if(Xt(n)){let i=r,o=t[s+2]??"";return{value:await Yt(e,n,i,o),pos:s+3}}if(Gt(r)){let i=t[s+1]??"";return{value:await Kt(e,r,i),pos:s+2}}if(ts(r)){let i=t[s+1]??"";return{value:ss(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await rs(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:js(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function ct(e,t,s=!1,r=!1){let n=`^${bn(t,r)}$`;return vt(n,s?"is":"s").test(e)}function bn(e,t){let s="";for(let r=0;r<e.length;r++){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=En(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=$n(o),l=a.map(u=>bn(u,t)),c=l.length>0?l.join("|"):"(?:)";if(n==="@")s+=`(?:${c})`;else if(n==="*")s+=`(?:${c})*`;else if(n==="+")s+=`(?:${c})+`;else if(n==="?")s+=`(?:${c})?`;else if(n==="!")if(i<e.length-1){let f=a.map(p=>Sn(p,t));if(f.every(p=>p!==null)&&f.every(p=>p===f[0])&&f[0]!==null){let p=f[0];if(p===0)s+="(?:.+)";else{let m=[];p>0&&m.push(`.{0,${p-1}}`),m.push(`.{${p+1},}`),m.push(`(?!(?:${c})).{${p}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${c})).)*?`}else s+=`(?!(?:${c})$).*`;r=i;continue}}if(n==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,r++}else s+="\\\\";else if(n==="*")s+=".*";else if(n==="?")s+=".";else if(n==="["){let i=e.indexOf("]",r+1);i!==-1?(s+=e.slice(r,i+1),r=i):s+="\\["}else/[\\^$.|+(){}]/.test(n)?s+=`\\${n}`:s+=n}return s}function En(e,t){let s=1,r=t+1;for(;r<e.length&&s>0;){let n=e[r];if(n==="\\"){r+=2;continue}if(n==="(")s++;else if(n===")"&&(s--,s===0))return r;r++}return-1}function $n(e){let t=[],s="",r=0,n=0;for(;n<e.length;){let i=e[n];if(i==="\\"){s+=i,n+1<e.length?(s+=e[n+1],n+=2):n++;continue}i==="("?(r++,s+=i):i===")"?(r--,s+=i):i==="|"&&r===0?(t.push(s),s=""):s+=i,n++}return t.push(s),t}function Sn(e,t){let s=0,r=0;for(;r<e.length;){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=En(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=$n(o).map(c=>Sn(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],r=i+1;continue}return null}return null}}if(n==="*")return null;if(n==="?"){s+=1,r++;continue}if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){s+=1,r=i+1;continue}s+=1,r++;continue}if(n==="\\"){s+=1,r+=2;continue}s+=1,r++}return s}function js(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function gn(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return wn(t);try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{return wn(t)}}function uo(e,t){let s=0;for(let r of e){let n;if(r>="0"&&r<="9")n=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")n=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")n=r.charCodeAt(0)-65+36;else if(r==="@")n=62;else if(r==="_")n=63;else return Number.NaN;if(n>=t)return Number.NaN;s=s*t+n}return s}function wn(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let n=Number.parseInt(r[1],10);n>=2&&n<=64?s=uo(r[2],n):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function ns(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let s=Number.parseInt(e,10);return Number.isNaN(s)?{value:0,valid:!1}:{value:t?-s:s,valid:!0}}function fo(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let r=ho(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function ho(e,t){let s=t+1,r="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(r+="^",s++);let n=!1;s<e.length&&e[s]==="]"&&(n=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let o="",a=!1;for(;s<e.length;){let l=e[s];if(l==="]"){a=!0,s++;break}if(l==="["&&s+1<e.length&&e[s+1]===":"){let c=e.indexOf(":]",s+2);if(c!==-1){let u=e.slice(s+2,c);o+=po(u),s=c+2;continue}}if(l==="["&&s+1<e.length){let c=e[s+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,s+2);if(f!==-1){let d=e.slice(s+2,f);o+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){o+=l+e[s+1],s+=2;continue}o+=l,s++}return a?(n&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:s}):{converted:"\\[",endIndex:t+1}}function po(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function Oe(e){let t=[],s="",r=!1,n=!1,i=!1,o=!1;for(let a of e){if(i){s+=a,i=!1,o=!0;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!n){r||(o=!0),r=!r;continue}if(a==='"'&&!r){n||(o=!0),n=!n;continue}if((a===" "||a===" "||a===`
14
+ `)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function is(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)r+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)n+=e[s],s++;t.push([r,n])}return t}function Pn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Oe(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let r=e.indexOf("=");return{name:e.slice(0,r),isArray:!1,value:e.slice(r+1)}}return{name:e,isArray:!1}}async function mo(e,t){try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function An(e,t,s={}){let{name:r,isArray:n,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=se(e,r);if(u)return u}if(n&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${r}_${u}`,i[u]);e.state.env.set(`${r}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await mo(e,a);e.state.env.set(`${r}_${u}`,o);let f=parseInt(e.state.env.get(`${r}__length`)??"0",10);u>=f&&e.state.env.set(`${r}__length`,String(u+1))}else o!==void 0&&e.state.env.set(r,o);return l&&fe(e,r),null}function Ze(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ut(e,t){return e.state.localVarDepth?.get(t)}function os(e,t){e.state.localVarDepth?.delete(t)}function kn(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function as(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function _n(e,t){if(e.state.localVarStack)for(let[s,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(s)}}var Us=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Cn(e){return Us.has(e)}var Hs=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),ft=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]);async function Qe(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
15
15
  `;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
16
- `}catch{}return null}function Le(e){let s=Math.min(e.length,8192);for(let r=0;r<s;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}function yo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}async function Cn(e,t){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;if(n.operator===">&"||n.operator==="<&"){if(Ts(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
16
+ `}catch{}return null}function Fe(e){let s=Math.min(e.length,8192);for(let r=0;r<s;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}function yo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}async function Nn(e,t){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;if(n.operator===">&"||n.operator==="<&"){if(Ds(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
17
17
  `};s.set(r,await L(e,n.target))}else{let o=await Ht(e,n.target);if("error"in o)return{targets:s,error:o.error};s.set(r,o.target)}}return{targets:s}}function go(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd,s=e.limits.maxFileDescriptors;if(t>=s)throw new Error(`bash: cannot allocate file descriptor: too many open files (max ${s})`);return e.state.nextFd++,t}async function ls(e,t){for(let s of t){if(!s.fdVariable)continue;if(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),(s.operator===">&"||s.operator==="<&")&&s.target.type==="Word"&&await L(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let o=Number.parseInt(i,10);Number.isNaN(o)||e.state.fileDescriptors.delete(o)}continue}let r=go(e);if(e.state.env.set(s.fdVariable,String(r)),s.target.type==="Word"){let n=await L(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(n,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&(le(e),e.state.fileDescriptors.set(r,o));continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,n);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),le(e),e.state.fileDescriptors.set(r,`__file__:${i}`)}else if(s.operator==="<<<")le(e),e.state.fileDescriptors.set(r,`${n}
18
18
  `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);le(e),e.state.fileDescriptors.set(r,o)}catch{return _("",`bash: ${n}: No such file or directory
19
- `,1)}}}return null}async function Oe(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await L(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await Ht(e,s.target);if("error"in a)return _("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";if(i.includes("\0"))return _("",`bash: ${n}: No such file or directory
19
+ `,1)}}}return null}async function xe(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await L(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await Ht(e,s.target);if("error"in a)return _("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";if(i.includes("\0"))return _("",`bash: ${n}: No such file or directory
20
20
  `,1);try{let a=await e.fs.stat(i);if(a.isDirectory)return _("",`bash: ${n}: Is a directory
21
21
  `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return _("",`bash: ${n}: cannot overwrite existing file
22
22
  `,1)}catch{}if(n!=="/dev/null"&&n!=="/dev/stdout"&&n!=="/dev/stderr"&&n!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),n==="/dev/full")return _("",`bash: /dev/full: No space left on device
23
- `,1)}return null}async function G(e,t,s,r){let{stdout:n,stderr:i,exitCode:o}=t,a=t.stdoutEncoding==="binary"?()=>"binary":u=>Le(u);for(let u=0;u<s.length;u++){let f=s[u];if(f.target.type==="HereDoc")continue;let d,p=r?.get(u);if(p!==void 0)d=p;else if(f.operator===">&"||f.operator==="<&"){if(Ts(e,f.target)){i+=`bash: $@: ambiguous redirect
23
+ `,1)}return null}async function G(e,t,s,r){let{stdout:n,stderr:i,exitCode:o}=t,a=t.stdoutEncoding==="binary"?()=>"binary":u=>Fe(u);for(let u=0;u<s.length;u++){let f=s[u];if(f.target.type==="HereDoc")continue;let d,p=r?.get(u);if(p!==void 0)d=p;else if(f.operator===">&"||f.operator==="<&"){if(Ds(e,f.target)){i+=`bash: $@: ambiguous redirect
24
24
  `,o=1,n="";continue}d=await L(e,f.target)}else{let h=await Ht(e,f.target);if("error"in h){i+=h.error,o=1,n="";continue}d=h.target}if(!f.fdVariable){if(d.includes("\0")){i+=`bash: ${d.replace(/\0/g,"")}: No such file or directory
25
- `,o=1,n="";continue}switch(f.operator){case">":case">|":{let y=f.fd??1,h=f.operator===">|";if(y===1){if(d==="/dev/stdout")break;if(d==="/dev/stderr"){i+=n,n="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
- `,o=1,n="";break}let m=e.fs.resolvePath(e.state.cwd,d),b=await Qe(e,m,d,{checkNoclobber:!0,isClobber:h});if(b){i+=b,o=1,n="";break}await e.fs.writeFile(m,n,a(n)),n=""}else if(y===2){if(d==="/dev/stderr")break;if(d==="/dev/stdout"){n+=i,i="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
- `,o=1;break}if(d==="/dev/null")i="";else{let m=e.fs.resolvePath(e.state.cwd,d),b=await Qe(e,m,d,{checkNoclobber:!0,isClobber:h});if(b){i+=b,o=1;break}await e.fs.writeFile(m,i,Le(i)),i=""}}break}case">>":{let y=f.fd??1;if(y===1){if(d==="/dev/stdout")break;if(d==="/dev/stderr"){i+=n,n="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
28
- `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,d),m=await Qe(e,h,d,{});if(m){i+=m,o=1,n="";break}await e.fs.appendFile(h,n,a(n)),n=""}else if(y===2){if(d==="/dev/stderr")break;if(d==="/dev/stdout"){n+=i,i="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
29
- `,o=1;break}let h=e.fs.resolvePath(e.state.cwd,d),m=await Qe(e,h,d,{});if(m){i+=m,o=1;break}await e.fs.appendFile(h,i,Le(i)),i=""}break}case">&":case"<&":{let y=f.fd??1;if(d==="-")break;if(d.endsWith("-")){let h=d.slice(0,-1),m=Number.parseInt(h,10);if(!Number.isNaN(m)){let b=e.state.fileDescriptors?.get(m);b!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(y,b),m>=3&&e.state.fileDescriptors?.delete(m)):m===1||m===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(y,`__dupout__:${m}`)):m===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(y,`__dupin__:${m}`)):m>=3&&(i+=`bash: ${m}: Bad file descriptor
30
- `,o=1)}break}if(d==="2"||d==="&2")y===1&&(i+=n,n="");else if(d==="1"||d==="&1")n+=i,i="";else{let h=Number.parseInt(d,10);if(Number.isNaN(h)){if(f.operator===">&"){let m=e.fs.resolvePath(e.state.cwd,d),b=await Qe(e,m,d,{checkNoclobber:!0});if(b){i=b,o=1,n="";break}if(f.fd==null){let v=n+i;await e.fs.writeFile(m,v,a(v)),n="",i=""}else y===1?(await e.fs.writeFile(m,n,a(n)),n=""):y===2&&(await e.fs.writeFile(m,i,Le(i)),i="")}}else{let m=e.state.fileDescriptors?.get(h);if(m?.startsWith("__file__:")){let b=m.slice(9);y===1?(await e.fs.appendFile(b,n,a(n)),n=""):y===2&&(await e.fs.appendFile(b,i,Le(i)),i="")}else if(m?.startsWith("__rw__:")){let b=yo(m);b&&(y===1?(await e.fs.appendFile(b.path,n,a(n)),n=""):y===2&&(await e.fs.appendFile(b.path,i,Le(i)),i=""))}else if(m?.startsWith("__dupout__:")){let b=Number.parseInt(m.slice(11),10);if(b!==1)if(b===2)y===1&&(i+=n,n="");else{let v=e.state.fileDescriptors?.get(b);if(v?.startsWith("__file__:")){let A=v.slice(9);y===1?(await e.fs.appendFile(A,n,a(n)),n=""):y===2&&(await e.fs.appendFile(A,i,Le(i)),i="")}}}else m?.startsWith("__dupin__:")?(i+=`bash: ${h}: Bad file descriptor
25
+ `,o=1,n="";continue}switch(f.operator){case">":case">|":{let m=f.fd??1,h=f.operator===">|";if(m===1){if(d==="/dev/stdout")break;if(d==="/dev/stderr"){i+=n,n="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
+ `,o=1,n="";break}let y=e.fs.resolvePath(e.state.cwd,d),b=await Qe(e,y,d,{checkNoclobber:!0,isClobber:h});if(b){i+=b,o=1,n="";break}await e.fs.writeFile(y,n,a(n)),n=""}else if(m===2){if(d==="/dev/stderr")break;if(d==="/dev/stdout"){n+=i,i="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
+ `,o=1;break}if(d==="/dev/null")i="";else{let y=e.fs.resolvePath(e.state.cwd,d),b=await Qe(e,y,d,{checkNoclobber:!0,isClobber:h});if(b){i+=b,o=1;break}await e.fs.writeFile(y,i,Fe(i)),i=""}}break}case">>":{let m=f.fd??1;if(m===1){if(d==="/dev/stdout")break;if(d==="/dev/stderr"){i+=n,n="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
28
+ `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,d),y=await Qe(e,h,d,{});if(y){i+=y,o=1,n="";break}await e.fs.appendFile(h,n,a(n)),n=""}else if(m===2){if(d==="/dev/stderr")break;if(d==="/dev/stdout"){n+=i,i="";break}if(d==="/dev/full"){i+=`bash: echo: write error: No space left on device
29
+ `,o=1;break}let h=e.fs.resolvePath(e.state.cwd,d),y=await Qe(e,h,d,{});if(y){i+=y,o=1;break}await e.fs.appendFile(h,i,Fe(i)),i=""}break}case">&":case"<&":{let m=f.fd??1;if(d==="-")break;if(d.endsWith("-")){let h=d.slice(0,-1),y=Number.parseInt(h,10);if(!Number.isNaN(y)){let b=e.state.fileDescriptors?.get(y);b!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,b),y>=3&&e.state.fileDescriptors?.delete(y)):y===1||y===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,`__dupout__:${y}`)):y===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,`__dupin__:${y}`)):y>=3&&(i+=`bash: ${y}: Bad file descriptor
30
+ `,o=1)}break}if(d==="2"||d==="&2")m===1&&(i+=n,n="");else if(d==="1"||d==="&1")n+=i,i="";else{let h=Number.parseInt(d,10);if(Number.isNaN(h)){if(f.operator===">&"){let y=e.fs.resolvePath(e.state.cwd,d),b=await Qe(e,y,d,{checkNoclobber:!0});if(b){i=b,o=1,n="";break}if(f.fd==null){let v=n+i;await e.fs.writeFile(y,v,a(v)),n="",i=""}else m===1?(await e.fs.writeFile(y,n,a(n)),n=""):m===2&&(await e.fs.writeFile(y,i,Fe(i)),i="")}}else{let y=e.state.fileDescriptors?.get(h);if(y?.startsWith("__file__:")){let b=y.slice(9);m===1?(await e.fs.appendFile(b,n,a(n)),n=""):m===2&&(await e.fs.appendFile(b,i,Fe(i)),i="")}else if(y?.startsWith("__rw__:")){let b=yo(y);b&&(m===1?(await e.fs.appendFile(b.path,n,a(n)),n=""):m===2&&(await e.fs.appendFile(b.path,i,Fe(i)),i=""))}else if(y?.startsWith("__dupout__:")){let b=Number.parseInt(y.slice(11),10);if(b!==1)if(b===2)m===1&&(i+=n,n="");else{let v=e.state.fileDescriptors?.get(b);if(v?.startsWith("__file__:")){let P=v.slice(9);m===1?(await e.fs.appendFile(P,n,a(n)),n=""):m===2&&(await e.fs.appendFile(P,i,Fe(i)),i="")}}}else y?.startsWith("__dupin__:")?(i+=`bash: ${h}: Bad file descriptor
31
31
  `,o=1,n=""):h>=3&&(i+=`bash: ${h}: Bad file descriptor
32
32
  `,o=1,n="")}}break}case"&>":{if(d==="/dev/full"){i=`bash: echo: write error: No space left on device
33
- `,o=1,n="";break}let y=e.fs.resolvePath(e.state.cwd,d),h=await Qe(e,y,d,{checkNoclobber:!0});if(h){i=h,o=1,n="";break}let m=n+i;await e.fs.writeFile(y,m,a(m)),n="",i="";break}case"&>>":{if(d==="/dev/full"){i=`bash: echo: write error: No space left on device
34
- `,o=1,n="";break}let y=e.fs.resolvePath(e.state.cwd,d),h=await Qe(e,y,d,{});if(h){i=h,o=1,n="";break}let m=n+i;await e.fs.appendFile(y,m,a(m)),n="",i="";break}}}}let l=e.state.fileDescriptors?.get(1);if(l){if(l==="__dupout__:2")i+=n,n="";else if(l.startsWith("__file__:")){let u=l.slice(9);await e.fs.appendFile(u,n,a(n)),n=""}else if(l.startsWith("__file_append__:")){let u=l.slice(16);await e.fs.appendFile(u,n,a(n)),n=""}}let c=e.state.fileDescriptors?.get(2);if(c){if(c==="__dupout__:1")n+=i,i="";else if(c.startsWith("__file__:")){let u=c.slice(9);await e.fs.appendFile(u,i,Le(i)),i=""}else if(c.startsWith("__file_append__:")){let u=c.slice(16);await e.fs.appendFile(u,i,Le(i)),i=""}}return _(n,i,o)}function Nn(e,t){if(e.state.options.posix&&Us.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
33
+ `,o=1,n="";break}let m=e.fs.resolvePath(e.state.cwd,d),h=await Qe(e,m,d,{checkNoclobber:!0});if(h){i=h,o=1,n="";break}let y=n+i;await e.fs.writeFile(m,y,a(y)),n="",i="";break}case"&>>":{if(d==="/dev/full"){i=`bash: echo: write error: No space left on device
34
+ `,o=1,n="";break}let m=e.fs.resolvePath(e.state.cwd,d),h=await Qe(e,m,d,{});if(h){i=h,o=1,n="";break}let y=n+i;await e.fs.appendFile(m,y,a(y)),n="",i="";break}}}}let l=e.state.fileDescriptors?.get(1);if(l){if(l==="__dupout__:2")i+=n,n="";else if(l.startsWith("__file__:")){let u=l.slice(9);await e.fs.appendFile(u,n,a(n)),n=""}else if(l.startsWith("__file_append__:")){let u=l.slice(16);await e.fs.appendFile(u,n,a(n)),n=""}}let c=e.state.fileDescriptors?.get(2);if(c){if(c==="__dupout__:1")n+=i,i="";else if(c.startsWith("__file__:")){let u=c.slice(9);await e.fs.appendFile(u,i,Fe(i)),i=""}else if(c.startsWith("__file_append__:")){let u=c.slice(16);await e.fs.appendFile(u,i,Fe(i)),i=""}}return _(n,i,o)}function On(e,t){if(e.state.options.posix&&Us.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
35
35
  `;throw new j(2,"",r)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),W}async function wo(e,t){let s="";for(let r of t)if((r.operator==="<<"||r.operator==="<<-")&&r.target.type==="HereDoc"){let n=r.target,i=await L(e,n.content);n.stripTabs&&(i=i.split(`
36
36
  `).map(a=>a.replace(/^\t+/,"")).join(`
37
37
  `)),(r.fd??0)===0&&(s=i)}else if(r.operator==="<<<"&&r.target.type==="Word")s=`${await L(e,r.target)}
38
- `;else if(r.operator==="<"&&r.target.type==="Word"){let n=await L(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function cs(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Ce(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(n??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(kn(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await Cn(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await wo(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),G(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ce){let u=_(c.stdout,c.stderr,c.exitCode);return G(e,u,t.redirections,a)}throw c}}var xn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],qs=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],vo=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],bo=qs;async function Gs(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,p=[],y=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let g=0;g<t.length;g++){let w=t[g];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(g++,g>=t.length)return P(`compgen: -A: option requires an argument
39
- `,2);let E=t[g];if(!y.includes(E))return P(`compgen: ${E}: invalid action name
40
- `,2);s.push(E)}else if(w==="-W"){if(g++,g>=t.length)return P(`compgen: -W: option requires an argument
41
- `,2);r=t[g]}else if(w==="-P"){if(g++,g>=t.length)return P(`compgen: -P: option requires an argument
42
- `,2);n=t[g]}else if(w==="-S"){if(g++,g>=t.length)return P(`compgen: -S: option requires an argument
43
- `,2);i=t[g]}else if(w==="-o"){if(g++,g>=t.length)return P(`compgen: -o: option requires an argument
44
- `,2);let E=t[g];if(E==="plusdirs")a=!0;else if(E==="dirnames")l=!0;else if(E==="default")c=!0;else if(!(E==="filenames"||E==="nospace"||E==="bashdefault"||E==="noquote"))return P(`compgen: ${E}: invalid option name
45
- `,2)}else if(w==="-F"){if(g++,g>=t.length)return P(`compgen: -F: option requires an argument
46
- `,2);f=t[g]}else if(w==="-C"){if(g++,g>=t.length)return P(`compgen: -C: option requires an argument
47
- `,2);d=t[g]}else if(w==="-X"){if(g++,g>=t.length)return P(`compgen: -X: option requires an argument
48
- `,2);u=t[g]}else if(w==="-G"){if(g++,g>=t.length)return P(`compgen: -G: option requires an argument
49
- `,2)}else if(w==="--"){p.push(...t.slice(g+1));break}else w.startsWith("-")||p.push(w)}o=p[0]??null;let h=[];if(l){let g=await Zs(e,o);h.push(...g)}if(c){let g=await On(e,o);h.push(...g)}for(let g of s)if(g==="variable"){let w=Eo(e,o);h.push(...w)}else if(g==="export"){let w=$o(e,o);h.push(...w)}else if(g==="function"){let w=So(e,o);h.push(...w)}else if(g==="builtin"){let w=Ao(o);h.push(...w)}else if(g==="keyword"){let w=Po(o);h.push(...w)}else if(g==="alias"){let w=ko(e,o);h.push(...w)}else if(g==="shopt"){let w=_o(o);h.push(...w)}else if(g==="helptopic"){let w=Co(o);h.push(...w)}else if(g==="directory"){let w=await Zs(e,o);h.push(...w)}else if(g==="file"){let w=await On(e,o);h.push(...w)}else if(g==="user"){let w=No(o);h.push(...w)}else if(g==="command"){let w=await Oo(e,o);h.push(...w)}if(r!==null)try{let g=await xo(e,r),w=To(e,g);for(let E of w)(o===null||E.startsWith(o))&&h.push(E)}catch{return _("","",1)}if(a){let g=await Zs(e,o);for(let w of g)h.includes(w)||h.push(w)}let m="";if(f!==null){let g=e.state.functions.get(f);if(g){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let E=new Map;for(let I of e.state.env.keys())(I==="COMPREPLY"||I.startsWith("COMPREPLY_")||I==="COMPREPLY__length")&&(E.set(I,e.state.env.get(I)),e.state.env.delete(I));let $=["compgen",p[0]??"",""];try{let I=await cs(e,g,$,"");if(I.exitCode!==0)return dt(e,w),dt(e,E),_("",I.stderr,1);m=I.stdout;let N=Do(e);h.push(...N)}catch{return dt(e,w),dt(e,E),_("","",1)}dt(e,w),dt(e,E)}}if(d!==null)try{let g=ue(d),w=await e.executeScript(g);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let E=w.stdout.split(`
50
- `);for(let $ of E)$.length>0&&h.push($)}}catch(g){if(g.name==="ParseException")return P(`compgen: -C: ${g.message}
51
- `,2);throw g}let b=h;if(u!==null){let g=u.startsWith("!"),w=g?u.slice(1):u;b=h.filter(E=>{let $=ct(E,w,!1,!0);return g?$:!$})}if(b.length===0&&o!==null)return _(m,"",1);let v=b.map(g=>`${n}${g}${i}`).join(`
52
- `),A=m+(v?`${v}
53
- `:"");return z(A)}function Eo(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function $o(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function So(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Ao(e){let t=[...qs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Po(e){let t=[...xn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ko(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function _o(e){let t=[...vo];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Co(e){let t=[...bo];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Zs(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function On(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function No(e){return["root","nobody"]}async function Oo(e,t){let s=new Set;for(let i of qs)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of xn)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function xo(e,t){let r=new B().parseWordFromString(t,!1,!1);return await L(e,r)}function To(e,t){let s=e.state.env.get("IFS")??`
54
- `;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function dt(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function Do(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=Se(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var Ro=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Xs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return P(`complete: -W: option requires an argument
55
- `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return P(`complete: -F: option requires an argument
56
- `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return P(`complete: -o: option requires an argument
57
- `,2);let p=t[f];if(!Ro.includes(p))return P(`complete: ${p}: invalid option name
58
- `,2);l.push(p)}else if(d==="-A"){if(f++,f>=t.length)return P(`complete: -A: option requires an argument
59
- `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return P(`complete: -C: option requires an argument
60
- `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return P(`complete: -G: option requires an argument
61
- `,2)}else if(d==="-P"){if(f++,f>=t.length)return P(`complete: -P: option requires an argument
62
- `,2)}else if(d==="-S"){if(f++,f>=t.length)return P(`complete: -S: option requires an argument
63
- `,2)}else if(d==="-X"){if(f++,f>=t.length)return P(`complete: -X: option requires an argument
64
- `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),z("");for(let f of u)e.state.completionSpecs.delete(f);return z("")}if(s)return u.length===0?Ks(e):Ks(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return Ks(e);if(o&&u.length===0&&!n)return P(`complete: -F: option requires a command name
38
+ `;else if(r.operator==="<"&&r.target.type==="Word"){let n=await L(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function cs(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Ne(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(n??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(_n(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await Nn(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await wo(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),G(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ce){let u=_(c.stdout,c.stderr,c.exitCode);return G(e,u,t.redirections,a)}throw c}}var Dn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],qs=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],vo=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],bo=qs;async function Gs(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,p=[],m=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let g=0;g<t.length;g++){let w=t[g];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(g++,g>=t.length)return A(`compgen: -A: option requires an argument
39
+ `,2);let E=t[g];if(!m.includes(E))return A(`compgen: ${E}: invalid action name
40
+ `,2);s.push(E)}else if(w==="-W"){if(g++,g>=t.length)return A(`compgen: -W: option requires an argument
41
+ `,2);r=t[g]}else if(w==="-P"){if(g++,g>=t.length)return A(`compgen: -P: option requires an argument
42
+ `,2);n=t[g]}else if(w==="-S"){if(g++,g>=t.length)return A(`compgen: -S: option requires an argument
43
+ `,2);i=t[g]}else if(w==="-o"){if(g++,g>=t.length)return A(`compgen: -o: option requires an argument
44
+ `,2);let E=t[g];if(E==="plusdirs")a=!0;else if(E==="dirnames")l=!0;else if(E==="default")c=!0;else if(!(E==="filenames"||E==="nospace"||E==="bashdefault"||E==="noquote"))return A(`compgen: ${E}: invalid option name
45
+ `,2)}else if(w==="-F"){if(g++,g>=t.length)return A(`compgen: -F: option requires an argument
46
+ `,2);f=t[g]}else if(w==="-C"){if(g++,g>=t.length)return A(`compgen: -C: option requires an argument
47
+ `,2);d=t[g]}else if(w==="-X"){if(g++,g>=t.length)return A(`compgen: -X: option requires an argument
48
+ `,2);u=t[g]}else if(w==="-G"){if(g++,g>=t.length)return A(`compgen: -G: option requires an argument
49
+ `,2)}else if(w==="--"){p.push(...t.slice(g+1));break}else w.startsWith("-")||p.push(w)}o=p[0]??null;let h=[];if(l){let g=await Zs(e,o);h.push(...g)}if(c){let g=await xn(e,o);h.push(...g)}for(let g of s)if(g==="variable"){let w=Eo(e,o);h.push(...w)}else if(g==="export"){let w=$o(e,o);h.push(...w)}else if(g==="function"){let w=So(e,o);h.push(...w)}else if(g==="builtin"){let w=Po(o);h.push(...w)}else if(g==="keyword"){let w=Ao(o);h.push(...w)}else if(g==="alias"){let w=ko(e,o);h.push(...w)}else if(g==="shopt"){let w=_o(o);h.push(...w)}else if(g==="helptopic"){let w=Co(o);h.push(...w)}else if(g==="directory"){let w=await Zs(e,o);h.push(...w)}else if(g==="file"){let w=await xn(e,o);h.push(...w)}else if(g==="user"){let w=No(o);h.push(...w)}else if(g==="command"){let w=await Oo(e,o);h.push(...w)}if(r!==null)try{let g=await xo(e,r),w=Do(e,g);for(let E of w)(o===null||E.startsWith(o))&&h.push(E)}catch{return _("","",1)}if(a){let g=await Zs(e,o);for(let w of g)h.includes(w)||h.push(w)}let y="";if(f!==null){let g=e.state.functions.get(f);if(g){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let E=new Map;for(let I of e.state.env.keys())(I==="COMPREPLY"||I.startsWith("COMPREPLY_")||I==="COMPREPLY__length")&&(E.set(I,e.state.env.get(I)),e.state.env.delete(I));let $=["compgen",p[0]??"",""];try{let I=await cs(e,g,$,"");if(I.exitCode!==0)return dt(e,w),dt(e,E),_("",I.stderr,1);y=I.stdout;let N=To(e);h.push(...N)}catch{return dt(e,w),dt(e,E),_("","",1)}dt(e,w),dt(e,E)}}if(d!==null)try{let g=ue(d),w=await e.executeScript(g);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let E=w.stdout.split(`
50
+ `);for(let $ of E)$.length>0&&h.push($)}}catch(g){if(g.name==="ParseException")return A(`compgen: -C: ${g.message}
51
+ `,2);throw g}let b=h;if(u!==null){let g=u.startsWith("!"),w=g?u.slice(1):u;b=h.filter(E=>{let $=ct(E,w,!1,!0);return g?$:!$})}if(b.length===0&&o!==null)return _(y,"",1);let v=b.map(g=>`${n}${g}${i}`).join(`
52
+ `),P=y+(v?`${v}
53
+ `:"");return z(P)}function Eo(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function $o(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function So(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Po(e){let t=[...qs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ao(e){let t=[...Dn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ko(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function _o(e){let t=[...vo];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Co(e){let t=[...bo];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Zs(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function xn(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function No(e){return["root","nobody"]}async function Oo(e,t){let s=new Set;for(let i of qs)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of Dn)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function xo(e,t){let r=new B().parseWordFromString(t,!1,!1);return await L(e,r)}function Do(e,t){let s=e.state.env.get("IFS")??`
54
+ `;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function dt(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function To(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=Se(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var Ro=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Xs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return A(`complete: -W: option requires an argument
55
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return A(`complete: -F: option requires an argument
56
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return A(`complete: -o: option requires an argument
57
+ `,2);let p=t[f];if(!Ro.includes(p))return A(`complete: ${p}: invalid option name
58
+ `,2);l.push(p)}else if(d==="-A"){if(f++,f>=t.length)return A(`complete: -A: option requires an argument
59
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return A(`complete: -C: option requires an argument
60
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return A(`complete: -G: option requires an argument
61
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return A(`complete: -P: option requires an argument
62
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return A(`complete: -S: option requires an argument
63
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return A(`complete: -X: option requires an argument
64
+ `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),z("");for(let f of u)e.state.completionSpecs.delete(f);return z("")}if(s)return u.length===0?Ks(e):Ks(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return Ks(e);if(o&&u.length===0&&!n)return A(`complete: -F: option requires a command name
65
65
  `,2);if(n){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.completionSpecs.set("__default__",f),z("")}for(let f of u){let d=Object.create(null);i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return z("")}function Ks(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
66
66
  `;return _("",i,1)}return z("")}let r=[],n=t||Array.from(s.keys());for(let i of n){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return _(r.join(`
67
67
  `)+(r.length>0?`
68
68
  `:""),`complete: ${i}: no completion specification
69
69
  `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${l}`;if(o.actions)for(let l of o.actions)a+=` -A ${l}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W '${o.wordlist}'`:a+=` -W ${o.wordlist}`),o.function!==void 0&&(a+=` -F ${o.function}`),o.isDefault&&(a+=" -D"),a+=` ${i}`,r.push(a)}return r.length===0?z(""):z(`${r.join(`
70
70
  `)}
71
- `)}var Tn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ys(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return P(`compopt: -o: option requires an argument
72
- `,2);let c=t[a];if(!Tn.includes(c))return P(`compopt: ${c}: invalid option name
73
- `,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return P(`compopt: +o: option requires an argument
74
- `,2);let c=t[a];if(!Tn.includes(c))return P(`compopt: ${c}: invalid option name
75
- `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),z("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),z("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of n)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return z("")}return P(`compopt: not currently executing completion function
76
- `,1)}function Qs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Me;return W}if(t.length>1)throw new j(1,"",`bash: continue: too many arguments
71
+ `)}var Tn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ys(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return A(`compopt: -o: option requires an argument
72
+ `,2);let c=t[a];if(!Tn.includes(c))return A(`compopt: ${c}: invalid option name
73
+ `,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return A(`compopt: +o: option requires an argument
74
+ `,2);let c=t[a];if(!Tn.includes(c))return A(`compopt: ${c}: invalid option name
75
+ `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),z("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),z("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of n)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return z("")}return A(`compopt: not currently executing completion function
76
+ `,1)}function Qs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new We;return W}if(t.length>1)throw new j(1,"",`bash: continue: too many arguments
77
77
  `);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new j(1,"",`bash: continue: ${t[0]}: numeric argument required
78
- `);s=r}throw new ye(s)}function X(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function Js(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function er(e){let t="$'";for(let s=0;s<e.length;s++){let r=e[s],n=e.charCodeAt(s);n===7?t+="\\a":n===8?t+="\\b":n===9?t+="\\t":n===10?t+="\\n":n===11?t+="\\v":n===12?t+="\\f":n===13?t+="\\r":n===27?t+="\\e":n===39?t+="\\'":n===92?t+="\\\\":n<32||n===127?t+=`\\${n.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function us(e){return Js(e)?er(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Je(e){return Js(e)?er(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function tr(e){return Js(e)?er(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Dn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ve(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function sr(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Rn(e,t){let s="",r="",n=!1;for(let i of t){let o=Dn(e,i);if(e.state.associativeArrays?.has(i)){let u=Be(e,i);if(u.length===0)s+=`declare -A ${i}=()
79
- `;else{let f=u.map(d=>{let p=e.state.env.get(`${i}_${d}`)??"",y=sr(p);return`['${d}']=${y}`});s+=`declare -A ${i}=(${f.join(" ")})
78
+ `);s=r}throw new ye(s)}function X(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function Js(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function er(e){let t="$'";for(let s=0;s<e.length;s++){let r=e[s],n=e.charCodeAt(s);n===7?t+="\\a":n===8?t+="\\b":n===9?t+="\\t":n===10?t+="\\n":n===11?t+="\\v":n===12?t+="\\f":n===13?t+="\\r":n===27?t+="\\e":n===39?t+="\\'":n===92?t+="\\\\":n<32||n===127?t+=`\\${n.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function us(e){return Js(e)?er(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Je(e){return Js(e)?er(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function tr(e){return Js(e)?er(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Rn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ve(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function sr(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function In(e,t){let s="",r="",n=!1;for(let i of t){let o=Rn(e,i);if(e.state.associativeArrays?.has(i)){let u=je(e,i);if(u.length===0)s+=`declare -A ${i}=()
79
+ `;else{let f=u.map(d=>{let p=e.state.env.get(`${i}_${d}`)??"",m=sr(p);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
80
80
  `}continue}let l=re(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${Je(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
81
81
  `;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
82
82
  `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${tr(c)}
83
83
  `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
84
84
  `:(r+=`bash: declare: ${i}: not found
85
- `,n=!0)}}return _(s,r,n?1:0)}function In(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let p=f.slice(0,-8);c.add(p);continue}let d=f.lastIndexOf("_");if(d>0){let p=f.slice(0,d),y=f.slice(d+1);if(/^\d+$/.test(y)||e.state.associativeArrays?.has(p)){c.add(p);continue}}c.add(f)}if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Dn(e,f),p=e.state.associativeArrays?.has(f),y=re(e,f),h=!p&&(y.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!p||i&&!h||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!ve(e,f)))continue;if(p){let b=Be(e,f);if(b.length===0)l+=`declare -A ${f}=()
86
- `;else{let v=b.map(A=>{let g=e.state.env.get(`${f}_${A}`)??"",w=sr(g);return`['${A}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
87
- `}continue}if(y.length>0){let b=y.map(v=>{let A=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${Je(A)}`});l+=`declare -a ${f}=(${b.join(" ")})
85
+ `,n=!0)}}return _(s,r,n?1:0)}function Ln(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let p=f.slice(0,-8);c.add(p);continue}let d=f.lastIndexOf("_");if(d>0){let p=f.slice(0,d),m=f.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(p)){c.add(p);continue}}c.add(f)}if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Rn(e,f),p=e.state.associativeArrays?.has(f),m=re(e,f),h=!p&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!p||i&&!h||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!ve(e,f)))continue;if(p){let b=je(e,f);if(b.length===0)l+=`declare -A ${f}=()
86
+ `;else{let v=b.map(P=>{let g=e.state.env.get(`${f}_${P}`)??"",w=sr(g);return`['${P}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
87
+ `}continue}if(m.length>0){let b=m.map(v=>{let P=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${Je(P)}`});l+=`declare -a ${f}=(${b.join(" ")})
88
88
  `;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
89
- `;continue}let m=e.state.env.get(f);m!==void 0&&(l+=`declare ${d} ${f}=${tr(m)}
90
- `)}return z(l)}function Ln(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=Be(e,r);if(n.length===0)t+=`declare -A ${r}=()
89
+ `;continue}let y=e.state.env.get(f);y!==void 0&&(l+=`declare ${d} ${f}=${tr(y)}
90
+ `)}return z(l)}function Fn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=je(e,r);if(n.length===0)t+=`declare -A ${r}=()
91
91
  `;else{let i=n.map(o=>{let a=e.state.env.get(`${r}_${o}`)??"",l=sr(a);return`['${o}']=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
92
- `}}return z(t)}function Fn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let r=Array.from(s).sort();for(let n of r){let i=re(e,n);if(i.length===0)t+=`declare -a ${n}=()
92
+ `}}return z(t)}function Mn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let r=Array.from(s).sort();for(let n of r){let i=re(e,n);if(i.length===0)t+=`declare -a ${n}=()
93
93
  `;else{let o=i.map(a=>{let l=e.state.env.get(`${n}_${a}`)??"";return`[${a}]=${Je(l)}`});t+=`declare -a ${n}=(${o.join(" ")})
94
- `}}return z(t)}function Mn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(n)}let r=Array.from(s).sort();for(let n of r){if(e.state.associativeArrays?.has(n)||re(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${us(a)}
95
- `)}return z(t)}function rr(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function At(e,t){return e.state.integerVars?.has(t)??!1}function nr(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Io(e,t){return e.state.lowercaseVars?.has(t)??!1}function ir(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Lo(e,t){return e.state.uppercaseVars?.has(t)??!1}function ht(e,t,s){return Io(e,t)?s.toLowerCase():Lo(e,t)?s.toUpperCase():s}async function Wn(e,t){try{let s=new B,r=ee(s,t),n=await H(e,r.expression);return String(n)}catch{return"0"}}function Fo(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function or(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,p=!1,y=!1,h=!1,m=!1,b=[];for(let N=0;N<t.length;N++){let F=t[N];if(F==="-a")s=!0;else if(F==="-A")r=!0;else if(F==="-r")n=!0;else if(F==="-x")i=!0;else if(F==="-p")o=!0;else if(F==="-n")a=!0;else if(F==="+n")l=!0;else if(F==="+a")c=!0;else if(F==="+x")u=!0;else if(F==="--"){b.push(...t.slice(N+1));break}else if(F.startsWith("+")){for(let k of F.slice(1))if(k==="n")l=!0;else if(k==="a")c=!0;else if(k==="x")u=!0;else if(k!=="r"){if(k!=="i"){if(!(k==="f"||k==="F"))return _("",`bash: typeset: +${k}: invalid option
96
- `,2)}}}else if(F==="-i")f=!0;else if(F==="-l")d=!0;else if(F==="-u")p=!0;else if(F==="-f")y=!0;else if(F==="-F")h=!0;else if(F==="-g")m=!0;else if(F.startsWith("-"))for(let k of F.slice(1))if(k==="a")s=!0;else if(k==="A")r=!0;else if(k==="r")n=!0;else if(k==="x")i=!0;else if(k==="p")o=!0;else if(k==="n")a=!0;else if(k==="i")f=!0;else if(k==="l")d=!0;else if(k==="u")p=!0;else if(k==="f")y=!0;else if(k==="F")h=!0;else if(k==="g")m=!0;else return _("",`bash: typeset: -${k}: invalid option
97
- `,2);else b.push(F)}let A=e.state.localScopes.length>0&&!m,g=N=>{if(!A)return;let F=e.state.localScopes[e.state.localScopes.length-1];F.has(N)||F.set(N,e.state.env.get(N))},w=N=>{if(!A)return;let F=e.state.localScopes[e.state.localScopes.length-1];F.has(N)||F.set(N,e.state.env.get(N));let k=`${N}_`;for(let x of e.state.env.keys())x.startsWith(k)&&!x.includes("__")&&(F.has(x)||F.set(x,e.state.env.get(x)));let C=`${N}__length`;e.state.env.has(C)&&!F.has(C)&&F.set(C,e.state.env.get(C))},E=N=>{A&&He(e,N)};if(h){if(b.length===0){let k=Array.from(e.state.functions.keys()).sort(),C="";for(let x of k)C+=`declare -f ${x}
94
+ `}}return z(t)}function Wn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(n)}let r=Array.from(s).sort();for(let n of r){if(e.state.associativeArrays?.has(n)||re(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${us(a)}
95
+ `)}return z(t)}function rr(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Pt(e,t){return e.state.integerVars?.has(t)??!1}function nr(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Io(e,t){return e.state.lowercaseVars?.has(t)??!1}function ir(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Lo(e,t){return e.state.uppercaseVars?.has(t)??!1}function ht(e,t,s){return Io(e,t)?s.toLowerCase():Lo(e,t)?s.toUpperCase():s}async function zn(e,t){try{let s=new B,r=ee(s,t),n=await H(e,r.expression);return String(n)}catch{return"0"}}function Fo(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function or(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,p=!1,m=!1,h=!1,y=!1,b=[];for(let N=0;N<t.length;N++){let F=t[N];if(F==="-a")s=!0;else if(F==="-A")r=!0;else if(F==="-r")n=!0;else if(F==="-x")i=!0;else if(F==="-p")o=!0;else if(F==="-n")a=!0;else if(F==="+n")l=!0;else if(F==="+a")c=!0;else if(F==="+x")u=!0;else if(F==="--"){b.push(...t.slice(N+1));break}else if(F.startsWith("+")){for(let k of F.slice(1))if(k==="n")l=!0;else if(k==="a")c=!0;else if(k==="x")u=!0;else if(k!=="r"){if(k!=="i"){if(!(k==="f"||k==="F"))return _("",`bash: typeset: +${k}: invalid option
96
+ `,2)}}}else if(F==="-i")f=!0;else if(F==="-l")d=!0;else if(F==="-u")p=!0;else if(F==="-f")m=!0;else if(F==="-F")h=!0;else if(F==="-g")y=!0;else if(F.startsWith("-"))for(let k of F.slice(1))if(k==="a")s=!0;else if(k==="A")r=!0;else if(k==="r")n=!0;else if(k==="x")i=!0;else if(k==="p")o=!0;else if(k==="n")a=!0;else if(k==="i")f=!0;else if(k==="l")d=!0;else if(k==="u")p=!0;else if(k==="f")m=!0;else if(k==="F")h=!0;else if(k==="g")y=!0;else return _("",`bash: typeset: -${k}: invalid option
97
+ `,2);else b.push(F)}let P=e.state.localScopes.length>0&&!y,g=N=>{if(!P)return;let F=e.state.localScopes[e.state.localScopes.length-1];F.has(N)||F.set(N,e.state.env.get(N))},w=N=>{if(!P)return;let F=e.state.localScopes[e.state.localScopes.length-1];F.has(N)||F.set(N,e.state.env.get(N));let k=`${N}_`;for(let x of e.state.env.keys())x.startsWith(k)&&!x.includes("__")&&(F.has(x)||F.set(x,e.state.env.get(x)));let C=`${N}__length`;e.state.env.has(C)&&!F.has(C)&&F.set(C,e.state.env.get(C))},E=N=>{P&&Ze(e,N)};if(h){if(b.length===0){let k=Array.from(e.state.functions.keys()).sort(),C="";for(let x of k)C+=`declare -f ${x}
98
98
  `;return z(C)}let N=!0,F="";for(let k of b)e.state.functions.has(k)?F+=`${k}
99
- `:N=!1;return _(F,"",N?0:1)}if(y){if(b.length===0){let F="",k=Array.from(e.state.functions.keys()).sort();for(let C of k)F+=`${C} ()
99
+ `:N=!1;return _(F,"",N?0:1)}if(m){if(b.length===0){let F="",k=Array.from(e.state.functions.keys()).sort();for(let C of k)F+=`${C} ()
100
100
  {
101
101
  # function body
102
102
  }
103
- `;return z(F)}let N=!0;for(let F of b)e.state.functions.has(F)||(N=!1);return _("","",N?0:1)}if(o&&b.length>0)return Rn(e,b);if(o&&b.length===0)return In(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return Ln(e);if(b.length===0&&s&&!o)return Fn(e);if(b.length===0&&!o)return Mn(e);let $="",I=0;for(let N of b){let F=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(F&&!c){let S=F[1],T=F[2];if(r&&re(e,S).length>0){$+=`bash: declare: ${S}: cannot convert indexed to associative array
103
+ `;return z(F)}let N=!0;for(let F of b)e.state.functions.has(F)||(N=!1);return _("","",N?0:1)}if(o&&b.length>0)return In(e,b);if(o&&b.length===0)return Ln(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return Fn(e);if(b.length===0&&s&&!o)return Mn(e);if(b.length===0&&!o)return Wn(e);let $="",I=0;for(let N of b){let F=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(F&&!c){let S=F[1],D=F[2];if(r&&re(e,S).length>0){$+=`bash: declare: ${S}: cannot convert indexed to associative array
104
104
  `,I=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has(S)){$+=`bash: declare: ${S}: cannot convert associative to indexed array
105
- `,I=1;continue}if(w(S),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)),ke(e,S),e.state.env.delete(S),e.state.env.delete(`${S}__length`),r&&T.includes("[")){let M=is(T);for(let[te,V]of M){let Y=X(e,V);e.state.env.set(`${S}_${te}`,Y)}}else if(r){let M=Ne(T);for(let te=0;te<M.length;te+=2){let V=M[te],Y=te+1<M.length?X(e,M[te+1]):"";e.state.env.set(`${S}_${V}`,Y)}}else{let M=Ne(T);if(M.some(V=>/^\[[^\]]+\]=/.test(V))){let V=0;for(let Y of M){let oe=Y.match(/^\[([^\]]+)\]=(.*)$/);if(oe){let he=oe[1],st=oe[2],Wi=X(e,st),wt;if(/^-?\d+$/.test(he))wt=Number.parseInt(he,10);else try{let zi=new B,Vi=ee(zi,he);wt=await H(e,Vi.expression)}catch{wt=0}e.state.env.set(`${S}_${wt}`,Wi),V=wt+1}else{let he=X(e,Y);e.state.env.set(`${S}_${V}`,he),V++}}}else{for(let V=0;V<M.length;V++)e.state.env.set(`${S}_${V}`,M[V]);e.state.env.set(`${S}__length`,String(M.length))}}E(S),n&&fe(e,S),i&&Ae(e,S);continue}if(l){let S=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(jr(e,S),!N.includes("="))continue}if(u){let S=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(Ut(e,S),!N.includes("="))continue}let k=Fo(N);if(k){let{name:S,indexExpr:T,value:M}=k,te=se(e,S);if(te)return te;w(S);let V;try{let oe=new B,he=ee(oe,T);V=await H(e,he.expression)}catch{let oe=parseInt(T,10);V=Number.isNaN(oe)?0:oe}e.state.env.set(`${S}_${V}`,M);let Y=parseInt(e.state.env.get(`${S}__length`)??"0",10);V>=Y&&e.state.env.set(`${S}__length`,String(V+1)),E(S),n&&fe(e,S),i&&Ae(e,S);continue}let C=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(C&&!c){let S=C[1],T=C[2],M=se(e,S);if(M)return M;w(S);let te=Ne(T);if(e.state.associativeArrays?.has(S)){let V=is(T);for(let[Y,oe]of V){let he=X(e,oe);e.state.env.set(`${S}_${Y}`,he)}}else{let V=re(e,S),Y=0,oe=e.state.env.get(S);V.length===0&&oe!==void 0?(e.state.env.set(`${S}_0`,oe),e.state.env.delete(S),Y=1):V.length>0&&(Y=Math.max(...V)+1);for(let st=0;st<te.length;st++)e.state.env.set(`${S}_${Y+st}`,X(e,te[st]));let he=Y+te.length;e.state.env.set(`${S}__length`,String(he))}E(S),n&&fe(e,S),i&&Ae(e,S);continue}let x=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(x){let S=x[1],T=X(e,x[2]),M=se(e,S);if(M)return M;g(S),f&&rr(e,S),d&&nr(e,S),p&&ir(e,S);let V=re(e,S).length>0||e.state.associativeArrays?.has(S);if(At(e,S)){let Y=e.state.env.get(S)??"0",oe=parseInt(Y,10)||0,he=parseInt(await Wn(e,T),10)||0;T=String(oe+he),e.state.env.set(S,T)}else if(V){T=ht(e,S,T);let Y=`${S}_0`,oe=e.state.env.get(Y)??"";e.state.env.set(Y,oe+T)}else{T=ht(e,S,T);let Y=e.state.env.get(S)??"";e.state.env.set(S,Y+T)}E(S),n&&fe(e,S),i&&Ae(e,S),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(S));continue}if(N.includes("=")){let S=N.indexOf("="),T=N.slice(0,S),M=N.slice(S+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(T)){$+=`bash: typeset: \`${T}': not a valid identifier
106
- `,I=1;continue}let te=se(e,T);if(te)return te;if(g(T),a){if(M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)){$+=`bash: declare: \`${M}': invalid variable name for name reference
107
- `,I=1;continue}e.state.env.set(T,M),De(e,T),M!==""&&Os(e,M)&&Ns(e,T),E(T),n&&fe(e,T),i&&Ae(e,T);continue}if(f&&rr(e,T),d&&nr(e,T),p&&ir(e,T),At(e,T)&&(M=await Wn(e,M)),M=ht(e,T,M),ve(e,T)){let V=je(e,T);V&&V!==T?e.state.env.set(V,M):e.state.env.set(T,M)}else e.state.env.set(T,M);E(T),n&&fe(e,T),i&&Ae(e,T),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(T))}else{let S=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(S)){$+=`bash: typeset: \`${S}': not a valid identifier
108
- `,I=1;continue}if(s||r?w(S):g(S),a){De(e,S);let M=e.state.env.get(S);M!==void 0&&M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)?Ur(e,S):M&&Os(e,M)&&Ns(e,S),E(S),n&&fe(e,S),i&&Ae(e,S);continue}if(f&&rr(e,S),d&&nr(e,S),p&&ir(e,S),r){if(re(e,S).length>0){$+=`bash: declare: ${S}: cannot convert indexed to associative array
109
- `,I=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)}let T=Array.from(e.state.env.keys()).some(M=>M.startsWith(`${S}_`)&&!M.startsWith(`${S}__length`));!e.state.env.has(S)&&!T&&(s||r?e.state.env.set(`${S}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(S))),E(S),n&&fe(e,S),i&&Ae(e,S)}}return _("",$,I)}async function ar(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
110
- `}}return z(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],p=se(e,f);if(p)return p;let y=Ne(d);if(e.state.associativeArrays?.has(f)){let h=is(d);for(let[m,b]of h){let v=X(e,b);e.state.env.set(`${f}_${m}`,v)}}else{let h=re(e,f),m=0,b=e.state.env.get(f);h.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),m=1):h.length>0&&(m=Math.max(...h)+1);for(let A=0;A<y.length;A++)e.state.env.set(`${f}_${m+A}`,X(e,y[A]));let v=m+y.length;e.state.env.set(`${f}__length`,String(v))}fe(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=X(e,l[2]),p=se(e,f);if(p)return p;let y=e.state.env.get(f)??"";e.state.env.set(f,y+d),fe(e,f);continue}let c=Sn(o);if(c.value===void 0&&!c.isArray){fe(e,c.name);continue}let u=await An(e,c,{makeReadonly:!0});if(u)return u}return W}function lr(e){return e.state.directoryStack??=[],e.state.directoryStack}function Pt(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Mo(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function cr(e,t){let s=lr(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return P(`bash: pushd: too many arguments
111
- `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return P(`bash: pushd: ${l}: invalid option
112
- `,2);if(r!==void 0)return P(`bash: pushd: too many arguments
113
- `,2);r=l}}if(r===void 0){if(s.length<2)return P(`bash: pushd: no other directory
114
- `,1);let a=s[0];s[0]=s[1],s[1]=a,r=s[0]}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=Mo(n);try{if(!(await e.fs.stat(n)).isDirectory)return P(`bash: pushd: ${r}: Not a directory
115
- `,1)}catch{return P(`bash: pushd: ${r}: No such file or directory
116
- `,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[n,...s].map(a=>Pt(a,i)).join(" ")}
117
- `;return z(o)}function ur(e,t){let s=lr(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?P(`bash: popd: ${o}: invalid option
118
- `,2):P(`bash: popd: too many arguments
119
- `,2);if(s.length===0)return P(`bash: popd: directory stack empty
120
- `,1);let r=s.shift();if(!r)return P(`bash: popd: directory stack empty
121
- `,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let n=e.state.env.get("HOME")||"",i=`${[r,...s].map(o=>Pt(o,n)).join(" ")}
122
- `;return z(i)}function fr(e,t){let s=lr(e),r=!1,n=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return P(`bash: dirs: -${f}: invalid option
123
- `,2);else return P(`bash: dirs: too many arguments
124
- `,1);if(r)return e.state.directoryStack=[],W;let a=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=n?u:Pt(u,l);return` ${f} ${d}`}).join(`
105
+ `,I=1;continue}if(w(S),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)),_e(e,S),e.state.env.delete(S),e.state.env.delete(`${S}__length`),r&&D.includes("[")){let M=is(D);for(let[te,V]of M){let Y=X(e,V);e.state.env.set(`${S}_${te}`,Y)}}else if(r){let M=Oe(D);for(let te=0;te<M.length;te+=2){let V=M[te],Y=te+1<M.length?X(e,M[te+1]):"";e.state.env.set(`${S}_${V}`,Y)}}else{let M=Oe(D);if(M.some(V=>/^\[[^\]]+\]=/.test(V))){let V=0;for(let Y of M){let oe=Y.match(/^\[([^\]]+)\]=(.*)$/);if(oe){let he=oe[1],st=oe[2],Wi=X(e,st),wt;if(/^-?\d+$/.test(he))wt=Number.parseInt(he,10);else try{let zi=new B,Vi=ee(zi,he);wt=await H(e,Vi.expression)}catch{wt=0}e.state.env.set(`${S}_${wt}`,Wi),V=wt+1}else{let he=X(e,Y);e.state.env.set(`${S}_${V}`,he),V++}}}else{for(let V=0;V<M.length;V++)e.state.env.set(`${S}_${V}`,M[V]);e.state.env.set(`${S}__length`,String(M.length))}}E(S),n&&fe(e,S),i&&Pe(e,S);continue}if(l){let S=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(Ur(e,S),!N.includes("="))continue}if(u){let S=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(Ut(e,S),!N.includes("="))continue}let k=Fo(N);if(k){let{name:S,indexExpr:D,value:M}=k,te=se(e,S);if(te)return te;w(S);let V;try{let oe=new B,he=ee(oe,D);V=await H(e,he.expression)}catch{let oe=parseInt(D,10);V=Number.isNaN(oe)?0:oe}e.state.env.set(`${S}_${V}`,M);let Y=parseInt(e.state.env.get(`${S}__length`)??"0",10);V>=Y&&e.state.env.set(`${S}__length`,String(V+1)),E(S),n&&fe(e,S),i&&Pe(e,S);continue}let C=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(C&&!c){let S=C[1],D=C[2],M=se(e,S);if(M)return M;w(S);let te=Oe(D);if(e.state.associativeArrays?.has(S)){let V=is(D);for(let[Y,oe]of V){let he=X(e,oe);e.state.env.set(`${S}_${Y}`,he)}}else{let V=re(e,S),Y=0,oe=e.state.env.get(S);V.length===0&&oe!==void 0?(e.state.env.set(`${S}_0`,oe),e.state.env.delete(S),Y=1):V.length>0&&(Y=Math.max(...V)+1);for(let st=0;st<te.length;st++)e.state.env.set(`${S}_${Y+st}`,X(e,te[st]));let he=Y+te.length;e.state.env.set(`${S}__length`,String(he))}E(S),n&&fe(e,S),i&&Pe(e,S);continue}let x=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(x){let S=x[1],D=X(e,x[2]),M=se(e,S);if(M)return M;g(S),f&&rr(e,S),d&&nr(e,S),p&&ir(e,S);let V=re(e,S).length>0||e.state.associativeArrays?.has(S);if(Pt(e,S)){let Y=e.state.env.get(S)??"0",oe=parseInt(Y,10)||0,he=parseInt(await zn(e,D),10)||0;D=String(oe+he),e.state.env.set(S,D)}else if(V){D=ht(e,S,D);let Y=`${S}_0`,oe=e.state.env.get(Y)??"";e.state.env.set(Y,oe+D)}else{D=ht(e,S,D);let Y=e.state.env.get(S)??"";e.state.env.set(S,Y+D)}E(S),n&&fe(e,S),i&&Pe(e,S),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(S));continue}if(N.includes("=")){let S=N.indexOf("="),D=N.slice(0,S),M=N.slice(S+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(D)){$+=`bash: typeset: \`${D}': not a valid identifier
106
+ `,I=1;continue}let te=se(e,D);if(te)return te;if(g(D),a){if(M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)){$+=`bash: declare: \`${M}': invalid variable name for name reference
107
+ `,I=1;continue}e.state.env.set(D,M),Re(e,D),M!==""&&Os(e,M)&&Ns(e,D),E(D),n&&fe(e,D),i&&Pe(e,D);continue}if(f&&rr(e,D),d&&nr(e,D),p&&ir(e,D),Pt(e,D)&&(M=await zn(e,M)),M=ht(e,D,M),ve(e,D)){let V=Ue(e,D);V&&V!==D?e.state.env.set(V,M):e.state.env.set(D,M)}else e.state.env.set(D,M);E(D),n&&fe(e,D),i&&Pe(e,D),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(D))}else{let S=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(S)){$+=`bash: typeset: \`${S}': not a valid identifier
108
+ `,I=1;continue}if(s||r?w(S):g(S),a){Re(e,S);let M=e.state.env.get(S);M!==void 0&&M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)?Hr(e,S):M&&Os(e,M)&&Ns(e,S),E(S),n&&fe(e,S),i&&Pe(e,S);continue}if(f&&rr(e,S),d&&nr(e,S),p&&ir(e,S),r){if(re(e,S).length>0){$+=`bash: declare: ${S}: cannot convert indexed to associative array
109
+ `,I=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(S)}let D=Array.from(e.state.env.keys()).some(M=>M.startsWith(`${S}_`)&&!M.startsWith(`${S}__length`));!e.state.env.has(S)&&!D&&(s||r?e.state.env.set(`${S}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(S))),E(S),n&&fe(e,S),i&&Pe(e,S)}}return _("",$,I)}async function ar(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
110
+ `}}return z(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],p=se(e,f);if(p)return p;let m=Oe(d);if(e.state.associativeArrays?.has(f)){let h=is(d);for(let[y,b]of h){let v=X(e,b);e.state.env.set(`${f}_${y}`,v)}}else{let h=re(e,f),y=0,b=e.state.env.get(f);h.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),y=1):h.length>0&&(y=Math.max(...h)+1);for(let P=0;P<m.length;P++)e.state.env.set(`${f}_${y+P}`,X(e,m[P]));let v=y+m.length;e.state.env.set(`${f}__length`,String(v))}fe(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=X(e,l[2]),p=se(e,f);if(p)return p;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),fe(e,f);continue}let c=Pn(o);if(c.value===void 0&&!c.isArray){fe(e,c.name);continue}let u=await An(e,c,{makeReadonly:!0});if(u)return u}return W}function lr(e){return e.state.directoryStack??=[],e.state.directoryStack}function At(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Mo(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function cr(e,t){let s=lr(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return A(`bash: pushd: too many arguments
111
+ `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return A(`bash: pushd: ${l}: invalid option
112
+ `,2);if(r!==void 0)return A(`bash: pushd: too many arguments
113
+ `,2);r=l}}if(r===void 0){if(s.length<2)return A(`bash: pushd: no other directory
114
+ `,1);let a=s[0];s[0]=s[1],s[1]=a,r=s[0]}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=Mo(n);try{if(!(await e.fs.stat(n)).isDirectory)return A(`bash: pushd: ${r}: Not a directory
115
+ `,1)}catch{return A(`bash: pushd: ${r}: No such file or directory
116
+ `,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[n,...s].map(a=>At(a,i)).join(" ")}
117
+ `;return z(o)}function ur(e,t){let s=lr(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?A(`bash: popd: ${o}: invalid option
118
+ `,2):A(`bash: popd: too many arguments
119
+ `,2);if(s.length===0)return A(`bash: popd: directory stack empty
120
+ `,1);let r=s.shift();if(!r)return A(`bash: popd: directory stack empty
121
+ `,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let n=e.state.env.get("HOME")||"",i=`${[r,...s].map(o=>At(o,n)).join(" ")}
122
+ `;return z(i)}function fr(e,t){let s=lr(e),r=!1,n=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return A(`bash: dirs: -${f}: invalid option
123
+ `,2);else return A(`bash: dirs: too many arguments
124
+ `,1);if(r)return e.state.directoryStack=[],W;let a=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=n?u:At(u,l);return` ${f} ${d}`}).join(`
125
125
  `),c+=`
126
- `):i?c=a.map(u=>n?u:Pt(u,l)).join(`
126
+ `):i?c=a.map(u=>n?u:At(u,l)).join(`
127
127
  `)+`
128
- `:c=a.map(u=>n?u:Pt(u,l)).join(" ")+`
129
- `,z(c)}async function fs(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return P(`bash: eval: ${a}: invalid option
128
+ `:c=a.map(u=>n?u:At(u,l)).join(" ")+`
129
+ `,z(c)}async function fs(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return A(`bash: eval: ${a}: invalid option
130
130
  eval: usage: eval [arg ...]
131
- `,2)}if(r.length===0)return W;let n=r.join(" ");if(n.trim()==="")return W;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=ue(n);return await e.executeScript(a)}catch(a){if(a instanceof me||a instanceof ye||a instanceof ce||a instanceof j)throw a;if(a.name==="ParseException")return P(`bash: eval: ${a.message}
131
+ `,2)}if(r.length===0)return W;let n=r.join(" ");if(n.trim()==="")return W;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=ue(n);return await e.executeScript(a)}catch(a){if(a instanceof me||a instanceof ye||a instanceof ce||a instanceof j)throw a;if(a.name==="ParseException")return A(`bash: eval: ${a.message}
132
132
  `);throw a}finally{e.state.groupStdin=i}}function dr(e,t){let s,r="";if(t.length===0)s=e.state.lastExitCode;else{let n=t[0],i=Number.parseInt(n,10);n===""||Number.isNaN(i)||!/^-?\d+$/.test(n)?(r=`bash: exit: ${n}: numeric argument required
133
133
  `,s=2):s=(i%256+256)%256}throw new j(s,"",r)}function hr(e,t){let s=!1,r=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!s){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -x ${c}="${f}"
134
134
  `}}return z(o)}if(s){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=X(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;Ut(e,a)}return W}let n="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=X(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=X(e,o.slice(f+1))}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){n+=`bash: export: \`${o}': not a valid identifier
135
- `,i=1;continue}if(l!==void 0)if(c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");Ae(e,a)}return _("",n,i)}function ds(e,t){if(t.length<2)return P(`bash: getopts: usage: getopts optstring name [arg ...]
136
- `);let s=t[0],r=t[1],n=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=s.startsWith(":"),o=i?s.slice(1):s,a;if(t.length>2)a=t.slice(2);else{let h=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let m=1;m<=h;m++)a.push(e.state.env.get(String(m))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return n||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),ds(e,t);let p=o.indexOf(d);if(p===-1){let h="";return i?e.state.env.set("OPTARG",d):h=`bash: illegal option -- ${d}
135
+ `,i=1;continue}if(l!==void 0)if(c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");Pe(e,a)}return _("",n,i)}function ds(e,t){if(t.length<2)return A(`bash: getopts: usage: getopts optstring name [arg ...]
136
+ `);let s=t[0],r=t[1],n=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=s.startsWith(":"),o=i?s.slice(1):s,a;if(t.length>2)a=t.slice(2);else{let h=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let y=1;y<=h;y++)a.push(e.state.env.get(String(y))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return n||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),ds(e,t);let p=o.indexOf(d);if(p===-1){let h="";return i?e.state.env.set("OPTARG",d):h=`bash: illegal option -- ${d}
137
137
  `,n||e.state.env.set(r,"?"),f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:n?2:0,stdout:"",stderr:h}}if(p+1<o.length&&o[p+1]===":")if(f+1<u.length)e.state.env.set("OPTARG",u.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=a.length){let h="";return i?(e.state.env.set("OPTARG",d),n||e.state.env.set(r,":")):(h=`bash: option requires an argument -- ${d}
138
- `,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:h}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function pr(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let y=t[c];if(y==="--"){c++,l.push(...t.slice(c));break}if(y==="-r")s=!0,c++;else if(y==="-d")r=!0,c++;else if(y==="-l")n=!0,c++;else if(y==="-t")o=!0,c++;else if(y==="-p"){if(i=!0,c++,c>=t.length)return P(`bash: hash: -p: option requires an argument
139
- `,1);a=t[c],c++}else if(y.startsWith("-")&&y.length>1){for(let h of y.slice(1))if(h==="r")s=!0;else if(h==="d")r=!0;else if(h==="l")n=!0;else if(h==="t")o=!0;else return h==="p"?P(`bash: hash: -p: option requires an argument
140
- `,1):P(`bash: hash: -${h}: invalid option
141
- `,1);c++}else l.push(y),c++}if(s)return e.state.hashTable.clear(),W;if(r){if(l.length===0)return P(`bash: hash: -d: option requires an argument
142
- `,1);let y=!1,h="";for(let m of l)e.state.hashTable.has(m)?e.state.hashTable.delete(m):(h+=`bash: hash: ${m}: not found
143
- `,y=!0);return y?P(h,1):W}if(o){if(l.length===0)return P(`bash: hash: -t: option requires an argument
144
- `,1);let y="",h=!1,m="";for(let b of l){let v=e.state.hashTable.get(b);v?l.length>1?y+=`${b} ${v}
145
- `:y+=`${v}
146
- `:(m+=`bash: hash: ${b}: not found
147
- `,h=!0)}return h?{exitCode:1,stdout:y,stderr:m}:z(y)}if(i){if(l.length===0)return P(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
148
- `,1);let y=l[0];return e.state.hashTable.set(y,a),W}if(l.length===0){if(e.state.hashTable.size===0)return z(`hash: hash table empty
149
- `);let y="";if(n)for(let[h,m]of e.state.hashTable)y+=`builtin hash -p ${m} ${h}
150
- `;else{y=`hits command
151
- `;for(let[,h]of e.state.hashTable)y+=` 1 ${h}
152
- `}return z(y)}let u=!1,f="",p=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let y of l){if(y.includes("/")){f+=`bash: hash: ${y}: cannot use / in name
153
- `,u=!0;continue}let h=!1;for(let m of p){if(!m)continue;let b=`${m}/${y}`;if(await e.fs.exists(b)){e.state.hashTable.set(y,b),h=!0;break}}h||(f+=`bash: hash: ${y}: not found
154
- `,u=!0)}return u?P(f,1):W}var zn=new Map([[":",[": [arguments]",`Null command.
138
+ `,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:h}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function pr(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let m=t[c];if(m==="--"){c++,l.push(...t.slice(c));break}if(m==="-r")s=!0,c++;else if(m==="-d")r=!0,c++;else if(m==="-l")n=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return A(`bash: hash: -p: option requires an argument
139
+ `,1);a=t[c],c++}else if(m.startsWith("-")&&m.length>1){for(let h of m.slice(1))if(h==="r")s=!0;else if(h==="d")r=!0;else if(h==="l")n=!0;else if(h==="t")o=!0;else return h==="p"?A(`bash: hash: -p: option requires an argument
140
+ `,1):A(`bash: hash: -${h}: invalid option
141
+ `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),W;if(r){if(l.length===0)return A(`bash: hash: -d: option requires an argument
142
+ `,1);let m=!1,h="";for(let y of l)e.state.hashTable.has(y)?e.state.hashTable.delete(y):(h+=`bash: hash: ${y}: not found
143
+ `,m=!0);return m?A(h,1):W}if(o){if(l.length===0)return A(`bash: hash: -t: option requires an argument
144
+ `,1);let m="",h=!1,y="";for(let b of l){let v=e.state.hashTable.get(b);v?l.length>1?m+=`${b} ${v}
145
+ `:m+=`${v}
146
+ `:(y+=`bash: hash: ${b}: not found
147
+ `,h=!0)}return h?{exitCode:1,stdout:m,stderr:y}:z(m)}if(i){if(l.length===0)return A(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
148
+ `,1);let m=l[0];return e.state.hashTable.set(m,a),W}if(l.length===0){if(e.state.hashTable.size===0)return z(`hash: hash table empty
149
+ `);let m="";if(n)for(let[h,y]of e.state.hashTable)m+=`builtin hash -p ${y} ${h}
150
+ `;else{m=`hits command
151
+ `;for(let[,h]of e.state.hashTable)m+=` 1 ${h}
152
+ `}return z(m)}let u=!1,f="",p=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of l){if(m.includes("/")){f+=`bash: hash: ${m}: cannot use / in name
153
+ `,u=!0;continue}let h=!1;for(let y of p){if(!y)continue;let b=`${y}/${m}`;if(await e.fs.exists(b)){e.state.hashTable.set(m,b),h=!0;break}}h||(f+=`bash: hash: ${m}: not found
154
+ `,u=!0)}return u?A(f,1):W}var Vn=new Map([[":",[": [arguments]",`Null command.
155
155
  No effect; the command does nothing.
156
156
  Exit Status:
157
157
  Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -496,31 +496,31 @@ eval: usage: eval [arg ...]
496
496
  job specification, and reports its termination status.
497
497
  Exit Status:
498
498
  Returns the status of the last ID; fails if ID is invalid or an invalid
499
- option is given.`]]]),Vn=[...zn.keys()].sort();function mr(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return P(`bash: help: -${u}: invalid option
499
+ option is given.`]]]),Bn=[...Vn.keys()].sort();function mr(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return A(`bash: help: -${u}: invalid option
500
500
  `,2)}n++}else r.push(l),n++}if(r.length===0)return zo();let i="",o=!1,a="";for(let l of r){let c=Wo(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
501
- `,o=!0;continue}for(let u of c){let f=zn.get(u);if(!f)continue;let[d,p]=f;s?i+=`${u}: ${d}
501
+ `,o=!0;continue}for(let u of c){let f=Vn.get(u);if(!f)continue;let[d,p]=f;s?i+=`${u}: ${d}
502
502
  `:i+=`${u}: ${d}
503
503
  ${p}
504
- `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Wo(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=vt(`^${t}$`);return Vn.filter(r=>s.test(r))}function zo(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,s=Vn.slice(),r=Math.ceil(s.length/2);for(let n=0;n<r;n++){let i=s[n]||"",o=s[n+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return z(`${e.join(`
504
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Wo(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=vt(`^${t}$`);return Bn.filter(r=>s.test(r))}function zo(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,s=Bn.slice(),r=Math.ceil(s.length/2);for(let n=0;n<r;n++){let i=s[n]||"",o=s[n+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return z(`${e.join(`
505
505
  `)}
506
- `)}function Vo(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function yr(e,t){if(t.length===0)return P(`bash: let: expression expected
507
- `);let s=Vo(t),r=0;for(let n of s)try{let o=ue(`(( ${n} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await H(e,a.expression.expression))}}catch(i){return P(`bash: let: ${n}: ${i.message}
508
- `)}return _("","",r===0?1:0)}async function gr(e,t){if(e.state.localScopes.length===0)return P(`bash: local: can only be used in a function
506
+ `)}function Vo(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function yr(e,t){if(t.length===0)return A(`bash: let: expression expected
507
+ `);let s=Vo(t),r=0;for(let n of s)try{let o=ue(`(( ${n} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await H(e,a.expression.expression))}}catch(i){return A(`bash: let: ${n}: ${i.message}
508
+ `)}return _("","",r===0?1:0)}async function gr(e,t){if(e.state.localScopes.length===0)return A(`bash: local: can only be used in a function
509
509
  `);let s=e.state.localScopes[e.state.localScopes.length-1],r="",n=0,i=!1,o=!1,a=!1,l=[];for(let c of t)if(c==="-n")i=!0;else if(c==="-a")o=!0;else if(c==="-p")a=!0;else if(c.startsWith("-")&&!c.includes("="))for(let u of c.slice(1))u==="n"?i=!0:u==="a"?o=!0:u==="p"&&(a=!0);else l.push(c);if(l.length===0){let c="",u=Array.from(s.keys()).filter(f=>!f.includes("_")||!f.match(/_\d+$/)).filter(f=>!f.includes("__length")).sort();for(let f of u){let d=e.state.env.get(f);d!==void 0&&(c+=`${f}=${d}
510
510
  `)}return _(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
511
- `,n=1;continue}if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let g=`${u}_`;for(let w of e.state.env.keys())w.startsWith(g)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let v=`${u}_`;for(let g of e.state.env.keys())g.startsWith(v)&&!g.includes("__")&&e.state.env.delete(g);let A=Ne(b);for(let g=0;g<A.length;g++)e.state.env.set(`${u}_${g}`,A[g]);e.state.env.set(`${u}__length`,String(A.length)),He(e,u),i&&De(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(p){u=p[1];let b=p[2];if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let $=`${u}_`;for(let N of e.state.env.keys())N.startsWith($)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let I=`${u}__length`;e.state.env.has(I)&&!s.has(I)&&s.set(I,e.state.env.get(I))}let v=Ne(b),A=re(e,u),g=0,w=e.state.env.get(u);A.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),g=1):A.length>0&&(g=Math.max(...A)+1);for(let $=0;$<v.length;$++)e.state.env.set(`${u}_${g+$}`,X(e,v[$]));let E=g+v.length;e.state.env.set(`${u}__length`,String(E)),He(e,u),i&&De(e,u);continue}let y=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(y){u=y[1];let b=X(e,y[2]);se(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let v=e.state.env.get(u)??"";e.state.env.set(u,v+b),He(e,u),i&&De(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(h){u=h[1];let b=h[2],v=X(e,h[3]);if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let $ of e.state.env.keys())$.startsWith(w)&&!$.includes("__")&&(s.has($)||s.set($,e.state.env.get($)));let E=`${u}__length`;e.state.env.has(E)&&!s.has(E)&&s.set(E,e.state.env.get(E))}let A;try{let w=new B,E=ee(w,b);A=await H(e,E.expression)}catch{let w=parseInt(b,10);A=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${A}`,v);let g=parseInt(e.state.env.get(`${u}__length`)??"0",10);A>=g&&e.state.env.set(`${u}__length`,String(A+1)),He(e,u),i&&De(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=X(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
512
- `,n=1;continue}let m=s.has(u);if(f!==void 0){let b=e.state.env.get(u);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(u),A=e.state.mutatedTempEnvVars?.has(u);if(!v&&!A)for(let g=e.state.tempEnvBindings.length-1;g>=0;g--){let w=e.state.tempEnvBindings[g];if(w.has(u)){b=w.get(u);break}}}Pn(e,u,b)}if(!m){let b=e.state.env.get(u);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let A=e.state.tempEnvBindings[v];if(A.has(u)){b=A.get(u);break}}if(s.set(u,b),o){let v=`${u}_`;for(let g of e.state.env.keys())g.startsWith(v)&&!g.includes("__")&&(s.has(g)||s.set(g,e.state.env.get(g)));let A=`${u}__length`;e.state.env.has(A)&&!s.has(A)&&s.set(A,e.state.env.get(A))}}if(o&&f===void 0){let b=`${u}_`;for(let v of e.state.env.keys())v.startsWith(b)&&!v.includes("__")&&e.state.env.delete(v);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(se(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
513
- `,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(v=>v.has(u));!m&&!b&&e.state.env.delete(u)}He(e,u),i&&De(e,u)}return _("",r,n)}function wr(e,t,s){let r=`
511
+ `,n=1;continue}if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let g=`${u}_`;for(let w of e.state.env.keys())w.startsWith(g)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let v=`${u}_`;for(let g of e.state.env.keys())g.startsWith(v)&&!g.includes("__")&&e.state.env.delete(g);let P=Oe(b);for(let g=0;g<P.length;g++)e.state.env.set(`${u}_${g}`,P[g]);e.state.env.set(`${u}__length`,String(P.length)),Ze(e,u),i&&Re(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(p){u=p[1];let b=p[2];if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let $=`${u}_`;for(let N of e.state.env.keys())N.startsWith($)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let I=`${u}__length`;e.state.env.has(I)&&!s.has(I)&&s.set(I,e.state.env.get(I))}let v=Oe(b),P=re(e,u),g=0,w=e.state.env.get(u);P.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),g=1):P.length>0&&(g=Math.max(...P)+1);for(let $=0;$<v.length;$++)e.state.env.set(`${u}_${g+$}`,X(e,v[$]));let E=g+v.length;e.state.env.set(`${u}__length`,String(E)),Ze(e,u),i&&Re(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let b=X(e,m[2]);se(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let v=e.state.env.get(u)??"";e.state.env.set(u,v+b),Ze(e,u),i&&Re(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(h){u=h[1];let b=h[2],v=X(e,h[3]);if(se(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let $ of e.state.env.keys())$.startsWith(w)&&!$.includes("__")&&(s.has($)||s.set($,e.state.env.get($)));let E=`${u}__length`;e.state.env.has(E)&&!s.has(E)&&s.set(E,e.state.env.get(E))}let P;try{let w=new B,E=ee(w,b);P=await H(e,E.expression)}catch{let w=parseInt(b,10);P=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${P}`,v);let g=parseInt(e.state.env.get(`${u}__length`)??"0",10);P>=g&&e.state.env.set(`${u}__length`,String(P+1)),Ze(e,u),i&&Re(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=X(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
512
+ `,n=1;continue}let y=s.has(u);if(f!==void 0){let b=e.state.env.get(u);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(u),P=e.state.mutatedTempEnvVars?.has(u);if(!v&&!P)for(let g=e.state.tempEnvBindings.length-1;g>=0;g--){let w=e.state.tempEnvBindings[g];if(w.has(u)){b=w.get(u);break}}}kn(e,u,b)}if(!y){let b=e.state.env.get(u);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let P=e.state.tempEnvBindings[v];if(P.has(u)){b=P.get(u);break}}if(s.set(u,b),o){let v=`${u}_`;for(let g of e.state.env.keys())g.startsWith(v)&&!g.includes("__")&&(s.has(g)||s.set(g,e.state.env.get(g)));let P=`${u}__length`;e.state.env.has(P)&&!s.has(P)&&s.set(P,e.state.env.get(P))}}if(o&&f===void 0){let b=`${u}_`;for(let v of e.state.env.keys())v.startsWith(b)&&!v.includes("__")&&e.state.env.delete(v);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(se(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
513
+ `,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(v=>v.has(u));!y&&!b&&e.state.env.delete(u)}Ze(e,u),i&&Re(e,u)}return _("",r,n)}function wr(e,t,s){let r=`
514
514
  `,n=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let v=t[c];v==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
515
- `,c+=2):v==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):v==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):v==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):v==="-t"?(a=!0,c++):v==="-u"||v==="-C"||v==="-c"?c+=2:(v.startsWith("-")||(l=v),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,p=0,y=0,h=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let v=d.indexOf(r);if(v===-1){if(d.length>0){if(y<o)y++;else if(n===0||p<n){if(i+p>=h)return _("",`mapfile: array element limit exceeded (${h})
516
- `,1);let w=d,E=w.indexOf("\0");E!==-1&&(w=w.substring(0,E)),f.push(w),p++}}break}let A=d.substring(0,v),g=A.indexOf("\0");if(g!==-1&&(A=A.substring(0,g)),!a&&r!=="\0"&&(A+=r),d=d.substring(v+r.length),y<o){y++;continue}if(n>0&&p>=n)break;if(i+p>=h)return _("",`mapfile: array element limit exceeded (${h})
517
- `,1);f.push(A),p++}i===0&&ke(e,l);for(let v=0;v<f.length;v++)e.state.env.set(`${l}_${i+v}`,f[v]);let m=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(m,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function Bo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function jo(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function vr(e,t,s,r=-1){let n=!1,i=`
518
- `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],p=0,y=!1,h=(k,C)=>{let x=1;for(;x<k.length;){let S=k[x];if(S==="r")n=!0,x++;else if(S==="s")x++;else{if(S==="d")return x+1<k.length?(i=k.substring(x+1),{nextArgIndex:C+1}):C+1<t.length?(i=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(S==="n"){if(x+1<k.length){let T=k.substring(x+1);return a=Number.parseInt(T,10),(Number.isNaN(a)||a<0)&&(y=!0,a=0),{nextArgIndex:C+1}}else if(C+1<t.length)return a=Number.parseInt(t[C+1],10),(Number.isNaN(a)||a<0)&&(y=!0,a=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(S==="N"){if(x+1<k.length){let T=k.substring(x+1);return l=Number.parseInt(T,10),(Number.isNaN(l)||l<0)&&(y=!0,l=0),{nextArgIndex:C+1}}else if(C+1<t.length)return l=Number.parseInt(t[C+1],10),(Number.isNaN(l)||l<0)&&(y=!0,l=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else{if(S==="a")return x+1<k.length?(c=k.substring(x+1),{nextArgIndex:C+1}):C+1<t.length?(c=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(S==="p")return x+1<k.length?(o=k.substring(x+1),{nextArgIndex:C+1}):C+1<t.length?(o=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(S==="u"){if(x+1<k.length){let T=k.substring(x+1);return u=Number.parseInt(T,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+1}}else if(C+1<t.length)return u=Number.parseInt(t[C+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(S==="t"){if(x+1<k.length){let T=k.substring(x+1);return f=Number.parseFloat(T),Number.isNaN(f)&&(f=0),{nextArgIndex:C+1}}else if(C+1<t.length)return f=Number.parseFloat(t[C+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(S==="e"||S==="i"||S==="P"){if(S==="i"&&C+1<t.length)return{nextArgIndex:C+2};x++}else x++}}}return{nextArgIndex:C+1}};for(;p<t.length;){let k=t[p];if(k.startsWith("-")&&k.length>1&&k!=="--"){let C=h(k,p);if(C.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(C.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};p=C.nextArgIndex}else if(k==="--")for(p++;p<t.length;)d.push(t[p]),p++;else d.push(k),p++}if(y)return _("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)ke(e,c);else{for(let k of d)e.state.env.set(k,"");d.length===0&&e.state.env.set("REPLY","")}return _("","",0)}if(f<0&&f!==-1)return _("","",1);let m=s;u>=0?e.state.fileDescriptors?m=e.state.fileDescriptors.get(u)||"":m="":!m&&e.state.groupStdin!==void 0&&(m=e.state.groupStdin);let b=i===""?"\0":i,v="",A=0,g=!0,w=k=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,m.substring(k));else if(r>=0&&e.state.fileDescriptors){let C=e.state.fileDescriptors.get(r);if(C?.startsWith("__rw__:")){let x=Bo(C);if(x){let S=x.position+k;e.state.fileDescriptors.set(r,jo(x.path,S,x.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=m.substring(k))};if(l>=0){let k=Math.min(l,m.length);v=m.substring(0,k),A=k,g=k>=l,w(A);let C=d[0]||"REPLY";e.state.env.set(C,v);for(let x=1;x<d.length;x++)e.state.env.set(d[x],"");return _("","",g?0:1)}else if(a>=0){let k=0,C=0,x=!1;for(;C<m.length&&k<a;){let S=m[C];if(S===b){A=C+1,x=!0;break}if(!n&&S==="\\"&&C+1<m.length){let T=m[C+1];if(T===b&&b===`
519
- `){C+=2,A=C;continue}if(T===b){C+=2,k++,v+=T,A=C;continue}v+=T,C+=2,k++,A=C}else v+=S,C++,k++,A=C}g=k>=a||x,w(A)}else{A=0;let k=0;for(;k<m.length;){let C=m[k];if(C===b){A=k+b.length,g=!0;break}if(!n&&C==="\\"&&k+1<m.length){let x=m[k+1];if(x===`
520
- `){k+=2;continue}if(x===b){v+=x,k+=2;continue}v+=C,v+=x,k+=2;continue}v+=C,k++}if(k>=m.length&&(g=!1,A=k,v.length===0&&m.length===0)){for(let C of d)e.state.env.set(C,"");return c&&ke(e,c),_("","",1)}w(A)}b===`
515
+ `,c+=2):v==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):v==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):v==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):v==="-t"?(a=!0,c++):v==="-u"||v==="-C"||v==="-c"?c+=2:(v.startsWith("-")||(l=v),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,p=0,m=0,h=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let v=d.indexOf(r);if(v===-1){if(d.length>0){if(m<o)m++;else if(n===0||p<n){if(i+p>=h)return _("",`mapfile: array element limit exceeded (${h})
516
+ `,1);let w=d,E=w.indexOf("\0");E!==-1&&(w=w.substring(0,E)),f.push(w),p++}}break}let P=d.substring(0,v),g=P.indexOf("\0");if(g!==-1&&(P=P.substring(0,g)),!a&&r!=="\0"&&(P+=r),d=d.substring(v+r.length),m<o){m++;continue}if(n>0&&p>=n)break;if(i+p>=h)return _("",`mapfile: array element limit exceeded (${h})
517
+ `,1);f.push(P),p++}i===0&&_e(e,l);for(let v=0;v<f.length;v++)e.state.env.set(`${l}_${i+v}`,f[v]);let y=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(y,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function Bo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function jo(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function vr(e,t,s,r=-1){let n=!1,i=`
518
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],p=0,m=!1,h=(k,C)=>{let x=1;for(;x<k.length;){let S=k[x];if(S==="r")n=!0,x++;else if(S==="s")x++;else{if(S==="d")return x+1<k.length?(i=k.substring(x+1),{nextArgIndex:C+1}):C+1<t.length?(i=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(S==="n"){if(x+1<k.length){let D=k.substring(x+1);return a=Number.parseInt(D,10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:C+1}}else if(C+1<t.length)return a=Number.parseInt(t[C+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(S==="N"){if(x+1<k.length){let D=k.substring(x+1);return l=Number.parseInt(D,10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:C+1}}else if(C+1<t.length)return l=Number.parseInt(t[C+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else{if(S==="a")return x+1<k.length?(c=k.substring(x+1),{nextArgIndex:C+1}):C+1<t.length?(c=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(S==="p")return x+1<k.length?(o=k.substring(x+1),{nextArgIndex:C+1}):C+1<t.length?(o=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(S==="u"){if(x+1<k.length){let D=k.substring(x+1);return u=Number.parseInt(D,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+1}}else if(C+1<t.length)return u=Number.parseInt(t[C+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(S==="t"){if(x+1<k.length){let D=k.substring(x+1);return f=Number.parseFloat(D),Number.isNaN(f)&&(f=0),{nextArgIndex:C+1}}else if(C+1<t.length)return f=Number.parseFloat(t[C+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(S==="e"||S==="i"||S==="P"){if(S==="i"&&C+1<t.length)return{nextArgIndex:C+2};x++}else x++}}}return{nextArgIndex:C+1}};for(;p<t.length;){let k=t[p];if(k.startsWith("-")&&k.length>1&&k!=="--"){let C=h(k,p);if(C.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(C.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};p=C.nextArgIndex}else if(k==="--")for(p++;p<t.length;)d.push(t[p]),p++;else d.push(k),p++}if(m)return _("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)_e(e,c);else{for(let k of d)e.state.env.set(k,"");d.length===0&&e.state.env.set("REPLY","")}return _("","",0)}if(f<0&&f!==-1)return _("","",1);let y=s;u>=0?e.state.fileDescriptors?y=e.state.fileDescriptors.get(u)||"":y="":!y&&e.state.groupStdin!==void 0&&(y=e.state.groupStdin);let b=i===""?"\0":i,v="",P=0,g=!0,w=k=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,y.substring(k));else if(r>=0&&e.state.fileDescriptors){let C=e.state.fileDescriptors.get(r);if(C?.startsWith("__rw__:")){let x=Bo(C);if(x){let S=x.position+k;e.state.fileDescriptors.set(r,jo(x.path,S,x.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=y.substring(k))};if(l>=0){let k=Math.min(l,y.length);v=y.substring(0,k),P=k,g=k>=l,w(P);let C=d[0]||"REPLY";e.state.env.set(C,v);for(let x=1;x<d.length;x++)e.state.env.set(d[x],"");return _("","",g?0:1)}else if(a>=0){let k=0,C=0,x=!1;for(;C<y.length&&k<a;){let S=y[C];if(S===b){P=C+1,x=!0;break}if(!n&&S==="\\"&&C+1<y.length){let D=y[C+1];if(D===b&&b===`
519
+ `){C+=2,P=C;continue}if(D===b){C+=2,k++,v+=D,P=C;continue}v+=D,C+=2,k++,P=C}else v+=S,C++,k++,P=C}g=k>=a||x,w(P)}else{P=0;let k=0;for(;k<y.length;){let C=y[k];if(C===b){P=k+b.length,g=!0;break}if(!n&&C==="\\"&&k+1<y.length){let x=y[k+1];if(x===`
520
+ `){k+=2;continue}if(x===b){v+=x,k+=2;continue}v+=C,v+=x,k+=2;continue}v+=C,k++}if(k>=y.length&&(g=!1,P=k,v.length===0&&y.length===0)){for(let C of d)e.state.env.set(C,"");return c&&_e(e,c),_("","",1)}w(P)}b===`
521
521
  `&&v.endsWith(`
522
- `)&&(v=v.slice(0,-1));let E=k=>n?k:k.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",E(v)),_("","",g?0:1);let $=Vr(e.state.env);if(c){let{words:k}=Cs(v,$,void 0,n),C=e.limits?.maxArrayElements??1e5;if(k.length>C)return _("",`read: array element limit exceeded (${C})
523
- `,1);ke(e,c);for(let x=0;x<k.length;x++)e.state.env.set(`${c}_${x}`,E(k[x]));return _("","",g?0:1)}let I=d.length,{words:N,wordStarts:F}=Cs(v,$,I,n);for(let k=0;k<d.length;k++){let C=d[k];if(k<d.length-1)e.state.env.set(C,E(N[k]??""));else if(k<F.length){let x=v.substring(F[k]);x=Br(x,$,n),x=E(x),e.state.env.set(C,x)}else e.state.env.set(C,"")}return _("","",g?0:1)}function br(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return P("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return P(`bash: return: ${r}: numeric argument required
522
+ `)&&(v=v.slice(0,-1));let E=k=>n?k:k.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",E(v)),_("","",g?0:1);let $=Br(e.state.env);if(c){let{words:k}=Cs(v,$,void 0,n),C=e.limits?.maxArrayElements??1e5;if(k.length>C)return _("",`read: array element limit exceeded (${C})
523
+ `,1);_e(e,c);for(let x=0;x<k.length;x++)e.state.env.set(`${c}_${x}`,E(k[x]));return _("","",g?0:1)}let I=d.length,{words:N,wordStarts:F}=Cs(v,$,I,n);for(let k=0;k<d.length;k++){let C=d[k];if(k<d.length-1)e.state.env.set(C,E(N[k]??""));else if(k<F.length){let x=v.substring(F[k]);x=jr(x,$,n),x=E(x),e.state.env.set(C,x)}else e.state.env.set(C,"")}return _("","",g?0:1)}function br(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return A("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return A(`bash: return: ${r}: numeric argument required
524
524
  `,2);s=(n%256+256)%256}throw new ce(s)}var hs=`set: usage: set [-eux] [+eux] [-o option] [+o option]
525
525
  Options:
526
526
  -e Exit immediately if a command exits with non-zero status
@@ -537,71 +537,71 @@ Options:
537
537
  +o pipefail Disable pipefail
538
538
  -o xtrace Same as -x
539
539
  +o xtrace Disable xtrace
540
- `,Bn=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),jn=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),Un=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Hn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Zn(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,lt(e))}function Uo(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ho(e,t){let s=re(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${Je(i)}`});return`${t}=(${r.join(" ")})`}function Zo(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function qo(e,t){let s=Be(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${Zo(n)}]=${Je(i)}`});return`${t}=(${r.join(" ")} )`}function Go(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let r of e.state.env.keys()){let n=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(n){let i=n[1];s.has(i)||t.add(i)}}return t}function Ko(e){return e.state.associativeArrays??new Set}function $r(e,t){if(t.includes("--help"))return z(hs);if(t.length===0){let r=Go(e),n=Ko(e),i=l=>{for(let c of n){let u=`${c}_`,f=`${c}__length`;if(l!==f&&l.startsWith(u)){if(l.slice(u.length).startsWith("_length"))continue;return!0}}return!1},o=[];for(let[l,c]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||r.has(l)||n.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&r.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&r.has(f[1])||i(l)||f&&n.has(f[1])||o.push([l,c])}let a=[];for(let[l,c]of o.sort(([u],[f])=>u<f?-1:u>f?1:0))a.push(`${l}=${us(c)}`);for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Ho(e,l));for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(qo(e,l));return a.sort((l,c)=>{let u=l.split("=")[0],f=c.split("=")[0];return u<f?-1:u>f?1:0}),z(a.length>0?`${a.join(`
540
+ `,jn=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),Un=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),Hn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Zn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function qn(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,lt(e))}function Uo(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ho(e,t){let s=re(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${Je(i)}`});return`${t}=(${r.join(" ")})`}function Zo(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function qo(e,t){let s=je(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${Zo(n)}]=${Je(i)}`});return`${t}=(${r.join(" ")} )`}function Go(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let r of e.state.env.keys()){let n=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(n){let i=n[1];s.has(i)||t.add(i)}}return t}function Ko(e){return e.state.associativeArrays??new Set}function $r(e,t){if(t.includes("--help"))return z(hs);if(t.length===0){let r=Go(e),n=Ko(e),i=l=>{for(let c of n){let u=`${c}_`,f=`${c}__length`;if(l!==f&&l.startsWith(u)){if(l.slice(u.length).startsWith("_length"))continue;return!0}}return!1},o=[];for(let[l,c]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||r.has(l)||n.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&r.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&r.has(f[1])||i(l)||f&&n.has(f[1])||o.push([l,c])}let a=[];for(let[l,c]of o.sort(([u],[f])=>u<f?-1:u>f?1:0))a.push(`${l}=${us(c)}`);for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Ho(e,l));for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(qo(e,l));return a.sort((l,c)=>{let u=l.split("=")[0],f=c.split("=")[0];return u<f?-1:u>f?1:0}),z(a.length>0?`${a.join(`
541
541
  `)}
542
- `:"")}let s=0;for(;s<t.length;){let r=t[s];if((r==="-o"||r==="+o")&&Uo(t,s)){let n=t[s+1];if(!jn.has(n)){let i=`bash: set: ${n}: invalid option name
543
- ${hs}`;if(e.state.options.posix)throw new $e(1,"",i);return P(i)}Zn(e,jn.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=Un.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=Hn.map(a=>`${a.padEnd(16)}off`),o=[...n,...i].sort();return z(`${o.join(`
542
+ `:"")}let s=0;for(;s<t.length;){let r=t[s];if((r==="-o"||r==="+o")&&Uo(t,s)){let n=t[s+1];if(!Un.has(n)){let i=`bash: set: ${n}: invalid option name
543
+ ${hs}`;if(e.state.options.posix)throw new $e(1,"",i);return A(i)}qn(e,Un.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=Hn.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=Zn.map(a=>`${a.padEnd(16)}off`),o=[...n,...i].sort();return z(`${o.join(`
544
544
  `)}
545
- `)}if(r==="+o"){let n=Un.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=Hn.map(a=>`set +o ${a}`),o=[...n,...i].sort();return z(`${o.join(`
545
+ `)}if(r==="+o"){let n=Hn.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=Zn.map(a=>`set +o ${a}`),o=[...n,...i].sort();return z(`${o.join(`
546
546
  `)}
547
- `)}if(r.length>1&&(r[0]==="-"||r[0]==="+")&&r[1]!=="-"){let n=r[0]==="-";for(let i=1;i<r.length;i++){let o=r[i];if(!Bn.has(o)){let a=`bash: set: ${r[0]}${o}: invalid option
548
- ${hs}`;if(e.state.options.posix)throw new $e(1,"",a);return P(a)}Zn(e,Bn.get(o)??null,n)}s++;continue}if(r==="--")return Er(e,t.slice(s+1)),W;if(r==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,lt(e),s+1<t.length)return Er(e,t.slice(s+1)),W;s++;continue}if(r==="+"){s++;continue}if(r.startsWith("-")||r.startsWith("+")){let n=`bash: set: ${r}: invalid option
549
- ${hs}`;if(e.state.options.posix)throw new $e(1,"",n);return P(n)}return Er(e,t.slice(s)),W}return W}function Er(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Sr(e,t){let s=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
550
- `;if(e.state.options.posix)throw new $e(1,"",a);return P(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
551
- `;if(e.state.options.posix)throw new $e(1,"",o);return P(o)}if(s===0)return W;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),W}async function Ar(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return _("",`bash: source: filename argument required
552
- `,2);let r=s[0],n=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),n=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),n=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),n=f}catch{}}}if(i===null)return P(`bash: ${r}: No such file or directory
553
- `);let o=new Map;if(s.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=s.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,s.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new J(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=ue(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof j)throw c;if(c instanceof ce)return _(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return P(`bash: ${r}: ${c.message}
554
- `);throw c}}function qn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Xo(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Gn(e,t){if(Xo(t))return null;try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Kn(e,t){if(e.state.localVarStack?.has(t)){let r=as(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)os(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Pr(e,t);else{let i=n[n.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),os(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||os(e,t),!0}}return!1}function Pr(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function Xn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new B().parseWordFromString(s,!0,!1);return L(e,n)}if(t.includes("$")){let r=new B().parseWordFromString(t,!1,!1);return L(e,r)}return t}async function kr(e,t){let s="both",r="",n=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],p=c[2];if(p==="@"||p==="*"){let A=Se(e,d);for(let[g]of A)e.state.env.delete(`${d}_${g}`);e.state.env.delete(d);continue}let y=e.state.associativeArrays?.has(d);if(y){let A=await Xn(e,p);e.state.env.delete(`${d}_${A}`);continue}let h=xs(e,d),m=e.state.declaredVars?.has(d);if((e.state.env.has(d)||m)&&!h&&!y){r+=`bash: unset: ${d}: not an array variable
555
- `,n=1;continue}let v=await Gn(e,p);if(v===null&&h){r+=`bash: unset: ${p}: not a valid identifier
556
- `,n=1;continue}if(v===null)continue;if(v<0){let A=Se(e,d),g=A.length,w=e.state.currentLine;if(g===0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
547
+ `)}if(r.length>1&&(r[0]==="-"||r[0]==="+")&&r[1]!=="-"){let n=r[0]==="-";for(let i=1;i<r.length;i++){let o=r[i];if(!jn.has(o)){let a=`bash: set: ${r[0]}${o}: invalid option
548
+ ${hs}`;if(e.state.options.posix)throw new $e(1,"",a);return A(a)}qn(e,jn.get(o)??null,n)}s++;continue}if(r==="--")return Er(e,t.slice(s+1)),W;if(r==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,lt(e),s+1<t.length)return Er(e,t.slice(s+1)),W;s++;continue}if(r==="+"){s++;continue}if(r.startsWith("-")||r.startsWith("+")){let n=`bash: set: ${r}: invalid option
549
+ ${hs}`;if(e.state.options.posix)throw new $e(1,"",n);return A(n)}return Er(e,t.slice(s)),W}return W}function Er(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Sr(e,t){let s=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
550
+ `;if(e.state.options.posix)throw new $e(1,"",a);return A(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
551
+ `;if(e.state.options.posix)throw new $e(1,"",o);return A(o)}if(s===0)return W;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),W}async function Pr(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return _("",`bash: source: filename argument required
552
+ `,2);let r=s[0],n=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),n=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),n=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),n=f}catch{}}}if(i===null)return A(`bash: ${r}: No such file or directory
553
+ `);let o=new Map;if(s.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=s.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,s.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new J(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=ue(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof j)throw c;if(c instanceof ce)return _(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return A(`bash: ${r}: ${c.message}
554
+ `);throw c}}function Gn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Xo(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Kn(e,t){if(Xo(t))return null;try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Xn(e,t){if(e.state.localVarStack?.has(t)){let r=as(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)os(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Ar(e,t);else{let i=n[n.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),os(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||os(e,t),!0}}return!1}function Ar(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function Yn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new B().parseWordFromString(s,!0,!1);return L(e,n)}if(t.includes("$")){let r=new B().parseWordFromString(t,!1,!1);return L(e,r)}return t}async function kr(e,t){let s="both",r="",n=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],p=c[2];if(p==="@"||p==="*"){let P=Se(e,d);for(let[g]of P)e.state.env.delete(`${d}_${g}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let P=await Yn(e,p);e.state.env.delete(`${d}_${P}`);continue}let h=xs(e,d),y=e.state.declaredVars?.has(d);if((e.state.env.has(d)||y)&&!h&&!m){r+=`bash: unset: ${d}: not an array variable
555
+ `,n=1;continue}let v=await Kn(e,p);if(v===null&&h){r+=`bash: unset: ${p}: not a valid identifier
556
+ `,n=1;continue}if(v===null)continue;if(v<0){let P=Se(e,d),g=P.length,w=e.state.currentLine;if(g===0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
557
557
  `,n=1;continue}let E=g+v;if(E<0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
558
- `,n=1;continue}let $=A[E][0];e.state.env.delete(`${d}_${$}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!qn(i)){r+=`bash: unset: \`${i}': not a valid identifier
559
- `,n=1;continue}let u=i;if(ve(e,i)){let d=je(e,i);d&&d!==i&&(u=d)}if(Xe(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
560
- `,n=1;continue}let f=ut(e,u);if(f!==void 0&&f!==e.state.callDepth)Kn(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),p=e.state.mutatedTempEnvVars?.has(u);if((d||p)&&e.state.localVarStack?.has(u)){let y=as(e,u);y?y.value===void 0?e.state.env.delete(u):e.state.env.set(u,y.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Pr(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(u==="@"||u==="*"){let h=Se(e,c);for(let[m]of h)e.state.env.delete(`${c}_${m}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let h=await Xn(e,u);e.state.env.delete(`${c}_${h}`);continue}let d=xs(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
561
- `,n=1;continue}let y=await Gn(e,u);if(y===null&&d){r+=`bash: unset: ${u}: not a valid identifier
562
- `,n=1;continue}if(y===null)continue;if(y<0){let h=Se(e,c),m=h.length,b=e.state.currentLine;if(m===0){r+=`bash: line ${b}: unset: [${y}]: bad array subscript
563
- `,n=1;continue}let v=m+y;if(v<0){r+=`bash: line ${b}: unset: [${y}]: bad array subscript
564
- `,n=1;continue}let A=h[v][0];e.state.env.delete(`${c}_${A}`);continue}e.state.env.delete(`${c}_${y}`);continue}if(!qn(i)){r+=`bash: unset: \`${i}': not a valid identifier
565
- `,n=1;continue}let a=i;if(ve(e,i)){let c=je(e,i);c&&c!==i&&(a=c)}if(Xe(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
566
- `,n=1;continue}let l=ut(e,a);if(l!==void 0&&l!==e.state.callDepth)Kn(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=as(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else Pr(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",r,n)}var _r=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Yo=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function ps(e){return _r.includes(e)}function Qo(e){return Yo.includes(e)}function Yn(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;break}if(d.startsWith("-")&&d.length>1){for(let p=1;p<d.length;p++){let y=d[p];switch(y){case"s":s=!0;break;case"u":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${y}: invalid option
558
+ `,n=1;continue}let $=P[E][0];e.state.env.delete(`${d}_${$}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!Gn(i)){r+=`bash: unset: \`${i}': not a valid identifier
559
+ `,n=1;continue}let u=i;if(ve(e,i)){let d=Ue(e,i);d&&d!==i&&(u=d)}if(Xe(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
560
+ `,n=1;continue}let f=ut(e,u);if(f!==void 0&&f!==e.state.callDepth)Xn(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),p=e.state.mutatedTempEnvVars?.has(u);if((d||p)&&e.state.localVarStack?.has(u)){let m=as(e,u);m?m.value===void 0?e.state.env.delete(u):e.state.env.set(u,m.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Ar(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(u==="@"||u==="*"){let h=Se(e,c);for(let[y]of h)e.state.env.delete(`${c}_${y}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let h=await Yn(e,u);e.state.env.delete(`${c}_${h}`);continue}let d=xs(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
561
+ `,n=1;continue}let m=await Kn(e,u);if(m===null&&d){r+=`bash: unset: ${u}: not a valid identifier
562
+ `,n=1;continue}if(m===null)continue;if(m<0){let h=Se(e,c),y=h.length,b=e.state.currentLine;if(y===0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
563
+ `,n=1;continue}let v=y+m;if(v<0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
564
+ `,n=1;continue}let P=h[v][0];e.state.env.delete(`${c}_${P}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!Gn(i)){r+=`bash: unset: \`${i}': not a valid identifier
565
+ `,n=1;continue}let a=i;if(ve(e,i)){let c=Ue(e,i);c&&c!==i&&(a=c)}if(Xe(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
566
+ `,n=1;continue}let l=ut(e,a);if(l!==void 0&&l!==e.state.callDepth)Xn(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=as(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else Ar(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",r,n)}var _r=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Yo=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function ps(e){return _r.includes(e)}function Qo(e){return Yo.includes(e)}function Qn(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;break}if(d.startsWith("-")&&d.length>1){for(let p=1;p<d.length;p++){let m=d[p];switch(m){case"s":s=!0;break;case"u":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
567
567
  `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return Jo(e,a,s,r,n,i);if(s&&r)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
568
- `};if(a.length===0){if(s||r){let p=[];for(let y of _r){let h=e.state.shoptOptions[y];s&&h?p.push(n?`shopt -s ${y}`:`${y} on`):r&&!h&&p.push(n?`shopt -u ${y}`:`${y} off`)}return{exitCode:0,stdout:p.length>0?`${p.join(`
568
+ `};if(a.length===0){if(s||r){let p=[];for(let m of _r){let h=e.state.shoptOptions[m];s&&h?p.push(n?`shopt -s ${m}`:`${m} on`):r&&!h&&p.push(n?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:p.length>0?`${p.join(`
569
569
  `)}
570
- `:"",stderr:""}}let d=[];for(let p of _r){let y=e.state.shoptOptions[p];d.push(n?`shopt ${y?"-s":"-u"} ${p}`:`${p} ${y?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
570
+ `:"",stderr:""}}let d=[];for(let p of _r){let m=e.state.shoptOptions[p];d.push(n?`shopt ${m?"-s":"-u"} ${p}`:`${p} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
571
571
  `)}
572
572
  `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!ps(d)&&!Qo(d)){u+=`shopt: ${d}: invalid shell option name
573
573
  `,c=!0;continue}if(s)ps(d)&&(e.state.shoptOptions[d]=!0,Fs(e));else if(r)ps(d)&&(e.state.shoptOptions[d]=!1,Fs(e));else if(ps(d)){let p=e.state.shoptOptions[d];i?p||(c=!0):n?(f.push(`shopt ${p?"-s":"-u"} ${d}`),p||(c=!0)):(f.push(`${d} ${p?"on":"off"}`),p||(c=!0))}else i?c=!0:n?(f.push(`shopt -u ${d}`),c=!0):(f.push(`${d} off`),c=!0)}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
574
574
  `)}
575
- `:"",stderr:u}}function Jo(e,t,s,r,n,i){let o=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),a=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...o.keys(),...a].sort();if(t.length===0){let d=[];for(let p of l){let y=a.includes(p),h=o.get(p),m=y||!h?!1:e.state.options[h];s&&!m||r&&m||d.push(n?`set ${m?"-o":"+o"} ${p}`:`${p} ${m?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
575
+ `:"",stderr:u}}function Jo(e,t,s,r,n,i){let o=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),a=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...o.keys(),...a].sort();if(t.length===0){let d=[];for(let p of l){let m=a.includes(p),h=o.get(p),y=m||!h?!1:e.state.options[h];s&&!y||r&&y||d.push(n?`set ${y?"-o":"+o"} ${p}`:`${p} ${y?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
576
576
  `)}
577
- `:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let p=o.has(d),y=a.includes(d);if(!p&&!y){u+=`shopt: ${d}: invalid option name
578
- `,c=!0;continue}if(y){s||r||(i?c=!0:n?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let h=o.get(d);if(h)if(s)h==="vi"?e.state.options.emacs=!1:h==="emacs"&&(e.state.options.vi=!1),e.state.options[h]=!0,lt(e);else if(r)e.state.options[h]=!1,lt(e);else{let m=e.state.options[h];i?m||(c=!0):n?(f.push(`set ${m?"-o":"+o"} ${d}`),m||(c=!0)):(f.push(`${d} ${m?"on":"off"}`),m||(c=!0))}}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
577
+ `:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let p=o.has(d),m=a.includes(d);if(!p&&!m){u+=`shopt: ${d}: invalid option name
578
+ `,c=!0;continue}if(m){s||r||(i?c=!0:n?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let h=o.get(d);if(h)if(s)h==="vi"?e.state.options.emacs=!1:h==="emacs"&&(e.state.options.vi=!1),e.state.options[h]=!0,lt(e);else if(r)e.state.options[h]=!1,lt(e);else{let y=e.state.options[h];i?y||(c=!0):n?(f.push(`set ${y?"-o":"+o"} ${d}`),y||(c=!0)):(f.push(`${d} ${y?"on":"off"}`),y||(c=!0))}}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
579
579
  `)}
580
- `:"",stderr:u}}async function Qn(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=o==="/bin"||o==="/usr/bin";if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function ms(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}function ea(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function K(e,t,s,r){return((...n)=>{bt(t,s,`${r} call`);let i=e(...n);return ea(i)?i.then(o=>(bt(t,s,`${r} post-await`),o),o=>{throw bt(t,s,`${r} post-await`),o}):(bt(t,s,`${r} return`),i)})}function ta(e,t,s){let r={readFile:K(e.readFile.bind(e),t,s,"fs.readFile"),readFileBuffer:K(e.readFileBuffer.bind(e),t,s,"fs.readFileBuffer"),writeFile:K(e.writeFile.bind(e),t,s,"fs.writeFile"),appendFile:K(e.appendFile.bind(e),t,s,"fs.appendFile"),exists:K(e.exists.bind(e),t,s,"fs.exists"),stat:K(e.stat.bind(e),t,s,"fs.stat"),mkdir:K(e.mkdir.bind(e),t,s,"fs.mkdir"),readdir:K(e.readdir.bind(e),t,s,"fs.readdir"),rm:K(e.rm.bind(e),t,s,"fs.rm"),cp:K(e.cp.bind(e),t,s,"fs.cp"),mv:K(e.mv.bind(e),t,s,"fs.mv"),resolvePath:K(e.resolvePath.bind(e),t,s,"fs.resolvePath"),getAllPaths:K(e.getAllPaths.bind(e),t,s,"fs.getAllPaths"),chmod:K(e.chmod.bind(e),t,s,"fs.chmod"),symlink:K(e.symlink.bind(e),t,s,"fs.symlink"),link:K(e.link.bind(e),t,s,"fs.link"),readlink:K(e.readlink.bind(e),t,s,"fs.readlink"),lstat:K(e.lstat.bind(e),t,s,"fs.lstat"),realpath:K(e.realpath.bind(e),t,s,"fs.realpath"),utimes:K(e.utimes.bind(e),t,s,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=K(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),r}function Jn(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,r={...e,fs:ta(e.fs,e.requireDefenseContext,s)};return e.exec&&(r.exec=K(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(r.fetch=K(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(r.sleep=K(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(r.getRegisteredCommands=K(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),r}async function ri(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let h of t)if(h.startsWith("-")&&h.length>1)for(let m of h.slice(1))m==="t"?n=!0:m==="p"?i=!0:m==="P"?o=!0:m==="a"?a=!0:m==="f"&&(l=!0);else c.push(h);let u="",f="",d=0,p=!1,y=!1;for(let h of c){let m=!1;if(o){if(a){let E=await r(h);if(E.length>0){for(let $ of E)u+=`${$}
581
- `;p=!0,m=!0}}else{let E=await s(h);E&&(u+=`${E}
582
- `,p=!0,m=!0)}m||(y=!0);continue}let b=!l&&e.state.functions.has(h);if(a&&b){if(!i)if(n)u+=`function
583
- `;else{let E=e.state.functions.get(h),$=E?ei(h,E):`${h} is a function
584
- `;u+=$}m=!0}let v=e.state.env.get(`BASH_ALIAS_${h}`);if(v!==void 0&&(a||!m)&&(i||(n?u+=`alias
580
+ `:"",stderr:u}}async function Jn(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=o==="/bin"||o==="/usr/bin";if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function ms(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}function ea(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function K(e,t,s,r){return((...n)=>{bt(t,s,`${r} call`);let i=e(...n);return ea(i)?i.then(o=>(bt(t,s,`${r} post-await`),o),o=>{throw bt(t,s,`${r} post-await`),o}):(bt(t,s,`${r} return`),i)})}function ta(e,t,s){let r={readFile:K(e.readFile.bind(e),t,s,"fs.readFile"),readFileBuffer:K(e.readFileBuffer.bind(e),t,s,"fs.readFileBuffer"),writeFile:K(e.writeFile.bind(e),t,s,"fs.writeFile"),appendFile:K(e.appendFile.bind(e),t,s,"fs.appendFile"),exists:K(e.exists.bind(e),t,s,"fs.exists"),stat:K(e.stat.bind(e),t,s,"fs.stat"),mkdir:K(e.mkdir.bind(e),t,s,"fs.mkdir"),readdir:K(e.readdir.bind(e),t,s,"fs.readdir"),rm:K(e.rm.bind(e),t,s,"fs.rm"),cp:K(e.cp.bind(e),t,s,"fs.cp"),mv:K(e.mv.bind(e),t,s,"fs.mv"),resolvePath:K(e.resolvePath.bind(e),t,s,"fs.resolvePath"),getAllPaths:K(e.getAllPaths.bind(e),t,s,"fs.getAllPaths"),chmod:K(e.chmod.bind(e),t,s,"fs.chmod"),symlink:K(e.symlink.bind(e),t,s,"fs.symlink"),link:K(e.link.bind(e),t,s,"fs.link"),readlink:K(e.readlink.bind(e),t,s,"fs.readlink"),lstat:K(e.lstat.bind(e),t,s,"fs.lstat"),realpath:K(e.realpath.bind(e),t,s,"fs.realpath"),utimes:K(e.utimes.bind(e),t,s,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=K(e.readdirWithFileTypes.bind(e),t,s,"fs.readdirWithFileTypes")),r}function ei(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,r={...e,fs:ta(e.fs,e.requireDefenseContext,s)};return e.exec&&(r.exec=K(e.exec,e.requireDefenseContext,s,"exec")),e.fetch&&(r.fetch=K(e.fetch,e.requireDefenseContext,s,"fetch")),e.sleep&&(r.sleep=K(e.sleep,e.requireDefenseContext,s,"sleep")),e.getRegisteredCommands&&(r.getRegisteredCommands=K(e.getRegisteredCommands,e.requireDefenseContext,s,"getRegisteredCommands")),r}async function ni(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let h of t)if(h.startsWith("-")&&h.length>1)for(let y of h.slice(1))y==="t"?n=!0:y==="p"?i=!0:y==="P"?o=!0:y==="a"?a=!0:y==="f"&&(l=!0);else c.push(h);let u="",f="",d=0,p=!1,m=!1;for(let h of c){let y=!1;if(o){if(a){let E=await r(h);if(E.length>0){for(let $ of E)u+=`${$}
581
+ `;p=!0,y=!0}}else{let E=await s(h);E&&(u+=`${E}
582
+ `,p=!0,y=!0)}y||(m=!0);continue}let b=!l&&e.state.functions.has(h);if(a&&b){if(!i)if(n)u+=`function
583
+ `;else{let E=e.state.functions.get(h),$=E?ti(h,E):`${h} is a function
584
+ `;u+=$}y=!0}let v=e.state.env.get(`BASH_ALIAS_${h}`);if(v!==void 0&&(a||!y)&&(i||(n?u+=`alias
585
585
  `:u+=`${h} is aliased to \`${v}'
586
- `),m=!0,!a)||Hs.has(h)&&(a||!m)&&(i||(n?u+=`keyword
586
+ `),y=!0,!a)||Hs.has(h)&&(a||!y)&&(i||(n?u+=`keyword
587
587
  `:u+=`${h} is a shell keyword
588
- `),m=!0,!a))continue;if(!a&&b&&!m){if(!i)if(n)u+=`function
589
- `;else{let E=e.state.functions.get(h),$=E?ei(h,E):`${h} is a function
590
- `;u+=$}m=!0;continue}if(!(ft.has(h)&&(a||!m)&&(i||(n?u+=`builtin
588
+ `),y=!0,!a))continue;if(!a&&b&&!y){if(!i)if(n)u+=`function
589
+ `;else{let E=e.state.functions.get(h),$=E?ti(h,E):`${h} is a function
590
+ `;u+=$}y=!0;continue}if(!(ft.has(h)&&(a||!y)&&(i||(n?u+=`builtin
591
591
  `:u+=`${h} is a shell builtin
592
- `),m=!0,!a))){if(a){let E=await r(h);for(let $ of E)i?u+=`${$}
592
+ `),y=!0,!a))){if(a){let E=await r(h);for(let $ of E)i?u+=`${$}
593
593
  `:n?u+=`file
594
594
  `:u+=`${h} is ${$}
595
- `,p=!0,m=!0}else if(!m){let E=await s(h);E&&(i?u+=`${E}
595
+ `,p=!0,y=!0}else if(!y){let E=await s(h);E&&(i?u+=`${E}
596
596
  `:n?u+=`file
597
597
  `:u+=`${h} is ${E}
598
- `,p=!0,m=!0)}if(!m&&(y=!0,!n&&!i)){let E=!0;if(h.includes("/")){let $=e.fs.resolvePath(e.state.cwd,h);await e.fs.exists($)&&(E=!1)}E&&(f+=`bash: type: ${h}: not found
599
- `)}}}return i?d=y&&!p?1:0:d=y?1:0,_(u,f,d)}function ei(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(n=>kt(n)).join("; "):s=kt(t.body),`${e} is a function
598
+ `,p=!0,y=!0)}if(!y&&(m=!0,!n&&!i)){let E=!0;if(h.includes("/")){let $=e.fs.resolvePath(e.state.cwd,h);await e.fs.exists($)&&(E=!1)}E&&(f+=`bash: type: ${h}: not found
599
+ `)}}}return i?d=m&&!p?1:0:d=m?1:0,_(u,f,d)}function ti(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(n=>kt(n)).join("; "):s=kt(t.body),`${e} is a function
600
600
  ${e} ()
601
601
  {
602
602
  ${s}
603
603
  }
604
- `}function kt(e){if(Array.isArray(e))return e.map(t=>kt(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let r=e.pipelines[s];t.push(sa(r)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(ti(t.name));for(let r of t.args)s.push(ti(r));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>kt(r)).join("; ")}; }`:"..."}function sa(e){let t=e.commands.map(s=>kt(s));return(e.negated?"! ":"")+t.join(" | ")}function ti(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(r=>si(r)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=si(s);return t}function si(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function ni(e,t,s,r){let n="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?n+=`${a} is an alias for "${l}"
604
+ `}function kt(e){if(Array.isArray(e))return e.map(t=>kt(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let r=e.pipelines[s];t.push(sa(r)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(si(t.name));for(let r of t.args)s.push(si(r));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>kt(r)).join("; ")}; }`:"..."}function sa(e){let t=e.commands.map(s=>kt(s));return(e.negated?"! ":"")+t.join(" | ")}function si(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(r=>ri(r)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=ri(s);return t}function ri(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function ii(e,t,s,r){let n="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?n+=`${a} is an alias for "${l}"
605
605
  `:n+=`alias ${a}='${l}'
606
606
  `;else if(Hs.has(a))r?n+=`${a} is a shell keyword
607
607
  `:n+=`${a}
@@ -612,98 +612,98 @@ ${e} ()
612
612
  `;else if(a.includes("/")){let c=e.fs.resolvePath(e.state.cwd,a),u=!1;if(await e.fs.exists(c))try{let f=await e.fs.stat(c);f.isDirectory||(f.mode&73)!==0&&(r?n+=`${a} is ${a}
613
613
  `:n+=`${a}
614
614
  `,u=!0)}catch{}u||(r&&(i+=`${a}: not found
615
- `),o=1)}else if(e.commands.has(a)){let u=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of u){if(!d)continue;let p=`${d}/${a}`;try{let y=await e.fs.stat(p);if(!y.isDirectory&&(y.mode&73)!==0){f=p;break}}catch{}}f||(f=`/usr/bin/${a}`),r?n+=`${a} is ${f}
615
+ `),o=1)}else if(e.commands.has(a)){let u=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of u){if(!d)continue;let p=`${d}/${a}`;try{let m=await e.fs.stat(p);if(!m.isDirectory&&(m.mode&73)!==0){f=p;break}}catch{}}f||(f=`/usr/bin/${a}`),r?n+=`${a} is ${f}
616
616
  `:n+=`${f}
617
617
  `}else r&&(i+=`${a}: not found
618
- `),o=1}return _(n,i,o)}async function ii(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{let i=await e.fs.stat(n);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}async function oi(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(l.coverage&&ft.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return hr(l,s);if(t==="unset")return kr(l,s);if(t==="exit")return dr(l,s);if(t==="local")return gr(l,s);if(t==="set")return $r(l,s);if(t==="break")return Ws(l,s);if(t==="continue")return Qs(l,s);if(t==="return")return br(l,s);if(t==="eval"&&l.state.options.posix)return fs(l,s,n);if(t==="shift")return Sr(l,s);if(t==="getopts")return ds(l,s);if(t==="compgen")return Gs(l,s);if(t==="complete")return Xs(l,s);if(t==="compopt")return Ys(l,s);if(t==="pushd")return await cr(l,s);if(t==="popd")return ur(l,s);if(t==="dirs")return fr(l,s);if(t==="source"||t===".")return Ar(l,s);if(t==="read")return vr(l,s,n,a);if(t==="mapfile"||t==="readarray")return wr(l,s,n);if(t==="declare"||t==="typeset")return or(l,s);if(t==="readonly")return ar(l,s);if(!i){let u=l.state.functions.get(t);if(u)return cs(l,u,s,n)}if(t==="eval")return fs(l,s,n);if(t==="cd")return await zs(l,s);if(t===":"||t==="true")return W;if(t==="false")return Q(!1);if(t==="let")return yr(l,s);if(t==="command")return ra(e,s,n);if(t==="builtin")return na(e,s,n);if(t==="shopt")return Yn(l,s);if(t==="exec"){if(s.length===0)return W;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="wait")return W;if(t==="type")return await ri(l,s,u=>ii(l,u),u=>ms(l,u));if(t==="hash")return pr(l,s);if(t==="help")return mr(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return P("[: missing `]'\n",2);u=s.slice(0,-1)}return St(l,u)}return null}async function ra(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return W;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return W;if(a||o)return await ni(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function na(e,t,s){let{runCommand:r}=e;if(t.length===0)return W;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return W;let i=n[0];if(!ft.has(i))return P(`bash: builtin: ${i}: not a shell builtin
619
- `);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function ai(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await Qn(i,t,n?"/usr/bin:/bin":void 0);if(!c)return pn(t)?P(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
620
- `,127):P(`bash: ${t}: command not found
621
- `,127);if("error"in c)return c.error==="permission_denied"?P(`bash: ${t}: Permission denied
622
- `,126):P(`bash: ${t}: No such file or directory
623
- `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,s,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",p=o(),y={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:p,stdin:d,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext},h=Jn(y,t);try{let m=()=>Fr(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(s,h));return u.trusted?await pe.runTrustedAsync(()=>m()):await m()}catch(m){if(m instanceof J||m instanceof Fe)throw m;return P(`${t}: ${We(xe(m))}
624
- `)}}async function Cr(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let r="",n="",i=0;try{for(let o of t){let a=await e.executeStatement(o);r+=a.stdout,n+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:r,stderr:n,exitCode:i}}function _t(e,t,s,r){if(e instanceof me)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof ye)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof ce||e instanceof ge||e instanceof j||e instanceof J)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=xe(e);return{action:"error",stdout:t,stderr:`${s}${n}
625
- `,exitCode:1}}async function ys(e,t,s="",r=""){let n=s,i=r,o=0;try{for(let a of t){let l=await e.executeStatement(a);n+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(Ft(a)||a instanceof ge||a instanceof j||a instanceof J||a instanceof Me)throw a.prependOutput(n,i),a;return{stdout:n,stderr:`${i}${xe(a)}
626
- `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function li(e,t){let s="",r="";for(let n of t.clauses){let i=await Cr(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return ys(e,n.body,s,r)}return t.elseBody?ys(e,t.elseBody,s,r):_(s,r,0)}async function ci(e,t){let s=await Oe(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return P(`bash: \`${t.variable}': not a valid identifier
627
- `);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await _e(e,c);a.push(...u.values)}}catch(c){if(c instanceof It)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&Ce(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=_t(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=_(r,n,f.exitCode??1);return G(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=_(r,n,i);return G(e,l,t.redirections)}async function ui(e,t){let s=await Oe(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await H(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&Ce(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await H(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=_t(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await H(e,t.update.expression);continue}if(u.action==="error"){let f=_(n,i,u.exitCode??1);return G(e,f,t.redirections)}throw u.error}t.update&&await H(e,t.update.expression)}}finally{e.state.loopDepth--}let l=_(n,i,o);return G(e,l,t.redirections)}async function fi(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await L(e,u.content);u.stripTabs&&(f=f.split(`
618
+ `),o=1}return _(n,i,o)}async function oi(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{let i=await e.fs.stat(n);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}async function ai(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(l.coverage&&ft.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return hr(l,s);if(t==="unset")return kr(l,s);if(t==="exit")return dr(l,s);if(t==="local")return gr(l,s);if(t==="set")return $r(l,s);if(t==="break")return Ws(l,s);if(t==="continue")return Qs(l,s);if(t==="return")return br(l,s);if(t==="eval"&&l.state.options.posix)return fs(l,s,n);if(t==="shift")return Sr(l,s);if(t==="getopts")return ds(l,s);if(t==="compgen")return Gs(l,s);if(t==="complete")return Xs(l,s);if(t==="compopt")return Ys(l,s);if(t==="pushd")return await cr(l,s);if(t==="popd")return ur(l,s);if(t==="dirs")return fr(l,s);if(t==="source"||t===".")return Pr(l,s);if(t==="read")return vr(l,s,n,a);if(t==="mapfile"||t==="readarray")return wr(l,s,n);if(t==="declare"||t==="typeset")return or(l,s);if(t==="readonly")return ar(l,s);if(!i){let u=l.state.functions.get(t);if(u)return cs(l,u,s,n)}if(t==="eval")return fs(l,s,n);if(t==="cd")return await zs(l,s);if(t===":"||t==="true")return W;if(t==="false")return Q(!1);if(t==="let")return yr(l,s);if(t==="command")return ra(e,s,n);if(t==="builtin")return na(e,s,n);if(t==="shopt")return Qn(l,s);if(t==="exec"){if(s.length===0)return W;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="wait")return W;if(t==="type")return await ni(l,s,u=>oi(l,u),u=>ms(l,u));if(t==="hash")return pr(l,s);if(t==="help")return mr(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return A("[: missing `]'\n",2);u=s.slice(0,-1)}return St(l,u)}return null}async function ra(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return W;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return W;if(a||o)return await ii(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function na(e,t,s){let{runCommand:r}=e;if(t.length===0)return W;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return W;let i=n[0];if(!ft.has(i))return A(`bash: builtin: ${i}: not a shell builtin
619
+ `);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function li(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await Jn(i,t,n?"/usr/bin:/bin":void 0);if(!c)return mn(t)?A(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
620
+ `,127):A(`bash: ${t}: command not found
621
+ `,127);if("error"in c)return c.error==="permission_denied"?A(`bash: ${t}: Permission denied
622
+ `,126):A(`bash: ${t}: No such file or directory
623
+ `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,s,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",p=o(),m={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:p,stdin:d,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext},h=ei(m,t);try{let y=()=>Mr(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(s,h));return u.trusted?await pe.runTrustedAsync(()=>y()):await y()}catch(y){if(y instanceof J||y instanceof Me)throw y;return A(`${t}: ${ze(De(y))}
624
+ `)}}async function Cr(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let r="",n="",i=0;try{for(let o of t){let a=await e.executeStatement(o);r+=a.stdout,n+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:r,stderr:n,exitCode:i}}function _t(e,t,s,r){if(e instanceof me)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof ye)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof ce||e instanceof ge||e instanceof j||e instanceof J)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=De(e);return{action:"error",stdout:t,stderr:`${s}${n}
625
+ `,exitCode:1}}async function ys(e,t,s="",r=""){let n=s,i=r,o=0;try{for(let a of t){let l=await e.executeStatement(a);n+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(Ft(a)||a instanceof ge||a instanceof j||a instanceof J||a instanceof We)throw a.prependOutput(n,i),a;return{stdout:n,stderr:`${i}${De(a)}
626
+ `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function ci(e,t){let s="",r="";for(let n of t.clauses){let i=await Cr(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return ys(e,n.body,s,r)}return t.elseBody?ys(e,t.elseBody,s,r):_(s,r,0)}async function ui(e,t){let s=await xe(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return A(`bash: \`${t.variable}': not a valid identifier
627
+ `);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await Ce(e,c);a.push(...u.values)}}catch(c){if(c instanceof It)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&Ne(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=_t(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=_(r,n,f.exitCode??1);return G(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=_(r,n,i);return G(e,l,t.redirections)}async function fi(e,t){let s=await xe(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await H(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&Ne(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await H(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=_t(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await H(e,t.update.expression);continue}if(u.action==="error"){let f=_(n,i,u.exitCode??1);return G(e,f,t.redirections)}throw u.error}t.update&&await H(e,t.update.expression)}}finally{e.state.loopDepth--}let l=_(n,i,o);return G(e,l,t.redirections)}async function di(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await L(e,u.content);u.stripTabs&&(f=f.split(`
628
628
  `).map(d=>d.replace(/^\t+/,"")).join(`
629
629
  `)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await L(e,c.target)}
630
- `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await L(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await L(e,c.target);return P(`bash: ${u}: No such file or directory
631
- `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&Ce(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let p of t.condition){let y=await e.executeStatement(p);r+=y.stdout,n+=y.stderr,c=y.exitCode}}catch(p){if(p instanceof me){if(r+=p.stdout,n+=p.stderr,p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=r,p.stderr=n,e.state.inCondition=d,p;u=!0}else if(p instanceof ye){if(r+=p.stdout,n+=p.stderr,p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=r,p.stderr=n,e.state.inCondition=d,p;f=!0}else throw e.state.inCondition=d,p}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let p of t.body){let y=await e.executeStatement(p);r+=y.stdout,n+=y.stderr,i=y.exitCode}}catch(p){let y=_t(p,r,n,e.state.loopDepth);if(r=y.stdout,n=y.stderr,y.action==="break")break;if(y.action==="continue")continue;if(y.action==="error")return _(r,n,y.exitCode??1);throw y.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return _(r,n,i)}async function di(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Ce(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Cr(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=_t(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return _(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return _(s,r,n)}async function hi(e,t){let s=await Oe(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await L(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let p=await L(e,d);Kr(d)&&(p=qr(p));let y=e.state.shoptOptions.nocasematch,h=e.state.shoptOptions.extglob;if(ct(o,p,y,h)){f=!0;break}}if(f){let d=await ys(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=_(r,n,i);return G(e,l,t.redirections)}function Nr(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function pi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var mi="+ ";async function yi(e){let t=e.state.env.get("PS4");if(t===void 0)return mi;if(t==="")return"";try{let r=new B().parseWordFromString(t,!1,!1);return await L(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
632
- `,t||mi}}function ia(e){return e.map(t=>oa(t)).join(" ")}function oa(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
630
+ `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await L(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await L(e,c.target);return A(`bash: ${u}: No such file or directory
631
+ `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&Ne(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let p of t.condition){let m=await e.executeStatement(p);r+=m.stdout,n+=m.stderr,c=m.exitCode}}catch(p){if(p instanceof me){if(r+=p.stdout,n+=p.stderr,p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=r,p.stderr=n,e.state.inCondition=d,p;u=!0}else if(p instanceof ye){if(r+=p.stdout,n+=p.stderr,p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=r,p.stderr=n,e.state.inCondition=d,p;f=!0}else throw e.state.inCondition=d,p}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let p of t.body){let m=await e.executeStatement(p);r+=m.stdout,n+=m.stderr,i=m.exitCode}}catch(p){let m=_t(p,r,n,e.state.loopDepth);if(r=m.stdout,n=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return _(r,n,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return _(r,n,i)}async function hi(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Ne(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Cr(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=_t(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return _(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return _(s,r,n)}async function pi(e,t){let s=await xe(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await L(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let p=await L(e,d);Xr(d)&&(p=Gr(p));let m=e.state.shoptOptions.nocasematch,h=e.state.shoptOptions.extglob;if(ct(o,p,m,h)){f=!0;break}}if(f){let d=await ys(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=_(r,n,i);return G(e,l,t.redirections)}function Nr(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function mi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var yi="+ ";async function gi(e){let t=e.state.env.get("PS4");if(t===void 0)return yi;if(t==="")return"";try{let r=new B().parseWordFromString(t,!1,!1);return await L(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
632
+ `,t||yi}}function ia(e){return e.map(t=>oa(t)).join(" ")}function oa(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
633
633
  `),n=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(s||r||n||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
634
- `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function gi(e,t,s){if(!e.state.options.xtrace)return"";let r=await yi(e),n=[t,...s],i=ia(n);return`${r}${i}
635
- `}async function wi(e,t,s){return e.state.options.xtrace?`${await yi(e)}${t}=${s}
636
- `:""}async function vi(e,t,s){let r=t.timed?Ps():0,n="",i=W,o=0,a=[],l="",c=t.commands.length>1,u=e.state.lastArg;for(let d=0;d<t.commands.length;d++){let p=t.commands[d],y=d===t.commands.length-1,h=d===0;c&&(e.state.lastArg="",h||(e.state.groupStdin=void 0));let b=c&&(!y||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,v;try{v=await s(p,n)}catch(A){if(A instanceof Rt)v={stdout:A.stdout,stderr:A.stderr,exitCode:1};else if(A instanceof j&&t.commands.length>1)v={stdout:A.stdout,stderr:A.stderr,exitCode:A.exitCode};else if(A instanceof ge&&t.commands.length>1)v={stdout:A.stdout,stderr:A.stderr,exitCode:A.exitCode};else throw b&&(e.state.env=b),A}b&&(e.state.env=b),a.push(v.exitCode),v.exitCode!==0&&(o=v.exitCode),y?i=v:(t.pipeStderr?.[d]??!1?n=v.stderr+v.stdout:(n=v.stdout,l+=v.stderr),i={stdout:"",stderr:"",exitCode:v.exitCode})}if(l&&(i={...i,stderr:l+i.stderr}),t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let d of e.state.env.keys())d.startsWith("PIPESTATUS_")&&e.state.env.delete(d);for(let d=0;d<a.length;d++)e.state.env.set(`PIPESTATUS_${d}`,String(a[d]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let p=(Ps()-r)/1e3,y=Math.floor(p/60),h=p%60,m;t.timePosix?m=`real ${p.toFixed(2)}
634
+ `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function wi(e,t,s){if(!e.state.options.xtrace)return"";let r=await gi(e),n=[t,...s],i=ia(n);return`${r}${i}
635
+ `}async function vi(e,t,s){return e.state.options.xtrace?`${await gi(e)}${t}=${s}
636
+ `:""}async function bi(e,t,s){let r=t.timed?As():0,n="",i=W,o=0,a=[],l="",c=t.commands.length>1,u=e.state.lastArg;for(let d=0;d<t.commands.length;d++){let p=t.commands[d],m=d===t.commands.length-1,h=d===0;c&&(e.state.lastArg="",h||(e.state.groupStdin=void 0));let b=c&&(!m||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,v;try{v=await s(p,n)}catch(P){if(P instanceof Rt)v={stdout:P.stdout,stderr:P.stderr,exitCode:1};else if(P instanceof j&&t.commands.length>1)v={stdout:P.stdout,stderr:P.stderr,exitCode:P.exitCode};else if(P instanceof ge&&t.commands.length>1)v={stdout:P.stdout,stderr:P.stderr,exitCode:P.exitCode};else throw b&&(e.state.env=b),P}b&&(e.state.env=b),a.push(v.exitCode),v.exitCode!==0&&(o=v.exitCode),m?i=v:(t.pipeStderr?.[d]??!1?n=v.stderr+v.stdout:(n=v.stdout,l+=v.stderr),i={stdout:"",stderr:"",exitCode:v.exitCode})}if(l&&(i={...i,stderr:l+i.stderr}),t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let d of e.state.env.keys())d.startsWith("PIPESTATUS_")&&e.state.env.delete(d);for(let d=0;d<a.length;d++)e.state.env.set(`PIPESTATUS_${d}`,String(a[d]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let p=(As()-r)/1e3,m=Math.floor(p/60),h=p%60,y;t.timePosix?y=`real ${p.toFixed(2)}
637
637
  user 0.00
638
638
  sys 0.00
639
- `:m=`
640
- real ${`${y}m${h.toFixed(3)}s`}
639
+ `:y=`
640
+ real ${`${m}m${h.toFixed(3)}s`}
641
641
  user 0m0.000s
642
642
  sys 0m0.000s
643
- `,i={...i,stderr:i.stderr+m}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function bi(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await aa(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await L(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
643
+ `,i={...i,stderr:i.stderr+y}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function Ei(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await aa(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await L(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
644
644
  `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await da(e,t,l[1],l[2],o,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await pa(e,t,i,o,n.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:s}}async function aa(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
645
- `,1)};if(ve(e,s)){let u=Hr(e,s);if(u===void 0||u==="")throw new j(1,"","");let f=je(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
645
+ `,1)};if(ve(e,s)){let u=Zr(e,s);if(u===void 0||u==="")throw new j(1,"","");let f=Ue(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
646
646
  `,1)}}if(Xe(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
647
647
  `,{continueToNext:!0,xtraceOutput:o};let u=se(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=la(r),c=()=>{let u=`${s}_`;for(let f of e.state.env.keys())f.startsWith(u)&&!f.includes("__")&&e.state.env.delete(f);e.state.env.delete(s)};if(a&&l?await ca(e,t,s,r,n,c,u=>{o+=u}):l?await ua(e,s,r,n,c):await fa(e,s,r,n,c),t.name){i.set(s,e.state.env.get(s));let f=`(${r.map(d=>jt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function la(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],r=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let n=t.parts[2];return n.type!=="Literal"?!1:n.value.startsWith("]=")||n.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):s.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function ca(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=_s(l);if(c){let{key:u,valueParts:f,append:d}=c,p;f.length>0?p=await L(e,{type:"Word",parts:f}):p="",p=X(e,p),a.push({type:"keyed",key:u,value:p,append:d})}else{let u=await L(e,l);a.push({type:"invalid",expandedValue:u})}}n||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=e.state.env.get(`${s}_${l.key}`)??"";e.state.env.set(`${s}_${l.key}`,c+l.value)}else e.state.env.set(`${s}_${l.key}`,l.value);else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
648
- `)}}async function ua(e,t,s,r,n){let i=[];for(let a of s){let l=_s(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await L(e,{type:"Word",parts:u}):d="",d=X(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await _e(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new B,u=ee(c,a.indexExpr);l=await H(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function fa(e,t,s,r,n){let i=[];for(let a of s){let l=await _e(e,a);i.push(...l.values)}let o=0;if(r){let a=Se(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function da(e,t,s,r,n,i,o){let a=s;if(ve(e,s)){let f=je(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${f}': not a valid identifier
649
- `,1)};a=f}}if(Xe(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Ei(e,a,r);else{let f=await ha(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+n:n;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=ut(e,a);if(f!==void 0&&f===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(c)||d.set(c,e.state.env.get(c))}e.state.env.set(c,u)}return{continueToNext:!0,xtraceOutput:""}}async function Ei(e,t,s){let r;if(s.startsWith("'")&&s.endsWith("'"))r=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let n=s.slice(1,-1),o=new B().parseWordFromString(n,!0,!1);r=await L(e,o)}else if(s.includes("$")){let i=new B().parseWordFromString(s,!1,!1);r=await L(e,i)}else r=s;return`${t}_${r}`}async function ha(e,t,s){let r=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(r=s.slice(1,-1));let n;if(/^-?\d+$/.test(r))n=Number.parseInt(r,10);else{try{let i=new B,o=ee(i,r);n=await H(e,o.expression,!1)}catch(i){if(i instanceof Ge){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
648
+ `)}}async function ua(e,t,s,r,n){let i=[];for(let a of s){let l=_s(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await L(e,{type:"Word",parts:u}):d="",d=X(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await Ce(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new B,u=ee(c,a.indexExpr);l=await H(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function fa(e,t,s,r,n){let i=[];for(let a of s){let l=await Ce(e,a);i.push(...l.values)}let o=0;if(r){let a=Se(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function da(e,t,s,r,n,i,o){let a=s;if(ve(e,s)){let f=Ue(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${f}': not a valid identifier
649
+ `,1)};a=f}}if(Xe(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await $i(e,a,r);else{let f=await ha(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+n:n;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=ut(e,a);if(f!==void 0&&f===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(c)||d.set(c,e.state.env.get(c))}e.state.env.set(c,u)}return{continueToNext:!0,xtraceOutput:""}}async function $i(e,t,s){let r;if(s.startsWith("'")&&s.endsWith("'"))r=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let n=s.slice(1,-1),o=new B().parseWordFromString(n,!0,!1);r=await L(e,o)}else if(s.includes("$")){let i=new B().parseWordFromString(s,!1,!1);r=await L(e,i)}else r=s;return`${t}_${r}`}async function ha(e,t,s){let r=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(r=s.slice(1,-1));let n;if(/^-?\d+$/.test(r))n=Number.parseInt(r,10);else{try{let i=new B,o=ee(i,r);n=await H(e,o.expression,!1)}catch(i){if(i instanceof Ge){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
650
650
  `;if(i.fatal)throw new j(1,"",l);return{index:0,error:_("",l,1)}}let o=e.state.env.get(s);n=o?Number.parseInt(o,10):0}Number.isNaN(n)&&(n=0)}if(n<0){let i=Se(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
651
651
  `,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
652
- `,1)}}}return{index:n}}async function pa(e,t,s,r,n,i){let o="",a=s,l=null;if(ve(e,s)){let f=Zr(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
652
+ `,1)}}}return{index:n}}async function pa(e,t,s,r,n,i){let o="",a=s,l=null;if(ve(e,s)){let f=qr(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
653
653
  `,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(Xe(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
654
- `,{continueToNext:!0,xtraceOutput:o};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(At(e,a))try{let f=new B;if(n){let p=`(${e.state.env.get(a)||"0"}) + (${r})`,y=ee(f,p);c=String(await H(e,y.expression))}else{let d=ee(f,r);c=String(await H(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-XG7G47TX.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=ht(e,a,c),o+=await wi(e,a,c);let u=a;if(l)u=await ma(e,l);else{let{isArray:f}=await import("./chunks/expansion-XG7G47TX.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function ma(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Ei(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new B,a=ee(o,r);i=await H(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Se(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function $i(e,t,s,r){let n=await Oe(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=new Map(e.state.functions),c=e.state.localScopes,u=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map($=>new Map($)),u){e.state.localVarStack=new Map;for(let[$,I]of u.entries())e.state.localVarStack.set($,I.map(N=>({...N})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let p=e.state.loopDepth,y=e.state.parentHasLoopContext;e.state.parentHasLoopContext=p>0,e.state.loopDepth=0;let h=e.state.lastArg,m=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let b=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",A="",g=0,w=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.functions=l,e.state.localScopes=c,e.state.localVarStack=u,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=p,e.state.parentHasLoopContext=y,e.state.groupStdin=b,e.state.bashPid=m,e.state.lastArg=h};try{for(let $ of t.body){let I=await r($);v+=I.stdout,A+=I.stderr,g=I.exitCode}}catch($){if(w(),$ instanceof J)throw $;if($ instanceof Me){v+=$.stdout,A+=$.stderr;let N=_(v,A,0);return G(e,N,t.redirections)}if($ instanceof me||$ instanceof ye){v+=$.stdout,A+=$.stderr;let N=_(v,A,0);return G(e,N,t.redirections)}if($ instanceof j){v+=$.stdout,A+=$.stderr;let N=_(v,A,$.exitCode);return G(e,N,t.redirections)}if($ instanceof ce){v+=$.stdout,A+=$.stderr;let N=_(v,A,$.exitCode);return G(e,N,t.redirections)}if($ instanceof ge){let N=_(v+$.stdout,A+$.stderr,$.exitCode);return G(e,N,t.redirections)}let I=_(v,`${A}${xe($)}
655
- `,1);return G(e,I,t.redirections)}w();let E=_(v,A,g);return G(e,E,t.redirections)}async function Si(e,t,s,r){let n="",i="",o=0,a=await ls(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,p=await L(e,d.content);d.stripTabs&&(p=p.split(`
654
+ `,{continueToNext:!0,xtraceOutput:o};let f=se(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(Pt(e,a))try{let f=new B;if(n){let p=`(${e.state.env.get(a)||"0"}) + (${r})`,m=ee(f,p);c=String(await H(e,m.expression))}else{let d=ee(f,r);c=String(await H(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-XG7G47TX.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=ht(e,a,c),o+=await vi(e,a,c);let u=a;if(l)u=await ma(e,l);else{let{isArray:f}=await import("./chunks/expansion-XG7G47TX.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function ma(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return $i(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new B,a=ee(o,r);i=await H(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Se(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Si(e,t,s,r){let n=await xe(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=new Map(e.state.functions),c=e.state.localScopes,u=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map($=>new Map($)),u){e.state.localVarStack=new Map;for(let[$,I]of u.entries())e.state.localVarStack.set($,I.map(N=>({...N})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let p=e.state.loopDepth,m=e.state.parentHasLoopContext;e.state.parentHasLoopContext=p>0,e.state.loopDepth=0;let h=e.state.lastArg,y=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let b=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",P="",g=0,w=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.functions=l,e.state.localScopes=c,e.state.localVarStack=u,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=p,e.state.parentHasLoopContext=m,e.state.groupStdin=b,e.state.bashPid=y,e.state.lastArg=h};try{for(let $ of t.body){let I=await r($);v+=I.stdout,P+=I.stderr,g=I.exitCode}}catch($){if(w(),$ instanceof J)throw $;if($ instanceof We){v+=$.stdout,P+=$.stderr;let N=_(v,P,0);return G(e,N,t.redirections)}if($ instanceof me||$ instanceof ye){v+=$.stdout,P+=$.stderr;let N=_(v,P,0);return G(e,N,t.redirections)}if($ instanceof j){v+=$.stdout,P+=$.stderr;let N=_(v,P,$.exitCode);return G(e,N,t.redirections)}if($ instanceof ce){v+=$.stdout,P+=$.stderr;let N=_(v,P,$.exitCode);return G(e,N,t.redirections)}if($ instanceof ge){let N=_(v+$.stdout,P+$.stderr,$.exitCode);return G(e,N,t.redirections)}let I=_(v,`${P}${De($)}
655
+ `,1);return G(e,I,t.redirections)}w();let E=_(v,P,g);return G(e,E,t.redirections)}async function Pi(e,t,s,r){let n="",i="",o=0,a=await ls(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,p=await L(e,d.content);d.stripTabs&&(p=p.split(`
656
656
  `).map(h=>h.replace(/^\t+/,"")).join(`
657
- `));let y=f.fd??0;y!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),le(e),e.state.fileDescriptors.set(y,p)):l=p}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await L(e,f.target)}
657
+ `));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),le(e),e.state.fileDescriptors.set(m,p)):l=p}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await L(e,f.target)}
658
658
  `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await L(e,f.target),p=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(p)}catch{let d=await L(e,f.target);return _("",`bash: ${d}: No such file or directory
659
- `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof J)throw f;if(Ft(f)||f instanceof ge||f instanceof j)throw f.prependOutput(n,i),f;return _(n,`${i}${xe(f)}
660
- `,1)}e.state.groupStdin=c;let u=_(n,i,o);return G(e,u,t.redirections)}async function Ai(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return P(`bash: ${t}: No such file or directory
661
- `,127)}if(i.startsWith("#!")){let m=i.indexOf(`
662
- `);m!==-1&&(i=i.slice(m+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,p=e.state.groupStdin,y=e.state.currentSource;e.state.parentHasLoopContext=c>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let m=0;m<s.length&&m<9;m++)e.state.env.set(String(m+1),s[m]);for(let m=s.length+1;m<=9;m++)e.state.env.delete(String(m));let h=()=>{e.state.env=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=p,e.state.currentSource=y};try{let b=new B().parse(i),v=await n(b);return h(),v}catch(m){if(h(),m instanceof j||m instanceof J)throw m;if(m.name==="ParseException")return P(`bash: ${t}: ${m.message}
663
- `);throw m}}var Ct=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||pe.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new Fe(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:pe.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){this.assertDefenseContext("execution");let s="",r="",n=0,i=this.ctx.limits.maxOutputSize,o=(a,l)=>{s.length+r.length+a.length+l.length>i&&Ce(`total output size exceeded (>${i} bytes), increase executionLimits.maxOutputSize`,"output_size"),s+=a,r+=l};for(let a of t.statements)try{let l=await this.executeStatement(a);o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(l){if(l instanceof j)throw l.prependOutput(s,r),l;if(l instanceof $e)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:ze(this.ctx.state.env)};if(l instanceof J)throw l;if(l instanceof ge)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:ze(this.ctx.state.env)};if(l instanceof Ir)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:ze(this.ctx.state.env)};if(l instanceof Rt)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:ze(this.ctx.state.env)};if(l instanceof Ge){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof Lr){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof me||l instanceof ye){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,r),l;o(l.stdout,l.stderr);continue}throw l instanceof ce&&l.prependOutput(s,r),l}return{stdout:s,stderr:r,exitCode:n,env:ze(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Ai(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Lt;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Ce(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new Bt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return W;this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
664
- `);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new ge(n,s,r);return _(s,r,n)}async executePipeline(t){return vi(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return li(this.ctx,t);case"For":return ci(this.ctx,t);case"CStyleFor":return ui(this.ctx,t);case"While":return fi(this.ctx,t,s);case"Until":return di(this.ctx,t);case"Case":return hi(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Nn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return W}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof It)return P(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let g=t,w=100;for(;w>0;){let E=this.expandAlias(g);if(E===g)break;g=E,w--}this.aliasExpansionStack.clear(),g!==t&&(t=g)}this.ctx.state.expansionStderr="";let r=await bi(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await Oe(this.ctx,t.redirections);if(w)return w;let E=_("",i,0);return G(this.ctx,E,t.redirections)}this.ctx.state.lastArg="";let g=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",_("",g,this.ctx.state.lastExitCode)}let o=t.name&&Nr(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let g of a)this.ctx.state.tempExportedVars.add(g)}let l=await ls(this.ctx,t.redirections);if(l){for(let[g,w]of n)w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w);return l}let c=-1;for(let g of t.redirections){if((g.operator==="<<"||g.operator==="<<-")&&g.target.type==="HereDoc"){let w=g.target,E=await L(this.ctx,w.content);w.stripTabs&&(E=E.split(`
659
+ `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof J)throw f;if(Ft(f)||f instanceof ge||f instanceof j)throw f.prependOutput(n,i),f;return _(n,`${i}${De(f)}
660
+ `,1)}e.state.groupStdin=c;let u=_(n,i,o);return G(e,u,t.redirections)}async function Ai(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return A(`bash: ${t}: No such file or directory
661
+ `,127)}if(i.startsWith("#!")){let y=i.indexOf(`
662
+ `);y!==-1&&(i=i.slice(y+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,p=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let y=0;y<s.length&&y<9;y++)e.state.env.set(String(y+1),s[y]);for(let y=s.length+1;y<=9;y++)e.state.env.delete(String(y));let h=()=>{e.state.env=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=p,e.state.currentSource=m};try{let b=new B().parse(i),v=await n(b);return h(),v}catch(y){if(h(),y instanceof j||y instanceof J)throw y;if(y.name==="ParseException")return A(`bash: ${t}: ${y.message}
663
+ `);throw y}}var Ct=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||pe.isInSandboxedContext())return;let s=`interpreter ${t} attempted outside defense context`;throw new Me(s,{timestamp:Date.now(),type:"missing_defense_context",message:s,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:pe.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){this.assertDefenseContext("execution");let s="",r="",n=0,i=this.ctx.limits.maxOutputSize,o=(a,l)=>{s.length+r.length+a.length+l.length>i&&Ne(`total output size exceeded (>${i} bytes), increase executionLimits.maxOutputSize`,"output_size"),s+=a,r+=l};for(let a of t.statements)try{let l=await this.executeStatement(a);o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(l){if(l instanceof j)throw l.prependOutput(s,r),l;if(l instanceof $e)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ve(this.ctx.state.env)};if(l instanceof J)throw l;if(l instanceof ge)return o(l.stdout,l.stderr),n=l.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ve(this.ctx.state.env)};if(l instanceof Lr)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ve(this.ctx.state.env)};if(l instanceof Rt)return o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Ve(this.ctx.state.env)};if(l instanceof Ge){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof Fr){o(l.stdout,l.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(l instanceof me||l instanceof ye){if(this.ctx.state.loopDepth>0)throw l.prependOutput(s,r),l;o(l.stdout,l.stderr);continue}throw l instanceof ce&&l.prependOutput(s,r),l}return{stdout:s,stderr:r,exitCode:n,env:Ve(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Ai(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Lt;if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Ne(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new Bt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return W;this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
664
+ `);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new ge(n,s,r);return _(s,r,n)}async executePipeline(t){return bi(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return ci(this.ctx,t);case"For":return ui(this.ctx,t);case"CStyleFor":return fi(this.ctx,t);case"While":return di(this.ctx,t,s);case"Until":return hi(this.ctx,t);case"Case":return pi(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return On(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return W}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof It)return A(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let g=t,w=100;for(;w>0;){let E=this.expandAlias(g);if(E===g)break;g=E,w--}this.aliasExpansionStack.clear(),g!==t&&(t=g)}this.ctx.state.expansionStderr="";let r=await Ei(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await xe(this.ctx,t.redirections);if(w)return w;let E=_("",i,0);return G(this.ctx,E,t.redirections)}this.ctx.state.lastArg="";let g=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",_("",g,this.ctx.state.lastExitCode)}let o=t.name&&Nr(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let g of a)this.ctx.state.tempExportedVars.add(g)}let l=await ls(this.ctx,t.redirections);if(l){for(let[g,w]of n)w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w);return l}let c=-1;for(let g of t.redirections){if((g.operator==="<<"||g.operator==="<<-")&&g.target.type==="HereDoc"){let w=g.target,E=await L(this.ctx,w.content);w.stripTabs&&(E=E.split(`
665
665
  `).map(I=>I.replace(/^\t+/,"")).join(`
666
666
  `));let $=g.fd??0;$!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),le(this.ctx),this.ctx.state.fileDescriptors.set($,E)):s=E;continue}if(g.operator==="<<<"&&g.target.type==="Word"){s=`${await L(this.ctx,g.target)}
667
- `;continue}if(g.operator==="<"&&g.target.type==="Word")try{let w=await L(this.ctx,g.target),E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(E)}catch{let w=await L(this.ctx,g.target);for(let[E,$]of n)$===void 0?this.ctx.state.env.delete(E):this.ctx.state.env.set(E,$);return P(`bash: ${w}: No such file or directory
668
- `)}if(g.operator==="<&"&&g.target.type==="Word"){let w=await L(this.ctx,g.target),E=Number.parseInt(w,10);if(!Number.isNaN(E)&&this.ctx.state.fileDescriptors){let $=this.ctx.state.fileDescriptors.get(E);if($!==void 0)if($.startsWith("__rw__:")){let I=pi($);I&&(s=I.content.slice(I.position),c=E)}else $.startsWith("__file__:")||$.startsWith("__file_append__:")||(s=$)}}}let u=await L(this.ctx,t.name),f=[],d=[];if(Nr(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let g of t.args){let w=await dn(this.ctx,g);if(w)f.push(w),d.push(!0);else{let E=await hn(this.ctx,g);if(E!==null)f.push(E),d.push(!0);else{let $=await _e(this.ctx,g);for(let I of $.values)f.push(I),d.push($.quoted)}}}else for(let g of t.args){let w=await _e(this.ctx,g);for(let E of w.values)f.push(E),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return _("","",this.ctx.state.lastExitCode)}return P(`bash: : command not found
669
- `,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let g of t.redirections){if(g.target.type==="HereDoc"||g.fdVariable)continue;let w=await L(this.ctx,g.target),E=g.fd??(g.operator==="<"||g.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),g.operator){case">":case">|":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile($,"","utf8"),le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file__:${$}`);break}case">>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file_append__:${$}`);break}case"<":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let I=await this.ctx.fs.readFile($);le(this.ctx),this.ctx.state.fileDescriptors.set(E,I)}catch{return P(`bash: ${w}: No such file or directory
670
- `)}break}case"<>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let I=await this.ctx.fs.readFile($);le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__rw__:${$.length}:${$}:0:${I}`)}catch{await this.ctx.fs.writeFile($,"","utf8"),le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__rw__:${$.length}:${$}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let $=w.slice(0,-1),I=Number.parseInt($,10);if(!Number.isNaN(I)){let N=this.ctx.state.fileDescriptors.get(I);N!==void 0?this.ctx.state.fileDescriptors.set(E,N):this.ctx.state.fileDescriptors.set(E,`__dupout__:${I}`),this.ctx.state.fileDescriptors.delete(I)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||(le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupout__:${$}`))}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let $=w.slice(0,-1),I=Number.parseInt($,10);if(!Number.isNaN(I)){let N=this.ctx.state.fileDescriptors.get(I);N!==void 0?this.ctx.state.fileDescriptors.set(E,N):this.ctx.state.fileDescriptors.set(E,`__dupin__:${I}`),this.ctx.state.fileDescriptors.delete(I)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||(le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupin__:${$}`))}break}}}for(let[g,w]of n)w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w);if(this.ctx.state.tempExportedVars)for(let g of n.keys())this.ctx.state.tempExportedVars.delete(g);return W}let y=await gi(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let h,m=null;try{h=await this.runCommand(u,f,d,s,!1,!1,c)}catch(g){if(g instanceof me||g instanceof ye)m=g,h=W;else throw g}let b=i+y;if(b&&(h={...h,stderr:b+h.stderr}),h=await G(this.ctx,h,t.redirections),m)throw m;if(f.length>0){let g=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(g)){let w=g.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(g=w[1])}this.ctx.state.lastArg=g}else this.ctx.state.lastArg=u;let v=_n(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[g,w]of n)this.ctx.state.fullyUnsetLocals?.has(g)||(w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w));if(this.ctx.state.tempExportedVars)for(let g of n.keys())this.ctx.state.tempExportedVars.delete(g);return n.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(h={...h,stderr:this.ctx.state.expansionStderr+h.stderr},this.ctx.state.expansionStderr=""),h}async runCommand(t,s,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,p,y,h,m)=>this.runCommand(u,f,d,p,y,h,m),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await oi(l,t,s,r,n,i,o,a);return c!==null?c:ai(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return Ms(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return ms(this.ctx,t)}async executeSubshell(t,s=""){return $i(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Si(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Oe(this.ctx,t.redirections);if(s)return s;try{let r=await H(this.ctx,t.expression.expression),n=Q(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),G(this.ctx,n,t.redirections)}catch(r){let n=P(`bash: arithmetic expression: ${r.message}
671
- `);return G(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Oe(this.ctx,t.redirections);if(s)return s;try{let r=await Ue(this.ctx,t.expression),n=Q(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),G(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Ge?1:2,i=P(`bash: conditional expression: ${r.message}
672
- `,n);return G(this.ctx,i,t.redirections)}}};var ne={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50,maxBraceExpansionResults:1e4,maxOutputSize:10485760,maxFileDescriptors:1024,maxSourceDepth:100};function Pi(e){return e?{maxCallDepth:e.maxCallDepth??ne.maxCallDepth,maxCommandCount:e.maxCommandCount??ne.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ne.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ne.maxAwkIterations,maxSedIterations:e.maxSedIterations??ne.maxSedIterations,maxJqIterations:e.maxJqIterations??ne.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ne.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ne.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??ne.maxGlobOperations,maxStringLength:e.maxStringLength??ne.maxStringLength,maxArrayElements:e.maxArrayElements??ne.maxArrayElements,maxHeredocSize:e.maxHeredocSize??ne.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??ne.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??ne.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??ne.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??ne.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??ne.maxSourceDepth}:{...ne}}function Or(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function ya(e){let t=Or(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ga(e,t){let s=Or(e);if(!s)return!1;let r=ya(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function ki(e,t){return!t||t.length===0?!1:t.some(s=>ga(e,s))}function _i(e){let t=wa(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Ci(t);if(s)return gs(s);let r=ba(t);return r?Ea(r):!1}function wa(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function va(e){if(!e)return null;let t=10,s=e;if(s.startsWith("0x")||s.startsWith("0X")?(t=16,s=s.slice(2)):s.length>1&&s.startsWith("0")&&(t=8),!s||t===16&&!/^[0-9a-fA-F]+$/.test(s)||t===10&&!/^\d+$/.test(s)||t===8&&!/^[0-7]+$/.test(s))return null;let r=Number.parseInt(s,t);return!Number.isFinite(r)||r<0?null:r}function Ci(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>va(l));if(s.some(l=>l===null))return null;let r=s;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[n,i,o,a]=r;return n>255||i>255||o>255||a>255?null:[n,i,o,a]}function ba(e){let t=e,s=null;if(t.includes(".")){let h=t.lastIndexOf(":");if(h<0)return null;let m=t.slice(h+1),b=Ci(m);if(!b)return null;s=b,t=t.slice(0,h)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[n,i]=t.split("::"),o=n?n.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=h=>/^[0-9a-f]{1,4}$/i.test(h)?Number.parseInt(h,16):null,c=o.map(l),u=a.map(l);if(c.some(h=>h===null)||u.some(h=>h===null))return null;let f=s?2:0,d=c.length+u.length+f,p=0;if(r===1){if(p=8-d,p<0)return null}else if(d!==8)return null;let y=[...c,...new Array(p).fill(0),...u];return s&&(y.push(s[0]<<8|s[1]),y.push(s[2]<<8|s[3])),y.length===8?y:null}function gs(e){let[t,s]=e;return t===127||t===10||t===172&&s>=16&&s<=31||t===192&&s===168||t===169&&s===254||t===0||t===100&&s>=64&&s<=127||t===198&&(s===18||s===19)||t===192&&s===0&&e[2]===0||t===192&&s===0&&e[2]===2||t===198&&s===51&&e[2]===100||t===203&&s===0&&e[2]===113||t>=240}function Ea(e){if(e.every(n=>n===0)||e.slice(0,7).every(n=>n===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let n=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return gs(n)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let n=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return gs(n)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let n=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return gs(n)}return!1}function Ni(e){let t=[];for(let s of e){if(!Or(s)){t.push(`Invalid URL in allow-list: "${s}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let n=new URL(s);if(n.protocol!=="http:"&&n.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${s}"`);continue}if(!n.hostname){t.push(`Allow-list entry must include a hostname: "${s}"`);continue}(n.search||n.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${s}"`)}return t}var Ze=class extends Error{constructor(t,s){let r=s??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},pt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},mt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ws=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},Nt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var $a=20,Sa=3e4,Aa=10485760,Pa=["GET","HEAD"],ka=new Set(["GET","HEAD","OPTIONS"]),_a=new Set([301,302,303,307,308]);function xr(e){if(!e.dangerouslyAllowFullInternetAccess){let c=Ni(e.allowedUrlPrefixes??[]);if(c.length>0)throw new Error(`Invalid network allow-list:
673
- ${c.join(`
674
- `)}`)}let t=e.maxRedirects??$a,s=e.timeoutMs??Sa,r=e.maxResponseSize??Aa,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Pa,i=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production");function o(c){if(i)try{let u=new URL(c);if(_i(u.hostname))throw new Ze(c,"private/loopback IP address blocked")}catch(u){if(u instanceof Ze)throw u}if(!e.dangerouslyAllowFullInternetAccess&&!ki(c,e.allowedUrlPrefixes??[]))throw new Ze(c)}function a(c){if(e.dangerouslyAllowFullInternetAccess)return;let u=c.toUpperCase();if(!n.includes(u))throw new ws(u,n)}async function l(c,u={}){let f=u.method?.toUpperCase()??"GET";o(c),a(f);let d=c,p=0,y=u.followRedirects??!0,h=u.timeoutMs!==void 0?Math.min(u.timeoutMs,s):s;for(;;){let m=new AbortController,b=Tt(()=>m.abort(),h);try{let v={method:f,headers:u.headers,signal:m.signal,redirect:"manual"};u.body&&!ka.has(f)&&(v.body=u.body);let A=await pe.runTrustedAsync(()=>fetch(d,v));if(_a.has(A.status)&&y){let g=A.headers.get("location");if(!g)return await Oi(A,d,r);let w=new URL(g,d).href;try{o(w)}catch{throw new mt(w)}if(p++,p>t)throw new pt(t);d=w;continue}return await Oi(A,d,r)}finally{Dt(b)}}}return l}async function Oi(e,t,s){let r=Object.create(null);if(e.headers.forEach((i,o)=>{r[o.toLowerCase()]=i}),s>0){let i=e.headers.get("content-length");if(i){let o=parseInt(i,10);if(!Number.isNaN(o)&&o>s)throw new Nt(s)}}let n;if(s>0&&e.body){let i=e.body.getReader(),o=new TextDecoder,a=[],l=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(l+=u.byteLength,l>s)throw i.cancel(),new Nt(s);a.push(o.decode(u,{stream:!0}))}a.push(o.decode()),n=a.join("")}else n=await e.text();return{status:e.status,statusText:e.statusText,headers:r,body:n,url:t}}function Ot(e){return tt(e)}function tt(e){return e.statements.map(xi).join(`
675
- `)}function xi(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(Ca(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Ca(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let s=[];for(let n=0;n<e.commands.length;n++)if(s.push(Ti(e.commands[n])),n<e.commands.length-1){let i=e.pipeStderr?.[n];s.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+s.join(" ")}function Ti(e){switch(e.type){case"SimpleCommand":return Na(e);case"If":return Ma(e);case"For":return Wa(e);case"CStyleFor":return za(e);case"While":return Va(e);case"Until":return Ba(e);case"Case":return ja(e);case"Subshell":return Ha(e);case"Group":return Za(e);case"ArithmeticCommand":return qa(e);case"ConditionalCommand":return Ga(e);case"FunctionDef":return Ka(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Na(e){let t=[];for(let s of e.assignments)t.push(Oa(s));e.name&&t.push(ie(e.name));for(let s of e.args)t.push(ie(s));for(let s of e.redirections)t.push(Ii(s));return t.join(" ")}function Oa(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(ie).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${ie(e.value)}`:`${e.name}${t}`}function ie(e){return e.parts.map(t=>vs(t,!1)).join("")}function qe(e){return e.parts.map(t=>vs(t,!0)).join("")}function vs(e,t){switch(e.type){case"Literal":return t?Ta(e.value):xa(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>vs(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Di(e);case"CommandSubstitution":return e.legacy?`\`${tt(e.body)}\``:`$(${tt(e.body)})`;case"ArithmeticExpansion":return`$((${Z(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${tt(e.body)})`:`>(${tt(e.body)})`;case"BraceExpansion":return La(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let s=e;throw new Error(`Unsupported word part type: ${s.type}`)}}}function xa(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Ta(e){return e.replace(/[$`"\\]/g,"\\$&")}function Da(e,t){return e.parts.map(s=>Ra(s,t)).join("")}function Ra(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Di(e);case"CommandSubstitution":return e.legacy?`\`${tt(e.body)}\``:`$(${tt(e.body)})`;case"ArithmeticExpansion":return`$((${Z(e.expression.expression)}))`;default:return vs(e,!1)}}function Di(e){return e.operation?`\${${Ri(e.parameter,e.operation)}}`:Ia(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Ia(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Ri(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${qe(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${qe(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?qe(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${qe(t.word)}`;case"Substring":{let s=Z(t.offset.expression);return t.length?`${e}:${s}:${Z(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",r=t.greedy?`${s}${s}`:s;return`${e}${r}${qe(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let r=t.replacement?`/${qe(t.replacement)}`:"";return`${e}${s}${qe(t.pattern)}${r}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",r=t.all?`${s}${s}`:s,n=t.pattern?qe(t.pattern):"";return`${e}${r}${n}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Ri(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let s=t;throw new Error(`Unsupported parameter operation type: ${s.type}`)}}}function La(e){return`{${e.items.map(Fa).join(",")}}`}function Fa(e){if(e.type==="Word")return ie(e.word);let t=e.startStr??String(e.start),s=e.endStr??String(e.end);return e.step!==void 0?`${t}..${s}..${e.step}`:`${t}..${s}`}function Ii(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let s=e.target,r=s.quoted?`'${s.delimiter}'`:s.delimiter,n=Da(s.content,s.quoted);return`${t}${e.operator}${r}
676
- ${n}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${ie(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${ie(e.target)}`:`${t}${e.operator} ${ie(e.target)}`}function Pe(e){return e.length===0?"":` ${e.map(Ii).join(" ")}`}function Ee(e){return e.map(xi).join(`
677
- `)}function Ma(e){let t=[];for(let s=0;s<e.clauses.length;s++){let r=e.clauses[s],n=s===0?"if":"elif";t.push(`${n} ${Ee(r.condition)}; then
667
+ `;continue}if(g.operator==="<"&&g.target.type==="Word")try{let w=await L(this.ctx,g.target),E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(E)}catch{let w=await L(this.ctx,g.target);for(let[E,$]of n)$===void 0?this.ctx.state.env.delete(E):this.ctx.state.env.set(E,$);return A(`bash: ${w}: No such file or directory
668
+ `)}if(g.operator==="<&"&&g.target.type==="Word"){let w=await L(this.ctx,g.target),E=Number.parseInt(w,10);if(!Number.isNaN(E)&&this.ctx.state.fileDescriptors){let $=this.ctx.state.fileDescriptors.get(E);if($!==void 0)if($.startsWith("__rw__:")){let I=mi($);I&&(s=I.content.slice(I.position),c=E)}else $.startsWith("__file__:")||$.startsWith("__file_append__:")||(s=$)}}}let u=await L(this.ctx,t.name),f=[],d=[];if(Nr(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let g of t.args){let w=await hn(this.ctx,g);if(w)f.push(w),d.push(!0);else{let E=await pn(this.ctx,g);if(E!==null)f.push(E),d.push(!0);else{let $=await Ce(this.ctx,g);for(let I of $.values)f.push(I),d.push($.quoted)}}}else for(let g of t.args){let w=await Ce(this.ctx,g);for(let E of w.values)f.push(E),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return _("","",this.ctx.state.lastExitCode)}return A(`bash: : command not found
669
+ `,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let g of t.redirections){if(g.target.type==="HereDoc"||g.fdVariable)continue;let w=await L(this.ctx,g.target),E=g.fd??(g.operator==="<"||g.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),g.operator){case">":case">|":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile($,"","utf8"),le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file__:${$}`);break}case">>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__file_append__:${$}`);break}case"<":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let I=await this.ctx.fs.readFile($);le(this.ctx),this.ctx.state.fileDescriptors.set(E,I)}catch{return A(`bash: ${w}: No such file or directory
670
+ `)}break}case"<>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let I=await this.ctx.fs.readFile($);le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__rw__:${$.length}:${$}:0:${I}`)}catch{await this.ctx.fs.writeFile($,"","utf8"),le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__rw__:${$.length}:${$}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let $=w.slice(0,-1),I=Number.parseInt($,10);if(!Number.isNaN(I)){let N=this.ctx.state.fileDescriptors.get(I);N!==void 0?this.ctx.state.fileDescriptors.set(E,N):this.ctx.state.fileDescriptors.set(E,`__dupout__:${I}`),this.ctx.state.fileDescriptors.delete(I)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||(le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupout__:${$}`))}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let $=w.slice(0,-1),I=Number.parseInt($,10);if(!Number.isNaN(I)){let N=this.ctx.state.fileDescriptors.get(I);N!==void 0?this.ctx.state.fileDescriptors.set(E,N):this.ctx.state.fileDescriptors.set(E,`__dupin__:${I}`),this.ctx.state.fileDescriptors.delete(I)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||(le(this.ctx),this.ctx.state.fileDescriptors.set(E,`__dupin__:${$}`))}break}}}for(let[g,w]of n)w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w);if(this.ctx.state.tempExportedVars)for(let g of n.keys())this.ctx.state.tempExportedVars.delete(g);return W}let m=await wi(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let h,y=null;try{h=await this.runCommand(u,f,d,s,!1,!1,c)}catch(g){if(g instanceof me||g instanceof ye)y=g,h=W;else throw g}let b=i+m;if(b&&(h={...h,stderr:b+h.stderr}),h=await G(this.ctx,h,t.redirections),y)throw y;if(f.length>0){let g=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(g)){let w=g.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(g=w[1])}this.ctx.state.lastArg=g}else this.ctx.state.lastArg=u;let v=Cn(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[g,w]of n)this.ctx.state.fullyUnsetLocals?.has(g)||(w===void 0?this.ctx.state.env.delete(g):this.ctx.state.env.set(g,w));if(this.ctx.state.tempExportedVars)for(let g of n.keys())this.ctx.state.tempExportedVars.delete(g);return n.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(h={...h,stderr:this.ctx.state.expansionStderr+h.stderr},this.ctx.state.expansionStderr=""),h}async runCommand(t,s,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,p,m,h,y)=>this.runCommand(u,f,d,p,m,h,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await ai(l,t,s,r,n,i,o,a);return c!==null?c:li(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return Ms(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return ms(this.ctx,t)}async executeSubshell(t,s=""){return Si(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Pi(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await xe(this.ctx,t.redirections);if(s)return s;try{let r=await H(this.ctx,t.expression.expression),n=Q(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),G(this.ctx,n,t.redirections)}catch(r){let n=A(`bash: arithmetic expression: ${r.message}
671
+ `);return G(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await xe(this.ctx,t.redirections);if(s)return s;try{let r=await He(this.ctx,t.expression),n=Q(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),G(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Ge?1:2,i=A(`bash: conditional expression: ${r.message}
672
+ `,n);return G(this.ctx,i,t.redirections)}}};var ne={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50,maxBraceExpansionResults:1e4,maxOutputSize:10485760,maxFileDescriptors:1024,maxSourceDepth:100};function ki(e){return e?{maxCallDepth:e.maxCallDepth??ne.maxCallDepth,maxCommandCount:e.maxCommandCount??ne.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ne.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ne.maxAwkIterations,maxSedIterations:e.maxSedIterations??ne.maxSedIterations,maxJqIterations:e.maxJqIterations??ne.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ne.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ne.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??ne.maxGlobOperations,maxStringLength:e.maxStringLength??ne.maxStringLength,maxArrayElements:e.maxArrayElements??ne.maxArrayElements,maxHeredocSize:e.maxHeredocSize??ne.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??ne.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??ne.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??ne.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??ne.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??ne.maxSourceDepth}:{...ne}}import{lookup as $a}from"node:dns";function Or(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function ya(e){let t=Or(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ga(e,t){let s=Or(e);if(!s)return!1;let r=ya(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function _i(e,t){return!t||t.length===0?!1:t.some(s=>ga(e,s))}function xr(e){let t=wa(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Ci(t);if(s)return gs(s);let r=ba(t);return r?Ea(r):!1}function wa(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function va(e){if(!e)return null;let t=10,s=e;if(s.startsWith("0x")||s.startsWith("0X")?(t=16,s=s.slice(2)):s.length>1&&s.startsWith("0")&&(t=8),!s||t===16&&!/^[0-9a-fA-F]+$/.test(s)||t===10&&!/^\d+$/.test(s)||t===8&&!/^[0-7]+$/.test(s))return null;let r=Number.parseInt(s,t);return!Number.isFinite(r)||r<0?null:r}function Ci(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>va(l));if(s.some(l=>l===null))return null;let r=s;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[n,i,o,a]=r;return n>255||i>255||o>255||a>255?null:[n,i,o,a]}function ba(e){let t=e,s=null;if(t.includes(".")){let h=t.lastIndexOf(":");if(h<0)return null;let y=t.slice(h+1),b=Ci(y);if(!b)return null;s=b,t=t.slice(0,h)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[n,i]=t.split("::"),o=n?n.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=h=>/^[0-9a-f]{1,4}$/i.test(h)?Number.parseInt(h,16):null,c=o.map(l),u=a.map(l);if(c.some(h=>h===null)||u.some(h=>h===null))return null;let f=s?2:0,d=c.length+u.length+f,p=0;if(r===1){if(p=8-d,p<0)return null}else if(d!==8)return null;let m=[...c,...new Array(p).fill(0),...u];return s&&(m.push(s[0]<<8|s[1]),m.push(s[2]<<8|s[3])),m.length===8?m:null}function gs(e){let[t,s]=e;return t===127||t===10||t===172&&s>=16&&s<=31||t===192&&s===168||t===169&&s===254||t===0||t===100&&s>=64&&s<=127||t===198&&(s===18||s===19)||t===192&&s===0&&e[2]===0||t===192&&s===0&&e[2]===2||t===198&&s===51&&e[2]===100||t===203&&s===0&&e[2]===113||t>=240}function Ea(e){if(e.every(n=>n===0)||e.slice(0,7).every(n=>n===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let n=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return gs(n)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let n=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return gs(n)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let n=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return gs(n)}return!1}function Ni(e){let t=[];for(let s of e){if(!Or(s)){t.push(`Invalid URL in allow-list: "${s}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let n=new URL(s);if(n.protocol!=="http:"&&n.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${s}"`);continue}if(!n.hostname){t.push(`Allow-list entry must include a hostname: "${s}"`);continue}(n.search||n.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${s}"`)}return t}var Ae=class extends Error{constructor(t,s){let r=s??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},pt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},mt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ws=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},Nt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};function Sa(e){return new Promise((t,s)=>{$a(e,{all:!0},(r,n)=>{r?s(r):t(n)})})}var Pa=20,Aa=3e4,ka=10485760,_a=["GET","HEAD"],Ca=new Set(["GET","HEAD","OPTIONS"]),Na=new Set([301,302,303,307,308]);function Dr(e){if(!e.dangerouslyAllowFullInternetAccess){let u=Ni(e.allowedUrlPrefixes??[]);if(u.length>0)throw new Error(`Invalid network allow-list:
673
+ ${u.join(`
674
+ `)}`)}let t=e.maxRedirects??Pa,s=e.timeoutMs??Aa,r=e.maxResponseSize??ka,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??_a,i=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),o=e._dnsResolve??Sa;async function a(u){if(i)try{let f=new URL(u);if(xr(f.hostname))throw new Ae(u,"private/loopback IP address blocked");let d=f.hostname;if(/[a-zA-Z]/.test(d))try{let m=await o(d);for(let{address:h}of m)if(xr(h))throw new Ae(u,"hostname resolves to private/loopback IP address")}catch(m){if(m instanceof Ae)throw m;let h=m?.code;if(!(h==="ENOTFOUND"||h==="ENODATA"))throw new Ae(u,"DNS resolution failed for private IP check")}}catch(f){if(f instanceof Ae)throw f}if(!e.dangerouslyAllowFullInternetAccess&&!_i(u,e.allowedUrlPrefixes??[]))throw new Ae(u)}function l(u){if(e.dangerouslyAllowFullInternetAccess)return;let f=u.toUpperCase();if(!n.includes(f))throw new ws(f,n)}async function c(u,f={}){let d=f.method?.toUpperCase()??"GET";await a(u),l(d);let p=u,m=0,h=f.followRedirects??!0,y=f.timeoutMs!==void 0?Math.min(f.timeoutMs,s):s;for(;;){let b=new AbortController,v=Dt(()=>b.abort(),y);try{let P={method:d,headers:f.headers,signal:b.signal,redirect:"manual"};f.body&&!Ca.has(d)&&(P.body=f.body);let g=await pe.runTrustedAsync(()=>fetch(p,P));if(Na.has(g.status)&&h){let w=g.headers.get("location");if(!w)return await Oi(g,p,r);let E=new URL(w,p).href;try{await a(E)}catch{throw new mt(E)}if(m++,m>t)throw new pt(t);p=E;continue}return await Oi(g,p,r)}finally{Tt(v)}}}return c}async function Oi(e,t,s){let r=Object.create(null);if(e.headers.forEach((i,o)=>{r[o.toLowerCase()]=i}),s>0){let i=e.headers.get("content-length");if(i){let o=parseInt(i,10);if(!Number.isNaN(o)&&o>s)throw new Nt(s)}}let n;if(s>0&&e.body){let i=e.body.getReader(),o=new TextDecoder,a=[],l=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(l+=u.byteLength,l>s)throw i.cancel(),new Nt(s);a.push(o.decode(u,{stream:!0}))}a.push(o.decode()),n=a.join("")}else n=await e.text();return{status:e.status,statusText:e.statusText,headers:r,body:n,url:t}}function Ot(e){return tt(e)}function tt(e){return e.statements.map(xi).join(`
675
+ `)}function xi(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(Oa(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Oa(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let s=[];for(let n=0;n<e.commands.length;n++)if(s.push(Di(e.commands[n])),n<e.commands.length-1){let i=e.pipeStderr?.[n];s.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+s.join(" ")}function Di(e){switch(e.type){case"SimpleCommand":return xa(e);case"If":return za(e);case"For":return Va(e);case"CStyleFor":return Ba(e);case"While":return ja(e);case"Until":return Ua(e);case"Case":return Ha(e);case"Subshell":return qa(e);case"Group":return Ga(e);case"ArithmeticCommand":return Ka(e);case"ConditionalCommand":return Xa(e);case"FunctionDef":return Ya(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function xa(e){let t=[];for(let s of e.assignments)t.push(Da(s));e.name&&t.push(ie(e.name));for(let s of e.args)t.push(ie(s));for(let s of e.redirections)t.push(Ii(s));return t.join(" ")}function Da(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(ie).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${ie(e.value)}`:`${e.name}${t}`}function ie(e){return e.parts.map(t=>vs(t,!1)).join("")}function qe(e){return e.parts.map(t=>vs(t,!0)).join("")}function vs(e,t){switch(e.type){case"Literal":return t?Ra(e.value):Ta(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>vs(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Ti(e);case"CommandSubstitution":return e.legacy?`\`${tt(e.body)}\``:`$(${tt(e.body)})`;case"ArithmeticExpansion":return`$((${Z(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${tt(e.body)})`:`>(${tt(e.body)})`;case"BraceExpansion":return Ma(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let s=e;throw new Error(`Unsupported word part type: ${s.type}`)}}}function Ta(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Ra(e){return e.replace(/[$`"\\]/g,"\\$&")}function Ia(e,t){return e.parts.map(s=>La(s,t)).join("")}function La(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Ti(e);case"CommandSubstitution":return e.legacy?`\`${tt(e.body)}\``:`$(${tt(e.body)})`;case"ArithmeticExpansion":return`$((${Z(e.expression.expression)}))`;default:return vs(e,!1)}}function Ti(e){return e.operation?`\${${Ri(e.parameter,e.operation)}}`:Fa(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Fa(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Ri(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${qe(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${qe(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?qe(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${qe(t.word)}`;case"Substring":{let s=Z(t.offset.expression);return t.length?`${e}:${s}:${Z(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",r=t.greedy?`${s}${s}`:s;return`${e}${r}${qe(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let r=t.replacement?`/${qe(t.replacement)}`:"";return`${e}${s}${qe(t.pattern)}${r}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",r=t.all?`${s}${s}`:s,n=t.pattern?qe(t.pattern):"";return`${e}${r}${n}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Ri(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let s=t;throw new Error(`Unsupported parameter operation type: ${s.type}`)}}}function Ma(e){return`{${e.items.map(Wa).join(",")}}`}function Wa(e){if(e.type==="Word")return ie(e.word);let t=e.startStr??String(e.start),s=e.endStr??String(e.end);return e.step!==void 0?`${t}..${s}..${e.step}`:`${t}..${s}`}function Ii(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let s=e.target,r=s.quoted?`'${s.delimiter}'`:s.delimiter,n=Ia(s.content,s.quoted);return`${t}${e.operator}${r}
676
+ ${n}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${ie(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${ie(e.target)}`:`${t}${e.operator} ${ie(e.target)}`}function ke(e){return e.length===0?"":` ${e.map(Ii).join(" ")}`}function Ee(e){return e.map(xi).join(`
677
+ `)}function za(e){let t=[];for(let s=0;s<e.clauses.length;s++){let r=e.clauses[s],n=s===0?"if":"elif";t.push(`${n} ${Ee(r.condition)}; then
678
678
  ${Ee(r.body)}`)}return e.elseBody&&t.push(`else
679
679
  ${Ee(e.elseBody)}`),`${t.join(`
680
680
  `)}
681
- fi${Pe(e.redirections)}`}function Wa(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(ie).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
681
+ fi${ke(e.redirections)}`}function Va(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(ie).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
682
682
  ${Ee(e.body)}
683
- done${Pe(e.redirections)}`}function za(e){let t=e.init?Z(e.init.expression):"",s=e.condition?Z(e.condition.expression):"",r=e.update?Z(e.update.expression):"";return`for ((${t}; ${s}; ${r})); do
683
+ done${ke(e.redirections)}`}function Ba(e){let t=e.init?Z(e.init.expression):"",s=e.condition?Z(e.condition.expression):"",r=e.update?Z(e.update.expression):"";return`for ((${t}; ${s}; ${r})); do
684
684
  ${Ee(e.body)}
685
- done${Pe(e.redirections)}`}function Va(e){return`while ${Ee(e.condition)}; do
685
+ done${ke(e.redirections)}`}function ja(e){return`while ${Ee(e.condition)}; do
686
686
  ${Ee(e.body)}
687
- done${Pe(e.redirections)}`}function Ba(e){return`until ${Ee(e.condition)}; do
687
+ done${ke(e.redirections)}`}function Ua(e){return`until ${Ee(e.condition)}; do
688
688
  ${Ee(e.body)}
689
- done${Pe(e.redirections)}`}function ja(e){let t=e.items.map(Ua).join(`
689
+ done${ke(e.redirections)}`}function Ha(e){let t=e.items.map(Za).join(`
690
690
  `);return`case ${ie(e.word)} in
691
691
  ${t}
692
- esac${Pe(e.redirections)}`}function Ua(e){let t=e.patterns.map(ie).join(" | "),s=Ee(e.body);return s?`${t})
692
+ esac${ke(e.redirections)}`}function Za(e){let t=e.patterns.map(ie).join(" | "),s=Ee(e.body);return s?`${t})
693
693
  ${s}
694
694
  ${e.terminator}`:`${t})
695
- ${e.terminator}`}function Ha(e){return`(${Ee(e.body)})${Pe(e.redirections)}`}function Za(e){return`{ ${Ee(e.body)}; }${Pe(e.redirections)}`}function qa(e){return`((${Z(e.expression.expression)}))${Pe(e.redirections)}`}function Ga(e){return`[[ ${et(e.expression)} ]]${Pe(e.redirections)}`}function Ka(e){let t=Ti(e.body);return`${e.name}() ${t}${Pe(e.redirections)}`}function Z(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${Z(e.left)} ${e.operator} ${Z(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${Z(e.operand)}`:`${Z(e.operand)}${e.operator}`;case"ArithTernary":return`${Z(e.condition)} ? ${Z(e.consequent)} : ${Z(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${Z(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${Z(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${Z(e.target)}[${Z(e.subscript)}]`:Z(e.target)} ${e.operator} ${Z(e.value)}`;case"ArithDynamicElement":return`${Z(e.nameExpr)}[${Z(e.subscript)}]`;case"ArithGroup":return`(${Z(e.expression)})`;case"ArithNested":return`$((${Z(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${Z(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(Z).join("");case"ArithDoubleSubscript":return`${e.array}[${Z(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function et(e){switch(e.type){case"CondBinary":return`${ie(e.left)} ${e.operator} ${ie(e.right)}`;case"CondUnary":return`${e.operator} ${ie(e.operand)}`;case"CondNot":return`! ${et(e.operand)}`;case"CondAnd":return`${et(e.left)} && ${et(e.right)}`;case"CondOr":return`${et(e.left)} || ${et(e.right)}`;case"CondGroup":return`( ${et(e.expression)} )`;case"CondWord":return ie(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var xt=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;transformPlugins=[];state;constructor(t={}){let s=t.fs??new Ie(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
696
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Pi({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=xr(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:n,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Is(this.state.options)),this.state.env.set("BASHOPTS",Ls(this.state.shoptOptions)),on(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&s instanceof Ie)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let i of en(t.commands))this.registerCommand(i);if(t.fetch||t.network)for(let i of tn())this.registerCommand(i);if(t.python)for(let i of sn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)rn(i)?this.registerCommand(nn(i)):this.registerCommand({...i,trusted:i.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
695
+ ${e.terminator}`}function qa(e){return`(${Ee(e.body)})${ke(e.redirections)}`}function Ga(e){return`{ ${Ee(e.body)}; }${ke(e.redirections)}`}function Ka(e){return`((${Z(e.expression.expression)}))${ke(e.redirections)}`}function Xa(e){return`[[ ${et(e.expression)} ]]${ke(e.redirections)}`}function Ya(e){let t=Di(e.body);return`${e.name}() ${t}${ke(e.redirections)}`}function Z(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${Z(e.left)} ${e.operator} ${Z(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${Z(e.operand)}`:`${Z(e.operand)}${e.operator}`;case"ArithTernary":return`${Z(e.condition)} ? ${Z(e.consequent)} : ${Z(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${Z(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${Z(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${Z(e.target)}[${Z(e.subscript)}]`:Z(e.target)} ${e.operator} ${Z(e.value)}`;case"ArithDynamicElement":return`${Z(e.nameExpr)}[${Z(e.subscript)}]`;case"ArithGroup":return`(${Z(e.expression)})`;case"ArithNested":return`$((${Z(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${Z(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(Z).join("");case"ArithDoubleSubscript":return`${e.array}[${Z(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function et(e){switch(e.type){case"CondBinary":return`${ie(e.left)} ${e.operator} ${ie(e.right)}`;case"CondUnary":return`${e.operator} ${ie(e.operand)}`;case"CondNot":return`! ${et(e.operand)}`;case"CondAnd":return`${et(e.left)} && ${et(e.right)}`;case"CondOr":return`${et(e.left)} || ${et(e.right)}`;case"CondGroup":return`( ${et(e.expression)} )`;case"CondWord":return ie(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var xt=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;transformPlugins=[];state;constructor(t={}){let s=t.fs??new Le(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
696
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=ki({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Dr(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.coverageWriter=t.coverage,this.state={env:n,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Is(this.state.options)),this.state.env.set("BASHOPTS",Ls(this.state.shoptOptions)),an(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&s instanceof Le)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let i of tn(t.commands))this.registerCommand(i);if(t.fetch||t.network)for(let i of sn())this.registerCommand(i);if(t.python)for(let i of rn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)nn(i)?this.registerCommand(on(i)):this.registerCommand({...i,trusted:i.trusted??!0})}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
697
697
  # Built-in command: ${t.name}
698
698
  `;try{s.writeFileSync(`/bin/${t.name}`,r)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,r)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=Fi(t.stdout),t.stderr=Fi(t.stderr),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
699
- `,exitCode:1,env:we(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:we(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let r=s?.cwd??this.state.cwd,n,i=r;if(s?.cwd)if(s.env&&"PWD"in s.env)n=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{n=await this.fs.realpath(r),i=n}catch{n=r}else n=r;let o=s?.replaceEnv?new Map:new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);n!==void 0&&o.set("PWD",n);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:s?.stdin,signal:s?.signal},l=t;s?.rawScript||(l=Li(t));let c=this.defenseInDepthConfig?pe.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=ue(l,{maxHeredocSize:this.limits.maxHeredocSize}),p;if(this.transformPlugins.length>0){let v=Object.create(null);for(let A of this.transformPlugins){let g=A.transform({ast:d,metadata:v});d=g.ast,g.metadata&&(v=Et(v,g.metadata))}p=v}let y={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0},b=await new Ct(y,a).executeScript(d);return p&&(b.metadata=p),this.logResult(b)};return u?await u.run(f):await f()}catch(f){if(f instanceof j)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:we(this.state.env,s?.env)});if(f instanceof $e)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:we(this.state.env,s?.env)});if(f instanceof Ge)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:we(this.state.env,s?.env)});if(f instanceof Lt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:we(this.state.env,s?.env)});if(f instanceof J)return this.logResult({stdout:f.stdout,stderr:We(f.stderr),exitCode:J.EXIT_CODE,env:we(this.state.env,s?.env)});if(f instanceof Fe)return this.logResult({stdout:"",stderr:`bash: security violation: ${We(f.message)}
700
- `,exitCode:1,env:we(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${We(f.message)}
701
- `,exitCode:2,env:we(this.state.env,s?.env)});if(f instanceof zr)return this.logResult({stdout:"",stderr:`bash: ${We(f.message)}
702
- `,exitCode:2,env:we(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${We(f.message)}
703
- `,exitCode:1,env:we(this.state.env,s?.env)});throw f}finally{u?.deactivate()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return ze(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=Li(t),r=ue(s,{maxHeredocSize:this.limits.maxHeredocSize}),n=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:n});r=o.ast,o.metadata&&(n=Et(n,o.metadata))}return{script:Ot(r),ast:r,metadata:n}}};function Li(e){let t=e.split(`
699
+ `,exitCode:1,env:we(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:we(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let r=s?.cwd??this.state.cwd,n,i=r;if(s?.cwd)if(s.env&&"PWD"in s.env)n=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{n=await this.fs.realpath(r),i=n}catch{n=r}else n=r;let o=s?.replaceEnv?new Map:new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);n!==void 0&&o.set("PWD",n);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:s?.stdin,signal:s?.signal},l=t;s?.rawScript||(l=Li(t));let c=this.defenseInDepthConfig?pe.getInstance(this.defenseInDepthConfig):null,u=c?.activate();try{let f=async()=>{let d=ue(l,{maxHeredocSize:this.limits.maxHeredocSize}),p;if(this.transformPlugins.length>0){let v=Object.create(null);for(let P of this.transformPlugins){let g=P.transform({ast:d,metadata:v});d=g.ast,g.metadata&&(v=Et(v,g.metadata))}p=v}let m={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:c?.isEnabled()===!0},b=await new Ct(m,a).executeScript(d);return p&&(b.metadata=p),this.logResult(b)};return u?await u.run(f):await f()}catch(f){if(f instanceof j)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:we(this.state.env,s?.env)});if(f instanceof $e)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:we(this.state.env,s?.env)});if(f instanceof Ge)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:we(this.state.env,s?.env)});if(f instanceof Lt)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:we(this.state.env,s?.env)});if(f instanceof J)return this.logResult({stdout:f.stdout,stderr:ze(f.stderr),exitCode:J.EXIT_CODE,env:we(this.state.env,s?.env)});if(f instanceof Me)return this.logResult({stdout:"",stderr:`bash: security violation: ${ze(f.message)}
700
+ `,exitCode:1,env:we(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${ze(f.message)}
701
+ `,exitCode:2,env:we(this.state.env,s?.env)});if(f instanceof Vr)return this.logResult({stdout:"",stderr:`bash: ${ze(f.message)}
702
+ `,exitCode:2,env:we(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${ze(f.message)}
703
+ `,exitCode:1,env:we(this.state.env,s?.env)});throw f}finally{u?.deactivate()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return Ve(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=Li(t),r=ue(s,{maxHeredocSize:this.limits.maxHeredocSize}),n=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:n});r=o.ast,o.metadata&&(n=Et(n,o.metadata))}return{script:Ot(r),ast:r,metadata:n}}};function Li(e){let t=e.split(`
704
704
  `),s=[],r=[];for(let n=0;n<t.length;n++){let i=t[n];if(r.length>0){let l=r[r.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),r.pop();continue}s.push(i);continue}let o=i.trimStart();s.push(o);let a=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let l of o.matchAll(a)){let c=l[1]==="-",u=l[3];r.push({delimiter:u,stripTabs:c})}}return s.join(`
705
- `)}var Xa=new TextDecoder("utf-8",{fatal:!0});function Fi(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>255)return e;n>127&&(t=!0)}if(!t)return e;let s=new Uint8Array(e.length);for(let r=0;r<e.length;r++)s[r]=e.charCodeAt(r);try{return Xa.decode(s)}catch{return e}}var bs=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new Ie,t?.mounts)for(let{mountPoint:s,filesystem:r}of t.mounts)this.mount(s,r)}mount(t,s){this.validateMountPath(t);let r=O(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:s})}unmount(t){let s=O(t);if(!this.mounts.has(s))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(s)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let s=O(t);return this.mounts.has(s)}validateMountPath(t){let s=t.split("/");for(let r of s)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let s of this.mounts.keys())if(s!==t){if(t.startsWith(`${s}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${s}'`);if(s.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${s}'`)}}routePath(t){D(t,"access");let s=O(t),r=null,n=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(s===o)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${o}/`)&&o.length>n&&(r=i,n=o.length)}if(r){let i=s.slice(n);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=O(t),r=s==="/"?"/":`${s}/`,n=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!n.includes(a)&&n.push(a)}return n}async readFile(t,s){let{fs:r,relativePath:n}=this.routePath(t);return r.readFile(n,s)}async readFileBuffer(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readFileBuffer(r)}async writeFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.writeFile(i,s,r)}async appendFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.appendFile(i,s,r)}async exists(t){let s=O(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:n,relativePath:i}=this.routePath(t);return n.exists(i)}async stat(t){let s=O(t),r=this.mounts.get(s);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.stat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let s=O(t),r=this.mounts.get(s);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.lstat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,s){let r=O(t);if(this.mounts.has(r)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&s?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,s)}async readdir(t){let s=O(t),r=new Set,n=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;n=l}let a=this.getChildMountPoints(s);for(let l of a)r.add(l);if(r.size===0&&n&&!this.mounts.has(s))throw n;return Array.from(r).sort()}async rm(t,s){let r=O(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,s)}async cp(t,s,r){let n=this.routePath(t),i=this.routePath(s);return n.fs===i.fs?n.fs.cp(n.relativePath,i.relativePath,r):this.crossMountCopy(t,s,r)}async mv(t,s){let r=O(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let n=this.routePath(t),i=this.routePath(s);if(n.fs===i.fs)return n.fs.mv(n.relativePath,i.relativePath);await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Ve(t,s)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let r=s.split("/").filter(Boolean),n="";for(let o of r)n=`${n}/${o}`,t.add(n);let i=this.mounts.get(s);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(s):t.add(`${s}${o}`)}return Array.from(t).sort()}async chmod(t,s){let r=O(t),n=this.mounts.get(r);if(n)return n.filesystem.chmod("/",s);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,s)}async symlink(t,s){let{fs:r,relativePath:n}=this.routePath(s);return r.symlink(t,n)}async link(t,s){let r=this.routePath(t),n=this.routePath(s);if(r.fs!==n.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return r.fs.link(r.relativePath,n.relativePath)}async readlink(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readlink(r)}async realpath(t){let s=O(t);if(this.mounts.get(s))return s;let{fs:n,relativePath:i}=this.routePath(t),o=await n.realpath(i);for(let[a,l]of this.mounts)if(s===a||s.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,s,r){let n=await this.lstat(t);if(n.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,n.mode)}else if(n.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(s,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=Ke(t,o),l=Ke(s,o);await this.crossMountCopy(a,l,r)}}else if(n.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.utimes(i,s,r)}};import*as q from"node:fs";import*as ae from"node:path";var Ya=["ELOOP","EFBIG","EPERM"],Qa="/home/user/project",yt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ae.resolve(t.root);let s=t.mountPoint??Qa;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,zt(this.root,"OverlayFs"),this.canonicalRoot=q.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let r of t)s+=`/${r}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let n=O(t).split("/").filter(Boolean),i="";for(let o of n)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let r=O(t),n=this.getDirname(r);n!=="/"&&this.mkdirSync(n);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(r,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=O(t),r=this.getRelativeToMount(s);if(r===null)return null;let n=ae.join(this.root,r),i=ae.resolve(n);return Te(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Mt(t,this.canonicalRoot):Wt(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ae.dirname(t),r=this.resolveRealPath_(s);return r===null?null:ae.join(r,ae.basename(t))}sanitizeError(t,s,r){Vt(t,s,r,Ya)}ensureParentDirs(t){let s=rt(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=O(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)return!1;try{return await q.promises.lstat(r),!0}catch{return!1}}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return it(r,n)}async readFileBuffer(t,s=new Set){D(t,"open");let r=O(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let o=this.resolveSymlink(r,n.target);return this.readFileBuffer(o,s)}if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await q.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let c=await q.promises.readlink(i),u=this.realTargetToVirtual(r,c),f=this.resolveSymlink(r,u);return this.readFileBuffer(f,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&o.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${o.size} bytes, max ${this.maxFileReadSize})`);let a=this.allowSymlinks?q.constants.O_RDONLY:q.constants.O_RDONLY|q.constants.O_NOFOLLOW,l=await q.promises.open(i,a);try{let c=await l.readFile();return new Uint8Array(c)}finally{await l.close()}}catch(o){let a=o.code;if(a==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(a==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(o,t,"open")}}async writeFile(t,s,r){D(t,"write"),this.assertWritable(`write '${t}'`);let n=O(t);this.ensureParentDirs(n);let i=be(r),o=Re(s,i);this.memory.set(n,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(n)}async appendFile(t,s,r){D(t,"append"),this.assertWritable(`append '${t}'`);let n=O(t),i=be(r),o=Re(s,i),a;try{a=await this.readFileBuffer(n)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(n)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){D(t,"stat");let r=O(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let a=this.resolveSymlink(r,n.target);return this.stat(a,s)}let o=0;return n.type==="file"&&(o=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:o,mtime:n.mtime}}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await q.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await q.promises.readlink(i),l=this.realTargetToVirtual(r,a),c=this.resolveSymlink(r,l);return this.stat(c,s)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime}}catch(o){if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){D(t,"lstat");let s=O(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let r=this.memory.get(s);if(r){if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime};let i=0;return r.type==="file"&&(i=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:i,mtime:r.mtime}}let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await q.promises.lstat(n);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}resolveSymlink(t,s){return nt(t,s)}realTargetToVirtual(t,s){let r=Mr(s,this.canonicalRoot);if(r.withinRoot){if(!ae.isAbsolute(s))return s;let n=r.relativePath;return this.mountPoint==="/"?n:`${this.mountPoint}${n}`}return r.safeName}async mkdir(t,s){D(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=O(t);if(await this.existsInOverlay(r)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=rt(r);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(r,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(r)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Map,n=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&n.add(c)}for(let[a,l]of this.memory)if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!n.has(u)&&!c.includes("/",1)&&r.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.resolveRealPath_(this.toRealPath(s));if(o)try{if(!this.allowSymlinks&&(await q.promises.lstat(o)).isSymbolicLink()){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);return r}let a=await q.promises.readdir(o,{withFileTypes:!0});for(let l of a)!n.has(l.name)&&!r.has(l.name)&&r.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(a){if(a.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else a.code!=="ENOTDIR"&&this.sanitizeError(a,t,"scandir")}return r}async resolveForReaddir(t,s=!1){let r=O(t),n=new Set,i=s,o=this.memory.get(r);for(;o&&o.type==="symlink";){if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(r),i=!0,r=this.resolveSymlink(r,o.target),o=this.memory.get(r)}if(o)return{normalized:r,outsideOverlay:!1};if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(r));if(!l)return{normalized:r,outsideOverlay:!0};try{if((await q.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let u=await q.promises.readlink(l),f=this.realTargetToVirtual(r,u),d=this.resolveSymlink(r,f);return this.resolveForReaddir(d,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){D(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){D(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){D(t,"rm"),this.assertWritable(`rm '${t}'`);let r=O(t);if(!await this.existsInOverlay(r)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(r)).isDirectory){let o=await this.readdir(r);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=r==="/"?`/${a}`:`${r}/${a}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.memory.delete(r),this.existsOnRealFs(r)&&this.deleted.add(r)}existsOnRealFs(t){let s=this.toRealPath(t),r=this.resolveRealPathParent_(s);if(!r)return!1;try{return q.lstatSync(r),!0}catch{return!1}}async cp(t,s,r){D(t,"cp"),D(s,"cp"),this.assertWritable(`cp '${s}'`);let n=O(t),i=O(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(n);for(let c of l){let u=n==="/"?`/${c}`:`${n}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Ve(t,s)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let n=q.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=ae.join(r,i);q.lstatSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){D(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=O(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(r);if(i){i.mode=s;return}let o=await this.stat(r);if(o.isFile){let a=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);D(s,"symlink"),this.assertWritable(`symlink '${s}'`);let r=O(s);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.memory.set(r,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(r)}async link(t,s){D(t,"link"),D(s,"link"),this.assertWritable(`link '${s}'`);let r=O(t),n=O(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(n)}async readlink(t){D(t,"readlink");let s=O(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let r=this.memory.get(s);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await q.promises.readlink(n);if(!ae.isAbsolute(i)){let o=ae.resolve(ae.dirname(n),i),a;try{a=q.realpathSync(o)}catch{a=o}if(!Te(a,this.canonicalRoot))return ae.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){D(t,"realpath");let s=O(t),r=new Set,n=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(c),d=0,p=40;for(;f&&f.type==="symlink"&&d<p;){if(r.add(c),c=this.resolveSymlink(c,f.target),d++,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(c)}if(d>=p)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let y=this.toRealPath(c),h=this.resolveRealPath_(y);if(h)try{if((await q.promises.lstat(h)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let b=await q.promises.readlink(h),v=this.realTargetToVirtual(c,b);return r.add(c),c=this.resolveSymlink(c,v),n(c)}}catch(m){if(m.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(m,t,"realpath")}else if(!this.allowSymlinks){let m=this.resolveRealPathParent_(y);if(m)try{if((await q.promises.lstat(m)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return c||"/"},i=await n(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,r){D(t,"utimes"),this.assertWritable(`utimes '${t}'`);let n=O(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(n);if(o){o.mtime=r;return}let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:l,mode:a.mode,mtime:r})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:a.mode,mtime:r})}};import*as R from"node:fs";import*as U from"node:path";var Ja=["EACCES","escaping sandbox","EFBIG"],Es=class{root;canonicalRoot;maxFileReadSize;allowSymlinks;constructor(t){this.root=U.resolve(t.root),this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,zt(this.root,"ReadWriteFs"),this.canonicalRoot=R.realpathSync(this.root)}resolveAndValidate(t,s){let r=this.allowSymlinks?Mt(t,this.canonicalRoot):Wt(t,this.root,this.canonicalRoot);if(r===null)throw new Error(`EACCES: permission denied, '${s}' resolves outside sandbox`);return r}validateParent(t,s){let r=U.dirname(t),n=this.resolveAndValidate(r,s);return U.join(n,U.basename(t))}toRealPath(t){let s=O(t),r=U.join(this.root,s);return U.resolve(r)}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return it(r,n)}async readFileBuffer(t){D(t,"open");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{let n=this.allowSymlinks?R.constants.O_RDONLY:R.constants.O_RDONLY|R.constants.O_NOFOLLOW,i=await R.promises.open(r,n);try{if(this.maxFileReadSize>0){let a=await i.stat();if(a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`)}let o=await i.readFile();return new Uint8Array(o)}finally{await i.close()}}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.code==="EISDIR")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(i.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(n,t,"open")}}async writeFile(t,s,r){D(t,"write");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t),o=be(r),a=Re(s,o),l=U.dirname(i);try{await R.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(n,t);let c=this.allowSymlinks?0:R.constants.O_NOFOLLOW,u=R.constants.O_WRONLY|R.constants.O_CREAT|R.constants.O_TRUNC|c,f=await R.promises.open(i,u,438);try{await f.writeFile(a)}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"write")}}async appendFile(t,s,r){D(t,"append");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t),o=be(r),a=Re(s,o),l=U.dirname(i);try{await R.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(n,t);let c=this.allowSymlinks?0:R.constants.O_NOFOLLOW,u=R.constants.O_WRONLY|R.constants.O_CREAT|R.constants.O_APPEND|c,f=await R.promises.open(i,u,438);try{await f.writeFile(a)}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"append")}}async exists(t){if(t.includes("\0"))return!1;let s=this.toRealPath(t);try{let r=this.resolveAndValidate(s,t);return await R.promises.access(r),!0}catch{return!1}}async stat(t){D(t,"stat");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{let n=await R.promises.lstat(r);if(!this.allowSymlinks&&n.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){if(n.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(n,t,"stat")}}async lstat(t){D(t,"lstat");let s=this.toRealPath(t),r=this.validateParent(s,t);try{let n=await R.promises.lstat(r);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){if(n.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(n,t,"lstat")}}async mkdir(t,s){D(t,"mkdir");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{await R.promises.mkdir(n,{recursive:s?.recursive})}catch(i){let o=i;if(o.code==="EEXIST")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.sanitizeError(i,t,"mkdir")}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){D(t,"scandir");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{if(!this.allowSymlinks&&(await R.promises.lstat(r)).isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return(await R.promises.readdir(r,{withFileTypes:!0})).map(i=>({name:i.name,isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink()})).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.code==="ENOTDIR")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);this.sanitizeError(n,t,"scandir")}}async rm(t,s){D(t,"rm");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{await R.promises.rm(n,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(i){let o=i;if(o.code==="ENOENT"&&!s?.force)throw new Error(`ENOENT: no such file or directory, rm '${t}'`);if(o.code==="ENOTEMPTY")throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.sanitizeError(i,t,"rm")}}async cp(t,s,r){D(t,"cp"),D(s,"cp");let n=this.toRealPath(t),i=this.toRealPath(s),o=this.resolveAndValidate(n,t),a=this.resolveAndValidate(i,s);try{await R.promises.cp(o,a,{recursive:r?.recursive??!1,filter:async l=>{try{if(R.lstatSync(l).isSymbolicLink()){let u=await R.promises.realpath(l).catch(()=>null);return u===null?!1:Te(u,this.canonicalRoot)}return!0}catch(c){return c.code==="ENOENT"}}})}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(c.code==="EISDIR")throw new Error(`EISDIR: is a directory, cp '${t}'`);this.sanitizeError(l,t,"cp")}}async mv(t,s){D(t,"mv"),D(s,"mv");let r=this.toRealPath(t),n=this.toRealPath(s),i=this.validateParent(r,t),o=this.validateParent(n,s);try{if((await R.promises.lstat(i)).isSymbolicLink()){let c=await R.promises.readlink(i),u=U.resolve(U.dirname(o),c),f=await R.promises.realpath(u).catch(()=>u);if(!Te(f,this.canonicalRoot))throw new Error(`EACCES: permission denied, mv '${t}' -> '${s}' would create symlink escaping sandbox`)}}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(c.message?.includes("EACCES")||c.message?.includes("escaping sandbox"))throw l}let a=U.dirname(o);try{await R.promises.mkdir(a,{recursive:!0})}catch(l){this.sanitizeError(l,s,"mv")}try{await R.promises.rename(i,o)}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(c.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}this.sanitizeError(l,t,"mv")}try{if(R.lstatSync(o).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw await R.promises.rename(o,i),new Error(`EACCES: permission denied, mv '${t}' -> '${s}' would create symlinks escaping sandbox`)}catch(l){if(l.message?.includes("EACCES")||l.message?.includes("escaping sandbox"))throw l}}resolvePath(t,s){return Ve(t,s)}getAllPaths(){let t=[];return this.scanDir("/",t),t}sanitizeError(t,s,r){Vt(t,s,r,Ja)}findEscapingSymlinks(t){let s=[];try{let r=R.readdirSync(t);for(let n of r){let i=U.join(t,n);try{let o=R.lstatSync(i);if(o.isSymbolicLink()){let a=R.readlinkSync(i),l=U.resolve(t,a),c;try{c=R.realpathSync(l)}catch{c=l}Te(c,this.canonicalRoot)||s.push(i)}else o.isDirectory()&&s.push(...this.findEscapingSymlinks(i))}catch{}}}catch{}return s}scanDir(t,s){let r=this.toRealPath(t),n;try{n=this.resolveAndValidate(r,t)}catch{return}try{let i=R.readdirSync(n);for(let o of i){let a=t==="/"?`/${o}`:`${t}/${o}`;s.push(a);let l=U.join(n,o);R.lstatSync(l).isDirectory()&&this.scanDir(a,s)}}catch{}}async chmod(t,s){D(t,"chmod");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{let i=this.allowSymlinks?R.constants.O_RDONLY:R.constants.O_RDONLY|R.constants.O_NOFOLLOW,o=await R.promises.open(n,i);try{await o.chmod(s)}finally{await o.close()}}catch(i){let o=i;if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);if(o.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(i,t,"chmod")}}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);D(s,"symlink");let r=this.toRealPath(s),n=this.validateParent(r,s),i=O(s),o=O(U.dirname(i)),a=t.startsWith("/")?O(t):O(o==="/"?`/${t}`:`${o}/${t}`),l=U.join(this.canonicalRoot,a),c=U.dirname(n),u=t.startsWith("/")?l:U.relative(c,l)||".";try{await R.promises.symlink(u,n)}catch(f){if(f.code==="EEXIST")throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.sanitizeError(f,s,"symlink")}}async link(t,s){D(t,"link"),D(s,"link");let r=this.toRealPath(t),n=this.toRealPath(s),i=this.resolveAndValidate(r,t),o=this.resolveAndValidate(n,s);try{await R.promises.link(i,o)}catch(a){let l=a;if(l.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(l.code==="EEXIST")throw new Error(`EEXIST: file already exists, link '${s}'`);if(l.code==="EPERM")throw new Error(`EPERM: operation not permitted, link '${t}'`);this.sanitizeError(a,t,"link")}}async readlink(t){D(t,"readlink");let s=this.toRealPath(t),r=this.validateParent(s,t);try{let n=await R.promises.readlink(r),i=O(t),o=U.dirname(i),a=U.isAbsolute(n)?n:U.resolve(U.dirname(r),n),l=await R.promises.realpath(a).catch(()=>a);if(Te(l,this.canonicalRoot)){let c=l.slice(this.canonicalRoot.length)||"/";return o==="/"?c.startsWith("/")?c.slice(1)||".":c:U.relative(o,c)}return U.basename(n)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(n,t,"readlink")}}async realpath(t){D(t,"realpath");let s=this.toRealPath(t);try{this.resolveAndValidate(s,t)}catch{throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}let r;try{r=await R.promises.realpath(s)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);if(i.code==="ELOOP")throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);this.sanitizeError(n,t,"realpath")}if(Te(r,this.canonicalRoot))return r.slice(this.canonicalRoot.length)||"/";throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}async utimes(t,s,r){D(t,"utimes");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t);try{let o=this.allowSymlinks?R.constants.O_RDONLY:R.constants.O_RDONLY|R.constants.O_NOFOLLOW,a=await R.promises.open(i,o);try{await a.utimes(s,r)}finally{await a.close()}}catch(o){let a=o;if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);if(a.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(o,t,"utimes")}}};var gt=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;signal;timeoutMs;abortController=new AbortController;timeoutId;externalAbortListener;resultPromise;constructor(t,s,r,n,i=!1,o,a){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=n,this.explicitCwd=i,this.signal=o,this.timeoutMs=a,this.setupCancellation(),this.resultPromise=this.execute()}setupCancellation(){if(this.signal&&(this.signal.aborted?this.abortController.abort(this.signal.reason):(this.externalAbortListener=()=>{this.abortController.abort(this.signal?.reason)},this.signal.addEventListener("abort",this.externalAbortListener,{once:!0}))),this.timeoutMs!==void 0){let t=Math.max(0,this.timeoutMs);this.timeoutId=Tt(()=>{this.abortController.abort(new Error(`sandbox command timeout after ${t}ms`))},t)}}cleanupCancellation(){this.timeoutId!==void 0&&(Dt(this.timeoutId),this.timeoutId=void 0),this.signal&&this.externalAbortListener&&(this.signal.removeEventListener("abort",this.externalAbortListener),this.externalAbortListener=void 0)}async execute(){let t={cwd:this.explicitCwd?this.cwd:void 0,env:this.env,signal:this.abortController.signal};try{let s=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=s.exitCode,s}finally{this.cleanupCancellation()}}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){this.abortController.abort(new Error("command killed"))}};var $s=class e{bashEnv;timeoutMs;constructor(t,s){this.bashEnv=t,this.timeoutMs=s}static async create(t){let s=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");s=new yt({root:t.overlayRoot})}let r=new xt({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network,defenseInDepth:t?.defenseInDepth});return new e(r,t?.timeoutMs)}async runCommand(t,s,r){let n,i,o,a,l=!1,c,u;if(typeof t=="object"){let h=t,m=[h.cmd,...h.args??[]];n=As(m),i=h.cwd,o=h.env,a=h.signal,l=h.detached??!1,c=h.stdout,u=h.stderr}else if(Array.isArray(s)){let h=r;n=As([t,...s]),a=h?.signal}else{n=t;let h=s;i=h?.cwd,o=h?.env}let f=i??this.bashEnv.getCwd(),d=i!==void 0,p=new gt(this.bashEnv,n,f,o,d,a,this.timeoutMs);if(l)return p;let y=await p.wait();if(c){let h=await p.stdout();h&&c.write(h)}if(u){let h=await p.stderr();h&&u.write(h)}return y}async writeFiles(t){let s=this.bashEnv.getCwd();for(let[r,n]of Object.entries(t)){let i;typeof n=="string"?i=n:n.encoding==="base64"?i=Buffer.from(n.content,"base64").toString("utf-8"):i=n.content;let o=this.bashEnv.fs.resolvePath(s,r),a=o.substring(0,o.lastIndexOf("/"))||"/";a!=="/"&&await this.bashEnv.fs.mkdir(a,{recursive:!0}),await this.bashEnv.writeFile(o,i)}}async readFile(t,s){let r=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,s){let r=this.bashEnv.fs.resolvePath(this.bashEnv.getCwd(),t);await this.bashEnv.fs.mkdir(r,{recursive:s?.recursive??!1})}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var Ss=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,maxViolationsTotal:t.maxViolationsTotal??1e3,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let s=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(s),this.violations.length>this.options.maxViolationsTotal&&(this.violations.length=this.options.maxViolationsTotal);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(s),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(s)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[s,r]of this.violationsByType){if(r.length===0)continue;let n=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)n.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:s,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(n)})}return t.sort((s,r)=>r.count-s.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function Mi(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
705
+ `)}var Qa=new TextDecoder("utf-8",{fatal:!0});function Fi(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>255)return e;n>127&&(t=!0)}if(!t)return e;let s=new Uint8Array(e.length);for(let r=0;r<e.length;r++)s[r]=e.charCodeAt(r);try{return Qa.decode(s)}catch{return e}}var bs=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new Le,t?.mounts)for(let{mountPoint:s,filesystem:r}of t.mounts)this.mount(s,r)}mount(t,s){this.validateMountPath(t);let r=O(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:s})}unmount(t){let s=O(t);if(!this.mounts.has(s))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(s)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let s=O(t);return this.mounts.has(s)}validateMountPath(t){let s=t.split("/");for(let r of s)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let s of this.mounts.keys())if(s!==t){if(t.startsWith(`${s}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${s}'`);if(s.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${s}'`)}}routePath(t){T(t,"access");let s=O(t),r=null,n=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(s===o)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${o}/`)&&o.length>n&&(r=i,n=o.length)}if(r){let i=s.slice(n);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=O(t),r=s==="/"?"/":`${s}/`,n=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!n.includes(a)&&n.push(a)}return n}async readFile(t,s){let{fs:r,relativePath:n}=this.routePath(t);return r.readFile(n,s)}async readFileBuffer(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readFileBuffer(r)}async writeFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.writeFile(i,s,r)}async appendFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.appendFile(i,s,r)}async exists(t){let s=O(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:n,relativePath:i}=this.routePath(t);return n.exists(i)}async stat(t){let s=O(t),r=this.mounts.get(s);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.stat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let s=O(t),r=this.mounts.get(s);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.lstat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,s){let r=O(t);if(this.mounts.has(r)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&s?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,s)}async readdir(t){let s=O(t),r=new Set,n=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;n=l}let a=this.getChildMountPoints(s);for(let l of a)r.add(l);if(r.size===0&&n&&!this.mounts.has(s))throw n;return Array.from(r).sort()}async rm(t,s){let r=O(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,s)}async cp(t,s,r){let n=this.routePath(t),i=this.routePath(s);return n.fs===i.fs?n.fs.cp(n.relativePath,i.relativePath,r):this.crossMountCopy(t,s,r)}async mv(t,s){let r=O(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let n=this.routePath(t),i=this.routePath(s);if(n.fs===i.fs)return n.fs.mv(n.relativePath,i.relativePath);await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Be(t,s)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let r=s.split("/").filter(Boolean),n="";for(let o of r)n=`${n}/${o}`,t.add(n);let i=this.mounts.get(s);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(s):t.add(`${s}${o}`)}return Array.from(t).sort()}async chmod(t,s){let r=O(t),n=this.mounts.get(r);if(n)return n.filesystem.chmod("/",s);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,s)}async symlink(t,s){let{fs:r,relativePath:n}=this.routePath(s);return r.symlink(t,n)}async link(t,s){let r=this.routePath(t),n=this.routePath(s);if(r.fs!==n.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return r.fs.link(r.relativePath,n.relativePath)}async readlink(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readlink(r)}async realpath(t){let s=O(t);if(this.mounts.get(s))return s;let{fs:n,relativePath:i}=this.routePath(t),o=await n.realpath(i);for(let[a,l]of this.mounts)if(s===a||s.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,s,r){let n=await this.lstat(t);if(n.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,n.mode)}else if(n.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(s,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=Ke(t,o),l=Ke(s,o);await this.crossMountCopy(a,l,r)}}else if(n.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.utimes(i,s,r)}};import*as q from"node:fs";import*as ae from"node:path";var Ja=["ELOOP","EFBIG","EPERM"],el="/home/user/project",yt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=ae.resolve(t.root);let s=t.mountPoint??el;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,zt(this.root,"OverlayFs"),this.canonicalRoot=q.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let r of t)s+=`/${r}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let n=O(t).split("/").filter(Boolean),i="";for(let o of n)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let r=O(t),n=this.getDirname(r);n!=="/"&&this.mkdirSync(n);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(r,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=O(t),r=this.getRelativeToMount(s);if(r===null)return null;let n=ae.join(this.root,r),i=ae.resolve(n);return Te(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Mt(t,this.canonicalRoot):Wt(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=ae.dirname(t),r=this.resolveRealPath_(s);return r===null?null:ae.join(r,ae.basename(t))}sanitizeError(t,s,r){Vt(t,s,r,Ja)}ensureParentDirs(t){let s=rt(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=O(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)return!1;try{return await q.promises.lstat(r),!0}catch{return!1}}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return it(r,n)}async readFileBuffer(t,s=new Set){T(t,"open");let r=O(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let o=this.resolveSymlink(r,n.target);return this.readFileBuffer(o,s)}if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await q.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let c=await q.promises.readlink(i),u=this.realTargetToVirtual(r,c),f=this.resolveSymlink(r,u);return this.readFileBuffer(f,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&o.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${o.size} bytes, max ${this.maxFileReadSize})`);let a=this.allowSymlinks?q.constants.O_RDONLY:q.constants.O_RDONLY|q.constants.O_NOFOLLOW,l=await q.promises.open(i,a);try{let c=await l.readFile();return new Uint8Array(c)}finally{await l.close()}}catch(o){let a=o.code;if(a==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(a==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${t}'`);this.sanitizeError(o,t,"open")}}async writeFile(t,s,r){T(t,"write"),this.assertWritable(`write '${t}'`);let n=O(t);this.ensureParentDirs(n);let i=be(r),o=Ie(s,i);this.memory.set(n,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(n)}async appendFile(t,s,r){T(t,"append"),this.assertWritable(`append '${t}'`);let n=O(t),i=be(r),o=Ie(s,i),a;try{a=await this.readFileBuffer(n)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(n)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){T(t,"stat");let r=O(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let a=this.resolveSymlink(r,n.target);return this.stat(a,s)}let o=0;return n.type==="file"&&(o=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:o,mtime:n.mtime}}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await q.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await q.promises.readlink(i),l=this.realTargetToVirtual(r,a),c=this.resolveSymlink(r,l);return this.stat(c,s)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime}}catch(o){if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){T(t,"lstat");let s=O(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let r=this.memory.get(s);if(r){if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime};let i=0;return r.type==="file"&&(i=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:i,mtime:r.mtime}}let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await q.promises.lstat(n);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}resolveSymlink(t,s){return nt(t,s)}realTargetToVirtual(t,s){let r=Wr(s,this.canonicalRoot);if(r.withinRoot){if(!ae.isAbsolute(s))return s;let n=r.relativePath;return this.mountPoint==="/"?n:`${this.mountPoint}${n}`}return r.safeName}async mkdir(t,s){T(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=O(t);if(await this.existsInOverlay(r)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=rt(r);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(r,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(r)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Map,n=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&n.add(c)}for(let[a,l]of this.memory)if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!n.has(u)&&!c.includes("/",1)&&r.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.resolveRealPath_(this.toRealPath(s));if(o)try{if(!this.allowSymlinks&&(await q.promises.lstat(o)).isSymbolicLink()){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);return r}let a=await q.promises.readdir(o,{withFileTypes:!0});for(let l of a)!n.has(l.name)&&!r.has(l.name)&&r.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(a){if(a.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else a.code!=="ENOTDIR"&&this.sanitizeError(a,t,"scandir")}return r}async resolveForReaddir(t,s=!1){let r=O(t),n=new Set,i=s,o=this.memory.get(r);for(;o&&o.type==="symlink";){if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(r),i=!0,r=this.resolveSymlink(r,o.target),o=this.memory.get(r)}if(o)return{normalized:r,outsideOverlay:!1};if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(r));if(!l)return{normalized:r,outsideOverlay:!0};try{if((await q.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let u=await q.promises.readlink(l),f=this.realTargetToVirtual(r,u),d=this.resolveSymlink(r,f);return this.resolveForReaddir(d,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){T(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){T(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){T(t,"rm"),this.assertWritable(`rm '${t}'`);let r=O(t);if(!await this.existsInOverlay(r)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(r)).isDirectory){let o=await this.readdir(r);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=r==="/"?`/${a}`:`${r}/${a}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.memory.delete(r),this.existsOnRealFs(r)&&this.deleted.add(r)}existsOnRealFs(t){let s=this.toRealPath(t),r=this.resolveRealPathParent_(s);if(!r)return!1;try{return q.lstatSync(r),!0}catch{return!1}}async cp(t,s,r){T(t,"cp"),T(s,"cp"),this.assertWritable(`cp '${s}'`);let n=O(t),i=O(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(n);for(let c of l){let u=n==="/"?`/${c}`:`${n}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){return Be(t,s)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let n=q.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=ae.join(r,i);q.lstatSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){T(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=O(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(r);if(i){i.mode=s;return}let o=await this.stat(r);if(o.isFile){let a=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);T(s,"symlink"),this.assertWritable(`symlink '${s}'`);let r=O(s);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.memory.set(r,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(r)}async link(t,s){T(t,"link"),T(s,"link"),this.assertWritable(`link '${s}'`);let r=O(t),n=O(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(n)}async readlink(t){T(t,"readlink");let s=O(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let r=this.memory.get(s);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await q.promises.readlink(n);if(!ae.isAbsolute(i)){let o=ae.resolve(ae.dirname(n),i),a;try{a=q.realpathSync(o)}catch{a=o}if(!Te(a,this.canonicalRoot))return ae.basename(i)}return this.realTargetToVirtual(s,i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){T(t,"realpath");let s=O(t),r=new Set,n=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(c),d=0,p=40;for(;f&&f.type==="symlink"&&d<p;){if(r.add(c),c=this.resolveSymlink(c,f.target),d++,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(c)}if(d>=p)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(c),h=this.resolveRealPath_(m);if(h)try{if((await q.promises.lstat(h)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let b=await q.promises.readlink(h),v=this.realTargetToVirtual(c,b);return r.add(c),c=this.resolveSymlink(c,v),n(c)}}catch(y){if(y.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(y,t,"realpath")}else if(!this.allowSymlinks){let y=this.resolveRealPathParent_(m);if(y)try{if((await q.promises.lstat(y)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(b){if(b.message?.includes("ENOENT")||b.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(b,t,"realpath")}}}}return c||"/"},i=await n(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,r){T(t,"utimes"),this.assertWritable(`utimes '${t}'`);let n=O(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(n);if(o){o.mtime=r;return}let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:l,mode:a.mode,mtime:r})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:a.mode,mtime:r})}};import*as R from"node:fs";import*as U from"node:path";var tl=["EACCES","escaping sandbox","EFBIG"],Es=class{root;canonicalRoot;maxFileReadSize;allowSymlinks;constructor(t){this.root=U.resolve(t.root),this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,zt(this.root,"ReadWriteFs"),this.canonicalRoot=R.realpathSync(this.root)}resolveAndValidate(t,s){let r=this.allowSymlinks?Mt(t,this.canonicalRoot):Wt(t,this.root,this.canonicalRoot);if(r===null)throw new Error(`EACCES: permission denied, '${s}' resolves outside sandbox`);return r}validateParent(t,s){let r=U.dirname(t),n=this.resolveAndValidate(r,s);return U.join(n,U.basename(t))}toRealPath(t){let s=O(t),r=U.join(this.root,s);return U.resolve(r)}async readFile(t,s){let r=await this.readFileBuffer(t),n=be(s);return it(r,n)}async readFileBuffer(t){T(t,"open");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{let n=this.allowSymlinks?R.constants.O_RDONLY:R.constants.O_RDONLY|R.constants.O_NOFOLLOW,i=await R.promises.open(r,n);try{if(this.maxFileReadSize>0){let a=await i.stat();if(a.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${a.size} bytes, max ${this.maxFileReadSize})`)}let o=await i.readFile();return new Uint8Array(o)}finally{await i.close()}}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.code==="EISDIR")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(i.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(n,t,"open")}}async writeFile(t,s,r){T(t,"write");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t),o=be(r),a=Ie(s,o),l=U.dirname(i);try{await R.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(n,t);let c=this.allowSymlinks?0:R.constants.O_NOFOLLOW,u=R.constants.O_WRONLY|R.constants.O_CREAT|R.constants.O_TRUNC|c,f=await R.promises.open(i,u,438);try{await f.writeFile(a)}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"write")}}async appendFile(t,s,r){T(t,"append");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t),o=be(r),a=Ie(s,o),l=U.dirname(i);try{await R.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(n,t);let c=this.allowSymlinks?0:R.constants.O_NOFOLLOW,u=R.constants.O_WRONLY|R.constants.O_CREAT|R.constants.O_APPEND|c,f=await R.promises.open(i,u,438);try{await f.writeFile(a)}finally{await f.close()}}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"append")}}async exists(t){if(t.includes("\0"))return!1;let s=this.toRealPath(t);try{let r=this.resolveAndValidate(s,t);return await R.promises.access(r),!0}catch{return!1}}async stat(t){T(t,"stat");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{let n=await R.promises.lstat(r);if(!this.allowSymlinks&&n.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){if(n.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(n,t,"stat")}}async lstat(t){T(t,"lstat");let s=this.toRealPath(t),r=this.validateParent(s,t);try{let n=await R.promises.lstat(r);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){if(n.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(n,t,"lstat")}}async mkdir(t,s){T(t,"mkdir");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{await R.promises.mkdir(n,{recursive:s?.recursive})}catch(i){let o=i;if(o.code==="EEXIST")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.sanitizeError(i,t,"mkdir")}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){T(t,"scandir");let s=this.toRealPath(t),r=this.resolveAndValidate(s,t);try{if(!this.allowSymlinks&&(await R.promises.lstat(r)).isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return(await R.promises.readdir(r,{withFileTypes:!0})).map(i=>({name:i.name,isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink()})).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.code==="ENOTDIR")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);this.sanitizeError(n,t,"scandir")}}async rm(t,s){T(t,"rm");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{await R.promises.rm(n,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(i){let o=i;if(o.code==="ENOENT"&&!s?.force)throw new Error(`ENOENT: no such file or directory, rm '${t}'`);if(o.code==="ENOTEMPTY")throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.sanitizeError(i,t,"rm")}}async cp(t,s,r){T(t,"cp"),T(s,"cp");let n=this.toRealPath(t),i=this.toRealPath(s),o=this.resolveAndValidate(n,t),a=this.resolveAndValidate(i,s);try{await R.promises.cp(o,a,{recursive:r?.recursive??!1,filter:async l=>{try{if(R.lstatSync(l).isSymbolicLink()){let u=await R.promises.realpath(l).catch(()=>null);return u===null?!1:Te(u,this.canonicalRoot)}return!0}catch(c){return c.code==="ENOENT"}}})}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(c.code==="EISDIR")throw new Error(`EISDIR: is a directory, cp '${t}'`);this.sanitizeError(l,t,"cp")}}async mv(t,s){T(t,"mv"),T(s,"mv");let r=this.toRealPath(t),n=this.toRealPath(s),i=this.validateParent(r,t),o=this.validateParent(n,s);try{if((await R.promises.lstat(i)).isSymbolicLink()){let c=await R.promises.readlink(i),u=U.resolve(U.dirname(o),c),f=await R.promises.realpath(u).catch(()=>u);if(!Te(f,this.canonicalRoot))throw new Error(`EACCES: permission denied, mv '${t}' -> '${s}' would create symlink escaping sandbox`)}}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(c.message?.includes("EACCES")||c.message?.includes("escaping sandbox"))throw l}let a=U.dirname(o);try{await R.promises.mkdir(a,{recursive:!0})}catch(l){this.sanitizeError(l,s,"mv")}try{await R.promises.rename(i,o)}catch(l){let c=l;if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(c.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}this.sanitizeError(l,t,"mv")}try{if(R.lstatSync(o).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw await R.promises.rename(o,i),new Error(`EACCES: permission denied, mv '${t}' -> '${s}' would create symlinks escaping sandbox`)}catch(l){if(l.message?.includes("EACCES")||l.message?.includes("escaping sandbox"))throw l}}resolvePath(t,s){return Be(t,s)}getAllPaths(){let t=[];return this.scanDir("/",t),t}sanitizeError(t,s,r){Vt(t,s,r,tl)}findEscapingSymlinks(t){let s=[];try{let r=R.readdirSync(t);for(let n of r){let i=U.join(t,n);try{let o=R.lstatSync(i);if(o.isSymbolicLink()){let a=R.readlinkSync(i),l=U.resolve(t,a),c;try{c=R.realpathSync(l)}catch{c=l}Te(c,this.canonicalRoot)||s.push(i)}else o.isDirectory()&&s.push(...this.findEscapingSymlinks(i))}catch{}}}catch{}return s}scanDir(t,s){let r=this.toRealPath(t),n;try{n=this.resolveAndValidate(r,t)}catch{return}try{let i=R.readdirSync(n);for(let o of i){let a=t==="/"?`/${o}`:`${t}/${o}`;s.push(a);let l=U.join(n,o);R.lstatSync(l).isDirectory()&&this.scanDir(a,s)}}catch{}}async chmod(t,s){T(t,"chmod");let r=this.toRealPath(t),n=this.resolveAndValidate(r,t);try{let i=this.allowSymlinks?R.constants.O_RDONLY:R.constants.O_RDONLY|R.constants.O_NOFOLLOW,o=await R.promises.open(n,i);try{await o.chmod(s)}finally{await o.close()}}catch(i){let o=i;if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);if(o.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(i,t,"chmod")}}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);T(s,"symlink");let r=this.toRealPath(s),n=this.validateParent(r,s),i=O(s),o=O(U.dirname(i)),a=t.startsWith("/")?O(t):O(o==="/"?`/${t}`:`${o}/${t}`),l=U.join(this.canonicalRoot,a),c=U.dirname(n),u=t.startsWith("/")?l:U.relative(c,l)||".";try{await R.promises.symlink(u,n)}catch(f){if(f.code==="EEXIST")throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.sanitizeError(f,s,"symlink")}}async link(t,s){T(t,"link"),T(s,"link");let r=this.toRealPath(t),n=this.toRealPath(s),i=this.resolveAndValidate(r,t),o=this.resolveAndValidate(n,s);try{await R.promises.link(i,o)}catch(a){let l=a;if(l.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(l.code==="EEXIST")throw new Error(`EEXIST: file already exists, link '${s}'`);if(l.code==="EPERM")throw new Error(`EPERM: operation not permitted, link '${t}'`);this.sanitizeError(a,t,"link")}}async readlink(t){T(t,"readlink");let s=this.toRealPath(t),r=this.validateParent(s,t);try{let n=await R.promises.readlink(r),i=O(t),o=U.dirname(i),a=U.isAbsolute(n)?n:U.resolve(U.dirname(r),n),l=await R.promises.realpath(a).catch(()=>a);if(Te(l,this.canonicalRoot)){let c=l.slice(this.canonicalRoot.length)||"/";return o==="/"?c.startsWith("/")?c.slice(1)||".":c:U.relative(o,c)}return U.basename(n)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(n,t,"readlink")}}async realpath(t){T(t,"realpath");let s=this.toRealPath(t);try{this.resolveAndValidate(s,t)}catch{throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}let r;try{r=await R.promises.realpath(s)}catch(n){let i=n;if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);if(i.code==="ELOOP")throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);this.sanitizeError(n,t,"realpath")}if(Te(r,this.canonicalRoot))return r.slice(this.canonicalRoot.length)||"/";throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}async utimes(t,s,r){T(t,"utimes");let n=this.toRealPath(t),i=this.resolveAndValidate(n,t);try{let o=this.allowSymlinks?R.constants.O_RDONLY:R.constants.O_RDONLY|R.constants.O_NOFOLLOW,a=await R.promises.open(i,o);try{await a.utimes(s,r)}finally{await a.close()}}catch(o){let a=o;if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);if(a.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(o,t,"utimes")}}};var gt=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;signal;timeoutMs;abortController=new AbortController;timeoutId;externalAbortListener;resultPromise;constructor(t,s,r,n,i=!1,o,a){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=n,this.explicitCwd=i,this.signal=o,this.timeoutMs=a,this.setupCancellation(),this.resultPromise=this.execute()}setupCancellation(){if(this.signal&&(this.signal.aborted?this.abortController.abort(this.signal.reason):(this.externalAbortListener=()=>{this.abortController.abort(this.signal?.reason)},this.signal.addEventListener("abort",this.externalAbortListener,{once:!0}))),this.timeoutMs!==void 0){let t=Math.max(0,this.timeoutMs);this.timeoutId=Dt(()=>{this.abortController.abort(new Error(`sandbox command timeout after ${t}ms`))},t)}}cleanupCancellation(){this.timeoutId!==void 0&&(Tt(this.timeoutId),this.timeoutId=void 0),this.signal&&this.externalAbortListener&&(this.signal.removeEventListener("abort",this.externalAbortListener),this.externalAbortListener=void 0)}async execute(){let t={cwd:this.explicitCwd?this.cwd:void 0,env:this.env,signal:this.abortController.signal};try{let s=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=s.exitCode,s}finally{this.cleanupCancellation()}}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){this.abortController.abort(new Error("command killed"))}};var $s=class e{bashEnv;timeoutMs;constructor(t,s){this.bashEnv=t,this.timeoutMs=s}static async create(t){let s=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");s=new yt({root:t.overlayRoot})}let r=new xt({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network,defenseInDepth:t?.defenseInDepth});return new e(r,t?.timeoutMs)}async runCommand(t,s,r){let n,i,o,a,l=!1,c,u;if(typeof t=="object"){let h=t,y=[h.cmd,...h.args??[]];n=Ps(y),i=h.cwd,o=h.env,a=h.signal,l=h.detached??!1,c=h.stdout,u=h.stderr}else if(Array.isArray(s)){let h=r;n=Ps([t,...s]),a=h?.signal}else{n=t;let h=s;i=h?.cwd,o=h?.env}let f=i??this.bashEnv.getCwd(),d=i!==void 0,p=new gt(this.bashEnv,n,f,o,d,a,this.timeoutMs);if(l)return p;let m=await p.wait();if(c){let h=await p.stdout();h&&c.write(h)}if(u){let h=await p.stderr();h&&u.write(h)}return m}async writeFiles(t){let s=this.bashEnv.getCwd();for(let[r,n]of Object.entries(t)){let i;typeof n=="string"?i=n:n.encoding==="base64"?i=Buffer.from(n.content,"base64").toString("utf-8"):i=n.content;let o=this.bashEnv.fs.resolvePath(s,r),a=o.substring(0,o.lastIndexOf("/"))||"/";a!=="/"&&await this.bashEnv.fs.mkdir(a,{recursive:!0}),await this.bashEnv.writeFile(o,i)}}async readFile(t,s){let r=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,s){let r=this.bashEnv.fs.resolvePath(this.bashEnv.getCwd(),t);await this.bashEnv.fs.mkdir(r,{recursive:s?.recursive??!1})}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var Ss=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,maxViolationsTotal:t.maxViolationsTotal??1e3,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let s=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(s),this.violations.length>this.options.maxViolationsTotal&&(this.violations.length=this.options.maxViolationsTotal);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(s),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(s)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[s,r]of this.violationsByType){if(r.length===0)continue;let n=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)n.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:s,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(n)})}return t.sort((s,r)=>r.count-s.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function Mi(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
706
706
  Type: ${e.type}`,`
707
707
  Path: ${e.path}`,`
708
708
  Message: ${e.message}`,e.executionId?`
709
- ExecutionId: ${e.executionId}`:"")}}var Tr=class{plugins=[];use(t){return this.plugins.push(t),this}transform(t){let s=ue(t),r=Object.create(null);for(let n of this.plugins){let i=n.transform({ast:s,metadata:r});s=i.ast,i.metadata&&(r=Et(r,i.metadata))}return{script:Ot(s),ast:s,metadata:r}}};var Dr=class{name="command-collector";transform(t){let s=new Set;return this.walkScript(t.ast,s),{ast:t.ast,metadata:{commands:[...s].sort()}}}walkScript(t,s){for(let r of t.statements)this.walkStatement(r,s)}walkStatement(t,s){for(let r of t.pipelines)this.walkPipeline(r,s)}walkPipeline(t,s){for(let r of t.commands)this.walkCommand(r,s)}walkCommand(t,s){switch(t.type){case"SimpleCommand":if(t.name){let r=this.extractName(t.name);r&&s.add(r)}t.name&&this.walkWordParts(t.name.parts,s);for(let r of t.args)this.walkWordParts(r.parts,s);for(let r of t.assignments)if(r.value&&this.walkWordParts(r.value.parts,s),r.array)for(let n of r.array)this.walkWordParts(n.parts,s);break;case"If":for(let r of t.clauses){for(let n of r.condition)this.walkStatement(n,s);for(let n of r.body)this.walkStatement(n,s)}if(t.elseBody)for(let r of t.elseBody)this.walkStatement(r,s);break;case"For":if(t.words)for(let r of t.words)this.walkWordParts(r.parts,s);for(let r of t.body)this.walkStatement(r,s);break;case"CStyleFor":for(let r of t.body)this.walkStatement(r,s);break;case"While":case"Until":for(let r of t.condition)this.walkStatement(r,s);for(let r of t.body)this.walkStatement(r,s);break;case"Case":this.walkWordParts(t.word.parts,s);for(let r of t.items)for(let n of r.body)this.walkStatement(n,s);break;case"Subshell":case"Group":for(let r of t.body)this.walkStatement(r,s);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":this.walkCommand(t.body,s);break}}walkWordParts(t,s){for(let r of t)switch(r.type){case"CommandSubstitution":this.walkScript(r.body,s);break;case"ProcessSubstitution":this.walkScript(r.body,s);break;case"DoubleQuoted":this.walkWordParts(r.parts,s);break;case"ParameterExpansion":r.operation&&this.walkParameterOp(r.operation,s);break}}walkParameterOp(t,s){switch(t.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":this.walkWordParts(t.word.parts,s);break;case"ErrorIfUnset":t.word&&this.walkWordParts(t.word.parts,s);break;case"PatternRemoval":this.walkWordParts(t.pattern.parts,s);break;case"PatternReplacement":this.walkWordParts(t.pattern.parts,s),t.replacement&&this.walkWordParts(t.replacement.parts,s);break;case"CaseModification":t.pattern&&this.walkWordParts(t.pattern.parts,s);break;case"Indirection":t.innerOp&&this.walkParameterOp(t.innerOp,s);break}}extractName(t){return t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}};var Rr=class{name="tee";options;counter=0;constructor(t){this.options=t}transform(t){let s=[],r=this.options.timestamp??new Date;return{ast:this.transformScript(t.ast,s,r),metadata:{teeFiles:s}}}formatTimestamp(t){return t.toISOString().replace(/:/g,"-")}generateStdoutPath(t,s,r){let n=this.formatTimestamp(r),i=String(t).padStart(3,"0");return`${this.options.outputDir}/${n}-${i}-${s}.stdout.txt`}transformScript(t,s,r){return{...t,statements:t.statements.map(n=>this.transformStatement(n,s,r))}}transformStatement(t,s,r){let n=[],i=[];for(let o=0;o<t.pipelines.length;o++){let a=t.pipelines[o];o>0&&i.push(t.operators[o-1]);let l=this.transformPipeline(a,s,r);if(n.push(l.pipeline),l.origCmdNewIndices!==null){let c=l.origCmdNewIndices;i.push(";"),n.push(this.makePipestatusSave(c)),i.push(";"),n.push(this.makePipestatusRestore(c.length,l.negated))}}return{...t,pipelines:n,operators:i}}transformPipeline(t,s,r){if(t.commands.length<=1)return{pipeline:t,origCmdNewIndices:null,negated:!1};let n=[],i=[],o=[],a=!1;for(let l=0;l<t.commands.length;l++){let c=t.commands[l],u=l===t.commands.length-1;if(c.type!=="SimpleCommand"||!c.name||!this.shouldTarget(c)){o.push(n.length),n.push(c),u||i.push(t.pipeStderr?.[l]??!1);continue}let f=this.getCommandName(c.name)??"unknown",d=this.counter++,p=this.generateStdoutPath(d,f,r),y=this.makeTeeCommand(p),h=this.serializeCommand(c);s.push({commandIndex:d,commandName:f,command:h,stdoutFile:p}),o.push(n.length),n.push(c),i.push(t.pipeStderr?.[l]??!1),n.push(y),u||i.push(!1),a=!0}return a?{pipeline:{...t,negated:!1,commands:n,pipeStderr:i.length>0?i:void 0},origCmdNewIndices:o,negated:t.negated}:{pipeline:t,origCmdNewIndices:null,negated:!1}}makePipestatusSave(t){return{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:t.map((s,r)=>({type:"Assignment",name:`__tps${r}`,value:{type:"Word",parts:[{type:"ParameterExpansion",parameter:`PIPESTATUS[${s}]`,operation:null}]},append:!1,array:null})),name:null,args:[],redirections:[]}],negated:!1}}makePipestatusRestore(t,s){let r=[];for(let n=0;n<t;n++)r.push({type:"Subshell",body:[{type:"Statement",pipelines:[{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"exit"}]},args:[{type:"Word",parts:[{type:"ParameterExpansion",parameter:`__tps${n}`,operation:null}]}],redirections:[]}],negated:!1}],operators:[],background:!1}],redirections:[]});return{type:"Pipeline",commands:r,negated:s}}shouldTarget(t){if(!this.options.targetCommandPattern)return!0;let s=this.getCommandName(t.name);return s!==null&&this.options.targetCommandPattern.test(s)}getCommandName(t){return t&&t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}serializeCommand(t){let s=[];t.name&&s.push(ie(t.name));for(let r of t.args)s.push(ie(r));return s.join(" ")}makeTeeCommand(t){return{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"tee"}]},args:[{type:"Word",parts:[{type:"Literal",value:t}]}],redirections:[]}}};export{xt as Bash,Tr as BashTransformPipeline,Dr as CommandCollectorPlugin,pe as DefenseInDepthBox,Ie as InMemoryFs,bs as MountableFs,Ze as NetworkAccessDeniedError,yt as OverlayFs,Es as ReadWriteFs,mt as RedirectNotAllowedError,$s as Sandbox,gt as SandboxCommand,Fe as SecurityViolationError,Ss as SecurityViolationLogger,Rr as TeePlugin,pt as TooManyRedirectsError,Mi as createConsoleViolationCallback,Hi as defineCommand,Bi as getCommandNames,ji as getNetworkCommandNames,Ui as getPythonCommandNames,ue as parse,Ot as serialize};
709
+ ExecutionId: ${e.executionId}`:"")}}var Tr=class{plugins=[];use(t){return this.plugins.push(t),this}transform(t){let s=ue(t),r=Object.create(null);for(let n of this.plugins){let i=n.transform({ast:s,metadata:r});s=i.ast,i.metadata&&(r=Et(r,i.metadata))}return{script:Ot(s),ast:s,metadata:r}}};var Rr=class{name="command-collector";transform(t){let s=new Set;return this.walkScript(t.ast,s),{ast:t.ast,metadata:{commands:[...s].sort()}}}walkScript(t,s){for(let r of t.statements)this.walkStatement(r,s)}walkStatement(t,s){for(let r of t.pipelines)this.walkPipeline(r,s)}walkPipeline(t,s){for(let r of t.commands)this.walkCommand(r,s)}walkCommand(t,s){switch(t.type){case"SimpleCommand":if(t.name){let r=this.extractName(t.name);r&&s.add(r)}t.name&&this.walkWordParts(t.name.parts,s);for(let r of t.args)this.walkWordParts(r.parts,s);for(let r of t.assignments)if(r.value&&this.walkWordParts(r.value.parts,s),r.array)for(let n of r.array)this.walkWordParts(n.parts,s);break;case"If":for(let r of t.clauses){for(let n of r.condition)this.walkStatement(n,s);for(let n of r.body)this.walkStatement(n,s)}if(t.elseBody)for(let r of t.elseBody)this.walkStatement(r,s);break;case"For":if(t.words)for(let r of t.words)this.walkWordParts(r.parts,s);for(let r of t.body)this.walkStatement(r,s);break;case"CStyleFor":for(let r of t.body)this.walkStatement(r,s);break;case"While":case"Until":for(let r of t.condition)this.walkStatement(r,s);for(let r of t.body)this.walkStatement(r,s);break;case"Case":this.walkWordParts(t.word.parts,s);for(let r of t.items)for(let n of r.body)this.walkStatement(n,s);break;case"Subshell":case"Group":for(let r of t.body)this.walkStatement(r,s);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":this.walkCommand(t.body,s);break}}walkWordParts(t,s){for(let r of t)switch(r.type){case"CommandSubstitution":this.walkScript(r.body,s);break;case"ProcessSubstitution":this.walkScript(r.body,s);break;case"DoubleQuoted":this.walkWordParts(r.parts,s);break;case"ParameterExpansion":r.operation&&this.walkParameterOp(r.operation,s);break}}walkParameterOp(t,s){switch(t.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":this.walkWordParts(t.word.parts,s);break;case"ErrorIfUnset":t.word&&this.walkWordParts(t.word.parts,s);break;case"PatternRemoval":this.walkWordParts(t.pattern.parts,s);break;case"PatternReplacement":this.walkWordParts(t.pattern.parts,s),t.replacement&&this.walkWordParts(t.replacement.parts,s);break;case"CaseModification":t.pattern&&this.walkWordParts(t.pattern.parts,s);break;case"Indirection":t.innerOp&&this.walkParameterOp(t.innerOp,s);break}}extractName(t){return t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}};var Ir=class{name="tee";options;counter=0;constructor(t){this.options=t}transform(t){let s=[],r=this.options.timestamp??new Date;return{ast:this.transformScript(t.ast,s,r),metadata:{teeFiles:s}}}formatTimestamp(t){return t.toISOString().replace(/:/g,"-")}generateStdoutPath(t,s,r){let n=this.formatTimestamp(r),i=String(t).padStart(3,"0");return`${this.options.outputDir}/${n}-${i}-${s}.stdout.txt`}transformScript(t,s,r){return{...t,statements:t.statements.map(n=>this.transformStatement(n,s,r))}}transformStatement(t,s,r){let n=[],i=[];for(let o=0;o<t.pipelines.length;o++){let a=t.pipelines[o];o>0&&i.push(t.operators[o-1]);let l=this.transformPipeline(a,s,r);if(n.push(l.pipeline),l.origCmdNewIndices!==null){let c=l.origCmdNewIndices;i.push(";"),n.push(this.makePipestatusSave(c)),i.push(";"),n.push(this.makePipestatusRestore(c.length,l.negated))}}return{...t,pipelines:n,operators:i}}transformPipeline(t,s,r){if(t.commands.length<=1)return{pipeline:t,origCmdNewIndices:null,negated:!1};let n=[],i=[],o=[],a=!1;for(let l=0;l<t.commands.length;l++){let c=t.commands[l],u=l===t.commands.length-1;if(c.type!=="SimpleCommand"||!c.name||!this.shouldTarget(c)){o.push(n.length),n.push(c),u||i.push(t.pipeStderr?.[l]??!1);continue}let f=this.getCommandName(c.name)??"unknown",d=this.counter++,p=this.generateStdoutPath(d,f,r),m=this.makeTeeCommand(p),h=this.serializeCommand(c);s.push({commandIndex:d,commandName:f,command:h,stdoutFile:p}),o.push(n.length),n.push(c),i.push(t.pipeStderr?.[l]??!1),n.push(m),u||i.push(!1),a=!0}return a?{pipeline:{...t,negated:!1,commands:n,pipeStderr:i.length>0?i:void 0},origCmdNewIndices:o,negated:t.negated}:{pipeline:t,origCmdNewIndices:null,negated:!1}}makePipestatusSave(t){return{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:t.map((s,r)=>({type:"Assignment",name:`__tps${r}`,value:{type:"Word",parts:[{type:"ParameterExpansion",parameter:`PIPESTATUS[${s}]`,operation:null}]},append:!1,array:null})),name:null,args:[],redirections:[]}],negated:!1}}makePipestatusRestore(t,s){let r=[];for(let n=0;n<t;n++)r.push({type:"Subshell",body:[{type:"Statement",pipelines:[{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"exit"}]},args:[{type:"Word",parts:[{type:"ParameterExpansion",parameter:`__tps${n}`,operation:null}]}],redirections:[]}],negated:!1}],operators:[],background:!1}],redirections:[]});return{type:"Pipeline",commands:r,negated:s}}shouldTarget(t){if(!this.options.targetCommandPattern)return!0;let s=this.getCommandName(t.name);return s!==null&&this.options.targetCommandPattern.test(s)}getCommandName(t){return t&&t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}serializeCommand(t){let s=[];t.name&&s.push(ie(t.name));for(let r of t.args)s.push(ie(r));return s.join(" ")}makeTeeCommand(t){return{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"tee"}]},args:[{type:"Word",parts:[{type:"Literal",value:t}]}],redirections:[]}}};export{xt as Bash,Tr as BashTransformPipeline,Rr as CommandCollectorPlugin,pe as DefenseInDepthBox,Le as InMemoryFs,bs as MountableFs,Ae as NetworkAccessDeniedError,yt as OverlayFs,Es as ReadWriteFs,mt as RedirectNotAllowedError,$s as Sandbox,gt as SandboxCommand,Me as SecurityViolationError,Ss as SecurityViolationLogger,Ir as TeePlugin,pt as TooManyRedirectsError,Mi as createConsoleViolationCallback,Hi as defineCommand,Bi as getCommandNames,ji as getNetworkCommandNames,Ui as getPythonCommandNames,ue as parse,Ot as serialize};