just-bash 2.12.7 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +89 -3
  2. package/dist/AGENTS.md +1 -1
  3. package/dist/Bash.d.ts +17 -0
  4. package/dist/bin/chunks/{awk2-EB5SCHVW.js → awk2-VTJMI54B.js} +1 -1
  5. package/dist/bin/chunks/chunk-3YMCKZTY.js +14 -0
  6. package/dist/bin/chunks/{chunk-O5B6WWQQ.js → chunk-A3HQTYHR.js} +1 -1
  7. package/dist/bin/chunks/chunk-AAW7UMPO.js +9 -0
  8. package/dist/bin/chunks/{chunk-ROMKUVHI.js → chunk-AXWFPG37.js} +1 -1
  9. package/dist/bin/chunks/{chunk-BBRVF6XE.js → chunk-B3RU2PUI.js} +27 -27
  10. package/dist/bin/chunks/chunk-CQG2HEAL.js +5 -0
  11. package/dist/bin/chunks/chunk-DOXYBGNA.js +12 -0
  12. package/dist/bin/chunks/{chunk-PIBXJ3VX.js → chunk-GR23MPTT.js} +1 -1
  13. package/dist/bin/chunks/{chunk-35JD7YEM.js → chunk-HJEHIH4P.js} +13 -13
  14. package/dist/bin/chunks/{chunk-ZNPXCE5B.js → chunk-LGF54XJQ.js} +1 -1
  15. package/dist/bin/{shell/chunks/chunk-5MUD3WB2.js → chunks/chunk-MO4RPBN2.js} +1 -1
  16. package/dist/bin/chunks/chunk-N6KA6G3Q.js +11 -0
  17. package/dist/bin/{shell/chunks/chunk-JX6YLHDX.js → chunks/chunk-OOJCYVYF.js} +1 -1
  18. package/dist/bin/{shell/chunks/chunk-2BC3N3L2.js → chunks/chunk-ORUYSLP4.js} +4 -4
  19. package/dist/bin/{shell/chunks/chunk-OLN6BSO3.js → chunks/chunk-SDLWFYVT.js} +2 -2
  20. package/dist/bin/chunks/{chunk-STOAUD75.js → chunk-THNL3XFF.js} +8 -8
  21. package/dist/bin/chunks/{chunk-DHFZMFUW.js → chunk-UPUMZYZE.js} +1 -1
  22. package/dist/bin/chunks/{chunk-ZJGIBTWD.js → chunk-V7ZOPVQS.js} +1 -1
  23. package/dist/bin/chunks/{chunk-IRCLOW32.js → chunk-VVFGRIJZ.js} +1 -1
  24. package/dist/bin/chunks/{chunk-QTII62YM.js → chunk-WS6P4H4S.js} +1 -1
  25. package/dist/bin/{shell/chunks/chunk-NTKUVXEL.js → chunks/chunk-YU6OGPZR.js} +2 -2
  26. package/dist/bin/{shell/chunks/chunk-PLKGKTIS.js → chunks/chunk-ZO5PSLKR.js} +2 -2
  27. package/dist/bin/{shell/chunks/curl-3GMIPMCI.js → chunks/curl-B64SIJOD.js} +1 -1
  28. package/dist/bin/chunks/env-NTPN5QYM.js +2 -0
  29. package/dist/bin/{shell/chunks/expansion-JBCP2CHQ.js → chunks/expansion-2RO5M3QC.js} +1 -1
  30. package/dist/bin/chunks/{find-MTLF23HX.js → find-GAYRV4IF.js} +1 -1
  31. package/dist/bin/chunks/flag-coverage-IRM4GISL.js +2 -0
  32. package/dist/bin/{shell/chunks/help-4H52JYYC.js → chunks/help-DVG4AAGE.js} +1 -1
  33. package/dist/bin/chunks/{jq-P457LMHU.js → jq-V7FYGIKO.js} +1 -1
  34. package/dist/bin/chunks/js-exec-YGYYZEEQ.js +97 -0
  35. package/dist/bin/chunks/js-exec-worker.js +4368 -0
  36. package/dist/bin/chunks/python3-EIXZW3LO.js +12 -0
  37. package/dist/bin/chunks/rg-C6KMBFNG.js +2 -0
  38. package/dist/bin/{shell/chunks/sed-UV2LTNVK.js → chunks/sed-3C6IBX5L.js} +1 -1
  39. package/dist/bin/chunks/sleep-ND6FZRZ4.js +2 -0
  40. package/dist/bin/chunks/{sqlite3-B3P3OMPI.js → sqlite3-TZEE4O7U.js} +1 -1
  41. package/dist/bin/chunks/tar-TOWX2TDU.js +2 -0
  42. package/dist/bin/{shell/chunks/time-GZSHCM77.js → chunks/time-VSKBXRQH.js} +1 -1
  43. package/dist/bin/chunks/timeout-Z24MNWOP.js +2 -0
  44. package/dist/bin/chunks/worker.js +168 -33
  45. package/dist/bin/chunks/xan-MOZFJGMY.js +2 -0
  46. package/dist/bin/chunks/xargs-SCYIFXOW.js +2 -0
  47. package/dist/bin/chunks/yq-JJLSDDST.js +2 -0
  48. package/dist/bin/just-bash.js +211 -210
  49. package/dist/bin/shell/chunks/{awk2-EB5SCHVW.js → awk2-VTJMI54B.js} +1 -1
  50. package/dist/bin/shell/chunks/chunk-3YMCKZTY.js +14 -0
  51. package/dist/bin/shell/chunks/{chunk-O5B6WWQQ.js → chunk-A3HQTYHR.js} +1 -1
  52. package/dist/bin/shell/chunks/chunk-AAW7UMPO.js +9 -0
  53. package/dist/bin/shell/chunks/{chunk-ROMKUVHI.js → chunk-AXWFPG37.js} +1 -1
  54. package/dist/bin/shell/chunks/{chunk-BBRVF6XE.js → chunk-B3RU2PUI.js} +27 -27
  55. package/dist/bin/shell/chunks/chunk-CQG2HEAL.js +5 -0
  56. package/dist/bin/shell/chunks/chunk-DOXYBGNA.js +12 -0
  57. package/dist/bin/shell/chunks/{chunk-PIBXJ3VX.js → chunk-GR23MPTT.js} +1 -1
  58. package/dist/bin/shell/chunks/{chunk-35JD7YEM.js → chunk-HJEHIH4P.js} +13 -13
  59. package/dist/bin/shell/chunks/{chunk-ZNPXCE5B.js → chunk-LGF54XJQ.js} +1 -1
  60. package/dist/bin/{chunks/chunk-5MUD3WB2.js → shell/chunks/chunk-MO4RPBN2.js} +1 -1
  61. package/dist/bin/shell/chunks/chunk-N6KA6G3Q.js +11 -0
  62. package/dist/bin/{chunks/chunk-JX6YLHDX.js → shell/chunks/chunk-OOJCYVYF.js} +1 -1
  63. package/dist/bin/{chunks/chunk-2BC3N3L2.js → shell/chunks/chunk-ORUYSLP4.js} +4 -4
  64. package/dist/bin/{chunks/chunk-OLN6BSO3.js → shell/chunks/chunk-SDLWFYVT.js} +2 -2
  65. package/dist/bin/shell/chunks/{chunk-STOAUD75.js → chunk-THNL3XFF.js} +8 -8
  66. package/dist/bin/shell/chunks/{chunk-DHFZMFUW.js → chunk-UPUMZYZE.js} +1 -1
  67. package/dist/bin/shell/chunks/{chunk-ZJGIBTWD.js → chunk-V7ZOPVQS.js} +1 -1
  68. package/dist/bin/shell/chunks/{chunk-IRCLOW32.js → chunk-VVFGRIJZ.js} +1 -1
  69. package/dist/bin/shell/chunks/{chunk-QTII62YM.js → chunk-WS6P4H4S.js} +1 -1
  70. package/dist/bin/{chunks/chunk-NTKUVXEL.js → shell/chunks/chunk-YU6OGPZR.js} +2 -2
  71. package/dist/bin/{chunks/chunk-PLKGKTIS.js → shell/chunks/chunk-ZO5PSLKR.js} +2 -2
  72. package/dist/bin/{chunks/curl-3GMIPMCI.js → shell/chunks/curl-B64SIJOD.js} +1 -1
  73. package/dist/bin/shell/chunks/env-NTPN5QYM.js +2 -0
  74. package/dist/bin/{chunks/expansion-JBCP2CHQ.js → shell/chunks/expansion-2RO5M3QC.js} +1 -1
  75. package/dist/bin/shell/chunks/{find-MTLF23HX.js → find-GAYRV4IF.js} +1 -1
  76. package/dist/bin/shell/chunks/flag-coverage-IRM4GISL.js +2 -0
  77. package/dist/bin/{chunks/help-4H52JYYC.js → shell/chunks/help-DVG4AAGE.js} +1 -1
  78. package/dist/bin/shell/chunks/{jq-P457LMHU.js → jq-V7FYGIKO.js} +1 -1
  79. package/dist/bin/shell/chunks/js-exec-VYG74FQ3.js +97 -0
  80. package/dist/bin/shell/chunks/python3-WO3WFGMS.js +12 -0
  81. package/dist/bin/shell/chunks/rg-C6KMBFNG.js +2 -0
  82. package/dist/bin/{chunks/sed-UV2LTNVK.js → shell/chunks/sed-3C6IBX5L.js} +1 -1
  83. package/dist/bin/shell/chunks/sleep-ND6FZRZ4.js +2 -0
  84. package/dist/bin/shell/chunks/{sqlite3-B3P3OMPI.js → sqlite3-TZEE4O7U.js} +1 -1
  85. package/dist/bin/shell/chunks/tar-TOWX2TDU.js +2 -0
  86. package/dist/bin/{chunks/time-GZSHCM77.js → shell/chunks/time-VSKBXRQH.js} +1 -1
  87. package/dist/bin/shell/chunks/timeout-Z24MNWOP.js +2 -0
  88. package/dist/bin/shell/chunks/xan-MOZFJGMY.js +2 -0
  89. package/dist/bin/shell/chunks/xargs-SCYIFXOW.js +2 -0
  90. package/dist/bin/shell/chunks/yq-JJLSDDST.js +2 -0
  91. package/dist/bin/shell/shell.js +208 -208
  92. package/dist/bundle/browser.js +594 -594
  93. package/dist/bundle/chunks/{awk2-VPBKDCSO.js → awk2-POPGKRAI.js} +1 -1
  94. package/dist/bundle/chunks/{chunk-X36DXRVC.js → chunk-24IMIIXA.js} +1 -1
  95. package/dist/bundle/chunks/{chunk-72EQZSVH.js → chunk-5QMZ5MUS.js} +2 -2
  96. package/dist/bundle/chunks/{chunk-DZZS6SJP.js → chunk-7TSDKFEO.js} +1 -1
  97. package/dist/bundle/chunks/{chunk-7YDOWJ75.js → chunk-A5O5YHGN.js} +1 -1
  98. package/dist/bundle/chunks/{chunk-KZ7BI7TV.js → chunk-BBXLRYSX.js} +2 -2
  99. package/dist/bundle/chunks/{chunk-TRD56HID.js → chunk-FEIOJCZD.js} +1 -1
  100. package/dist/bundle/chunks/{chunk-X3CVFNQZ.js → chunk-GOV5EKKI.js} +1 -1
  101. package/dist/bundle/chunks/{chunk-AUD37QB3.js → chunk-IUWCBQII.js} +1 -1
  102. package/dist/bundle/chunks/chunk-JCMONG3T.js +13 -0
  103. package/dist/bundle/chunks/{chunk-D2FZX7A2.js → chunk-LPQPILI2.js} +8 -8
  104. package/dist/bundle/chunks/chunk-MJWMXCEJ.js +10 -0
  105. package/dist/bundle/chunks/{chunk-2GOYXRRP.js → chunk-MLXIYONF.js} +4 -4
  106. package/dist/bundle/chunks/chunk-NAERJDUW.js +8 -0
  107. package/dist/bundle/chunks/{chunk-OKEHYWBE.js → chunk-NYQYO467.js} +13 -13
  108. package/dist/bundle/chunks/{chunk-C7ZTXK5C.js → chunk-O2DBFL6Z.js} +1 -1
  109. package/dist/bundle/chunks/{chunk-VSWTMNI3.js → chunk-OARHFVLG.js} +2 -2
  110. package/dist/bundle/chunks/{chunk-U5FWK6IA.js → chunk-RUF7WQ7U.js} +1 -1
  111. package/dist/bundle/chunks/chunk-TOMNU26N.js +4 -0
  112. package/dist/bundle/chunks/{chunk-4YPFHVJJ.js → chunk-UNYNJIFU.js} +27 -27
  113. package/dist/bundle/chunks/{chunk-VBF2GWEM.js → chunk-V3IEYMEA.js} +1 -1
  114. package/dist/bundle/chunks/chunk-YTNYSM6T.js +11 -0
  115. package/dist/bundle/chunks/{chunk-BED5HSP2.js → chunk-ZXL7TQLN.js} +1 -1
  116. package/dist/bundle/chunks/{curl-KM2ZAUR6.js → curl-FCIO57JJ.js} +1 -1
  117. package/dist/bundle/chunks/env-5EPCWSXR.js +1 -0
  118. package/dist/bundle/chunks/{expansion-XG7G47TX.js → expansion-ENLSRCXJ.js} +1 -1
  119. package/dist/bundle/chunks/{find-DOIVMX6X.js → find-TPUOAIUQ.js} +1 -1
  120. package/dist/bundle/chunks/flag-coverage-SPT2DN2I.js +1 -0
  121. package/dist/bundle/chunks/{help-IA5CMGR4.js → help-VVWX7SA5.js} +1 -1
  122. package/dist/bundle/chunks/{jq-NLRWI2Q6.js → jq-DIRZBOTX.js} +1 -1
  123. package/dist/bundle/chunks/js-exec-R2LSP7M4.js +96 -0
  124. package/dist/bundle/chunks/js-exec-worker.js +4368 -0
  125. package/dist/bundle/chunks/python3-DH2SBOI3.js +11 -0
  126. package/dist/bundle/chunks/rg-FOQSCCX3.js +1 -0
  127. package/dist/bundle/chunks/{sed-2BILOGNL.js → sed-DISNI47D.js} +1 -1
  128. package/dist/bundle/chunks/sleep-VZFPZFWA.js +1 -0
  129. package/dist/bundle/chunks/{sqlite3-VEDNWJL6.js → sqlite3-7F22DOIP.js} +1 -1
  130. package/dist/bundle/chunks/tar-232RCEFK.js +1 -0
  131. package/dist/bundle/chunks/{time-XL42Z4U5.js → time-FABCOJJU.js} +1 -1
  132. package/dist/bundle/chunks/timeout-VRKMCG72.js +1 -0
  133. package/dist/bundle/chunks/worker.js +168 -33
  134. package/dist/bundle/chunks/xan-BXDXYEIB.js +1 -0
  135. package/dist/bundle/chunks/xargs-I6EZUCYF.js +1 -0
  136. package/dist/bundle/chunks/yq-XMVSIL6Z.js +1 -0
  137. package/dist/bundle/index.cjs +976 -877
  138. package/dist/bundle/index.js +245 -245
  139. package/dist/commands/js-exec/fetch-polyfill.d.ts +6 -0
  140. package/dist/commands/js-exec/js-exec.d.ts +11 -0
  141. package/dist/commands/js-exec/module-shims.d.ts +29 -0
  142. package/dist/commands/js-exec/path-polyfill.d.ts +6 -0
  143. package/dist/commands/js-exec/worker.d.ts +30 -0
  144. package/dist/commands/python3/worker.d.ts +1 -0
  145. package/dist/commands/query-engine/safe-object.d.ts +11 -0
  146. package/dist/commands/registry.d.ts +13 -2
  147. package/dist/commands/{python3/fs-bridge-handler.d.ts → worker-bridge/bridge-handler.d.ts} +25 -8
  148. package/dist/commands/{python3 → worker-bridge}/protocol.d.ts +6 -3
  149. package/dist/commands/{python3/sync-fs-backend.d.ts → worker-bridge/sync-backend.d.ts} +25 -4
  150. package/dist/index.d.cts +3 -3
  151. package/dist/index.d.ts +3 -3
  152. package/dist/interpreter/interpreter.d.ts +3 -0
  153. package/dist/interpreter/types.d.ts +8 -0
  154. package/dist/limits.d.ts +3 -1
  155. package/dist/network/allow-list/shared.d.ts +8 -0
  156. package/dist/network/types.d.ts +15 -1
  157. package/dist/types.d.ts +12 -0
  158. package/package.json +12 -11
  159. package/dist/bin/chunks/chunk-47HZU3SY.js +0 -5
  160. package/dist/bin/chunks/chunk-N4EU64Y4.js +0 -9
  161. package/dist/bin/chunks/chunk-VCKKRS7V.js +0 -12
  162. package/dist/bin/chunks/chunk-VIYJJTN2.js +0 -14
  163. package/dist/bin/chunks/env-HOVBNLUR.js +0 -2
  164. package/dist/bin/chunks/flag-coverage-7GOZYXJT.js +0 -2
  165. package/dist/bin/chunks/python3-45TMCI4M.js +0 -17
  166. package/dist/bin/chunks/rg-34GE6REQ.js +0 -2
  167. package/dist/bin/chunks/sleep-3WHM7JMW.js +0 -2
  168. package/dist/bin/chunks/tar-SO3XDDIW.js +0 -2
  169. package/dist/bin/chunks/timeout-BYB3L2JA.js +0 -2
  170. package/dist/bin/chunks/xan-FZB7FHX3.js +0 -2
  171. package/dist/bin/chunks/xargs-GBL6PZ2K.js +0 -2
  172. package/dist/bin/chunks/yq-H7D2U3HS.js +0 -2
  173. package/dist/bin/shell/chunks/chunk-47HZU3SY.js +0 -5
  174. package/dist/bin/shell/chunks/chunk-N4EU64Y4.js +0 -9
  175. package/dist/bin/shell/chunks/chunk-VCKKRS7V.js +0 -12
  176. package/dist/bin/shell/chunks/chunk-VIYJJTN2.js +0 -14
  177. package/dist/bin/shell/chunks/env-HOVBNLUR.js +0 -2
  178. package/dist/bin/shell/chunks/flag-coverage-7GOZYXJT.js +0 -2
  179. package/dist/bin/shell/chunks/python3-IV3DBMHM.js +0 -17
  180. package/dist/bin/shell/chunks/rg-34GE6REQ.js +0 -2
  181. package/dist/bin/shell/chunks/sleep-3WHM7JMW.js +0 -2
  182. package/dist/bin/shell/chunks/tar-SO3XDDIW.js +0 -2
  183. package/dist/bin/shell/chunks/timeout-BYB3L2JA.js +0 -2
  184. package/dist/bin/shell/chunks/xan-FZB7FHX3.js +0 -2
  185. package/dist/bin/shell/chunks/xargs-GBL6PZ2K.js +0 -2
  186. package/dist/bin/shell/chunks/yq-H7D2U3HS.js +0 -2
  187. package/dist/bundle/chunks/chunk-3RA5L262.js +0 -8
  188. package/dist/bundle/chunks/chunk-6HBBXB3L.js +0 -11
  189. package/dist/bundle/chunks/chunk-EX62JIX3.js +0 -13
  190. package/dist/bundle/chunks/chunk-ZSJYNBAF.js +0 -4
  191. package/dist/bundle/chunks/env-XZY4LKEO.js +0 -1
  192. package/dist/bundle/chunks/flag-coverage-NT32EG6Q.js +0 -1
  193. package/dist/bundle/chunks/python3-G2ZUJAQL.js +0 -16
  194. package/dist/bundle/chunks/rg-RAICUFGG.js +0 -1
  195. package/dist/bundle/chunks/sleep-IUBP5GMH.js +0 -1
  196. package/dist/bundle/chunks/tar-LKO7DKAK.js +0 -1
  197. package/dist/bundle/chunks/timeout-TL4Q5YKZ.js +0 -1
  198. package/dist/bundle/chunks/xan-KSDYKKEK.js +0 -1
  199. package/dist/bundle/chunks/xargs-2BBAQDTC.js +0 -1
  200. 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 Kr,C as Xr,D as fe,E as Xe,F as se,G as Pe,H as Ut,I as Yr,J as L,K as Qr,L as Jr,M as Ce,N as Rs,O as Ht,P as H,a as Vr,b as Cs,c as Br,d as Bt,e as ee,f as B,g as ue,h as ne,i as _e,j as je,k as Ns,l as jt,m as jr,n as Os,o as Ur,p as ve,q as Re,r as Hr,s as Zr,t as xs,u as Ts,v as Ue,w as qr,x as Gr,y as Se,z as Ds}from"./chunks/chunk-FEIOJCZD.js";import{a as O,b as D,c as rt,d as Be,e as Ke,f as nt,g as De,h as Mt,i as Wt,j as zt,k as zr,l as Vt}from"./chunks/chunk-XHM67O4N.js";import{c as _s}from"./chunks/chunk-RH6GWZAJ.js";import{a as Tt,b as Dt}from"./chunks/chunk-A5O5YHGN.js";import{a as ks}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 Wr}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 Fr,f as j,g as Ge,h as Rt,i as It,j as Mr,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 Te}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-FOQSCCX3.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-DISNI47D.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-POPGKRAI.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-TPUOAIUQ.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-5EPCWSXR.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-5EPCWSXR.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-I6EZUCYF.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-DIRZBOTX.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-VRKMCG72.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-FABCOJJU.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-VVWX7SA5.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-XMVSIL6Z.js")).yqCommand}),Ye.push({name:"xan",load:async()=>(await import("./chunks/xan-BXDXYEIB.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-DH2SBOI3.js")).python3Command}),Zt.push({name:"python",load:async()=>(await import("./chunks/python3-DH2SBOI3.js")).pythonCommand}));var qt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(qt.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-R2LSP7M4.js")).jsExecCommand}),qt.push({name:"node",load:async()=>(await import("./chunks/js-exec-R2LSP7M4.js")).nodeStubCommand}));var tn=[{name:"curl",load:async()=>(await import("./chunks/curl-FCIO57JJ.js")).curlCommand}],en=new Map;function Gt(e){return{name:e.name,async execute(t,s){let r=en.get(e.name);if(r||(r=await pe.runTrustedAsync(()=>e.load()),en.set(e.name,r)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:n}=await import("./chunks/flag-coverage-SPT2DN2I.js");n(s.coverage,e.name,t)}return r.execute(t,s)}}}function Ui(){return Ye.map(e=>e.name)}function Hi(){return tn.map(e=>e.name)}function sn(e){return(e?Ye.filter(s=>e.includes(s.name)):Ye).map(Gt)}function rn(){return tn.map(Gt)}function Zi(){return Zt.map(e=>e.name)}function nn(){return Zt.map(Gt)}function qi(){return qt.map(e=>e.name)}function on(){return qt.map(Gt)}function an(e){return"load"in e&&typeof e.load=="function"}function Gi(e,t){return{name:e,trusted:!0,execute:t}}function ln(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 Ki=new TextEncoder,Xi=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 Ki.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 Xi.decode(e)}function be(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ot=new TextEncoder;function Yi(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):Yi(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=Ie(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=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){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 Be(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 Qi(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Ji(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 eo(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 to(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Vr}
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",()=>Cs(t)):e.writeFileSync("/proc/self/status",Cs(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 cn(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Qi(e)&&(Ji(e,t),eo(e),to(e,s))}var so=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ro=["braceexpand","hashall","interactive-comments"];function Ls(e){let t=[],s=[...ro.map(r=>({name:r,enabled:!0})),...so.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",Ls(e.state.options))}var no=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Fs(e){let t=[];for(let s of no)e[s]&&t.push(s);return t.join(":")}function Ms(e){e.state.env.set("BASHOPTS",Fs(e.state.shoptOptions))}var io="BASH_ALIAS_";function un(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function fn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function dn(e,t){return e.env.get(`${io}${t}`)}function Ws(e,t,s){if(!t.name||!un(t.name))return t;let r=fn(t.name);if(!r)return t;let n=dn(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=pn(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 hn(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return hn(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(un(f)){let d=fn(f);if(d&&dn(e,d)){let p={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=Ws(e,p,s);m!==p&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function hn(e,t){let s=t;for(let o of e.args){let a=pn(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 pn(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 mn(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 yn(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 oo=["tar","yq","xan","sqlite3","python3","python"];function gn(e){return oo.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 zs(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 Vs(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
- `:"")}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
8
+ `:"")}function Bs(e,t){return e.fs.resolvePath(e.state.cwd,t)}var ao=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Xt(e){return ao.includes(e)}async function Yt(e,t,s){let r=Bs(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 lo=["-nt","-ot","-ef"];function Qt(e){return lo.includes(e)}async function Jt(e,t,s,r){let n=Bs(e,s),i=Bs(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 co=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function es(e){return co.has(e)}function ts(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 ss(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 uo=new Set(["-z","-n"]);function rs(e){return uo.has(e)}function ns(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function is(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=ne(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:ne(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=Xr(i)}else n=await Qr(e,t.right);else $t(t.operator)&&!r?n=await Jr(e,t.right):n=await L(e,t.right);if($t(t.operator)){let i=e.state.shoptOptions.nocasematch;return ss(t.operator,s,n,!r,i,!0)}if(es(t.operator))return ts(t.operator,await vn(e,s),await vn(e,n));if(Qt(t.operator))return Jt(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=mo(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 Xt(t.operator)?Yt(e,t.operator,s):rs(t.operator)?ns(t.operator,s):t.operator==="-v"?await is(e,s):t.operator==="-o"?Us(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):Xt(r)?Q(await Yt(e,r,n)):rs(r)?Q(ns(r,n)):r==="!"?Q(!n):r==="-v"?Q(await is(e,n)):r==="-o"?Q(Us(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(ss(n,r,i));if(es(n)){let o=os(r),a=os(i);return!o.valid||!a.valid?_("","",2):Q(ts(n,o.value,a.value))}if(Qt(n))return Q(await Jt(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 En(e,t,0);return s.pos<t.length?A(`test: too many arguments
13
+ `,2):Q(s.value)}async function En(e,t,s){return fo(e,t,s)}async function fo(e,t,s){let{value:r,pos:n}=await wn(e,t,s);for(;t[n]==="-o";){let i=await wn(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function wn(e,t,s){let{value:r,pos:n}=await js(e,t,s);for(;t[n]==="-a";){let i=await js(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function js(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await js(e,t,s+1);return{value:!r,pos:n}}return ho(e,t,s)}async function ho(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await En(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:ss(n,i,o),pos:s+3}}if(es(n)){let i=os(r),o=os(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:ts(n,i.value,o.value),pos:s+3}}if(Qt(n)){let i=r,o=t[s+2]??"";return{value:await Jt(e,n,i,o),pos:s+3}}if(Xt(r)){let i=t[s+1]??"";return{value:await Yt(e,r,i),pos:s+2}}if(rs(r)){let i=t[s+1]??"";return{value:ns(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await is(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:Us(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function ct(e,t,s=!1,r=!1){let n=`^${$n(t,r)}$`;return vt(n,s?"is":"s").test(e)}function $n(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=Sn(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Pn(o),l=a.map(u=>$n(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=>An(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 Sn(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 Pn(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 An(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=Sn(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=Pn(o).map(c=>An(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 Us(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 vn(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 bn(t);try{let s=new B,r=ee(s,t);return await H(e,r.expression)}catch{return bn(t)}}function po(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 bn(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=po(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 os(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 mo(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=yo(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function yo(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+=go(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 go(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 as(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 kn(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 wo(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 _n(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 wo(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 ls(e,t){e.state.localVarDepth?.delete(t)}function Cn(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 cs(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Nn(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 Hs=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function On(e){return Hs.has(e)}var Zs=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
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}
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 vo(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 xn(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(Rs(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
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 bo(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 us(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=bo(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(Rs(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=vo(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
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(`
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 Tn(e,t){if(e.state.options.posix&&Hs.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
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 Eo(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
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
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 fs(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(Nn(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 xn(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await Eo(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 Rn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Gs=[".",":","[","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"],$o=["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"],So=Gs;async function Ks(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 qs(e,o);h.push(...g)}if(c){let g=await Dn(e,o);h.push(...g)}for(let g of s)if(g==="variable"){let w=Po(e,o);h.push(...w)}else if(g==="export"){let w=Ao(e,o);h.push(...w)}else if(g==="function"){let w=ko(e,o);h.push(...w)}else if(g==="builtin"){let w=_o(o);h.push(...w)}else if(g==="keyword"){let w=Co(o);h.push(...w)}else if(g==="alias"){let w=No(e,o);h.push(...w)}else if(g==="shopt"){let w=Oo(o);h.push(...w)}else if(g==="helptopic"){let w=xo(o);h.push(...w)}else if(g==="directory"){let w=await qs(e,o);h.push(...w)}else if(g==="file"){let w=await Dn(e,o);h.push(...w)}else if(g==="user"){let w=To(o);h.push(...w)}else if(g==="command"){let w=await Do(e,o);h.push(...w)}if(r!==null)try{let g=await Ro(e,r),w=Io(e,g);for(let E of w)(o===null||E.startsWith(o))&&h.push(E)}catch{return _("","",1)}if(a){let g=await qs(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 fs(e,g,$,"");if(I.exitCode!==0)return dt(e,w),dt(e,E),_("",I.stderr,1);y=I.stdout;let N=Lo(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 Po(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 Ao(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 ko(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function _o(e){let t=[...Gs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Co(e){let t=[...Rn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function No(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 Oo(e){let t=[...$o];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function xo(e){let t=[...So];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function qs(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 Dn(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 To(e){return["root","nobody"]}async function Do(e,t){let s=new Set;for(let i of Gs)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 Rn)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 Ro(e,t){let r=new B().parseWordFromString(t,!1,!1);return await L(e,r)}function Io(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 Lo(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 Fo=["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=!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(!Fo.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?Xs(e):Xs(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return Xs(e);if(o&&u.length===0&&!n)return A(`complete: -F: option requires a command name
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 Xs(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 In=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Qs(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(!In.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(!In.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 Js(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(" ")})
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(" ")})
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 er(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function tr(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 ds(e){return er(e)?tr(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Je(e){return er(e)?tr(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function sr(e){return er(e)?tr(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ln(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 rr(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Fn(e,t){let s="",r="",n=!1;for(let i of t){let o=Ln(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=rr(p);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
80
+ `}continue}let l=ne(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
- `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${tr(c)}
82
+ `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${sr(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 Mn(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=Ln(e,f),p=e.state.associativeArrays?.has(f),m=ne(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=rr(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}=()
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}=()
89
+ `;continue}let y=e.state.env.get(f);y!==void 0&&(l+=`declare ${d} ${f}=${sr(y)}
90
+ `)}return z(l)}function Wn(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
+ `;else{let i=n.map(o=>{let a=e.state.env.get(`${r}_${o}`)??"",l=rr(a);return`['${o}']=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
92
+ `}}return z(t)}function zn(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=ne(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 Vn(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)||ne(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${ds(a)}
95
+ `)}return z(t)}function nr(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Pt(e,t){return e.state.integerVars?.has(t)??!1}function ir(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Mo(e,t){return e.state.lowercaseVars?.has(t)??!1}function or(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Wo(e,t){return e.state.uppercaseVars?.has(t)??!1}function ht(e,t,s){return Mo(e,t)?s.toLowerCase():Wo(e,t)?s.toUpperCase():s}async function Bn(e,t){try{let s=new B,r=ee(s,t),n=await H(e,r.expression);return String(n)}catch{return"0"}}function zo(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 ar(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 Fn(e,b);if(o&&b.length===0)return Mn(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return Wn(e);if(b.length===0&&s&&!o)return zn(e);if(b.length===0&&!o)return Vn(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&&ne(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
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&&T.includes("[")){let M=as(T);for(let[te,V]of M){let Y=X(e,V);e.state.env.set(`${S}_${te}`,Y)}}else if(r){let M=Oe(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=Oe(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],Vi=X(e,st),wt;if(/^-?\d+$/.test(he))wt=Number.parseInt(he,10);else try{let Bi=new B,ji=ee(Bi,he);wt=await H(e,ji.expression)}catch{wt=0}e.state.env.set(`${S}_${wt}`,Vi),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(Hr(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=zo(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&&Pe(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=Oe(T);if(e.state.associativeArrays?.has(S)){let V=as(T);for(let[Y,oe]of V){let he=X(e,oe);e.state.env.set(`${S}_${Y}`,he)}}else{let V=ne(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],T=X(e,x[2]),M=se(e,S);if(M)return M;g(S),f&&nr(e,S),d&&ir(e,S),p&&or(e,S);let V=ne(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 Bn(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&&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("="),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
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(`
107
+ `,I=1;continue}e.state.env.set(T,M),Re(e,T),M!==""&&Ts(e,M)&&xs(e,T),E(T),n&&fe(e,T),i&&Pe(e,T);continue}if(f&&nr(e,T),d&&ir(e,T),p&&or(e,T),Pt(e,T)&&(M=await Bn(e,M)),M=ht(e,T,M),ve(e,T)){let V=Ue(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&&Pe(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){Re(e,S);let M=e.state.env.get(S);M!==void 0&&M!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(M)?Zr(e,S):M&&Ts(e,M)&&xs(e,S),E(S),n&&fe(e,S),i&&Pe(e,S);continue}if(f&&nr(e,S),d&&ir(e,S),p&&or(e,S),r){if(ne(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&&Pe(e,S)}}return _("",$,I)}async function lr(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=as(d);for(let[y,b]of h){let v=X(e,b);e.state.env.set(`${f}_${y}`,v)}}else{let h=ne(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=kn(o);if(c.value===void 0&&!c.isArray){fe(e,c.name);continue}let u=await _n(e,c,{makeReadonly:!0});if(u)return u}return W}function cr(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 Vo(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 ur(e,t){let s=cr(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=Vo(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 fr(e,t){let s=cr(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 dr(e,t){let s=cr(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 hs(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}
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
- `,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}"
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
+ `);throw a}finally{e.state.groupStdin=i}}function hr(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
+ `,s=2):s=(i%256+256)%256}throw new j(s,"",r)}function pr(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 ps(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"),ps(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 mr(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 jn=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,32 +496,32 @@ 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
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}
499
+ option is given.`]]]),Un=[...jn.keys()].sort();function yr(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
+ `,2)}n++}else r.push(l),n++}if(r.length===0)return jo();let i="",o=!1,a="";for(let l of r){let c=Bo(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=jn.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 Bo(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=vt(`^${t}$`);return Un.filter(r=>s.test(r))}function jo(){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=Un.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 Uo(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 gr(e,t){if(t.length===0)return A(`bash: let: expression expected
507
+ `);let s=Uo(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 wr(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=ne(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}}}Cn(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 vr(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 Ho(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 Zo(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function br(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 T=k.substring(x+1);return a=Number.parseInt(T,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 T=k.substring(x+1);return l=Number.parseInt(T,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 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(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=Ho(C);if(x){let S=x.position+k;e.state.fileDescriptors.set(r,Zo(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 T=y[C+1];if(T===b&&b===`
519
+ `){C+=2,P=C;continue}if(T===b){C+=2,k++,v+=T,P=C;continue}v+=T,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
524
- `,2);s=(n%256+256)%256}throw new ce(s)}var hs=`set: usage: set [-eux] [+eux] [-o option] [+o option]
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 $=jr(e.state.env);if(c){let{words:k}=Os(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}=Os(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=Ur(x,$,n),x=E(x),e.state.env.set(C,x)}else e.state.env.set(C,"")}return _("","",g?0:1)}function Er(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
+ `,2);s=(n%256+256)%256}throw new ce(s)}var ms=`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
527
527
  +e Disable -e
@@ -537,73 +537,73 @@ 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
+ `,Hn=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]]),Zn=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]]),qn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Gn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Kn(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 qo(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Go(e,t){let s=ne(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 Ko(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Xo(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`[${Ko(n)}]=${Je(i)}`});return`${t}=(${r.join(" ")} )`}function Yo(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 Qo(e){return e.state.associativeArrays??new Set}function Sr(e,t){if(t.includes("--help"))return z(ms);if(t.length===0){let r=Yo(e),n=Qo(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}=${ds(c)}`);for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Go(e,l));for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Xo(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")&&qo(t,s)){let n=t[s+1];if(!Zn.has(n)){let i=`bash: set: ${n}: invalid option name
543
+ ${ms}`;if(e.state.options.posix)throw new $e(1,"",i);return A(i)}Kn(e,Zn.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=qn.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=Gn.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=qn.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=Gn.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(!Hn.has(o)){let a=`bash: set: ${r[0]}${o}: invalid option
548
+ ${ms}`;if(e.state.options.posix)throw new $e(1,"",a);return A(a)}Kn(e,Hn.get(o)??null,n)}s++;continue}if(r==="--")return $r(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 $r(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
+ ${ms}`;if(e.state.options.posix)throw new $e(1,"",n);return A(n)}return $r(e,t.slice(s)),W}return W}function $r(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 Pr(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 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 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 Xn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Jo(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Yn(e,t){if(Jo(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 Qn(e,t){if(e.state.localVarStack?.has(t)){let r=cs(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)ls(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),kr(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),ls(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||ls(e,t),!0}}return!1}function kr(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 Jn(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 _r(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 Jn(e,p);e.state.env.delete(`${d}_${P}`);continue}let h=Ds(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 Yn(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
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(`
558
+ `,n=1;continue}let $=P[E][0];e.state.env.delete(`${d}_${$}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!Xn(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)Qn(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=cs(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 kr(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 Jn(e,u);e.state.env.delete(`${c}_${h}`);continue}let d=Ds(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 Yn(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(!Xn(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)Qn(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=cs(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 kr(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",r,n)}var Cr=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],ea=["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 ys(e){return Cr.includes(e)}function ta(e){return ea.includes(e)}function ei(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
+ `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return sa(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 m of Cr){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 Cr){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
- `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!ps(d)&&!Qo(d)){u+=`shopt: ${d}: invalid shell option name
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(`
572
+ `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!ys(d)&&!ta(d)){u+=`shopt: ${d}: invalid shell option name
573
+ `,c=!0;continue}if(s)ys(d)&&(e.state.shoptOptions[d]=!0,Ms(e));else if(r)ys(d)&&(e.state.shoptOptions[d]=!1,Ms(e));else if(ys(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 sa(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 ti(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 gs(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 ra(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 ra(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 na(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 si(e,t){if(!e.requireDefenseContext)return e;let s=`command:${t}`,r={...e,fs:na(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 oi(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?ri(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)||Zs.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?ri(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 ri(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(ia(r)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(ni(t.name));for(let r of t.args)s.push(ni(r));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>kt(r)).join("; ")}; }`:"..."}function ia(e){let t=e.commands.map(s=>kt(s));return(e.negated?"! ":"")+t.join(" | ")}function ni(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(r=>ii(r)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=ii(s);return t}function ii(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function ai(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
- `;else if(Hs.has(a))r?n+=`${a} is a shell keyword
606
+ `;else if(Zs.has(a))r?n+=`${a} is a shell keyword
607
607
  `:n+=`${a}
608
608
  `;else if(ft.has(a))r?n+=`${a} is a shell builtin
609
609
  `: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 li(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 ci(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 pr(l,s);if(t==="unset")return _r(l,s);if(t==="exit")return hr(l,s);if(t==="local")return wr(l,s);if(t==="set")return Sr(l,s);if(t==="break")return zs(l,s);if(t==="continue")return Js(l,s);if(t==="return")return Er(l,s);if(t==="eval"&&l.state.options.posix)return hs(l,s,n);if(t==="shift")return Pr(l,s);if(t==="getopts")return ps(l,s);if(t==="compgen")return Ks(l,s);if(t==="complete")return Ys(l,s);if(t==="compopt")return Qs(l,s);if(t==="pushd")return await ur(l,s);if(t==="popd")return fr(l,s);if(t==="dirs")return dr(l,s);if(t==="source"||t===".")return Ar(l,s);if(t==="read")return br(l,s,n,a);if(t==="mapfile"||t==="readarray")return vr(l,s,n);if(t==="declare"||t==="typeset")return ar(l,s);if(t==="readonly")return lr(l,s);if(!i){let u=l.state.functions.get(t);if(u)return fs(l,u,s,n)}if(t==="eval")return hs(l,s,n);if(t==="cd")return await Vs(l,s);if(t===":"||t==="true")return W;if(t==="false")return Q(!1);if(t==="let")return gr(l,s);if(t==="command")return oa(e,s,n);if(t==="builtin")return aa(e,s,n);if(t==="shopt")return ei(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 oi(l,s,u=>li(l,u),u=>gs(l,u));if(t==="hash")return mr(l,s);if(t==="help")return yr(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 oa(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 ai(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function aa(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 ui(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await ti(i,t,n?"/usr/bin:/bin":void 0);if(!c)return gn(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,jsBootstrapCode:i.jsBootstrapCode},h=si(m,t);try{let y=()=>Wr(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(Te(y))}
624
+ `)}}async function Nr(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=Te(e);return{action:"error",stdout:t,stderr:`${s}${n}
625
+ `,exitCode:1}}async function ws(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}${Te(a)}
626
+ `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function fi(e,t){let s="",r="";for(let n of t.clauses){let i=await Nr(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return ws(e,n.body,s,r)}return t.elseBody?ws(e,t.elseBody,s,r):_(s,r,0)}async function di(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 hi(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 pi(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 mi(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 Nr(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 yi(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);Yr(d)&&(p=Kr(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 ws(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 Or(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function gi(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 wi="+ ";async function vi(e){let t=e.state.env.get("PS4");if(t===void 0)return wi;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||wi}}function la(e){return e.map(t=>ca(t)).join(" ")}function ca(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 bi(e,t,s){if(!e.state.options.xtrace)return"";let r=await vi(e),n=[t,...s],i=la(n);return`${r}${i}
635
+ `}async function Ei(e,t,s){return e.state.options.xtrace?`${await vi(e)}${t}=${s}
636
+ `:""}async function $i(e,t,s){let r=t.timed?_s():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=(_s()-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
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
643
+ `,i={...i,stderr:i.stderr+y}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function Si(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await ua(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
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await ma(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 ga(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 ua(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=qr(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
- `,{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}
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=fa(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 da(e,t,s,r,n,c,u=>{o+=u}):l?await ha(e,s,r,n,c):await pa(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 fa(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 da(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=Ns(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 ha(e,t,s,r,n){let i=[];for(let a of s){let l=Ns(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 pa(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 ma(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 Pi(e,a,r);else{let f=await ya(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 Pi(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 ya(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 ga(e,t,s,r,n,i){let o="",a=s,l=null;if(ve(e,s)){let f=Gr(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-ENLSRCXJ.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=ht(e,a,c),o+=await Ei(e,a,c);let u=a;if(l)u=await wa(e,l);else{let{isArray:f}=await import("./chunks/expansion-ENLSRCXJ.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 wa(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Pi(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 Ai(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}${Te($)}
655
+ `,1);return G(e,I,t.redirections)}w();let E=_(v,P,g);return G(e,E,t.redirections)}async function ki(e,t,s,r){let n="",i="",o=0,a=await us(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}${Te(f)}
660
+ `,1)}e.state.groupStdin=c;let u=_(n,i,o);return G(e,u,t.redirections)}async function _i(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,jsBootstrapCode:t.jsBootstrapCode}}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 Fr)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 Mr){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 _i(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 $i(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 fi(this.ctx,t);case"For":return di(this.ctx,t);case"CStyleFor":return hi(this.ctx,t);case"While":return pi(this.ctx,t,s);case"Until":return mi(this.ctx,t);case"Case":return yi(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Tn(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 Si(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&&Or(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 us(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=gi($);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(Or(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 mn(this.ctx,g);if(w)f.push(w),d.push(!0);else{let E=await yn(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}if(this.ctx.state.extraArgs){f.push(...this.ctx.state.extraArgs);for(let g=0;g<this.ctx.state.extraArgs.length;g++)d.push(!0);this.ctx.state.extraArgs=void 0}let m=await bi(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=On(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 ci(l,t,s,r,n,i,o,a);return c!==null?c:ui(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return Ws(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return gs(this.ctx,t)}async executeSubshell(t,s=""){return Ai(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return ki(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 re={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50,maxBraceExpansionResults:1e4,maxOutputSize:10485760,maxFileDescriptors:1024,maxSourceDepth:100};function Ci(e){return e?{maxCallDepth:e.maxCallDepth??re.maxCallDepth,maxCommandCount:e.maxCommandCount??re.maxCommandCount,maxLoopIterations:e.maxLoopIterations??re.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??re.maxAwkIterations,maxSedIterations:e.maxSedIterations??re.maxSedIterations,maxJqIterations:e.maxJqIterations??re.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??re.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??re.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??re.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??re.maxGlobOperations,maxStringLength:e.maxStringLength??re.maxStringLength,maxArrayElements:e.maxArrayElements??re.maxArrayElements,maxHeredocSize:e.maxHeredocSize??re.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??re.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??re.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??re.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??re.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??re.maxSourceDepth}:{...re}}import{lookup as Aa}from"node:dns";function xr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function va(e){let t=xr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ba(e,t){let s=xr(e);if(!s)return!1;let r=va(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function Ni(e,t){return!t||t.length===0?!1:t.some(s=>ba(e,s))}function Tr(e){let t=Ea(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let s=Oi(t);if(s)return vs(s);let r=Sa(t);return r?Pa(r):!1}function Ea(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function $a(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 Oi(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let s=t.map(l=>$a(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 Sa(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=Oi(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 vs(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 Pa(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 vs(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 vs(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 vs(n)}return!1}function xi(e){let t=[];for(let s of e){if(!xr(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"}},bs=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 ka(e){return new Promise((t,s)=>{Aa(e,{all:!0},(r,n)=>{r?s(r):t(n)})})}var _a=20,Ca=3e4,Na=10485760,Oa=["GET","HEAD"],xa=new Set(["GET","HEAD","OPTIONS"]),Ta=new Set([301,302,303,307,308]);function Dr(e){if(!e.dangerouslyAllowFullInternetAccess){let u=xi(e.allowedUrlPrefixes??[]);if(u.length>0)throw new Error(`Invalid network allow-list:
673
+ ${u.join(`
674
+ `)}`)}let t=e.maxRedirects??_a,s=e.timeoutMs??Ca,r=e.maxResponseSize??Na,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Oa,i=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),o=e._dnsResolve??ka;async function a(u){if(i)try{let f=new URL(u);if(Tr(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(Tr(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&&!Ni(u,e.allowedUrlPrefixes??[]))throw new Ae(u)}function l(u){if(e.dangerouslyAllowFullInternetAccess)return;let f=u.toUpperCase();if(!n.includes(f))throw new bs(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=Tt(()=>b.abort(),y);try{let P={method:d,headers:f.headers,signal:b.signal,redirect:"manual"};f.body&&!xa.has(d)&&(P.body=f.body);let g=await pe.runTrustedAsync(()=>fetch(p,P));if(Ta.has(g.status)&&h){let w=g.headers.get("location");if(!w)return await Ti(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 Ti(g,p,r)}finally{Dt(v)}}}return c}async function Ti(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(Di).join(`
675
+ `)}function Di(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(Da(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Da(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(Ri(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 Ri(e){switch(e.type){case"SimpleCommand":return Ra(e);case"If":return ja(e);case"For":return Ua(e);case"CStyleFor":return Ha(e);case"While":return Za(e);case"Until":return qa(e);case"Case":return Ga(e);case"Subshell":return Xa(e);case"Group":return Ya(e);case"ArithmeticCommand":return Qa(e);case"ConditionalCommand":return Ja(e);case"FunctionDef":return el(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Ra(e){let t=[];for(let s of e.assignments)t.push(Ia(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(Fi(s));return t.join(" ")}function Ia(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=>Es(t,!1)).join("")}function qe(e){return e.parts.map(t=>Es(t,!0)).join("")}function Es(e,t){switch(e.type){case"Literal":return t?Fa(e.value):La(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>Es(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Ii(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 Va(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 La(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Fa(e){return e.replace(/[$`"\\]/g,"\\$&")}function Ma(e,t){return e.parts.map(s=>Wa(s,t)).join("")}function Wa(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Ii(e);case"CommandSubstitution":return e.legacy?`\`${tt(e.body)}\``:`$(${tt(e.body)})`;case"ArithmeticExpansion":return`$((${Z(e.expression.expression)}))`;default:return Es(e,!1)}}function Ii(e){return e.operation?`\${${Li(e.parameter,e.operation)}}`:za(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function za(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Li(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?`!${Li(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 Va(e){return`{${e.items.map(Ba).join(",")}}`}function Ba(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 Fi(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=Ma(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(Fi).join(" ")}`}function Ee(e){return e.map(Di).join(`
677
+ `)}function ja(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 Ua(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 Ha(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 Za(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 qa(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 Ga(e){let t=e.items.map(Ka).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 Ka(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 Xa(e){return`(${Ee(e.body)})${ke(e.redirections)}`}function Ya(e){return`{ ${Ee(e.body)}; }${ke(e.redirections)}`}function Qa(e){return`((${Z(e.expression.expression)}))${ke(e.redirections)}`}function Ja(e){return`[[ ${et(e.expression)} ]]${ke(e.redirections)}`}function el(e){let t=Ri(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;jsBootstrapCode;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=Ci({...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",Ls(this.state.options)),this.state.env.set("BASHOPTS",Fs(this.state.shoptOptions)),cn(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 sn(t.commands))this.registerCommand(i);if(t.fetch||t.network)for(let i of rn())this.registerCommand(i);if(t.python)for(let i of nn())this.registerCommand(i);if(t.javascript){for(let o of on())this.registerCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap)}if(t.customCommands)for(let i of t.customCommands)an(i)?this.registerCommand(ln(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
- `;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(`
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=Wi(t.stdout),t.stderr=Wi(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,extraArgs:s?.args},l=t;s?.rawScript||(l=Mi(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,jsBootstrapCode:this.jsBootstrapCode},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 Br)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=Mi(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 Mi(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 tl=new TextDecoder("utf-8",{fatal:!0});function Wi(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 tl.decode(s)}catch{return e}}var $s=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){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 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 sl=["ELOOP","EFBIG","EPERM"],rl="/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??rl;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 De(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,sl)}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=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){D(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){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=zr(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 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){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(!De(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 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){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 nl=["EACCES","escaping sandbox","EFBIG"],Ss=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=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){D(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){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:De(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(!De(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,nl)}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}De(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(De(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(De(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 Ps=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=ks(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=ks([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 As=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 zi(){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 Rr=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 Ir=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 Lr=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,Rr as BashTransformPipeline,Ir as CommandCollectorPlugin,pe as DefenseInDepthBox,Le as InMemoryFs,$s as MountableFs,Ae as NetworkAccessDeniedError,yt as OverlayFs,Ss as ReadWriteFs,mt as RedirectNotAllowedError,Ps as Sandbox,gt as SandboxCommand,Me as SecurityViolationError,As as SecurityViolationLogger,Lr as TeePlugin,pt as TooManyRedirectsError,zi as createConsoleViolationCallback,Gi as defineCommand,Ui as getCommandNames,qi as getJavaScriptCommandNames,Hi as getNetworkCommandNames,Zi as getPythonCommandNames,ue as parse,Ot as serialize};