@jerryan/just-bash 3.5.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 (958) hide show
  1. package/CHANGELOG.md +308 -0
  2. package/LICENSE +201 -0
  3. package/README.md +827 -0
  4. package/dist/AGENTS.md +383 -0
  5. package/dist/Bash.d.ts +317 -0
  6. package/dist/abort-signals.d.ts +10 -0
  7. package/dist/agent-sandbox.d.ts +104 -0
  8. package/dist/ast/types.d.ts +612 -0
  9. package/dist/banned-patterns-test.d.ts +1 -0
  10. package/dist/bin/chunks/alias-3R4G6HQY.js +3 -0
  11. package/dist/bin/chunks/awk2-KO7ZE3P7.js +3 -0
  12. package/dist/bin/chunks/base64-TQ5KOCNW.js +3 -0
  13. package/dist/bin/chunks/basename-C4CRGDXP.js +3 -0
  14. package/dist/bin/chunks/bash-CFCBBWVH.js +3 -0
  15. package/dist/bin/chunks/cat-BQ7FQTN5.js +3 -0
  16. package/dist/bin/chunks/chmod-WYYTXGVB.js +3 -0
  17. package/dist/bin/chunks/chunk-23OI2XDJ.js +20 -0
  18. package/dist/bin/chunks/chunk-2ETT4ELS.js +4 -0
  19. package/dist/bin/chunks/chunk-2UV6ZFHK.js +4 -0
  20. package/dist/bin/chunks/chunk-2YLY6FJA.js +10 -0
  21. package/dist/bin/chunks/chunk-3FQBUEB6.js +3 -0
  22. package/dist/bin/chunks/chunk-3MRB66F4.js +3 -0
  23. package/dist/bin/chunks/chunk-3PCPQIUD.js +3 -0
  24. package/dist/bin/chunks/chunk-42AMF6EE.js +3 -0
  25. package/dist/bin/chunks/chunk-43E7AR6A.js +3 -0
  26. package/dist/bin/chunks/chunk-45DUHCXR.js +7 -0
  27. package/dist/bin/chunks/chunk-472JZJ2D.js +22 -0
  28. package/dist/bin/chunks/chunk-47IFMQYS.js +3 -0
  29. package/dist/bin/chunks/chunk-4JF56A3P.js +15 -0
  30. package/dist/bin/chunks/chunk-5SKEZPTU.js +12 -0
  31. package/dist/bin/chunks/chunk-67XYNGRV.js +9 -0
  32. package/dist/bin/chunks/chunk-6ESRNSO7.js +7 -0
  33. package/dist/bin/chunks/chunk-6KHZX4HU.js +12 -0
  34. package/dist/bin/chunks/chunk-7FGDUBSN.js +14 -0
  35. package/dist/bin/chunks/chunk-7JZKVC3F.js +2 -0
  36. package/dist/bin/chunks/chunk-7PPAWLUI.js +12 -0
  37. package/dist/bin/chunks/chunk-7PUOS2OO.js +143 -0
  38. package/dist/bin/chunks/chunk-7VWOECJ3.js +101 -0
  39. package/dist/bin/chunks/chunk-7WBCA2BB.js +3 -0
  40. package/dist/bin/chunks/chunk-AGKL4LDL.js +4 -0
  41. package/dist/bin/chunks/chunk-AI7JUA46.js +13 -0
  42. package/dist/bin/chunks/chunk-AJF3OBTR.js +4 -0
  43. package/dist/bin/chunks/chunk-B2DRBHGQ.js +3 -0
  44. package/dist/bin/chunks/chunk-B2GCIQI2.js +16 -0
  45. package/dist/bin/chunks/chunk-B6WWC6K3.js +9 -0
  46. package/dist/bin/chunks/chunk-BIJXTWZ4.js +3 -0
  47. package/dist/bin/chunks/chunk-CC2AQ6B7.js +15 -0
  48. package/dist/bin/chunks/chunk-CL7IYCGG.js +20 -0
  49. package/dist/bin/chunks/chunk-CMTQFWZK.js +5 -0
  50. package/dist/bin/chunks/chunk-CPKBPQ2C.js +3 -0
  51. package/dist/bin/chunks/chunk-DJAX3ZRG.js +8 -0
  52. package/dist/bin/chunks/chunk-DN2YCFOR.js +3 -0
  53. package/dist/bin/chunks/chunk-DYIBFLS3.js +17 -0
  54. package/dist/bin/chunks/chunk-DZAFUADN.js +36 -0
  55. package/dist/bin/chunks/chunk-F3UDTTI7.js +13 -0
  56. package/dist/bin/chunks/chunk-FHMIEBRM.js +6 -0
  57. package/dist/bin/chunks/chunk-FONAGXRJ.js +17 -0
  58. package/dist/bin/chunks/chunk-FPWHWWXO.js +8 -0
  59. package/dist/bin/chunks/chunk-FUT3X2GJ.js +9 -0
  60. package/dist/bin/chunks/chunk-G4AUMZUY.js +4 -0
  61. package/dist/bin/chunks/chunk-GA5TPRMF.js +34 -0
  62. package/dist/bin/chunks/chunk-GOWX7VPU.js +7 -0
  63. package/dist/bin/chunks/chunk-GQKQEK5N.js +11 -0
  64. package/dist/bin/chunks/chunk-GR4ZHKXI.js +3 -0
  65. package/dist/bin/chunks/chunk-HDWHYM2T.js +18 -0
  66. package/dist/bin/chunks/chunk-HQ63MFHG.js +34 -0
  67. package/dist/bin/chunks/chunk-HW2VJKFH.js +4 -0
  68. package/dist/bin/chunks/chunk-HWI42GQO.js +7 -0
  69. package/dist/bin/chunks/chunk-HZGHQZSY.js +10 -0
  70. package/dist/bin/chunks/chunk-I4IRHQDW.js +3 -0
  71. package/dist/bin/chunks/chunk-I57EACSL.js +3 -0
  72. package/dist/bin/chunks/chunk-JELR4642.js +21 -0
  73. package/dist/bin/chunks/chunk-JQM3DKCH.js +12 -0
  74. package/dist/bin/chunks/chunk-K27FY3ES.js +3 -0
  75. package/dist/bin/chunks/chunk-KG2KXL4Y.js +3 -0
  76. package/dist/bin/chunks/chunk-KI54R2QB.js +3 -0
  77. package/dist/bin/chunks/chunk-KP2UH5CJ.js +22 -0
  78. package/dist/bin/chunks/chunk-KUMHQGUR.js +3 -0
  79. package/dist/bin/chunks/chunk-LE2XKKGQ.js +7 -0
  80. package/dist/bin/chunks/chunk-LJQIAFWS.js +5 -0
  81. package/dist/bin/chunks/chunk-LXFMIXGA.js +3 -0
  82. package/dist/bin/chunks/chunk-M7SIPZZZ.js +22 -0
  83. package/dist/bin/chunks/chunk-MF3GVFLC.js +11 -0
  84. package/dist/bin/chunks/chunk-MROECM42.js +3 -0
  85. package/dist/bin/chunks/chunk-MUFNRCMY.js +24 -0
  86. package/dist/bin/chunks/chunk-MVBK66TR.js +22 -0
  87. package/dist/bin/chunks/chunk-MYTNZ7MA.js +7 -0
  88. package/dist/bin/chunks/chunk-N26Y42L6.js +10 -0
  89. package/dist/bin/chunks/chunk-NE4R2FVV.js +5 -0
  90. package/dist/bin/chunks/chunk-NLU5LALY.js +37 -0
  91. package/dist/bin/chunks/chunk-NXUXZWS5.js +7 -0
  92. package/dist/bin/chunks/chunk-O2BCKSMK.js +3 -0
  93. package/dist/bin/chunks/chunk-OLEQNRKX.js +8 -0
  94. package/dist/bin/chunks/chunk-OUQKFRVR.js +6 -0
  95. package/dist/bin/chunks/chunk-OXLC2WWX.js +26 -0
  96. package/dist/bin/chunks/chunk-OYXHOZZ4.js +15 -0
  97. package/dist/bin/chunks/chunk-PBOVSFTJ.js +3 -0
  98. package/dist/bin/chunks/chunk-PPVF2N6C.js +3 -0
  99. package/dist/bin/chunks/chunk-PQ2INDRF.js +87 -0
  100. package/dist/bin/chunks/chunk-PXP4YYZA.js +13 -0
  101. package/dist/bin/chunks/chunk-PZQVSQX6.js +4 -0
  102. package/dist/bin/chunks/chunk-Q2GOPGDA.js +6 -0
  103. package/dist/bin/chunks/chunk-Q3LE3Y66.js +13 -0
  104. package/dist/bin/chunks/chunk-QES5OSUC.js +3 -0
  105. package/dist/bin/chunks/chunk-QFTZKD5O.js +13 -0
  106. package/dist/bin/chunks/chunk-QL33F2W6.js +8 -0
  107. package/dist/bin/chunks/chunk-QMPZXXEK.js +8 -0
  108. package/dist/bin/chunks/chunk-QYZN33JA.js +3 -0
  109. package/dist/bin/chunks/chunk-R2J5MJOM.js +20 -0
  110. package/dist/bin/chunks/chunk-RPUFEP5O.js +65 -0
  111. package/dist/bin/chunks/chunk-RVPTAYDS.js +4 -0
  112. package/dist/bin/chunks/chunk-SC5TEGMM.js +12 -0
  113. package/dist/bin/chunks/chunk-SDGPS6XI.js +10 -0
  114. package/dist/bin/chunks/chunk-TW2IJRUF.js +3 -0
  115. package/dist/bin/chunks/chunk-TYBXHT6W.js +10 -0
  116. package/dist/bin/chunks/chunk-V2XF3TTW.js +276 -0
  117. package/dist/bin/chunks/chunk-V4U26ZWL.js +16 -0
  118. package/dist/bin/chunks/chunk-VTAMGD42.js +3 -0
  119. package/dist/bin/chunks/chunk-WAJVRK5B.js +16 -0
  120. package/dist/bin/chunks/chunk-WEHA3JFD.js +3 -0
  121. package/dist/bin/chunks/chunk-WFHYGSLJ.js +6 -0
  122. package/dist/bin/chunks/chunk-WFVCEB5T.js +3 -0
  123. package/dist/bin/chunks/chunk-YERKK5B3.js +4 -0
  124. package/dist/bin/chunks/chunk-YIANER7Y.js +8 -0
  125. package/dist/bin/chunks/chunk-YJ5OCPSK.js +7 -0
  126. package/dist/bin/chunks/chunk-YOIFOOGX.js +9 -0
  127. package/dist/bin/chunks/chunk-YQEKKZTU.js +12 -0
  128. package/dist/bin/chunks/chunk-YUZRUF5F.js +10 -0
  129. package/dist/bin/chunks/chunk-ZMGLTHSU.js +15 -0
  130. package/dist/bin/chunks/clear-OE52K3TM.js +3 -0
  131. package/dist/bin/chunks/column-AJFK3TWF.js +3 -0
  132. package/dist/bin/chunks/comm-URDMZCXL.js +3 -0
  133. package/dist/bin/chunks/cp-OMVKM35F.js +3 -0
  134. package/dist/bin/chunks/curl-NHNZ46BU.js +31 -0
  135. package/dist/bin/chunks/cut-42X6363P.js +3 -0
  136. package/dist/bin/chunks/date-6MQGVWDY.js +3 -0
  137. package/dist/bin/chunks/diff-YXZZCUSQ.js +3 -0
  138. package/dist/bin/chunks/dirname-TPUFCYF6.js +3 -0
  139. package/dist/bin/chunks/dist-5MWO25Y4.js +141 -0
  140. package/dist/bin/chunks/du-LUFPVLNW.js +3 -0
  141. package/dist/bin/chunks/echo-NYDCCFWB.js +3 -0
  142. package/dist/bin/chunks/env-2TSVF4W7.js +3 -0
  143. package/dist/bin/chunks/expand-IQRKKT7D.js +3 -0
  144. package/dist/bin/chunks/expr-NNMDHOCN.js +3 -0
  145. package/dist/bin/chunks/file-4T64QNLS.js +3 -0
  146. package/dist/bin/chunks/find-AWH2KOY7.js +3 -0
  147. package/dist/bin/chunks/flag-coverage-J2ZHA465.js +3 -0
  148. package/dist/bin/chunks/fold-YEY7X54W.js +3 -0
  149. package/dist/bin/chunks/grep-CVU5V66H.js +3 -0
  150. package/dist/bin/chunks/gzip-FDPA6EKG.js +3 -0
  151. package/dist/bin/chunks/head-QKVY3SIO.js +3 -0
  152. package/dist/bin/chunks/help-HVIDHJ6M.js +3 -0
  153. package/dist/bin/chunks/history-3HAU45KT.js +3 -0
  154. package/dist/bin/chunks/hostname-2I76DUQL.js +3 -0
  155. package/dist/bin/chunks/html-to-markdown-XUMA42ZC.js +3 -0
  156. package/dist/bin/chunks/join-34DX7YK5.js +3 -0
  157. package/dist/bin/chunks/jq-V7OTAVU5.js +3 -0
  158. package/dist/bin/chunks/js-exec-DJQLXWCS.js +99 -0
  159. package/dist/bin/chunks/js-exec-worker.js +4809 -0
  160. package/dist/bin/chunks/ln-B35EKC2Q.js +3 -0
  161. package/dist/bin/chunks/ls-Q6ZZ6SQ2.js +3 -0
  162. package/dist/bin/chunks/md5sum-Z6KAYGDK.js +3 -0
  163. package/dist/bin/chunks/mkdir-74BP5NTG.js +3 -0
  164. package/dist/bin/chunks/mv-76LAHXFR.js +3 -0
  165. package/dist/bin/chunks/nl-4IZRRT7U.js +3 -0
  166. package/dist/bin/chunks/od-2GXD4D5K.js +3 -0
  167. package/dist/bin/chunks/paste-DWWA3JTW.js +3 -0
  168. package/dist/bin/chunks/printf-YXCSED2H.js +3 -0
  169. package/dist/bin/chunks/pwd-YKLNXWZI.js +3 -0
  170. package/dist/bin/chunks/python3-JCJHSX4Z.js +14 -0
  171. package/dist/bin/chunks/readlink-EHXJNW62.js +3 -0
  172. package/dist/bin/chunks/rev-CZTQCNOZ.js +3 -0
  173. package/dist/bin/chunks/rg-PXNKNIMY.js +3 -0
  174. package/dist/bin/chunks/rm-3PLW4O4B.js +3 -0
  175. package/dist/bin/chunks/rmdir-7ZIVFZJX.js +3 -0
  176. package/dist/bin/chunks/sed-4LVDFHIJ.js +3 -0
  177. package/dist/bin/chunks/seq-X2EAOGV5.js +3 -0
  178. package/dist/bin/chunks/sha1sum-CATBXX76.js +3 -0
  179. package/dist/bin/chunks/sha256sum-YGSNBVY3.js +3 -0
  180. package/dist/bin/chunks/sleep-DVFE2GSF.js +3 -0
  181. package/dist/bin/chunks/sort-HBOCBBJQ.js +3 -0
  182. package/dist/bin/chunks/split-ZNNNHKSP.js +3 -0
  183. package/dist/bin/chunks/sqlite3-KP42NNIY.js +3 -0
  184. package/dist/bin/chunks/sqlite3-worker.js +1928 -0
  185. package/dist/bin/chunks/stat-LROLDXHH.js +3 -0
  186. package/dist/bin/chunks/strings-CNUK76JL.js +3 -0
  187. package/dist/bin/chunks/tac-DG4BMYM5.js +3 -0
  188. package/dist/bin/chunks/tail-UOTUV25D.js +3 -0
  189. package/dist/bin/chunks/tar-7HGZIMZD.js +3 -0
  190. package/dist/bin/chunks/tee-L4HKV5PD.js +3 -0
  191. package/dist/bin/chunks/time-LF7BTSK5.js +3 -0
  192. package/dist/bin/chunks/timeout-YGFHQJKX.js +3 -0
  193. package/dist/bin/chunks/touch-TVQAUQOG.js +3 -0
  194. package/dist/bin/chunks/tr-PVFO6FRY.js +3 -0
  195. package/dist/bin/chunks/tree-ZGP6NPGS.js +3 -0
  196. package/dist/bin/chunks/true-KFTJGQLQ.js +3 -0
  197. package/dist/bin/chunks/unexpand-JPOQORZF.js +3 -0
  198. package/dist/bin/chunks/uniq-JMHDIJXT.js +3 -0
  199. package/dist/bin/chunks/wc-3KLVOCI2.js +3 -0
  200. package/dist/bin/chunks/which-4TPGVSBZ.js +3 -0
  201. package/dist/bin/chunks/whoami-B5HDVKW6.js +3 -0
  202. package/dist/bin/chunks/worker.js +3330 -0
  203. package/dist/bin/chunks/xan-WW53ETXT.js +3 -0
  204. package/dist/bin/chunks/xan-view-PD26QEFN.js +3 -0
  205. package/dist/bin/chunks/xargs-4AMMXFXL.js +3 -0
  206. package/dist/bin/chunks/yq-MYZOS2WN.js +3 -0
  207. package/dist/bin/just-bash.js +858 -0
  208. package/dist/bin/shell/chunks/alias-3R4G6HQY.js +3 -0
  209. package/dist/bin/shell/chunks/awk2-KO7ZE3P7.js +3 -0
  210. package/dist/bin/shell/chunks/base64-TQ5KOCNW.js +3 -0
  211. package/dist/bin/shell/chunks/basename-C4CRGDXP.js +3 -0
  212. package/dist/bin/shell/chunks/bash-CFCBBWVH.js +3 -0
  213. package/dist/bin/shell/chunks/cat-BQ7FQTN5.js +3 -0
  214. package/dist/bin/shell/chunks/chmod-WYYTXGVB.js +3 -0
  215. package/dist/bin/shell/chunks/chunk-23OI2XDJ.js +20 -0
  216. package/dist/bin/shell/chunks/chunk-2ETT4ELS.js +4 -0
  217. package/dist/bin/shell/chunks/chunk-2UV6ZFHK.js +4 -0
  218. package/dist/bin/shell/chunks/chunk-2YLY6FJA.js +10 -0
  219. package/dist/bin/shell/chunks/chunk-3FQBUEB6.js +3 -0
  220. package/dist/bin/shell/chunks/chunk-3MRB66F4.js +3 -0
  221. package/dist/bin/shell/chunks/chunk-3PCPQIUD.js +3 -0
  222. package/dist/bin/shell/chunks/chunk-42AMF6EE.js +3 -0
  223. package/dist/bin/shell/chunks/chunk-43E7AR6A.js +3 -0
  224. package/dist/bin/shell/chunks/chunk-45DUHCXR.js +7 -0
  225. package/dist/bin/shell/chunks/chunk-472JZJ2D.js +22 -0
  226. package/dist/bin/shell/chunks/chunk-47IFMQYS.js +3 -0
  227. package/dist/bin/shell/chunks/chunk-4JF56A3P.js +15 -0
  228. package/dist/bin/shell/chunks/chunk-5SKEZPTU.js +12 -0
  229. package/dist/bin/shell/chunks/chunk-67XYNGRV.js +9 -0
  230. package/dist/bin/shell/chunks/chunk-6ESRNSO7.js +7 -0
  231. package/dist/bin/shell/chunks/chunk-6KHZX4HU.js +12 -0
  232. package/dist/bin/shell/chunks/chunk-7FGDUBSN.js +14 -0
  233. package/dist/bin/shell/chunks/chunk-7JZKVC3F.js +2 -0
  234. package/dist/bin/shell/chunks/chunk-7PPAWLUI.js +12 -0
  235. package/dist/bin/shell/chunks/chunk-7PUOS2OO.js +143 -0
  236. package/dist/bin/shell/chunks/chunk-7VWOECJ3.js +101 -0
  237. package/dist/bin/shell/chunks/chunk-7WBCA2BB.js +3 -0
  238. package/dist/bin/shell/chunks/chunk-AGKL4LDL.js +4 -0
  239. package/dist/bin/shell/chunks/chunk-AI7JUA46.js +13 -0
  240. package/dist/bin/shell/chunks/chunk-AJF3OBTR.js +4 -0
  241. package/dist/bin/shell/chunks/chunk-B2DRBHGQ.js +3 -0
  242. package/dist/bin/shell/chunks/chunk-B2GCIQI2.js +16 -0
  243. package/dist/bin/shell/chunks/chunk-B6WWC6K3.js +9 -0
  244. package/dist/bin/shell/chunks/chunk-BIJXTWZ4.js +3 -0
  245. package/dist/bin/shell/chunks/chunk-CC2AQ6B7.js +15 -0
  246. package/dist/bin/shell/chunks/chunk-CL7IYCGG.js +20 -0
  247. package/dist/bin/shell/chunks/chunk-CMTQFWZK.js +5 -0
  248. package/dist/bin/shell/chunks/chunk-CPKBPQ2C.js +3 -0
  249. package/dist/bin/shell/chunks/chunk-DJAX3ZRG.js +8 -0
  250. package/dist/bin/shell/chunks/chunk-DN2YCFOR.js +3 -0
  251. package/dist/bin/shell/chunks/chunk-DYIBFLS3.js +17 -0
  252. package/dist/bin/shell/chunks/chunk-DZAFUADN.js +36 -0
  253. package/dist/bin/shell/chunks/chunk-F3UDTTI7.js +13 -0
  254. package/dist/bin/shell/chunks/chunk-FHMIEBRM.js +6 -0
  255. package/dist/bin/shell/chunks/chunk-FONAGXRJ.js +17 -0
  256. package/dist/bin/shell/chunks/chunk-FPWHWWXO.js +8 -0
  257. package/dist/bin/shell/chunks/chunk-FUT3X2GJ.js +9 -0
  258. package/dist/bin/shell/chunks/chunk-G4AUMZUY.js +4 -0
  259. package/dist/bin/shell/chunks/chunk-GA5TPRMF.js +34 -0
  260. package/dist/bin/shell/chunks/chunk-GOWX7VPU.js +7 -0
  261. package/dist/bin/shell/chunks/chunk-GQKQEK5N.js +11 -0
  262. package/dist/bin/shell/chunks/chunk-GR4ZHKXI.js +3 -0
  263. package/dist/bin/shell/chunks/chunk-HDWHYM2T.js +18 -0
  264. package/dist/bin/shell/chunks/chunk-HQ63MFHG.js +34 -0
  265. package/dist/bin/shell/chunks/chunk-HW2VJKFH.js +4 -0
  266. package/dist/bin/shell/chunks/chunk-HWI42GQO.js +7 -0
  267. package/dist/bin/shell/chunks/chunk-HZGHQZSY.js +10 -0
  268. package/dist/bin/shell/chunks/chunk-I4IRHQDW.js +3 -0
  269. package/dist/bin/shell/chunks/chunk-I57EACSL.js +3 -0
  270. package/dist/bin/shell/chunks/chunk-JELR4642.js +21 -0
  271. package/dist/bin/shell/chunks/chunk-JQM3DKCH.js +12 -0
  272. package/dist/bin/shell/chunks/chunk-K27FY3ES.js +3 -0
  273. package/dist/bin/shell/chunks/chunk-KG2KXL4Y.js +3 -0
  274. package/dist/bin/shell/chunks/chunk-KI54R2QB.js +3 -0
  275. package/dist/bin/shell/chunks/chunk-KP2UH5CJ.js +22 -0
  276. package/dist/bin/shell/chunks/chunk-KUMHQGUR.js +3 -0
  277. package/dist/bin/shell/chunks/chunk-LE2XKKGQ.js +7 -0
  278. package/dist/bin/shell/chunks/chunk-LJQIAFWS.js +5 -0
  279. package/dist/bin/shell/chunks/chunk-LXFMIXGA.js +3 -0
  280. package/dist/bin/shell/chunks/chunk-M7SIPZZZ.js +22 -0
  281. package/dist/bin/shell/chunks/chunk-MF3GVFLC.js +11 -0
  282. package/dist/bin/shell/chunks/chunk-MROECM42.js +3 -0
  283. package/dist/bin/shell/chunks/chunk-MUFNRCMY.js +24 -0
  284. package/dist/bin/shell/chunks/chunk-MVBK66TR.js +22 -0
  285. package/dist/bin/shell/chunks/chunk-MYTNZ7MA.js +7 -0
  286. package/dist/bin/shell/chunks/chunk-N26Y42L6.js +10 -0
  287. package/dist/bin/shell/chunks/chunk-NE4R2FVV.js +5 -0
  288. package/dist/bin/shell/chunks/chunk-NLU5LALY.js +37 -0
  289. package/dist/bin/shell/chunks/chunk-NXUXZWS5.js +7 -0
  290. package/dist/bin/shell/chunks/chunk-O2BCKSMK.js +3 -0
  291. package/dist/bin/shell/chunks/chunk-OLEQNRKX.js +8 -0
  292. package/dist/bin/shell/chunks/chunk-OUQKFRVR.js +6 -0
  293. package/dist/bin/shell/chunks/chunk-OXLC2WWX.js +26 -0
  294. package/dist/bin/shell/chunks/chunk-OYXHOZZ4.js +15 -0
  295. package/dist/bin/shell/chunks/chunk-PBOVSFTJ.js +3 -0
  296. package/dist/bin/shell/chunks/chunk-PPVF2N6C.js +3 -0
  297. package/dist/bin/shell/chunks/chunk-PQ2INDRF.js +87 -0
  298. package/dist/bin/shell/chunks/chunk-PXP4YYZA.js +13 -0
  299. package/dist/bin/shell/chunks/chunk-PZQVSQX6.js +4 -0
  300. package/dist/bin/shell/chunks/chunk-Q2GOPGDA.js +6 -0
  301. package/dist/bin/shell/chunks/chunk-Q3LE3Y66.js +13 -0
  302. package/dist/bin/shell/chunks/chunk-QES5OSUC.js +3 -0
  303. package/dist/bin/shell/chunks/chunk-QFTZKD5O.js +13 -0
  304. package/dist/bin/shell/chunks/chunk-QL33F2W6.js +8 -0
  305. package/dist/bin/shell/chunks/chunk-QMPZXXEK.js +8 -0
  306. package/dist/bin/shell/chunks/chunk-QYZN33JA.js +3 -0
  307. package/dist/bin/shell/chunks/chunk-R2J5MJOM.js +20 -0
  308. package/dist/bin/shell/chunks/chunk-RPUFEP5O.js +65 -0
  309. package/dist/bin/shell/chunks/chunk-RVPTAYDS.js +4 -0
  310. package/dist/bin/shell/chunks/chunk-SC5TEGMM.js +12 -0
  311. package/dist/bin/shell/chunks/chunk-SDGPS6XI.js +10 -0
  312. package/dist/bin/shell/chunks/chunk-TW2IJRUF.js +3 -0
  313. package/dist/bin/shell/chunks/chunk-TYBXHT6W.js +10 -0
  314. package/dist/bin/shell/chunks/chunk-V2XF3TTW.js +276 -0
  315. package/dist/bin/shell/chunks/chunk-V4U26ZWL.js +16 -0
  316. package/dist/bin/shell/chunks/chunk-VTAMGD42.js +3 -0
  317. package/dist/bin/shell/chunks/chunk-WAJVRK5B.js +16 -0
  318. package/dist/bin/shell/chunks/chunk-WEHA3JFD.js +3 -0
  319. package/dist/bin/shell/chunks/chunk-WFHYGSLJ.js +6 -0
  320. package/dist/bin/shell/chunks/chunk-WFVCEB5T.js +3 -0
  321. package/dist/bin/shell/chunks/chunk-YERKK5B3.js +4 -0
  322. package/dist/bin/shell/chunks/chunk-YIANER7Y.js +8 -0
  323. package/dist/bin/shell/chunks/chunk-YJ5OCPSK.js +7 -0
  324. package/dist/bin/shell/chunks/chunk-YOIFOOGX.js +9 -0
  325. package/dist/bin/shell/chunks/chunk-YQEKKZTU.js +12 -0
  326. package/dist/bin/shell/chunks/chunk-YUZRUF5F.js +10 -0
  327. package/dist/bin/shell/chunks/chunk-ZMGLTHSU.js +15 -0
  328. package/dist/bin/shell/chunks/clear-OE52K3TM.js +3 -0
  329. package/dist/bin/shell/chunks/column-AJFK3TWF.js +3 -0
  330. package/dist/bin/shell/chunks/comm-URDMZCXL.js +3 -0
  331. package/dist/bin/shell/chunks/cp-OMVKM35F.js +3 -0
  332. package/dist/bin/shell/chunks/curl-NHNZ46BU.js +31 -0
  333. package/dist/bin/shell/chunks/cut-42X6363P.js +3 -0
  334. package/dist/bin/shell/chunks/date-6MQGVWDY.js +3 -0
  335. package/dist/bin/shell/chunks/diff-YXZZCUSQ.js +3 -0
  336. package/dist/bin/shell/chunks/dirname-TPUFCYF6.js +3 -0
  337. package/dist/bin/shell/chunks/dist-5MWO25Y4.js +141 -0
  338. package/dist/bin/shell/chunks/du-LUFPVLNW.js +3 -0
  339. package/dist/bin/shell/chunks/echo-NYDCCFWB.js +3 -0
  340. package/dist/bin/shell/chunks/env-2TSVF4W7.js +3 -0
  341. package/dist/bin/shell/chunks/expand-IQRKKT7D.js +3 -0
  342. package/dist/bin/shell/chunks/expr-NNMDHOCN.js +3 -0
  343. package/dist/bin/shell/chunks/file-4T64QNLS.js +3 -0
  344. package/dist/bin/shell/chunks/find-AWH2KOY7.js +3 -0
  345. package/dist/bin/shell/chunks/flag-coverage-J2ZHA465.js +3 -0
  346. package/dist/bin/shell/chunks/fold-YEY7X54W.js +3 -0
  347. package/dist/bin/shell/chunks/grep-CVU5V66H.js +3 -0
  348. package/dist/bin/shell/chunks/gzip-FDPA6EKG.js +3 -0
  349. package/dist/bin/shell/chunks/head-QKVY3SIO.js +3 -0
  350. package/dist/bin/shell/chunks/help-HVIDHJ6M.js +3 -0
  351. package/dist/bin/shell/chunks/history-3HAU45KT.js +3 -0
  352. package/dist/bin/shell/chunks/hostname-2I76DUQL.js +3 -0
  353. package/dist/bin/shell/chunks/html-to-markdown-XUMA42ZC.js +3 -0
  354. package/dist/bin/shell/chunks/join-34DX7YK5.js +3 -0
  355. package/dist/bin/shell/chunks/jq-V7OTAVU5.js +3 -0
  356. package/dist/bin/shell/chunks/js-exec-DJQLXWCS.js +99 -0
  357. package/dist/bin/shell/chunks/ln-B35EKC2Q.js +3 -0
  358. package/dist/bin/shell/chunks/ls-Q6ZZ6SQ2.js +3 -0
  359. package/dist/bin/shell/chunks/md5sum-Z6KAYGDK.js +3 -0
  360. package/dist/bin/shell/chunks/mkdir-74BP5NTG.js +3 -0
  361. package/dist/bin/shell/chunks/mv-76LAHXFR.js +3 -0
  362. package/dist/bin/shell/chunks/nl-4IZRRT7U.js +3 -0
  363. package/dist/bin/shell/chunks/od-2GXD4D5K.js +3 -0
  364. package/dist/bin/shell/chunks/paste-DWWA3JTW.js +3 -0
  365. package/dist/bin/shell/chunks/printf-YXCSED2H.js +3 -0
  366. package/dist/bin/shell/chunks/pwd-YKLNXWZI.js +3 -0
  367. package/dist/bin/shell/chunks/python3-JCJHSX4Z.js +14 -0
  368. package/dist/bin/shell/chunks/readlink-EHXJNW62.js +3 -0
  369. package/dist/bin/shell/chunks/rev-CZTQCNOZ.js +3 -0
  370. package/dist/bin/shell/chunks/rg-PXNKNIMY.js +3 -0
  371. package/dist/bin/shell/chunks/rm-3PLW4O4B.js +3 -0
  372. package/dist/bin/shell/chunks/rmdir-7ZIVFZJX.js +3 -0
  373. package/dist/bin/shell/chunks/sed-4LVDFHIJ.js +3 -0
  374. package/dist/bin/shell/chunks/seq-X2EAOGV5.js +3 -0
  375. package/dist/bin/shell/chunks/sha1sum-CATBXX76.js +3 -0
  376. package/dist/bin/shell/chunks/sha256sum-YGSNBVY3.js +3 -0
  377. package/dist/bin/shell/chunks/sleep-DVFE2GSF.js +3 -0
  378. package/dist/bin/shell/chunks/sort-HBOCBBJQ.js +3 -0
  379. package/dist/bin/shell/chunks/split-ZNNNHKSP.js +3 -0
  380. package/dist/bin/shell/chunks/sqlite3-KP42NNIY.js +3 -0
  381. package/dist/bin/shell/chunks/stat-LROLDXHH.js +3 -0
  382. package/dist/bin/shell/chunks/strings-CNUK76JL.js +3 -0
  383. package/dist/bin/shell/chunks/tac-DG4BMYM5.js +3 -0
  384. package/dist/bin/shell/chunks/tail-UOTUV25D.js +3 -0
  385. package/dist/bin/shell/chunks/tar-7HGZIMZD.js +3 -0
  386. package/dist/bin/shell/chunks/tee-L4HKV5PD.js +3 -0
  387. package/dist/bin/shell/chunks/time-LF7BTSK5.js +3 -0
  388. package/dist/bin/shell/chunks/timeout-YGFHQJKX.js +3 -0
  389. package/dist/bin/shell/chunks/touch-TVQAUQOG.js +3 -0
  390. package/dist/bin/shell/chunks/tr-PVFO6FRY.js +3 -0
  391. package/dist/bin/shell/chunks/tree-ZGP6NPGS.js +3 -0
  392. package/dist/bin/shell/chunks/true-KFTJGQLQ.js +3 -0
  393. package/dist/bin/shell/chunks/unexpand-JPOQORZF.js +3 -0
  394. package/dist/bin/shell/chunks/uniq-JMHDIJXT.js +3 -0
  395. package/dist/bin/shell/chunks/wc-3KLVOCI2.js +3 -0
  396. package/dist/bin/shell/chunks/which-4TPGVSBZ.js +3 -0
  397. package/dist/bin/shell/chunks/whoami-B5HDVKW6.js +3 -0
  398. package/dist/bin/shell/chunks/xan-WW53ETXT.js +3 -0
  399. package/dist/bin/shell/chunks/xan-view-PD26QEFN.js +3 -0
  400. package/dist/bin/shell/chunks/xargs-4AMMXFXL.js +3 -0
  401. package/dist/bin/shell/chunks/yq-MYZOS2WN.js +3 -0
  402. package/dist/bin/shell/shell.js +834 -0
  403. package/dist/bounded-builder.d.ts +37 -0
  404. package/dist/browser.d.ts +23 -0
  405. package/dist/bundle/browser.js +1576 -0
  406. package/dist/bundle/chunks/alias-T5TO5GWK.js +2 -0
  407. package/dist/bundle/chunks/awk2-W6BNZEJN.js +2 -0
  408. package/dist/bundle/chunks/base64-MHVQ5XHI.js +2 -0
  409. package/dist/bundle/chunks/basename-SJZQ5W65.js +2 -0
  410. package/dist/bundle/chunks/bash-HIEWVHJ2.js +2 -0
  411. package/dist/bundle/chunks/cat-VZBWBIJB.js +2 -0
  412. package/dist/bundle/chunks/chmod-WM2JFFQC.js +2 -0
  413. package/dist/bundle/chunks/chunk-24NLAR7R.js +36 -0
  414. package/dist/bundle/chunks/chunk-26GP3ACY.js +12 -0
  415. package/dist/bundle/chunks/chunk-2KNTH3KH.js +9 -0
  416. package/dist/bundle/chunks/chunk-2SMD2AUA.js +3 -0
  417. package/dist/bundle/chunks/chunk-2TSZPVPI.js +21 -0
  418. package/dist/bundle/chunks/chunk-2VWG4LDT.js +11 -0
  419. package/dist/bundle/chunks/chunk-3WASQYTF.js +11 -0
  420. package/dist/bundle/chunks/chunk-44YCJWNC.js +6 -0
  421. package/dist/bundle/chunks/chunk-4EDQZIAN.js +5 -0
  422. package/dist/bundle/chunks/chunk-4MJ7VJG4.js +21 -0
  423. package/dist/bundle/chunks/chunk-4MZPEZTU.js +3 -0
  424. package/dist/bundle/chunks/chunk-57LGFT4S.js +3 -0
  425. package/dist/bundle/chunks/chunk-5I5U6IYI.js +142 -0
  426. package/dist/bundle/chunks/chunk-6DDRR56B.js +33 -0
  427. package/dist/bundle/chunks/chunk-6QF3PCMO.js +8 -0
  428. package/dist/bundle/chunks/chunk-6RK4AAB7.js +21 -0
  429. package/dist/bundle/chunks/chunk-6WGIZV3E.js +13 -0
  430. package/dist/bundle/chunks/chunk-73JQKNZT.js +33 -0
  431. package/dist/bundle/chunks/chunk-7AISL3XV.js +12 -0
  432. package/dist/bundle/chunks/chunk-7EUWTCWK.js +2 -0
  433. package/dist/bundle/chunks/chunk-7IJWBG4I.js +2 -0
  434. package/dist/bundle/chunks/chunk-7O2RDO2R.js +14 -0
  435. package/dist/bundle/chunks/chunk-A4R2GWRF.js +9 -0
  436. package/dist/bundle/chunks/chunk-AGH5UJJI.js +4 -0
  437. package/dist/bundle/chunks/chunk-ANCQ4SCV.js +2 -0
  438. package/dist/bundle/chunks/chunk-ASE6AYV3.js +17 -0
  439. package/dist/bundle/chunks/chunk-AYSZ5MAE.js +2 -0
  440. package/dist/bundle/chunks/chunk-BKUWXPEM.js +2 -0
  441. package/dist/bundle/chunks/chunk-BRJERIF4.js +2 -0
  442. package/dist/bundle/chunks/chunk-DAKEIWT3.js +21 -0
  443. package/dist/bundle/chunks/chunk-DLL7UR66.js +2 -0
  444. package/dist/bundle/chunks/chunk-DMWNBCXJ.js +10 -0
  445. package/dist/bundle/chunks/chunk-DVSA72LH.js +2 -0
  446. package/dist/bundle/chunks/chunk-EJFBIRMD.js +6 -0
  447. package/dist/bundle/chunks/chunk-EZNS4GF7.js +9 -0
  448. package/dist/bundle/chunks/chunk-F6XU52K3.js +35 -0
  449. package/dist/bundle/chunks/chunk-FHC24QSK.js +7 -0
  450. package/dist/bundle/chunks/chunk-FIMF2TLE.js +20 -0
  451. package/dist/bundle/chunks/chunk-FOCWZZDE.js +2 -0
  452. package/dist/bundle/chunks/chunk-FQUVK4Q5.js +11 -0
  453. package/dist/bundle/chunks/chunk-FSJ6TTCC.js +19 -0
  454. package/dist/bundle/chunks/chunk-FT6ODGOU.js +2 -0
  455. package/dist/bundle/chunks/chunk-FTET43KM.js +2 -0
  456. package/dist/bundle/chunks/chunk-FX4RBUYU.js +5 -0
  457. package/dist/bundle/chunks/chunk-FZRQOL3C.js +7 -0
  458. package/dist/bundle/chunks/chunk-FZZL53S2.js +275 -0
  459. package/dist/bundle/chunks/chunk-GN6CQ3J4.js +2 -0
  460. package/dist/bundle/chunks/chunk-HDRAUQK2.js +2 -0
  461. package/dist/bundle/chunks/chunk-HP7HWZ2S.js +15 -0
  462. package/dist/bundle/chunks/chunk-HRIJVWZS.js +14 -0
  463. package/dist/bundle/chunks/chunk-HXWB4Z5X.js +7 -0
  464. package/dist/bundle/chunks/chunk-ICLA3MUR.js +3 -0
  465. package/dist/bundle/chunks/chunk-IXFQXNL4.js +7 -0
  466. package/dist/bundle/chunks/chunk-KIGPB52X.js +2 -0
  467. package/dist/bundle/chunks/chunk-L2UW7DWF.js +2 -0
  468. package/dist/bundle/chunks/chunk-LI6PTSPD.js +9 -0
  469. package/dist/bundle/chunks/chunk-LPJEKUCB.js +8 -0
  470. package/dist/bundle/chunks/chunk-LSLPJOYM.js +3 -0
  471. package/dist/bundle/chunks/chunk-LVDUF74R.js +7 -0
  472. package/dist/bundle/chunks/chunk-MLIO3BK2.js +7 -0
  473. package/dist/bundle/chunks/chunk-MQKGGNPS.js +16 -0
  474. package/dist/bundle/chunks/chunk-N3A4JVFJ.js +2 -0
  475. package/dist/bundle/chunks/chunk-NBNI7G66.js +8 -0
  476. package/dist/bundle/chunks/chunk-NCUTH6QL.js +2 -0
  477. package/dist/bundle/chunks/chunk-OQ7C4FYO.js +2 -0
  478. package/dist/bundle/chunks/chunk-P57S6Z6R.js +6 -0
  479. package/dist/bundle/chunks/chunk-PCPW54JH.js +7 -0
  480. package/dist/bundle/chunks/chunk-PJM5C3HZ.js +25 -0
  481. package/dist/bundle/chunks/chunk-PPEXVPHR.js +19 -0
  482. package/dist/bundle/chunks/chunk-Q4JSJ3KQ.js +4 -0
  483. package/dist/bundle/chunks/chunk-QAYAQNCG.js +23 -0
  484. package/dist/bundle/chunks/chunk-QHDBQA5N.js +9 -0
  485. package/dist/bundle/chunks/chunk-QIQMJJZ4.js +4 -0
  486. package/dist/bundle/chunks/chunk-QJ7OXJAZ.js +6 -0
  487. package/dist/bundle/chunks/chunk-QJFYYEFV.js +11 -0
  488. package/dist/bundle/chunks/chunk-R2FBRMDU.js +14 -0
  489. package/dist/bundle/chunks/chunk-ROAWFE6V.js +5 -0
  490. package/dist/bundle/chunks/chunk-RPKJJFGZ.js +14 -0
  491. package/dist/bundle/chunks/chunk-S3ENGQML.js +15 -0
  492. package/dist/bundle/chunks/chunk-SBBYKIYU.js +3 -0
  493. package/dist/bundle/chunks/chunk-SGX4WOAM.js +2 -0
  494. package/dist/bundle/chunks/chunk-SHKOQWO4.js +3 -0
  495. package/dist/bundle/chunks/chunk-SIOONII3.js +2 -0
  496. package/dist/bundle/chunks/chunk-STHBFACM.js +1 -0
  497. package/dist/bundle/chunks/chunk-SX2HC7SO.js +2 -0
  498. package/dist/bundle/chunks/chunk-T6DNSPYO.js +100 -0
  499. package/dist/bundle/chunks/chunk-TBVD66LC.js +10 -0
  500. package/dist/bundle/chunks/chunk-TDD4NFYE.js +2 -0
  501. package/dist/bundle/chunks/chunk-TVCZIH6M.js +8 -0
  502. package/dist/bundle/chunks/chunk-U4K5ZDWK.js +9 -0
  503. package/dist/bundle/chunks/chunk-UC76ZOWM.js +15 -0
  504. package/dist/bundle/chunks/chunk-UIJUTQPH.js +3 -0
  505. package/dist/bundle/chunks/chunk-ULXTDFQC.js +2 -0
  506. package/dist/bundle/chunks/chunk-UTKGYVUZ.js +7 -0
  507. package/dist/bundle/chunks/chunk-UUIYAOD4.js +2 -0
  508. package/dist/bundle/chunks/chunk-VJ6UXG2R.js +64 -0
  509. package/dist/bundle/chunks/chunk-W2Z6LYL6.js +11 -0
  510. package/dist/bundle/chunks/chunk-W5DWRFSU.js +2 -0
  511. package/dist/bundle/chunks/chunk-WN54B5NQ.js +12 -0
  512. package/dist/bundle/chunks/chunk-WNH3HOQA.js +2 -0
  513. package/dist/bundle/chunks/chunk-WXPNKIIH.js +2 -0
  514. package/dist/bundle/chunks/chunk-WZQNMEQW.js +2 -0
  515. package/dist/bundle/chunks/chunk-XV2V56NQ.js +12 -0
  516. package/dist/bundle/chunks/chunk-XVSR5HHH.js +6 -0
  517. package/dist/bundle/chunks/chunk-XXBIOG4R.js +5 -0
  518. package/dist/bundle/chunks/chunk-Y62SXZKJ.js +12 -0
  519. package/dist/bundle/chunks/chunk-YEYSCLSJ.js +3 -0
  520. package/dist/bundle/chunks/chunk-YJKHREBZ.js +11 -0
  521. package/dist/bundle/chunks/chunk-YUSFCOM7.js +2 -0
  522. package/dist/bundle/chunks/chunk-ZBUZKIPX.js +6 -0
  523. package/dist/bundle/chunks/chunk-ZDPFA4L3.js +6 -0
  524. package/dist/bundle/chunks/chunk-ZT3WF5R7.js +16 -0
  525. package/dist/bundle/chunks/chunk-ZXFELXJH.js +6 -0
  526. package/dist/bundle/chunks/clear-KPIUNI6K.js +2 -0
  527. package/dist/bundle/chunks/column-QJI65SH2.js +2 -0
  528. package/dist/bundle/chunks/comm-DTWKU2MC.js +2 -0
  529. package/dist/bundle/chunks/cp-2KZIPZJS.js +2 -0
  530. package/dist/bundle/chunks/curl-K4WT7UPN.js +30 -0
  531. package/dist/bundle/chunks/cut-FMDNVWQN.js +2 -0
  532. package/dist/bundle/chunks/date-7OEDRA27.js +2 -0
  533. package/dist/bundle/chunks/diff-CSARC7WF.js +2 -0
  534. package/dist/bundle/chunks/dirname-Z2ZMOOW2.js +2 -0
  535. package/dist/bundle/chunks/du-7AZCLKR6.js +2 -0
  536. package/dist/bundle/chunks/echo-PLLZYM2L.js +2 -0
  537. package/dist/bundle/chunks/env-VUUMB47B.js +2 -0
  538. package/dist/bundle/chunks/expand-J3VOSOMK.js +2 -0
  539. package/dist/bundle/chunks/expr-XSBELPAC.js +2 -0
  540. package/dist/bundle/chunks/file-URNAD6FQ.js +2 -0
  541. package/dist/bundle/chunks/find-END3EAHV.js +2 -0
  542. package/dist/bundle/chunks/flag-coverage-DPSAPFXA.js +2 -0
  543. package/dist/bundle/chunks/fold-QJBPHRFJ.js +2 -0
  544. package/dist/bundle/chunks/grep-4AYF3A5J.js +2 -0
  545. package/dist/bundle/chunks/gzip-RQOBR22H.js +2 -0
  546. package/dist/bundle/chunks/head-6UIPFWVJ.js +2 -0
  547. package/dist/bundle/chunks/help-QDDMBDU7.js +2 -0
  548. package/dist/bundle/chunks/history-3N762S3K.js +2 -0
  549. package/dist/bundle/chunks/hostname-CESD3CQR.js +2 -0
  550. package/dist/bundle/chunks/html-to-markdown-PE6BPRPA.js +2 -0
  551. package/dist/bundle/chunks/join-C2B6NGXH.js +2 -0
  552. package/dist/bundle/chunks/jq-NY7PCVMH.js +2 -0
  553. package/dist/bundle/chunks/js-exec-XKF2B7C3.js +98 -0
  554. package/dist/bundle/chunks/js-exec-worker.js +4809 -0
  555. package/dist/bundle/chunks/ln-OPY2ZVGQ.js +2 -0
  556. package/dist/bundle/chunks/ls-ZPXGZX63.js +2 -0
  557. package/dist/bundle/chunks/md5sum-JEDX55KS.js +2 -0
  558. package/dist/bundle/chunks/mkdir-WDDKK2P3.js +2 -0
  559. package/dist/bundle/chunks/mv-ZF6UBVRB.js +2 -0
  560. package/dist/bundle/chunks/nl-IELOWYJG.js +2 -0
  561. package/dist/bundle/chunks/od-Z4AIL3P4.js +2 -0
  562. package/dist/bundle/chunks/paste-ZNHNSRBW.js +2 -0
  563. package/dist/bundle/chunks/printf-B2NSYQ3N.js +2 -0
  564. package/dist/bundle/chunks/pwd-76BPYV5F.js +2 -0
  565. package/dist/bundle/chunks/python3-F5S5TYGS.js +13 -0
  566. package/dist/bundle/chunks/readlink-U5OM5A3M.js +2 -0
  567. package/dist/bundle/chunks/rev-EPOS3MFH.js +2 -0
  568. package/dist/bundle/chunks/rg-NAMXBYKS.js +2 -0
  569. package/dist/bundle/chunks/rm-JQ4GDKDD.js +2 -0
  570. package/dist/bundle/chunks/rmdir-YJKPQVCK.js +2 -0
  571. package/dist/bundle/chunks/sed-LIRH26EA.js +2 -0
  572. package/dist/bundle/chunks/seq-B6KDLMYQ.js +2 -0
  573. package/dist/bundle/chunks/sha1sum-BLPZJ6MP.js +2 -0
  574. package/dist/bundle/chunks/sha256sum-VJZ4PHQ4.js +2 -0
  575. package/dist/bundle/chunks/sleep-PPRBTSVR.js +2 -0
  576. package/dist/bundle/chunks/sort-CB5GO7XH.js +2 -0
  577. package/dist/bundle/chunks/split-JICLAMP6.js +2 -0
  578. package/dist/bundle/chunks/sqlite3-4EZ4GXVD.js +2 -0
  579. package/dist/bundle/chunks/sqlite3-worker.js +1928 -0
  580. package/dist/bundle/chunks/stat-LXFZND2P.js +2 -0
  581. package/dist/bundle/chunks/strings-VLFTYX2Z.js +2 -0
  582. package/dist/bundle/chunks/tac-YXC4HBTR.js +2 -0
  583. package/dist/bundle/chunks/tail-UBGSN4JF.js +2 -0
  584. package/dist/bundle/chunks/tar-B72KU357.js +2 -0
  585. package/dist/bundle/chunks/tee-OOWSWHRQ.js +2 -0
  586. package/dist/bundle/chunks/time-NERE2JJ2.js +2 -0
  587. package/dist/bundle/chunks/timeout-C6WDYPLV.js +2 -0
  588. package/dist/bundle/chunks/touch-W4DF6Z4T.js +2 -0
  589. package/dist/bundle/chunks/tr-UI2LA3GA.js +2 -0
  590. package/dist/bundle/chunks/tree-7OOL2MH6.js +2 -0
  591. package/dist/bundle/chunks/true-QUBPEGGU.js +2 -0
  592. package/dist/bundle/chunks/unexpand-YD5BWFH4.js +2 -0
  593. package/dist/bundle/chunks/uniq-PAEPA27E.js +2 -0
  594. package/dist/bundle/chunks/wc-7WVM7GV4.js +2 -0
  595. package/dist/bundle/chunks/which-UWVKETYW.js +2 -0
  596. package/dist/bundle/chunks/whoami-KR6E7UIR.js +2 -0
  597. package/dist/bundle/chunks/worker.js +3330 -0
  598. package/dist/bundle/chunks/xan-UIGVJCMA.js +2 -0
  599. package/dist/bundle/chunks/xan-view-FOCYCKZQ.js +2 -0
  600. package/dist/bundle/chunks/xargs-VQEXRD3C.js +2 -0
  601. package/dist/bundle/chunks/yq-FGNXZCGX.js +2 -0
  602. package/dist/bundle/index.cjs +2237 -0
  603. package/dist/bundle/index.js +809 -0
  604. package/dist/commands/alias/alias.d.ts +6 -0
  605. package/dist/commands/awk/ast.d.ts +202 -0
  606. package/dist/commands/awk/awk2.d.ts +9 -0
  607. package/dist/commands/awk/builtins.d.ts +17 -0
  608. package/dist/commands/awk/interpreter/context.d.ts +88 -0
  609. package/dist/commands/awk/interpreter/expressions.d.ts +17 -0
  610. package/dist/commands/awk/interpreter/fields.d.ts +25 -0
  611. package/dist/commands/awk/interpreter/index.d.ts +8 -0
  612. package/dist/commands/awk/interpreter/interpreter.d.ts +54 -0
  613. package/dist/commands/awk/interpreter/statements.d.ts +11 -0
  614. package/dist/commands/awk/interpreter/type-coercion.d.ts +32 -0
  615. package/dist/commands/awk/interpreter/types.d.ts +13 -0
  616. package/dist/commands/awk/interpreter/variables.d.ts +35 -0
  617. package/dist/commands/awk/lexer.d.ts +101 -0
  618. package/dist/commands/awk/parser2-print.d.ts +38 -0
  619. package/dist/commands/awk/parser2.d.ts +96 -0
  620. package/dist/commands/base64/base64.d.ts +7 -0
  621. package/dist/commands/basename/basename.d.ts +4 -0
  622. package/dist/commands/bash/bash.d.ts +6 -0
  623. package/dist/commands/browser-excluded.d.ts +16 -0
  624. package/dist/commands/cat/cat.d.ts +4 -0
  625. package/dist/commands/chmod/chmod.d.ts +4 -0
  626. package/dist/commands/clear/clear.d.ts +4 -0
  627. package/dist/commands/column/column.d.ts +11 -0
  628. package/dist/commands/comm/comm.d.ts +12 -0
  629. package/dist/commands/compression/codec-budget.d.ts +35 -0
  630. package/dist/commands/cp/cp.d.ts +4 -0
  631. package/dist/commands/curl/curl.d.ts +8 -0
  632. package/dist/commands/curl/form.d.ts +23 -0
  633. package/dist/commands/curl/help.d.ts +9 -0
  634. package/dist/commands/curl/parse.d.ts +9 -0
  635. package/dist/commands/curl/response-formatting.d.ts +20 -0
  636. package/dist/commands/curl/types.d.ts +70 -0
  637. package/dist/commands/cut/cut.d.ts +4 -0
  638. package/dist/commands/date/date.d.ts +7 -0
  639. package/dist/commands/diff/diff.d.ts +7 -0
  640. package/dist/commands/dirname/dirname.d.ts +4 -0
  641. package/dist/commands/du/du.d.ts +4 -0
  642. package/dist/commands/duration.d.ts +5 -0
  643. package/dist/commands/echo/echo.d.ts +4 -0
  644. package/dist/commands/env/env.d.ts +6 -0
  645. package/dist/commands/expand/expand.d.ts +12 -0
  646. package/dist/commands/expand/unexpand.d.ts +12 -0
  647. package/dist/commands/expr/expr.d.ts +9 -0
  648. package/dist/commands/file/file.d.ts +9 -0
  649. package/dist/commands/find/find.d.ts +4 -0
  650. package/dist/commands/find/matcher.d.ts +53 -0
  651. package/dist/commands/find/parser.d.ts +2 -0
  652. package/dist/commands/find/types.d.ts +89 -0
  653. package/dist/commands/flag-coverage.d.ts +2 -0
  654. package/dist/commands/fold/fold.d.ts +12 -0
  655. package/dist/commands/format-mode.d.ts +4 -0
  656. package/dist/commands/fuzz-flags-types.d.ts +17 -0
  657. package/dist/commands/fuzz-flags.d.ts +8 -0
  658. package/dist/commands/grep/grep.d.ts +8 -0
  659. package/dist/commands/gzip/gzip.d.ts +13 -0
  660. package/dist/commands/head/head-tail-shared.d.ts +38 -0
  661. package/dist/commands/head/head.d.ts +4 -0
  662. package/dist/commands/help/help.d.ts +4 -0
  663. package/dist/commands/help.d.ts +16 -0
  664. package/dist/commands/history/history.d.ts +4 -0
  665. package/dist/commands/hostname/hostname.d.ts +11 -0
  666. package/dist/commands/html-to-markdown/html-to-markdown.d.ts +9 -0
  667. package/dist/commands/join/join.d.ts +12 -0
  668. package/dist/commands/jq/jq.d.ts +9 -0
  669. package/dist/commands/js-exec/fetch-polyfill.d.ts +6 -0
  670. package/dist/commands/js-exec/js-exec-worker.d.ts +33 -0
  671. package/dist/commands/js-exec/js-exec.d.ts +13 -0
  672. package/dist/commands/js-exec/module-shims.d.ts +29 -0
  673. package/dist/commands/js-exec/path-polyfill.d.ts +6 -0
  674. package/dist/commands/ln/ln.d.ts +4 -0
  675. package/dist/commands/ls/ls.d.ts +4 -0
  676. package/dist/commands/md5sum/checksum.d.ts +7 -0
  677. package/dist/commands/md5sum/md5sum.d.ts +4 -0
  678. package/dist/commands/md5sum/sha1sum.d.ts +4 -0
  679. package/dist/commands/md5sum/sha256sum.d.ts +4 -0
  680. package/dist/commands/mkdir/mkdir.d.ts +4 -0
  681. package/dist/commands/mv/mv.d.ts +4 -0
  682. package/dist/commands/nl/nl.d.ts +12 -0
  683. package/dist/commands/od/od.d.ts +12 -0
  684. package/dist/commands/paste/paste.d.ts +4 -0
  685. package/dist/commands/printf/escapes.d.ts +27 -0
  686. package/dist/commands/printf/printf.d.ts +4 -0
  687. package/dist/commands/printf/strftime.d.ts +14 -0
  688. package/dist/commands/pwd/pwd.d.ts +4 -0
  689. package/dist/commands/python3/python3.d.ts +16 -0
  690. package/dist/commands/python3/worker.d.ts +31 -0
  691. package/dist/commands/query-engine/builtins/array-builtins.d.ts +20 -0
  692. package/dist/commands/query-engine/builtins/control-builtins.d.ts +18 -0
  693. package/dist/commands/query-engine/builtins/date-builtins.d.ts +15 -0
  694. package/dist/commands/query-engine/builtins/format-builtins.d.ts +11 -0
  695. package/dist/commands/query-engine/builtins/index-builtins.d.ts +16 -0
  696. package/dist/commands/query-engine/builtins/index.d.ts +17 -0
  697. package/dist/commands/query-engine/builtins/math-builtins.d.ts +15 -0
  698. package/dist/commands/query-engine/builtins/navigation-builtins.d.ts +18 -0
  699. package/dist/commands/query-engine/builtins/object-builtins.d.ts +15 -0
  700. package/dist/commands/query-engine/builtins/path-builtins.d.ts +20 -0
  701. package/dist/commands/query-engine/builtins/sql-builtins.d.ts +16 -0
  702. package/dist/commands/query-engine/builtins/string-builtins.d.ts +15 -0
  703. package/dist/commands/query-engine/builtins/type-builtins.d.ts +11 -0
  704. package/dist/commands/query-engine/evaluator.d.ts +62 -0
  705. package/dist/commands/query-engine/index.d.ts +8 -0
  706. package/dist/commands/query-engine/json-output.d.ts +11 -0
  707. package/dist/commands/query-engine/parser-types.d.ts +171 -0
  708. package/dist/commands/query-engine/parser.d.ts +14 -0
  709. package/dist/commands/query-engine/path-operations.d.ts +15 -0
  710. package/dist/commands/query-engine/safe-object.d.ts +84 -0
  711. package/dist/commands/query-engine/value-operations.d.ts +44 -0
  712. package/dist/commands/readlink/readlink.d.ts +4 -0
  713. package/dist/commands/registry.d.ts +56 -0
  714. package/dist/commands/rev/rev.d.ts +13 -0
  715. package/dist/commands/rg/file-types.d.ts +49 -0
  716. package/dist/commands/rg/gitignore.d.ts +98 -0
  717. package/dist/commands/rg/rg-options.d.ts +61 -0
  718. package/dist/commands/rg/rg-parser.d.ts +20 -0
  719. package/dist/commands/rg/rg-search.d.ts +15 -0
  720. package/dist/commands/rg/rg.d.ts +14 -0
  721. package/dist/commands/rm/rm.d.ts +4 -0
  722. package/dist/commands/rmdir/rmdir.d.ts +4 -0
  723. package/dist/commands/search-engine/index.d.ts +10 -0
  724. package/dist/commands/search-engine/matcher.d.ts +72 -0
  725. package/dist/commands/search-engine/regex.d.ts +46 -0
  726. package/dist/commands/sed/executor.d.ts +7 -0
  727. package/dist/commands/sed/lexer.d.ts +88 -0
  728. package/dist/commands/sed/parser.d.ts +21 -0
  729. package/dist/commands/sed/sed-regex.d.ts +23 -0
  730. package/dist/commands/sed/sed.d.ts +4 -0
  731. package/dist/commands/sed/types.d.ts +216 -0
  732. package/dist/commands/seq/seq.d.ts +16 -0
  733. package/dist/commands/sleep/sleep.d.ts +4 -0
  734. package/dist/commands/sort/comparator.d.ts +9 -0
  735. package/dist/commands/sort/parser.d.ts +11 -0
  736. package/dist/commands/sort/sort.d.ts +4 -0
  737. package/dist/commands/sort/types.d.ts +30 -0
  738. package/dist/commands/split/split.d.ts +12 -0
  739. package/dist/commands/sqlite3/formatters.d.ts +17 -0
  740. package/dist/commands/sqlite3/sqlite3.d.ts +24 -0
  741. package/dist/commands/sqlite3/worker.d.ts +50 -0
  742. package/dist/commands/sqlite3/worker.js +1928 -0
  743. package/dist/commands/stat/stat.d.ts +4 -0
  744. package/dist/commands/strings/strings.d.ts +12 -0
  745. package/dist/commands/tac/tac.d.ts +11 -0
  746. package/dist/commands/tail/tail.d.ts +4 -0
  747. package/dist/commands/tar/archive.d.ts +150 -0
  748. package/dist/commands/tar/bzip2-compress.d.ts +18 -0
  749. package/dist/commands/tar/tar-options.d.ts +37 -0
  750. package/dist/commands/tar/tar.d.ts +10 -0
  751. package/dist/commands/tee/tee.d.ts +4 -0
  752. package/dist/commands/time/time.d.ts +27 -0
  753. package/dist/commands/timeout/timeout.d.ts +4 -0
  754. package/dist/commands/touch/touch.d.ts +4 -0
  755. package/dist/commands/tr/tr.d.ts +4 -0
  756. package/dist/commands/tree/tree.d.ts +4 -0
  757. package/dist/commands/true/true.d.ts +6 -0
  758. package/dist/commands/uniq/uniq.d.ts +4 -0
  759. package/dist/commands/wc/wc.d.ts +4 -0
  760. package/dist/commands/which/which.d.ts +4 -0
  761. package/dist/commands/whoami/whoami.d.ts +11 -0
  762. package/dist/commands/worker-bridge/bridge-handler.d.ts +73 -0
  763. package/dist/commands/worker-bridge/protocol.d.ts +141 -0
  764. package/dist/commands/worker-bridge/sync-backend.d.ts +86 -0
  765. package/dist/commands/worker-request-controller.d.ts +36 -0
  766. package/dist/commands/xan/aggregation.d.ts +30 -0
  767. package/dist/commands/xan/bounded-output.d.ts +4 -0
  768. package/dist/commands/xan/column-selection.d.ts +20 -0
  769. package/dist/commands/xan/csv.d.ts +62 -0
  770. package/dist/commands/xan/moonblade-parser.d.ts +89 -0
  771. package/dist/commands/xan/moonblade-to-jq.d.ts +12 -0
  772. package/dist/commands/xan/moonblade-tokenizer.d.ts +32 -0
  773. package/dist/commands/xan/subcommands.d.ts +15 -0
  774. package/dist/commands/xan/xan-agg.d.ts +8 -0
  775. package/dist/commands/xan/xan-columns.d.ts +8 -0
  776. package/dist/commands/xan/xan-core.d.ts +10 -0
  777. package/dist/commands/xan/xan-data.d.ts +52 -0
  778. package/dist/commands/xan/xan-filter.d.ts +8 -0
  779. package/dist/commands/xan/xan-map.d.ts +11 -0
  780. package/dist/commands/xan/xan-reshape.d.ts +40 -0
  781. package/dist/commands/xan/xan-simple.d.ts +40 -0
  782. package/dist/commands/xan/xan-view.d.ts +12 -0
  783. package/dist/commands/xan/xan.d.ts +10 -0
  784. package/dist/commands/xargs/xargs.d.ts +4 -0
  785. package/dist/commands/yq/formats.d.ts +65 -0
  786. package/dist/commands/yq/yq.d.ts +13 -0
  787. package/dist/custom-commands.d.ts +65 -0
  788. package/dist/encoding.d.ts +131 -0
  789. package/dist/execution-output.d.ts +28 -0
  790. package/dist/execution-scope.d.ts +110 -0
  791. package/dist/fatal-execution-error.d.ts +27 -0
  792. package/dist/fs/encoding.d.ts +17 -0
  793. package/dist/fs/identity.d.ts +9 -0
  794. package/dist/fs/in-memory-fs/in-memory-fs.d.ts +98 -0
  795. package/dist/fs/in-memory-fs/index.d.ts +1 -0
  796. package/dist/fs/init.d.ts +22 -0
  797. package/dist/fs/interface.d.ts +255 -0
  798. package/dist/fs/mountable-fs/index.d.ts +1 -0
  799. package/dist/fs/mountable-fs/mountable-fs.d.ts +118 -0
  800. package/dist/fs/overlay-fs/apply.d.ts +22 -0
  801. package/dist/fs/overlay-fs/index.d.ts +1 -0
  802. package/dist/fs/overlay-fs/overlay-fs.d.ts +360 -0
  803. package/dist/fs/overlay-fs/overlay-tree.d.ts +188 -0
  804. package/dist/fs/path-utils.d.ts +48 -0
  805. package/dist/fs/read-write-fs/index.d.ts +1 -0
  806. package/dist/fs/read-write-fs/read-write-fs.d.ts +150 -0
  807. package/dist/fs/real-fs-utils.d.ts +90 -0
  808. package/dist/fs/sanitize-error.d.ts +19 -0
  809. package/dist/fs/traversal.d.ts +98 -0
  810. package/dist/index.d.cts +30 -0
  811. package/dist/index.d.ts +30 -0
  812. package/dist/interpreter/alias-expansion.d.ts +27 -0
  813. package/dist/interpreter/arithmetic.d.ts +24 -0
  814. package/dist/interpreter/assignment-expansion.d.ts +24 -0
  815. package/dist/interpreter/builtin-dispatch.d.ts +46 -0
  816. package/dist/interpreter/builtins/break.d.ts +6 -0
  817. package/dist/interpreter/builtins/cd.d.ts +6 -0
  818. package/dist/interpreter/builtins/compgen.d.ts +26 -0
  819. package/dist/interpreter/builtins/complete.d.ts +17 -0
  820. package/dist/interpreter/builtins/compopt.d.ts +28 -0
  821. package/dist/interpreter/builtins/continue.d.ts +6 -0
  822. package/dist/interpreter/builtins/declare-array-parsing.d.ts +18 -0
  823. package/dist/interpreter/builtins/declare-print.d.ts +39 -0
  824. package/dist/interpreter/builtins/declare.d.ts +35 -0
  825. package/dist/interpreter/builtins/dirs.d.ts +29 -0
  826. package/dist/interpreter/builtins/eval.d.ts +15 -0
  827. package/dist/interpreter/builtins/exit.d.ts +5 -0
  828. package/dist/interpreter/builtins/export.d.ts +14 -0
  829. package/dist/interpreter/builtins/getopts.d.ts +18 -0
  830. package/dist/interpreter/builtins/hash.d.ts +19 -0
  831. package/dist/interpreter/builtins/help.d.ts +12 -0
  832. package/dist/interpreter/builtins/index.d.ts +44 -0
  833. package/dist/interpreter/builtins/let.d.ts +18 -0
  834. package/dist/interpreter/builtins/local.d.ts +6 -0
  835. package/dist/interpreter/builtins/mapfile.d.ts +17 -0
  836. package/dist/interpreter/builtins/read.d.ts +6 -0
  837. package/dist/interpreter/builtins/return.d.ts +6 -0
  838. package/dist/interpreter/builtins/set.d.ts +9 -0
  839. package/dist/interpreter/builtins/shift.d.ts +15 -0
  840. package/dist/interpreter/builtins/shopt.d.ts +7 -0
  841. package/dist/interpreter/builtins/source.d.ts +6 -0
  842. package/dist/interpreter/builtins/unset.d.ts +16 -0
  843. package/dist/interpreter/builtins/variable-assignment.d.ts +69 -0
  844. package/dist/interpreter/command-analysis.d.ts +30 -0
  845. package/dist/interpreter/command-resolution.d.ts +43 -0
  846. package/dist/interpreter/conditionals.d.ts +17 -0
  847. package/dist/interpreter/control-flow.d.ts +21 -0
  848. package/dist/interpreter/defense-aware-command-context.d.ts +6 -0
  849. package/dist/interpreter/errors.d.ts +161 -0
  850. package/dist/interpreter/expansion/analysis.d.ts +37 -0
  851. package/dist/interpreter/expansion/arith-text-expansion.d.ts +20 -0
  852. package/dist/interpreter/expansion/array-pattern-ops.d.ts +21 -0
  853. package/dist/interpreter/expansion/array-prefix-suffix.d.ts +46 -0
  854. package/dist/interpreter/expansion/array-slice-transform.d.ts +36 -0
  855. package/dist/interpreter/expansion/array-word-expansion.d.ts +39 -0
  856. package/dist/interpreter/expansion/brace-range.d.ts +24 -0
  857. package/dist/interpreter/expansion/command-substitution.d.ts +23 -0
  858. package/dist/interpreter/expansion/glob-escape.d.ts +32 -0
  859. package/dist/interpreter/expansion/indirect-expansion.d.ts +42 -0
  860. package/dist/interpreter/expansion/parameter-ops.d.ts +113 -0
  861. package/dist/interpreter/expansion/pattern-expansion.d.ts +23 -0
  862. package/dist/interpreter/expansion/pattern-removal.d.ts +17 -0
  863. package/dist/interpreter/expansion/pattern-replacement.d.ts +4 -0
  864. package/dist/interpreter/expansion/pattern.d.ts +23 -0
  865. package/dist/interpreter/expansion/positional-params.d.ts +59 -0
  866. package/dist/interpreter/expansion/prompt.d.ts +39 -0
  867. package/dist/interpreter/expansion/quoting.d.ts +13 -0
  868. package/dist/interpreter/expansion/tilde.d.ts +14 -0
  869. package/dist/interpreter/expansion/unquoted-expansion.d.ts +76 -0
  870. package/dist/interpreter/expansion/variable-attrs.d.ts +19 -0
  871. package/dist/interpreter/expansion/variable.d.ts +36 -0
  872. package/dist/interpreter/expansion/word-glob-expansion.d.ts +33 -0
  873. package/dist/interpreter/expansion/word-split.d.ts +29 -0
  874. package/dist/interpreter/expansion.d.ts +53 -0
  875. package/dist/interpreter/fd-table.d.ts +130 -0
  876. package/dist/interpreter/functions.d.ts +14 -0
  877. package/dist/interpreter/helpers/array.d.ts +56 -0
  878. package/dist/interpreter/helpers/bounded-array.d.ts +2 -0
  879. package/dist/interpreter/helpers/condition.d.ts +19 -0
  880. package/dist/interpreter/helpers/errors.d.ts +8 -0
  881. package/dist/interpreter/helpers/file-tests.d.ts +33 -0
  882. package/dist/interpreter/helpers/ifs.d.ts +104 -0
  883. package/dist/interpreter/helpers/loop.d.ts +24 -0
  884. package/dist/interpreter/helpers/nameref.d.ts +65 -0
  885. package/dist/interpreter/helpers/numeric-compare.d.ts +13 -0
  886. package/dist/interpreter/helpers/quoting.d.ts +26 -0
  887. package/dist/interpreter/helpers/readonly.d.ts +45 -0
  888. package/dist/interpreter/helpers/regex.d.ts +8 -0
  889. package/dist/interpreter/helpers/result.d.ts +60 -0
  890. package/dist/interpreter/helpers/shell-constants.d.ts +41 -0
  891. package/dist/interpreter/helpers/shellopts.d.ts +28 -0
  892. package/dist/interpreter/helpers/string-compare.d.ts +24 -0
  893. package/dist/interpreter/helpers/string-tests.d.ts +13 -0
  894. package/dist/interpreter/helpers/variable-tests.d.ts +9 -0
  895. package/dist/interpreter/helpers/word-matching.d.ts +16 -0
  896. package/dist/interpreter/helpers/word-parts.d.ts +22 -0
  897. package/dist/interpreter/helpers/xtrace.d.ts +18 -0
  898. package/dist/interpreter/index.d.ts +3 -0
  899. package/dist/interpreter/interpreter.d.ts +82 -0
  900. package/dist/interpreter/numeric-fd-redirects.d.ts +8 -0
  901. package/dist/interpreter/pipeline-execution.d.ts +16 -0
  902. package/dist/interpreter/process-substitution.d.ts +62 -0
  903. package/dist/interpreter/redirections.d.ts +50 -0
  904. package/dist/interpreter/simple-command-assignments.d.ts +36 -0
  905. package/dist/interpreter/state-transaction.d.ts +7 -0
  906. package/dist/interpreter/subshell-group.d.ts +40 -0
  907. package/dist/interpreter/type-command.d.ts +37 -0
  908. package/dist/interpreter/types.d.ts +402 -0
  909. package/dist/limits.d.ts +111 -0
  910. package/dist/network/allow-list/shared.d.ts +49 -0
  911. package/dist/network/allow-list.d.ts +59 -0
  912. package/dist/network/dns-pin.d.ts +42 -0
  913. package/dist/network/fetch.d.ts +27 -0
  914. package/dist/network/index.d.ts +7 -0
  915. package/dist/network/types.d.ts +182 -0
  916. package/dist/parser/arithmetic-parser.d.ts +23 -0
  917. package/dist/parser/arithmetic-primaries.d.ts +45 -0
  918. package/dist/parser/command-parser.d.ts +10 -0
  919. package/dist/parser/compound-parser.d.ts +28 -0
  920. package/dist/parser/conditional-parser.d.ts +8 -0
  921. package/dist/parser/expansion-parser.d.ts +18 -0
  922. package/dist/parser/lexer.d.ts +195 -0
  923. package/dist/parser/parser-substitution.d.ts +85 -0
  924. package/dist/parser/parser.d.ts +152 -0
  925. package/dist/parser/types.d.ts +40 -0
  926. package/dist/parser/word-parser.d.ts +35 -0
  927. package/dist/sandbox/Command.d.ts +35 -0
  928. package/dist/sandbox/Sandbox.d.ts +121 -0
  929. package/dist/sandbox/index.d.ts +2 -0
  930. package/dist/security/blocked-globals.d.ts +60 -0
  931. package/dist/security/defense-context.d.ts +13 -0
  932. package/dist/security/defense-in-depth-box.d.ts +354 -0
  933. package/dist/security/index.d.ts +33 -0
  934. package/dist/security/safe-timestamp.d.ts +1 -0
  935. package/dist/security/security-violation-logger.d.ts +99 -0
  936. package/dist/security/trusted-globals.d.ts +17 -0
  937. package/dist/security/types.d.ts +151 -0
  938. package/dist/security/violation-error-message.d.ts +3 -0
  939. package/dist/security/wasm-callback.d.ts +6 -0
  940. package/dist/security/worker-defense-in-depth.d.ts +228 -0
  941. package/dist/shell-metadata.d.ts +25 -0
  942. package/dist/source-limit.d.ts +2 -0
  943. package/dist/timers.d.ts +16 -0
  944. package/dist/transform/pipeline.d.ts +8 -0
  945. package/dist/transform/plugins/command-collector.d.ts +8 -0
  946. package/dist/transform/plugins/tee-plugin.d.ts +40 -0
  947. package/dist/transform/serialize.d.ts +4 -0
  948. package/dist/transform/types.d.ts +18 -0
  949. package/dist/types.d.ts +319 -0
  950. package/dist/utils/args.d.ts +55 -0
  951. package/dist/utils/constants.d.ts +15 -0
  952. package/dist/utils/file-reader.d.ts +76 -0
  953. package/dist/utils/glob.d.ts +25 -0
  954. package/dist/vitest-setup.d.ts +1 -0
  955. package/package.json +136 -0
  956. package/vendor/cpython-emscripten/python.cjs +2 -0
  957. package/vendor/cpython-emscripten/python.wasm +0 -0
  958. package/vendor/cpython-emscripten/python313.zip +0 -0
@@ -0,0 +1,809 @@
1
+ import{createRequire} from"node:module";const require=createRequire(import.meta.url);
2
+ import{a as Vt,b as zt,c as ct}from"./chunks/chunk-WNH3HOQA.js";import{a as Wr}from"./chunks/chunk-BRJERIF4.js";import{c as yi,e as La}from"./chunks/chunk-KIGPB52X.js";import{a as Mr,b as Br,c as or,d as ar}from"./chunks/chunk-WXPNKIIH.js";import{a as en}from"./chunks/chunk-SGX4WOAM.js";import{a as mi}from"./chunks/chunk-L2UW7DWF.js";import{a as Jt,b as He,c as ur}from"./chunks/chunk-DLL7UR66.js";import{a as cr,b as _a}from"./chunks/chunk-BKUWXPEM.js";import{a as ge}from"./chunks/chunk-73JQKNZT.js";import{a as Ta,b as Ur}from"./chunks/chunk-AYSZ5MAE.js";import{a as Bn,b as Be}from"./chunks/chunk-ZBUZKIPX.js";import"./chunks/chunk-57LGFT4S.js";import{c as Xt,d as Vn}from"./chunks/chunk-FTET43KM.js";import"./chunks/chunk-STHBFACM.js";import{a as V,b as Bt,c as z,d as zn,e as Yt,f as Wt,g as Un}from"./chunks/chunk-YUSFCOM7.js";import{a as Zt,b as Ye,c as Je,d as Le,e as qe,f as Ge,g as q,h as ue,i as et,j as Qt,k as Vr,l as $,m as tt,n as Ce,o as Kt,p as zr,q as lt}from"./chunks/chunk-TVCZIH6M.js";import{a as B,b as lr,c as vn,d as fd,e as Ht,f as pi,g as Wn,h as dd,i as Ft,j as hi,k as pd,l as hd}from"./chunks/chunk-GN6CQ3J4.js";import{a as Pt}from"./chunks/chunk-FOCWZZDE.js";import{a as Mt}from"./chunks/chunk-W5DWRFSU.js";import{a as di}from"./chunks/chunk-NCUTH6QL.js";import*as Xe from"node:path";var An=[{name:"echo",load:async()=>(await import("./chunks/echo-PLLZYM2L.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-VZBWBIJB.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-B2NSYQ3N.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-ZPXGZX63.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-WDDKK2P3.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-YJKPQVCK.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-W4DF6Z4T.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-JQ4GDKDD.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-2KZIPZJS.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-ZF6UBVRB.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-OPY2ZVGQ.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-WM2JFFQC.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-76BPYV5F.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-U5OM5A3M.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-6UIPFWVJ.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-UBGSN4JF.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-7WVM7GV4.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-LXFZND2P.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-4AYF3A5J.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-4AYF3A5J.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-4AYF3A5J.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-NAMXBYKS.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-LIRH26EA.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-W6BNZEJN.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-CB5GO7XH.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-PAEPA27E.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-DTWKU2MC.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-FMDNVWQN.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-ZNHNSRBW.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UI2LA3GA.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-EPOS3MFH.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-IELOWYJG.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-QJBPHRFJ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-J3VOSOMK.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-YD5BWFH4.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-VLFTYX2Z.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-JICLAMP6.js")).split},{name:"column",load:async()=>(await import("./chunks/column-QJI65SH2.js")).column},{name:"join",load:async()=>(await import("./chunks/join-C2B6NGXH.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-OOWSWHRQ.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-END3EAHV.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-SJZQ5W65.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-Z2ZMOOW2.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-7OOL2MH6.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-7AZCLKR6.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-VUUMB47B.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-VUUMB47B.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-T5TO5GWK.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-T5TO5GWK.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-3N762S3K.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-VQEXRD3C.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-QUBPEGGU.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-QUBPEGGU.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KPIUNI6K.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-HIEWVHJ2.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-HIEWVHJ2.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-NY7PCVMH.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-MHVQ5XHI.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-CSARC7WF.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-7OEDRA27.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-PPRBTSVR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-C6WDYPLV.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-NERE2JJ2.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-B6KDLMYQ.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-XSBELPAC.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-JEDX55KS.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BLPZJ6MP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-VJZ4PHQ4.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-URNAD6FQ.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-PE6BPRPA.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-QDDMBDU7.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-UWVKETYW.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-YXC4HBTR.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-CESD3CQR.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-KR6E7UIR.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-Z4AIL3P4.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-RQOBR22H.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-RQOBR22H.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-RQOBR22H.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(An.push({name:"tar",load:async()=>(await import("./chunks/tar-B72KU357.js")).tarCommand}),An.push({name:"yq",load:async()=>(await import("./chunks/yq-FGNXZCGX.js")).yqCommand}),An.push({name:"xan",load:async()=>(await import("./chunks/xan-UIGVJCMA.js")).xanCommand}),An.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-4EZ4GXVD.js")).sqlite3Command}));var jr=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(jr.push({name:"python3",load:async()=>(await import("./chunks/python3-F5S5TYGS.js")).python3Command}),jr.push({name:"python",load:async()=>(await import("./chunks/python3-F5S5TYGS.js")).pythonCommand}));var qr=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(qr.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-XKF2B7C3.js")).jsExecCommand}),qr.push({name:"node",load:async()=>(await import("./chunks/js-exec-XKF2B7C3.js")).nodeStubCommand}));var Ma=[{name:"curl",load:async()=>(await import("./chunks/curl-K4WT7UPN.js")).curlCommand}],Fa=new Map;function Gr(e){return{name:e.name,async execute(t,n){let r=Fa.get(e.name);if(r||(r=await Be.runTrustedAsync(()=>e.load()),Fa.set(e.name,r)),n.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:s}=await import("./chunks/flag-coverage-DPSAPFXA.js");s(n.coverage,e.name,t)}return r.execute(t,n)}}}function md(){return An.map(e=>e.name)}function yd(){return Ma.map(e=>e.name)}function Ba(e){return(e?An.filter(n=>e.includes(n.name)):An).map(Gr)}function Wa(){return Ma.map(Gr)}function gd(){return jr.map(e=>e.name)}function Va(){return jr.map(Gr)}function wd(){return qr.map(e=>e.name)}function za(){return qr.map(Gr)}var Ua=new WeakMap,ja=new WeakSet;function Hr(e){let t=Ua.get(e);return t===void 0&&(t=Object.freeze(Object.create(null)),Ua.set(e,t),ja.add(t)),t}function qa(e){return ja.has(e)}var Ga={maxSourceBytes:67108864,maxExecDepth:64,maxCallDepth:100,maxCommandCount:1e5,maxLoopIterations:1e5,maxAwkIterations:1e5,maxSedIterations:1e5,maxJqIterations:1e7,maxQueryTokens:1e5,maxQueryDepth:1e3,maxQueryElements:1e6,maxAwkParserTokens:1e5,maxAwkParserDepth:256,maxAwkParserOperations:1e6,maxCsvRows:1e6,maxCsvCells:1e7,maxWorkUnits:1e8,maxTraversalEntries:1e6,maxTraversalDepth:1e3,maxTraversalWork:1e6,maxLiveBytes:536870912,maxInputBytes:536870912,maxFileSystemBytes:1073741824,maxDatabaseBytes:1073741824,maxDatabaseResultBytes:268435456,maxArchiveBytes:1073741824,maxArchiveCompressedBytes:536870912,maxArchiveEntryBytes:536870912,maxArchiveEntries:1e6,maxWorkerMessageBytes:67108864,maxExecutionTimeMs:36e5,maxExtensionCleanupTimeMs:100,maxSqliteTimeoutMs:3e4,maxPythonTimeoutMs:3e4,maxJsTimeoutMs:3e4,maxGlobOperations:1e6,maxStringLength:67108864,maxArrayElements:1e6,maxHeredocSize:67108864,maxSubstitutionDepth:50,maxBraceExpansionResults:1e5,maxOutputSize:268435456,maxFileDescriptors:4096,maxSourceDepth:100},Ed={...Ga,maxSourceBytes:8*1024*1024,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxExtensionCleanupTimeMs:25,maxGlobOperations:1e5,maxStringLength:10*1024*1024,maxArrayElements:1e5,maxHeredocSize:10*1024*1024,maxBraceExpansionResults:1e4,maxOutputSize:10*1024*1024,maxFileDescriptors:1024,maxQueryTokens:25e3,maxQueryDepth:256,maxQueryElements:1e5,maxAwkParserTokens:25e3,maxAwkParserDepth:128,maxAwkParserOperations:1e5,maxCsvRows:1e5,maxCsvCells:1e6,maxWorkUnits:1e5,maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxLiveBytes:64*1024*1024,maxInputBytes:32*1024*1024,maxFileSystemBytes:128*1024*1024,maxDatabaseBytes:64*1024*1024,maxDatabaseResultBytes:16*1024*1024,maxArchiveBytes:128*1024*1024,maxArchiveCompressedBytes:64*1024*1024,maxArchiveEntryBytes:64*1024*1024,maxArchiveEntries:1e5,maxWorkerMessageBytes:16*1024*1024,maxExecutionTimeMs:3e4};function Zr(e,t="normal"){if(t!=="normal"&&t!=="hardened")throw new RangeError('executionLimitProfile must be "normal" or "hardened"');let n=t==="hardened"?Ed:Ga;if(!e)return{...n};let r={maxSourceBytes:e.maxSourceBytes??n.maxSourceBytes,maxExecDepth:e.maxExecDepth??n.maxExecDepth,maxCallDepth:e.maxCallDepth??n.maxCallDepth,maxCommandCount:e.maxCommandCount??n.maxCommandCount,maxLoopIterations:e.maxLoopIterations??n.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??n.maxAwkIterations,maxSedIterations:e.maxSedIterations??n.maxSedIterations,maxJqIterations:e.maxJqIterations??n.maxJqIterations,maxQueryTokens:e.maxQueryTokens??n.maxQueryTokens,maxQueryDepth:e.maxQueryDepth??n.maxQueryDepth,maxQueryElements:e.maxQueryElements??n.maxQueryElements,maxAwkParserTokens:e.maxAwkParserTokens??n.maxAwkParserTokens,maxAwkParserDepth:e.maxAwkParserDepth??n.maxAwkParserDepth,maxAwkParserOperations:e.maxAwkParserOperations??n.maxAwkParserOperations,maxCsvRows:e.maxCsvRows??n.maxCsvRows,maxCsvCells:e.maxCsvCells??n.maxCsvCells,maxWorkUnits:e.maxWorkUnits??n.maxWorkUnits,maxTraversalEntries:e.maxTraversalEntries??n.maxTraversalEntries,maxTraversalDepth:e.maxTraversalDepth??n.maxTraversalDepth,maxTraversalWork:e.maxTraversalWork??n.maxTraversalWork,maxLiveBytes:e.maxLiveBytes??n.maxLiveBytes,maxInputBytes:e.maxInputBytes??n.maxInputBytes,maxFileSystemBytes:e.maxFileSystemBytes??n.maxFileSystemBytes,maxDatabaseBytes:e.maxDatabaseBytes??n.maxDatabaseBytes,maxDatabaseResultBytes:e.maxDatabaseResultBytes??n.maxDatabaseResultBytes,maxArchiveBytes:e.maxArchiveBytes??n.maxArchiveBytes,maxArchiveCompressedBytes:e.maxArchiveCompressedBytes??n.maxArchiveCompressedBytes,maxArchiveEntryBytes:e.maxArchiveEntryBytes??n.maxArchiveEntryBytes,maxArchiveEntries:e.maxArchiveEntries??n.maxArchiveEntries,maxWorkerMessageBytes:e.maxWorkerMessageBytes??n.maxWorkerMessageBytes,maxExecutionTimeMs:e.maxExecutionTimeMs??n.maxExecutionTimeMs,maxExtensionCleanupTimeMs:e.maxExtensionCleanupTimeMs??n.maxExtensionCleanupTimeMs,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??n.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??n.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??n.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??n.maxGlobOperations,maxStringLength:e.maxStringLength??n.maxStringLength,maxArrayElements:e.maxArrayElements??n.maxArrayElements,maxHeredocSize:e.maxHeredocSize??n.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??n.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??n.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??n.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??n.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??n.maxSourceDepth};for(let s of Object.keys(r)){let i=r[s];if(i!==Number.POSITIVE_INFINITY&&(!Number.isSafeInteger(i)||i<0))throw new RangeError(`${s} must be a non-negative safe integer or positive Infinity`)}return r}function bd(e){let{executionLimits:t,executionLimitProfile:n,fs:r,stdin:s=pi,...i}=e;return{fs:r,fsIdentity:i.fsIdentity??Hr(r),cwd:"/",env:new Map,stdin:s,limits:Zr(t,n),...i}}function Ha(e){return"load"in e&&typeof e.load=="function"}function Sd(e,t,n={}){return{name:e,trusted:n.trusted!==!1,execute:t}}function Za(e){let t=null,n=null;return{name:e.name,trusted:e.trusted!==!1,async execute(r,s){if(!t){let o=n;o||(o=e.load().then(a=>(t=a,a)),n=o);try{t=await o}catch(a){throw n===o&&(n=null),a}}let i=t;if(!i)throw new Error(`Failed to load command: ${e.name}`);return i.execute(r,s)}}}var Qa=Object.freeze(Object.create(null)),Qr=class{limits;signal;abortOnUnresolvedCommands;commandCount=0;workUnits=0;liveBytes=0;inputBytes=0;outputBytes=0;countersByKind=new Map;bytesByKind=new Map;depthByKind=new Map;cleanupCallbacks=[];poisoned;closed=!1;startedAt=Date.now();unresolvedCommands=new Set;get remainingLiveBytes(){return Math.max(0,this.limits.maxLiveBytes-this.liveBytes)}get outputBytesUsed(){return this.outputBytes}constructor(t,n=void 0,r=!1){this.limits=t,this.signal=n,this.abortOnUnresolvedCommands=r}recordUnresolvedCommand(t){this.unresolvedCommands.add(t)}get unresolvedCommandNames(){return[...this.unresolvedCommands]}fail(t){throw this.poisoned??=t,this.poisoned}poisonAfterAbort(t){this.poisoned??=t}assertUsable(){if(this.poisoned)throw this.poisoned;if(this.closed)throw new Error("execution budget is already closed");this.throwIfAborted()}chargeCommand(){return this.consume("commands",1,"execution")}consumeWork(t=1,n="execution"){return this.consume("work",t,n)}consumeLimited(t,n,r,s=t){this.assertUsable();let i=this.countersByKind.get(t)??0;return(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(r)||r<0||n>r-i)&&this.fail(new $(`${s}: ${t} work limit exceeded (${r})`,"iterations")),n>this.limits.maxWorkUnits-this.workUnits&&this.fail(new $(`${s}: aggregate work limit exceeded (${this.limits.maxWorkUnits})`,"iterations")),this.countersByKind.set(t,i+n),this.workUnits+=n,i+n}consumeInput(t,n="execution"){return this.assertUsable(),(!Number.isSafeInteger(t)||t<0||t>this.limits.maxInputBytes-this.inputBytes)&&this.fail(new $(`${n}: aggregate input size limit exceeded (${this.limits.maxInputBytes} bytes)`,"string_length")),this.inputBytes+=t,this.inputBytes}consume(t,n=1,r=t){this.assertUsable();let s=this.countersByKind.get(t)??0,i=t==="commands"?this.commandCount:this.workUnits,o=t==="commands"?this.limits.maxCommandCount:this.limits.maxWorkUnits;(!Number.isSafeInteger(n)||n<0||n>o-i)&&this.fail(new $(t==="commands"?`too many commands executed (>${o}), increase executionLimits.maxCommandCount`:`${r}: ${t} work limit exceeded (${o})`,t==="commands"?"commands":"iterations"));let a=i+n;return t==="commands"?this.commandCount=a:this.workUnits=a,this.countersByKind.set(t,s+n),a}reserveBytes(t,n,r){this.assertUsable();let s=typeof t=="string"?t:"live",i=typeof t=="string"?n:t,o=typeof t=="string"?r??s:n??"execution";(!Number.isSafeInteger(i)||i<0||i>this.limits.maxLiveBytes-this.liveBytes)&&this.fail(new $(`${o}: live byte limit exceeded (${this.limits.maxLiveBytes} bytes)`,"string_length")),this.liveBytes+=i,this.bytesByKind.set(s,(this.bytesByKind.get(s)??0)+i);let a=!1;return{release:()=>{if(a)return;a=!0,this.liveBytes-=i;let l=(this.bytesByKind.get(s)??i)-i;l<=0?this.bytesByKind.delete(s):this.bytesByKind.set(s,l)}}}appendOutput(t,n,r="execution",s=0,i="text"){this.assertUsable();let o=i==="bytes"?n.length:B(n);(!Number.isSafeInteger(s)||s<0||s>o)&&this.fail(new $(`${r}: invalid ${t} accounting`,"output_size"));let a=o-s;return a>this.limits.maxOutputSize-this.outputBytes&&this.fail(new $(`${r}: total output size exceeded (>${this.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size")),this.outputBytes+=a,o}accountResult(t,n="execution",r=Number.POSITIVE_INFINITY){let s=t.internalOutputAccounting,i=Math.min(s?.stdout??0,r),o=Math.min(s?.stderr??0,Math.max(0,r-i)),a=this.appendOutput("stdout",t.stdout,n,i,t.stdoutKind==="bytes"||t.stdoutEncoding==="binary"?"bytes":"text"),l=this.appendOutput("stderr",t.stderr,n,o);return Object.isExtensible(t)?(t.internalOutputAccounting={stdout:a,stderr:l},t):a===0&&l===0?t:{...t,internalOutputAccounting:{stdout:a,stderr:l}}}relinquishOutput(t,n,r){this.assertUsable(),r!==Qa&&this.fail(new $(`${n}: unauthorized output accounting release`,"output_size")),(!Number.isSafeInteger(t)||t<0||t>this.outputBytes)&&this.fail(new $(`${n}: invalid output accounting release`,"output_size")),this.outputBytes-=t}enterDepth(t,n=this.limits.maxCallDepth,r){this.assertUsable();let s=typeof n=="number"?n:this.limits.maxCallDepth,i=typeof n=="string"?n:r??t,o=this.depthByKind.get(t)??0;o>=s&&this.fail(new $(`${i}: maximum depth (${s}) exceeded`,"recursion")),this.depthByKind.set(t,o+1);let a=!1;return{release:()=>{if(a)return;a=!0;let l=(this.depthByKind.get(t)??1)-1;l<=0?this.depthByKind.delete(t):this.depthByKind.set(t,l)}}}throwIfAborted(t="execution"){this.signal?.aborted&&this.fail(new tt("",`bash: ${t} aborted
3
+ `)),Date.now()-this.startedAt>this.limits.maxExecutionTimeMs&&this.fail(new tt("",`bash: ${t} exceeded execution deadline (${this.limits.maxExecutionTimeMs}ms)
4
+ `))}remainingTimeMs(){return Math.max(0,this.limits.maxExecutionTimeMs-(Date.now()-this.startedAt))}registerCleanup(t){this.assertUsable(),this.cleanupCallbacks.push(t);let n=!0;return()=>{if(!n)return;n=!1;let r=this.cleanupCallbacks.indexOf(t);r>=0&&this.cleanupCallbacks.splice(r,1)}}async close(){if(this.closed)return;this.closed=!0;let t=[],n=Date.now()+this.limits.maxExtensionCleanupTimeMs;for(let r=this.cleanupCallbacks.length-1;r>=0;r--)try{let s=n-Date.now();if(s<=0){t.push(new Error("execution cleanup grace period exceeded"));break}let i,o=await Promise.race([Promise.resolve().then(this.cleanupCallbacks[r]).then(()=>({ok:!0}),a=>({ok:!1,error:a})),new Promise(a=>{i=or(()=>a({ok:!1,error:new Error("execution cleanup grace period exceeded")}),s)})]);if(ar(i),!o.ok&&(t.push(o.error),Date.now()>=n))break}catch(s){t.push(s)}if(this.cleanupCallbacks.length=0,this.depthByKind.clear(),this.bytesByKind.clear(),this.liveBytes=0,t.length>0)throw new AggregateError(t,"execution cleanup failed")}assertExecDepth(t){this.assertUsable(),t>this.limits.maxExecDepth&&this.fail(new $(`maximum nested execution depth (${this.limits.maxExecDepth}) exceeded`,"recursion"))}};function Ka(e){let t=Object.create(null);return Object.defineProperties(t,{remainingLiveBytes:{enumerable:!0,get:()=>e.remainingLiveBytes},consumeWork:{enumerable:!0,value:e.consumeWork.bind(e)},consumeLimited:{enumerable:!0,value:e.consumeLimited.bind(e)},consumeInput:{enumerable:!0,value:e.consumeInput.bind(e)},reserveBytes:{enumerable:!0,value:e.reserveBytes.bind(e)},enterDepth:{enumerable:!0,value:e.enterDepth.bind(e)},throwIfAborted:{enumerable:!0,value:e.throwIfAborted.bind(e)},remainingTimeMs:{enumerable:!0,value:e.remainingTimeMs.bind(e)},registerCleanup:{enumerable:!0,value:e.registerCleanup.bind(e)}}),Object.freeze(t)}function Xa(e,t,n="pipeline"){e.relinquishOutput(t,n,Qa)}var kn=new TextEncoder;function vd(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var nt=class{data=new Map;entryIdentities=new WeakMap;nextEntryIdentity=1;maxTotalBytes;retainedBytes=0;contentReferences=new WeakMap;materializedContent(t){return t?.type==="file"&&"content"in t?t.content:null}storedByteLength(t){return t===null?0:t instanceof Uint8Array?t.byteLength:B(t)}wouldReleaseBytes(t){let n=this.materializedContent(t);return n===null?0:n instanceof Uint8Array?this.contentReferences.get(n)===1?n.byteLength:0:this.storedByteLength(n)}assertCanAllocate(t,n){let r=this.wouldReleaseBytes(this.data.get(t));if(!Number.isSafeInteger(n)||n<0||n>this.maxTotalBytes-this.retainedBytes+r)throw new Error(`ENOSPC: in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`)}setEntry(t,n){let r=this.data.get(t),s=this.materializedContent(r),i=this.materializedContent(n);if(s===i){this.data.set(t,n);return}let o=this.wouldReleaseBytes(r),a=i instanceof Uint8Array?this.contentReferences.has(i)?0:i.byteLength:this.storedByteLength(i);if(a>this.maxTotalBytes-this.retainedBytes+o)throw new Error(`ENOSPC: in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`);if(s instanceof Uint8Array){let l=this.contentReferences.get(s)??0;l<=1?this.contentReferences.delete(s):this.contentReferences.set(s,l-1)}i instanceof Uint8Array&&this.contentReferences.set(i,(this.contentReferences.get(i)??0)+1),this.retainedBytes+=a-o,this.data.set(t,n)}deleteEntry(t){let n=this.data.get(t);if(!n)return!1;let r=this.materializedContent(n),s=this.wouldReleaseBytes(n);if(r instanceof Uint8Array){let i=this.contentReferences.get(r)??0;i<=1?this.contentReferences.delete(r):this.contentReferences.set(r,i-1)}return this.retainedBytes-=s,this.data.delete(t)}contentByteLength(t,n){if(t instanceof Uint8Array)return t.byteLength;if(n==="hex")return Math.floor(t.length/2);if(n==="base64"){let r=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*3/4)-r)}return n==="binary"||n==="latin1"?t.length:B(t)}identityFor(t){let n=this.entryIdentities.get(t);return n||(n=`memfs:${this.nextEntryIdentity++}`,this.entryIdentities.set(t,n)),n}constructor(t,n={}){if(this.maxTotalBytes=n.maxTotalBytes??1024*1024*1024,!Number.isSafeInteger(this.maxTotalBytes)||this.maxTotalBytes<0)throw new Error("InMemoryFs: invalid maxTotalBytes");if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[r,s]of Object.entries(t))typeof s=="function"?this.writeFileLazy(r,s):vd(s)?this.writeFileSync(r,s.content,void 0,{mode:s.mode,mtime:s.mtime}):this.writeFileSync(r,s)}ensureParentDirs(t){let n=zn(t);n!=="/"&&(this.data.has(n)||(this.ensureParentDirs(n),this.data.set(n,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,n,r,s){z(t,"write");let i=V(t);this.ensureParentDirs(i);let o=ct(r);this.assertCanAllocate(i,this.contentByteLength(n,o));let a=Vt(n,o);this.setEntry(i,{type:"file",content:a,mode:s?.mode??420,mtime:s?.mtime??new Date})}writeFileLazy(t,n,r){z(t,"write");let s=V(t);this.ensureParentDirs(s),this.setEntry(s,{type:"file",lazy:n,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,n){let r=await n.lazy(),s=typeof r=="string"?kn.encode(r):r,i={type:"file",content:s,mode:n.mode,mtime:n.mtime};return this.assertCanAllocate(t,s.byteLength),this.setEntry(t,i),i}async readFile(t,n){let r=await this.readFileBuffer(t),s=ct(n);return zt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return zt(n,"binary")}async readFileBuffer(t){z(t,"open");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);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 s=await this.materializeLazy(n,r);return s.content instanceof Uint8Array?s.content:kn.encode(s.content)}return r.content instanceof Uint8Array?r.content:kn.encode(r.content)}async writeFile(t,n,r){this.writeFileSync(t,n,r)}async appendFile(t,n,r){z(t,"append");let s=V(t),i=this.data.get(s);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=ct(r),a=this.contentByteLength(n,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(s,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:kn.encode("content"in l?l.content:"");this.assertCanAllocate(s,c.byteLength+a);let u=Vt(n,o),f=new Uint8Array(c.length+u.length);f.set(c),f.set(u,c.length),this.setEntry(s,{type:"file",content:f,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,n,r)}async exists(t){if(t.includes("\0"))return!1;try{let n=this.resolvePathWithSymlinks(t);return this.data.has(n)}catch{return!1}}async stat(t){z(t,"stat");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=kn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}async lstat(t){z(t,"lstat");let n=this.resolveIntermediateSymlinks(t),r=this.data.get(n);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(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=kn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}resolveIntermediateSymlinks(t){let n=V(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let s="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];s=`${s}/${a}`;let l=this.data.get(s),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(s),s=Un(s,l.target),l=this.data.get(s),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${s}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let n=V(t);if(n==="/")return"/";let r=n.slice(1).split("/"),s="",i=new Set;for(let o of r){s=`${s}/${o}`;let a=this.data.get(s),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(s),s=Un(s,a.target),a=this.data.get(s),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return s}async mkdir(t,n){this.mkdirSync(t,n)}mkdirSync(t,n){z(t,"mkdir");let r=V(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let s=zn(r);if(s!=="/"&&!this.data.has(s))if(n?.recursive)this.mkdirSync(s,{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){z(t,"scandir");let n=V(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let s=new Set;for(;r&&r.type==="symlink";){if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);s.add(n),n=Un(n,r.target),r=this.data.get(n)}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=n==="/"?"/":`${n}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==n&&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,n){z(t,"rm");let r=V(t),s=this.data.get(r);if(!s){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(s.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=Wt(r,o);await this.rm(a,n)}}}this.deleteEntry(r)}async cp(t,n,r){z(t,"cp"),z(n,"cp");let s=V(t),i=V(n),o=this.data.get(s);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?o.content.byteLength:kn.encode(o.content).byteLength;this.assertCanAllocate(i,a);let l=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.setEntry(i,{...o,content:l})}else this.setEntry(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}'`);if(Bt(s,i))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(s);for(let l of a){let c=Wt(s,l),u=Wt(i,l);await this.cp(c,u,r)}}}async mv(t,n){z(t,"mv"),z(n,"mv");let r=V(t),s=V(n);if(r===s)return;let i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(i.type==="directory"&&Bt(r,s))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);if(i.type==="directory"){await this.mkdir(s,{recursive:!0});let o=await this.readdir(r);for(let a of o)await this.mv(Wt(r,a),Wt(s,a));this.deleteEntry(r);return}this.ensureParentDirs(s),this.setEntry(s,i),this.deleteEntry(r)}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,n){return Yt(t,n)}async chmod(t,n){z(t,"chmod");let r=V(t),s=this.data.get(r);if(!s)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);s.mode=n}async symlink(t,n){z(n,"symlink");let r=V(n);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,n){z(t,"link"),z(n,"link");let r=V(t),s=V(n),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(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(s);let a={type:"file",content:o.content,mode:o.mode,mtime:o.mtime};this.entryIdentities.set(a,this.identityFor(o)),this.setEntry(s,a)}async readlink(t){z(t,"readlink");let n=V(t),r=this.data.get(n);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){z(t,"realpath");let n=this.resolvePathWithSymlinks(t);if(!this.data.has(n))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return n}async utimes(t,n,r){z(t,"utimes");let s=V(t),i=this.resolvePathWithSymlinks(s),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};var Ya="5.1.0(1)-release",Ja="Linux version 5.15.0-generic (just-bash) #1 SMP PREEMPT";function wi(e){let{pid:t,ppid:n,uid:r,gid:s}=e;return`Name: bash
5
+ State: R (running)
6
+ Pid: ${t}
7
+ PPid: ${n}
8
+ Uid: ${r} ${r} ${r} ${r}
9
+ Gid: ${s} ${s} ${s} ${s}
10
+ `}function Ad(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function kd(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 Pd(e){e.mkdirSync("/dev",{recursive:!0}),e.mkdirSync("/dev/fd",{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 xd(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Ja}
11
+ `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
12
+ `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>wi(t)):e.writeFileSync("/proc/self/status",wi(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 el(e,t,n={pid:1,ppid:0,uid:1e3,gid:1e3}){Ad(e)&&(kd(e,t),Pd(e),xd(e,n))}function Xr(e){let t={commands:new Set,definedFunctions:new Set,definedAliases:new Set};return Ei(e,t),{commands:[...t.commands],definedFunctions:t.definedFunctions,definedAliases:t.definedAliases}}function $d(e){return e.parts.length===1&&e.parts[0].type==="Literal"?e.parts[0].value:null}function Cd(e,t){for(let n of e){let r=n.parts[0];if(r?.type!=="Literal")continue;let s=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(r.value);s&&t.definedAliases.add(s[1])}}function Ei(e,t){for(let n of e.statements)$t(n,t)}function $t(e,t){for(let n of e.pipelines)Nd(n,t)}function Nd(e,t){for(let n of e.commands)tl(n,t)}function tl(e,t){switch(e.type){case"SimpleCommand":if(e.name){let n=$d(e.name);n&&(t.commands.add(n),n==="alias"&&Cd(e.args,t)),We(e.name.parts,t)}for(let n of e.args)We(n.parts,t);for(let n of e.assignments)if(n.value&&We(n.value.parts,t),n.array)for(let r of n.array)We(r.parts,t);for(let n of e.redirections)n.target.type==="Word"?We(n.target.parts,t):n.target.type==="HereDoc"&&!n.target.quoted&&We(n.target.content.parts,t);break;case"If":for(let n of e.clauses){for(let r of n.condition)$t(r,t);for(let r of n.body)$t(r,t)}if(e.elseBody)for(let n of e.elseBody)$t(n,t);break;case"For":if(e.words)for(let n of e.words)We(n.parts,t);for(let n of e.body)$t(n,t);break;case"CStyleFor":for(let n of e.body)$t(n,t);break;case"While":case"Until":for(let n of e.condition)$t(n,t);for(let n of e.body)$t(n,t);break;case"Case":We(e.word.parts,t);for(let n of e.items)for(let r of n.body)$t(r,t);break;case"Subshell":case"Group":for(let n of e.body)$t(n,t);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":t.definedFunctions.add(e.name),tl(e.body,t);break}}function We(e,t){for(let n of e)switch(n.type){case"CommandSubstitution":Ei(n.body,t);break;case"ProcessSubstitution":Ei(n.body,t);break;case"DoubleQuoted":We(n.parts,t);break;case"ParameterExpansion":n.operation&&nl(n.operation,t);break}}function nl(e,t){switch(e.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":We(e.word.parts,t);break;case"ErrorIfUnset":e.word&&We(e.word.parts,t);break;case"PatternRemoval":We(e.pattern.parts,t);break;case"PatternReplacement":We(e.pattern.parts,t),e.replacement&&We(e.replacement.parts,t);break;case"CaseModification":e.pattern&&We(e.pattern.parts,t);break;case"Indirection":e.innerOp&&nl(e.innerOp,t);break}}function Yr(e,t){return e===`/bin/${t}`||e===`/usr/bin/${t}`}async function Jr(e,t,n){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};try{let a=await e.fs.stat(o);if(a.isDirectory)return{error:"permission_denied",path:o};let l=o.split("/").pop()||t,c=e.commands.get(l);return c&&Yr(o,l)?{cmd:c,path:o}:(a.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!n&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o){try{let a=await e.fs.stat(o);if(!a.isDirectory){let l=e.commands.get(t);if(l&&Yr(o,t))return{cmd:l,path:o};if((a.mode&73)!==0)return{script:!0,path:o}}}catch{}e.state.hashTable.delete(t)}}let s=(n??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of s){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=Yr(l,t);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 es(e,t){let n=[];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&&n.push(t)}catch{}return n}let s=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of s){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(Yr(a,t)&&e.commands.has(t)){n.push(a);continue}if(await e.fs.exists(a)){try{let l=await e.fs.stat(a);if(l.isDirectory||(l.mode&73)===0)continue}catch{continue}n.push(i.startsWith("/")?a:`${i}/${t}`)}}return n}function Ve(e){return{kind:e.kind,elements:new Map(e.elements)}}function ut(e){return new Map(Array.from(e??[],([t,n])=>[t,Ve(n)]))}function Pe(e,t){return e.state.arrays?.get(t)}function fr(e,t,n="indexed"){e.state.arrays??=new Map;let r=e.state.arrays.get(t);return r||(r={kind:n,elements:new Map},e.state.arrays.set(t,r)),r}function tn(e,t,n){let r=fr(e,t,n);return r.kind=n,r}function Ne(e,t){return e.state.arrays?.has(t)??!1}function ce(e,t,n){return Pe(e,t)?.elements.get(String(n))}function nn(e,t,n){return Pe(e,t)?.elements.has(String(n))??!1}function G(e,t,n,r,s){let i=fr(e,t,s),o=String(n);if(!i.elements.has(o)&&i.elements.size>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(r)>e.limits.maxStringLength)throw new $(`array value string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");i.elements.set(o,r)}function xn(e,t,n,r=!1){let s=new Set(r?[]:Pe(e,t)?.elements.keys()??[]);for(let i of n)if(s.add(String(i)),s.size>e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements")}function $n(e,t,n){return Pe(e,t)?.elements.delete(String(n))??!1}function dr(e,t){e.state.arrays?.delete(t),e.state.associativeArrays?.delete(t)}function Ae(e,t){return Array.from(Pe(e,t)?.elements.keys()??[]).filter(r=>/^(0|[1-9]\d*)$/.test(r)).map(Number).sort((r,s)=>r-s)}function Ee(e,t){fr(e,t,e.state.associativeArrays?.has(t)?"associative":"indexed").elements.clear()}function Ct(e,t){return Array.from(Pe(e,t)?.elements.keys()??[]).sort()}function ts(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function bi(e){if(e.parts.length<2)return null;let t=e.parts[0],n=e.parts[1];if(t.type!=="Glob"||!t.pattern.startsWith("["))return null;let r,s=n,i=1;if(n.type==="Literal"&&n.value.startsWith("]")){let f=n.value.slice(1);if(f.startsWith("+=")||f.startsWith("="))r=t.pattern.slice(1);else if(f===""){if(e.parts.length<3)return null;let d=e.parts[2];if(d.type!=="Literal"||!d.value.startsWith("=")&&!d.value.startsWith("+="))return null;r=t.pattern.slice(1),s=d,i=2}else return null}else if(t.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(e.parts.length<3)return null;let f=e.parts[2];if(f.type!=="Literal"||!f.value.startsWith("]=")&&!f.value.startsWith("]+="))return null;if(n.type==="SingleQuoted")r=n.value;else{r="";for(let d of n.parts)(d.type==="Literal"||d.type==="Escaped")&&(r+=d.value)}s=f,i=2}else if(t.pattern.endsWith("]")){if(n.type!=="Literal"||!n.value.startsWith("=")&&!n.value.startsWith("+="))return null;r=t.pattern.slice(1,-1)}else return null;r=ts(r);let o;if(s.type!=="Literal")return null;s.value.startsWith("]=")||s.value.startsWith("]+=")?o=s.value.slice(1):o=s.value;let a=o.startsWith("+=");if(!a&&!o.startsWith("="))return null;let l=[],c=a?2:1,u=o.slice(c);u&&l.push({type:"Literal",value:u});for(let f=i+1;f<e.parts.length;f++){let d=e.parts[f];d.type==="BraceExpansion"?l.push({type:"Literal",value:Rd(d)}):l.push(d)}return{key:r,valueParts:l,append:a}}function Rd(e){return`{${e.items.map(n=>{if(n.type==="Range"){let r=n.startStr??String(n.start),s=n.endStr??String(n.end),i=`${r}..${s}`;return n.step&&(i+=`..${n.step}`),i}return jn(n.word)}).join(",")}}`}function jn(e){let t="";for(let n of e.parts)switch(n.type){case"Literal":t+=n.value;break;case"Glob":t+=n.pattern;break;case"SingleQuoted":t+=n.value;break;case"DoubleQuoted":for(let r of n.parts)(r.type==="Literal"||r.type==="Escaped")&&(t+=r.value);break;case"Escaped":t+=n.value;break;case"BraceExpansion":t+="{",t+=n.items.map(r=>r.type==="Range"?`${r.startStr}..${r.endStr}${r.step?`..${r.step}`:""}`:jn(r.word)).join(","),t+="}";break;case"TildeExpansion":t+="~",n.user&&(t+=n.user);break}return t}var pr=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function rl(e){return pr.has(e)}var Si=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),rn=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"]),sl=new Set(["bg","caller","disown","enable","fc","fg","jobs","kill","suspend","times","trap","ulimit","umask"]);var Od=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Dd=["braceexpand","hashall","interactive-comments"];function vi(e){let t=[],n=[...Dd.map(r=>({name:r,enabled:!0})),...Od.map(r=>({name:r,enabled:e[r]}))].sort((r,s)=>r.name.localeCompare(s.name));for(let r of n)r.enabled&&t.push(r.name);return t.join(":")}function qn(e){e.state.env.set("SHELLOPTS",vi(e.state.options))}var Id=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ai(e){let t=[];for(let n of Id)e[n]&&t.push(n);return t.join(":")}function ki(e){e.state.env.set("BASHOPTS",Ai(e.state.shoptOptions))}var F={script(e){return{type:"Script",statements:e}},statement(e,t=[],n=!1,r,s){let i={type:"Statement",pipelines:e,operators:t,background:n};return r&&(i.deferredError=r),s!==void 0&&(i.sourceText=s),i},pipeline(e,t=!1,n=!1,r=!1,s){return{type:"Pipeline",commands:e,negated:t,timed:n,timePosix:r,pipeStderr:s}},simpleCommand(e,t=[],n=[],r=[]){return{type:"SimpleCommand",name:e,args:t,assignments:n,redirections:r}},word(e){return{type:"Word",parts:e}},literal(e){return{type:"Literal",value:e}},singleQuoted(e){return{type:"SingleQuoted",value:e}},doubleQuoted(e){return{type:"DoubleQuoted",parts:e}},escaped(e){return{type:"Escaped",value:e}},parameterExpansion(e,t=null){return{type:"ParameterExpansion",parameter:e,operation:t}},commandSubstitution(e,t=!1){return{type:"CommandSubstitution",body:e,legacy:t}},arithmeticExpansion(e){return{type:"ArithmeticExpansion",expression:e}},processSubstitution(e,t){return{type:"ProcessSubstitution",body:e,direction:t}},assignment(e,t,n=!1,r=null){return{type:"Assignment",name:e,value:t,append:n,array:r}},redirection(e,t,n=null,r){let s={type:"Redirection",fd:n,operator:e,target:t};return r&&(s.fdVariable=r),s},hereDoc(e,t,n=!1,r=!1,s){let i={type:"HereDoc",delimiter:e,content:t,stripTabs:n,quoted:r};return s!==void 0&&(i.terminated=s),i},ifNode(e,t=null,n=[]){return{type:"If",clauses:e,elseBody:t,redirections:n}},forNode(e,t,n,r=[]){return{type:"For",variable:e,words:t,body:n,redirections:r}},whileNode(e,t,n=[]){return{type:"While",condition:e,body:t,redirections:n}},untilNode(e,t,n=[]){return{type:"Until",condition:e,body:t,redirections:n}},caseNode(e,t,n=[]){return{type:"Case",word:e,items:t,redirections:n}},caseItem(e,t,n=";;"){return{type:"CaseItem",patterns:e,body:t,terminator:n}},subshell(e,t=[]){return{type:"Subshell",body:e,redirections:t}},group(e,t=[]){return{type:"Group",body:e,redirections:t}},functionDef(e,t,n=[],r){return{type:"FunctionDef",name:e,body:t,redirections:n,sourceFile:r}},conditionalCommand(e,t=[],n){return{type:"ConditionalCommand",expression:e,redirections:t,line:n}},arithmeticCommand(e,t=[],n){return{type:"ArithmeticCommand",expression:e,redirections:t,line:n}}};function il(e,t){let n=e.length,r=t+3,s=2,i=!1,o=!1;for(;r<n&&s>0;){let a=e[r];if(i){a==="'"&&(i=!1),r++;continue}if(o){if(a==="\\"){r+=2;continue}a==='"'&&(o=!1),r++;continue}if(a==="'"){i=!0,r++;continue}if(a==='"'){o=!0,r++;continue}if(a==="\\"){r+=2;continue}if(a==="("){s++,r++;continue}if(a===")"){if(s--,s===1){let l=r+1;return!(l<n&&e[l]===")")}if(s===0)return!1;r++;continue}if(s===1&&(a==="|"&&r+1<n&&e[r+1]==="|"||a==="&"&&r+1<n&&e[r+1]==="&"||a==="|"&&r+1<n&&e[r+1]!=="|"))return!0;r++}return!1}function ns(e,t){let n="",r=t,s=0,i=!1,o,a=l=>l===" "||l===" "||l===`
13
+ `||l===";"||l==="&"||l==="|"||l==="<"||l===">"||l==="("||l===")";for(;r<e.length;){let l=e[r];if(l==="'"){let c=s>0;for(c||(i=!0),c&&(n+=l),r++;r<e.length&&e[r]!=="'";)n+=e[r],r++;r<e.length?(c&&(n+=e[r]),r++):o=l;continue}if(l==='"'){let c=s>0;for(c||(i=!0),c&&(n+=l),r++;r<e.length&&e[r]!=='"';){if(e[r]==="\\"&&r+1<e.length){if(c){n+=e.slice(r,r+2),r+=2;continue}let u=e[r+1];if(u==="$"||u==="`"||u==='"'||u==="\\"||u===`
14
+ `){r+=2,u!==`
15
+ `&&(n+=u);continue}}n+=e[r],r++}r<e.length?(c&&(n+=e[r]),r++):o=l;continue}if(l==="\\"&&r+1<e.length){if(s>0){n+=e.slice(r,r+2),r+=2;continue}i=!0;let c=e[r+1];c!==`
16
+ `&&(n+=c),r+=2;continue}if(s===0&&(l==="$"||l==="<"||l===">")&&e[r+1]==="("){n+=`${l}(`,s=1,r+=2;continue}if(s===0&&a(l))break;s>0&&(l==="("?s++:l===")"&&s--),n+=l,r++}return{delim:n,endPos:r,quoted:i,unclosedQuote:o,unclosedSubstitution:s>0}}function Td(e,t,n){let r=t+1;for(let{delim:s,stripTabs:i}of n)for(;;){if(r>=e.length)return e.length;let o=e.indexOf(`
17
+ `,r);o===-1&&(o=e.length);let a=e.slice(r,o);if(i&&(a=a.replace(/^\t+/,"")),a===s){r=o+1;break}if(o>=e.length)return e.length;r=o+1}return Math.min(r,e.length)}function ol(e,t,n){let r=1,s=t,i=!1,o=!1,a=0,l=!1,c="",u=[],f=0;for(;s<e.length&&r>0;){let d=e[s];if(i)d==="'"&&(i=!1);else if(o)d==="\\"&&s+1<e.length?s++:d==='"'&&(o=!1);else{if(d==="("&&e[s+1]==="("?f++:d===")"&&e[s+1]===")"&&f>0&&f--,f===0&&d==="<"&&e[s+1]==="<"&&e[s+2]!=="<"){let p=s+2,h=!1;for(e[p]==="-"&&(h=!0,p++);e[p]===" "||e[p]===" ";)p++;let{delim:m,endPos:E,unclosedQuote:S,unclosedSubstitution:g}=ns(e,p);if(S&&n(`unexpected EOF while looking for matching \`${S}'`),g&&n("unexpected EOF while looking for matching `)'"),m.length>0){u.push({delim:m,stripTabs:h}),c="",s=E;continue}}if(d===`
18
+ `&&u.length>0){let p=Td(e,s,u);u.length=0,c="",s=p;continue}d==="'"?(i=!0,c=""):d==='"'?(o=!0,c=""):d==="\\"&&s+1<e.length?(s++,c=""):/[a-zA-Z_]/.test(d)?c+=d:(c==="case"?(a++,l=!1):c==="in"&&a>0?l=!0:c==="esac"&&a>0&&(a--,l=!1),c="",d==="("?s>0&&e[s-1]==="$"?r++:l||r++:d===")"?l?l=!1:r--:d===";"&&a>0&&s+1<e.length&&e[s+1]===";"&&(l=!0))}r>0&&s++}return r>0&&n("unexpected EOF while looking for matching `)'"),s}function al(e,t,n,r){let s=t+2,i=ol(e,s,r),o=e.slice(s,i),l=n().parse(o);return{part:F.commandSubstitution(l,!1),endIndex:i+1}}function ll(e,t,n,r){let s=e[t]==="<"?"input":"output",i=t+2,o=ol(e,i,r),a=n().parse(e.slice(i,o));return{part:F.processSubstitution(a,s),endIndex:o+1}}function cl(e,t,n,r,s){let o=t+1,a="";for(;o<e.length&&e[o]!=="`";)if(e[o]==="\\"){let u=e[o+1];u==="$"||u==="`"||u==="\\"||u===`
19
+ `||n&&u==='"'?(u!==`
20
+ `&&(a+=u),o+=2):(a+=e[o],o++)}else a+=e[o],o++;o>=e.length&&s("unexpected EOF while looking for matching ``'");let c=r().parse(a);return{part:F.commandSubstitution(c,!0),endIndex:o+1}}var _d=10485760,w;(function(e){e.EOF="EOF",e.NEWLINE="NEWLINE",e.SEMICOLON="SEMICOLON",e.AMP="AMP",e.PIPE="PIPE",e.PIPE_AMP="PIPE_AMP",e.AND_AND="AND_AND",e.OR_OR="OR_OR",e.BANG="BANG",e.LESS="LESS",e.GREAT="GREAT",e.DLESS="DLESS",e.DGREAT="DGREAT",e.LESSAND="LESSAND",e.GREATAND="GREATAND",e.LESSGREAT="LESSGREAT",e.DLESSDASH="DLESSDASH",e.CLOBBER="CLOBBER",e.TLESS="TLESS",e.AND_GREAT="AND_GREAT",e.AND_DGREAT="AND_DGREAT",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.DSEMI="DSEMI",e.SEMI_AND="SEMI_AND",e.SEMI_SEMI_AND="SEMI_SEMI_AND",e.DBRACK_START="DBRACK_START",e.DBRACK_END="DBRACK_END",e.DPAREN_START="DPAREN_START",e.DPAREN_END="DPAREN_END",e.IF="IF",e.THEN="THEN",e.ELSE="ELSE",e.ELIF="ELIF",e.FI="FI",e.FOR="FOR",e.WHILE="WHILE",e.UNTIL="UNTIL",e.DO="DO",e.DONE="DONE",e.CASE="CASE",e.ESAC="ESAC",e.IN="IN",e.FUNCTION="FUNCTION",e.SELECT="SELECT",e.TIME="TIME",e.COPROC="COPROC",e.WORD="WORD",e.NAME="NAME",e.NUMBER="NUMBER",e.ASSIGNMENT_WORD="ASSIGNMENT_WORD",e.FD_VARIABLE="FD_VARIABLE",e.COMMENT="COMMENT",e.HEREDOC_CONTENT="HEREDOC_CONTENT"})(w||(w={}));var rt=class extends Error{line;column;constructor(t,n,r){super(`line ${n}: ${t}`),this.line=n,this.column=r,this.name="LexerError"}},Pi=new Map([["if",w.IF],["then",w.THEN],["else",w.ELSE],["elif",w.ELIF],["fi",w.FI],["for",w.FOR],["while",w.WHILE],["until",w.UNTIL],["do",w.DO],["done",w.DONE],["case",w.CASE],["esac",w.ESAC],["in",w.IN],["function",w.FUNCTION],["select",w.SELECT],["time",w.TIME],["coproc",w.COPROC]]),Ld=new Set(Pi.values());function xi(e){return Ld.has(e)}function ul(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return!1;let n=e.slice(t[0].length);if(n===""||n==="+")return!0;if(n[0]==="["){let r=0,s=0;for(;s<n.length;s++)if(n[s]==="[")r++;else if(n[s]==="]"&&(r--,r===0))break;if(r!==0||s>=n.length)return!1;let i=n.slice(s+1);return i===""||i==="+"}return!1}function fl(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r==="[")t++;else if(r==="]")t--;else{if(t===0&&r==="=")return n;if(t===0&&r==="+"&&e[n+1]==="=")return n+1}}return-1}var Fd=[[";",";","&",w.SEMI_SEMI_AND],["<","<","<",w.TLESS],["&",">",">",w.AND_DGREAT]],Md=[["[","[",w.DBRACK_START],["]","]",w.DBRACK_END],["(","(",w.DPAREN_START],[")",")",w.DPAREN_END],["&","&",w.AND_AND],["|","|",w.OR_OR],[";",";",w.DSEMI],[";","&",w.SEMI_AND],["|","&",w.PIPE_AMP],[">",">",w.DGREAT],["<","&",w.LESSAND],[">","&",w.GREATAND],["<",">",w.LESSGREAT],[">","|",w.CLOBBER],["&",">",w.AND_GREAT]],Bd=new Map([["|",w.PIPE],["&",w.AMP],[";",w.SEMICOLON],["(",w.LPAREN],[")",w.RPAREN],["<",w.LESS],[">",w.GREAT]]);function Wd(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function dl(e){return e===" "||e===" "||e===`
21
+ `||e===";"||e==="&"||e==="|"||e==="("||e===")"||e==="<"||e===">"}var rs=class{input;pos=0;line=1;column=1;tokens=[];pendingHeredocs=[];pendingHeredocDelimiterMode;dparenDepth=0;maxHeredocSize;constructor(t,n){this.input=t,this.maxHeredocSize=n?.maxHeredocSize??_d}tokenize(){let n=this.input.length,r=this.tokens,s=this.pendingHeredocs;for(;this.pos<n;){if(s.length>0&&r.length>0&&r[r.length-1].type===w.NEWLINE){this.readHeredocContent();continue}if(this.skipWhitespace(),this.pos>=n)break;let i=this.nextToken();i&&r.push(i)}return s.length>0&&this.readHeredocContent(),r.push({type:w.EOF,value:"",start:this.pos,end:this.pos,line:this.line,column:this.column}),r}skipWhitespace(){let t=this.input,n=t.length,r=this.pos,s=this.column,i=this.line;for(;r<n;){let o=t[r];if(o===" "||o===" ")r++,s++;else if(o==="\\"&&t[r+1]===`
22
+ `)r+=2,i++,s=1;else break}this.pos=r,this.column=s,this.line=i}nextToken(){let t=this.input,n=this.pos,r=this.line,s=this.column,i=t[n],o=t[n+1],a=t[n+2],l=this.pendingHeredocDelimiterMode;if(this.pendingHeredocDelimiterMode=void 0,l!==void 0&&i!==`
23
+ `&&!(i==="#"&&this.dparenDepth===0))return this.readHeredocDelimiterToken(n,r,s,l);if(i==="#"&&this.dparenDepth===0)return this.readComment(n,r,s);if(i===`
24
+ `)return this.pos=n+1,this.line++,this.column=1,{type:w.NEWLINE,value:`
25
+ `,start:n,end:n+1,line:r,column:s};if(i==="<"&&o==="<"&&a==="-")return this.pos=n+3,this.column=s+3,this.pendingHeredocDelimiterMode=!0,this.makeToken(w.DLESSDASH,"<<-",n,r,s);for(let[u,f,d,p]of Fd)if(i===u&&o===f&&a===d)return this.pos=n+3,this.column=s+3,this.makeToken(p,u+f+d,n,r,s);if(i==="<"&&o==="<")return this.pos=n+2,this.column=s+2,this.pendingHeredocDelimiterMode=!1,this.makeToken(w.DLESS,"<<",n,r,s);if(i==="("&&o==="("){let u=this.tokens[this.tokens.length-1];return this.dparenDepth===0&&u?.end===n&&(u.type===w.LESS||u.type===w.GREAT)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):this.dparenDepth>0?(this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s)):this.looksLikeNestedSubshells(n+2)||this.dparenClosesWithSpacedParens(n+2)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):(this.pos=n+2,this.column=s+2,this.dparenDepth=1,this.makeToken(w.DPAREN_START,"((",n,r,s))}if(i===")"&&o===")")return this.dparenDepth===1?(this.pos=n+2,this.column=s+2,this.dparenDepth=0,this.makeToken(w.DPAREN_END,"))",n,r,s)):this.dparenDepth>1?(this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.RPAREN,")",n,r,s));for(let[u,f,d]of Md)if(!(u==="("&&f==="("||u===")"&&f===")")&&!(this.dparenDepth>0&&u===";"&&(d===w.DSEMI||d===w.SEMI_AND||d===w.SEMI_SEMI_AND))&&i===u&&o===f){if(d===w.DBRACK_START||d===w.DBRACK_END){let p=t[n+2];if(p!==void 0&&p!==" "&&p!==" "&&p!==`
26
+ `&&p!==";"&&p!=="&"&&p!=="|"&&p!=="("&&p!==")"&&p!=="<"&&p!==">")break}return this.pos=n+2,this.column=s+2,this.makeToken(d,u+f,n,r,s)}if(i==="("&&this.dparenDepth>0)return this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s);if(i===")"&&this.dparenDepth>1)return this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s);let c=Bd.get(i);if(c!==void 0)return this.pos=n+1,this.column=s+1,this.makeToken(c,i,n,r,s);if(i==="{"){let u=this.scanFdVariable(n);return u!==null?(this.pos=u.end,this.column=s+(u.end-n),{type:w.FD_VARIABLE,value:u.varname,start:n,end:u.end,line:r,column:s}):o==="}"?(this.pos=n+2,this.column=s+2,{type:w.WORD,value:"{}",start:n,end:n+2,line:r,column:s,quoted:!1,singleQuoted:!1}):this.scanBraceExpansion(n)!==null?this.readWordWithBraceExpansion(n,r,s):this.scanLiteralBraceWord(n)!==null?this.readWordWithBraceExpansion(n,r,s):o!==void 0&&o!==" "&&o!==" "&&o!==`
27
+ `?this.readWord(n,r,s):(this.pos=n+1,this.column=s+1,this.makeToken(w.LBRACE,"{",n,r,s))}return i==="}"?this.isWordCharFollowing(n+1)?this.readWord(n,r,s):(this.pos=n+1,this.column=s+1,this.makeToken(w.RBRACE,"}",n,r,s)):i==="!"?o==="="?(this.pos=n+2,this.column=s+2,this.makeToken(w.WORD,"!=",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.BANG,"!",n,r,s)):this.readWord(n,r,s)}looksLikeNestedSubshells(t){let n=this.input,r=n.length,s=t;for(;s<r&&(n[s]===" "||n[s]===" ");)s++;if(s>=r)return!1;let i=n[s];if(i==="(")return this.looksLikeNestedSubshells(s+1);let o=/[a-zA-Z_]/.test(i),a=i==="!"||i==="[";if(!o&&!a)return!1;let l=s;for(;l<r&&/[a-zA-Z0-9_\-.]/.test(n[l]);)l++;if(l===s)return a;let c=l;for(;c<r&&(n[c]===" "||n[c]===" ");)c++;if(c>=r)return!1;let u=n[c];if(u==="="&&n[c+1]!=="="||u===`
28
+ `||l===c&&/[+\-*/%<>&|^!~?:]/.test(u)&&u!=="-"||u===")"&&n[c+1]===")")return!1;if(c>l&&(u==="-"||u==='"'||u==="'"||u==="$"||/[a-zA-Z_/.]/.test(u))){let f=c;for(;f<r&&n[f]!==`
29
+ `;){if(n[f]===")")return!0;f++}return!1}if(u===")"){let f=c+1;for(;f<r&&(n[f]===" "||n[f]===" ");)f++;if(n[f]==="|"&&n[f+1]==="|"||n[f]==="&"&&n[f+1]==="&"||n[f]===";"||n[f]==="|"&&n[f+1]!=="|")return!0}return!1}makeToken(t,n,r,s,i){return{type:t,value:n,start:r,end:this.pos,line:s,column:i}}readComment(t,n,r){let s=this.input,i=s.length,o=this.pos;for(;o<i&&s[o]!==`
30
+ `;)o++;let a=s.slice(t,o);return this.pos=o,this.column=r+(o-t),{type:w.COMMENT,value:a,start:t,end:o,line:n,column:r}}readWord(t,n,r){let s=this.input,i=s.length,o=this.pos,a=o;for(;o<i;){let y=s[o];if(y===" "||y===" "||y===`
31
+ `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"||y==="'"||y==='"'||y==="\\"||y==="$"||y==="`"||y==="{"||y==="}"||y==="~"||y==="*"||y==="?"||y==="[")break;o++}if(o>a){let y=s[o];if(!(y==="("&&o>a&&"@*+?!".includes(s[o-1]))){if(o>=i||y===" "||y===" "||y===`
32
+ `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"){let b=s.slice(a,o);this.pos=o,this.column=r+(o-a);let v=Pi.get(b);if(v!==void 0)return{type:v,value:b,start:t,end:o,line:n,column:r};let k=fl(b);return k>0&&ul(b.slice(0,k))?{type:w.ASSIGNMENT_WORD,value:b,start:t,end:o,line:n,column:r}:/^[0-9]+$/.test(b)?{type:w.NUMBER,value:b,start:t,end:o,line:n,column:r}:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)?{type:w.NAME,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}:{type:w.WORD,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}}}o=this.pos;let l=this.column,c=this.line,u="",f=!1,d=!1,p=!1,h=!1,m=s[o]==='"'||s[o]==="'",E=!1,S=0;for(;o<i;){let y=s[o];if(!p&&!h){if(y==="("&&u.length>0&&"@*+?!".includes(u[u.length-1])){let b=this.scanExtglobPattern(o);if(b!==null){u+=b.content,o=b.end,l+=b.content.length;continue}}if(y==="["&&S===0){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){let b=o+1<i?s[o+1]:"";if(b==="^"||b==="!"){u+=y,o++,l++;continue}S=1,u+=y,o++,l++;continue}}else if(y==="["&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S++,u+=y,o++,l++;continue}else if(y==="]"&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S--,u+=y,o++,l++;continue}if(S>0){if(y===`
33
+ `)break;u+=y,o++,l++;continue}if(y===" "||y===" "||y===`
34
+ `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">")break}if(y==="$"&&o+1<i&&s[o+1]==="'"&&!p&&!h){for(u+="$'",o+=2,l+=2;o<i&&s[o]!=="'";)s[o]==="\\"&&o+1<i?(u+=s[o]+s[o+1],o+=2,l+=2):(u+=s[o],o++,l++);o<i&&(u+="'",o++,l++);continue}if(y==="$"&&o+1<i&&s[o+1]==='"'&&!p&&!h){o++,l++,h=!0,f=!0,u===""&&(m=!0),o++,l++;continue}if(y==="'"&&!h){if(p)if(p=!1,!m||E)u+=y;else{let b=o+1<i?s[o+1]:"";b&&!dl(b)&&b!=="'"&&(b==='"'?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else p=!0,m&&!E?(d=!0,f=!0):u+=y;o++,l++;continue}if(y==='"'&&!p){if(h)if(h=!1,!m||E)u+=y;else{let b=o+1<i?s[o+1]:"";b&&!dl(b)&&b!=='"'&&(b==="'"?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else h=!0,m&&!E?f=!0:u+=y;o++,l++;continue}if(y==="\\"&&!p&&o+1<i){let b=s[o+1];if(b===`
35
+ `){o+=2,c++,l=1;continue}if(h){if(b==='"'||b==="\\"||b==="$"||b==="`"||b===`
36
+ `){if(b===`
37
+ `){o+=2,l=1,c++;continue}u+=y+b,o+=2,l+=2;continue}}else{u+=y+b,o+=2,l+=2;continue}}if(y==="$"&&o+1<i&&s[o+1]==="("&&!p){u+=y,o++,l++,u+=s[o],o++,l++;let b=1,v=!1,k=!1,A=0,x=!1,R="",P=[],C=s[o]==="("&&!this.dollarDparenIsSubshell(o),O=C?1:0;for(;b>0&&o<i;){let W=s[o];if(u+=W,v)W==="'"&&(v=!1);else if(k)W==="\\"&&o+1<i?(u+=s[o+1],o++,l++):W==='"'&&(k=!1);else{if(W==="("&&s[o+1]==="("?O++:W===")"&&s[o+1]===")"&&O>0&&O--,O===0&&W==="<"&&s[o+1]==="<"&&s[o+2]!=="<"){let K=o+2,N=!1;for(s[K]==="-"&&(N=!0,K++);s[K]===" "||s[K]===" ";)K++;let{delim:U,endPos:j,unclosedQuote:D,unclosedSubstitution:I}=ns(s,K);if(D)throw new rt(`unexpected EOF while looking for matching \`${D}'`,c,l);if(I)throw new rt("unexpected EOF while looking for matching `)'",c,l);if(U.length>0){u+=s.slice(o+1,j),l+=j-o,P.push({delim:U,stripTabs:N}),o=j;continue}}if(W===`
38
+ `&&P.length>0){c++,l=0;let K=o+1;for(let{delim:N,stripTabs:U}of P)for(;!(K>=i);){let j=s.indexOf(`
39
+ `,K);j===-1&&(j=i);let D=s.slice(K,j),I=U?D.replace(/^\t+/,""):D;u+=s.slice(K,Math.min(j+1,i)),j<i&&c++;let M=j>=i;if(K=j+1,I===N||M)break}P.length=0,l=0,o=Math.min(K,i);continue}if(W==="'")v=!0,R="";else if(W==='"')k=!0,R="";else if(W==="\\"&&o+1<i)u+=s[o+1],o++,l++,R="";else if(W==="$"&&o+1<i&&s[o+1]==="{"){o++,l++,u+=s[o],o++,l++;let K=1,N=!1,U=!1;for(;K>0&&o<i;){let j=s[o];if(j==="\\"&&o+1<i&&!N){u+=j,o++,l++,u+=s[o],o++,l++;continue}u+=j,N?j==="'"&&(N=!1):U?j==='"'&&(U=!1):j==="'"?N=!0:j==='"'?U=!0:j==="{"?K++:j==="}"&&K--,j===`
40
+ `?(c++,l=0):l++,o++}R="";continue}else if(W==="#"&&!C&&(R===""||/\s/.test(s[o-1]||""))){for(;o+1<i&&s[o+1]!==`
41
+ `;)o++,l++,u+=s[o];R=""}else/[a-zA-Z_]/.test(W)?R+=W:(R==="case"?(A++,x=!1):R==="in"&&A>0?x=!0:R==="esac"&&A>0&&(A--,x=!1),R="",W==="("?o>0&&s[o-1]==="$"?b++:x||b++:W===")"?x?x=!1:b--:W===";"&&A>0&&(o+1<i&&s[o+1]===";"||o+1<i&&s[o+1]==="&")&&(x=!0))}W===`
42
+ `&&(c++,l=0,R=""),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="["&&!p){u+=y,o++,l++,u+=s[o],o++,l++;let b=1;for(;b>0&&o<i;){let v=s[o];u+=v,v==="["?b++:v==="]"?b--:v===`
43
+ `&&(c++,l=0),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="{"&&!p){u+=y,o++,l++,u+=s[o],o++,l++;let b=1,v=!1,k=!1,A=c,x=l,R=c,P=l;for(;b>0&&o<i;){let C=s[o];if(C==="\\"&&o+1<i&&s[o+1]===`
44
+ `){o+=2,c++,l=1;continue}if(C==="\\"&&o+1<i&&!v){u+=C,o++,l++,u+=s[o],o++,l++;continue}u+=C,v?C==="'"&&(v=!1):k?C==='"'&&(k=!1):C==="'"?(v=!0,A=c,x=l):C==='"'?(k=!0,R=c,P=l):C==="{"?b++:C==="}"&&b--,C===`
45
+ `&&(c++,l=0),o++,l++}if(v)throw new rt("unexpected EOF while looking for matching `''",A,x);if(k)throw new rt("unexpected EOF while looking for matching `\"'",R,P);continue}if(y==="$"&&o+1<i&&!p){let b=s[o+1];if(b==="#"||b==="?"||b==="$"||b==="!"||b==="@"||b==="*"||b==="-"||b>="0"&&b<="9"){u+=y+b,o+=2,l+=2;continue}}if(y==="`"&&!p){for(u+=y,o++,l++;o<i&&s[o]!=="`";){let b=s[o];u+=b,b==="\\"&&o+1<i&&(u+=s[o+1],o++,l++),b===`
46
+ `&&(c++,l=0),o++,l++}o<i&&(u+=s[o],o++,l++);continue}u+=y,o++,y===`
47
+ `?(c++,l=1):l++}if(this.pos=o,this.column=l,this.line=c,E&&m&&(u=s[t]+u,f=!1,d=!1),p||h){let y=p?"'":'"';throw new rt(`unexpected EOF while looking for matching \`${y}'`,n,r)}if(!m&&u.length>=2){if(u[0]==="'"&&u[u.length-1]==="'"){let y=u.slice(1,-1);!y.includes("'")&&!y.includes('"')&&(u=y,f=!0,d=!0)}else if(u[0]==='"'&&u[u.length-1]==='"'){let y=u.slice(1,-1),b=!1;for(let v=0;v<y.length;v++){if(y[v]==='"'){b=!0;break}y[v]==="\\"&&v+1<y.length&&v++}b||(u=y,f=!0,d=!1)}}if(u==="")return{type:w.WORD,value:"",start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d};let g=Pi.get(u);if(!f&&g!==void 0)return{type:g,value:u,start:t,end:o,line:n,column:r};if(!m){let y=fl(u);if(y>0&&ul(u.slice(0,y)))return{type:w.ASSIGNMENT_WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}return/^[0-9]+$/.test(u)?{type:w.NUMBER,value:u,start:t,end:o,line:n,column:r}:Wd(u)?{type:w.NAME,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}:{type:w.WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}readHeredocContent(){for(;this.pendingHeredocs.length>0;){let t=this.pendingHeredocs.shift();if(!t)break;let n=this.pos,r=this.line,s=this.column,i="",o=!1;for(;this.pos<this.input.length;){let a="",l="",c="";for(;;){for(a="";this.pos<this.input.length&&this.input[this.pos]!==`
48
+ `;)a+=this.input[this.pos],this.pos++,this.column++;let f=0;for(let d=a.length-1;a[d]==="\\";d-=1)f+=1;if(c+=a,t.quoted||f%2===0||this.pos+1>=this.input.length)break;c=c.slice(0,-1),l+=`${a}
49
+ `,this.pos++,this.line++,this.column=1}if((t.stripTabs?c.replace(/^\t+/,""):c)===t.delimiter){o=!0,this.pos<this.input.length&&this.input[this.pos]===`
50
+ `&&(this.pos++,this.line++,this.column=1);break}if(i+=l,i+=a,this.pos<this.input.length&&this.input[this.pos]===`
51
+ `?(i+=`
52
+ `,this.pos++,this.line++,this.column=1):a.length>0&&(i+=`
53
+ `),i.length>this.maxHeredocSize)throw new rt(`Heredoc size limit exceeded (${this.maxHeredocSize} bytes)`,r,s)}this.tokens.push({type:w.HEREDOC_CONTENT,value:i,start:n,end:this.pos,line:r,column:s,heredocTerminated:o})}}readHeredocDelimiterToken(t,n,r,s){let i=this.input,{delim:o,endPos:a,quoted:l,unclosedQuote:c,unclosedSubstitution:u}=ns(i,t);if(c)throw new rt(`unexpected EOF while looking for matching \`${c}'`,n,r);if(u)throw new rt("unexpected EOF while looking for matching `)'",n,r);if(a===t)throw new rt("Expected here-document delimiter",n,r);let f=n,d=r;for(let p=t;p<a;p++)i[p]===`
54
+ `?(f+=1,d=1):d+=1;return this.pos=a,this.line=f,this.column=d,this.pendingHeredocs.push({delimiter:o,stripTabs:s,quoted:l}),{type:w.WORD,value:i.slice(t,a),start:t,end:a,line:n,column:r,quoted:l,heredocDelimiter:o}}isWordCharFollowing(t){if(t>=this.input.length)return!1;let n=this.input[t];return!(n===" "||n===" "||n===`
55
+ `||n===";"||n==="&"||n==="|"||n==="("||n===")"||n==="<"||n===">")}readWordWithBraceExpansion(t,n,r){let s=this.input,i=s.length,o=t,a=r;for(;o<i;){let c=s[o];if(c===" "||c===" "||c===`
56
+ `||c===";"||c==="&"||c==="|"||c==="("||c===")"||c==="<"||c===">")break;if(c==="{"){if(this.scanBraceExpansion(o)!==null){let f=1;for(o++,a++;o<i&&f>0;)s[o]==="{"?f++:s[o]==="}"&&f--,o++,a++;continue}o++,a++;continue}if(c==="}"){o++,a++;continue}if(c==="$"&&o+1<i&&s[o+1]==="("){o++,a++,o++,a++;let u=1;for(;u>0&&o<i;)s[o]==="("?u++:s[o]===")"&&u--,o++,a++;continue}if(c==="$"&&o+1<i&&s[o+1]==="{"){o++,a++,o++,a++;let u=1;for(;u>0&&o<i;)s[o]==="{"?u++:s[o]==="}"&&u--,o++,a++;continue}if(c==="`"){for(o++,a++;o<i&&s[o]!=="`";)s[o]==="\\"&&o+1<i?(o+=2,a+=2):(o++,a++);o<i&&(o++,a++);continue}o++,a++}let l=s.slice(t,o);return this.pos=o,this.column=a,{type:w.WORD,value:l,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}scanBraceExpansion(t){let n=this.input,r=n.length,s=t+1,i=1,o=!1,a=!1;for(;s<r&&i>0;){let l=n[s];if(l==="{")i++,s++;else if(l==="}")i--,s++;else if(l===","&&i===1)o=!0,s++;else if(l==="."&&s+1<r&&n[s+1]===".")a=!0,s+=2;else{if(l===" "||l===" "||l===`
57
+ `||l===";"||l==="&"||l==="|")return null;s++}}return i===0&&(o||a)?n.slice(t,s):null}scanLiteralBraceWord(t){let n=this.input,r=n.length,s=t+1,i=1;for(;s<r&&i>0;){let o=n[s];if(o==="{")i++,s++;else if(o==="}"){if(i--,i===0)return n.slice(t,s+1);s++}else{if(o===" "||o===" "||o===`
58
+ `||o===";"||o==="&"||o==="|")return null;s++}}return null}scanExtglobPattern(t){let n=this.input,r=n.length,s=t+1,i=1;for(;s<r&&i>0;){let o=n[s];if(o==="\\"&&s+1<r){s+=2;continue}if("@*+?!".includes(o)&&s+1<r&&n[s+1]==="("){s++,i++,s++;continue}if(o==="(")i++,s++;else if(o===")")i--,s++;else{if(o===`
59
+ `)return null;s++}}return i===0?{content:n.slice(t,s),end:s}:null}scanFdVariable(t){let n=this.input,r=n.length,s=t+1,i=s;for(;s<r;){let u=n[s];if(s===i){if(!(u>="a"&&u<="z"||u>="A"&&u<="Z"||u==="_"))return null}else if(!(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||u==="_"))break;s++}if(s===i)return null;let o=n.slice(i,s);if(s>=r||n[s]!=="}"||(s++,s>=r))return null;let a=n[s],l=s+1<r?n[s+1]:"";return a===">"||a==="<"||a==="&"&&(l===">"||l==="<")?{varname:o,end:s}:null}dollarDparenIsSubshell(t){let n=this.input,r=n.length,s=t+1,i=2,o=!1,a=!1,l=!1;for(;s<r&&i>0;){let c=n[s];if(o){c==="'"&&(o=!1),c===`
60
+ `&&(l=!0),s++;continue}if(a){if(c==="\\"){s+=2;continue}c==='"'&&(a=!1),c===`
61
+ `&&(l=!0),s++;continue}if(c==="'"){o=!0,s++;continue}if(c==='"'){a=!0,s++;continue}if(c==="\\"){s+=2;continue}if(c===`
62
+ `&&(l=!0),c==="("){i++,s++;continue}if(c===")"){if(i--,i===1){let u=s+1;if(u<r&&n[u]===")")return!1;let f=u,d=!1;for(;f<r&&(n[f]===" "||n[f]===" "||n[f]===`
63
+ `);)d=!0,f++;if(d&&f<r&&n[f]===")"||l)return!0}if(i===0)return!1;s++;continue}s++}return!1}dparenClosesWithSpacedParens(t){let n=this.input,r=n.length,s=t,i=2,o=!1,a=!1;for(;s<r&&i>0;){let l=n[s];if(o){l==="'"&&(o=!1),s++;continue}if(a){if(l==="\\"){s+=2;continue}l==='"'&&(a=!1),s++;continue}if(l==="'"){o=!0,s++;continue}if(l==='"'){a=!0,s++;continue}if(l==="\\"){s+=2;continue}if(l==="("){i++,s++;continue}if(l===")"){if(i--,i===1){let c=s+1;if(c<r&&n[c]===")")return!1;let u=c,f=!1;for(;u<r&&(n[u]===" "||n[u]===" "||n[u]===`
64
+ `);)f=!0,u++;if(f&&u<r&&n[u]===")")return!0}if(i===0)return!1;s++;continue}if(i===1&&(l==="|"&&s+1<r&&n[s+1]==="|"||l==="&"&&s+1<r&&n[s+1]==="&"||l==="|"&&s+1<r&&n[s+1]!=="|"))return!0;s++}return!1}};var $i=1e6,hr=1e5,Vd=1e6,pl=200,Re;(function(e){e[e.Default=0]="Default",e[e.Assignment=1]="Assignment",e[e.NoBraceExpansion=2]="NoBraceExpansion",e[e.Regex=4]="Regex"})(Re||(Re={}));var hl=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),ml=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS]),yl=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),xe=class extends Error{line;column;token;constructor(t,n,r,s=void 0){super(`Parse error at ${n}:${r}: ${t}`),this.line=n,this.column=r,this.token=s,this.name="ParseException"}},ss=class{iterations=0;tokens=0;depth=0;reset(){this.iterations=0,this.tokens=0,this.depth=0}chargeIteration(t,n){if(this.iterations++,this.iterations>Vd)throw new xe("Maximum parse iterations exceeded (possible infinite loop)",t,n)}chargeTokens(t,n=1,r=1){if(this.tokens+=t,this.tokens>hr)throw new xe(`Too many tokens: cumulative count exceeds limit of ${hr}`,n,r)}enter(t,n){if(this.depth++,this.depth>pl)throw this.depth--,new xe(`Maximum parser nesting depth exceeded (${pl})`,t,n);let r=!0;return()=>{r&&(r=!1,this.depth--)}}};function ye(e,t){for(;t<e.length;){if(e[t]==="\\"&&e[t+1]===`
65
+ `){t+=2;continue}if(/\s/.test(e[t])){t++;continue}break}return t}var is=["=","+=","-=","*=","/=","%=","<<=",">>=","&=","|=","^="];function mr(e){if(e.includes("#")){let n=e.split("#");if(n.length!==2)return Number.NaN;let[r,s]=n;if(!/^\d+$/.test(r)||s.length===0)return Number.NaN;let i=Number.parseInt(r,10);if(i<2||i>64)return Number.NaN;let o=0;for(let a of s){let l;if(/[0-9]/.test(a))l=a.charCodeAt(0)-48;else if(/[a-z]/.test(a))l=a.charCodeAt(0)-97+10;else if(/[A-Z]/.test(a))l=a.charCodeAt(0)-65+(i<=36?10:36);else if(a==="@")l=62;else if(a==="_")l=63;else return Number.NaN;if(l>=i)return Number.NaN;if(o=o*i+l,o>Number.MAX_SAFE_INTEGER)return Number.MAX_SAFE_INTEGER}return o}if(e.startsWith("0x")||e.startsWith("0X")){let n=Number.parseInt(e.slice(2),16);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}if(e.startsWith("0")&&e.length>1&&/^[0-9]+$/.test(e)){if(/[89]/.test(e))return Number.NaN;let n=Number.parseInt(e,8);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}let t=Number.parseInt(e,10);return t>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:t}function gl(e,t,n,r){if(n.slice(r,r+3)!=="$((")return null;let s=r+3,i=1,o=s;for(;s<n.length-1&&i>0;)n[s]==="("&&n[s+1]==="("?(i++,s+=2):n[s]===")"&&n[s+1]===")"?(i--,i>0&&(s+=2)):s++;let a=n.slice(o,s),{expr:l}=e(t,a,0);return s+=2,{expr:{type:"ArithNested",expression:l},pos:s}}function wl(e,t){if(e.slice(t,t+2)!=="$'")return null;let n=t+2,r="";for(;n<e.length&&e[n]!=="'";)if(e[n]==="\\"&&n+1<e.length){let i=e[n+1];switch(i){case"n":r+=`
66
+ `;break;case"t":r+=" ";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"'":r+="'";break;default:r+=i}n+=2}else r+=e[n],n++;e[n]==="'"&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function El(e,t){if(e.slice(t,t+2)!=='$"')return null;let n=t+2,r="";for(;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(r+=e[n+1],n+=2):(r+=e[n],n++);e[n]==='"'&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function zd(e){let t="",n=0;for(;n<e.length;)if(e[n]==='"'){for(n++;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);n<e.length&&n++}else t+=e[n],n++;return t}function ie(e,t){let n=zd(t),{expr:r,pos:s}=Gn(e,n,0),i=ye(n,s);if(i<n.length){let o=t.slice(i).trim();if(o)return{type:"ArithmeticExpression",originalText:t,expression:{type:"ArithSyntaxError",errorToken:o,message:`${o}: syntax error: invalid arithmetic operator (error token is "${o}")`}}}return{type:"ArithmeticExpression",expression:r,originalText:t}}function Ze(e,t){return{expr:{type:"ArithSyntaxError",errorToken:e,message:`syntax error: operand expected (error token is "${e}")`},pos:t}}function Qe(e,t){return ye(e,t)>=e.length}function Gn(e,t,n){return Ud(e,t,n)}function Cn(e,t,n){return e.withDepth(()=>Gn(e,t,n))}function Ud(e,t,n){let{expr:r,pos:s}=yr(e,t,n);for(s=ye(t,s);t[s]===",";){if(s++,Qe(t,s))return Ze(",",s);let{expr:o,pos:a}=yr(e,t,s);r={type:"ArithBinary",operator:",",left:r,right:o},s=ye(t,a)}return{expr:r,pos:s}}function yr(e,t,n){let{expr:r,pos:s}=jd(e,t,n);if(s=ye(t,s),t[s]==="?"){s++;let{expr:i,pos:o}=Cn(e,t,s);if(s=ye(t,o),t[s]===":"){s++;let{expr:a,pos:l}=Cn(e,t,s);return{expr:{type:"ArithTernary",condition:r,consequent:i,alternate:a},pos:l}}}return{expr:r,pos:s}}function jd(e,t,n){let{expr:r,pos:s}=bl(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="||";){if(s+=2,Qe(t,s))return Ze("||",s);let{expr:o,pos:a}=bl(e,t,s);r={type:"ArithBinary",operator:"||",left:r,right:o},s=a}return{expr:r,pos:s}}function bl(e,t,n){let{expr:r,pos:s}=Sl(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="&&";){if(s+=2,Qe(t,s))return Ze("&&",s);let{expr:o,pos:a}=Sl(e,t,s);r={type:"ArithBinary",operator:"&&",left:r,right:o},s=a}return{expr:r,pos:s}}function Sl(e,t,n){let{expr:r,pos:s}=vl(e,t,n);for(;s=ye(t,s),t[s]==="|"&&t[s+1]!=="|";){if(s++,Qe(t,s))return Ze("|",s);let{expr:o,pos:a}=vl(e,t,s);r={type:"ArithBinary",operator:"|",left:r,right:o},s=a}return{expr:r,pos:s}}function vl(e,t,n){let{expr:r,pos:s}=Al(e,t,n);for(;s=ye(t,s),t[s]==="^";){if(s++,Qe(t,s))return Ze("^",s);let{expr:o,pos:a}=Al(e,t,s);r={type:"ArithBinary",operator:"^",left:r,right:o},s=a}return{expr:r,pos:s}}function Al(e,t,n){let{expr:r,pos:s}=kl(e,t,n);for(;s=ye(t,s),t[s]==="&"&&t[s+1]!=="&";){if(s++,Qe(t,s))return Ze("&",s);let{expr:o,pos:a}=kl(e,t,s);r={type:"ArithBinary",operator:"&",left:r,right:o},s=a}return{expr:r,pos:s}}function kl(e,t,n){let{expr:r,pos:s}=Pl(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="=="||t.slice(s,s+2)==="!=";){let i=t.slice(s,s+2);if(s+=2,Qe(t,s))return Ze(i,s);let{expr:o,pos:a}=Pl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function Pl(e,t,n){let{expr:r,pos:s}=Ci(e,t,n);for(;;)if(s=ye(t,s),t.slice(s,s+2)==="<="||t.slice(s,s+2)===">="){let i=t.slice(s,s+2);if(s+=2,Qe(t,s))return Ze(i,s);let{expr:o,pos:a}=Ci(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else if(t[s]==="<"||t[s]===">"){let i=t[s];if(s++,Qe(t,s))return Ze(i,s);let{expr:o,pos:a}=Ci(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function Ci(e,t,n){let{expr:r,pos:s}=xl(e,t,n);for(;s=ye(t,s),t.slice(s,s+2)==="<<"||t.slice(s,s+2)===">>";){let i=t.slice(s,s+2);if(s+=2,Qe(t,s))return Ze(i,s);let{expr:o,pos:a}=xl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function xl(e,t,n){let{expr:r,pos:s}=$l(e,t,n);for(;s=ye(t,s),(t[s]==="+"||t[s]==="-")&&t[s+1]!==t[s];){let i=t[s];if(s++,Qe(t,s))return Ze(i,s);let{expr:o,pos:a}=$l(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function $l(e,t,n){let{expr:r,pos:s}=os(e,t,n);for(;;)if(s=ye(t,s),t[s]==="*"&&t[s+1]!=="*"){if(s++,Qe(t,s))return Ze("*",s);let{expr:o,pos:a}=os(e,t,s);r={type:"ArithBinary",operator:"*",left:r,right:o},s=a}else if(t[s]==="/"||t[s]==="%"){let i=t[s];if(s++,Qe(t,s))return Ze(i,s);let{expr:o,pos:a}=os(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function os(e,t,n){let{expr:r,pos:s}=Ni(e,t,n),i=ye(t,s);if(t.slice(i,i+2)==="**"){if(i+=2,Qe(t,i))return Ze("**",i);let{expr:a,pos:l}=e.withDepth(()=>os(e,t,i));return{expr:{type:"ArithBinary",operator:"**",left:r,right:a},pos:l}}return{expr:r,pos:s}}function Ni(e,t,n){let r=ye(t,n);if(t.slice(r,r+2)==="++"||t.slice(r,r+2)==="--"){let s=t.slice(r,r+2);r+=2;let{expr:i,pos:o}=e.withDepth(()=>Ni(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}if(t[r]==="+"||t[r]==="-"||t[r]==="!"||t[r]==="~"){let s=t[r];r++;let{expr:i,pos:o}=e.withDepth(()=>Ni(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}return Gd(e,t,r)}function qd(e,t){let n=e[t];return n==="$"||n==="`"}function Gd(e,t,n){let{expr:r,pos:s}=Cl(e,t,n,!1),i=[r];for(;qd(t,s);){let{expr:a,pos:l}=Cl(e,t,s,!0);i.push(a),s=l}i.length>1&&(r={type:"ArithConcat",parts:i});let o;if(t[s]==="["&&r.type==="ArithConcat"){s++;let{expr:a,pos:l}=Cn(e,t,s);o=a,s=l,t[s]==="]"&&s++}if(o&&r.type==="ArithConcat"&&(r={type:"ArithDynamicElement",nameExpr:r,subscript:o},o=void 0),s=ye(t,s),r.type==="ArithConcat"||r.type==="ArithVariable"||r.type==="ArithDynamicElement"){for(let a of is)if(t.slice(s,s+a.length)===a&&t.slice(s,s+a.length+1)!=="=="){s+=a.length;let{expr:l,pos:c}=e.withDepth(()=>yr(e,t,s));return r.type==="ArithDynamicElement"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r.nameExpr,subscript:r.subscript,value:l},pos:c}:r.type==="ArithConcat"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r,value:l},pos:c}:{expr:{type:"ArithAssignment",operator:a,variable:r.name,value:l},pos:c}}}if(t.slice(s,s+2)==="++"||t.slice(s,s+2)==="--"){let a=t.slice(s,s+2);return s+=2,{expr:{type:"ArithUnary",operator:a,operand:r,prefix:!1},pos:s}}return{expr:r,pos:s}}function Cl(e,t,n,r=!1){let s=ye(t,n),i=gl(Cn,e,t,s);if(i)return i;let o=wl(t,s);if(o)return o;let a=El(t,s);if(a)return a;if(t.slice(s,s+2)==="$("&&t[s+2]!=="("){s+=2;let c=1,u=s;for(;s<t.length&&c>0;)t[s]==="("?c++:t[s]===")"&&c--,c>0&&s++;let f=t.slice(u,s);return s++,{expr:{type:"ArithCommandSubst",command:f},pos:s}}if(t[s]==="`"){s++;let c=s;for(;s<t.length&&t[s]!=="`";)s++;let u=t.slice(c,s);return t[s]==="`"&&s++,{expr:{type:"ArithCommandSubst",command:u},pos:s}}if(t[s]==="("){s++;let{expr:c,pos:u}=Cn(e,t,s);return s=ye(t,u),t[s]===")"&&s++,{expr:{type:"ArithGroup",expression:c},pos:s}}if(t[s]==="'"){s++;let c="";for(;s<t.length&&t[s]!=="'";)c+=t[s],s++;t[s]==="'"&&s++;let u=Number.parseInt(c,10);return{expr:{type:"ArithSingleQuote",content:c,value:Number.isNaN(u)?0:u},pos:s}}if(t[s]==='"'){s++;let c="";for(;s<t.length&&t[s]!=='"';)t[s]==="\\"&&s+1<t.length?(c+=t[s+1],s+=2):(c+=t[s],s++);t[s]==='"'&&s++;let u=c.trim();if(!u)return{expr:{type:"ArithNumber",value:0},pos:s};let{expr:f}=Cn(e,u,0);return{expr:f,pos:s}}if(/[0-9]/.test(t[s])){let c="",u=!1,f=!1;for(;s<t.length;){let p=t[s];if(u)if(/[0-9a-zA-Z@_]/.test(p))c+=p,s++;else break;else if(p==="#")u=!0,c+=p,s++;else if(c==="0"&&(p==="x"||p==="X")&&s+1<t.length&&/[0-9a-fA-F]/.test(t[s+1]))f=!0,c+=p,s++;else if(f&&/[0-9a-fA-F]/.test(p))c+=p,s++;else if(!f&&/[0-9]/.test(p))c+=p,s++;else break}if(s<t.length&&/[a-zA-Z_]/.test(t[s])){let p=c;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)p+=t[s],s++;return{expr:{type:"ArithSyntaxError",errorToken:p,message:`${p}: value too great for base (error token is "${p}")`},pos:s}}if(t[s]==="."&&/[0-9]/.test(t[s+1]))throw new ue(`${c}.${t[s+1]}...: syntax error: invalid arithmetic operator`);if(t[s]==="["){let p=t.slice(s).trim();return{expr:{type:"ArithNumberSubscript",number:c,errorToken:p},pos:t.length}}return{expr:{type:"ArithNumber",value:mr(c)},pos:s}}if(t[s]==="$"&&t[s+1]==="{"){let c=s+2,u=1,f=c;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;let d=t.slice(c,f),p=f+1;if(t[p]==="#"){let h=p+1;for(;h<t.length&&/[0-9a-zA-Z@_]/.test(t[h]);)h++;let m=t.slice(p+1,h);return{expr:{type:"ArithDynamicBase",baseExpr:d,value:m},pos:h}}if(/[0-9]/.test(t[p])||t[p]==="x"||t[p]==="X"){let h=p;if(t[p]==="x"||t[p]==="X")for(h++;h<t.length&&/[0-9a-fA-F]/.test(t[h]);)h++;else for(;h<t.length&&/[0-9]/.test(t[h]);)h++;let m=t.slice(p,h);return{expr:{type:"ArithDynamicNumber",prefix:d,suffix:m},pos:h}}return s=p,{expr:{type:"ArithBracedExpansion",content:d},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[0-9]/.test(t[s+1])){s++;let c="";for(;s<t.length&&/[0-9]/.test(t[s]);)c+=t[s],s++;return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:!0},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[*@#?\-!$]/.test(t[s+1])){let c=t[s+1];return s+=2,{expr:{type:"ArithSpecialVar",name:c},pos:s}}let l=!1;if(t[s]==="$"&&s+1<t.length&&/[a-zA-Z_]/.test(t[s+1])&&(l=!0,s++),s<t.length&&/[a-zA-Z_]/.test(t[s])){let c="";for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)c+=t[s],s++;if(t[s]==="["&&!r){s++;let u;if(t[s]==="'"||t[s]==='"'){let d=t[s];for(s++,u="";s<t.length&&t[s]!==d;)u+=t[s],s++;t[s]===d&&s++,s=ye(t,s),t[s]==="]"&&s++}let f;if(u===void 0){let{expr:d,pos:p}=Cn(e,t,s);f=d,s=p,t[s]==="]"&&s++}if(s=ye(t,s),t[s]==="["&&f)return{expr:{type:"ArithDoubleSubscript",array:c,index:f},pos:s};if(!r){for(let d of is)if(t.slice(s,s+d.length)===d&&t.slice(s,s+d.length+1)!=="=="){s+=d.length;let{expr:p,pos:h}=e.withDepth(()=>yr(e,t,s));return{expr:{type:"ArithAssignment",operator:d,variable:c,subscript:f,stringKey:u,value:p},pos:h}}}return{expr:{type:"ArithArrayElement",array:c,index:f,stringKey:u},pos:s}}if(s=ye(t,s),!r){for(let u of is)if(t.slice(s,s+u.length)===u&&t.slice(s,s+u.length+1)!=="=="){s+=u.length;let{expr:f,pos:d}=e.withDepth(()=>yr(e,t,s));return{expr:{type:"ArithAssignment",operator:u,variable:c,value:f},pos:d}}}return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:l},pos:s}}if(t[s]==="#"){let c=s+1;for(;c<t.length&&t[c]!==`
67
+ `;)c++;let u=t.slice(s,c).trim()||"#";return{expr:{type:"ArithSyntaxError",errorToken:u,message:`${u}: syntax error: invalid arithmetic operator (error token is "${u}")`},pos:t.length}}return{expr:{type:"ArithNumber",value:0},pos:s}}var as=e=>{let t,n="";for(let r=0;r<e.length;r++){let s=e[r];if(s==="\\"&&t==='"'&&r+1<e.length){n+=s+e[r+1],r+=1;continue}if(s==="'"||s==='"'){t===s?t=void 0:t||(t=s),n+=s;continue}if(s==="\\"&&!t&&r+1<e.length){let i=e[r+1];n+=i==="$"||i==="`"?`\\${i}`:i,r+=1;continue}n+=s}return n};function Hd(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r<128){t+=String.fromCharCode(r),n++;continue}if((r&224)===192){if(n+1<e.length&&(e[n+1]&192)===128&&r>=194){let s=(r&31)<<6|e[n+1]&63;t+=String.fromCharCode(s),n+=2;continue}t+=String.fromCharCode(r),n++;continue}if((r&240)===224){if(n+2<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128){if(r===224&&e[n+1]<160){t+=String.fromCharCode(r),n++;continue}let s=(r&15)<<12|(e[n+1]&63)<<6|e[n+2]&63;if(s>=55296&&s<=57343){t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(s),n+=3;continue}t+=String.fromCharCode(r),n++;continue}if((r&248)===240&&r<=244){if(n+3<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128&&(e[n+3]&192)===128){if(r===240&&e[n+1]<144){t+=String.fromCharCode(r),n++;continue}let s=(r&7)<<18|(e[n+1]&63)<<12|(e[n+2]&63)<<6|e[n+3]&63;if(s>1114111){t+=String.fromCharCode(r),n++;continue}t+=String.fromCodePoint(s),n+=4;continue}t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(r),n++}return t}function Ol(e,t,n){let r=n+1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;return r}function Ri(e,t,n,r,s){let i=1,o=n+1;for(;o<t.length&&i>0;)t[o]===r?i++:t[o]===s&&i--,i>0&&o++;return i===0?o:-1}function Nn(e,t,n){let r=n,s=1;for(;r<t.length&&s>0;){let i=t[r];if(i==="\\"&&r+1<t.length){r+=2;continue}if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++;continue}i==="{"?s++:i==="}"&&s--,s>0&&r++}return r}function Dl(e,t,n){let r=n,s=!1;for(;r<t.length;){let i=t[r];if(i==="/"&&s||i==="}")break;if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1,s=!0;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++,s=!0;continue}i==="\\"?(r+=2,s=!0):(r++,s=!0)}return r}function Il(e,t,n){let r=n,s="";for(;r<t.length;){let i=t[r];if(i==="*"||i==="?")s+=i,r++;else if(i==="["){let o=Zd(t,r);o===-1?(s+=i,r++):(s+=t.slice(r,o+1),r=o+1)}else break}return{pattern:s,endIndex:r}}function Zd(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){let r=e[n];if(r==="\\"&&n+1<e.length){let s=e[n+1];if(s==='"'||s==="'")return-1;n+=2;continue}if(r==="]")return n;if(r==='"'||r==="$"||r==="`")return-1;if(r==="'"){let s=e.indexOf("'",n+1);if(s!==-1){n=s+1;continue}}if(r==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){n=s+2;continue}}if(r==="["&&n+1<e.length&&(e[n+1]==="."||e[n+1]==="=")){let i=`${e[n+1]}]`,o=e.indexOf(i,n+2);if(o!==-1){n=o+2;continue}}n++}return-1}function Tl(e,t,n){let r="",s=n;for(;s<t.length&&t[s]!=="'";){let i=t[s];if(i==="\\"&&s+1<t.length)switch(t[s+1]){case"n":r+=`
68
+ `,s+=2;break;case"t":r+=" ",s+=2;break;case"r":r+="\r",s+=2;break;case"\\":r+="\\",s+=2;break;case"'":r+="'",s+=2;break;case'"':r+='"',s+=2;break;case"a":r+="\x07",s+=2;break;case"b":r+="\b",s+=2;break;case"e":case"E":r+="\x1B",s+=2;break;case"f":r+="\f",s+=2;break;case"v":r+="\v",s+=2;break;case"x":{let a=[],l=s;for(;l+1<t.length&&t[l]==="\\"&&t[l+1]==="x";){let c=t.slice(l+2,l+4),u=parseInt(c,16);if(!Number.isNaN(u)&&c.length>0)a.push(u),l+=2+c.length;else break}a.length>0?(r+=Hd(a),s=l):(r+="\\x",s+=2);break}case"u":{let a=t.slice(s+2,s+6),l=parseInt(a,16);Number.isNaN(l)?(r+="\\u",s+=2):(r+=String.fromCharCode(l),s+=6);break}case"c":{if(s+2<t.length){let l=t[s+2].charCodeAt(0)&31;r+=String.fromCharCode(l),s+=3}else r+="\\c",s+=2;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let a="",l=s+1;for(;l<t.length&&l<s+4&&/[0-7]/.test(t[l]);)a+=t[l],l++;let c=parseInt(a,8);r+=String.fromCharCode(c),s=l;break}default:r+=i,s++}else r+=i,s++}return s<t.length&&t[s]==="'"&&s++,{part:F.literal(r),endIndex:s}}function Oi(e,t){let n=t.trim();return n===""?{type:"ArithmeticExpression",expression:{type:"ArithNumber",value:0}}:ie(e,n)}function Rl(e){let t=[],n="",r=0;for(let s=0;s<e.length;s++){let i=e[s];i==="{"?(r++,n+=i):i==="}"?(r--,n+=i):i===","&&r===0?(t.push(n),n=""):n+=i}return t.push(n),t}function _l(e,t,n,r){let s=Ri(e,t,n,"{","}");if(s===-1)return null;let i=t.slice(n+1,s),o=i.match(/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/);if(o)return{part:{type:"BraceExpansion",items:[{type:"Range",start:Number.parseInt(o[1],10),end:Number.parseInt(o[2],10),step:o[3]?Number.parseInt(o[3],10):void 0,startStr:o[1],endStr:o[2]}]},endIndex:s+1};let a=i.match(/^([a-zA-Z])\.\.([a-zA-Z])(?:\.\.(-?\d+))?$/);return a?{part:{type:"BraceExpansion",items:[{type:"Range",start:a[1],end:a[2],step:a[3]?Number.parseInt(a[3],10):void 0}]},endIndex:s+1}:i.includes(",")&&r?{part:{type:"BraceExpansion",items:Rl(i).map(u=>e.withDepth(()=>({type:"Word",word:F.word(r(e,u,!1,!1,!1))})))},endIndex:s+1}:i.includes(",")?{part:{type:"BraceExpansion",items:Rl(i).map(u=>({type:"Word",word:F.word([F.literal(u)])}))},endIndex:s+1}:null}function Di(e,t){let n="";for(let r of t.parts)switch(r.type){case"Literal":n+=r.value;break;case"SingleQuoted":n+=`'${r.value}'`;break;case"Escaped":n+=r.value;break;case"DoubleQuoted":n+='"';for(let s of r.parts)s.type==="Literal"||s.type==="Escaped"?n+=s.value:s.type==="ParameterExpansion"&&(n+=`\${${s.parameter}}`);n+='"';break;case"ParameterExpansion":n+=`\${${r.parameter}}`;break;case"Glob":n+=r.pattern;break;case"TildeExpansion":n+="~",r.user&&(n+=r.user);break;case"BraceExpansion":{n+="{";let s=[];for(let i of r.items)if(i.type==="Range"){let o=i.startStr??String(i.start),a=i.endStr??String(i.end);i.step!==void 0?s.push(`${o}..${a}..${i.step}`):s.push(`${o}..${a}`)}else s.push(Di(e,i.word));s.length===1&&r.items[0].type==="Range"?n+=s[0]:n+=s.join(","),n+="}";break}default:n+=r.type}return n}function Ll(e,t){return{[w.LESS]:"<",[w.GREAT]:">",[w.DGREAT]:">>",[w.LESSAND]:"<&",[w.GREATAND]:">&",[w.LESSGREAT]:"<>",[w.CLOBBER]:">|",[w.TLESS]:"<<<",[w.AND_GREAT]:"&>",[w.AND_DGREAT]:"&>>",[w.DLESS]:"<",[w.DLESSDASH]:"<"}[t]||">"}function gr(e){let t=e.current(),n=t.type;if(n===w.NUMBER){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:ml.has(r.type)}if(n===w.FD_VARIABLE){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:yl.has(r.type)}return!e.isProcessSubstitutionStart()&&hl.has(n)}function ls(e){let t=null,n;e.check(w.NUMBER)?t=Number.parseInt(e.advance().value,10):e.check(w.FD_VARIABLE)&&(n=e.advance().value);let r=e.advance(),s=Ll(e,r.type);if(r.type===w.DLESS||r.type===w.DLESSDASH)return Qd(e,t,n,r.type===w.DLESSDASH);e.isWord()||e.error("Expected redirection target");let i=e.parseWord();return F.redirection(s,i,t,n)}function Qd(e,t,n,r){e.isWord()||e.error("Expected here-document delimiter");let s=e.advance(),i=s.heredocDelimiter??s.value,o=s.quoted||!1,a=F.redirection(r?"<<-":"<<",F.hereDoc(i,F.word([]),r,o),t,n);return e.addPendingHeredoc(a,i,r,o),a}function Ti(e){let t=e.getSourceLine(),n=[],r=null,s=[],i=[];for(;e.check(w.ASSIGNMENT_WORD)||gr(e);)e.checkIterationLimit(),e.check(w.ASSIGNMENT_WORD)?n.push(Kd(e)):i.push(ls(e));if(e.isWord())r=e.parseWord();else if(n.length>0&&(e.check(w.DBRACK_START)||e.check(w.DPAREN_START))){let a=e.advance();r=F.word([F.literal(a.value)])}for(;(!e.isStatementEnd()||e.check(w.RBRACE))&&!e.check(w.PIPE,w.PIPE_AMP);)if(e.checkIterationLimit(),gr(e))i.push(ls(e));else if(e.check(w.ASSIGNMENT_WORD)){let a=e.advance(),l=a.value,c=l.endsWith("="),u=l.endsWith("=(");if((c||u)&&(u||e.check(w.LPAREN))){let f=u?l.slice(0,-2):l.slice(0,-1);u||e.expect(w.LPAREN);let d=Ii(e);e.expect(w.RPAREN);let p=d.map(m=>Di(e,m)),h=`${f}=(${p.join(" ")})`;s.push(e.parseWordFromString(h,!1,!1,!0))}else{let f=e.parseWordFromString(l,a.quoted,a.singleQuoted,!0);s.push(e.parseAdjacentWordParts(f.parts,a.end,Re.Assignment))}}else if(e.isWord())s.push(e.parseWord());else if(e.check(w.RBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.DBRACK_END)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LPAREN))e.error("syntax error near unexpected token `('");else break;let o=F.simpleCommand(r,s,n,i);return o.line=t,o}function Kd(e){let t=e.expect(w.ASSIGNMENT_WORD),n=t.value,r=n.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);r||e.error(`Invalid assignment: ${n}`);let s=r[0],i,o=s.length;if(n[o]==="["){let f=0,d=o+1;for(;o<n.length;o++)if(n[o]==="[")f++;else if(n[o]==="]"&&(f--,f===0))break;f!==0&&e.error(`Invalid assignment: ${n}`),i=as(n.slice(d,o)),o++}let a=n[o]==="+";a&&o++,n[o]!=="="&&e.error(`Invalid assignment: ${n}`),o++;let l=n.slice(o);if(l==="("){let f=Ii(e);e.expect(w.RPAREN);let d=i!==void 0?`${s}[${i}]`:s;return F.assignment(d,null,a,f)}if(l===""&&e.check(w.LPAREN)){let f=e.current();if(t.end===f.start){e.advance();let d=Ii(e);e.expect(w.RPAREN);let p=i!==void 0?`${s}[${i}]`:s;return F.assignment(p,null,a,d)}}let c=l?e.parseWordFromString(l,t.quoted,t.singleQuoted,!0):null;t.end===e.current().start&&e.isProcessSubstitutionStart()&&(c=e.parseAdjacentWordParts(c?.parts??[],t.end,Re.Assignment));let u=i!==void 0?`${s}[${i}]`:s;return F.assignment(u,c,a,null)}var Xd=new Set([w.AMP,w.PIPE,w.PIPE_AMP,w.SEMICOLON,w.AND_AND,w.OR_OR,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND]);function Ii(e){let t=[];for(e.skipNewlines();!e.check(w.RPAREN,w.EOF);)e.checkIterationLimit(),e.isWord()?t.push(e.parseWord()):Xd.has(e.current().type)?e.error(`syntax error near unexpected token \`${e.current().value}'`):e.advance(),e.skipNewlines();return t}function _i(e,t){e.expect(w.IF);let n=[],r=e.parseCompoundList();e.expect(w.THEN);let s=e.parseCompoundList();if(s.length===0){let a=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${a}'`)}for(n.push({condition:r,body:s});e.check(w.ELIF);){e.advance();let a=e.parseCompoundList();e.expect(w.THEN);let l=e.parseCompoundList();if(l.length===0){let c=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${c}'`)}n.push({condition:a,body:l})}let i=null;e.check(w.ELSE)&&(e.advance(),i=e.parseCompoundList(),i.length===0&&e.error("syntax error near unexpected token `fi'")),e.expect(w.FI);let o=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.ifNode(n,i,o)}function Li(e,t){let n=e.expect(w.FOR);if(e.check(w.DPAREN_START))return Jd(e,t,e.getSourceLine(n));e.isWord()||e.error("Expected variable name in for loop");let s=e.advance().value,i=null;if(e.skipNewlines(),e.check(w.IN))for(e.advance(),i=[];!e.check(w.SEMICOLON,w.NEWLINE,w.DO,w.EOF)&&e.isWord();)i.push(e.parseWord());e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines(),e.expect(w.DO);let o=e.parseCompoundList();e.expect(w.DONE);let a=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.forNode(s,i,o,a)}function Jd(e,t,n){e.expect(w.DPAREN_START);let r=null,s=null,i=null,o=["","",""],a=0,l=0;for(;!e.check(w.DPAREN_END,w.EOF);){let f=e.advance();if(f.type===w.SEMICOLON&&l===0){if(a++,a>2)break}else f.value==="("&&l++,f.value===")"&&l--,o[a]+=f.value}e.expect(w.DPAREN_END),o[0].trim()&&(r=ie(e,o[0].trim())),o[1].trim()&&(s=ie(e,o[1].trim())),o[2].trim()&&(i=ie(e,o[2].trim())),e.skipNewlines(),e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines();let c;e.check(w.LBRACE)?(e.advance(),c=e.parseCompoundList(),e.expect(w.RBRACE)):(e.expect(w.DO),c=e.parseCompoundList(),e.expect(w.DONE));let u=t?.skipRedirections?[]:e.parseOptionalRedirections();return{type:"CStyleFor",init:r,condition:s,update:i,body:c,redirections:u,line:n}}function Fi(e,t){e.expect(w.WHILE);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.whileNode(n,r,s)}function Mi(e,t){e.expect(w.UNTIL);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.untilNode(n,r,s)}function Bi(e,t){e.expect(w.CASE),e.isWord()||e.error("Expected word after 'case'");let n=e.parseWord();e.skipNewlines(),e.expect(w.IN),e.skipNewlines();let r=[];for(;!e.check(w.ESAC,w.EOF);){e.checkIterationLimit();let i=e.getPos(),o=ep(e);if(o&&r.push(o),e.skipNewlines(),e.getPos()===i&&!o)break}e.expect(w.ESAC);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.caseNode(n,r,s)}function ep(e){e.check(w.LPAREN)&&e.advance();let t=[];for(;e.isWord()&&(t.push(e.parseWord()),e.check(w.PIPE));)e.advance();if(t.length===0)return null;e.expect(w.RPAREN),e.skipNewlines();let n=[];for(;!e.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND,w.ESAC,w.EOF);){e.checkIterationLimit(),e.isWord()&&e.peek(1).type===w.RPAREN&&e.error("syntax error near unexpected token `)'"),e.check(w.LPAREN)&&e.peek(1).type===w.WORD&&e.error(`syntax error near unexpected token \`${e.peek(1).value}'`);let s=e.getPos(),i=e.parseStatement();if(i&&n.push(i),e.skipSeparators(!1),e.getPos()===s&&!i)break}let r=";;";return e.check(w.DSEMI)?(e.advance(),r=";;"):e.check(w.SEMI_AND)?(e.advance(),r=";&"):e.check(w.SEMI_SEMI_AND)&&(e.advance(),r=";;&"),F.caseItem(t,n,r)}function Wi(e,t){e.expect(w.LPAREN);let n=e.parseCompoundList();e.expect(w.RPAREN);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.subshell(n,r)}function Vi(e,t){e.expect(w.LBRACE);let n=e.parseCompoundList();e.expect(w.RBRACE);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.group(n,r)}var np=["-a","-b","-c","-d","-e","-f","-g","-h","-k","-p","-r","-s","-t","-u","-w","-x","-G","-L","-N","-O","-S","-z","-n","-o","-v","-R"],rp=["==","!=","=~","<",">","-eq","-ne","-lt","-le","-gt","-ge","-nt","-ot","-ef"];function Ml(e){return e.isWord()||e.check(w.LBRACE)||e.check(w.RBRACE)||e.check(w.ASSIGNMENT_WORD)}function Bl(e){if(e.check(w.BANG)&&e.peek(1).type===w.LPAREN){e.advance(),e.advance();let t=1,n="!(";for(;t>0&&!e.check(w.EOF);)if(e.check(w.LPAREN))t++,n+="(",e.advance();else if(e.check(w.RPAREN))t--,t>0&&(n+=")"),e.advance();else if(e.isWord())n+=e.advance().value;else if(e.check(w.PIPE))n+="|",e.advance();else break;return n+=")",e.parseWordFromString(n,!1,!1,!1,!1,!0)}return e.parseWordNoBraceExpansion()}function Ui(e){return e.skipNewlines(),sp(e)}function sp(e){let t=Wl(e);for(e.skipNewlines();e.check(w.OR_OR);){e.advance(),e.skipNewlines();let n=Wl(e);t={type:"CondOr",left:t,right:n},e.skipNewlines()}return t}function Wl(e){let t=zi(e);for(e.skipNewlines();e.check(w.AND_AND);){e.advance(),e.skipNewlines();let n=zi(e);t={type:"CondAnd",left:t,right:n},e.skipNewlines()}return t}function zi(e){return e.skipNewlines(),e.check(w.BANG)?(e.advance(),e.skipNewlines(),{type:"CondNot",operand:e.withDepth(()=>zi(e))}):ip(e)}function ip(e){if(e.check(w.LPAREN)){e.advance();let t=e.withDepth(()=>Ui(e));return e.expect(w.RPAREN),{type:"CondGroup",expression:t}}if(Ml(e)){let t=e.current(),n=t.value;if(np.includes(n)&&!t.quoted){if(e.advance(),e.check(w.DBRACK_END)&&e.error(`Expected operand after ${n}`),Ml(e)){let i=e.parseWordNoBraceExpansion();return{type:"CondUnary",operator:n,operand:i}}let s=e.current();e.error(`unexpected argument \`${s.value}' to conditional unary operator`)}let r=e.parseWordNoBraceExpansion();if(e.isWord()&&rp.includes(e.current().value)){let s=e.advance().value,i;return s==="=~"?i=op(e):s==="=="||s==="!="?i=Bl(e):i=e.parseWordNoBraceExpansion(),{type:"CondBinary",operator:s,left:r,right:i}}if(e.check(w.LESS)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:"<",left:r,right:s}}if(e.check(w.GREAT)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:">",left:r,right:s}}if(e.isWord()&&e.current().value==="="){e.advance();let s=Bl(e);return{type:"CondBinary",operator:"==",left:r,right:s}}return{type:"CondWord",word:r}}e.error("Expected conditional expression")}function op(e){let t=[],n=0,r=-1,s=e.getInput(),i=()=>e.check(w.DBRACK_END)||e.check(w.AND_AND)||e.check(w.OR_OR)||e.check(w.NEWLINE)||e.check(w.EOF);for(;!i();){let o=e.current(),a=r>=0&&o.start>r;if(n===0&&a)break;if(n>0&&a){let l=s.slice(r,o.start);t.push({type:"Literal",value:l})}if(e.isWord()||e.check(w.ASSIGNMENT_WORD)){let l=e.parseWordForRegex();t.push(...l.parts),r=e.peek(-1).end}else if(e.check(w.LPAREN)){let l=e.advance();t.push({type:"Literal",value:"("}),n++,r=l.end}else if(e.check(w.DPAREN_START)){let l=e.advance();t.push({type:"Literal",value:"(("}),n+=2,r=l.end}else if(e.check(w.DPAREN_END))if(n>=2){let l=e.advance();t.push({type:"Literal",value:"))"}),n-=2,r=l.end}else{if(n===1)break;break}else if(e.check(w.RPAREN))if(n>0){let l=e.advance();t.push({type:"Literal",value:")"}),n--,r=l.end}else break;else if(e.check(w.PIPE)){let l=e.advance();t.push({type:"Literal",value:"|"}),r=l.end}else if(e.check(w.SEMICOLON))if(n>0){let l=e.advance();t.push({type:"Literal",value:";"}),r=l.end}else break;else if(n>0&&e.check(w.LESS)){let l=e.advance();t.push({type:"Literal",value:"<"}),r=l.end}else if(n>0&&e.check(w.GREAT)){let l=e.advance();t.push({type:"Literal",value:">"}),r=l.end}else if(n>0&&e.check(w.DGREAT)){let l=e.advance();t.push({type:"Literal",value:">>"}),r=l.end}else if(n>0&&e.check(w.DLESS)){let l=e.advance();t.push({type:"Literal",value:"<<"}),r=l.end}else if(n>0&&e.check(w.LESSAND)){let l=e.advance();t.push({type:"Literal",value:"<&"}),r=l.end}else if(n>0&&e.check(w.GREATAND)){let l=e.advance();t.push({type:"Literal",value:">&"}),r=l.end}else if(n>0&&e.check(w.LESSGREAT)){let l=e.advance();t.push({type:"Literal",value:"<>"}),r=l.end}else if(n>0&&e.check(w.CLOBBER)){let l=e.advance();t.push({type:"Literal",value:">|"}),r=l.end}else if(n>0&&e.check(w.TLESS)){let l=e.advance();t.push({type:"Literal",value:"<<<"}),r=l.end}else if(n>0&&e.check(w.AMP)){let l=e.advance();t.push({type:"Literal",value:"&"}),r=l.end}else if(n>0&&e.check(w.LBRACE)){let l=e.advance();t.push({type:"Literal",value:"{"}),r=l.end}else if(n>0&&e.check(w.RBRACE)){let l=e.advance();t.push({type:"Literal",value:"}"}),r=l.end}else break}return t.length===0&&e.error("Expected regex pattern after =~"),{type:"Word",parts:t}}function lp(e){let t="";for(let n=0;n<e.length;n++){let r=e[n],s=e[n+1];if(r!=="\\"||s===void 0){t+=r;continue}"\\[]^-".includes(s)&&(t+="\\"),t+=s,n++}return t}function wr(e){return e.length>0?e:[F.literal("")]}function cp(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if("@*+?!".includes(s)&&r+1<e.length&&e[r+1]==="("){r++,n++,r++;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function up(e,t,n){let r=n+1,s=t[r];if("@*#?$!-0123456789".includes(s))return{part:F.parameterExpansion(s),endIndex:r+1};let i="";for(;r<t.length&&/[a-zA-Z0-9_]/.test(t[r]);)i+=t[r],r++;return{part:F.parameterExpansion(i),endIndex:r}}function fp(e,t,n,r=!1){let s=n+2,i=!1;t[s]==="!"&&(i=!0,s++);let o=!1;t[s]==="#"&&!/[}:#%/^,]/.test(t[s+1]||"}")&&(o=!0,s++);let a="",l=t[s];if(/[@*#?$!-]/.test(l)&&!/[a-zA-Z0-9_]/.test(t[s+1]||""))a=l,s++;else for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)a+=t[s],s++;if(t[s]==="["){let u=Ri(e,t,s,"[","]");if(a+=`[${as(t.slice(s+1,u))}]`,s=u+1,t[s]==="["){let f=1,d=s;for(;d<t.length&&f>0;)t[d]==="{"?f++:t[d]==="}"&&f--,f>0&&d++;let p=t.slice(n+2,d);return{part:F.parameterExpansion("",{type:"BadSubstitution",text:p}),endIndex:d+1}}}if(a===""&&!i&&!o&&t[s]!=="}"){let u=1,f=s;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;if(u>0)throw new xe("unexpected EOF while looking for matching '}'",0,0);let d=t.slice(n+2,f);return{part:F.parameterExpansion("",{type:"BadSubstitution",text:d}),endIndex:f+1}}let c=null;if(i){let u=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(u)if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=ji(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):(c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="")}else c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="";else if(t[s]==="*"||t[s]==="@"&&!/[QPaAEKkuUL]/.test(t[s+1]||"")){let f=t[s];s++,c={type:"VarNamePrefix",prefix:a,star:f==="*"},a=""}else if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=ji(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):c={type:"Indirection"}}else c={type:"Indirection"}}else if(o)if(t[s]===":")for(c={type:"LengthSliceError"};s<t.length&&t[s]!=="}";)s++;else t[s]!=="}"&&/[-+=?]/.test(t[s])?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):t[s]==="/"?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):c={type:"Length"};if(!c&&s<t.length&&t[s]!=="}"){let u=ji(e,t,s,a,r);c=u.operation,s=u.endIndex}if(s<t.length&&t[s]!=="}"){let u=t[s];if(!/[:\-+=?#%/^,@[]/.test(u)){let f=s;for(;f<t.length&&t[f]!=="}";)f++;let d=t.slice(n,f+1);e.error(`\${${d.slice(2,-1)}}: bad substitution`)}}for(;s<t.length&&t[s]!=="}";)s++;if(s>=t.length)throw new xe("unexpected EOF while looking for matching '}'",0,0);return{part:F.parameterExpansion(a,c),endIndex:s+1}}function ji(e,t,n,r,s=!1){let i=n,o=t[i],a=t[i+1]||"";if(o===":"){let l=a;if("-=?+".includes(l)){i+=2;let S=Nn(e,t,i),g=t.slice(i,S),y=e.withDepth(()=>sn(e,g,!1,!1,!0,!1,s,!1,!1,!0)),b=F.word(wr(y));if(l==="-")return{operation:{type:"DefaultValue",word:b,checkEmpty:!0},endIndex:S};if(l==="=")return{operation:{type:"AssignDefault",word:b,checkEmpty:!0},endIndex:S};if(l==="?")return{operation:{type:"ErrorIfUnset",word:b,checkEmpty:!0},endIndex:S};if(l==="+")return{operation:{type:"UseAlternative",word:b,checkEmpty:!0},endIndex:S}}i++;let c=Nn(e,t,i),u=t.slice(i,c),f=-1,d=0,p=0;for(let E=0;E<u.length;E++){let S=u[E];if(S==="("||S==="[")d++;else if(S===")"||S==="]")d--;else if(S==="?"&&d===0)p++;else if(S===":"&&d===0)if(p>0)p--;else{f=E;break}}let h=f>=0?u.slice(0,f):u,m=f>=0?u.slice(f+1):null;return{operation:{type:"Substring",offset:Oi(e,h),length:m!==null?Oi(e,m):null},endIndex:c}}if("-=?+".includes(o)){i++;let l=Nn(e,t,i),c=t.slice(i,l),u=e.withDepth(()=>sn(e,c,!1,!1,!0,!1,s,!1,!1,!0)),f=F.word(wr(u));if(o==="-")return{operation:{type:"DefaultValue",word:f,checkEmpty:!1},endIndex:l};if(o==="=")return{operation:{type:"AssignDefault",word:f,checkEmpty:!1},endIndex:l};if(o==="?")return{operation:{type:"ErrorIfUnset",word:c?f:null,checkEmpty:!1},endIndex:l};if(o==="+")return{operation:{type:"UseAlternative",word:f,checkEmpty:!1},endIndex:l}}if(o==="#"||o==="%"){let l=a===o,c=o==="#"?"prefix":"suffix";i+=l?2:1;let u=Nn(e,t,i),f=t.slice(i,u),d=e.withDepth(()=>sn(e,f,!1,!1,!1));return{operation:{type:"PatternRemoval",pattern:F.word(wr(d)),side:c,greedy:l},endIndex:u}}if(o==="/"){let l=a==="/";i+=l?2:1;let c=null;t[i]==="#"?(c="start",i++):t[i]==="%"&&(c="end",i++);let u;c!==null&&(t[i]==="/"||t[i]==="}")?u=i:u=Dl(e,t,i);let f=t.slice(i,u),d=e.withDepth(()=>sn(e,f,!1,!1,!1)),p=F.word(wr(d)),h=null,m=u;if(t[u]==="/"){let E=u+1,S=Nn(e,t,E),g=t.slice(E,S),y=e.withDepth(()=>sn(e,g,!1,!1,!1));h=F.word(wr(y)),m=S}return{operation:{type:"PatternReplacement",pattern:p,replacement:h,all:l,anchor:c},endIndex:m}}if(o==="^"||o===","){let l=a===o,c=o==="^"?"upper":"lower";i+=l?2:1;let u=Nn(e,t,i),f=t.slice(i,u),d=f?F.word([F.literal(f)]):null;return{operation:{type:"CaseModification",direction:c,all:l,pattern:d},endIndex:u}}return o==="@"&&/[QPaAEKkuUL]/.test(a)?{operation:{type:"Transform",operator:a},endIndex:i+2}:{operation:null,endIndex:i}}function qi(e,t,n,r=!1){let s=n+1;if(s>=t.length)return{part:F.literal("$"),endIndex:s};let i=t[s];if(i==="("&&t[s+1]==="(")return e.isDollarDparenSubshell(t,n)?e.parseCommandSubstitution(t,n):e.parseArithmeticExpansion(t,n);if(i==="["){let o=1,a=s+1;for(;a<t.length&&o>0;)t[a]==="["?o++:t[a]==="]"&&o--,o>0&&a++;if(o===0){let l=t.slice(s+1,a),c=ie(e,l);return{part:F.arithmeticExpansion(c),endIndex:a+1}}}return i==="("?e.parseCommandSubstitution(t,n):i==="{"?fp(e,t,n,r):/[a-zA-Z_0-9@*#?$!-]/.test(i)?up(e,t,n):{part:F.literal("$"),endIndex:s}}function Vl(e,t){let n=[],r=0,s="",i=()=>{s&&(n.push(F.literal(s)),s="")};for(;r<t.length;){let o=t[r];if(o==="\\"&&r+1<t.length){let a=t[r+1];if(a==="$"||a==="`"||a==='"'||a==="\\"){s+=a,r+=2;continue}s+=o,r++;continue}if(o==="$"){i();let{part:a,endIndex:l}=qi(e,t,r,!0);a&&n.push(a),r=l;continue}if(o==="`"){i();let{part:a,endIndex:l}=e.parseBacktickSubstitution(t,r,!0);n.push(a),r=l;continue}s+=o,r++}return i(),n}function dp(e,t,n){let r=[],s=n,i="",o=()=>{i&&(r.push(F.literal(i)),i="")};for(;s<t.length&&t[s]!=='"';){let a=t[s];if(a==="\\"&&s+1<t.length){let l=t[s+1];if('"\\$`\n'.includes(l)){i+=l,s+=2;continue}i+=a,s++;continue}if(a==="$"){o();let{part:l,endIndex:c}=qi(e,t,s,!0);l&&r.push(l),s=c;continue}if(a==="`"){o();let{part:l,endIndex:c}=e.parseBacktickSubstitution(t,s,!0);r.push(l),s=c;continue}i+=a,s++}return o(),{part:F.doubleQuoted(r),endIndex:s}}function sn(e,t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!0){if(r)return[F.singleQuoted(t)];if(n){let m=Vl(e,t);return[F.doubleQuoted(m)]}if(t.length>=2&&t[0]==='"'&&t[t.length-1]==='"'){let m=t.slice(1,-1),E=!1;for(let S=0;S<m.length;S++){if(m[S]==='"'){E=!0;break}m[S]==="\\"&&S+1<m.length&&S++}if(!E){let S=Vl(e,m);return[F.doubleQuoted(S)]}}let f=[],d=0,p="",h=()=>{p&&(f.push(F.literal(p)),p="")};for(;d<t.length;){let m=t[d];if(m==="\\"&&d+1<t.length){let E=t[d+1];if(l){h(),f.push(F.escaped(E)),d+=2;continue}if(!i&&!o){E!==`
69
+ `&&(h(),f.push(F.escaped(E))),d+=2;continue}let S=i?E==="$"||E==="`"||E===`
70
+ `:E==="$"||E==="`"||E==='"'||E==="'"||E===`
71
+ `||c&&E==="}",g=o?"*?[]\\".includes(E):"*?[]\\(){}.^+".includes(E);S?E!==`
72
+ `&&(p+=E):g?(h(),f.push(F.escaped(E))):p+=`\\${E}`,d+=2;continue}if(m==="'"&&!o&&!i){h();let E=t.indexOf("'",d+1);if(E===-1){p+=t.slice(d);break}f.push(F.singleQuoted(t.slice(d+1,E))),d=E+1;continue}if(m==='"'&&!i){h();let{part:E,endIndex:S}=dp(e,t,d+1);f.push(E),d=S+1;continue}if(m==="$"&&t[d+1]==="'"){h();let{part:E,endIndex:S}=Tl(e,t,d+2);f.push(E),d=S;continue}if(m==="$"){h();let{part:E,endIndex:S}=qi(e,t,d);E&&f.push(E),d=S;continue}if(m==="`"){h();let{part:E,endIndex:S}=e.parseBacktickSubstitution(t,d);f.push(E),d=S;continue}if((m==="<"||m===">")&&t[d+1]==="("&&!i&&!o){h();let{part:E,endIndex:S}=e.parseProcessSubstitutionFromString(t,d);f.push(E),d=S;continue}if(m==="~"){let E=d>0?t[d-1]:"";if(d===0&&u||E==="="||s&&E===":"){let g=Ol(e,t,d),y=t[g];if(y===void 0||y==="/"||y===":"){h();let b=t.slice(d+1,g)||null;f.push({type:"TildeExpansion",user:b}),d=g;continue}}}if("@*+?!".includes(m)&&d+1<t.length&&t[d+1]==="("){let E=cp(t,d+1);if(E!==-1){h();let S=t.slice(d,E+1);f.push({type:"Glob",pattern:S}),d=E+1;continue}}if(m==="*"||m==="?"||m==="["){h();let{pattern:E,endIndex:S}=Il(e,t,d);f.push({type:"Glob",pattern:l?lp(E):E}),d=S;continue}if(m==="{"&&!s&&!a&&!i){let E=_l(e,t,d,sn);if(E){h(),f.push(E.part),d=E.endIndex;continue}}p+=m,d++}return h(),f}var Z=class e{tokens=[];pos=0;pendingHeredocs=[];parseBudget;ownsParseBudget;_input="";processLineState;constructor(t){this.parseBudget=t??new ss,this.ownsParseBudget=t===void 0}getInput(){return this._input}checkIterationLimit(){let t=this.current();this.parseBudget.chargeIteration(t?.line??1,t?.column??1)}enterDepth(){let t=this.current();return this.parseBudget.enter(t?.line??1,t?.column??1)}withDepth(t){let n=this.enterDepth();try{return t()}finally{n()}}parse(t,n){this.ownsParseBudget&&this.parseBudget.reset();let r=this.ownsParseBudget?void 0:this.enterDepth();try{if(t.length>$i)throw new xe(`Input too large: ${t.length} bytes exceeds limit of ${$i}`,1,1);this._input=t,this.processLineState=void 0;let s=new rs(t,n);if(this.tokens=s.tokenize(),this.tokens.length>hr)throw new xe(`Too many tokens: ${this.tokens.length} exceeds limit of ${hr}`,1,1);return this.pos=0,this.pendingHeredocs=[],this.parseBudget.chargeTokens(this.tokens.length),this.parseScript()}finally{r?.()}}parseTokens(t){this.ownsParseBudget&&this.parseBudget.reset();let n=this.ownsParseBudget?void 0:this.enterDepth();try{return this.tokens=t,this.pos=0,this.pendingHeredocs=[],this.processLineState=void 0,this.parseBudget.chargeTokens(t.length),this.parseScript()}finally{n?.()}}current(){return this.tokens[this.pos]||this.tokens[this.tokens.length-1]}peek(t=0){return this.tokens[this.pos+t]||this.tokens[this.tokens.length-1]}advance(){let t=this.current();return this.pos<this.tokens.length-1&&this.pos++,t}getPos(){return this.pos}getSourceLine(t=this.current()){let n=this.processLineState;return n?(n.currentPhysicalLine===void 0?n.currentPhysicalLine=t.line:t.line>n.currentPhysicalLine&&(n.currentPhysicalLine=t.line,n.currentLogicalLine+=1),n.currentLogicalLine):t.line}check(t,n,r,s,...i){let o=this.tokens[this.pos]?.type;return o===t||n!==void 0&&o===n||r!==void 0&&o===r||s!==void 0&&o===s?!0:i.length>0?i.includes(o):!1}expect(t,n){if(this.check(t))return this.advance();let r=this.current();throw new xe(n||`Expected ${t}, got ${r.type}`,r.line,r.column,r)}error(t){let n=this.current();throw new xe(t,n.line,n.column,n)}skipNewlines(){for(;this.check(w.NEWLINE,w.COMMENT);)this.check(w.NEWLINE)?(this.advance(),this.processHeredocs()):this.advance()}skipSeparators(t=!0){for(;;){if(this.check(w.NEWLINE)){this.advance(),this.processHeredocs();continue}if(this.check(w.SEMICOLON,w.COMMENT)){this.advance();continue}if(t&&this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)){this.advance();continue}break}}addPendingHeredoc(t,n,r,s){this.pendingHeredocs.push({redirect:t,delimiter:n,stripTabs:r,quoted:s})}processHeredocs(){for(let t of this.pendingHeredocs)if(this.check(w.HEREDOC_CONTENT)){let n=this.advance(),r;t.quoted?r=F.word([F.literal(n.value)]):r=this.parseWordFromString(n.value,!1,!1,!1,!0),t.redirect.target=F.hereDoc(t.delimiter,r,t.stripTabs,t.quoted,n.heredocTerminated??!1)}this.pendingHeredocs=[]}isStatementEnd(){return this.check(w.EOF,w.NEWLINE,w.SEMICOLON,w.AMP,w.AND_AND,w.OR_OR,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)}isCommandStart(){let t=this.current().type;return this.isWord()||t===w.ASSIGNMENT_WORD||t===w.FD_VARIABLE||t===w.LPAREN||t===w.LBRACE||t===w.DPAREN_START||t===w.DBRACK_START||gr(this)}parseScript(){let t=[],r=0;for(this.skipNewlines();!this.check(w.EOF);){r++,r>1e4&&this.error("Parser stuck: too many iterations (>10000)");let s=this.checkUnexpectedToken();if(s){t.push(s),this.skipSeparators(!1);continue}let i=this.pos,o=this.parseStatement();o&&t.push(o),this.check(w.HEREDOC_CONTENT)&&this.processHeredocs(),this.skipSeparators(!1),this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${this.current().value}'`),this.pos===i&&!this.check(w.EOF)&&this.error(`syntax error near unexpected token \`${this.current().value}'`)}return F.script(t)}checkUnexpectedToken(){let t=this.current().type,n=this.current().value;if(this.currentTokenJoinsProcessSubstitution())return null;if((t===w.DO||t===w.DONE||t===w.THEN||t===w.ELSE||t===w.ELIF||t===w.FI||t===w.ESAC)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.RBRACE||t===w.RPAREN){let r=`syntax error near unexpected token \`${n}'`;return this.advance(),F.statement([F.pipeline([F.simpleCommand(null,[],[],[])])],[],!1,{message:r,token:n})}return(t===w.DSEMI||t===w.SEMI_AND||t===w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.SEMICOLON&&this.error(`syntax error near unexpected token \`${n}'`),(t===w.AMP||t===w.AND_AND||t===w.OR_OR||t===w.PIPE||t===w.PIPE_AMP)&&this.error(`syntax error near unexpected token \`${n}'`),null}parseStatement(){if(this.skipNewlines(),!this.isCommandStart())return null;let t=this.current().start,n=[],r=[],s=!1,i=this.parsePipeline();for(n.push(i);this.check(w.AND_AND,w.OR_OR);){let l=this.advance();r.push(l.type===w.AND_AND?"&&":"||"),this.skipNewlines();let c=this.parsePipeline();n.push(c)}this.check(w.AMP)&&(this.advance(),s=!0);let o=this.pos>0?this.tokens[this.pos-1].end:t,a=this._input.slice(t,o);return F.statement(n,r,s,void 0,a)}parseTimePrefix(){if(!this.check(w.TIME)||this.currentTokenJoinsProcessSubstitution())return;this.advance();let t=!1;return this.check(w.WORD,w.NAME)&&this.current().value==="-p"&&(this.advance(),t=!0),t}parsePipeline(){let t=!1,n=!1,r=0;for(;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++;if(r===0){let l=this.parseTimePrefix();if(l!==void 0)for(t=!0,n=l;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++}let s=r%2===1,i=[],o=[],a=this.parseCommand();for(i.push(a);this.check(w.PIPE,w.PIPE_AMP);){let l=this.advance();this.skipNewlines(),o.push(l.type===w.PIPE_AMP);let c=this.parseCommand();i.push(c)}return F.pipeline(i,s,t,n,o.length>0?o:void 0)}parseCommand(){if(this.currentTokenJoinsProcessSubstitution())return Ti(this);let t=this.current();switch(t.type){case w.IF:return _i(this);case w.FOR:return Li(this);case w.WHILE:return Fi(this);case w.UNTIL:return Mi(this);case w.CASE:return Bi(this);case w.LPAREN:return Wi(this);case w.LBRACE:return Vi(this);case w.DPAREN_START:return this.dparenClosesWithSpacedParens()?this.parseNestedSubshellsFromDparen():this.parseArithmeticCommand();case w.DBRACK_START:return this.parseConditionalCommand();case w.FUNCTION:return this.parseFunctionDef();case w.TIME:break;case w.BANG:this.error(`syntax error near unexpected token \`${t.value}'`);break;default:xi(t.type)&&this.error(`syntax error near unexpected token \`${t.value}'`)}return this.check(w.NAME,w.WORD)&&this.peek(1).type===w.LPAREN&&this.peek(2).type===w.RPAREN?this.parseFunctionDef():Ti(this)}dparenClosesWithSpacedParens(){let t=1,n=1;for(;n<this.tokens.length-this.pos;){let r=this.peek(n);if(r.type===w.EOF)return!1;if(r.type===w.DPAREN_START||r.type===w.LPAREN)t++;else if(r.type===w.DPAREN_END){if(t-=2,t<=0)return!1}else if(r.type===w.RPAREN&&(t--,t===0&&this.peek(n+1).type===w.RPAREN))return!0;n++}return!1}parseNestedSubshellsFromDparen(){this.advance();let t=this.parseCompoundList();this.expect(w.RPAREN),this.expect(w.RPAREN);let n=this.parseOptionalRedirections(),r=F.subshell(t,[]);return F.subshell([F.statement([F.pipeline([r],!1,!1,!1)])],n)}isWord(){return this.isWordToken(Re.Default)||this.isProcessSubstitutionStart()||this.currentTokenJoinsProcessSubstitution()}isWordToken(t){let n=this.current().type;return n===w.WORD||n===w.NAME||n===w.NUMBER||xi(n)||n===w.BANG||n===w.ASSIGNMENT_WORD&&(t&Re.Regex)!==0}isProcessSubstitutionStart(t=0){let n=this.peek(t),r=this.peek(t+1);return(n.type===w.LESS||n.type===w.GREAT)&&r.type===w.LPAREN&&n.end===r.start}currentTokenJoinsProcessSubstitution(){return this.current().type===w.COMMENT||!this.isAdjacentWordToken(Re.Default)?!1:this.current().end===this.peek(1).start&&this.isProcessSubstitutionStart(1)}isAdjacentWordToken(t){let n=this.current().type;return this.isWordToken(t)||n===w.ASSIGNMENT_WORD||n===w.COMMENT||n===w.LBRACE||n===w.RBRACE||n===w.DBRACK_START||n===w.DBRACK_END||n===w.FD_VARIABLE}parseWord(t=Re.Default){if(this.isProcessSubstitutionStart())return this.parseAdjacentWordParts([],this.current().start,t);let n=this.advance(),r=this.parseWordToken(n,t);return this.parseAdjacentWordParts(r.parts,n.end,t)}parseAdjacentWordParts(t,n,r=Re.Default){for(;n===this.current().start;){if(this.isProcessSubstitutionStart()){t.push(this.parseProcessSubstitution()),n=this.tokens[this.pos-1].end;continue}if(!this.isAdjacentWordToken(r))break;let s=this.advance();t.push(...this.parseWordToken(s,r,t.length===0).parts),n=s.end}return F.word(t)}parseWordNoBraceExpansion(){return this.parseWord(Re.NoBraceExpansion)}parseWordForRegex(){return this.parseWord(Re.NoBraceExpansion|Re.Regex)}parseWordToken(t,n,r=!0){return t.type===w.LBRACE||t.type===w.RBRACE||t.type===w.DBRACK_START||t.type===w.DBRACK_END||t.type===w.FD_VARIABLE?F.word([F.literal(t.type===w.FD_VARIABLE?`{${t.value}}`:t.value)]):this.parseWordFromString(t.value,t.quoted,t.singleQuoted,(n&Re.Assignment)!==0,!1,(n&Re.NoBraceExpansion)!==0,(n&Re.Regex)!==0,r)}parseWordFromString(t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!0){let c=sn(this,t,n,r,s,i,!1,o,a,!1,l);return F.word(c)}parseCommandSubstitution(t,n){return al(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitutionFromString(t,n){return ll(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitution(){let t=this.advance();this.expect(w.LPAREN);let n=this.processLineState,r=this.getSourceLine(t);this.processLineState={currentLogicalLine:r};let s;try{s=F.script(this.parseCompoundList())}finally{this.processLineState=n}return this.check(w.EOF)&&this.error("unexpected EOF while looking for matching `)'"),this.expect(w.RPAREN),F.processSubstitution(s,t.type===w.LESS?"input":"output")}parseBacktickSubstitution(t,n,r=!1){return cl(t,n,r,()=>new e(this.parseBudget),s=>this.error(s))}isDollarDparenSubshell(t,n){return il(t,n)}parseArithmeticExpansion(t,n){let r=n+3,s=1,i=0,o=r;for(;o<t.length-1&&s>0;)t[o]==="$"&&t[o+1]==="("?t[o+2]==="("?(s++,o+=3):(i++,o+=2):t[o]==="("&&t[o+1]==="("?(s++,o+=2):t[o]===")"&&t[o+1]===")"?i>0?(i--,o++):(s--,s>0&&(o+=2)):t[o]==="("?(i++,o++):(t[o]===")"&&i>0&&i--,o++);let a=t.slice(r,o),l=this.parseArithmeticExpression(a);return{part:F.arithmeticExpansion(l),endIndex:o+2}}parseArithmeticCommand(){let t=this.expect(w.DPAREN_START),n="",r=1,s=0,i=!1,o=!1;for(;r>0&&!this.check(w.EOF);){if(i){if(i=!1,s>0){s--,n+=")";continue}if(this.check(w.RPAREN)){r--,o=!0,this.advance();continue}if(this.check(w.DPAREN_END)){r--,o=!0;continue}n+=")";continue}if(this.check(w.DPAREN_START))r++,n+="((",this.advance();else if(this.check(w.DPAREN_END))s>=2?(s-=2,n+="))",this.advance()):s===1?(s--,n+=")",i=!0,this.advance()):(r--,o=!0,r>0&&(n+="))"),this.advance());else if(this.check(w.LPAREN))s++,n+="(",this.advance();else if(this.check(w.RPAREN))s>0&&s--,n+=")",this.advance();else{let c=this.current().value,u=n.length>0?n[n.length-1]:"";n.length>0&&!n.endsWith(" ")&&!(c==="="&&/[|&^+\-*/%<>]$/.test(n))&&!(c==="<"&&u==="<")&&!(c===">"&&u===">")&&(n+=" "),n+=c,this.advance()}}o||this.expect(w.DPAREN_END);let a=this.parseArithmeticExpression(n.trim()),l=this.parseOptionalRedirections();return F.arithmeticCommand(a,l,this.getSourceLine(t))}parseConditionalCommand(){let t=this.expect(w.DBRACK_START),n=Ui(this);this.expect(w.DBRACK_END);let r=this.parseOptionalRedirections();return F.conditionalCommand(n,r,this.getSourceLine(t))}parseFunctionDef(){let t;if(this.check(w.FUNCTION)){if(this.advance(),this.check(w.NAME)||this.check(w.WORD))t=this.advance().value;else{let s=this.current();throw new xe("Expected function name",s.line,s.column,s)}this.check(w.LPAREN)&&(this.advance(),this.expect(w.RPAREN))}else t=this.advance().value,t.includes("$")&&this.error(`\`${t}': not a valid identifier`),this.expect(w.LPAREN),this.expect(w.RPAREN);this.skipNewlines();let n=this.parseCompoundCommandBody({forFunctionBody:!0}),r=this.parseOptionalRedirections();return F.functionDef(t,n,r)}parseCompoundCommandBody(t){let n=t?.forFunctionBody;if(this.check(w.LBRACE))return Vi(this,{skipRedirections:n});if(this.check(w.LPAREN))return Wi(this,{skipRedirections:n});if(this.check(w.IF))return _i(this,{skipRedirections:n});if(this.check(w.FOR))return Li(this,{skipRedirections:n});if(this.check(w.WHILE))return Fi(this,{skipRedirections:n});if(this.check(w.UNTIL))return Mi(this,{skipRedirections:n});if(this.check(w.CASE))return Bi(this,{skipRedirections:n});this.error("Expected compound command for function body")}parseCompoundList(){let t=this.enterDepth();try{let n=[];for(this.skipNewlines();(this.currentTokenJoinsProcessSubstitution()||!this.check(w.EOF,w.FI,w.ELSE,w.ELIF,w.THEN,w.DO,w.DONE,w.ESAC,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND))&&this.isCommandStart();){this.checkIterationLimit();let r=this.pos,s=this.parseStatement();if(s&&n.push(s),this.skipSeparators(),this.pos===r&&!s)break}return n}finally{t()}}parseOptionalRedirections(){let t=[];for(;gr(this);){this.checkIterationLimit();let n=this.pos;if(t.push(ls(this)),this.pos===n)break}return t}parseArithmeticExpression(t){return ie(this,t)}};function ze(e,t){return new Z().parse(e,t)}function Er(e){return On(e)}function On(e){return e.statements.map(zl).join(`
73
+ `)}function zl(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(hp(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let n=t.join(" ");return e.background&&(n+=" &"),n}function hp(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let n=[];for(let s=0;s<e.commands.length;s++)if(n.push(Ul(e.commands[s])),s<e.commands.length-1){let i=e.pipeStderr?.[s];n.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+n.join(" ")}function Ul(e){switch(e.type){case"SimpleCommand":return mp(e);case"If":return kp(e);case"For":return Pp(e);case"CStyleFor":return xp(e);case"While":return $p(e);case"Until":return Cp(e);case"Case":return Np(e);case"Subshell":return Op(e);case"Group":return Dp(e);case"ArithmeticCommand":return Ip(e);case"ConditionalCommand":return Tp(e);case"FunctionDef":return _p(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function mp(e){let t=[];for(let n of e.assignments)t.push(yp(n));e.name&&t.push(we(e.name));for(let n of e.args)t.push(we(n));for(let n of e.redirections)t.push(Gl(n));return t.join(" ")}function yp(e){let t=e.append?"+=":"=";if(e.array){let n=e.array.map(we).join(" ");return`${e.name}${t}(${n})`}return e.value?`${e.name}${t}${we(e.value)}`:`${e.name}${t}`}function we(e){return e.parts.map(t=>cs(t,!1)).join("")}function on(e){return e.parts.map(t=>cs(t,!0)).join("")}function cs(e,t){switch(e.type){case"Literal":return t?wp(e.value):gp(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(n=>cs(n,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return jl(e);case"CommandSubstitution":return e.legacy?`\`${On(e.body)}\``:`$(${On(e.body)})`;case"ArithmeticExpansion":return`$((${he(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${On(e.body)})`:`>(${On(e.body)})`;case"BraceExpansion":return vp(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let n=e;throw new Error(`Unsupported word part type: ${n.type}`)}}}function gp(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function wp(e){return e.replace(/[$`"\\]/g,"\\$&")}function Ep(e,t){return e.parts.map(n=>bp(n,t)).join("")}function bp(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return jl(e);case"CommandSubstitution":return e.legacy?`\`${On(e.body)}\``:`$(${On(e.body)})`;case"ArithmeticExpansion":return`$((${he(e.expression.expression)}))`;default:return cs(e,!1)}}function jl(e){return e.operation?`\${${ql(e.parameter,e.operation)}}`:Sp(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Sp(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function ql(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${on(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${on(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?on(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${on(t.word)}`;case"Substring":{let n=he(t.offset.expression);return t.length?`${e}:${n}:${he(t.length.expression)}`:`${e}:${n}`}case"PatternRemoval":{let n=t.side==="prefix"?"#":"%",r=t.greedy?`${n}${n}`:n;return`${e}${r}${on(t.pattern)}`}case"PatternReplacement":{let n="/";t.all?n="//":t.anchor==="start"?n="/#":t.anchor==="end"&&(n="/%");let r=t.replacement?`/${on(t.replacement)}`:"";return`${e}${n}${on(t.pattern)}${r}`}case"CaseModification":{let n=t.direction==="upper"?"^":",",r=t.all?`${n}${n}`:n,s=t.pattern?on(t.pattern):"";return`${e}${r}${s}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${ql(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let n=t;throw new Error(`Unsupported parameter operation type: ${n.type}`)}}}function vp(e){return`{${e.items.map(Ap).join(",")}}`}function Ap(e){if(e.type==="Word")return we(e.word);let t=e.startStr??String(e.start),n=e.endStr??String(e.end);return e.step!==void 0?`${t}..${n}..${e.step}`:`${t}..${n}`}function Gl(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let n=e.target;if(n.terminated===!1)throw new Error("Cannot serialize an unterminated here-document");let r=n.quoted?`'${n.delimiter}'`:n.delimiter,s=Ep(n.content,n.quoted);return`${t}${e.operator}${r}
74
+ ${s}${n.delimiter}`}return e.operator==="<<<"?`${t}<<< ${we(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${we(e.target)}`:`${t}${e.operator} ${we(e.target)}`}function Et(e){return e.length===0?"":` ${e.map(Gl).join(" ")}`}function ft(e){return e.map(zl).join(`
75
+ `)}function kp(e){let t=[];for(let n=0;n<e.clauses.length;n++){let r=e.clauses[n],s=n===0?"if":"elif";t.push(`${s} ${ft(r.condition)}; then
76
+ ${ft(r.body)}`)}return e.elseBody&&t.push(`else
77
+ ${ft(e.elseBody)}`),`${t.join(`
78
+ `)}
79
+ fi${Et(e.redirections)}`}function Pp(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let n=e.words.map(we).join(" ");t=`for ${e.variable} in ${n}`}return`${t}; do
80
+ ${ft(e.body)}
81
+ done${Et(e.redirections)}`}function xp(e){let t=e.init?he(e.init.expression):"",n=e.condition?he(e.condition.expression):"",r=e.update?he(e.update.expression):"";return`for ((${t}; ${n}; ${r})); do
82
+ ${ft(e.body)}
83
+ done${Et(e.redirections)}`}function $p(e){return`while ${ft(e.condition)}; do
84
+ ${ft(e.body)}
85
+ done${Et(e.redirections)}`}function Cp(e){return`until ${ft(e.condition)}; do
86
+ ${ft(e.body)}
87
+ done${Et(e.redirections)}`}function Np(e){let t=e.items.map(Rp).join(`
88
+ `);return`case ${we(e.word)} in
89
+ ${t}
90
+ esac${Et(e.redirections)}`}function Rp(e){let t=e.patterns.map(we).join(" | "),n=ft(e.body);return n?`${t})
91
+ ${n}
92
+ ${e.terminator}`:`${t})
93
+ ${e.terminator}`}function Op(e){return`(${ft(e.body)})${Et(e.redirections)}`}function Dp(e){return`{ ${ft(e.body)}; }${Et(e.redirections)}`}function Ip(e){return`((${he(e.expression.expression)}))${Et(e.redirections)}`}function Tp(e){return`[[ ${Rn(e.expression)} ]]${Et(e.redirections)}`}function _p(e){let t=Ul(e.body);return`${e.name}() ${t}${Et(e.redirections)}`}function he(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`${he(e.left)} ${e.operator} ${he(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${he(e.operand)}`:`${he(e.operand)}${e.operator}`;case"ArithTernary":return`${he(e.condition)} ? ${he(e.consequent)} : ${he(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${he(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${he(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${he(e.target)}[${he(e.subscript)}]`:he(e.target)} ${e.operator} ${he(e.value)}`;case"ArithDynamicElement":return`${he(e.nameExpr)}[${he(e.subscript)}]`;case"ArithGroup":return`(${he(e.expression)})`;case"ArithNested":return`$((${he(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}[${he(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(he).join("");case"ArithDoubleSubscript":return`${e.array}[${he(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 Rn(e){switch(e.type){case"CondBinary":return`${we(e.left)} ${e.operator} ${we(e.right)}`;case"CondUnary":return`${e.operator} ${we(e.operand)}`;case"CondNot":return`! ${Rn(e.operand)}`;case"CondAnd":return`${Rn(e.left)} && ${Rn(e.right)}`;case"CondOr":return`${Rn(e.left)} || ${Rn(e.right)}`;case"CondGroup":return`( ${Rn(e.expression)} )`;case"CondWord":return we(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var Lp="BASH_ALIAS_";function us(e,t,n,r){let s=B(t);if(s>n-r.value)throw new $(`alias expansion exceeds string length limit (${n} bytes)`,"string_length");return r.value+=s,e+t}function Hl(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Zl(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Ql(e,t){return e.env.get(`${Lp}${t}`)}function Xl(e,t,n){return Yl(e,t,n)}function Yl(e,t,n,r=!0){if(!t.name||!Hl(t.name))return t;let s=Zl(t.name);if(!s)return t;let i=Ql(e,s);if(!i||n.has(s))return t;try{n.add(s);let o=new Z,a={value:0},l=us("",i,e.limits.maxStringLength,a),c=i.endsWith(" ");if(!c)for(let p of t.args){let h=we(p);l=us(l,` ${h}`,e.limits.maxStringLength,a)}let u;try{u=o.parse(l)}catch(p){if(p instanceof xe)throw p;return t}if(u.statements.length!==1||u.statements[0].pipelines.length!==1||u.statements[0].pipelines[0].commands.length!==1)return Kl(e,t,i);let f=u.statements[0].pipelines[0].commands[0];if(f.type!=="SimpleCommand")return Kl(e,t,i);let d={...f,assignments:[...t.assignments,...f.assignments],redirections:[...f.redirections,...t.redirections],line:t.line};if(c&&t.args.length>0){d={...d,args:[...d.args,...t.args]};let p=1;for(;r&&d.args.length>0;){let h=d.args[0];if(!Hl(h))break;let m=Zl(h),E=m?Ql(e,m):null;if(!E)break;if(p>=e.limits.maxCallDepth)throw new $(`alias expansion depth limit exceeded (${e.limits.maxCallDepth})`,"recursion");p++;let S={type:"SimpleCommand",name:h,args:d.args.slice(1),assignments:[],redirections:[]},g=Yl(e,S,n,!1);if(g===S||(d={...d,name:g.name,args:[...g.args]},!E.endsWith(" ")))break}}return d}catch(o){throw n.delete(s),o}}function Kl(e,t,n){let r={value:0},s=us("",n,e.limits.maxStringLength,r);for(let c of t.args){let u=we(c);s=us(s,` ${u}`,e.limits.maxStringLength,r)}let i=new Z,o=i.parseWordFromString("eval",!1,!1),a=0;for(let c of s)c==="'"&&a++;if(r.value+2+a*3>e.limits.maxStringLength)throw new $(`alias expansion exceeds string length limit (${e.limits.maxStringLength} bytes)`,"string_length");let l=i.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:o,args:[l],assignments:t.assignments,redirections:t.redirections,line:t.line}}var Fp=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"]]);function Gi(e){return Fp.get(e)??""}function Jl(e){let t=[],n="",r=0;for(;r<e.length;){let s=e[r];if(s==="["){for(n+=s,r++,r<e.length&&(e[r]==="!"||e[r]==="^")&&(n+=e[r],r++),r<e.length&&e[r]==="]"&&(n+=e[r],r++);r<e.length&&e[r]!=="]";){if(e[r]==="["&&r+1<e.length&&e[r+1]===":"){let i=e.indexOf(":]",r+2);if(i!==-1){n+=e.slice(r,i+2),r=i+2;continue}}if(e[r]==="\\"&&r+1<e.length){n+=e[r]+e[r+1],r+=2;continue}n+=e[r],r++}r<e.length&&e[r]==="]"&&(n+=e[r],r++)}else s===":"?(n!==""&&t.push(n),n="",r++):s==="\\"&&r+1<e.length?(n+=s+e[r+1],r+=2):(n+=s,r++)}return n!==""&&t.push(n),t}function ec(e){let t="^";for(let n=0;n<e.length;n++){let r=e[n];if(r==="*")t+="[^/]*";else if(r==="?")t+="[^/]";else if(r==="["){let s=n+1,i="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(i+="^",s++),s<e.length&&e[s]==="]"&&(i+="\\]",s++);let o=s;for(;o<e.length;){if(e[o]==="\\"&&o+1<e.length){o+=2;continue}if(e[o]==="["&&o+1<e.length&&e[o+1]===":"){let l=e.indexOf(":]",o+2);if(l!==-1){o=l+2;continue}}if(e[o]==="]")break;o++}let a=s;for(;s<e.length&&e[s]!=="]";){if(e[s]==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let c=e.slice(s+2,l),u=Gi(c);i+=u,s=l+2;continue}}if(e[s]==="\\"&&s+1<e.length){i+=`\\${e[s+1]}`,s+=2;continue}if(e[s]==="-"){let l=s===a,c=s+1===o;l||c?i+="\\-":i+="-"}else i+=e[s];s++}i+="]",t+=i,n=s}else if(r==="\\"&&n+1<e.length){let s=e[n+1];/[.+^${}()|\\*?[\]]/.test(s)?t+=`\\${s}`:t+=s,n++}else/[.+^${}()|]/.test(r)?t+=`\\${r}`:t+=r}return t+="$",ge(t)}function Hi(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Zi(e){let t=[],n="",r=0,s=!1,i=0;for(;i<e.length;){let o=e[i];if(o==="'"&&!s){s=!0,n+="\0QUOTE_START\0",i++;continue}if(o==="'"&&s){s=!1,n+="\0QUOTE_END\0",i++;continue}if(s){n+=o,i++;continue}if(o==="\\"){n+=o,i+1<e.length?(n+=e[i+1],i+=2):i++;continue}o==="("?(r++,n+=o):o===")"?(r--,n+=o):o==="|"&&r===0?(t.push(n),n=""):n+=o,i++}return t.push(n),t}var tc=5,an=class{fs;cwd;globignorePatterns=[];hasGlobignore=!1;globstar=!1;nullglob=!1;failglob=!1;dotglob=!1;extglob=!1;globskipdots=!0;ops={count:0};maxOps;consumeOperation;constructor(t,n,r,s){this.fs=t,this.cwd=n,typeof s=="boolean"?(this.globstar=s,this.maxOps=1e5):s?(this.globstar=s.globstar??!1,this.nullglob=s.nullglob??!1,this.failglob=s.failglob??!1,this.dotglob=s.dotglob??!1,this.extglob=s.extglob??!1,this.globskipdots=s.globskipdots??!0,this.maxOps=s.maxGlobOperations??1e5,this.consumeOperation=s.consumeOperation):this.maxOps=1e5;let i=r?.get("GLOBIGNORE");i!==void 0&&i!==""&&(this.hasGlobignore=!0,this.globignorePatterns=Jl(i))}checkOpsLimit(){if(++this.ops.count>this.maxOps)throw new $(`Glob operation limit exceeded (${this.maxOps})`,"glob_operations");this.consumeOperation?.()}hasNullglob(){return this.nullglob}hasFailglob(){return this.failglob}filterGlobignore(t){return!this.hasGlobignore&&!this.globskipdots?t:t.filter(n=>{let r=n.split("/").pop()||n;if((this.hasGlobignore||this.globskipdots)&&(r==="."||r===".."))return!1;if(this.hasGlobignore){for(let s of this.globignorePatterns)if(this.matchGlobignorePattern(n,s))return!1}return!0})}matchGlobignorePattern(t,n){return ec(n).test(t)}isGlobPattern(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandArgs(t,n){let r=t.map((o,a)=>(n?.[a]??!1)||!this.isGlobPattern(o)?null:this.expand(o)),s=await Promise.all(r.map(o=>o||Promise.resolve(null))),i=[];for(let o=0;o<t.length;o++){let a=s[o];a===null?i.push(t[o]):a.length>0?i.push(...a):i.push(t[o])}return i}async expand(t){if(this.globstar){let r=t.split("/"),s=0;for(let i of r)if(i==="**"&&(s++,s>tc))throw new $(`Glob pattern has too many ** segments (max ${tc})`,"glob_operations")}let n;if(t.includes("**")&&this.globstar&&this.isGlobstarValid(t))n=await this.expandRecursive(t);else{let r=t.replace(/\*\*+/g,"*");n=await this.expandSimple(r)}return this.filterGlobignore(n)}isGlobstarValid(t){let n=t.split("/");for(let r of n)if(r.includes("**")&&r!=="**")return!1;return!0}hasGlobChars(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandSimple(t){let n=t.startsWith("/"),r=t.split("/").filter(c=>c!==""),s=-1;for(let c=0;c<r.length;c++)if(this.hasGlobChars(r[c])){s=c;break}if(s===-1)return[t];let i,o;if(s===0)n?(i="/",o="/"):(i=this.cwd,o="");else{let c=r.slice(0,s);n?(i=`/${c.join("/")}`,o=`/${c.join("/")}`):(i=this.fs.resolvePath(this.cwd,c.join("/")),o=c.join("/"))}let a=r.slice(s);return(await this.expandSegments(i,o,a)).sort()}async expandSegments(t,n,r){if(this.checkOpsLimit(),r.length===0)return[n];let[s,...i]=r,o=[];try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let a=await this.fs.readdirWithFileTypes(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;if(s.startsWith(".")||this.dotglob){let d=a.some(h=>h.name==="."),p=a.some(h=>h.name==="..");d||c.push({name:".",isFile:!1,isDirectory:!0,isSymbolicLink:!1}),p||c.push({name:"..",isFile:!1,isDirectory:!0,isSymbolicLink:!1})}for(let d of c)if(!(d.name.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d.name,s)){let p=t==="/"?`/${d.name}`:`${t}/${d.name}`,h;n===""?h=d.name:n==="/"?h=`/${d.name}`:h=`${n}/${d.name}`,i.length===0?l.push(Promise.resolve([h])):d.isDirectory&&l.push(this.expandSegments(p,h,i))}let f=await Promise.all(l);for(let d of f)o.push(...d)}else{this.checkOpsLimit();let a=await this.fs.readdir(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;(s.startsWith(".")||this.dotglob)&&(a.includes(".")||c.push("."),a.includes("..")||c.push(".."));for(let d of c)if(!(d.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d,s)){let p=t==="/"?`/${d}`:`${t}/${d}`,h;n===""?h=d:n==="/"?h=`/${d}`:h=`${n}/${d}`,i.length===0?l.push(Promise.resolve([h])):l.push((async()=>{try{if(this.checkOpsLimit(),(await this.fs.stat(p)).isDirectory)return this.expandSegments(p,h,i)}catch(m){if(m instanceof $)throw m}return[]})())}let f=await Promise.all(l);for(let d of f)o.push(...d)}}catch(a){if(a instanceof $)throw a}return o}async expandRecursive(t){let n=[],r=t.indexOf("**"),s=t.slice(0,r).replace(/\/$/,"")||".",o=t.slice(r+2).replace(/^\//,"");return o.includes("**")&&this.isGlobstarValid(o)?(await this.walkDirectoryMultiGlobstar(s,o,n),[...new Set(n)].sort()):(await this.walkDirectory(s,o,n),n.sort())}async walkDirectoryMultiGlobstar(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{this.checkOpsLimit();let i=this.fs.readdirWithFileTypes?await this.fs.readdirWithFileTypes(s):null;if(i){let o=[];for(let c of i){let u=t==="."?c.name:`${t}/${c.name}`;c.isDirectory&&o.push(u)}let a=t==="."?n:`${t}/${n}`,l=await this.expandRecursive(a);r.push(...l);for(let c=0;c<o.length;c+=100){let u=o.slice(c,c+100);await Promise.all(u.map(f=>this.walkDirectoryMultiGlobstar(f,n,r)))}}else{this.checkOpsLimit();let o=await this.fs.readdir(s),a=[];for(let u of o){let f=t==="."?u:`${t}/${u}`,d=this.fs.resolvePath(this.cwd,f);try{this.checkOpsLimit(),(await this.fs.stat(d)).isDirectory&&a.push(f)}catch(p){if(p instanceof $)throw p}}let l=t==="."?n:`${t}/${n}`,c=await this.expandRecursive(l);r.push(...c);for(let u=0;u<a.length;u+=100){let f=a.slice(u,u+100);await Promise.all(f.map(d=>this.walkDirectoryMultiGlobstar(d,n,r)))}}}catch(i){if(i instanceof $)throw i}}async walkDirectory(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let i=await this.fs.readdirWithFileTypes(s),o=[],a=[];for(let l of i){let c=t==="."?l.name:`${t}/${l.name}`;l.isDirectory?a.push(c):n&&this.matchPattern(l.name,n)&&o.push(c)}r.push(...o);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u,n,r)))}}else{this.checkOpsLimit();let i=await this.fs.readdir(s),o=[];for(let l=0;l<i.length;l+=100){let c=i.slice(l,l+100),u=await Promise.all(c.map(async f=>{let d=t==="."?f:`${t}/${f}`,p=this.fs.resolvePath(this.cwd,d);try{this.checkOpsLimit();let h=await this.fs.stat(p);return{name:f,path:d,isDirectory:h.isDirectory}}catch(h){if(h instanceof $)throw h;return null}}));o.push(...u.filter(f=>f!==null))}for(let l of o)!l.isDirectory&&n&&this.matchPattern(l.name,n)&&r.push(l.path);let a=o.filter(l=>l.isDirectory);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u.path,n,r)))}}}catch(i){if(i instanceof $)throw i}}matchPattern(t,n){return this.patternToRegex(n).test(t)}patternToRegex(t){let n=this.patternToRegexStr(t);return ge(`^${n}$`)}patternToRegexStr(t){let n="",r=!1;for(let s=0;s<t.length;s++){if(t.slice(s,s+13)==="\0QUOTE_START\0"){r=!0,s+=12;continue}if(t.slice(s,s+11)==="\0QUOTE_END\0"){r=!1,s+=10;continue}let i=t[s];if(r){/[.+^${}()|\\*?[\]]/.test(i)?n+=`\\${i}`:n+=i;continue}if(this.extglob&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<t.length&&t[s+1]==="("){let o=Hi(t,s+1);if(o!==-1){let a=t.slice(s+2,o),l=Zi(a),c=l.map(f=>this.patternToRegexStr(f)),u=c.length>0?c.join("|"):"(?:)";if(i==="@")n+=`(?:${u})`;else if(i==="*")n+=`(?:${u})*`;else if(i==="+")n+=`(?:${u})+`;else if(i==="?")n+=`(?:${u})?`;else if(i==="!")if(o<t.length-1){let d=l.map(h=>this.computePatternLength(h));if(d.every(h=>h!==null)&&d.every(h=>h===d[0])&&d[0]!==null){let h=d[0];if(h===0)n+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${u})).{${h}}`),n+=`(?:${m.join("|")})`}}else n+=`(?:(?!(?:${u})).)*?`}else n+=`(?!(?:${u})$).*`;s=o;continue}}if(i==="*")n+=".*";else if(i==="?")n+=".";else if(i==="["){let o=s+1,a="[";o<t.length&&(t[o]==="^"||t[o]==="!")&&(a+="^",o++),o<t.length&&t[o]==="]"&&(a+="\\]",o++);let l=o;for(;l<t.length;){if(t[l]==="\\"&&l+1<t.length){l+=2;continue}if(t[l]==="["&&l+1<t.length&&t[l+1]===":"){let u=t.indexOf(":]",l+2);if(u!==-1){l=u+2;continue}}if(t[l]==="]")break;l++}let c=o;for(;o<t.length&&t[o]!=="]";){if(t[o]==="["&&o+1<t.length&&t[o+1]===":"){let u=t.indexOf(":]",o+2);if(u!==-1){let f=t.slice(o+2,u),d=Gi(f);a+=d,o=u+2;continue}}if(t[o]==="\\"&&o+1<t.length){a+=`\\${t[o+1]}`,o+=2;continue}if(t[o]==="-"){let u=o===c,f=o+1===l;u||f?a+="\\-":a+="-"}else a+=t[o];o++}a+="]",n+=a,s=o}else if(i==="\\"&&s+1<t.length){let o=t[s+1];/[.+^${}()|\\*?[\]]/.test(o)?n+=`\\${o}`:n+=o,s++}else/[.+^${}()|]/.test(i)?n+=`\\${i}`:n+=i}return n}computePatternLength(t){let n=0,r=0,s=!1;for(;r<t.length;){if(t.slice(r,r+13)==="\0QUOTE_START\0"){s=!0,r+=13;continue}if(t.slice(r,r+11)==="\0QUOTE_END\0"){s=!1,r+=11;continue}let i=t[r];if(s){n+=1,r++;continue}if((i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&r+1<t.length&&t[r+1]==="("){let o=Hi(t,r+1);if(o!==-1){if(i==="@"){let a=t.slice(r+2,o),c=Zi(a).map(u=>this.computePatternLength(u));if(c.every(u=>u!==null)&&c.every(u=>u===c[0])){n+=c[0],r=o+1;continue}return null}return null}}if(i==="*")return null;if(i==="?"){n+=1,r++;continue}if(i==="["){let o=t.indexOf("]",r+1);if(o!==-1){n+=1,r=o+1;continue}n+=1,r++;continue}if(i==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}};function Qi(e){for(let t=0;t<e.length;t++){if(e[t]==="\\"){t++;continue}if(e[t]==="$"){let n=e[t+1];if(n==="{"||n&&/[a-zA-Z_]/.test(n))return!0}}return!1}function Mp(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n)return!1;for(let r of n)if(r.type==="DoubleQuoted"||r.type==="SingleQuoted")return!0;return!1}function nc(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n||n.length===0)return!1;for(let r of n)if(r.type!=="DoubleQuoted"&&r.type!=="SingleQuoted")return!1;return!0}function br(e){let t=!1,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1;for(let l of e){if((l.type==="SingleQuoted"||l.type==="DoubleQuoted")&&(t=!0,l.type==="DoubleQuoted"))for(let c of l.parts)c.type==="ParameterExpansion"&&(c.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/)&&(!c.operation||c.operation.type==="PatternRemoval"||c.operation.type==="PatternReplacement")&&(s=!0),(c.operation?.type==="VarNamePrefix"||c.operation?.type==="ArrayKeys")&&(o=!0),c.operation?.type==="Indirection"&&(a=!0));l.type==="CommandSubstitution"&&(n=!0),l.type==="ParameterExpansion"&&(i=!0,(l.parameter==="@"||l.parameter==="*")&&(r=!0),Mp(l)&&(t=!0),(l.operation?.type==="VarNamePrefix"||l.operation?.type==="ArrayKeys")&&(o=!0),l.operation?.type==="Indirection"&&(a=!0)),l.type==="Glob"&&Qi(l.pattern)&&(i=!0)}return{hasQuoted:t,hasCommandSub:n,hasArrayVar:r,hasArrayAtExpansion:s,hasParamExpansion:i,hasVarNamePrefixExpansion:o,hasIndirection:a}}var Bp=`
94
+ `;function Dn(e,t){if(e>=t)throw new $(`array element limit exceeded (${t})`,"array_elements")}function Ki(e,t,n,r,s){Dn(e.length,s),Dn(t.length,s),e.push(n),t.push(r)}function ke(e){return e.get("IFS")??Bp}function Oe(e){return e.get("IFS")===""}function fs(e){let t=ke(e);if(t==="")return!0;for(let n of t)if(n!==" "&&n!==" "&&n!==`
95
+ `)return!1;return!0}function rc(e){let t=!1,n=[];for(let r of e.split(""))r==="-"?t=!0:/[\\^$.*+?()[\]{}|]/.test(r)?n.push(`\\${r}`):r===" "?n.push("\\t"):r===`
96
+ `?n.push("\\n"):n.push(r);return t&&n.push("\\-"),n.join("")}function X(e){let t=e.get("IFS");return t===void 0?" ":t[0]||""}var Wp=`
97
+ `;function Vp(e){return Wp.includes(e)}function Xi(e){let t=new Set,n=new Set;for(let r of e)Vp(r)?t.add(r):n.add(r);return{whitespace:t,nonWhitespace:n}}function Yi(e,t,n,r,s){if(t==="")return e===""?{words:[],wordStarts:[]}:(Dn(0,n),{words:[e],wordStarts:[0]});let{whitespace:i,nonWhitespace:o}=Xi(t),a=[],l=[],c=0;for(;c<e.length&&i.has(e[c]);)c++;if(c>=e.length)return{words:[],wordStarts:[]};if(o.has(e[c]))for(Ki(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&!(r!==void 0&&a.length>=r);){let u=c;for(;c<e.length;){let f=e[c];if(!s&&f==="\\"){c++,c<e.length&&c++;continue}if(i.has(f)||o.has(f))break;c++}if(Ki(a,l,e.substring(u,c),u,n),c>=e.length)break;for(;c<e.length&&i.has(e[c]);)c++;if(c<e.length&&o.has(e[c])){for(c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&o.has(e[c])&&!(r!==void 0&&a.length>=r);)for(Ki(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++}}return{words:a,wordStarts:l}}function ds(e,t,n){if(t==="")return e&&Dn(0,n),{words:e?[e]:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};if(e==="")return{words:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};let{whitespace:r,nonWhitespace:s}=Xi(t),i=[],o=0,a=!1,l=!1,c=o;for(;o<e.length&&r.has(e[o]);)o++;if(o>c&&(a=!0),o>=e.length)return{words:[],hadLeadingDelimiter:!0,hadTrailingDelimiter:!0};if(s.has(e[o]))for(Dn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length;){let u=o;for(;o<e.length;){let d=e[o];if(r.has(d)||s.has(d))break;o++}if(Dn(i.length,n),i.push(e.substring(u,o)),o>=e.length){l=!1;break}let f=o;for(;o<e.length&&r.has(e[o]);)o++;if(o<e.length&&s.has(e[o])){for(o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length&&s.has(e[o]);)for(Dn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++}o>=e.length&&o>f&&(l=!0)}return{words:i,hadLeadingDelimiter:a,hadTrailingDelimiter:l}}function pe(e,t,n){return ds(e,t,n).words}function zp(e,t){for(let n of e)if(t.has(n))return!0;return!1}function sc(e,t,n){if(t==="")return e;let{whitespace:r,nonWhitespace:s}=Xi(t),i=e.length;for(;i>0&&r.has(e[i-1]);){if(!n&&i>=2){let a=0,l=i-2;for(;l>=0&&e[l]==="\\";)a++,l--;if(a%2===1)break}i--}let o=e.substring(0,i);if(o.length>=1&&s.has(o[o.length-1])){if(!n&&o.length>=2){let l=0,c=o.length-2;for(;c>=0&&o[c]==="\\";)l++,c--;if(l%2===1)return o}let a=o.substring(0,o.length-1);if(!zp(a,s))return a}return o}function fe(e,t){return e.state.namerefs?.has(t)??!1}function Ut(e,t){e.state.namerefs??=new Set,e.state.namerefs.add(t)}function ic(e,t){e.state.namerefs?.delete(t),e.state.boundNamerefs?.delete(t),e.state.invalidNamerefs?.delete(t)}function oc(e,t){e.state.invalidNamerefs??=new Set,e.state.invalidNamerefs.add(t)}function ac(e,t){return e.state.invalidNamerefs?.has(t)??!1}function Ji(e,t){e.state.boundNamerefs??=new Set,e.state.boundNamerefs.add(t)}function ps(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let s=n[1],i=Ne(e,s),o=e.state.associativeArrays?.has(s)??!1;return i||o}return Ne(e,t)?!0:e.state.env.has(t)}function Ue(e,t,n=100){if(!fe(e,t)||ac(e,t))return t;let r=new Set,s=t;for(;n-- >0;){if(r.has(s))return;if(r.add(s),!fe(e,s))return s;let i=e.state.env.get(s);if(i===void 0||i===""||!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(i))return s;s=i}}function In(e,t){if(fe(e,t))return e.state.env.get(t)}function hs(e,t,n,r=100){if(!fe(e,t)||ac(e,t))return t;let s=new Set,i=t;for(;r-- >0;){if(s.has(i))return;if(s.add(i),!fe(e,i))return i;let o=e.state.env.get(i);if(o===void 0||o==="")return n!==void 0?/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)&&ps(e,n)?i:null:i;if(!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(o))return i;i=o}}function lc(e,t){let n=t.replace(/\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(r,s)=>e.state.env.get(s)??"");return n=n.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(r,s)=>e.state.env.get(s)??""),n}function Q(e,t){return t==="FUNCNAME"?(e.state.funcNameStack??[]).map((i,o)=>[o,i]):t==="BASH_LINENO"?(e.state.callLineStack??[]).map((i,o)=>[o,String(i)]):t==="BASH_SOURCE"?(e.state.sourceStack??[]).map((i,o)=>[o,i]):e.state.associativeArrays?.has(t)?Ct(e,t).map(i=>[i,ce(e,t,i)??""]):Ae(e,t).map(s=>[s,ce(e,t,s)??""])}function bt(e,t){return t==="FUNCNAME"?(e.state.funcNameStack?.length??0)>0:t==="BASH_LINENO"?(e.state.callLineStack?.length??0)>0:t==="BASH_SOURCE"?(e.state.sourceStack?.length??0)>0:e.state.associativeArrays?.has(t)?Ne(e,t):Ne(e,t)}async function ae(e,t,n=!0,r=!1){switch(t){case"?":return String(e.state.lastExitCode);case"$":return String(e.state.virtualPid);case"#":return e.state.env.get("#")||"0";case"@":return e.state.env.get("@")||"";case"_":return e.state.lastArg;case"-":{let o="";return o+="h",e.state.options.errexit&&(o+="e"),e.state.options.noglob&&(o+="f"),e.state.options.nounset&&(o+="u"),e.state.options.verbose&&(o+="v"),e.state.options.xtrace&&(o+="x"),o+="B",e.state.options.noclobber&&(o+="C"),o+="s",o}case"*":{let o=Number.parseInt(e.state.env.get("#")||"0",10);if(o===0)return"";let a=[];for(let l=1;l<=o;l++)a.push(e.state.env.get(String(l))||"");return a.join(X(e.state.env))}case"0":return e.state.env.get("0")||"bash";case"PWD":return e.state.env.get("PWD")??"";case"OLDPWD":return e.state.env.get("OLDPWD")??"";case"PPID":return String(e.state.virtualPpid);case"UID":return String(e.state.virtualUid);case"EUID":return String(e.state.virtualUid);case"RANDOM":return String(Math.floor(Math.random()*32768));case"SECONDS":return String(Math.floor((Date.now()-e.state.startTime)/1e3));case"BASH_VERSION":return Ya;case"!":return String(e.state.lastBackgroundPid);case"BASHPID":return String(e.state.bashPid);case"LINENO":return String(e.state.currentLine);case"FUNCNAME":{let o=e.state.funcNameStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ge("FUNCNAME");return""}case"BASH_LINENO":{let o=e.state.callLineStack?.[0];if(o!==void 0)return String(o);if(n&&e.state.options.nounset)throw new Ge("BASH_LINENO");return""}case"BASH_SOURCE":{let o=e.state.sourceStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ge("BASH_SOURCE");return""}}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[\]$/.test(t))throw new et(`\${${t}}`);let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let o=s[1],a=s[2];if(fe(e,o)){let f=Ue(e,o);if(f&&f!==o){if(f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return"";o=f}}if(a==="@"||a==="*"){let f=Q(e,o);if(f.length>0)return f.map(([,p])=>p).join(" ");let d=e.state.env.get(o);return d!==void 0?d:""}if(o==="FUNCNAME"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.funcNameStack?.[f]??"":""}if(o==="BASH_LINENO"){let f=Number.parseInt(a,10);if(!Number.isNaN(f)&&f>=0){let d=e.state.callLineStack?.[f];return d!==void 0?String(d):""}return""}if(o==="BASH_SOURCE"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.sourceStack?.[f]??"":""}if(e.state.associativeArrays?.has(o)){let f=ts(a);f=lc(e,f);let d=ce(e,o,f);if(d===void 0&&n&&e.state.options.nounset)throw new Ge(`${o}[${a}]`);return d||""}let c;if(/^-?\d+$/.test(a))c=Number.parseInt(a,10);else try{let f=new Z,d=ie(f,a);c=await J(e,d.expression)}catch{let f=e.state.env.get(a);c=f?Number.parseInt(f,10):0,Number.isNaN(c)&&(c=0)}if(c<0){let f=Q(e,o),d=e.state.currentLine;if(f.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
98
+ `,"";let h=Math.max(...f.map(([E])=>typeof E=="number"?E:0))+1+c;return h<0?(e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
99
+ `,""):ce(e,o,h)||""}let u=ce(e,o,c);if(u!==void 0)return u;if(c===0){let f=e.state.env.get(o);if(f!==void 0)return f}if(n&&e.state.options.nounset)throw new Ge(`${o}[${c}]`);return""}if(/^[1-9][0-9]*$/.test(t)){let o=e.state.env.get(t);if(o===void 0&&n&&e.state.options.nounset)throw new Ge(t);return o||""}if(fe(e,t)){let o=Ue(e,t);if(o===void 0)return"";if(o!==t)return await ae(e,o,n,r);let a=e.state.env.get(t);if((a===void 0||a==="")&&n&&e.state.options.nounset)throw new Ge(t);return a||""}let i=e.state.env.get(t);if(i!==void 0)return e.state.tempEnvBindings?.some(o=>o.has(t))&&(e.state.accessedTempEnvVars=e.state.accessedTempEnvVars||new Set,e.state.accessedTempEnvVars.add(t)),i;if(bt(e,t)){let o=ce(e,t,0);if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ge(t);return""}if(n&&e.state.options.nounset)throw new Ge(t);return""}async function Rt(e,t){if(new Set(["?","$","#","_","-","0","PPID","UID","EUID","RANDOM","SECONDS","BASH_VERSION","!","BASHPID","LINENO"]).has(t))return!0;if(t==="@"||t==="*")return Number.parseInt(e.state.env.get("#")||"0",10)>0;if(t==="PWD"||t==="OLDPWD")return e.state.env.has(t);let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(r){let s=r[1],i=r[2];if(fe(e,s)){let l=Ue(e,s);if(l&&l!==s){if(l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return!1;s=l}}if(i==="@"||i==="*")return Q(e,s).length>0?!0:e.state.env.has(s);if(e.state.associativeArrays?.has(s)){let l=lc(e,ts(i));return nn(e,s,l)}let a;if(/^-?\d+$/.test(i))a=Number.parseInt(i,10);else try{let l=new Z,c=ie(l,i);a=await J(e,c.expression)}catch{let l=e.state.env.get(i);a=l?Number.parseInt(l,10):0,Number.isNaN(a)&&(a=0)}if(a<0){let l=Q(e,s);if(l.length===0)return!1;let u=Math.max(...l.map(([f])=>typeof f=="number"?f:0))+1+a;return u<0?!1:nn(e,s,u)}return nn(e,s,a)}if(fe(e,t)){let s=Ue(e,t);return s===void 0||s===t?e.state.env.has(t):Rt(e,s)}return e.state.env.has(t)?!0:bt(e,t)?nn(e,t,0):!1}async function cc(e,t){let n="",r=0;for(;r<t.length;){if(t[r]==="$"){if(t[r+1]==="{"){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="{"?s++:t[i]==="}"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(t[r+1]==="("){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="("?s++:t[i]===")"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ae(e,i);n+=o,r=s;continue}if(/[0-9]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[0-9]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ae(e,i);n+=o,r=s;continue}if(/[*@#?\-!$]/.test(t[r+1]||"")){let s=t[r+1],i=await ae(e,s);n+=i,r+=2;continue}}if(t[r]==='"'){for(n+='"',r++;r<t.length&&t[r]!=='"';)if(t[r]==="$"&&/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ae(e,i);n+=o,r=s}else t[r]==="\\"?(n+=t[r],r++,r<t.length&&(n+=t[r],r++)):(n+=t[r],r++);r<t.length&&(n+='"',r++);continue}n+=t[r],r++}return n}async function eo(e,t){let n=t,r=t.startsWith('"')&&t.endsWith('"'),s=t.startsWith("'")&&t.endsWith("'");if((r||s)&&(n=t.slice(1,-1)),s)return n;let i="",o=0;for(;o<n.length;)if(n[o]==="$")if(n[o+1]==="("){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="("&&n[l-1]==="$"||n[l]==="("?a++:n[l]===")"&&a--,l++;let c=n.slice(o+2,l-1);if(e.execFn){let u=await e.execFn(c,{signal:e.state.signal});i+=u.stdout.replace(/\n+$/,""),u.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+u.stderr)}o=l}else if(n[o+1]==="{"){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="{"?a++:n[l]==="}"&&a--,l++;let c=n.slice(o+2,l-1),u=await ae(e,c);i+=u,o=l}else if(/[a-zA-Z_]/.test(n[o+1]||"")){let a=o+1;for(;a<n.length&&/[a-zA-Z0-9_]/.test(n[a]);)a++;let l=n.slice(o+1,a),c=await ae(e,l);i+=c,o=a}else i+=n[o],o++;else if(n[o]==="`"){let a=o+1;for(;a<n.length&&n[a]!=="`";)a++;let l=n.slice(o+1,a);if(e.execFn){let c=await e.execFn(l,{signal:e.state.signal});i+=c.stdout.replace(/\n+$/,""),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr)}o=a+1}else i+=n[o],o++;return i}var Sr=1e4,to={maxResults:Sr,maxStringBytes:10*1024*1024};function ms(e,t,n,r){if(e.length>=n.maxResults)return!1;let s=B(t);if(s>n.maxStringBytes-r.value)throw new $(`brace expansion string limit exceeded (${n.maxStringBytes} bytes)`,"string_length");return e.push(t),r.value+=s,!0}function Up(e,t,n,r,s,i=to){let o=n??1;o===0&&(o=1);let a=Math.abs(o),l=[],c=0;if(r?.match(/^-?0\d/)&&(c=Math.max(c,r.replace(/^-/,"").length)),s?.match(/^-?0\d/)&&(c=Math.max(c,s.replace(/^-/,"").length)),c>i.maxStringBytes)throw new $(`brace expansion padding limit exceeded (${i.maxStringBytes} bytes)`,"string_length");let u={value:0},f=d=>{if(c>0){let p=d<0,h=String(Math.abs(d)).padStart(c,"0");return p?`-${h}`:h}return String(d)};if(e<=t)for(let d=e,p=0;d<=t&&p<Sr&&ms(l,f(d),i,u);d+=a,p++);else for(let d=e,p=0;d>=t&&p<Sr&&ms(l,f(d),i,u);d-=a,p++);return l}function jp(e,t,n,r=to){let s=n??1;s===0&&(s=1);let i=e.charCodeAt(0),o=t.charCodeAt(0),a=Math.abs(s),l=e>="A"&&e<="Z",c=e>="a"&&e<="z",u=t>="A"&&t<="Z",f=t>="a"&&t<="z";if(l&&f||c&&u){let h=n!==void 0?`..${n}`:"";throw new Vr(`{${e}..${t}${h}}: invalid sequence`)}let d=[],p={value:0};if(i<=o)for(let h=i,m=0;h<=o&&m<Sr&&ms(d,String.fromCharCode(h),r,p);h+=a,m++);else for(let h=i,m=0;h>=o&&m<Sr&&ms(d,String.fromCharCode(h),r,p);h-=a,m++);return d}function no(e,t,n,r,s,i=to){let o=n!==void 0?`..${n}`:"";return typeof e=="number"&&typeof t=="number"?{expanded:Up(e,t,n,r,s,i),literal:`{${e}..${t}${o}}`}:typeof e=="string"&&typeof t=="string"?{expanded:jp(e,t,n,i),literal:`{${e}..${t}${o}}`}:{expanded:null,literal:`{${e}..${t}${o}}`}}function uc(e){if(e.statements.length!==1)return null;let t=e.statements[0];if(t.operators.length!==0||t.pipelines.length!==1)return null;let n=t.pipelines[0];if(n.negated||n.commands.length!==1)return null;let r=n.commands[0];if(r.type!=="SimpleCommand")return null;let s=r;if(s.name!==null||s.args.length!==0||s.assignments.length!==0||s.redirections.length!==1)return null;let i=s.redirections[0];return i.operator!=="<"||i.target.type!=="Word"?null:{target:i.target}}function Ot(e,t){return!!(/[*?[]/.test(e)||t&&/[@*+?!]\(/.test(e))}function ro(e){let t="",n=0;for(;n<e.length;)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);return t}function st(e){return e.replace(/([*?[\]\\()|])/g,"\\$1")}function Hn(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}function ne(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ee(e,t,n=!1){let r="",s=0;for(;s<e.length;){let i=e[s];if(n&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<e.length&&e[s+1]==="("){let o=qp(e,s+1);if(o!==-1){let a=e.slice(s+2,o),c=Gp(a).map(f=>ee(f,t,n)),u=c.length>0?c.join("|"):"(?:)";i==="@"?r+=`(?:${u})`:i==="*"?r+=`(?:${u})*`:i==="+"?r+=`(?:${u})+`:i==="?"?r+=`(?:${u})?`:i==="!"&&(r+=`(?!(?:${u})$).*`),s=o+1;continue}}if(i==="\\")if(s+1<e.length){let o=e[s+1];/[\\^$.|+(){}[\]*?]/.test(o)?r+=`\\${o}`:r+=o,s+=2}else r+="\\\\",s++;else if(i==="*")r+=t?".*":".*?",s++;else if(i==="?")r+=".",s++;else if(i==="["){let o=Hp(e,s);if(o===-1)r+="\\[",s++;else{let a=e.slice(s+1,o);r+=Zp(a),s=o+1}}else/[\^$.|+(){}]/.test(i)?(r+=`\\${i}`,s++):(r+=i,s++)}return r}function qp(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Gp(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function Hp(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==="]")return n;if(e[n]==="'"){let r=e.indexOf("'",n+1);if(r!==-1){n=r+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let r=e.indexOf(":]",n+2);if(r!==-1){n=r+2;continue}}n++}return-1}function Zp(e){let t="[",n=0;for((e[0]==="^"||e[0]==="!")&&(t+="^",n++);n<e.length;){if(e[n]==="'"){let s=e.indexOf("'",n+1);if(s!==-1){let i=e.slice(n+1,s);for(let o of i)o==="\\"?t+="\\\\":o==="]"?t+="\\]":o==="^"&&t==="["?t+="\\^":t+=o;n=s+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){let i=e.slice(n+2,s);t+=Kp(i),n=s+2;continue}}let r=e[n];r==="\\"?n+1<e.length?(t+=`\\${e[n+1]}`,n+=2):(t+="\\\\",n++):r==="-"&&n>0&&n<e.length-1?(t+="-",n++):r==="^"&&n===0?(t+="^",n++):(r==="]"&&n===0?t+="\\]":t+=r,n++)}return t+="]",t}var Qp=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"]]);function Kp(e){return Qp.get(e)??""}function St(e,t,n,r,s){if(r==="prefix")return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),ge(`^${n}`,"s").replace(t,"");let i=ge(`${n}$`,"s");if(s)return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),i.replace(t,"");e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal");let o=ge(`^(?:.*)(${n})$`,"s").exec(t);if(!o)return t;let a=o[1]??"";return t.slice(0,t.length-a.length)}function Zn(e,t){let n=new Set;for(let r of e.state.env.keys())r.startsWith(t)&&n.add(r);for(let r of e.state.arrays?.keys()??[])r.startsWith(t)&&n.add(r);return[...n].sort()}function ys(e,t,n,r,s){let i=new Vn(e.limits.maxStringLength,"pattern replacement",()=>new $(`pattern replacement: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length"));n.lastIndex=0;let o=0,a=n.exec(t);for(;a!==null&&(e.executionScope.consumeLimited("pattern_operations",1,e.limits.maxGlobOperations,"pattern replacement"),!(s&&a[0].length===0&&a.index===t.length||(i.append(t.slice(o,a.index)),i.append(r),o=a.index+a[0].length,!s)));)a[0].length===0&&(o++,n.lastIndex<=a.index&&(n.lastIndex=a.index+1)),a=n.exec(t);return i.append(t.slice(o)),n.lastIndex=0,i.build()}function fc(e){let t=[],n=0;return{append(r){let s=B(r);if(s>e-n)throw new $(`prompt expansion exceeds string length limit (${e} bytes)`,"string_length");r&&t.push(r),n+=s},build:()=>t.join("")}}function Xp(e,t,n){let r=(o,a=2)=>String(o).padStart(a,"0");if(e===""){let o=r(t.getHours()),a=r(t.getMinutes()),l=r(t.getSeconds());return`${o}:${a}:${l}`}let s=fc(n),i=0;for(;i<e.length;)if(e[i]==="%"){if(i+1>=e.length){s.append("%"),i++;continue}let o=e[i+1];switch(o){case"H":s.append(r(t.getHours()));break;case"M":s.append(r(t.getMinutes()));break;case"S":s.append(r(t.getSeconds()));break;case"d":s.append(r(t.getDate()));break;case"m":s.append(r(t.getMonth()+1));break;case"Y":s.append(String(t.getFullYear()));break;case"y":s.append(r(t.getFullYear()%100));break;case"I":{let a=t.getHours()%12;a===0&&(a=12),s.append(r(a));break}case"p":s.append(t.getHours()<12?"AM":"PM");break;case"P":s.append(t.getHours()<12?"am":"pm");break;case"%":s.append("%");break;case"a":{let a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];s.append(a[t.getDay()]);break}case"b":{let a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];s.append(a[t.getMonth()]);break}default:s.append(`%${o}`)}i+=2}else s.append(e[i]),i++;return s.build()}function vr(e,t){let n=fc(e.limits.maxStringLength),r=0,s=e.state.env.get("USER")||e.state.env.get("LOGNAME")||"user",i=e.state.env.get("HOSTNAME")||"localhost",o=i.split(".")[0],a=e.state.env.get("PWD")||"/",l=e.state.env.get("HOME")||"/",c=a.startsWith(l)?`~${a.slice(l.length)}`:a,u=a.split("/").pop()||a,f=new Date,d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=e.state.env.get("__COMMAND_NUMBER")||"1";for(;r<t.length;){let m=t[r];if(m==="\\"){if(r+1>=t.length){n.append("\\"),r++;continue}let E=t[r+1];if(E>="0"&&E<="7"){let S="",g=r+1;for(;g<t.length&&g<r+4&&t[g]>="0"&&t[g]<="7";)S+=t[g],g++;let y=Number.parseInt(S,8)%256;n.append(String.fromCharCode(y)),r=g;continue}switch(E){case"\\":n.append("\\"),r+=2;break;case"a":n.append("\x07"),r+=2;break;case"e":n.append("\x1B"),r+=2;break;case"n":n.append(`
100
+ `),r+=2;break;case"r":n.append("\r"),r+=2;break;case"$":n.append("$"),r+=2;break;case"[":case"]":r+=2;break;case"u":n.append(s),r+=2;break;case"h":n.append(o),r+=2;break;case"H":n.append(i),r+=2;break;case"w":n.append(c),r+=2;break;case"W":n.append(u),r+=2;break;case"d":{let S=String(f.getDate()).padStart(2," ");n.append(`${d[f.getDay()]} ${p[f.getMonth()]} ${S}`),r+=2;break}case"t":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0"),y=String(f.getSeconds()).padStart(2,"0");n.append(`${S}:${g}:${y}`),r+=2;break}case"T":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),b=String(f.getSeconds()).padStart(2,"0");n.append(`${g}:${y}:${b}`),r+=2;break}case"@":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),b=f.getHours()<12?"AM":"PM";n.append(`${g}:${y} ${b}`),r+=2;break}case"A":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0");n.append(`${S}:${g}`),r+=2;break}case"D":if(r+2<t.length&&t[r+2]==="{"){let S=t.indexOf("}",r+3);if(S!==-1){let g=t.slice(r+3,S);n.append(Xp(g,f,e.limits.maxStringLength)),r=S+1}else n.append("\\D"),r+=2}else n.append("\\D"),r+=2;break;case"s":n.append("bash"),r+=2;break;case"v":n.append("5.0"),r+=2;break;case"V":n.append("5.0.0"),r+=2;break;case"j":n.append("0"),r+=2;break;case"l":n.append("tty"),r+=2;break;case"#":n.append(h),r+=2;break;case"!":n.append(h),r+=2;break;case"x":n.append("\\x"),r+=2;break;default:n.append(`\\${E}`),r+=2}}else n.append(m),r++}return n.build()}function ln(e){if(e==="")return"''";if(/[\n\r\t\x00-\x1f\x7f']/.test(e)){let n="$'";for(let r of e)switch(r){case"'":n+="\\'";break;case"\\":n+="\\\\";break;case`
101
+ `:n+="\\n";break;case"\r":n+="\\r";break;case" ":n+="\\t";break;default:{let s=r.charCodeAt(0);s<32||s===127?n+=`\\${s.toString(8).padStart(3,"0")}`:n+=r}}return`${n}'`}return`'${e}'`}function Ke(e,t){e.state.readonlyVars=e.state.readonlyVars||new Set,e.state.readonlyVars.add(t)}function je(e,t){return e.state.readonlyVars?.has(t)??!1}function de(e,t,n="bash"){if(je(e,t)){let r=`${n}: ${t}: readonly variable
102
+ `;throw new q(1,"",r)}return null}function vt(e,t){let n=e.state.exportedVars?.has(t)??!1;if(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(t),e.state.localScopes.length>0&&e.state.localScopes[e.state.localScopes.length-1].has(t)&&!n){for(e.state.localExportedVars||(e.state.localExportedVars=[]);e.state.localExportedVars.length<e.state.localScopes.length;)e.state.localExportedVars.push(new Set);e.state.localExportedVars[e.state.localExportedVars.length-1].add(t)}}function gs(e,t){e.state.exportedVars?.delete(t)}function cn(e,t){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t))return"";let n="",r=Pe(e,t)?.kind==="indexed",s=e.state.associativeArrays?.has(t)??!1;return r&&!s&&(n+="a"),s&&(n+="A"),e.state.integerVars?.has(t)&&(n+="i"),fe(e,t)&&(n+="n"),je(e,t)&&(n+="r"),e.state.exportedVars?.has(t)&&(n+="x"),n}async function dc(e,t,n,r){return e.coverage?.hit("bash:expansion:default_value"),(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):n.effectiveValue}async function pc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:assign_default"),(r.isUnset||n.checkEmpty&&r.isEmpty)&&n.word){let o=await s(e,n.word.parts,r.inDoubleQuotes),a=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,l,c]=a,u;if(/^\d+$/.test(c))u=Number.parseInt(c,10);else{try{let f=new Z,d=ie(f,c);u=await J(e,d.expression)}catch{let f=e.state.env.get(c);u=f?Number.parseInt(f,10):0}Number.isNaN(u)&&(u=0)}G(e,l,u,o)}else e.state.env.set(t,o);return o}return r.effectiveValue}async function hc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:error_if_unset"),r.isUnset||n.checkEmpty&&r.isEmpty){let o=n.word?await s(e,n.word.parts,r.inDoubleQuotes):`${t}: parameter null or not set`;throw new q(1,"",`bash: ${o}
103
+ `)}return r.effectiveValue}async function mc(e,t,n,r){return e.coverage?.hit("bash:expansion:use_alternative"),!(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):""}async function yc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_removal");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let a of n.pattern.parts)if(a.type==="Glob")i+=ee(a.pattern,n.greedy,o);else if(a.type==="Literal")i+=ee(a.value,n.greedy,o);else if(a.type==="SingleQuoted"||a.type==="Escaped")i+=ne(a.value);else if(a.type==="DoubleQuoted"){let l=await r(e,a.parts);i+=ne(l)}else if(a.type==="ParameterExpansion"){let l=await s(e,a);i+=ee(l,n.greedy,o)}else{let l=await s(e,a);i+=ne(l)}return St(e,t,i,n.side,n.greedy)}async function gc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_replacement");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let c of n.pattern.parts)if(c.type==="Glob")i+=ee(c.pattern,!0,o);else if(c.type==="Literal")i+=ee(c.value,!0,o);else if(c.type==="SingleQuoted"||c.type==="Escaped")i+=ne(c.value);else if(c.type==="DoubleQuoted"){let u=await r(e,c.parts);i+=ne(u)}else if(c.type==="ParameterExpansion"){let u=await s(e,c);i+=ee(u,!0,o)}else{let u=await s(e,c);i+=ne(u)}let a=n.replacement?await r(e,n.replacement.parts):"";if(n.anchor==="start"?i=`^${i}`:n.anchor==="end"&&(i=`${i}$`),i==="")return t;let l=n.all?"gs":"s";try{let c=ge(i,l);return ys(e,t,c,a,n.all)}catch(c){if(c instanceof $)throw c;return t}}function wc(e,t,n){e.coverage?.hit("bash:expansion:length");let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(r){let s=r[1],i=Q(e,s);return i.length>0?String(i.length):e.state.env.get(s)!==void 0?"1":"0"}if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&bt(e,t)){if(t==="FUNCNAME"){let i=e.state.funcNameStack?.[0]||"";return String([...i].length)}if(t==="BASH_LINENO"){let i=e.state.callLineStack?.[0];return String(i!==void 0?[...String(i)].length:0)}let s=ce(e,t,0)||"";return String([...s].length)}return String([...n].length)}async function Ec(e,t,n,r){e.coverage?.hit("bash:expansion:substring");let s=await J(e,r.offset.expression),i=r.length?await J(e,r.length.expression):void 0;if(t==="@"||t==="*"){let c=Number.parseInt(e.state.env.get("#")||"0",10),u=[];for(let h=1;h<=c;h++)u.push(e.state.env.get(String(h))||"");let f=e.state.env.get("0")||"bash",d,p;if(s<=0)if(d=[f,...u],s<0){if(p=d.length+s,p<0)return""}else p=0;else d=u,p=s-1;if(p<0||p>=d.length)return"";if(i!==void 0){let h=i<0?d.length+i:p+i;return d.slice(p,Math.max(p,h)).join(" ")}return d.slice(p).join(" ")}let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(o){let c=o[1];if(e.state.associativeArrays?.has(c))throw new q(1,"",`bash: \${${c}[@]: 0: 3}: bad substitution
104
+ `);let u=Q(e,c),f=0;if(s<0){if(u.length>0){let d=u[u.length-1][0],h=(typeof d=="number"?d:0)+1+s;if(h<0||(f=u.findIndex(([m])=>typeof m=="number"&&m>=h),f<0))return""}}else if(f=u.findIndex(([d])=>typeof d=="number"&&d>=s),f<0)return"";if(i!==void 0){if(i<0)throw new ue(`${o[1]}[@]: substring expression < 0`);return u.slice(f,f+i).map(([,d])=>d).join(" ")}return u.slice(f).map(([,d])=>d).join(" ")}let a=[...n],l=s;if(l<0&&(l=Math.max(0,a.length+l)),i!==void 0){if(i<0){let c=a.length+i;return a.slice(l,Math.max(l,c)).join("")}return a.slice(l,l+i).join("")}return a.slice(l).join("")}async function bc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:case_modification"),n.pattern){let i=e.state.shoptOptions.extglob,o="";for(let f of n.pattern.parts)if(f.type==="Glob")o+=ee(f.pattern,!0,i);else if(f.type==="Literal")o+=ee(f.value,!0,i);else if(f.type==="SingleQuoted"||f.type==="Escaped")o+=ne(f.value);else if(f.type==="DoubleQuoted"){let d=await r(e,f.parts);o+=ne(d)}else if(f.type==="ParameterExpansion"){let d=await s(e,f);o+=ee(d,!0,i)}let a=ge(`^(?:${o})$`),l=n.direction==="upper"?f=>f.toUpperCase():f=>f.toLowerCase(),c="",u=!1;for(let f of t)!n.all&&u?c+=f:a.test(f)?(c+=l(f),u=!0):c+=f;return c}return n.direction==="upper"?n.all?t.toUpperCase():t.charAt(0).toUpperCase()+t.slice(1):n.all?t.toLowerCase():t.charAt(0).toLowerCase()+t.slice(1)}function Sc(e,t,n,r,s){e.coverage?.hit("bash:expansion:transform");let i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(i&&s.operator==="Q")return Q(e,i[1]).map(([,c])=>ln(c)).join(" ");if(i&&s.operator==="a")return cn(e,i[1]);let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[.+\]$/);if(o&&s.operator==="a")return cn(e,o[1]);switch(s.operator){case"Q":return r?"":ln(n);case"P":return vr(e,n);case"a":return cn(e,t);case"A":return r?"":`${t}=${ln(n)}`;case"E":return n.replace(/\\([\\abefnrtv'"?])/g,(a,l)=>{switch(l){case"\\":return"\\";case"a":return"\x07";case"b":return"\b";case"e":return"\x1B";case"f":return"\f";case"n":return`
105
+ `;case"r":return"\r";case"t":return" ";case"v":return"\v";case"'":return"'";case'"':return'"';case"?":return"?";default:return l}});case"K":case"k":return r?"":ln(n);case"u":return n.charAt(0).toUpperCase()+n.slice(1);case"U":return n.toUpperCase();case"L":return n.toLowerCase();default:return n}}async function vc(e,t,n,r,s,i,o=!1){if(e.coverage?.hit("bash:expansion:indirection"),fe(e,t))return In(e,t)||"";let a=/^[a-zA-Z_][a-zA-Z0-9_]*\[([@*])\]$/.test(t);if(r){if(s.innerOp?.type==="UseAlternative")return"";throw new et(`\${!${t}}`)}let l=n;if(a&&(l===""||l.includes(" ")))throw new et(`\${!${t}}`);let c=l.match(/^[a-zA-Z_][a-zA-Z0-9_]*\[(.+)\]$/);if(c&&c[1].includes("~"))throw new et(`\${!${t}}`);if(s.innerOp){let u={type:"ParameterExpansion",parameter:l,operation:s.innerOp};return i(e,u,o)}return await ae(e,l)}function Ac(e,t){e.coverage?.hit("bash:expansion:array_keys");let r=Q(e,t.array).map(([s])=>String(s));return t.star?r.join(X(e.state.env)):r.join(" ")}function kc(e,t){e.coverage?.hit("bash:expansion:var_name_prefix");let n=Zn(e,t.prefix);return t.star?n.join(X(e.state.env)):n.join(" ")}function Pc(e,t,n,r){let s=Number.parseInt(e.state.env.get("#")||"0",10),i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(t==="*")return{isEmpty:s===0,effectiveValue:n};if(t==="@")return{isEmpty:s===0||s===1&&e.state.env.get("1")==="",effectiveValue:n};if(i){let[,o,a]=i,l=Q(e,o);if(l.length===0)return{isEmpty:!0,effectiveValue:""};if(a==="*"){let c=X(e.state.env),u=l.map(([,f])=>f).join(c);return{isEmpty:r?u==="":!1,effectiveValue:u}}return{isEmpty:l.length===1&&l.every(([,c])=>c===""),effectiveValue:l.map(([,c])=>c).join(" ")}}return{isEmpty:n==="",effectiveValue:n}}function xc(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="\\"&&t+1<e.length){t+=2;continue}if(n==="'"){let r=e.indexOf("'",t+1);if(r!==-1){t=r+1;continue}}if(n==="$"&&t+1<e.length&&e[t+1]==="("||n==="`")return!0;t++}return!1}function $c(e,t){let n=1,r=t,s=!1,i=!1;for(;r<e.length&&n>0;){let o=e[r];if(o==="\\"&&!s&&r+1<e.length){r+=2;continue}if(o==="'"&&!i){s=!s,r++;continue}if(o==='"'&&!s){i=!i,r++;continue}if(!s&&!i){if(o==="(")n++;else if(o===")"&&(n--,n===0))return r}r++}return-1}async function ws(e,t){let n=new Z,r;try{r=n.parse(t)}catch{return""}let s=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let i=new Map(e.state.env),o=ut(e.state.arrays),a=e.state.cwd,l=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let c=await e.executeScript(r),u=c.exitCode;return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.suppressVerbose=l,e.state.lastExitCode=u,e.state.env.set("?",String(u)),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr),e.state.bashPid=s,c.stdout.replace(/\n+$/,"")}catch(c){return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.bashPid=s,e.state.suppressVerbose=l,Ur(c),c instanceof q?(e.state.lastExitCode=c.exitCode,e.state.env.set("?",String(c.exitCode)),c.stdout?.replace(/\n+$/,"")??""):""}}function so(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=st(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=Yp(e,a);n+=st(l),r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}function Yp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}async function Cc(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=st(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=await Jp(e,a);n+=st(l),r=i+1;continue}}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=$c(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await ws(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await ws(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}async function Jp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=$c(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await ws(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await ws(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}function io(e,t){if(!t.startsWith("~"))return t;e.coverage?.hit("bash:expansion:tilde");let n=e.state.env.get("HOME")!==void 0?e.state.env.get("HOME"):"/home/user";if(t==="~"||t.startsWith("~/"))return n+t.slice(1);let r=1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;let s=t.slice(1,r),i=t.slice(r);return i!==""&&!i.startsWith("/")?t:s==="root"?`/root${i}`:t}function un(e,t){return t.split(":").map(n=>io(e,n)).join(":")}function De(e,t,n,r){if(e.length>n-t.length)throw new $(`${r} element limit exceeded (${n})`,"array_elements");for(let s of t)e.push(s)}async function eh(e,t,n,r){let s="";for(let i of t.parts)if(i.type==="Glob")s+=ee(i.pattern,!0,e.state.shoptOptions.extglob);else if(i.type==="Literal")s+=ee(i.value,!0,e.state.shoptOptions.extglob);else if(i.type==="SingleQuoted"||i.type==="Escaped")s+=ne(i.value);else if(i.type==="DoubleQuoted"){let o=await n(e,i.parts);s+=ne(o)}else if(i.type==="ParameterExpansion"){let o=await r(e,i);s+=ee(o,!0,e.state.shoptOptions.extglob)}else{let o=await r(e,i);s+=ne(o)}return s}async function Nc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternReplacement")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=Q(e,a),f=u.map(([,E])=>E);if(u.length===0){let E=e.state.env.get(a);E!==void 0&&f.push(E)}if(f.length===0)return{values:[],quoted:!0};let d="";c.pattern&&(d=await eh(e,c.pattern,n,r));let p=c.replacement?await n(e,c.replacement.parts):"",h=d;c.anchor==="start"?h=`^${d}`:c.anchor==="end"&&(h=`${d}$`);let m=[];try{let E=ge(h,c.all?"g":"");for(let S of f)m.push(E.replace(S,p))}catch{m.push(...f)}if(l){let E=X(e.state.env);return{values:[m.join(E)],quoted:!0}}return{values:m,quoted:!0}}async function Rc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternRemoval")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=Q(e,a),f=u.map(([,m])=>m);if(u.length===0){let m=e.state.env.get(a);m!==void 0&&f.push(m)}if(f.length===0)return{values:[],quoted:!0};let d="",p=e.state.shoptOptions.extglob;if(c.pattern)for(let m of c.pattern.parts)if(m.type==="Glob")d+=ee(m.pattern,c.greedy,p);else if(m.type==="Literal")d+=ee(m.value,c.greedy,p);else if(m.type==="SingleQuoted"||m.type==="Escaped")d+=ne(m.value);else if(m.type==="DoubleQuoted"){let E=await n(e,m.parts);d+=ne(E)}else if(m.type==="ParameterExpansion"){let E=await r(e,m);d+=ee(E,c.greedy,p)}else{let E=await r(e,m);d+=ne(E)}let h=[];for(let m of f)h.push(St(e,m,d,c.side,c.greedy));if(l){let m=X(e.state.env);return{values:[h.join(m)],quoted:!0}}return{values:h,quoted:!0}}async function Oc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="DefaultValue"&&n.parts[0].operation?.type!=="UseAlternative"&&n.parts[0].operation?.type!=="AssignDefault")return null;let r=n.parts[0],s=r.operation,i=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/),o,a=!1;if(i){let l=i[1];a=i[2]==="*";let c=Q(e,l),u=c.length>0||e.state.env.has(l),f=c.length===0||c.length===1&&c.every(([,p])=>p===""),d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=u&&!(d&&f):o=!u||d&&f,!o){if(c.length>0){let h=c.map(([,m])=>m);if(a){let m=X(e.state.env);return{values:[h.join(m)],quoted:!0}}return{values:h,quoted:!0}}let p=e.state.env.get(l);return p!==void 0?{values:[p],quoted:!0}:{values:[],quoted:!0}}}else{let l=r.parameter,c=await Rt(e,l),u=await ae(e,l),f=u==="",d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=c&&!(d&&f):o=!c||d&&f,!o)return{values:[u],quoted:!0}}if(o&&s.word){let l=s.word.parts,c=null,u=!1;for(let f of l)if(f.type==="ParameterExpansion"&&!f.operation){let d=f.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(d){c=d[1],u=d[2]==="*";break}}if(c){let f=Q(e,c);if(f.length>0){let p=f.map(([,h])=>h);if(u||a){let h=X(e.state.env);return{values:[p.join(h)],quoted:!0}}return{values:p,quoted:!0}}let d=e.state.env.get(c);return d!==void 0?{values:[d],quoted:!0}:{values:[],quoted:!0}}}return null}async function Dc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0],o=-1,a="",l=!1,c=null;for(let m=0;m<i.parts.length;m++){let E=i.parts[m];if(E.type==="ParameterExpansion"&&(E.operation?.type==="PatternRemoval"||E.operation?.type==="PatternReplacement")){let S=E.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(S){o=m,a=S[1],l=S[2]==="*",c=E.operation;break}}}if(o===-1||o===0&&o===i.parts.length-1)return null;let u="";for(let m=0;m<o;m++)u+=await r(e,i.parts[m]);let f="";for(let m=o+1;m<i.parts.length;m++)f+=await r(e,i.parts[m]);let d=Q(e,a),p=d.map(([,m])=>m);if(d.length===0){let m=e.state.env.get(a);if(m!==void 0)p=[m];else{if(l)return{values:[u+f],quoted:!0};let E=u+f;return{values:E?[E]:[],quoted:!0}}}if(c?.type==="PatternRemoval"){let m=c,E="",S=e.state.shoptOptions.extglob;if(m.pattern)for(let g of m.pattern.parts)if(g.type==="Glob")E+=ee(g.pattern,m.greedy,S);else if(g.type==="Literal")E+=ee(g.value,m.greedy,S);else if(g.type==="SingleQuoted"||g.type==="Escaped")E+=ne(g.value);else if(g.type==="DoubleQuoted"){let y=await s(e,g.parts);E+=ne(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);E+=ee(y,m.greedy,S)}else{let y=await r(e,g);E+=ne(y)}p=p.map(g=>St(e,g,E,m.side,m.greedy))}else if(c?.type==="PatternReplacement"){let m=c,E="";if(m.pattern)for(let y of m.pattern.parts)if(y.type==="Glob")E+=ee(y.pattern,!0,e.state.shoptOptions.extglob);else if(y.type==="Literal")E+=ee(y.value,!0,e.state.shoptOptions.extglob);else if(y.type==="SingleQuoted"||y.type==="Escaped")E+=ne(y.value);else if(y.type==="DoubleQuoted"){let b=await s(e,y.parts);E+=ne(b)}else if(y.type==="ParameterExpansion"){let b=await r(e,y);E+=ee(b,!0,e.state.shoptOptions.extglob)}else{let b=await r(e,y);E+=ne(b)}let S=m.replacement?await s(e,m.replacement.parts):"",g=E;m.anchor==="start"?g=`^${E}`:m.anchor==="end"&&(g=`${E}$`);try{let y=ge(g,m.all?"g":"");p=p.map(b=>y.replace(b,S))}catch{}}if(l){let m=X(e.state.env);return{values:[u+p.join(m)+f],quoted:!0}}return p.length===1?{values:[u+p[0]+f],quoted:!0}:{values:[u+p[0],...p.slice(1,-1),p[p.length-1]+f],quoted:!0}}async function Ic(e,t,n,r){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o="",a=!1;for(let p=0;p<s.parts.length;p++){let h=s.parts[p];if(h.type==="ParameterExpansion"&&!h.operation){let m=h.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(m){i=p,o=m[1],a=m[2]==="*";break}}}if(i===-1)return null;let l="";for(let p=0;p<i;p++)l+=await r(e,s.parts[p]);let c="";for(let p=i+1;p<s.parts.length;p++)c+=await r(e,s.parts[p]);let u=Q(e,o),f=u.map(([,p])=>p);if(u.length===0){let p=e.state.env.get(o);if(p!==void 0)return{values:[l+p+c],quoted:!0};if(a)return{values:[l+c],quoted:!0};let h=l+c;return{values:h?[h]:[],quoted:!0}}if(a){let p=X(e.state.env);return{values:[l+f.join(p)+c],quoted:!0}}return f.length===1?{values:[l+f[0]+c],quoted:!0}:{values:[l+f[0],...f.slice(1,-1),f[f.length-1]+c],quoted:!0}}async function Tc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0];if(r.parts.length!==1||r.parts[0].type!=="ParameterExpansion"||r.parts[0].operation?.type!=="Substring")return null;let s=r.parts[0],i=s.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!i)return null;let o=i[1],a=i[2]==="*",l=s.operation;if(e.state.associativeArrays?.has(o))throw new q(1,"",`bash: \${${o}[@]: 0: 3}: bad substitution
106
+ `);let c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Q(e,o);if(f.length>e.limits.maxArrayElements)throw new $(`array transform element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let d=0;if(c<0){if(f.length>0){let h=f[f.length-1][0],E=(typeof h=="number"?h:0)+1+c;if(E<0)return{values:[],quoted:!0};d=f.findIndex(([S])=>typeof S=="number"&&S>=E),d<0&&(d=f.length)}}else d=f.findIndex(([h])=>typeof h=="number"&&h>=c),d<0&&(d=f.length);let p;if(u!==void 0){if(u<0)throw new ue(`${o}[@]: substring expression < 0`);p=f.slice(d,d+u).map(([,h])=>h)}else p=f.slice(d).map(([,h])=>h);if(p.length===0)return{values:[],quoted:!0};if(a){let h=X(e.state.env);return{values:[p.join(h)],quoted:!0}}return{values:p,quoted:!0}}function _c(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="Transform")return null;let r=n.parts[0],s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!s)return null;let i=s[1],o=s[2]==="*",a=r.operation,l=Q(e,i);if(l.length===0){let d=e.state.env.get(i);if(d!==void 0){let p;switch(a.operator){case"a":p="";break;case"P":p=vr(e,d);break;case"Q":p=ln(d);break;default:p=d}if(B(p)>e.limits.maxStringLength)throw new $(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[p],quoted:!0}}return o?{values:[""],quoted:!0}:{values:[],quoted:!0}}let c=cn(e,i),u=[],f=0;for(let[,d]of l){let p;switch(a.operator){case"a":p=c;break;case"P":p=vr(e,d);break;case"Q":p=ln(d);break;case"u":p=d.charAt(0).toUpperCase()+d.slice(1);break;case"U":p=d.toUpperCase();break;case"L":p=d.toLowerCase();break;default:p=d}let h=B(p);if(h>e.limits.maxStringLength-f)throw new $(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");u.push(p),f+=h}if(o){let d=X(e.state.env);if(Math.max(0,u.length-1)*B(d)>e.limits.maxStringLength-f)throw new $(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u.join(d)],quoted:!0}}return{values:u,quoted:!0}}function Lc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion")return null;let r=n.parts[0];if(r.operation)return null;let s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!s)return null;let i=s[1];if(fe(e,i)){let l=In(e,i);if(l?.endsWith("[@]")||l?.endsWith("[*]"))return{values:[],quoted:!0}}let o=Q(e,i);if(o.length>0)return{values:o.map(([,l])=>l),quoted:!0};let a=e.state.env.get(i);return a!==void 0?{values:[a],quoted:!0}:{values:[],quoted:!0}}function Fc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation)return null;let s=n.parts[0].parameter;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)||!fe(e,s))return null;let i=In(e,s);if(!i)return null;let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!o)return null;let a=o[1],l=Q(e,a);if(l.length>0)return{values:l.map(([,u])=>u),quoted:!0};let c=e.state.env.get(a);return c!==void 0?{values:[c],quoted:!0}:{values:[],quoted:!0}}async function Mc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],a=o.operation,l=await ae(e,o.parameter),c=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c){if(!a.innerOp&&(l==="@"||l==="*")){let h=Number.parseInt(e.state.env.get("#")||"0",10),m=[];for(let E=1;E<=h;E++)m.push(e.state.env.get(String(E))||"");return l==="*"?{values:[m.join(X(e.state.env))],quoted:!0}:{values:m,quoted:!0}}return null}let u=c[1],f=c[2]==="*",d=Q(e,u);if(a.innerOp){if(a.innerOp.type==="Substring")return th(e,d,u,f,a.innerOp);if(a.innerOp.type==="DefaultValue"||a.innerOp.type==="UseAlternative"||a.innerOp.type==="AssignDefault"||a.innerOp.type==="ErrorIfUnset")return nh(e,d,u,f,a.innerOp,s);if(a.innerOp.type==="Transform"&&a.innerOp.operator==="a"){let m=cn(e,u),E=d.map(()=>m);return f?{values:[E.join(X(e.state.env))],quoted:!0}:{values:E,quoted:!0}}let h=[];for(let[,m]of d){let E={type:"ParameterExpansion",parameter:"_indirect_elem_",operation:a.innerOp},S=e.state.env.get("_indirect_elem_");e.state.env.set("_indirect_elem_",m);try{let g=await r(e,E,!0);h.push(g)}finally{S!==void 0?e.state.env.set("_indirect_elem_",S):e.state.env.delete("_indirect_elem_")}}return f?{values:[h.join(X(e.state.env))],quoted:!0}:{values:h,quoted:!0}}if(d.length>0){let h=d.map(([,m])=>m);return f?{values:[h.join(X(e.state.env))],quoted:!0}:{values:h,quoted:!0}}let p=e.state.env.get(u);return p!==void 0?{values:[p],quoted:!0}:{values:[],quoted:!0}}async function th(e,t,n,r,s){let i=s.offset?await J(e,s.offset.expression):0,o=s.length?await J(e,s.length.expression):void 0,a=0;if(i<0){if(t.length>0){let u=t[t.length-1][0],d=(typeof u=="number"?u:0)+1+i;if(d<0)return{values:[],quoted:!0};if(a=t.findIndex(([p])=>typeof p=="number"&&p>=d),a<0)return{values:[],quoted:!0}}}else if(a=t.findIndex(([u])=>typeof u=="number"&&u>=i),a<0)return{values:[],quoted:!0};let l;if(o!==void 0){if(o<0)throw new ue(`${n}[@]: substring expression < 0`);l=t.slice(a,a+o)}else l=t.slice(a);let c=l.map(([,u])=>u);return r?{values:[c.join(X(e.state.env))],quoted:!0}:{values:c,quoted:!0}}async function nh(e,t,n,r,s,i){let o=s.checkEmpty??!1,a=t.map(([,u])=>u),l=t.length===0,c=t.length===0;if(s.type==="UseAlternative")return!c&&!(o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:{values:[],quoted:!0};if(s.type==="DefaultValue")return(c||o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:r?{values:[a.join(X(e.state.env))],quoted:!0}:{values:a,quoted:!0};if(s.type==="AssignDefault"){if((c||o&&l)&&s.word){let f=await i(e,s.word.parts,!0);return G(e,n,0,f),{values:[f],quoted:!0}}return r?{values:[a.join(X(e.state.env))],quoted:!0}:{values:a,quoted:!0}}return r?{values:[a.join(X(e.state.env))],quoted:!0}:{values:a,quoted:!0}}async function Bc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="UseAlternative"&&t[0].operation?.type!=="DefaultValue")return null;let n=t[0],r=n.operation,s=r?.word;if(!s||s.parts.length!==1||s.parts[0].type!=="DoubleQuoted")return null;let i=s.parts[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],l=(await ae(e,o.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!l)return null;let c=await Rt(e,n.parameter),u=await ae(e,n.parameter)==="",f=r.checkEmpty??!1,d;if(r.type==="UseAlternative"?d=c&&!(f&&u):d=!c||f&&u,d){let p=l[1],h=l[2]==="*",m=Q(e,p);if(m.length>0){let S=m.map(([,g])=>g);return h?{values:[S.join(X(e.state.env))],quoted:!0}:{values:S,quoted:!0}}let E=e.state.env.get(p);return E!==void 0?{values:[E],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}async function Wc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="Indirection")return null;let n=t[0],s=n.operation.innerOp;if(!s||s.type!=="UseAlternative"&&s.type!=="DefaultValue")return null;let i=s.word;if(!i||i.parts.length!==1||i.parts[0].type!=="DoubleQuoted")return null;let o=i.parts[0];if(o.parts.length!==1||o.parts[0].type!=="ParameterExpansion"||o.parts[0].operation?.type!=="Indirection")return null;let a=o.parts[0],c=(await ae(e,a.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c)return null;let u=await ae(e,n.parameter),f=await Rt(e,n.parameter),d=u==="",p=s.checkEmpty??!1,h;if(s.type==="UseAlternative"?h=f&&!(p&&d):h=!f||p&&d,h){let m=c[1],E=c[2]==="*",S=Q(e,m);if(S.length>0){let y=S.map(([,b])=>b);return E?{values:[y.join(X(e.state.env))],quoted:!0}:{values:y,quoted:!0}}let g=e.state.env.get(m);return g!==void 0?{values:[g],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}function Vc(e){let t=Number.parseInt(e.state.env.get("#")||"0",10);if(t>e.limits.maxArrayElements)throw new $(`positional parameter element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let n=[],r=0;for(let s=1;s<=t;s++){let i=e.state.env.get(String(s))||"",o=B(i);if(o>e.limits.maxStringLength-r)throw new $(`positional parameter string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n.push(i),r+=o}return n}function Es(e,t,n){if(B(t)>n-B(e))throw new $(`positional expansion string limit exceeded (${n} bytes)`,"string_length");return e+t}function oo(e,t,n,r){if(e.length>=r.limits.maxArrayElements)throw new $(`positional expansion element limit exceeded (${r.limits.maxArrayElements})`,"array_elements");let s=B(t);if(s>r.limits.maxStringLength-n.value)throw new $(`positional expansion string limit exceeded (${r.limits.maxStringLength} bytes)`,"string_length");e.push(t),n.value+=s}async function zc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="Substring"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Number.parseInt(e.state.env.get("#")||"0",10),d=[];for(let g=1;g<=f;g++)d.push(e.state.env.get(String(g))||"");let p=e.state.env.get("0")||"bash",h;if(c<=0){let g=[p,...d],y=g.length+c;if(y<0)h=[];else{let b=c<0?y:0;if(u!==void 0){let v=u<0?g.length+u:b+u;h=g.slice(b,Math.max(b,v))}else h=g.slice(b)}}else{let g=c-1;if(g>=d.length)h=[];else if(u!==void 0){let y=u<0?d.length+u:g+u;h=d.slice(g,Math.max(g,y))}else h=d.slice(g)}let m="";for(let g=0;g<i;g++)m+=await r(e,s.parts[g]);let E="";for(let g=i+1;g<s.parts.length;g++)E+=await r(e,s.parts[g]);if(h.length===0){let g=m+E;return{values:g?[g]:[],quoted:!0}}if(o){let g=X(e.state.env);return{values:[m+h.join(g)+E],quoted:!0}}return h.length===1?{values:[m+h[0]+E],quoted:!0}:{values:[m+h[0],...h.slice(1,-1),h[h.length-1]+E],quoted:!0}}async function Uc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternReplacement"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=Vc(e),u="";for(let g=0;g<i;g++)u=Es(u,await n(e,s.parts[g]),e.limits.maxStringLength);let f="";for(let g=i+1;g<s.parts.length;g++)f=Es(f,await n(e,s.parts[g]),e.limits.maxStringLength);if(c.length===0){let g=u+f;return{values:g?[g]:[],quoted:!0}}let d="";if(l.pattern)for(let g of l.pattern.parts)if(g.type==="Glob")d+=ee(g.pattern,!0,e.state.shoptOptions.extglob);else if(g.type==="Literal")d+=ee(g.value,!0,e.state.shoptOptions.extglob);else if(g.type==="SingleQuoted"||g.type==="Escaped")d+=ne(g.value);else if(g.type==="DoubleQuoted"){let y=await r(e,g.parts);d+=ne(y)}else if(g.type==="ParameterExpansion"){let y=await n(e,g);d+=ee(y,!0,e.state.shoptOptions.extglob)}else{let y=await n(e,g);d+=ne(y)}let p=l.replacement?await r(e,l.replacement.parts):"",h=d;l.anchor==="start"?h=`^${d}`:l.anchor==="end"&&(h=`${d}$`);let m=[],E={value:0};try{let g=ge(h,l.all?"g":"");for(let y of c){let b=0;g.lastIndex=0;for(let P=g.exec(y);P&&(b++,!!l.all);P=g.exec(y))P[0].length===0&&g.lastIndex++;let v=B(y),k=B(p),A=0,x=/\$(?:\$|&|\d+|<[^>]+>|`|')/g;for(;x.exec(p)!==null;)A++;if(v+b*k+b*A*v>e.limits.maxStringLength-E.value)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");oo(m,g.replace(y,p),E,e)}}catch(g){if(g instanceof $)throw g;for(let y of c)oo(m,y,E,e)}if(o){let g=X(e.state.env);if(E.value+Math.max(0,m.length-1)*B(g)+B(u)+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+m.join(g)+f],quoted:!0}}if(B(u)+E.value+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return m.length===1?{values:[u+m[0]+f],quoted:!0}:{values:[u+m[0],...m.slice(1,-1),m[m.length-1]+f],quoted:!0}}async function jc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let S=0;S<s.parts.length;S++){let g=s.parts[S];if(g.type==="ParameterExpansion"&&(g.parameter==="@"||g.parameter==="*")&&g.operation?.type==="PatternRemoval"){i=S,o=g.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=Vc(e),u="";for(let S=0;S<i;S++)u=Es(u,await n(e,s.parts[S]),e.limits.maxStringLength);let f="";for(let S=i+1;S<s.parts.length;S++)f=Es(f,await n(e,s.parts[S]),e.limits.maxStringLength);if(c.length===0){let S=u+f;return{values:S?[S]:[],quoted:!0}}let d="",p=e.state.shoptOptions.extglob;if(l.pattern)for(let S of l.pattern.parts)if(S.type==="Glob")d+=ee(S.pattern,l.greedy,p);else if(S.type==="Literal")d+=ee(S.value,l.greedy,p);else if(S.type==="SingleQuoted"||S.type==="Escaped")d+=ne(S.value);else if(S.type==="DoubleQuoted"){let g=await r(e,S.parts);d+=ne(g)}else if(S.type==="ParameterExpansion"){let g=await n(e,S);d+=ee(g,l.greedy,p)}else{let g=await n(e,S);d+=ne(g)}let h=[],m={value:0};for(let S of c)oo(h,St(e,S,d,l.side,l.greedy),m,e);if(o){let S=X(e.state.env);if(m.value+Math.max(0,h.length-1)*B(S)+B(u)+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+h.join(S)+f],quoted:!0}}if(B(u)+m.value+B(f)>e.limits.maxStringLength)throw new $(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return h.length===1?{values:[u+h[0]+f],quoted:!0}:{values:[u+h[0],...h.slice(1,-1),h[h.length-1]+f],quoted:!0}}async function qc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0],s=-1,i=!1;for(let d=0;d<r.parts.length;d++){let p=r.parts[d];if(p.type==="ParameterExpansion"&&(p.parameter==="@"||p.parameter==="*")){s=d,i=p.parameter==="*";break}}if(s===-1)return null;let o=r.parts[s];if(o.type==="ParameterExpansion"&&o.operation)return null;let a=Number.parseInt(e.state.env.get("#")||"0",10),l="";for(let d=0;d<s;d++)l+=await n(e,r.parts[d]);let c="";for(let d=s+1;d<r.parts.length;d++)c+=await n(e,r.parts[d]);if(a===0){if(i)return{values:[l+c],quoted:!0};let d=l+c;return{values:d?[d]:[],quoted:!0}}let u=[];for(let d=1;d<=a;d++)u.push(e.state.env.get(String(d))||"");if(i){let d=X(e.state.env);return{values:[l+u.join(d)+c],quoted:!0}}return u.length===1?{values:[l+u[0]+c],quoted:!0}:{values:[l+u[0],...u.slice(1,-1),u[u.length-1]+c],quoted:!0}}function Dt(e,t,n,r){if(t.length>=e.limits.maxArrayElements)throw new $(`unquoted expansion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let s=B(n);if(s>e.limits.maxStringLength-r.value)throw new $(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");t.push(n),r.value+=s}function ao(e,t,n,r){let s=B(n),i=Math.max(0,t.length-1);if(s>0&&i>Math.floor((e.limits.maxStringLength-r)/s))throw new $(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return t.join(n)}function rh(e){return new an(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")})}async function bs(e,t){if(e.state.options.noglob)return t;let n=rh(e),r=[];for(let s of t)if(Ot(s,e.state.shoptOptions.extglob)){let i=await n.expand(s);if(i.length>0)De(r,i,e.limits.maxArrayElements,"unquoted glob expansion");else{if(n.hasFailglob())throw new Qt(s);n.hasNullglob()||r.push(s)}}else r.push(s);return r}async function Gc(e,t,n,r){let s=-1,i="",o=!1;for(let b=0;b<t.length;b++){let v=t[b];if(v.type==="ParameterExpansion"&&v.operation?.type==="PatternReplacement"){let k=v.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(k){s=b,i=k[1],o=k[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=Q(e,i),u=c.map(([,b])=>b);if(c.length===0){let b=e.state.env.get(i);b!==void 0&&(u=[b])}if(u.length===0)return{values:[],quoted:!1};let f="";if(l.pattern)for(let b of l.pattern.parts)if(b.type==="Glob")f+=ee(b.pattern,!0,e.state.shoptOptions.extglob);else if(b.type==="Literal")f+=ee(b.value,!0,e.state.shoptOptions.extglob);else if(b.type==="SingleQuoted"||b.type==="Escaped")f+=ne(b.value);else if(b.type==="DoubleQuoted"){let v=await n(e,b.parts);f+=ne(v)}else if(b.type==="ParameterExpansion"){let v=await r(e,b);f+=ee(v,!0,e.state.shoptOptions.extglob)}else{let v=await r(e,b);f+=ne(v)}let d=l.replacement?await n(e,l.replacement.parts):"",p=f;l.anchor==="start"?p=`^${f}`:l.anchor==="end"&&(p=`${f}$`);let h=[],m={value:0};try{let b=ge(p,l.all?"g":"");for(let v of u)Dt(e,h,ys(e,v,b,d,l.all),m)}catch(b){if(b instanceof $)throw b;for(let v of u)Dt(e,h,v,m)}let E=ke(e.state.env),S=Oe(e.state.env);if(o){let b=X(e.state.env),v=ao(e,h,b,m.value);return S?{values:v?[v]:[],quoted:!1}:{values:pe(v,E,e.limits.maxArrayElements),quoted:!1}}if(S)return{values:h,quoted:!1};let g=[],y={value:0};for(let b of h)if(b==="")Dt(e,g,"",y);else for(let v of pe(b,E,e.limits.maxArrayElements))Dt(e,g,v,y);return{values:g,quoted:!1}}async function Hc(e,t,n,r){let s=-1,i="",o=!1;for(let y=0;y<t.length;y++){let b=t[y];if(b.type==="ParameterExpansion"&&b.operation?.type==="PatternRemoval"){let v=b.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(v){s=y,i=v[1],o=v[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=Q(e,i),u=c.map(([,y])=>y);if(c.length===0){let y=e.state.env.get(i);y!==void 0&&(u=[y])}if(u.length===0)return{values:[],quoted:!1};let f="",d=e.state.shoptOptions.extglob;if(l.pattern)for(let y of l.pattern.parts)if(y.type==="Glob")f+=ee(y.pattern,l.greedy,d);else if(y.type==="Literal")f+=ee(y.value,l.greedy,d);else if(y.type==="SingleQuoted"||y.type==="Escaped")f+=ne(y.value);else if(y.type==="DoubleQuoted"){let b=await n(e,y.parts);f+=ne(b)}else if(y.type==="ParameterExpansion"){let b=await r(e,y);f+=ee(b,l.greedy,d)}else{let b=await r(e,y);f+=ne(b)}let p=[],h={value:0};for(let y of u)Dt(e,p,St(e,y,f,l.side,l.greedy),h);let m=ke(e.state.env),E=Oe(e.state.env);if(o){let y=X(e.state.env),b=ao(e,p,y,h.value);return E?{values:b?[b]:[],quoted:!1}:{values:pe(b,m,e.limits.maxArrayElements),quoted:!1}}if(E)return{values:p,quoted:!1};let S=[],g={value:0};for(let y of p)if(y==="")Dt(e,S,"",g);else for(let b of pe(y,m,e.limits.maxArrayElements))Dt(e,S,b,g);return{values:S,quoted:!1}}async function Zc(e,t,n,r){let s=-1,i=!1;for(let g=0;g<t.length;g++){let y=t[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternRemoval"){s=g,i=y.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=Number.parseInt(e.state.env.get("#")||"0",10),c=[];for(let g=1;g<=l;g++)c.push(e.state.env.get(String(g))||"");if(c.length===0)return{values:[],quoted:!1};let u="",f=e.state.shoptOptions.extglob;if(a.pattern)for(let g of a.pattern.parts)if(g.type==="Glob")u+=ee(g.pattern,a.greedy,f);else if(g.type==="Literal")u+=ee(g.value,a.greedy,f);else if(g.type==="SingleQuoted"||g.type==="Escaped")u+=ne(g.value);else if(g.type==="DoubleQuoted"){let y=await n(e,g.parts);u+=ne(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);u+=ee(y,a.greedy,f)}else{let y=await r(e,g);u+=ne(y)}let d=[],p={value:0};for(let g of c)Dt(e,d,St(e,g,u,a.side,a.greedy),p);let h=ke(e.state.env),m=Oe(e.state.env);if(i){let g=X(e.state.env),y=ao(e,d,g,p.value);return m?{values:y?[y]:[],quoted:!1}:{values:pe(y,h,e.limits.maxArrayElements),quoted:!1}}if(m)return{values:d,quoted:!1};let E=[],S={value:0};for(let g of d)if(g==="")Dt(e,E,"",S);else for(let y of pe(g,h,e.limits.maxArrayElements))Dt(e,E,y,S);return{values:E,quoted:!1}}async function Qc(e,t,n,r){let s=-1,i=!1;for(let y=0;y<t.length;y++){let b=t[y];if(b.type==="ParameterExpansion"&&(b.parameter==="@"||b.parameter==="*")&&b.operation?.type==="Substring"){s=y,i=b.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=a.offset?await n(e,a.offset.expression):0,c=a.length?await n(e,a.length.expression):void 0,u=Number.parseInt(e.state.env.get("#")||"0",10),f=[];for(let y=1;y<=u;y++)f.push(e.state.env.get(String(y))||"");let d=e.state.env.get("0")||"bash",p;if(l<=0){let y=[d,...f],b=y.length+l;if(b<0)p=[];else{let v=l<0?b:0;if(c!==void 0){let k=c<0?y.length+c:v+c;p=y.slice(v,Math.max(v,k))}else p=y.slice(v)}}else{let y=l-1;if(y>=f.length)p=[];else if(c!==void 0){let b=c<0?f.length+c:y+c;p=f.slice(y,Math.max(y,b))}else p=f.slice(y)}let h="";for(let y=0;y<s;y++)h+=await r(e,t[y]);let m="";for(let y=s+1;y<t.length;y++)m+=await r(e,t[y]);let E=ke(e.state.env),S=Oe(e.state.env);if(p.length===0){let y=h+m;return y?S?{values:[y],quoted:!1}:{values:pe(y,E,e.limits.maxArrayElements),quoted:!1}:{values:[],quoted:!1}}let g;if(i){let y=X(e.state.env),b=h+p.join(y)+m;S?g=b?[b]:[]:g=pe(b,E,e.limits.maxArrayElements)}else if(S)p.length===1?g=[h+p[0]+m]:g=[h+p[0],...p.slice(1,-1),p[p.length-1]+m];else{g=[];for(let y=0;y<p.length;y++){let b=p[y];if(y===0&&(b=h+b),y===p.length-1&&(b=b+m),b==="")g.push("");else{let v=pe(b,E,e.limits.maxArrayElements);De(g,v,e.limits.maxArrayElements,"unquoted expansion")}}}return{values:await bs(e,g),quoted:!1}}async function Kc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].parameter!=="@"&&t[0].parameter!=="*"||t[0].operation)return null;let n=t[0].parameter==="*",r=Number.parseInt(e.state.env.get("#")||"0",10);if(r===0)return{values:[],quoted:!1};let s=[];for(let c=1;c<=r;c++)s.push(e.state.env.get(String(c))||"");let i=ke(e.state.env),o=Oe(e.state.env),a=fs(e.state.env),l;if(n)if(o)l=s.filter(c=>c!=="");else{let c=X(e.state.env),u=s.join(c);l=pe(u,i,e.limits.maxArrayElements)}else if(o)l=s.filter(c=>c!=="");else if(a){l=[];for(let c of s){if(c==="")continue;let u=pe(c,i,e.limits.maxArrayElements);De(l,u,e.limits.maxArrayElements,"unquoted expansion")}}else{l=[];for(let c of s)if(c==="")l.push("");else{let u=pe(c,i,e.limits.maxArrayElements);De(l,u,e.limits.maxArrayElements,"unquoted expansion")}for(;l.length>0&&l[l.length-1]==="";)l.pop()}return{values:await bs(e,l),quoted:!1}}async function Xc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation)return null;let n=t[0].parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!n)return null;let r=n[1],s=n[2]==="*",i=Q(e,r),o;if(i.length===0){let f=e.state.env.get(r);if(f!==void 0)o=[f];else return{values:[],quoted:!1}}else o=i.map(([,f])=>f);let a=ke(e.state.env),l=Oe(e.state.env),c=fs(e.state.env),u;if(s)if(l)u=o.filter(f=>f!=="");else{let f=X(e.state.env),d=o.join(f);u=pe(d,a,e.limits.maxArrayElements)}else if(l)u=o.filter(f=>f!=="");else if(c){u=[];for(let f of o){if(f==="")continue;let d=pe(f,a,e.limits.maxArrayElements);De(u,d,e.limits.maxArrayElements,"unquoted expansion")}}else{u=[];for(let f of o)if(f==="")u.push("");else{let d=pe(f,a,e.limits.maxArrayElements);De(u,d,e.limits.maxArrayElements,"unquoted expansion")}for(;u.length>0&&u[u.length-1]==="";)u.pop()}return{values:await bs(e,u),quoted:!1}}function Yc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="VarNamePrefix")return null;let n=t[0].operation,r=Zn(e,n.prefix);if(r.length===0)return{values:[],quoted:!1};let s=ke(e.state.env),i=Oe(e.state.env),o;if(n.star)if(i)o=r;else{let a=X(e.state.env),l=r.join(a);o=pe(l,s,e.limits.maxArrayElements)}else if(i)o=r;else{o=[];for(let a of r){let l=pe(a,s,e.limits.maxArrayElements);De(o,l,e.limits.maxArrayElements,"unquoted expansion")}}return{values:o,quoted:!1}}function Jc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="ArrayKeys")return null;let n=t[0].operation,s=Q(e,n.array).map(([l])=>String(l));if(s.length===0)return{values:[],quoted:!1};let i=ke(e.state.env),o=Oe(e.state.env),a;if(n.star)if(o)a=s;else{let l=X(e.state.env),c=s.join(l);a=pe(c,i,e.limits.maxArrayElements)}else if(o)a=s;else{a=[];for(let l of s){let c=pe(l,i,e.limits.maxArrayElements);De(a,c,e.limits.maxArrayElements,"unquoted expansion")}}return{values:a,quoted:!1}}async function eu(e,t,n){let r=-1;for(let d=0;d<t.length;d++){let p=t[d];if(p.type==="ParameterExpansion"&&(p.parameter==="@"||p.parameter==="*")&&!p.operation){r=d;break}}if(r===-1||t.length<=1)return null;let s=Number.parseInt(e.state.env.get("#")||"0",10),i=[];for(let d=1;d<=s;d++)i.push(e.state.env.get(String(d))||"");let o="";for(let d=0;d<r;d++)o+=await n(e,t[d]);let a="";for(let d=r+1;d<t.length;d++)a+=await n(e,t[d]);let l=ke(e.state.env),c=Oe(e.state.env),u=fs(e.state.env);if(s===0){let d=o+a;return{values:d?[d]:[],quoted:!1}}let f;{let d=[];for(let p=0;p<i.length;p++){let h=i[p];p===0&&(h=o+h),p===i.length-1&&(h=h+a),d.push(h)}if(c)f=d.filter(p=>p!=="");else if(u){f=[];for(let p of d){if(p==="")continue;let h=pe(p,l,e.limits.maxArrayElements);De(f,h,e.limits.maxArrayElements,"unquoted expansion")}}else{f=[];for(let p of d)if(p==="")f.push("");else{let h=pe(p,l,e.limits.maxArrayElements);De(f,h,e.limits.maxArrayElements,"unquoted expansion")}for(;f.length>0&&f[f.length-1]==="";)f.pop()}}return f.length===0?{values:[],quoted:!1}:{values:await bs(e,f),quoted:!1}}async function ru(e,t,n){e.coverage?.hit("bash:expansion:word_glob");let r=t.parts,{hasQuoted:s,hasCommandSub:i,hasArrayVar:o,hasArrayAtExpansion:a,hasParamExpansion:l,hasVarNamePrefixExpansion:c,hasIndirection:u}=br(r),d=n.hasBraceExpansion(r)?await n.expandWordWithBracesAsync(e,t):null;if(d&&d.length>1)return sh(e,d,s);let p=await ih(e,r,a,c,u,n);if(p!==null)return p;let h=await ah(e,r,n);if(h!==null)return h;let m=await lh(e,r,n);if(m!==null)return m;let E=await uh(e,r,n.expandPart);if(E!==null)return nu(e,E);if((i||o||l)&&!Oe(e.state.env)){let g=ke(e.state.env),y=n.buildIfsCharClassPattern(g),b=await n.smartWordSplit(e,r,g,y,n.expandPart);return nu(e,b)}let S=await n.expandWordAsync(e,t);return fh(e,t,r,S,s,n.expandWordForGlobbing)}async function sh(e,t,n){let r=[];for(let s of t)if(!(!n&&s===""))if(!n&&!e.state.options.noglob&&Ot(s,e.state.shoptOptions.extglob)){let i=await Ss(e,s);De(r,i,e.limits.maxArrayElements,"brace/glob expansion")}else r.push(s);return{values:r,quoted:!1}}async function ih(e,t,n,r,s,i){if(n){let o=Lc(e,t);if(o!==null)return o}{let o=Fc(e,t);if(o!==null)return o}{let o=await Oc(e,t);if(o!==null)return o}{let o=await Dc(e,t,n,i.expandPart,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Ic(e,t,n,i.expandPart);if(o!==null)return o}{let o=await Tc(e,t,i.evaluateArithmetic);if(o!==null)return o}{let o=_c(e,t);if(o!==null)return o}{let o=await Nc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}{let o=await Rc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}if(r&&t.length===1&&t[0].type==="DoubleQuoted"){let o=oh(e,t);if(o!==null)return o}{let o=await Mc(e,t,s,i.expandParameterAsync,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Bc(e,t);if(o!==null)return o}{let o=await Wc(e,t);if(o!==null)return o}return null}function oh(e,t){let n=t[0];if(n.type!=="DoubleQuoted")return null;if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="VarNamePrefix"){let r=n.parts[0].operation,s=Zn(e,r.prefix);return r.star?{values:[s.join(X(e.state.env))],quoted:!0}:{values:s,quoted:!0}}if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="ArrayKeys"){let r=n.parts[0].operation,i=Q(e,r.array).map(([o])=>String(o));return r.star?{values:[i.join(X(e.state.env))],quoted:!0}:{values:i,quoted:!0}}return null}async function ah(e,t,n){{let r=await zc(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await Uc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await jc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await qc(e,t,n.expandPart);if(r!==null)return r}return null}async function lh(e,t,n){{let r=await Gc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Hc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Zc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Qc(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await Kc(e,t);if(r!==null)return r}{let r=await Xc(e,t);if(r!==null)return r}{let r=Yc(e,t);if(r!==null)return r}{let r=Jc(e,t);if(r!==null)return r}{let r=await eu(e,t,n.expandPart);if(r!==null)return r}return null}function tu(e){if(e.type!=="DoubleQuoted")return null;for(let t=0;t<e.parts.length;t++){let n=e.parts[t];if(n.type!=="ParameterExpansion"||n.operation)continue;let r=n.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(r)return{type:"array",name:r[1],atIndex:t,isStar:r[2]==="*"};if(n.parameter==="@"||n.parameter==="*")return{type:"positional",atIndex:t,isStar:n.parameter==="*"}}return null}async function ch(e,t,n,r){let s="";for(let a=0;a<n.atIndex;a++)s+=await r(e,t.parts[a]);let i="";for(let a=n.atIndex+1;a<t.parts.length;a++)i+=await r(e,t.parts[a]);let o;if(n.type==="array"){if(o=Q(e,n.name).map(([,l])=>l),o.length===0){let l=e.state.env.get(n.name);l!==void 0&&(o=[l])}}else{let a=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let l=1;l<=a;l++)o.push(e.state.env.get(String(l))||"")}if(n.isStar){let a=X(e.state.env),l=o.join(a);return[s+l+i]}if(o.length===0){let a=s+i;return a?[a]:[]}return o.length===1?[s+o[0]+i]:[s+o[0],...o.slice(1,-1),o[o.length-1]+i]}async function uh(e,t,n){if(t.length<2)return null;let r=!1;for(let l of t)if(tu(l)){r=!0;break}if(!r)return null;let s=ke(e.state.env),i=Oe(e.state.env),o=[];for(let l of t){let c=tu(l);if(c&&l.type==="DoubleQuoted"){let u=await ch(e,l,c,n);o.push(u)}else if(l.type==="DoubleQuoted"||l.type==="SingleQuoted"){let u=await n(e,l);o.push([u])}else if(l.type==="Literal")o.push([l.value]);else if(l.type==="ParameterExpansion"){let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=pe(u,s,e.limits.maxArrayElements);o.push(f)}}else{let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=pe(u,s,e.limits.maxArrayElements);o.push(f)}}}let a=[];for(let l of o)if(l.length!==0)if(a.length===0)De(a,l,e.limits.maxArrayElements,"word expansion");else{let c=a.length-1;a[c]=a[c]+l[0];for(let u=1;u<l.length;u++)a.push(l[u])}return a}async function nu(e,t){if(e.state.options.noglob)return{values:t,quoted:!1};let n=[];for(let r of t)if(Ot(r,e.state.shoptOptions.extglob)){let s=await Ss(e,r);De(n,s,e.limits.maxArrayElements,"glob expansion")}else n.push(r);return{values:n,quoted:!1}}async function Ss(e,t){let n=new an(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),r=await n.expand(t);if(r.length>0)return r;if(n.hasFailglob())throw new Qt(t);return n.hasNullglob()?[]:[t]}async function fh(e,t,n,r,s,i){let o=n.some(a=>a.type==="Glob");if(!e.state.options.noglob&&o){let a=await i(e,t);if(Ot(a,e.state.shoptOptions.extglob)){let c=await Ss(e,a);if(c.length>0&&c[0]!==a)return{values:c,quoted:!1};if(c.length===0)return{values:[],quoted:!1}}let l=ro(r);if(!Oe(e.state.env)){let c=ke(e.state.env);return{values:pe(l,c,e.limits.maxArrayElements),quoted:!1}}return{values:[l],quoted:!1}}if(!s&&!e.state.options.noglob&&Ot(r,e.state.shoptOptions.extglob)){let a=await i(e,t);if(Ot(a,e.state.shoptOptions.extglob)){let l=await Ss(e,a);if(l.length>0&&l[0]!==a)return{values:l,quoted:!1}}}if(r===""&&!s)return{values:[],quoted:!1};if(o&&!s){let a=ro(r);if(!Oe(e.state.env)){let l=ke(e.state.env);return{values:pe(a,l,e.limits.maxArrayElements),quoted:!1}}return{values:[a],quoted:!1}}return{values:[r],quoted:s}}function Fe(e,t,n){if(t.length>=e.limits.maxArrayElements)throw new $(`word splitting element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");t.push(n)}async function iu(e,t){let n=t.operation;if(!n||n.type!=="DefaultValue"&&n.type!=="AssignDefault"&&n.type!=="UseAlternative")return null;let r=n.word;if(!r||r.parts.length===0)return null;let s=await Rt(e,t.parameter),o=await ae(e,t.parameter,!1)==="",a=n.checkEmpty??!1,l;return n.type==="UseAlternative"?l=s&&!(a&&o):l=!s||a&&o,l?r.parts:null}function dh(e){return e.type==="SingleQuoted"?!0:e.type==="DoubleQuoted"?e.parts.every(n=>n.type==="Literal"):!1}async function ph(e,t){if(t.type!=="ParameterExpansion")return null;let n=await iu(e,t);if(!n||n.length<=1)return null;let r=n.some(i=>dh(i)),s=n.some(i=>i.type==="Literal"||i.type==="ParameterExpansion"||i.type==="CommandSubstitution"||i.type==="ArithmeticExpansion");return r&&s?n:null}function hh(e){return e.type==="DoubleQuoted"||e.type==="SingleQuoted"||e.type==="Literal"?!1:e.type==="Glob"?Qi(e.pattern):!(!(e.type==="ParameterExpansion"||e.type==="CommandSubstitution"||e.type==="ArithmeticExpansion")||e.type==="ParameterExpansion"&&nc(e))}async function ou(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:word_split"),t.length===1&&t[0].type==="ParameterExpansion"){let d=t[0],p=await iu(e,d);if(p&&p.length>0&&p.length>1&&p.some(m=>m.type==="DoubleQuoted"||m.type==="SingleQuoted")&&p.some(m=>m.type==="Literal"||m.type==="ParameterExpansion"||m.type==="CommandSubstitution"||m.type==="ArithmeticExpansion"))return su(e,p,n,r,s)}let i=[],o=!1;for(let d of t){let p=hh(d),h=d.type==="DoubleQuoted"||d.type==="SingleQuoted",m=p?await ph(e,d):null,E=await s(e,d);i.push({value:E,isSplittable:p,isQuoted:h,mixedDefaultParts:m??void 0}),p&&(o=!0)}if(!o){let d=i.map(p=>p.value).join("");return d?[d]:[]}let a=[],l="",c=!1,u=!1,f=!1;for(let d of i)if(!d.isSplittable)u?d.isQuoted&&d.value===""?(l!==""&&Fe(e,a,l),Fe(e,a,""),c=!0,l="",u=!1,f=!0):d.value!==""?(l!==""&&Fe(e,a,l),l=d.value,u=!1,f=!1):(l+=d.value,f=!1):(l+=d.value,f=d.isQuoted&&d.value==="");else if(d.mixedDefaultParts){let p=await su(e,d.mixedDefaultParts,n,r,s);if(p.length!==0)if(p.length===1)l+=p[0],c=!0;else{l+=p[0],Fe(e,a,l),c=!0;for(let h=1;h<p.length-1;h++)Fe(e,a,p[h]);l=p[p.length-1]}u=!1,f=!1}else{let{words:p,hadLeadingDelimiter:h,hadTrailingDelimiter:m}=ds(d.value,n,e.limits.maxArrayElements);if(f&&h&&l===""&&(Fe(e,a,""),c=!0),p.length===0)m&&(u=!0);else if(p.length===1)l+=p[0],c=!0,u=m;else{l+=p[0],Fe(e,a,l),c=!0;for(let E=1;E<p.length-1;E++)Fe(e,a,p[E]);l=p[p.length-1],u=m}f=!1}return l!==""?Fe(e,a,l):a.length===0&&c&&Fe(e,a,""),a}function mh(e,t){return e.length>0&&t.includes(e[0])}async function su(e,t,n,r,s){let i=[];for(let u of t){let d=!(u.type==="DoubleQuoted"||u.type==="SingleQuoted"),p=await s(e,u);i.push({value:p,isSplittable:d})}let o=[],a="",l=!1,c=!1;for(let u of i)if(!u.isSplittable)c&&u.value!==""?(a!==""&&Fe(e,o,a),a=u.value,c=!1):a+=u.value;else{mh(u.value,n)&&a!==""&&(Fe(e,o,a),a="",l=!0);let{words:d,hadTrailingDelimiter:p}=ds(u.value,n,e.limits.maxArrayElements);if(d.length===0)p&&(c=!0);else if(d.length===1)a+=d[0],l=!0,c=p;else{a+=d[0],Fe(e,o,a),l=!0;for(let h=1;h<d.length-1;h++)Fe(e,o,d[h]);a=d[d.length-1],c=p}}return a!==""?Fe(e,o,a):o.length===0&&l&&Fe(e,o,""),o}function au(e){switch(e.type){case"Literal":return e.value;case"SingleQuoted":return e.value;case"Escaped":return e.value;default:return null}}function lu(e){switch(e.type){case"SingleQuoted":case"Escaped":case"DoubleQuoted":return!0;case"Literal":return e.value==="";default:return!1}}var fn=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new nt,t?.mounts)for(let{mountPoint:n,filesystem:r}of t.mounts)this.mount(n,r)}mount(t,n){this.validateMountPath(t);let r=V(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:n})}unmount(t){let n=V(t);if(!this.mounts.has(n))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(n)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let n=V(t);return this.mounts.has(n)}validateMountPath(t){let n=t.split("/");for(let r of n)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 n of this.mounts.keys())if(n!==t){if(t.startsWith(`${n}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${n}'`);if(n.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${n}'`)}}routePath(t){z(t,"access");let n=V(t),r=null,s=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(n===o)return{fs:i.filesystem,relativePath:"/"};n.startsWith(`${o}/`)&&o.length>s&&(r=i,s=o.length)}if(r){let i=n.slice(s);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:n}}getChildMountPoints(t){let n=V(t),r=n==="/"?"/":`${n}/`,s=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!s.includes(a)&&s.push(a)}return s}async readFile(t,n){let{fs:r,relativePath:s}=this.routePath(t);return r.readFile(s,n)}async readFileBytes(t){let{fs:n,relativePath:r}=this.routePath(t);return Wn(n,r)}async readFileBuffer(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readFileBuffer(r)}async writeFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.writeFile(i,n,r)}async appendFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.appendFile(i,n,r)}async exists(t){let n=V(t);if(this.mounts.has(n)||this.getChildMountPoints(n).length>0)return!0;let{fs:s,relativePath:i}=this.routePath(t);return s.exists(i)}async stat(t){let n=V(t),r=this.mounts.get(n);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(n).length>0)try{return await this.baseFs.stat(n)}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 n=V(t),r=this.mounts.get(n);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(n).length>0)try{return await this.baseFs.lstat(n)}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,n){let r=V(t);if(this.mounts.has(r)){if(n?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&n?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,n)}async readdir(t){let n=V(t),r=new Set,s=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;s=l}let a=this.getChildMountPoints(n);for(let l of a)r.add(l);if(r.size===0&&s&&!this.mounts.has(n))throw s;return Array.from(r).sort()}async rm(t,n){let r=V(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,n)}async cp(t,n,r){if((await this.stat(t)).isDirectory&&Bt(t,n))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);let i=this.routePath(t),o=this.routePath(n);return i.fs===o.fs?i.fs.cp(i.relativePath,o.relativePath,r):this.crossMountCopy(t,n,r)}async mv(t,n){let r=V(t);if((await this.stat(t)).isDirectory&&Bt(t,n))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let i=this.routePath(t),o=this.routePath(n);if(i.fs===o.fs)return i.fs.mv(i.relativePath,o.relativePath);await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return Yt(t,n)}getAllPaths(){let t=new Set;for(let n of this.baseFs.getAllPaths())t.add(n);for(let n of this.mounts.keys()){let r=n.split("/").filter(Boolean),s="";for(let o of r)s=`${s}/${o}`,t.add(s);let i=this.mounts.get(n);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(n):t.add(`${n}${o}`)}return Array.from(t).sort()}async chmod(t,n){let r=V(t),s=this.mounts.get(r);if(s)return s.filesystem.chmod("/",n);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,n)}async symlink(t,n){let{fs:r,relativePath:s}=this.routePath(n);return r.symlink(t,s)}async link(t,n){let r=this.routePath(t),s=this.routePath(n);if(r.fs!==s.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${n}'`);return r.fs.link(r.relativePath,s.relativePath)}async readlink(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readlink(r)}async realpath(t){let n=V(t);if(this.mounts.get(n))return n;let{fs:s,relativePath:i}=this.routePath(t),o=await s.realpath(i);for(let[a,l]of this.mounts)if(n===a||n.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,n,r){let s=await this.lstat(t);if(s.isFile){let i=await this.readFileBuffer(t);await this.writeFile(n,i),await this.chmod(n,s.mode)}else if(s.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(n,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=Wt(t,o),l=Wt(n,o);await this.crossMountCopy(a,l,r)}}else if(s.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,n)}}async utimes(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.utimes(i,n,r)}};var vs="/dev/fd",uu=63,yh=10,cu=uu-yh+1,lo=class extends nt{isLiveDescriptor;constructor(t){super(),this.isLiveDescriptor=t}assertLiveDescriptor(t,n){this.isLiveDescriptor(t)||this.refuse(t,n)}refuse(t,n){throw new Error(`EROFS: read-only file system, ${n} '${vs}${t}'`)}async writeFile(t,n,r){return this.assertLiveDescriptor(t,"write"),super.writeFile(t,n,r)}async appendFile(t,n,r){return this.assertLiveDescriptor(t,"append"),super.appendFile(t,n,r)}async rm(t,n){return this.assertLiveDescriptor(t,"rm"),super.rm(t,n)}async mkdir(t,n){this.refuse(t,"mkdir")}async cp(t,n){this.refuse(n,"cp")}async mv(t,n){this.refuse(n,"mv")}async symlink(t,n){this.refuse(n,"symlink")}async link(t,n){this.refuse(n,"link")}async chmod(t,n){this.refuse(t,"chmod")}async utimes(t,n,r){this.refuse(t,"utimes")}};function gh(e){let t=new lo(n=>fu(e).some(r=>r.path===`${vs}${n}`));e.fs=new fn({base:e.fs,mounts:[{mountPoint:vs,filesystem:t}]}),e.state.processSubstitutionFsMounted=!0}async function wh(e,t,n){try{await e.fs.writeFile(t,n,"binary");return}catch(r){if(e.state.processSubstitutionFsMounted)throw r;gh(e)}await e.fs.writeFile(t,n,"binary")}async function Eh(e,t){try{await e.fs.rm(t,{force:!0})}catch{}}function fu(e){let t=e.state.processSubstitutions;if(t)return t;let n=[];return e.state.processSubstitutions=n,n}async function du(e,t,n){let r=e.substitutionDepth??0,s=e.limits.maxSubstitutionDepth;if(r>=s)throw new $(`Process substitution nesting limit exceeded (${s})`,"substitution_depth");let i=e.substitutionDepth,o=new Map(e.state.env),a=ut(e.state.arrays),l=e.state.cwd,c=e.state.bashPid,u=e.state.suppressVerbose,f=e.state.groupStdin,d=e.state.lastExitCode,p=e.state.env.get("?");e.substitutionDepth=r+1,e.state.bashPid=e.state.nextVirtualPid++,e.state.suppressVerbose=!0,n!==void 0&&(e.state.groupStdin=n);let h;try{h=await e.executeScript(t)}catch(m){if(m instanceof $)throw m;if(m instanceof q)return{stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode};throw m}finally{e.substitutionDepth=i,e.state.env=o,e.state.arrays=a,e.state.cwd=l,e.state.bashPid=c,e.state.suppressVerbose=u,e.state.groupStdin=f,e.state.lastExitCode=d,p!==void 0?e.state.env.set("?",p):e.state.env.delete("?")}return h}async function pu(e,t){let n=fu(e);if(n.length>=cu)throw new $(`Process substitution limit exceeded (${cu} concurrent)`,"file_descriptors");let r="";if(t.direction==="input"){let o=await du(e,t.body,void 0);if(o.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+o.stderr),r=Ft(o),r.length>e.limits.maxStringLength)throw new $(`process substitution: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")}let s=uu-n.length,i=`${vs}/${s}`;n.push({fd:s,path:i,direction:t.direction,body:t.body});try{await wh(e,i,r)}catch(o){throw n.pop(),o}return i}function hu(e){return e.state.processSubstitutions?.length??0}var bh={stdout:"",stderr:""};async function co(e,t){let n=e.state.processSubstitutions;if(!n||n.length<=t)return bh;let r="",s="";for(;n.length>t;){let i=n[n.length-1],o="";if(i.direction==="output")try{o=await Wn(e.fs,i.path)}catch{}if(await Eh(e,i.path),n.pop(),i.direction==="output"){let a=await du(e,i.body,o);r+=Ft(a),s+=a.stderr}}return{stdout:r,stderr:s}}function dn(e,t,n){if(e.length>t)throw new $(`${n}: string length limit exceeded (${t} bytes)`,"string_length")}async function At(e,t,n=!1){let r=[];for(let s of t)r.push(await it(e,s,n));return r.join("")}function Sh(e){return lu(e)}function yu(e){if(e.parts.length===0)return!0;for(let t of e.parts)if(!Sh(t))return!1;return!0}function vh(e,t,n=!1){let r=au(t);if(r!==null)return r;switch(t.type){case"TildeExpansion":return n?t.user===null?"~":`~${t.user}`:(e.coverage?.hit("bash:expansion:tilde"),t.user===null?e.state.env.get("HOME")??"/home/user":t.user==="root"?"/root":`~${t.user}`);case"Glob":return so(e,t.pattern);default:return null}}async function oe(e,t){return fo(e,t)}async function gu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped")n.push(Hn(r.value));else if(r.type==="SingleQuoted")n.push(r.value);else if(r.type==="DoubleQuoted"){let s=await At(e,r.parts);n.push(s)}else if(r.type==="TildeExpansion"){let s=await it(e,r);n.push(Hn(s))}else n.push(await it(e,r));return n.join("")}async function wu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped"){let s=r.value;"()|*?[]".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="SingleQuoted")n.push(st(r.value));else if(r.type==="DoubleQuoted"){let s=await At(e,r.parts);n.push(st(s))}else n.push(await it(e,r));return n.join("")}async function Eu(e,t){let n=[];for(let r of t.parts)if(r.type==="SingleQuoted")n.push(st(r.value));else if(r.type==="Escaped"){let s=r.value;"*?[]\\()|".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="DoubleQuoted"){let s=await At(e,r.parts);n.push(st(s))}else r.type==="Glob"?xc(r.pattern)?n.push(await Cc(e,r.pattern)):n.push(so(e,r.pattern)):r.type==="Literal"?n.push(r.value):n.push(await it(e,r));return n.join("")}function ks(e){for(let t of e)if(t.type==="BraceExpansion"||t.type==="DoubleQuoted"&&ks(t.parts))return!0;return!1}var mu=1e5;async function bu(e,t,n={count:0}){let r=()=>{n.count++,e.executionScope.consumeLimited("brace_operations",1,Math.min(mu,e.limits.maxBraceExpansionResults),"brace expansion")},s=(o,a)=>{if(o.length>=e.limits.maxBraceExpansionResults)throw new $(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),o.push(a)},i=[[]];for(let o of t)if(o.type==="BraceExpansion"){let a=[],l=!1,c="";for(let d of o.items)if(d.type==="Range"){let p=no(d.start,d.end,d.step,d.startStr,d.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(p.expanded)for(let h of p.expanded)s(a,h);else{l=!0,c=p.literal;break}}else{let p=await bu(e,d.word.parts,n);for(let h of p){let m=[];for(let E of h)typeof E=="string"?m.push(E):m.push(await it(e,E));s(a,m.join(""))}}if(l){for(let d of i)r(),d.push(c);continue}if(i.length*a.length>e.limits.maxBraceExpansionResults||n.count>mu)throw new $(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");let f=[];for(let d of i)for(let p of a){if(f.length>=e.limits.maxBraceExpansionResults)throw new $(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),f.push([...d,p])}i=f}else for(let a of i)r(),a.push(o);return i}async function Su(e,t){let n=t.parts;if(!ks(n))return[await oe(e,t)];let r=await bu(e,n),s=[];for(let i of r){let o=[];for(let a of i)typeof a=="string"?o.push(a):o.push(await it(e,a));s.push(io(e,o.join("")))}return s}function Ah(){return{expandWordAsync:fo,expandWordForGlobbing:Eu,expandWordWithBracesAsync:Su,expandWordPartsAsync:At,expandPart:it,expandParameterAsync:As,hasBraceExpansion:ks,evaluateArithmetic:J,buildIfsCharClassPattern:rc,smartWordSplit:ou}}async function kt(e,t){return ru(e,t,Ah())}function kh(e){for(let t of e){if(t.type==="ParameterExpansion")return t.parameter;if(t.type==="Literal")return t.value}return""}function uo(e,t){if(Number.parseInt(e.state.env.get("#")||"0",10)<2)return!1;function r(s){for(let i of s)if(i.type==="DoubleQuoted"){for(let o of i.parts)if(o.type==="ParameterExpansion"&&o.parameter==="@"&&!o.operation)return!0}return!1}return r(t.parts)}async function vu(e,t){if(uo(e,t))return{error:`bash: $@: ambiguous redirect
107
+ `};let n=t.parts,{hasQuoted:r}=br(n);if(ks(n)&&(await Su(e,t)).length>1)return{error:`bash: ${n.map(p=>p.type==="Literal"?p.value:p.type==="BraceExpansion"?`{${p.items.map(m=>{if(m.type==="Range"){let E=m.step?`..${m.step}`:"";return`${m.startStr??m.start}..${m.endStr??m.end}${E}`}return m.word.parts.map(E=>E.type==="Literal"?E.value:"").join("")}).join(",")}}`:"").join("")}: ambiguous redirect
108
+ `};let s=await fo(e,t),{hasParamExpansion:i,hasCommandSub:o}=br(n);if((i||o)&&!r&&!Oe(e.state.env)){let f=ke(e.state.env);if(pe(s,f,e.limits.maxArrayElements).length>1)return{error:`bash: $${kh(n)}: ambiguous redirect
109
+ `}}if(r||e.state.options.noglob||n.some(f=>f.type==="ProcessSubstitution"))return{target:s};let l=await Eu(e,t);if(!Ot(l,e.state.shoptOptions.extglob))return{target:s};let c=new an(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),u=await c.expand(l);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${s}
110
+ `}:{target:s}:u.length===1?{target:u[0]}:{error:`bash: ${s}: ambiguous redirect
111
+ `}}async function fo(e,t){let n=t.parts,r=n.length;if(r===1){let o=await it(e,n[0]);return dn(o,e.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await it(e,n[o]));let i=s.join("");return dn(i,e.limits.maxStringLength,"word expansion"),i}async function it(e,t,n=!1){if(t.type==="ParameterExpansion")return As(e,t,n);let r=vh(e,t,n);if(r!==null)return r;switch(t.type){case"DoubleQuoted":{let s=[];for(let i of t.parts)s.push(await it(e,i,!0));return s.join("")}case"CommandSubstitution":{let s=uc(t.body);if(s)try{let p=await oe(e,s.target),h=p.startsWith("/")?p:`${e.state.cwd}/${p}`,m=await e.fs.readFile(h);e.state.lastExitCode=0,e.state.env.set("?","0");let E=m.replace(/\n+$/,"");return dn(E,e.limits.maxStringLength,"command substitution"),E}catch(p){if(p instanceof $)throw p;return e.state.lastExitCode=1,e.state.env.set("?","1"),""}let i=e.substitutionDepth??0,o=e.limits.maxSubstitutionDepth;if(i>=o)throw new $(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=e.substitutionDepth;e.substitutionDepth=i+1;let l=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=ut(e.state.arrays),f=e.state.cwd,d=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let p=await e.executeScript(t.body),h=p.exitCode;e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.suppressVerbose=d,e.state.lastExitCode=h,e.state.env.set("?",String(h)),p.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+p.stderr),e.state.bashPid=l,e.substitutionDepth=a;let m=p.stdout.replace(/\n+$/,"");return dn(m,e.limits.maxStringLength,"command substitution"),m}catch(p){if(e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.bashPid=l,e.substitutionDepth=a,e.state.suppressVerbose=d,p instanceof $)throw p;if(p instanceof q){e.state.lastExitCode=p.exitCode,e.state.env.set("?",String(p.exitCode)),p.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+p.stderr);let h=p.stdout.replace(/\n+$/,"");return dn(h,e.limits.maxStringLength,"command substitution"),h}throw p}}case"ProcessSubstitution":return pu(e,t);case"ArithmeticExpansion":{let s=t.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await cc(e,s),a=new Z,l=ie(a,o);return String(await J(e,l.expression,!0))}return String(await J(e,t.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of t.items)if(i.type==="Range"){let o=no(i.start,i.end,i.step,i.startStr,i.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await oe(e,i.word));return s.join(" ")}default:return""}}async function As(e,t,n=!1){let{parameter:r}=t,{operation:s}=t,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,d,p]=i;if(e.state.associativeArrays?.has(d)||p.includes("$(")||p.includes("`")||p.includes("${")){let m=await eo(e,p);r=`${d}[${m}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&fe(e,r)){let d=Ue(e,r);if(d&&d!==r){let p=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(p){let[,h,m]=p;if(e.state.associativeArrays?.has(h)||m.includes("$(")||m.includes("`")||m.includes("${")){let S=await eo(e,m);r=`${h}[${S}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=await ae(e,r,!o);if(!s)return a;let l=!await Rt(e,r),{isEmpty:c,effectiveValue:u}=Pc(e,r,a,n),f={value:a,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return dc(e,s,f,At);case"AssignDefault":return pc(e,r,s,f,At);case"ErrorIfUnset":return hc(e,r,s,f,At);case"UseAlternative":return mc(e,s,f,At);case"PatternRemoval":{let d=await yc(e,a,s,At,it);return dn(d,e.limits.maxStringLength,"pattern removal"),d}case"PatternReplacement":{let d=await gc(e,a,s,At,it);return dn(d,e.limits.maxStringLength,"pattern replacement"),d}case"Length":return wc(e,r,a);case"LengthSliceError":throw new et(r);case"BadSubstitution":throw new et(s.text);case"Substring":return Ec(e,r,a,s);case"CaseModification":{let d=await bc(e,a,s,At,As);return dn(d,e.limits.maxStringLength,"case modification"),d}case"Transform":return Sc(e,r,a,l,s);case"Indirection":return vc(e,r,a,l,s,As,n);case"ArrayKeys":return Ac(e,s);case"VarNamePrefix":return kc(e,s);default:return a}}function ku(){return{visited:new Set,depth:0}}function Ph(e,t,n){switch(n){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new ue("division by 0");return Math.trunc(e/t);case"%":if(t===0)throw new ue("division by 0");return e%t;case"**":if(t<0)throw new ue("exponent less than 0");return e**t;case"<<":return e<<t;case">>":return e>>t;case"<":return e<t?1:0;case"<=":return e<=t?1:0;case">":return e>t?1:0;case">=":return e>=t?1:0;case"==":return e===t?1:0;case"!=":return e!==t?1:0;case"&":return e&t;case"|":return e|t;case"^":return e^t;case",":return t;default:return 0}}function Au(e,t,n){switch(n){case"=":return t;case"+=":return e+t;case"-=":return e-t;case"*=":return e*t;case"/=":return t!==0?Math.trunc(e/t):0;case"%=":return t!==0?e%t:0;case"<<=":return e<<t;case">>=":return e>>t;case"&=":return e&t;case"|=":return e|t;case"^=":return e^t;default:return t}}function xh(e,t){switch(t){case"-":return-e;case"+":return+e;case"!":return e===0?1:0;case"~":return~e;default:return e}}async function $h(e,t){let n=e.state.env.get(t);if(n!==void 0)return n;let r=ce(e,t,0);return r!==void 0?r:await ae(e,t)}async function Ch(e,t,n){if(!t)return 0;let r=Number.parseInt(t,10);if(!Number.isNaN(r)&&/^-?\d+$/.test(t.trim()))return r;let s=t.trim();if(!s)return 0;let i=new Z,{expr:o,pos:a}=Gn(i,s,0);if(a<s.length){let l=s.slice(a).trim(),c=l.split(/\s+/)[0]||l;throw new ue(`syntax error in expression (error token is "${c}")`,"","")}return await Kn(e,o,!1,n)}async function Ps(e,t,n,r){if(r.depth>100)throw new ue("maximum variable indirection depth exceeded");if(r.visited.has(t))throw new ue(`arithmetic variable cycle detected at ${t}`);r.visited.add(t),r.depth++;try{return await Ch(e,n,r)}finally{r.depth--,r.visited.delete(t)}}async function po(e,t,n){if(n.depth>100)throw new ue("maximum variable indirection depth exceeded");if(n.visited.has(t))throw new ue(`arithmetic variable cycle detected at ${t}`);n.visited.add(t),n.depth++;try{let r=await $h(e,t);if(!r)return 0;let s=Number.parseInt(r,10);if(!Number.isNaN(s)&&/^-?\d+$/.test(r.trim()))return s;let i=r.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return await po(e,i,n);let o=new Z,{expr:a,pos:l}=Gn(o,i,0);if(l<i.length){let c=i.slice(l).trim(),u=c.split(/\s+/)[0]||c;throw new ue(`${i}: syntax error in expression (error token is "${u}")`)}return await Kn(e,a,!1,n)}finally{n.depth--,n.visited.delete(t)}}async function xs(e,t){if(t.startsWith("#")){let f=t.slice(1),d=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(d){let h=d[1],m=Q(e,h);return String(m.length)}let p=e.state.env.get(f)||"";return String(p.length)}if(t.startsWith("!")){let f=t.slice(1),d=e.state.env.get(f)||"";return e.state.env.get(d)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let d=t.indexOf(f);d>0&&(r===-1||d<r)&&(r=d,s=f)}if(r===-1)return await ae(e,t);let i=t.slice(0,r),o=t.slice(r+s.length),a=e.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(e.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function J(e,t,n=!1){return Kn(e,t,n,ku())}async function Kn(e,t,n,r){let s=(i,o=n)=>Kn(e,i,o,r);switch(t.type){case"ArithNumber":if(Number.isNaN(t.value))throw new ue("value too great for base");return t.value;case"ArithVariable":return await po(e,t.name,r);case"ArithSpecialVar":{let o=(await ae(e,t.name)).trim();if(!o)return 0;let a=Number.parseInt(o,10);if(!Number.isNaN(a)&&/^-?\d+$/.test(o))return a;let l=new Z,{expr:c}=Gn(l,o,0);return await s(c)}case"ArithNested":return await s(t.expression);case"ArithCommandSubst":{if(e.execFn){let i=await e.execFn(t.command,{signal:e.state.signal});i.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+i.stderr);let o=i.stdout.trim();return Number.parseInt(o,10)||0}return 0}case"ArithBracedExpansion":{let i=await xs(e,t.content);return Number.parseInt(i,10)||0}case"ArithDynamicBase":{let i=await xs(e,t.baseExpr),o=Number.parseInt(i,10);if(o<2||o>64)return 0;let a=`${o}#${t.value}`;return mr(a)}case"ArithDynamicNumber":{let o=await xs(e,t.prefix)+t.suffix;return mr(o)}case"ArithArrayElement":{let i=e.state.associativeArrays?.has(t.array),o=async a=>{let l=ce(e,t.array,a);return l!==void 0?await Ps(e,`${t.array}[${a}]`,l,r):0};if(t.stringKey!==void 0)return await o(t.stringKey);if(i&&t.index?.type==="ArithVariable"&&!t.index.hasDollarPrefix)return await o(t.index.name);if(i&&t.index?.type==="ArithVariable"&&t.index.hasDollarPrefix){let a=await ae(e,t.index.name);return await o(a)}if(t.index){let a=await s(t.index);if(a<0){let u=Q(e,t.array),f=e.state.currentLine;if(u.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
112
+ `,0;let p=Math.max(...u.map(([h])=>typeof h=="number"?h:0))+1+a;if(p<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
113
+ `,0;a=p}let l=`${t.array}[${a}]`,c=ce(e,t.array,a);if(c!==void 0)return Ps(e,l,c,r);if(a===0){let u=e.state.env.get(t.array);if(u!==void 0)return Ps(e,t.array,u,r)}if(e.state.options.nounset&&!(e.state.env.has(t.array)||Ne(e,t.array)))throw new Ge(`${t.array}[${a}]`);return 0}return 0}case"ArithDoubleSubscript":throw new ue("double subscript","","");case"ArithNumberSubscript":throw new ue(`${t.number}${t.errorToken}: syntax error: invalid arithmetic operator (error token is "${t.errorToken}")`);case"ArithSyntaxError":throw new ue(t.message,"","",!0);case"ArithSingleQuote":{if(n)throw new ue(`syntax error: operand expected (error token is "'${t.content}'")`);return t.value}case"ArithBinary":{if(t.operator==="||")return await s(t.left)||await s(t.right)?1:0;if(t.operator==="&&")return await s(t.left)&&await s(t.right)?1:0;let i=await s(t.left),o=await s(t.right);return Ph(i,o,t.operator)}case"ArithUnary":{let i=await s(t.operand);if(t.operator==="++"||t.operator==="--"){if(t.operand.type==="ArithVariable"){let o=t.operand.name,a=Number.parseInt(await ae(e,o),10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}if(t.operand.type==="ArithArrayElement"){let o=t.operand.array,a=e.state.associativeArrays?.has(o),l;if(t.operand.stringKey!==void 0)l=t.operand.stringKey;else if(a&&t.operand.index?.type==="ArithVariable"&&!t.operand.index.hasDollarPrefix)l=t.operand.index.name;else if(a&&t.operand.index?.type==="ArithVariable"&&t.operand.index.hasDollarPrefix)l=await ae(e,t.operand.index.name);else if(t.operand.index){let f=await s(t.operand.index);l=String(f)}else return i;let c=Number.parseInt(ce(e,o,l)||"0",10)||0,u=t.operator==="++"?c+1:c-1;return G(e,o,l,String(u),a?"associative":"indexed"),t.prefix?u:c}if(t.operand.type==="ArithConcat"){let o="";for(let a of t.operand.parts)o+=await Qn(e,a,n,r);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}}if(t.operand.type==="ArithDynamicElement"){let o="";if(t.operand.nameExpr.type==="ArithConcat")for(let a of t.operand.nameExpr.parts)o+=await Qn(e,a,n,r);else t.operand.nameExpr.type==="ArithVariable"&&(o=t.operand.nameExpr.hasDollarPrefix?await ae(e,t.operand.nameExpr.name):t.operand.nameExpr.name);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=await s(t.operand.subscript),l=Number.parseInt(ce(e,o,a)||"0",10)||0,c=t.operator==="++"?l+1:l-1;return G(e,o,a,String(c)),t.prefix?c:l}}return i}return xh(i,t.operator)}case"ArithTernary":return await s(t.condition)?await s(t.consequent):await s(t.alternate);case"ArithAssignment":{let i=t.variable,o=i,a;if(t.stringKey!==void 0)a=t.stringKey;else if(t.subscript){let d=e.state.associativeArrays?.has(i);if(d&&t.subscript.type==="ArithVariable"&&!t.subscript.hasDollarPrefix)a=t.subscript.name;else if(d&&t.subscript.type==="ArithVariable"&&t.subscript.hasDollarPrefix)a=await ae(e,t.subscript.name)||"\\";else if(d){let p=await s(t.subscript);a=String(p)}else{let p=await s(t.subscript);if(p<0){let h=Q(e,i);h.length>0&&(p=Math.max(...h.map(([E])=>typeof E=="number"?E:0))+1+p)}a=String(p)}}let l=a===void 0?e.state.env.get(o):ce(e,i,a),c=Number.parseInt(l||"0",10)||0,u=await s(t.value),f=Au(c,u,t.operator);return a===void 0?e.state.env.set(o,String(f)):G(e,i,a,String(f),e.state.associativeArrays?.has(i)?"associative":"indexed"),f}case"ArithGroup":return await s(t.expression);case"ArithConcat":{let i="";for(let o of t.parts)i+=await Qn(e,o,n,r);return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)?await po(e,i,r):Number.parseInt(i,10)||0}case"ArithDynamicAssignment":{let i="";if(t.target.type==="ArithConcat")for(let u of t.target.parts)i+=await Qn(e,u,n,r);else t.target.type==="ArithVariable"&&(i=t.target.hasDollarPrefix?await ae(e,t.target.name):t.target.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=i;if(t.subscript){let u=await s(t.subscript);o=`${i}_${u}`}let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=await s(t.value),c=Au(a,l,t.operator);return e.state.env.set(o,String(c)),c}case"ArithDynamicElement":{let i="";if(t.nameExpr.type==="ArithConcat")for(let c of t.nameExpr.parts)i+=await Qn(e,c,n,r);else t.nameExpr.type==="ArithVariable"&&(i=t.nameExpr.hasDollarPrefix?await ae(e,t.nameExpr.name):t.nameExpr.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=await s(t.subscript),a=`${i}_${o}`,l=e.state.env.get(a);return l!==void 0?Ps(e,a,l,r):0}default:return 0}}async function Qn(e,t,n=!1,r=ku()){switch(t.type){case"ArithNumber":return String(t.value);case"ArithSingleQuote":return String(await Kn(e,t,n,r));case"ArithVariable":return t.hasDollarPrefix?await ae(e,t.name):t.name;case"ArithSpecialVar":return await ae(e,t.name);case"ArithBracedExpansion":return await xs(e,t.content);case"ArithCommandSubst":return e.execFn?(await e.execFn(t.command,{signal:e.state.signal})).stdout.trim():"0";case"ArithConcat":{let s="";for(let i of t.parts)s+=await Qn(e,i,n,r);return s}default:return String(await Kn(e,t,n,r))}}async function Pu(e,t){let n="",r=0;for(let v of t.parts){let k=v.type==="Literal"?v.value:"\0",A=B(k);if(A>e.limits.maxStringLength-r)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n+=k,r+=A}let s=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!s||!n.endsWith(")"))return null;let i=s[1],o=[],a=[],l=!1,c="",u=0,f=0,d=!1,p=!0,h=v=>{let k=B(v);if(k>e.limits.maxStringLength-f-u)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");c+=v,u+=k},m=(v,k=!1)=>{if(o.length>=e.limits.maxArrayElements)throw new $(`array assignment element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let A=B(v);if(A>e.limits.maxStringLength-f)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");o.push(v),a.push(k),f+=A},E=()=>{m(c,p),c="",u=0,d=!1,p=!0};for(let v of t.parts)if(v.type==="Literal"){let k=v.value;if(!l){let A=k.indexOf("=(");A!==-1&&(l=!0,k=k.slice(A+2))}if(l){k.endsWith(")")&&(k=k.slice(0,-1));for(let A of k)/\s/.test(A)?(c||d)&&E():h(A)}}else if(l)if(v.type==="BraceExpansion")if(/^\[.+\]=/.test(c))h(jn({type:"Word",parts:[v]}));else{(c||d)&&E();let A=await kt(e,{type:"Word",parts:[v]});for(let x of A.values)m(x)}else{(v.type==="SingleQuoted"||v.type==="DoubleQuoted"||v.type==="Escaped")&&(d=!0),p=!1;let k=await oe(e,{type:"Word",parts:[v]});h(k)}(c||d)&&E();let S=o.splice(0),g=a.splice(0);f=0;for(let v=0;v<S.length;v++){let k=S[v];if(!g[v]){m(k);continue}let A=k.match(/^(\[[^\]]+\]=)(.*)$/s);if(A){let x=un(e,A[2]);k=A[1]+x}if(k.includes("{")&&k.includes("}")){let x=new Z().parseWordFromString(k,!1,!1);if(x.parts.some(R=>R.type==="BraceExpansion")){let R=await kt(e,x);for(let P of R.values)m(P);continue}}m(k)}let y=[`${i}=(`],b=B(y[0]);for(let v=0;v<o.length;v++){let k=o[v],A;/^\[.+\]=/.test(k)?A=k:k===""?A="''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(k)&&!k.startsWith("'")&&!k.startsWith('"')?A=`'${k.replace(/'/g,"'\\''")}'`:A=k;let x=`${v>0?" ":""}${A}`,R=B(x);if(R+1>e.limits.maxStringLength-b)throw new $(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");y.push(x),b+=R}return y.push(")"),y.join("")}async function xu(e,t){let n=-1,r=-1,s=!1;for(let m=0;m<t.parts.length;m++){let E=t.parts[m];if(E.type==="Literal"){let S=E.value.indexOf("+=");if(S!==-1){let y=E.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)){n=m,r=S,s=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=S,s=!0;break}}let g=E.value.indexOf("=");if(g!==-1&&(g===0||E.value[g-1]!=="+")){let y=E.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=g;break}}}}if(n===-1)return null;let i=t.parts.slice(0,n),o=t.parts[n];if(o.type!=="Literal")return null;let a=s?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(n+1),f="";for(let m of i)f+=await oe(e,{type:"Word",parts:[m]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},p=d.parts.length>0?await oe(e,d):"";return`${f}${s?"+=":"="}${p}`}var Nh=["tar","yq","xan","sqlite3","python3","python"];function $u(e){return Nh.includes(e)}var re=Object.freeze({stdout:"",stderr:"",exitCode:0,internalStdinConsumed:0});function te(e=""){return{stdout:e,stderr:"",exitCode:0}}function T(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function L(e,t,n){return{stdout:e,stderr:t,exitCode:n}}function be(e){return{stdout:"",stderr:"",exitCode:e?0:1,internalStdinConsumed:0}}function pn(e,t,n="",r=""){throw new $(e,t,n,r)}function Cu(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new $(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function ho(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Kt;return re}if(t.length>1)throw new q(1,"",`bash: break: too many arguments
114
+ `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new q(128,"",`bash: break: ${t[0]}: numeric argument required
115
+ `);n=r}throw new Ye(n)}async function mo(e,t){let n,r=!1,s=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")s=!1,i++;else if(t[i]==="-P")s=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?n=e.state.env.get("HOME")||"/":o[0]==="-"?(n=e.state.previousDir,r=!0):n=o[0],!n.startsWith("/")&&!n.startsWith("./")&&!n.startsWith("../")&&n!=="."&&n!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(p=>p);for(let p of d){let h=p.startsWith("/")?`${p}/${n}`:`${e.state.cwd}/${p}/${n}`;try{if((await e.fs.stat(h)).isDirectory){n=h,r=!0;break}}catch{}}}}let l=(n.startsWith("/")?n:`${e.state.cwd}/${n}`).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 T(`bash: cd: ${n}: Not a directory
116
+ `)}catch{return T(`bash: cd: ${n}: No such file or directory
117
+ `)}}let u=c||"/";if(s)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),te(r?`${u}
118
+ `:"")}function yo(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Rh=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function $s(e){return Rh.includes(e)}async function Cs(e,t,n){let r=yo(e,n);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 Oh=["-nt","-ot","-ef"];function Ns(e){return Oh.includes(e)}async function Rs(e,t,n,r){let s=yo(e,n),i=yo(e,r);switch(t){case"-nt":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return o!==null&&(a===null||o.mtime>a.mtime)}case"-ot":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return a!==null&&(o===null||o.mtime<a.mtime)}case"-ef":try{let[o,a]=await Promise.all([e.fs.realpath(s),e.fs.realpath(i)]);if(o===a)return!0;let[l,c]=await Promise.all([e.fs.stat(s),e.fs.stat(i)]);return l.dev!==void 0&&l.ino!==void 0&&c.dev!==void 0&&c.ino!==void 0?l.dev===c.dev&&l.ino===c.ino:l.identity&&c.identity?l.identity===c.identity:!1}catch{return!1}default:return!1}}var Dh=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Os(e){return Dh.has(e)}function Ds(e,t,n){switch(e){case"-eq":return t===n;case"-ne":return t!==n;case"-lt":return t<n;case"-le":return t<=n;case"-gt":return t>n;case"-ge":return t>=n}}function Ar(e){return e==="="||e==="=="||e==="!="}function Is(e,t,n,r=!1,s=!1,i=!1,o=256){if(r){let l=Xn(t,n,s,i,o);return e==="!="?!l:l}if(s){let l=t.toLowerCase()===n.toLowerCase();return e==="!="?!l:l}let a=t===n;return e==="!="?!a:a}var Ih=new Set(["-z","-n"]);function Ts(e){return Ih.has(e)}function _s(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Ls(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let r=n[1],s=n[2];if(e.state.associativeArrays?.has(r)){let a=s;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)||""),nn(e,r,a)}let o;try{let a=new Z,l=ie(a,s);o=await J(e,l.expression)}catch{if(/^-?\d+$/.test(s))o=Number.parseInt(s,10);else{let a=e.state.env.get(s);o=a?Number.parseInt(a,10):0}}if(o<0){let a=Ae(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
119
+ `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
120
+ `,!1}return nn(e,r,o)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ct(e,t).length>0:Ae(e,t).length>0}async function hn(e,t){switch(t.type){case"CondBinary":{let n=await oe(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!=="=~"),s;if(t.operator==="=~")if(r){let i=await oe(e,t.right);s=Hn(i)}else s=await gu(e,t.right);else Ar(t.operator)&&!r?s=await wu(e,t.right):s=await oe(e,t.right);if(Ar(t.operator)){let i=e.state.shoptOptions.nocasematch;return Is(t.operator,n,s,!r,i,!0,e.limits.maxCallDepth)}if(Os(t.operator))return Ds(t.operator,await Ru(e,n),await Ru(e,s));if(Ns(t.operator))return Rs(e,t.operator,n,s);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Mh(s),l=ge(o,i?"i":"").match(n);if(Ee(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)G(e,"BASH_REMATCH",c,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return n<s;case">":return n>s;default:return!1}}case"CondUnary":{let n=await oe(e,t.operand);return $s(t.operator)?Cs(e,t.operator,n):Ts(t.operator)?_s(t.operator,n):t.operator==="-v"?await Ls(e,n):t.operator==="-o"?wo(e,n):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await oe(e,t.operand.expression.word)})`!=="":!await hn(e,t.operand);case"CondAnd":return await hn(e,t.left)?await hn(e,t.right):!1;case"CondOr":return await hn(e,t.left)?!0:await hn(e,t.right);case"CondGroup":return await hn(e,t.expression);case"CondWord":return await oe(e,t.word)!=="";default:return!1}}async function kr(e,t){if(t.length===0)return L("","",1);if(t.length===1)return be(!!t[0]);if(t.length===2){let r=t[0],s=t[1];return r==="("?T(`test: '(' without matching ')'
121
+ `,2):$s(r)?be(await Cs(e,r,s)):Ts(r)?be(_s(r,s)):r==="!"?be(!s):r==="-v"?be(await Ls(e,s)):r==="-o"?be(wo(e,s)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?T(`test: ${r}: unary operator expected
122
+ `,2):L("","",1)}if(t.length===3){let r=t[0],s=t[1],i=t[2];if(Ar(s))return be(Is(s,r,i));if(Os(s)){let o=Fs(r),a=Fs(i);return!o.valid||!a.valid?L("","",2):be(Ds(s,o.value,a.value))}if(Ns(s))return be(await Rs(e,s,r,i));switch(s){case"-a":return be(r!==""&&i!=="");case"-o":return be(r!==""||i!=="");case">":return be(r>i);case"<":return be(r<i)}if(r==="!"){let o=await kr(e,[s,i]);return L("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return be(s!=="")}if(t.length===4){if(t[0]==="!"){let r=await kr(e,t.slice(1));return L("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return kr(e,[t[1],t[2]])}let n=await Du(e,t,0);return n.pos<t.length?T(`test: too many arguments
123
+ `,2):be(n.value)}async function Du(e,t,n){return Th(e,t,n)}async function Th(e,t,n){let{value:r,pos:s}=await Nu(e,t,n);for(;t[s]==="-o";){let i=await Nu(e,t,s+1);r=r||i.value,s=i.pos}return{value:r,pos:s}}async function Nu(e,t,n){let{value:r,pos:s}=await go(e,t,n);for(;t[s]==="-a";){let i=await go(e,t,s+1);r=r&&i.value,s=i.pos}return{value:r,pos:s}}async function go(e,t,n){let r=e.executionScope.enterDepth("test_expression",e.limits.maxCallDepth,"test expression");try{if(t[n]==="!"){let{value:s,pos:i}=await go(e,t,n+1);return{value:!s,pos:i}}return _h(e,t,n)}finally{r.release()}}async function _h(e,t,n){let r=t[n];if(r==="("){let{value:i,pos:o}=await Du(e,t,n+1);return{value:i,pos:t[o]===")"?o+1:o}}let s=t[n+1];if(Ar(s)){let i=r,o=t[n+2]??"";return{value:Is(s,i,o),pos:n+3}}if(Os(s)){let i=Fs(r),o=Fs(t[n+2]??"0");return!i.valid||!o.valid?{value:!1,pos:n+3}:{value:Ds(s,i.value,o.value),pos:n+3}}if(Ns(s)){let i=r,o=t[n+2]??"";return{value:await Rs(e,s,i,o),pos:n+3}}if($s(r)){let i=t[n+1]??"";return{value:await Cs(e,r,i),pos:n+2}}if(Ts(r)){let i=t[n+1]??"";return{value:_s(r,i),pos:n+2}}if(r==="-v"){let i=t[n+1]??"";return{value:await Ls(e,i),pos:n+2}}if(r==="-o"){let i=t[n+1]??"";return{value:wo(e,i),pos:n+2}}return{value:r!==void 0&&r!=="",pos:n+1}}function Xn(e,t,n=!1,r=!1,s=256){r&&Lh(t,s);let i=`^${Iu(t,r)}$`;return ge(i,n?"is":"s").test(e)}function Lh(e,t){let n=0,r=[];for(let s=0;s<e.length;s++){if(e[s]==="\\"){s++;continue}if(e[s]==="("){let i=s>0&&"@*+?!".includes(e[s-1]);if(r.push(i),i&&n++,n>t)throw new $(`extglob maximum depth (${t}) exceeded`,"recursion")}else e[s]===")"&&r.length>0&&r.pop()&&n--}}function Iu(e,t){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=Tu(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=_u(o),l=a.map(u=>Iu(u,t)),c=l.length>0?l.join("|"):"(?:)";if(s==="@")n+=`(?:${c})`;else if(s==="*")n+=`(?:${c})*`;else if(s==="+")n+=`(?:${c})+`;else if(s==="?")n+=`(?:${c})?`;else if(s==="!")if(i<e.length-1){let f=a.map(p=>Lu(p,t));if(f.every(p=>p!==null)&&f.every(p=>p===f[0])&&f[0]!==null){let p=f[0];if(p===0)n+="(?:.+)";else{let h=[];p>0&&h.push(`.{0,${p-1}}`),h.push(`.{${p+1},}`),h.push(`(?!(?:${c})).{${p}}`),n+=`(?:${h.join("|")})`}}else n+=`(?:(?!(?:${c})).)*?`}else n+=`(?!(?:${c})$).*`;r=i;continue}}if(s==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?n+=`\\${i}`:n+=i,r++}else n+="\\\\";else if(s==="*")n+=".*";else if(s==="?")n+=".";else if(s==="["){let i=e.indexOf("]",r+1);i!==-1?(n+=e.slice(r,i+1),r=i):n+="\\["}else/[\\^$.|+(){}]/.test(s)?n+=`\\${s}`:n+=s}return n}function Tu(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function _u(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function Lu(e,t){let n=0,r=0;for(;r<e.length;){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=Tu(e,r+1);if(i!==-1){if(s==="@"){let o=e.slice(r+2,i),l=_u(o).map(c=>Lu(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){n+=l[0],r=i+1;continue}return null}return null}}if(s==="*")return null;if(s==="?"){n+=1,r++;continue}if(s==="["){let i=e.indexOf("]",r+1);if(i!==-1){n+=1,r=i+1;continue}n+=1,r++;continue}if(s==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}function wo(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 Ru(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 Ou(t);try{let n=new Z,r=ie(n,t);return await J(e,r.expression)}catch{return Ou(t)}}function Fh(e,t){let n=0;for(let r of e){let s;if(r>="0"&&r<="9")s=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")s=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")s=r.charCodeAt(0)-65+36;else if(r==="@")s=62;else if(r==="_")s=63;else return Number.NaN;if(s>=t)return Number.NaN;n=n*t+s}return n}function Ou(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 n,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let s=Number.parseInt(r[1],10);s>=2&&s<=64?n=Fh(r[2],s):n=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?n=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?n=Number.parseInt(e,8):n=Number.parseInt(e,10);return Number.isNaN(n)&&(n=0),t?-n:n}function Fs(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 n=Number.parseInt(e,10);return Number.isNaN(n)?{value:0,valid:!1}:{value:t?-n:n,valid:!0}}function Mh(e){let t="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length)t+=e[n]+e[n+1],n+=2;else if(e[n]==="["){let r=Bh(e,n);t+=r.converted,n=r.endIndex}else t+=e[n],n++;return t}function Bh(e,t){let n=t+1,r="[";n<e.length&&(e[n]==="^"||e[n]==="!")&&(r+="^",n++);let s=!1;n<e.length&&e[n]==="]"&&(s=!0,n++);let i=!1;n<e.length&&e[n]==="["&&n+1<e.length&&e[n+1]!==":"&&(i=!0,n++);let o="",a=!1;for(;n<e.length;){let l=e[n];if(l==="]"){a=!0,n++;break}if(l==="["&&n+1<e.length&&e[n+1]===":"){let c=e.indexOf(":]",n+2);if(c!==-1){let u=e.slice(n+2,c);o+=Wh(u),n=c+2;continue}}if(l==="["&&n+1<e.length){let c=e[n+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,n+2);if(f!==-1){let d=e.slice(n+2,f);o+=d,n=f+2;continue}}}if(l==="\\"&&n+1<e.length){o+=l+e[n+1],n+=2;continue}o+=l,n++}return a?(s&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:n}):{converted:"\\[",endIndex:t+1}}function Wh(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 Eo(e,t,n){if(n&&e.length>=n.maxElements)throw new $(`array element limit exceeded (${n.maxElements})`,"array_elements");e.push(t)}function jt(e,t){if(t&&B(e)>t.maxStringBytes)throw new $(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r="",s=!1,i=!1,o=!1,a=!1;for(let l of e){if(o){r+=l,o=!1,a=!0;continue}if(l==="\\"){o=!0;continue}if(l==="'"&&!i){s||(a=!0),s=!s;continue}if(l==='"'&&!s){i||(a=!0),i=!i;continue}if((l===" "||l===" "||l===`
124
+ `)&&!s&&!i){a&&(Eo(n,r,t),r="",a=!1);continue}r+=l,a=!0}return a&&Eo(n,r,t),n}function Ms(e,t){if(t&&B(e)>t.maxStringBytes)throw new $(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r++;if(r>=e.length)break;if(e[r]!=="["){r++;continue}r++;let s="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)s+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&e[r]!=="]"&&e[r]!=="=";)s+=e[r],r++;for(;r<e.length&&e[r]!=="]";)r++;if(e[r]==="]"&&r++,e[r]!=="=")continue;r++;let i="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)e[r]==="\\"&&r+1<e.length&&r++,i+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&!/\s/.test(e[r]);)i+=e[r],r++;Eo(n,[s,i],t)}return n}function Fu(e,t){let n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(n)return{name:n[1],isArray:!0,arrayElements:jt(n[2],t)};let r=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(r)return{name:r[1],isArray:!1,arrayIndex:r[2],value:r[3]};if(e.includes("=")){let s=e.indexOf("=");return{name:e.slice(0,s),isArray:!1,value:e.slice(s+1)}}return{name:e,isArray:!1}}async function Vh(e,t){try{let n=new Z,r=ie(n,t);return await J(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}async function Mu(e,t,n={}){let{name:r,isArray:s,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=n;if(c){let u=de(e,r);if(u)return u}if(s&&i){e.executionScope.consumeWork(i.length,"array assignment");let u=Pe(e,r),f=u?Ve(u):void 0,d=e.state.env.get(r);try{Ee(e,r);for(let p=0;p<i.length;p++)G(e,r,p,i[p]);e.state.env.delete(r)}catch(p){throw e.state.arrays??=new Map,f?e.state.arrays.set(r,f):e.state.arrays.delete(r),d===void 0?e.state.env.delete(r):e.state.env.set(r,d),p}}else if(a!==void 0&&o!==void 0){let u=await Vh(e,a);G(e,r,u,o)}else o!==void 0&&e.state.env.set(r,o);return l&&Ke(e,r),null}function mn(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function bo(e,t){return e.state.localVarDepth?.get(t)}function Bs(e,t){e.state.localVarDepth?.delete(t)}function Bu(e,t,n){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:n,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function Ws(e,t){let n=e.state.localVarStack?.get(t);if(!(!n||n.length===0))return n.pop()}function Wu(e,t){if(e.state.localVarStack)for(let[n,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(n)}}var So="__file__:",vo="__file_append__:",Po="__rw__:",Ao="__dupout__:",ko="__dupin__:",Se=3;function zh(e){let t=e.slice(Po.length),n=t.indexOf(":");if(n===-1)return null;let r=Number.parseInt(t.slice(0,n),10);if(Number.isNaN(r)||r<0)return null;let s=n+1,i=t.slice(s,s+r),o=t.slice(s+r+1),a=o.indexOf(":");if(a===-1)return null;let l=Number.parseInt(o.slice(0,a),10);return Number.isNaN(l)||l<0?null:{path:i,position:l,content:o.slice(a+1)}}function Vu(e,t){let n=Number.parseInt(e.slice(t.length),10);return Number.isNaN(n)?null:n}function Uh(e){if(e.startsWith(So))return{kind:"output",path:e.slice(So.length),append:!1};if(e.startsWith(vo))return{kind:"output",path:e.slice(vo.length),append:!0};if(e.startsWith(Po)){let t=zh(e);if(t)return{kind:"readwrite",...t}}if(e.startsWith(Ao)){let t=Vu(e,Ao);if(t!==null)return{kind:"dup-out",sourceFd:t}}if(e.startsWith(ko)){let t=Vu(e,ko);if(t!==null)return{kind:"dup-in",sourceFd:t}}return{kind:"input",content:e}}function xo(e){switch(e.kind){case"input":return e.content;case"output":return`${e.append?vo:So}${e.path}`;case"readwrite":return`${Po}${e.path.length}:${e.path}:${e.position}:${e.content}`;case"dup-out":return`${Ao}${e.sourceFd}`;case"dup-in":return`${ko}${e.sourceFd}`;case"closed":throw new Error("Closed descriptors have no table encoding")}}function jh(e){return e.state.fileDescriptors??=new Map,e.state.fileDescriptors}function qh(e,t,n){n?(e.state.inputFds??=new Set,e.state.inputFds.add(t)):e.state.inputFds?.delete(t)}function Yn(e,t){return e.state.fdAliases?.get(t)}function yn(e,t){return[...Yn(e,t)??[t]]}function zu(e,t){let n=Yn(e,t);if(n&&(n.delete(t),e.state.fdAliases?.delete(t),n.size<2))for(let r of n)e.state.fdAliases?.delete(r)}function $o(e,t,n){if(t===n)return;e.state.fdAliases??=new Map;let r=Yn(e,n)??new Set([n]);r.add(t);for(let s of r)e.state.fdAliases.set(s,r)}function Vs(e,t){return e.state.fileDescriptors?.get(t)}function ot(e,t){let n=Vs(e,t);if(n!==void 0)return e.state.inputFds?.has(t)?{kind:"input",content:n}:Uh(n)}function Tn(e,t){return e.state.fileDescriptors?.has(t)===!0}function Co(e,t,n,r){let s=jh(e);s.has(t)||Cu(e),s.set(t,n),qh(e,t,r)}function zs(e,t,n,r=!1){zu(e,t),Co(e,t,n,r)}function dt(e,t,n){zs(e,t,xo(n),n.kind==="input")}function It(e,t){e.state.fileDescriptors?.delete(t),e.state.inputFds?.delete(t),zu(e,t)}function Us(e,t,n){let r=Vs(e,n);return r===void 0?!1:(zs(e,t,r,e.state.inputFds?.has(n)===!0),$o(e,t,n),!0)}function No(e,t,n){let r=Vs(e,n);if(r===void 0)return!1;if(t===n)return!0;let s=e.state.inputFds?.has(n)===!0,i=[...Yn(e,n)??[]].filter(a=>a!==n);It(e,n),zs(e,t,r,s);let o=i.find(a=>Tn(e,a));return o!==void 0&&$o(e,t,o),!0}function js(e,t){let n=ot(e,t);if(n===void 0)return{error:"not-open"};switch(n.kind){case"input":return{content:n.content};case"readwrite":return{content:n.content.slice(n.position)};case"output":case"dup-out":return{error:"write-only"};case"dup-in":return{error:"not-open"};case"closed":return{error:"not-open"}}}function gn(e,t,n){let r=ot(e,t);if(r===void 0)return;let s;if(r.kind==="input")s={kind:"input",content:r.content.slice(n)};else if(r.kind==="readwrite")s={...r,position:r.position+n};else return;let i=xo(s),o=s.kind==="input";for(let a of Yn(e,t)??[t])Co(e,a,i,o)}async function Ro(e,t,n,r,s){if(t.kind==="output")return await e.fs.appendFile(t.path,r,s),!0;let o=n.map(u=>ot(e,u)).find(u=>u?.kind==="readwrite")??t;if(o.kind!=="readwrite")return!1;let a=o.content.slice(0,o.position)+r+o.content.slice(o.position+r.length),l={...o,position:o.position+r.length,content:a};await e.fs.writeFile(o.path,a,s);let c=xo(l);for(let u of n)Tn(e,u)&&Co(e,u,c,!1);return!0}function wn(e,t,n){if(t.has(n))return;let r=Yn(e,n);t.set(n,{raw:Vs(e,n),isInput:e.state.inputFds?.has(n)===!0,aliases:r?[...r].filter(s=>s!==n):[]})}function qs(e,t){let n=e.state.fileDescriptors;if(n)for(let[r,{raw:s,isInput:i,aliases:o}]of t){if(s===void 0){It(e,r);continue}zs(e,r,s,i);let a=o.find(l=>n.has(l));a!==void 0&&$o(e,r,a)}}function Oo(e){switch(e.operator){case"<":case"<>":case"<<":case"<<-":case"<<<":case"<&":return e.fd??0;case">":case">>":case">|":case">&":return e.fd??1;default:return null}}function Uu(e){if(e.fdVariable)return!1;let t=Oo(e);return t!==null&&t>=Se}async function Gh(e,t,n,r){try{if(!await e.fs.exists(t))return null;if((await e.fs.stat(t)).isDirectory)return`bash: ${n}: Is a directory
125
+ `;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&n!=="/dev/null")return`bash: ${n}: cannot overwrite existing file
126
+ `}catch{return`bash: ${n}: cannot open redirect target
127
+ `}return null}function ju(e){let n=Math.min(e.length,8192);for(let r=0;r<n;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}var Pr="scoped",Gu="bare",Hu="persistent",Hh=e=>new $(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors"),Zh=(e,t)=>Tn(e,t)||(e.state.fileDescriptors?.size??0)<e.limits.maxFileDescriptors,qu=e=>{let t=Math.max(e.state.nextFd??10,10);for(;Tn(e,t);)t+=1;return t},Gs=e=>{let t=e.endsWith("-"),n=t?e.slice(0,-1):e;return/^\d+$/.test(n)?{sourceFd:Number.parseInt(n,10),move:t}:null},Qh=(e,t,n)=>{let r=ot(e,t);return t<Se?r?{kind:"entry",entry:r,descriptors:yn(e,t)}:{kind:"standard",fd:t}:r?n?r.kind==="input"||r.kind==="readwrite"||r.kind==="dup-in"?{kind:"entry",entry:r,descriptors:yn(e,t)}:null:r.kind==="output"||r.kind==="readwrite"||r.kind==="dup-out"?{kind:"entry",entry:r,descriptors:yn(e,t)}:null:null};async function Jn(e,t,n,r,s=!0){let i=e.fs.resolvePath(e.state.cwd,t),o=await Gh(e,i,t,{checkNoclobber:!n,isClobber:r});if(o)return{error:L("",o,1)};if(t==="/dev/full")return{error:L("",`bash: /dev/full: No space left on device
128
+ `,1)};if(t==="/dev/stdout")return{entry:{kind:"dup-out",sourceFd:1}};if(t==="/dev/stderr")return{entry:{kind:"dup-out",sourceFd:2}};try{n?await e.fs.appendFile(i,"","binary"):await e.fs.writeFile(i,"","binary")}catch(a){if(!s)throw a;return{error:L("",`bash: ${t}: cannot open redirect target
129
+ `,1)}}return{entry:{kind:"output",path:i,append:n}}}async function Do(e,t,n){let r=e.fs.resolvePath(e.state.cwd,t);try{let s=await e.fs.readFile(r);return n?{entry:{kind:"readwrite",path:r,position:0,content:s}}:{entry:{kind:"input",content:s}}}catch{if(!n)return{error:L("",`bash: ${t}: No such file or directory
130
+ `,1)};try{return await e.fs.writeFile(r,"","binary"),{entry:{kind:"readwrite",path:r,position:0,content:""}}}catch{return{error:L("",`bash: ${t}: No such file or directory
131
+ `,1)}}}}var Kh=async(e,t)=>{let n=await oe(e,t.content);return t.stripTabs?n.split(`
132
+ `).map(r=>r.replace(/^\t+/,"")).join(`
133
+ `):n};async function Xh(e,t,n,r){let s=new Map,i=new Map,o=(g,y)=>e.state.closedStandardFds?.has(g)?{kind:"closed"}:ot(e,g)??y,a=new Map([[0,o(0,{kind:"dup-in",sourceFd:0})],[1,o(1,{kind:"dup-out",sourceFd:1})],[2,o(2,{kind:"dup-out",sourceFd:2})]]),l=r.numericSnapshot,c,u=-1,f=a.get(0);f?.kind==="input"?(c=f.content,u=0):f?.kind==="readwrite"&&(c=f.content.slice(f.position),u=0);let d=()=>({targets:s,dupSources:i,standardRoutes:a,stdin:c,stdinSourceFd:u,error:null}),p=async(g,y,b)=>{let v={...d(),error:await En(e,g,t.slice(0,y),s,i,a)};return b?{...v,errorCause:b}:v},h=async(g,y)=>{if(Zh(e,g))return null;let b=Hh(e);return p(L("",b.stderr,$.EXIT_CODE),y,b)},m=(g,y)=>{g!==null&&g<Se&&a.set(g,y),r.policy==="persistent"&&g!==null&&g<Se&&(e.state.closedStandardFds?.delete(g),dt(e,g,y))},E=(g,y)=>{a.set(g,y),wn(e,r.standardSnapshot,g),r.standardClosedSnapshot.has(g)||r.standardClosedSnapshot.set(g,e.state.closedStandardFds?.has(g)===!0),e.state.closedStandardFds?.delete(g),dt(e,g,y)},S=(g,y)=>{if(g<Se){let b=a.get(g);return b?.kind==="closed"?null:b?{kind:"entry",entry:b,descriptors:yn(e,g)}:{kind:"standard",fd:g}}return Qh(e,g,y)};for(let g=0;g<t.length;g++){let y=t[g],b=Oo(y);if(y.target.type==="HereDoc"){let A=await Kh(e,y.target);if(y.fdVariable){try{de(e,y.fdVariable)}catch(P){if(!(P instanceof q))throw P;return p(L(P.stdout,P.stderr,P.exitCode),g,P)}let x=qu(e),R=await h(x,g);if(R)return R;wn(e,r.fdVariableSnapshot,x),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable)),dt(e,x,{kind:"input",content:A}),e.state.env.set(y.fdVariable,String(x)),e.state.nextFd=x+1}else if(b!==null&&b>=Se){let x=await h(b,g);if(x)return x;wn(e,l,b),dt(e,b,{kind:"input",content:A})}else if(b===0||b===null)c=Ht(A),u=-1,m(b,{kind:"input",content:c});else{let x={kind:"input",content:A};r.policy==="persistent"?m(b,x):E(b,x)}continue}let v,k=y.operator===">&"||y.operator==="<&";if(k){if(uo(e,y.target))return p(L("",`bash: $@: ambiguous redirect
134
+ `,1),g);v=await oe(e,y.target)}else if(y.operator==="<<<")v=await oe(e,y.target);else{let A=await vu(e,y.target);if("error"in A)return p(L("",A.error,1),g);v=A.target}if(s.set(g,v),v.includes("\0"))return p(L("",`bash: ${v.replace(/\0/g,"")}: No such file or directory
135
+ `,1),g);if(y.fdVariable){try{de(e,y.fdVariable)}catch(O){if(!(O instanceof q))throw O;return p(L(O.stdout,O.stderr,O.exitCode),g,O)}if(k&&v==="-"){let O=Number.parseInt(e.state.env.get(y.fdVariable)??"",10);Number.isNaN(O)||(wn(e,r.fdVariableSnapshot,O),It(e,O));continue}let A=qu(e),x=k?Gs(v):null;if(x&&!S(x.sourceFd,y.operator==="<&"))return p(L("",`bash: ${x.sourceFd}: Bad file descriptor
136
+ `,1),g);if(!(x?.move===!0&&x.sourceFd>=Se)){let O=await h(A,g);if(O)return O}wn(e,r.fdVariableSnapshot,A),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable));let P,C;if(k){let O=x;if(O){let W=S(O.sourceFd,y.operator==="<&");if(!W)return p(L("",`bash: ${O.sourceFd}: Bad file descriptor
137
+ `,1),g);C=O,W.kind==="standard"?P={kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:W.fd}:O.sourceFd<Se&&(P=W.entry)}else{if(y.operator==="<&")return p(L("",`bash: ${v}: ambiguous redirect
138
+ `,1),g);let W=await Jn(e,v,!1,!1);if(W.error)return p(W.error,g);P=W.entry}}else if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let O=y.operator===">>"||y.operator==="&>>",W=await Jn(e,v,O,y.operator===">|");if(W.error)return p(W.error,g);P=W.entry}else if(y.operator==="<<<")P={kind:"input",content:`${v}
139
+ `};else if(y.operator==="<"||y.operator==="<>"){let O=await Do(e,v,y.operator==="<>");if(O.error)return p(O.error,g);P=O.entry}if(C&&C.sourceFd>=Se){if(!(C.move?No(e,A,C.sourceFd):Us(e,A,C.sourceFd)))return p(L("",`bash: ${C.sourceFd}: Bad file descriptor
140
+ `,1),g)}else P&&dt(e,A,P);C?.move&&C.sourceFd!==A&&C.sourceFd<Se&&It(e,C.sourceFd),e.state.env.set(y.fdVariable,String(A)),e.state.nextFd=A+1;continue}if(Uu(y)){let A=b;if(k&&v==="-"){wn(e,l,A),It(e,A);continue}let x=k?Gs(v):null;if(x&&!S(x.sourceFd,y.operator==="<&"))return p(L("",`bash: ${x.sourceFd}: Bad file descriptor
141
+ `,1),g);if(!(x?.move===!0&&x.sourceFd>=Se)){let P=await h(A,g);if(P)return P}if(wn(e,l,A),k){let P=x;if(!P){if(y.operator==="<&")return p(L("",`bash: ${v}: ambiguous redirect
142
+ `,1),g);let O=await Jn(e,v,!1,!1);if(O.error)return p(O.error,g);dt(e,A,O.entry);continue}let C=S(P.sourceFd,y.operator==="<&");if(!C)return p(L("",`bash: ${P.sourceFd}: Bad file descriptor
143
+ `,1),g);if(C.kind==="standard")dt(e,A,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:C.fd});else if(P.sourceFd<Se)dt(e,A,C.entry);else if(!(P.move?No(e,A,P.sourceFd):Us(e,A,P.sourceFd)))return p(L("",`bash: ${P.sourceFd}: Bad file descriptor
144
+ `,1),g);P.move&&P.sourceFd!==A&&P.sourceFd<Se&&It(e,P.sourceFd);continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"){let P=await Jn(e,v,y.operator===">>",y.operator===">|");if(P.error)return p(P.error,g);dt(e,A,P.entry)}else if(y.operator==="<<<")dt(e,A,{kind:"input",content:`${v}
145
+ `});else if(y.operator==="<"||y.operator==="<>"){let P=await Do(e,v,y.operator==="<>");if(P.error)return p(P.error,g);dt(e,A,P.entry)}continue}if(k){if(v==="-"){b===0&&(c="",u=-1),b!==null&&b<Se&&(a.set(b,{kind:"closed"}),r.policy==="persistent"&&(It(e,b),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(b)));continue}let A=Gs(v);if(!A){if(y.operator==="<&")return p(L("",`bash: ${v}: ambiguous redirect
146
+ `,1),g);let R=await Jn(e,v,!1,!1,!1);if(R.error)return p(R.error,g);let P=R.entry;i.set(g,{kind:"entry",entry:P,descriptors:[]}),y.fd==null?(m(1,P),m(2,P)):m(b,P);continue}let x=S(A.sourceFd,y.operator==="<&");if(!x)return p(L("",`bash: ${A.sourceFd}: Bad file descriptor
147
+ `,1),g);if(i.set(g,x),x.kind==="entry"&&r.policy==="persistent"&&b!==null&&b<Se&&A.sourceFd>=Se){if(!Us(e,b,A.sourceFd))return p(L("",`bash: ${A.sourceFd}: Bad file descriptor
148
+ `,1),g);a.set(b,ot(e,b)),e.state.closedStandardFds?.delete(b)}else x.kind==="standard"?m(b,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:x.fd}):m(b,x.entry);if(y.operator==="<&"&&b===0)if(x.kind==="standard")c=x.fd===0?n:"",u=-1;else if(x.entry.kind==="input"||x.entry.kind==="readwrite"){let R=A.sourceFd<Se&&!Tn(e,A.sourceFd)?{content:x.entry.kind==="input"?x.entry.content:x.entry.content.slice(x.entry.position)}:js(e,A.sourceFd);if("error"in R)return p(L("",`bash: ${A.sourceFd}: Bad file descriptor
149
+ `,1),g);c=R.content,u=Tn(e,A.sourceFd)?A.sourceFd:-1}else c=n,u=-1;A.move&&(A.sourceFd>=Se?It(e,A.sourceFd):(a.set(A.sourceFd,{kind:"closed"}),r.policy==="persistent"&&(It(e,A.sourceFd),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(A.sourceFd))));continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let A=await Jn(e,v,y.operator===">>"||y.operator==="&>>",y.operator===">|",!1);if(A.error)return p(A.error,g);let x=A.entry;y.operator==="&>"||y.operator==="&>>"?(m(1,x),m(2,x)):m(b,x);continue}if(y.operator==="<<<")c=Ht(`${v}
150
+ `),u=-1,m(b,{kind:"input",content:c});else if(y.operator==="<"){let A=e.fs.resolvePath(e.state.cwd,v);try{c=await Wn(e.fs,A),u=-1,m(b,{kind:"input",content:c})}catch{return p(L("",`bash: ${v}: No such file or directory
151
+ `,1),g)}}else if(y.operator==="<>"){let A=await Do(e,v,!0);if(A.error)return p(A.error,g);let x=A.entry;m(b,x),b===0&&x.kind==="readwrite"&&(c=x.content,u=-1)}}return d()}function er(e,t,n){let r={numericSnapshot:new Map,fdVariableSnapshot:new Map,standardSnapshot:new Map,standardClosedSnapshot:new Map,fdVariableEnv:new Map,nextFd:e.state.nextFd,policy:n},s=!1;return{prepare:(i="")=>Xh(e,t,i,r),finish:()=>{if(!s){if(s=!0,n!=="persistent"&&qs(e,r.numericSnapshot),n!=="persistent"){qs(e,r.standardSnapshot);for(let[i,o]of r.standardClosedSnapshot)o?(e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(i)):e.state.closedStandardFds?.delete(i)}if(n==="bare"){qs(e,r.fdVariableSnapshot);for(let[i,o]of r.fdVariableEnv)o===void 0?e.state.env.delete(i):e.state.env.set(i,o);e.state.nextFd=r.nextFd}}}}}function tr(e){if(!e.error)throw new Error("Expected a redirection error");if(e.errorCause)throw e.errorCause.stdout=e.error.stdout,e.errorCause.stderr=e.error.stderr,e.errorCause;return e.error}async function Io(e,t,n,r){let s=t instanceof q||t instanceof Le||t instanceof qe?t.exitCode:t instanceof $?$.EXIT_CODE:0,i=await En(e,L(t.stdout,t.stderr,s),n,r.targets,r.dupSources,r.standardRoutes);t.stdout=i.stdout,t.stderr=i.stderr,t.internalOutputAccounting=i.internalOutputAccounting??{stdout:B(i.stdout),stderr:B(i.stderr)}}async function at(e,t,n,r){let s=er(e,t,Pr),i;try{if(i=await s.prepare(n),i.error)return tr(i);let o=e.state.groupStdin,a=e.state.groupStdinSourceFd;i.stdin!==void 0&&(e.state.groupStdin=i.stdin,e.state.groupStdinSourceFd=i.stdinSourceFd);try{let l=await r(i);return await En(e,l,t,i.targets,i.dupSources,i.standardRoutes)}finally{i.stdin!==void 0&&(e.state.groupStdin=o,e.state.groupStdinSourceFd=a)}}catch(o){throw!(o instanceof Zt)||!i||await Io(e,o,t,i),o}finally{s.finish()}}async function En(e,t,n,r,s=new Map,i=new Map,o="bash",a=!1){n.length>0&&(t=e.executionScope.accountResult(t,"redirection"));let{stdout:l,stderr:c,exitCode:u}=t,d=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",p=b=>d,h={kind:"live-stdout"},m={kind:"live-stderr"},E=b=>{if(!b)return null;if(b.kind==="entry"){if(b.entry.kind==="dup-out"){if(b.entry.sourceFd===1)return{kind:"live-stdout"};if(b.entry.sourceFd===2)return{kind:"live-stderr"}}return b.entry.kind==="output"||b.entry.kind==="readwrite"?{kind:"descriptor",source:b}:null}return b.fd===1?h:b.fd===2?m:null},S=b=>{let v=i.get(b)??ot(e,b);return v?v.kind==="closed"?{kind:"invalid-output",fd:b}:v.kind==="input"||v.kind==="dup-in"?{kind:"invalid-output",fd:b}:v.kind==="dup-out"?v.sourceFd===1?{kind:"live-stdout"}:v.sourceFd===2?{kind:"live-stderr"}:null:v.kind==="output"||v.kind==="readwrite"?{kind:"descriptor",source:{kind:"entry",entry:v,descriptors:yn(e,b)}}:null:null};h=S(1)??h,m=S(2)??m;for(let b=0;b<n.length;b++){let v=n[b];if(v.target.type==="HereDoc"||v.fdVariable)continue;let k=r.get(b);if(k!==void 0)switch(v.operator){case">":case">|":case">>":{let A=v.fd??1;if(A!==1&&A!==2)break;let x=v.operator===">>";if(k==="/dev/stdout"){A===2&&(m=h);break}if(k==="/dev/stderr"){A===1&&(h=m);break}if(k==="/dev/full"){c+=`bash: echo: write error: No space left on device
152
+ `,u=1,A===1&&(l="");break}if(k==="/dev/null"&&A===2){m={kind:"discard"};break}let R=e.fs.resolvePath(e.state.cwd,k);A===1?h={kind:"file",path:R,append:x}:m={kind:"file",path:R,append:x};break}case">&":case"<&":{let A=v.fd??(v.operator==="<&"?0:1);if(A>=Se||A===0)break;if(k==="-"){A===1?h={kind:"discard"}:m={kind:"discard"};break}let x=E(s.get(b));if(!x)break;v.fd==null&&Gs(k)===null?(h=x,m=x):A===1?h=x:A===2&&(m=x);break}case"&>":{h={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!1},m=h;break}case"&>>":{h={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!0},m=h;break}}}if(l!==""||c!==""){let b=l,v=c;l="",c="",h.kind==="invalid-output"&&b!==""&&(b="",v+=`${a?"":"bash: "}${o}: write error: Bad file descriptor
153
+ `,u=1),m.kind==="invalid-output"&&(v="");let k=async(A,x,R)=>{A.append?await e.fs.appendFile(A.path,x,R):await e.fs.writeFile(A.path,x,R)};if(h===m&&(h.kind==="file"||h.kind==="descriptor")){let A=b+v;A!==""&&(h.kind==="file"?await k(h,A,p(A)):await Ro(e,h.source.entry,h.source.descriptors,A,p(A)))}else for(let[A,x,R]of[[b,h,!0],[v,m,!1]])if(A!=="")switch(x.kind){case"live-stdout":l+=A;break;case"live-stderr":c+=A;break;case"file":await k(x,A,R?p(A):ju(A));break;case"descriptor":await Ro(e,x.source.entry,x.source.descriptors,A,R?p(A):ju(A));break;case"invalid-output":break;case"discard":break}}let g=L(l,c,u);if(t.stdoutKind&&(g.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(g.stdoutEncoding="binary"),t.internalPipeStatusOverride&&(g.internalPipeStatusOverride=t.internalPipeStatusOverride),n.length>0||e.state.fileDescriptors?.has(1)===!0||e.state.fileDescriptors?.has(2)===!0){let b=(t.internalOutputAccounting?.stdout??0)+(t.internalOutputAccounting?.stderr??0),v=B(g.stdout),k=B(g.stderr),A=Math.min(v,b);g.internalOutputAccounting={stdout:A,stderr:Math.min(k,b-A)},e.executionScope.accountResult(g,"redirection")}else t.internalOutputAccounting&&(g.internalOutputAccounting=t.internalOutputAccounting);return g}function Zu(e,t){if(e.state.options.posix&&pr.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
154
+ `;throw new q(2,"",r)}let n={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,n),re}async function Hs(e,t,n,r="",s,i=!1){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,pn(`${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(s??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localArrayScopes??=[],e.state.localArrayScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let o=new Map,a=Number.parseInt(e.state.env.get("#")??"0",10),l=Math.max(n.length,a);for(let p=0;p<l;p++){let h=String(p+1);o.set(h,e.state.env.get(h)),p<n.length?e.state.env.set(h,n[p]):e.state.env.delete(h)}o.set("@",e.state.env.get("@")),o.set("#",e.state.env.get("#")),e.state.env.set("@",n.join(" ")),e.state.env.set("#",String(n.length));let c=!1,u=()=>{if(c)return;c=!0;let p=e.state.localScopes.length-1,h=e.state.localScopes.pop(),m=e.state.localArrayScopes?.pop();if(h)for(let[E,S]of h)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);if(m){e.state.arrays??=new Map;for(let[E,S]of m)S===void 0?(e.state.arrays.delete(E),e.state.associativeArrays?.delete(E)):(e.state.arrays.set(E,Ve(S)),e.state.associativeArrays??=new Set,S.kind==="associative"?e.state.associativeArrays.add(E):e.state.associativeArrays.delete(E))}if(Wu(e,p),e.state.fullyUnsetLocals)for(let[E,S]of e.state.fullyUnsetLocals.entries())S===p&&e.state.fullyUnsetLocals.delete(E);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let E=e.state.localExportedVars.pop();if(E)for(let S of E)e.state.exportedVars?.delete(S)}for(let[E,S]of o)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},f=null,d=er(e,t.redirections,Pr);try{if(f=await d.prepare(r),f.error)return tr(f);let p=f.stdin??r,h=i||f.stdin!==void 0||r!=="",m=await e.executeCommand(t.body,p,h);return En(e,m,t.redirections,f.targets,f.dupSources,f.standardRoutes)}catch(p){if(p instanceof Zt&&f&&(await Io(e,p,t.redirections,f),p instanceof Le))return L(p.stdout,p.stderr,p.exitCode);throw p}finally{d.finish(),u()}}var Ku=e=>e.type==="Escaped"?F.literal(`\\${e.value}`):e.type==="DoubleQuoted"?{...e,parts:e.parts.map(Ku)}:e,Xu=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],Lo=[".",":","[","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"],Yh=["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"],Jh=Lo;async function Fo(e,t){let n=[],r=null,s="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,p=[],h=["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 k=0;k<t.length;k++){let A=t[k];if(A==="-v")n.push("variable");else if(A==="-e")n.push("export");else if(A==="-f")n.push("file");else if(A==="-d")n.push("directory");else if(A==="-k")n.push("keyword");else if(A==="-A"){if(k++,k>=t.length)return T(`compgen: -A: option requires an argument
155
+ `,2);let x=t[k];if(!h.includes(x))return T(`compgen: ${x}: invalid action name
156
+ `,2);n.push(x)}else if(A==="-W"){if(k++,k>=t.length)return T(`compgen: -W: option requires an argument
157
+ `,2);r=t[k]}else if(A==="-P"){if(k++,k>=t.length)return T(`compgen: -P: option requires an argument
158
+ `,2);s=t[k]}else if(A==="-S"){if(k++,k>=t.length)return T(`compgen: -S: option requires an argument
159
+ `,2);i=t[k]}else if(A==="-o"){if(k++,k>=t.length)return T(`compgen: -o: option requires an argument
160
+ `,2);let x=t[k];if(x==="plusdirs")a=!0;else if(x==="dirnames")l=!0;else if(x==="default")c=!0;else if(!(x==="filenames"||x==="nospace"||x==="bashdefault"||x==="noquote"))return T(`compgen: ${x}: invalid option name
161
+ `,2)}else if(A==="-F"){if(k++,k>=t.length)return T(`compgen: -F: option requires an argument
162
+ `,2);f=t[k]}else if(A==="-C"){if(k++,k>=t.length)return T(`compgen: -C: option requires an argument
163
+ `,2);d=t[k]}else if(A==="-X"){if(k++,k>=t.length)return T(`compgen: -X: option requires an argument
164
+ `,2);u=t[k]}else if(A==="-G"){if(k++,k>=t.length)return T(`compgen: -G: option requires an argument
165
+ `,2)}else if(A==="--"){p.push(...t.slice(k+1));break}else A.startsWith("-")||p.push(A)}o=p[0]??null;let m=[],E=new Set,S=()=>e.limits.maxArrayElements-m.length,g=k=>{for(let A of k){if(m.length>=e.limits.maxArrayElements)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(A)>e.limits.maxStringLength)throw new $(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");e.executionScope.consumeWork(1,"compgen completion"),m.push(A),E.add(A)}};if(l){let k=await To(e,o,S());g(k)}if(c){let k=await Qu(e,o,S());g(k)}for(let k of n)if(k==="variable"){let A=em(e,o,S());g(A)}else if(k==="export"){let A=tm(e,o,S());g(A)}else if(k==="function"){let A=nm(e,o,S());g(A)}else if(k==="builtin"){let A=rm(e,o,S());g(A)}else if(k==="keyword"){let A=sm(e,o,S());g(A)}else if(k==="alias"){let A=im(e,o,S());g(A)}else if(k==="shopt"){let A=om(e,o,S());g(A)}else if(k==="helptopic"){let A=am(e,o,S());g(A)}else if(k==="directory"){let A=await To(e,o,S());g(A)}else if(k==="file"){let A=await Qu(e,o,S());g(A)}else if(k==="user"){let A=lm(e,o,S());g(A)}else if(k==="command"){let A=await cm(e,o,S());g(A)}if(r!==null)try{let k=await um(e,r),A=fm(e,k,S(),o);for(let x of A)g([x])}catch(k){if(k instanceof $)throw k;return L("","",1)}if(a){let k=await To(e,o,S(),E);for(let A of k)E.has(A)||g([A])}let y="";if(f!==null){let k=e.state.functions.get(f);if(k){let A=new Map,x=Pe(e,"COMP_WORDS"),R=x?Ve(x):void 0;Ee(e,"COMP_WORDS"),fr(e,"COMP_WORDS"),A.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),A.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),A.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let P=Pe(e,"COMPREPLY"),C=P?Ve(P):void 0,O=e.state.env.get("COMPREPLY");Ee(e,"COMPREPLY"),e.state.env.delete("COMPREPLY");let W=["compgen",p[0]??"",""];try{let K=await Hs(e,k,W,"");if(K.exitCode!==0)return _o(e,A),nr(e,"COMP_WORDS",R),nr(e,"COMPREPLY",C),O!==void 0&&e.state.env.set("COMPREPLY",O),L("",K.stderr,1);y=K.stdout;let N=dm(e,S());g(N)}catch(K){if(K instanceof $)throw K;return _o(e,A),nr(e,"COMP_WORDS",R),nr(e,"COMPREPLY",C),O!==void 0&&e.state.env.set("COMPREPLY",O),L("","",1)}_o(e,A),nr(e,"COMP_WORDS",R),nr(e,"COMPREPLY",C),O!==void 0&&e.state.env.set("COMPREPLY",O)}}if(d!==null)try{let k=ze(d),A=await e.executeScript(k);if(A.exitCode!==0)return L("",A.stderr,A.exitCode);if(A.stdout)for(let x of pm(A.stdout))x.length>0&&g([x])}catch(k){if(k.name==="ParseException")return T(`compgen: -C: ${k.message}
166
+ `,2);throw k}let b=m;if(u!==null){let k=u.startsWith("!"),A=k?u.slice(1):u;b=m.filter(x=>{let R=Xn(x,A,!1,!0,e.limits.maxCallDepth);return k?R:!R})}if(b.length===0&&o!==null)return L(y,"",1);let v=new Vn(e.limits.maxOutputSize,"compgen");v.append(y);for(let k of b)v.append(s).append(k).append(i).append(`
167
+ `);return te(v.build())}function em(e,t,n){let r=pt(e,t,n);for(let s of e.state.env.keys())/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&r.add(s);for(let s of e.state.arrays?.keys()??[])r.add(s);return r.build()}function tm(e,t,n){let r=pt(e,t,n),s=e.state.exportedVars??new Set;for(let i of s)e.state.env.has(i)&&r.add(i);return r.build()}function nm(e,t,n){let r=pt(e,t,n);for(let s of e.state.functions.keys())r.add(s);return r.build()}function rm(e,t,n){let r=pt(e,t,n);for(let s of Lo)r.add(s);return r.build()}function sm(e,t,n){let r=pt(e,t,n);for(let s of Xu)r.add(s);return r.build()}function im(e,t,n){let r=pt(e,t,n);for(let s of e.state.env.keys())if(s.startsWith("BASH_ALIAS_")){let i=s.slice(11);r.add(i)}return r.build()}function om(e,t,n){let r=pt(e,t,n);for(let s of Yh)r.add(s);return r.build()}function am(e,t,n){let r=pt(e,t,n);for(let s of Jh)r.add(s);return r.build()}async function To(e,t,n=e.limits.maxArrayElements,r){let s=pt(e,null,n,r);try{let i=e.state.cwd,o=t??"";if(t){let l=t.lastIndexOf("/");if(l!==-1){let c=t.slice(0,l)||"/";o=t.slice(l+1),c.startsWith("/")?i=c:i=`${e.state.cwd}/${c}`}}let a=await e.fs.readdir(i);for(let l of a){e.executionScope.consumeWork(1,"compgen directory scan");let c=`${i}/${l}`;try{if((await e.fs.stat(c)).isDirectory&&(!o||l.startsWith(o)))if(t?.includes("/")){let f=t.lastIndexOf("/"),d=t.slice(0,f+1);s.add(d+l)}else s.add(l)}catch(u){if(u instanceof $)throw u}}}catch(i){if(i instanceof $)throw i}return s.build()}async function Qu(e,t,n=e.limits.maxArrayElements){let r=pt(e,null,n);try{let s=e.state.cwd,i=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let l=t.slice(0,a)||"/";i=t.slice(a+1),l.startsWith("/")?s=l:s=`${e.state.cwd}/${l}`}}let o=await e.fs.readdir(s);for(let a of o)if(e.executionScope.consumeWork(1,"compgen file scan"),!i||a.startsWith(i))if(t?.includes("/")){let l=t.lastIndexOf("/"),c=t.slice(0,l+1);r.add(c+a)}else r.add(a)}catch(s){if(s instanceof $)throw s}return r.build()}function lm(e,t,n){let r=pt(e,t,n);return r.add("root"),r.add("nobody"),r.build()}async function cm(e,t,n){let r=pt(e,t,n);for(let i of Lo)r.add(i);for(let i of e.state.functions.keys())r.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&r.add(i.slice(11));for(let i of Xu)r.add(i);let s=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of s.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)r.add(a)}catch(o){if(o instanceof $)throw o}return r.build()}function pt(e,t,n,r){let s=new Set;return{add(i){if(e.executionScope.consumeWork(1,"compgen candidate collection"),!(t!==null&&!i.startsWith(t))&&!r?.has(i)&&!s.has(i)){if(s.size>=n)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(i)>e.limits.maxStringLength)throw new $(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");s.add(i)}},build(){return Array.from(s).sort()}}}async function um(e,t){let r=new Z().parseWordFromString(t,!1,!1);return await oe(e,F.word(r.parts.map(Ku)))}function fm(e,t,n,r){let s=e.state.env.get("IFS")??`
168
+ `;if(s.length===0){if(r!==null&&!t.startsWith(r))return[];if(n===0)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");return[t]}let i=new Set(s.split("")),o=[],a=u=>{if(!(r!==null&&!u.startsWith(r))){if(o.length>=n)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");o.push(u)}},l="",c=0;for(;c<t.length;){let u=t[c];if(u==="\\"&&c+1<t.length){let f=t[c+1];l+=f,c+=2}else i.has(u)?(l.length>0&&(a(l),l=""),c++):(l+=u,c++)}return l.length>0&&a(l),o}function _o(e,t){for(let[n,r]of t)r===void 0?e.state.env.delete(n):e.state.env.set(n,r)}function nr(e,t,n){e.state.arrays??=new Map,n?e.state.arrays.set(t,Ve(n)):e.state.arrays.delete(t)}function dm(e,t){let n=[],r=s=>{if(n.length>=t)throw new $(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");n.push(s)};if(Ne(e,"COMPREPLY")){let s=Q(e,"COMPREPLY");for(let[,i]of s)r(i)}else{let s=e.state.env.get("COMPREPLY");s!==void 0&&r(s)}return n}function*pm(e){let t=0;for(;t<=e.length;){let n=e.indexOf(`
169
+ `,t),r=n===-1?e.length:n;if(r>t&&(yield e.slice(t,r)),n===-1)return;t=n+1}}function xr(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===127)return!0}return!1}function Mo(e){let t="$'";for(let n=0;n<e.length;n++){let r=e[n],s=e.charCodeAt(n);s===7?t+="\\a":s===8?t+="\\b":s===9?t+="\\t":s===10?t+="\\n":s===11?t+="\\v":s===12?t+="\\f":s===13?t+="\\r":s===27?t+="\\e":s===39?t+="\\'":s===92?t+="\\\\":s<32||s===127?t+=`\\${s.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function Yu(e){if(xr(e))return Ju(e);if(e==="")return 2;if(/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e))return B(e);let t=B(e)+2;for(let n of e)n==="'"&&(t+=3);return t}function ve(e){return xr(e)?Mo(e):e===""?"''":/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Zs(e){if(xr(e))return Ju(e);let t=B(e)+2;for(let n of e)(n==="\\"||n==='"'||n==="$"||n==="`")&&t++;return t}function bn(e){return xr(e)?Mo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}function Ju(e){let t=3;for(let n of e){let r=n.codePointAt(0)??0;r===7||r===8||r===9||r===10||r===11||r===12||r===13||r===27||r===39||r===92?t+=2:r<32||r===127?t+=4:t+=B(n)}return t}function $r(e){return xr(e)?Mo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}var hm=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Wo(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")n=!0;else if(d==="-r")r=!0;else if(d==="-D")s=!0;else if(d==="-W"){if(f++,f>=t.length)return T(`complete: -W: option requires an argument
170
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return T(`complete: -F: option requires an argument
171
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return T(`complete: -o: option requires an argument
172
+ `,2);let p=t[f];if(!hm.includes(p))return T(`complete: ${p}: invalid option name
173
+ `,2);l.push(p)}else if(d==="-A"){if(f++,f>=t.length)return T(`complete: -A: option requires an argument
174
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return T(`complete: -C: option requires an argument
175
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return T(`complete: -G: option requires an argument
176
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return T(`complete: -P: option requires an argument
177
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return T(`complete: -S: option requires an argument
178
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return T(`complete: -X: option requires an argument
179
+ `,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(),e.state.defaultCompletionSpec=void 0,e.state.emptyCompletionSpec=void 0,te("");for(let f of u)e.state.completionSpecs.delete(f);return te("")}if(n)return u.length===0?Bo(e):Bo(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!s)return Bo(e);if(o&&u.length===0&&!s)return T(`complete: -F: option requires a command name
180
+ `,2);if(s){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.defaultCompletionSpec=f,te("")}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 te("")}function Bo(e,t){let n=e.state.completionSpecs??new Map;if(n.size===0&&!e.state.defaultCompletionSpec){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
181
+ `;return L("",i,1)}return te("")}let r=[],s=t||Array.from(n.keys());for(let i of s){let o=n.get(i);if(!o){if(t)return L(r.join(`
182
+ `)+(r.length>0?`
183
+ `:""),`complete: ${i}: no completion specification
184
+ `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${ve(l)}`;if(o.actions)for(let l of o.actions)a+=` -A ${ve(l)}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W ${ve(o.wordlist)}`:a+=` -W ${ve(o.wordlist)}`),o.function!==void 0&&(a+=` -F ${ve(o.function)}`),o.command!==void 0&&(a+=` -C ${ve(o.command)}`),o.isDefault&&(a+=" -D"),a+=`${i.startsWith("-")?" -- ":" "}${ve(i)}`,r.push(a)}if(!t&&e.state.defaultCompletionSpec){let i=e.state.defaultCompletionSpec,o="complete";for(let a of i.options??[])o+=` -o ${ve(a)}`;for(let a of i.actions??[])o+=` -A ${ve(a)}`;i.wordlist!==void 0&&(o+=` -W ${ve(i.wordlist)}`),i.function!==void 0&&(o+=` -F ${ve(i.function)}`),i.command!==void 0&&(o+=` -C ${ve(i.command)}`),o+=" -D",r.push(o)}return r.length===0?te(""):te(`${r.join(`
185
+ `)}
186
+ `)}var ef=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Vo(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")n=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return T(`compopt: -o: option requires an argument
187
+ `,2);let c=t[a];if(!ef.includes(c))return T(`compopt: ${c}: invalid option name
188
+ `,2);s.push(c)}else if(l==="+o"){if(a++,a>=t.length)return T(`compopt: +o: option requires an argument
189
+ `,2);let c=t[a];if(!ef.includes(c))return T(`compopt: ${c}: invalid option name
190
+ `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(n){let a=e.state.defaultCompletionSpec??{isDefault:!0},l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.defaultCompletionSpec=a,te("")}if(r){let a=e.state.emptyCompletionSpec??Object.create(null),l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.emptyCompletionSpec=a,te("")}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 s)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 te("")}return T(`compopt: not currently executing completion function
191
+ `,1)}function zo(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Kt;return re}if(t.length>1)throw new q(1,"",`bash: continue: too many arguments
192
+ `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new q(1,"",`bash: continue: ${t[0]}: numeric argument required
193
+ `);n=r}throw new Je(n)}function tf(e,t){let n="";return e.state.integerVars?.has(t)&&(n+="i"),e.state.lowercaseVars?.has(t)&&(n+="l"),fe(e,t)&&(n+="n"),e.state.readonlyVars?.has(t)&&(n+="r"),e.state.uppercaseVars?.has(t)&&(n+="u"),e.state.exportedVars?.has(t)&&(n+="x"),n===""?"--":`-${n}`}function Uo(e){return ve(e)}function jo(e){return`'${e.replace(/'/g,"'\\''")}'`}function nf(e,t){let n="",r="",s=!1;for(let i of t){let o=tf(e,i);if(e.state.associativeArrays?.has(i)){let u=Ct(e,i);if(u.length===0)n+=`declare -A ${i}=()
194
+ `;else{let f=u.map(d=>{let p=ce(e,i,d)??"",h=Uo(p);return`[${jo(d)}]=${h}`});n+=`declare -A ${i}=(${f.join(" ")})
195
+ `}continue}let l=Ae(e,i);if(l.length>0){let u=l.map(f=>{let d=ce(e,i,f)??"";return`[${f}]=${bn(d)}`});n+=`declare -a ${i}=(${u.join(" ")})
196
+ `;continue}if(Ne(e,i)){n+=`declare -a ${i}=()
197
+ `;continue}let c=e.state.env.get(i);if(c!==void 0)n+=`declare ${o} ${i}=${$r(c)}
198
+ `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?n+=`declare ${o} ${i}
199
+ `:(r+=`bash: declare: ${i}: not found
200
+ `,s=!0)}}return L(n,r,s?1:0)}function rf(e,t){let{filterExport:n,filterReadonly:r,filterNameref:s,filterIndexedArray:i,filterAssocArray:o}=t,a=n||r||s||i||o,l="",c=new Set;for(let f of e.state.env.keys())f.startsWith("BASH_")||c.add(f);for(let f of e.state.arrays?.keys()??[])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=tf(e,f),p=e.state.associativeArrays?.has(f),h=Ae(e,f),m=!p&&Ne(e,f);if(a&&(o&&!p||i&&!m||n&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||s&&!fe(e,f)))continue;if(p){let S=Ct(e,f);if(S.length===0)l+=`declare -A ${f}=()
201
+ `;else{let g=S.map(y=>{let b=ce(e,f,y)??"",v=Uo(b);return`[${jo(y)}]=${v}`});l+=`declare -A ${f}=(${g.join(" ")})
202
+ `}continue}if(h.length>0){let S=h.map(g=>{let y=ce(e,f,g)??"";return`[${g}]=${bn(y)}`});l+=`declare -a ${f}=(${S.join(" ")})
203
+ `;continue}if(Ne(e,f)){l+=`declare -a ${f}=()
204
+ `;continue}let E=e.state.env.get(f);E!==void 0&&(l+=`declare ${d} ${f}=${$r(E)}
205
+ `)}return te(l)}function sf(e){let t="",n=Array.from(e.state.associativeArrays??[]).sort();for(let r of n){let s=Ct(e,r);if(s.length===0)t+=`declare -A ${r}=()
206
+ `;else{let i=s.map(o=>{let a=ce(e,r,o)??"",l=Uo(a);return`[${jo(o)}]=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
207
+ `}}return te(t)}function of(e){let t="",n=new Set(Array.from(e.state.arrays??[]).filter(([,s])=>s.kind==="indexed").map(([s])=>s)),r=Array.from(n).sort();for(let s of r){let i=Ae(e,s);if(i.length===0)t+=`declare -a ${s}=()
208
+ `;else{let o=i.map(a=>{let l=ce(e,s,a)??"";return`[${a}]=${bn(l)}`});t+=`declare -a ${s}=(${o.join(" ")})
209
+ `}}return te(t)}function af(e){let t="",n=new Set;for(let s of e.state.env.keys())s.startsWith("BASH_")||n.add(s);let r=Array.from(n).sort();for(let s of r){if(e.state.associativeArrays?.has(s)||Ae(e,s).length>0||Ne(e,s))continue;let a=e.state.env.get(s);a!==void 0&&(t+=`${s}=${ve(a)}
210
+ `)}return te(t)}function qo(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Cr(e,t){return e.state.integerVars?.has(t)??!1}function Go(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function mm(e,t){return e.state.lowercaseVars?.has(t)??!1}function Ho(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function ym(e,t){return e.state.uppercaseVars?.has(t)??!1}function rr(e,t,n){return mm(e,t)?n.toLowerCase():ym(e,t)?n.toUpperCase():n}async function lf(e,t){try{let n=new Z,r=ie(n,t),s=await J(e,r.expression);return String(s)}catch{return"0"}}function gm(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let n=t[0],r=n.length;if(e[r]!=="[")return null;let s=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")s++;else if(e[r]==="]"&&(s--,s===0))break;if(s!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:n,indexExpr:o,value:a}}async function Zo(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,p=!1,h=!1,m=!1,E=!1,S=!1,g=[];for(let P=0;P<t.length;P++){let C=t[P];if(C==="-a")r=!0;else if(C==="-A")s=!0;else if(C==="-r")i=!0;else if(C==="-x")o=!0;else if(C==="-p")a=!0;else if(C==="-n")l=!0;else if(C==="+n")c=!0;else if(C==="+a")u=!0;else if(C==="+x")f=!0;else if(C==="--"){g.push(...t.slice(P+1));break}else if(C.startsWith("+")){for(let O of C.slice(1))if(O==="n")c=!0;else if(O==="a")u=!0;else if(O==="x")f=!0;else if(O!=="r"){if(O!=="i"){if(!(O==="f"||O==="F"))return L("",`bash: typeset: +${O}: invalid option
211
+ `,2)}}}else if(C==="-i")d=!0;else if(C==="-l")p=!0;else if(C==="-u")h=!0;else if(C==="-f")m=!0;else if(C==="-F")E=!0;else if(C==="-g")S=!0;else if(C.startsWith("-"))for(let O of C.slice(1))if(O==="a")r=!0;else if(O==="A")s=!0;else if(O==="r")i=!0;else if(O==="x")o=!0;else if(O==="p")a=!0;else if(O==="n")l=!0;else if(O==="i")d=!0;else if(O==="l")p=!0;else if(O==="u")h=!0;else if(O==="f")m=!0;else if(O==="F")E=!0;else if(O==="g")S=!0;else return L("",`bash: typeset: -${O}: invalid option
212
+ `,2);else g.push(C)}let b=e.state.localScopes.length>0&&!S,v=P=>{if(!b)return;let C=e.state.localScopes[e.state.localScopes.length-1];C.has(P)||C.set(P,e.state.env.get(P))},k=P=>{if(!b)return;let C=e.state.localScopes[e.state.localScopes.length-1];for(C.has(P)||C.set(P,e.state.env.get(P)),e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let O=e.state.localArrayScopes.at(-1);if(O&&!O.has(P)){let W=Pe(e,P);O.set(P,W?Ve(W):void 0)}},A=P=>{b&&mn(e,P)};if(E){if(g.length===0){let O=Array.from(e.state.functions.keys()).sort(),W="";for(let K of O)W+=`declare -f ${K}
213
+ `;return te(W)}let P=!0,C="";for(let O of g)e.state.functions.has(O)?C+=`${O}
214
+ `:P=!1;return L(C,"",P?0:1)}if(m){if(g.length===0){let C="",O=Array.from(e.state.functions.keys()).sort();for(let W of O)C+=`${W} ()
215
+ {
216
+ # function body
217
+ }
218
+ `;return te(C)}let P=!0;for(let C of g)e.state.functions.has(C)||(P=!1);return L("","",P?0:1)}if(a&&g.length>0)return nf(e,g);if(a&&g.length===0)return rf(e,{filterExport:o,filterReadonly:i,filterNameref:l,filterIndexedArray:r,filterAssocArray:s});if(g.length===0&&s&&!a)return sf(e);if(g.length===0&&r&&!a)return of(e);if(g.length===0&&!a)return af(e);let x="",R=0;for(let P of g){let C=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(C&&!u){let N=C[1],U=C[2],j=de(e,N);if(j)return j;if(s&&Ae(e,N).length>0){x+=`bash: declare: ${N}: cannot convert indexed to associative array
219
+ `,R=1;continue}if((r||!s&&!r)&&e.state.associativeArrays?.has(N)){x+=`bash: declare: ${N}: cannot convert associative to indexed array
220
+ `,R=1;continue}let D=s&&U.includes("[")?Ms(U,n):void 0,I=D===void 0?jt(U,{...n,maxElements:s?n.maxElements*2:n.maxElements}):void 0;if(e.executionScope.consumeWork(D?.length??I?.length??0,"declare array assignment"),k(N),s?(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(N),tn(e,N,"associative")):tn(e,N,"indexed"),Ee(e,N),e.state.env.delete(N),s&&U.includes("["))for(let[M,se]of D??[])G(e,N,M,un(e,se),"associative");else if(s){let M=I??[];for(let se=0;se<M.length;se+=2){let Y=M[se],_e=se+1<M.length?M[se+1]:"";G(e,N,Y,_e,"associative")}}else{let M=I??[];if(M.some(Y=>/^\[[^\]]+\]=/.test(Y))){let Y=0;for(let _e of M){let yt=_e.match(/^\[([^\]]+)\]=(.*)$/);if(yt){let _t=yt[1],gt=yt[2],wt;if(/^-?\d+$/.test(_t))wt=Number.parseInt(_t,10);else try{let Lt=new Z,ud=ie(Lt,_t);wt=await J(e,ud.expression)}catch{wt=0}G(e,N,wt,un(e,gt)),Y=wt+1}else G(e,N,Y,_e),Y++}}else for(let Y=0;Y<M.length;Y++)G(e,N,Y,M[Y])}A(N),i&&Ke(e,N),o&&vt(e,N);continue}if(c){let N=P.includes("=")?P.slice(0,P.indexOf("=")):P;if(ic(e,N),!P.includes("="))continue}if(f){let N=P.includes("=")?P.slice(0,P.indexOf("=")):P;if(gs(e,N),!P.includes("="))continue}let O=gm(P);if(O){let{name:N,indexExpr:U,value:j}=O,D=de(e,N);if(D)return D;k(N);let I;try{let M=new Z,se=ie(M,U);I=await J(e,se.expression)}catch{let M=parseInt(U,10);I=Number.isNaN(M)?0:M}G(e,N,I,j),A(N),i&&Ke(e,N),o&&vt(e,N);continue}let W=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(W&&!u){let N=W[1],U=W[2],j=de(e,N);if(j)return j;k(N);let D=jt(U,n);if(e.state.associativeArrays?.has(N)){let I=Ms(U,n);e.executionScope.consumeWork(I.length,"declare array append"),xn(e,N,I.map(([M])=>M));for(let[M,se]of I)G(e,N,M,se,"associative")}else{e.executionScope.consumeWork(D.length,"declare array append");let I=Ae(e,N),M=0,se=e.state.env.get(N);I.length===0&&se!==void 0?(G(e,N,0,se),e.state.env.delete(N),M=1):I.length>0&&(M=Math.max(...I)+1),xn(e,N,Array.from({length:D.length},(Y,_e)=>M+_e));for(let Y=0;Y<D.length;Y++)G(e,N,M+Y,D[Y])}A(N),i&&Ke(e,N),o&&vt(e,N);continue}let K=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(K){let N=K[1],U=K[2],j=de(e,N);if(j)return j;v(N),d&&qo(e,N),p&&Go(e,N),h&&Ho(e,N);let I=Ae(e,N).length>0||e.state.associativeArrays?.has(N);if(Cr(e,N)){let M=e.state.env.get(N)??"0",se=parseInt(M,10)||0,Y=parseInt(await lf(e,U),10)||0;U=String(se+Y),e.state.env.set(N,U)}else if(I){U=rr(e,N,U);let M=ce(e,N,0)??"";G(e,N,0,Xt([M,U],"",e.limits.maxStringLength,"declare append"))}else{U=rr(e,N,U);let M=e.state.env.get(N)??"";e.state.env.set(N,Xt([M,U],"",e.limits.maxStringLength,"declare append"))}A(N),i&&Ke(e,N),o&&vt(e,N),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(N));continue}if(P.includes("=")){let N=P.indexOf("="),U=P.slice(0,N),j=P.slice(N+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(U)){x+=`bash: typeset: \`${U}': not a valid identifier
221
+ `,R=1;continue}let D=de(e,U);if(D)return D;if(v(U),l){if(j!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(j)){x+=`bash: declare: \`${j}': invalid variable name for name reference
222
+ `,R=1;continue}e.state.env.set(U,j),Ut(e,U),j!==""&&ps(e,j)&&Ji(e,U),A(U),i&&Ke(e,U),o&&vt(e,U);continue}if(d&&qo(e,U),p&&Go(e,U),h&&Ho(e,U),Cr(e,U)&&(j=await lf(e,j)),j=rr(e,U,j),fe(e,U)){let I=Ue(e,U);I&&I!==U?e.state.env.set(I,j):e.state.env.set(U,j)}else e.state.env.set(U,j);A(U),i&&Ke(e,U),o&&vt(e,U),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(U))}else{let N=P;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)){x+=`bash: typeset: \`${N}': not a valid identifier
223
+ `,R=1;continue}if(r||s?k(N):v(N),l){Ut(e,N);let j=e.state.env.get(N);j!==void 0&&j!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(j)?oc(e,N):j&&ps(e,j)&&Ji(e,N),A(N),i&&Ke(e,N),o&&vt(e,N);continue}if(d&&qo(e,N),p&&Go(e,N),h&&Ho(e,N),s){if(Ae(e,N).length>0){x+=`bash: declare: ${N}: cannot convert indexed to associative array
224
+ `,R=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(N),tn(e,N,"associative")}let U=Ne(e,N);!e.state.env.has(N)&&!U&&(r||s?tn(e,N,s?"associative":"indexed"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(N))),A(N),i&&Ke(e,N),o&&vt(e,N)}}return L("",x,R)}async function Qo(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-a")r=!0;else if(l==="-A")s=!0;else if(l==="-p")i=!0;else if(l==="--"){o.push(...t.slice(a+1));break}else l.startsWith("-")||o.push(l)}if(o.length===0){let a="",l=Array.from(e.state.readonlyVars||[]).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
225
+ `}}return te(a)}for(let a of o){let l=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(l){let d=l[1],p=l[2],h=de(e,d);if(h)return h;let m=jt(p,n);if(e.state.associativeArrays?.has(d)){let E=Ms(p,n);e.executionScope.consumeWork(E.length,"readonly array append"),xn(e,d,E.map(([S])=>S));for(let[S,g]of E)G(e,d,S,g,"associative")}else{e.executionScope.consumeWork(m.length,"readonly array append");let E=Ae(e,d),S=0,g=e.state.env.get(d);E.length===0&&g!==void 0?(G(e,d,0,g),e.state.env.delete(d),S=1):E.length>0&&(S=Math.max(...E)+1),xn(e,d,Array.from({length:m.length},(y,b)=>S+b));for(let y=0;y<m.length;y++)G(e,d,S+y,m[y])}Ke(e,d);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let d=c[1],p=c[2],h=de(e,d);if(h)return h;let m=e.state.env.get(d)??"";e.state.env.set(d,Xt([m,p],"",e.limits.maxStringLength,"readonly append")),Ke(e,d);continue}let u=Fu(a,n);if(u.value===void 0&&!u.isArray){Ke(e,u.name);continue}let f=await Mu(e,u,{makeReadonly:!0});if(f)return f}return re}function Ko(e){return e.state.directoryStack??=[],e.state.directoryStack}function Nr(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function wm(e){let t=e.split("/").filter(r=>r&&r!=="."),n=[];for(let r of t)r===".."?n.pop():n.push(r);return`/${n.join("/")}`}async function Xo(e,t){let n=Ko(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 T(`bash: pushd: too many arguments
226
+ `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return T(`bash: pushd: ${l}: invalid option
227
+ `,2);if(r!==void 0)return T(`bash: pushd: too many arguments
228
+ `,2);r=l}}if(r===void 0){if(n.length<2)return T(`bash: pushd: no other directory
229
+ `,1);let a=n[0];n[0]=n[1],n[1]=a,r=n[0]}let s;if(r.startsWith("/"))s=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),s=`/${a.join("/")}`}else r==="."?s=e.state.cwd:r.startsWith("~")?s=(e.state.env.get("HOME")||"/")+r.slice(1):s=`${e.state.cwd}/${r}`;s=wm(s);try{if(!(await e.fs.stat(s)).isDirectory)return T(`bash: pushd: ${r}: Not a directory
230
+ `,1)}catch{return T(`bash: pushd: ${r}: No such file or directory
231
+ `,1)}n.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=s,e.state.env.set("PWD",s),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[s,...n].map(a=>Nr(a,i)).join(" ")}
232
+ `;return te(o)}function Yo(e,t){let n=Ko(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?T(`bash: popd: ${o}: invalid option
233
+ `,2):T(`bash: popd: too many arguments
234
+ `,2);if(n.length===0)return T(`bash: popd: directory stack empty
235
+ `,1);let r=n.shift();if(!r)return T(`bash: popd: directory stack empty
236
+ `,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 s=e.state.env.get("HOME")||"",i=`${[r,...n].map(o=>Nr(o,s)).join(" ")}
237
+ `;return te(i)}function Jo(e,t){let n=Ko(e),r=!1,s=!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")s=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return T(`bash: dirs: -${f}: invalid option
238
+ `,2);else return T(`bash: dirs: too many arguments
239
+ `,1);if(r)return e.state.directoryStack=[],re;let a=[e.state.cwd,...n],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=s?u:Nr(u,l);return` ${f} ${d}`}).join(`
240
+ `),c+=`
241
+ `):i?c=a.map(u=>s?u:Nr(u,l)).join(`
242
+ `)+`
243
+ `:c=a.map(u=>s?u:Nr(u,l)).join(" ")+`
244
+ `,te(c)}async function Qs(e,t,n,r=!1){let s=t;if(s.length>0){let l=s[0];if(l==="--")s=s.slice(1);else if(l.startsWith("-")&&l!=="-"&&l.length>1)return T(`bash: eval: ${l}: invalid option
245
+ eval: usage: eval [arg ...]
246
+ `,2)}if(s.length===0)return re;let i=s.join(" ");if(i.trim()==="")return re;let o=e.state.groupStdin,a=r||n!==void 0&&n!=="";a&&(e.state.groupStdin=n??"");try{let l=ze(i);return await e.executeScript(l)}catch(l){if(l instanceof Ye||l instanceof Je||l instanceof Le||l instanceof q||l instanceof Ce)throw l;if(l.name==="ParseException")return T(`bash: eval: ${l.message}
247
+ `);throw l}finally{(a||o!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=o)}}function ea(e,t){let n,r="";if(t.length===0)n=e.state.lastExitCode;else{let s=t[0];if(s===""||!/^-?\d+$/.test(s))r=`bash: exit: ${s}: numeric argument required
248
+ `,n=2;else{let i=BigInt(s);n=Number((i%256n+256n)%256n)}}throw new q(n,"",r)}function ta(e,t){let n=!1,r=[];for(let o of t)o==="-n"?n=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!n){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);u!==void 0&&(o+=`declare -x ${c}=${$r(u)}
249
+ `)}return te(o)}if(n){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=o.slice(c+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a))return L("",`bash: export: \`${o}': not a valid identifier
250
+ `,1);l!==void 0&&(de(e,a),e.state.env.set(a,l)),gs(e,a)}return re}let s="",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=u[2],c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=o.slice(f+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){s+=`bash: export: \`${o}': not a valid identifier
251
+ `,i=1;continue}if(l!==void 0)if(de(e,a),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,"");vt(e,a)}return L("",s,i)}function Ks(e,t){if(t.length<2)return T(`bash: getopts: usage: getopts optstring name [arg ...]
252
+ `);let n=t[0],r=t[1],s=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=n.startsWith(":"),o=i?n.slice(1):n,a;if(t.length>2)a=t.slice(2);else{let m=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let E=1;E<=m;E++)a.push(e.state.env.get(String(E))||"")}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 s||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),s||e.state.env.set(r,"?"),{exitCode:s?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"),Ks(e,t);let p=o.indexOf(d);if(p===-1){let m="";return i?e.state.env.set("OPTARG",d):m=`bash: illegal option -- ${d}
253
+ `,s||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:s?2:0,stdout:"",stderr:m}}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 m="";return i?(e.state.env.set("OPTARG",d),s||e.state.env.set(r,":")):(m=`bash: option requires an argument -- ${d}
254
+ `,s||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:0,stdout:"",stderr:m}}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 s||e.state.env.set(r,d),{exitCode:s?2:0,stdout:"",stderr:""}}async function na(e,t){e.state.hashTable||(e.state.hashTable=new Map);let n=!1,r=!1,s=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let h=t[c];if(h==="--"){c++,l.push(...t.slice(c));break}if(h==="-r")n=!0,c++;else if(h==="-d")r=!0,c++;else if(h==="-l")s=!0,c++;else if(h==="-t")o=!0,c++;else if(h==="-p"){if(i=!0,c++,c>=t.length)return T(`bash: hash: -p: option requires an argument
255
+ `,1);a=t[c],c++}else if(h.startsWith("-")&&h.length>1){for(let m of h.slice(1))if(m==="r")n=!0;else if(m==="d")r=!0;else if(m==="l")s=!0;else if(m==="t")o=!0;else return m==="p"?T(`bash: hash: -p: option requires an argument
256
+ `,1):T(`bash: hash: -${m}: invalid option
257
+ `,1);c++}else l.push(h),c++}if(n)return e.state.hashTable.clear(),re;if(r){if(l.length===0)return T(`bash: hash: -d: option requires an argument
258
+ `,1);let h=!1,m="";for(let E of l)e.state.hashTable.has(E)?e.state.hashTable.delete(E):(m+=`bash: hash: ${E}: not found
259
+ `,h=!0);return h?T(m,1):re}if(o){if(l.length===0)return T(`bash: hash: -t: option requires an argument
260
+ `,1);let h="",m=!1,E="";for(let S of l){let g=e.state.hashTable.get(S);g?l.length>1?h+=`${S} ${g}
261
+ `:h+=`${g}
262
+ `:(E+=`bash: hash: ${S}: not found
263
+ `,m=!0)}return m?{exitCode:1,stdout:h,stderr:E}:te(h)}if(i){if(l.length===0)return T(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
264
+ `,1);let h=l[0];return e.state.hashTable.set(h,a),re}if(l.length===0){if(e.state.hashTable.size===0)return te(`hash: hash table empty
265
+ `);let h="";if(s)for(let[m,E]of e.state.hashTable){let S=m.startsWith("-")?" --":"";h+=`builtin hash -p ${ve(E)}${S} ${ve(m)}
266
+ `}else{h=`hits command
267
+ `;for(let[,m]of e.state.hashTable)h+=` 1 ${m}
268
+ `}return te(h)}let u=!1,f="",p=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let h of l){if(h.includes("/")){f+=`bash: hash: ${h}: cannot use / in name
269
+ `,u=!0;continue}let m=!1;for(let E of p){if(!E)continue;let S=`${E}/${h}`;if(await e.fs.exists(S)){e.state.hashTable.set(h,S),m=!0;break}}m||(f+=`bash: hash: ${h}: not found
270
+ `,u=!0)}return u?T(f,1):re}var cf=new Map([[":",[": [arguments]",`Null command.
271
+ No effect; the command does nothing.
272
+ Exit Status:
273
+ Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
274
+ Read and execute commands from FILENAME in the current shell.
275
+ The entries in $PATH are used to find the directory containing FILENAME.
276
+ Exit Status:
277
+ Returns the status of the last command executed in FILENAME.`]],["[",["[ arg... ]",`Evaluate conditional expression.
278
+ This is a synonym for the "test" builtin, but the last argument must
279
+ be a literal \`]', to match the opening \`['.`]],["alias",["alias [-p] [name[=value] ... ]",`Define or display aliases.
280
+ Without arguments, \`alias' prints the list of aliases in the reusable
281
+ form \`alias NAME=VALUE' on standard output.
282
+ Exit Status:
283
+ alias returns true unless a NAME is supplied for which no alias has been
284
+ defined.`]],["bg",["bg [job_spec ...]",`Move jobs to the background.
285
+ Place the jobs identified by each JOB_SPEC in the background, as if they
286
+ had been started with \`&'.`]],["break",["break [n]",`Exit for, while, or until loops.
287
+ Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing
288
+ loops.
289
+ Exit Status:
290
+ The exit status is 0 unless N is not greater than or equal to 1.`]],["builtin",["builtin [shell-builtin [arg ...]]",`Execute shell builtins.
291
+ Execute SHELL-BUILTIN with arguments ARGs without performing command
292
+ lookup. This is useful when you wish to reimplement a shell builtin
293
+ as a shell function, but need to execute the builtin within the function.
294
+ Exit Status:
295
+ Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is
296
+ not a shell builtin.`]],["caller",["caller [expr]",`Return the context of the current subroutine call.
297
+ Without EXPR, returns "$line $filename". With EXPR, returns
298
+ "$line $subroutine $filename"; this extra information can be used to
299
+ provide a stack trace.
300
+ Exit Status:
301
+ Returns 0 unless the shell is not executing a subroutine call or
302
+ EXPR is invalid.`]],["cd",["cd [-L|-P] [dir]",`Change the shell working directory.
303
+ Change the current directory to DIR. The default DIR is the value of the
304
+ HOME shell variable.
305
+
306
+ The variable CDPATH defines the search path for the directory containing
307
+ DIR. Alternative directory names in CDPATH are separated by a colon (:).
308
+ A null directory name is the same as the current directory. If DIR begins
309
+ with a slash (/), then CDPATH is not used.
310
+
311
+ If the directory is not found, and the shell option \`cdable_vars' is set,
312
+ the word is assumed to be a variable name. If that variable has a value,
313
+ its value is used for DIR.
314
+
315
+ Options:
316
+ -L force symbolic links to be followed
317
+ -P use the physical directory structure without following symbolic
318
+ links
319
+
320
+ The default is to follow symbolic links, as if \`-L' were specified.
321
+
322
+ Exit Status:
323
+ Returns 0 if the directory is changed; non-zero otherwise.`]],["command",["command [-pVv] command [arg ...]",`Execute a simple command or display information about commands.
324
+ Runs COMMAND with ARGS suppressing shell function lookup, or display
325
+ information about the specified COMMANDs.
326
+
327
+ Options:
328
+ -p use a default value for PATH that is guaranteed to find all of
329
+ the standard utilities
330
+ -v print a description of COMMAND similar to the \`type' builtin
331
+ -V print a more verbose description of each COMMAND
332
+
333
+ Exit Status:
334
+ Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
335
+ Intended to be used from within a shell function generating possible
336
+ completions. If the optional WORD argument is supplied, matches against
337
+ WORD are generated.
338
+ Exit Status:
339
+ Returns success unless an invalid option is supplied or an error occurs.`]],["complete",["complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]",`Specify how arguments are to be completed.
340
+ For each NAME, specify how arguments are to be completed.
341
+ Exit Status:
342
+ Returns success unless an invalid option is supplied or an error occurs.`]],["continue",["continue [n]",`Resume for, while, or until loops.
343
+ Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
344
+ If N is specified, resumes the Nth enclosing loop.
345
+ Exit Status:
346
+ The exit status is 0 unless N is not greater than or equal to 1.`]],["declare",["declare [-aAfFgilnrtux] [-p] [name[=value] ...]",`Set variable values and attributes.
347
+ Declare variables and give them attributes. If no NAMEs are given,
348
+ display the attributes and values of all variables.
349
+
350
+ Options:
351
+ -a to make NAMEs indexed arrays (if supported)
352
+ -A to make NAMEs associative arrays (if supported)
353
+ -i to make NAMEs have the \`integer' attribute
354
+ -l to convert the value of each NAME to lower case on assignment
355
+ -n make NAME a reference to the variable named by its value
356
+ -r to make NAMEs readonly
357
+ -t to make NAMEs have the \`trace' attribute
358
+ -u to convert the value of each NAME to upper case on assignment
359
+ -x to make NAMEs export
360
+
361
+ Exit Status:
362
+ Returns success unless an invalid option is supplied or a variable
363
+ assignment error occurs.`]],["dirs",["dirs [-clpv] [+N] [-N]",`Display directory stack.
364
+ Display the list of currently remembered directories. Directories
365
+ find their way onto the list with the \`pushd' command; you can get
366
+ back up through the list with the \`popd' command.
367
+ Exit Status:
368
+ Returns success unless an invalid option is supplied or an error occurs.`]],["disown",["disown [-h] [-ar] [jobspec ...]",`Remove jobs from current shell.
369
+ Without any JOBSPECs, remove the current job.`]],["echo",["echo [-neE] [arg ...]",`Write arguments to the standard output.
370
+ Display the ARGs, separated by a single space character and followed by a
371
+ newline, on the standard output.
372
+
373
+ Options:
374
+ -n do not append a newline
375
+ -e enable interpretation of the following backslash escapes
376
+ -E explicitly suppress interpretation of backslash escapes
377
+
378
+ Exit Status:
379
+ Returns success unless a write error occurs.`]],["enable",["enable [-a] [-dnps] [-f filename] [name ...]",`Enable and disable shell builtins.
380
+ Enables and disables builtin shell commands.
381
+ Exit Status:
382
+ Returns success unless NAME is not a shell builtin or an error occurs.`]],["eval",["eval [arg ...]",`Execute arguments as a shell command.
383
+ Combine ARGs into a single string, use the result as input to the shell,
384
+ and execute the resulting commands.
385
+ Exit Status:
386
+ Returns exit status of command or success if command is null.`]],["exec",["exec [-cl] [-a name] [command [arguments ...]] [redirection ...]",`Replace the shell with the given command.
387
+ Execute COMMAND, replacing this shell with the specified program.
388
+ ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,
389
+ any redirections take effect in the current shell.
390
+ Exit Status:
391
+ Returns success unless COMMAND is not found or a redirection error occurs.`]],["exit",["exit [n]",`Exit the shell.
392
+ Exits the shell with a status of N. If N is omitted, the exit status
393
+ is that of the last command executed.`]],["export",["export [-fn] [name[=value] ...] or export -p",`Set export attribute for shell variables.
394
+ Marks each NAME for automatic export to the environment of subsequently
395
+ executed commands. If VALUE is supplied, assign VALUE before exporting.
396
+
397
+ Options:
398
+ -f refer to shell functions
399
+ -n remove the export property from each NAME
400
+ -p display a list of all exported variables and functions
401
+
402
+ Exit Status:
403
+ Returns success unless an invalid option is given or NAME is invalid.`]],["false",["false",`Return an unsuccessful result.
404
+ Exit Status:
405
+ Always fails.`]],["fc",["fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]",`Display or execute commands from the history list.
406
+ Exit Status:
407
+ Returns success or status of executed command.`]],["fg",["fg [job_spec]",`Move job to the foreground.
408
+ Place the job identified by JOB_SPEC in the foreground, making it the
409
+ current job.`]],["getopts",["getopts optstring name [arg]",`Parse option arguments.
410
+ Getopts is used by shell procedures to parse positional parameters
411
+ as options.
412
+
413
+ OPTSTRING contains the option letters to be recognized; if a letter
414
+ is followed by a colon, the option is expected to have an argument,
415
+ which should be separated from it by white space.
416
+ Exit Status:
417
+ Returns success if an option is found; fails if the end of options is
418
+ encountered or an error occurs.`]],["hash",["hash [-lr] [-p pathname] [-dt] [name ...]",`Remember or display program locations.
419
+ Determine and remember the full pathname of each command NAME.
420
+ Exit Status:
421
+ Returns success unless NAME is not found or an invalid option is given.`]],["help",["help [-s] [pattern ...]",`Display information about builtin commands.
422
+ Displays brief summaries of builtin commands. If PATTERN is
423
+ specified, gives detailed help on all commands matching PATTERN,
424
+ otherwise the list of help topics is printed.
425
+
426
+ Options:
427
+ -s output only a short usage synopsis for each topic matching
428
+ PATTERN
429
+
430
+ Exit Status:
431
+ Returns success unless PATTERN is not found.`]],["history",["history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]",`Display or manipulate the history list.
432
+ Display the history list with line numbers, prefixing each modified
433
+ entry with a \`*'.
434
+ Exit Status:
435
+ Returns success unless an invalid option is given or an error occurs.`]],["jobs",["jobs [-lnprs] [jobspec ...] or jobs -x command [args]",`Display status of jobs.
436
+ Lists the active jobs.
437
+ Exit Status:
438
+ Returns success unless an invalid option is given or an error occurs.`]],["kill",["kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]",`Send a signal to a job.
439
+ Send the processes identified by PID or JOBSPEC the signal named by
440
+ SIGSPEC or SIGNUM.
441
+ Exit Status:
442
+ Returns success unless an invalid option is given or an error occurs.`]],["let",["let arg [arg ...]",`Evaluate arithmetic expressions.
443
+ Evaluate each ARG as an arithmetic expression. Evaluation is done in
444
+ fixed-width integers with no check for overflow, though division by 0
445
+ is trapped and flagged as an error.
446
+ Exit Status:
447
+ If the last ARG evaluates to 0, let returns 1; 0 is returned otherwise.`]],["local",["local [option] name[=value] ...",`Define local variables.
448
+ Create a local variable called NAME, and give it VALUE. OPTION can
449
+ be any option accepted by \`declare'.
450
+
451
+ Local can only be used within a function; it makes the variable NAME
452
+ have a visible scope restricted to that function and its children.
453
+ Exit Status:
454
+ Returns success unless an invalid option is supplied, a variable
455
+ assignment error occurs, or the shell is not executing a function.`]],["logout",["logout [n]",`Exit a login shell.
456
+ Exits a login shell with exit status N. Returns an error if not executed
457
+ in a login shell.`]],["mapfile",["mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]",`Read lines from the standard input into an indexed array variable.
458
+ Read lines from the standard input into the indexed array variable ARRAY,
459
+ or from file descriptor FD if the -u option is supplied.
460
+
461
+ Options:
462
+ -d delim Use DELIM to terminate lines, instead of newline
463
+ -n count Copy at most COUNT lines
464
+ -O origin Begin assigning to ARRAY at index ORIGIN
465
+ -s count Discard the first COUNT lines read
466
+ -t Remove a trailing DELIM from each line read (default newline)
467
+ -u fd Read lines from file descriptor FD instead of standard input
468
+
469
+ Exit Status:
470
+ Returns success unless an invalid option is given or ARRAY is readonly.`]],["popd",["popd [-n] [+N | -N]",`Remove directories from stack.
471
+ Removes entries from the directory stack.
472
+ Exit Status:
473
+ Returns success unless an invalid argument is supplied or the directory
474
+ change fails.`]],["printf",["printf [-v var] format [arguments]",`Formats and prints ARGUMENTS under control of the FORMAT.
475
+
476
+ Options:
477
+ -v var assign the output to shell variable VAR rather than
478
+ display it on the standard output
479
+
480
+ FORMAT is a character string which contains three types of objects: plain
481
+ characters, which are simply copied to standard output; character escape
482
+ sequences, which are converted and copied to the standard output; and
483
+ format specifications, each of which causes printing of the next successive
484
+ argument.
485
+ Exit Status:
486
+ Returns success unless an invalid option is given or a write or assignment
487
+ error occurs.`]],["pushd",["pushd [-n] [+N | -N | dir]",`Add directories to stack.
488
+ Adds a directory to the top of the directory stack, or rotates
489
+ the stack, making the new top of the stack the current working
490
+ directory.
491
+ Exit Status:
492
+ Returns success unless an invalid argument is supplied or the directory
493
+ change fails.`]],["pwd",["pwd [-LP]",`Print the name of the current working directory.
494
+
495
+ Options:
496
+ -L print the value of $PWD if it names the current working
497
+ directory
498
+ -P print the physical directory, without any symbolic links
499
+
500
+ By default, \`pwd' behaves as if \`-L' were specified.
501
+ Exit Status:
502
+ Returns 0 unless an invalid option is given or the current directory
503
+ cannot be read.`]],["read",["read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]",`Read a line from the standard input and split it into fields.
504
+ Reads a single line from the standard input, or from file descriptor FD
505
+ if the -u option is supplied. The line is split into fields as with word
506
+ splitting, and the first word is assigned to the first NAME, the second
507
+ word to the second NAME, and so on, with any leftover words assigned to
508
+ the last NAME.
509
+ Exit Status:
510
+ The return code is zero, unless end-of-file is encountered, read times out,
511
+ or an invalid file descriptor is supplied as the argument to -u.`]],["readarray",["readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]","Read lines from a file into an array variable.\n A synonym for `mapfile'."]],["readonly",["readonly [-aAf] [name[=value] ...] or readonly -p",`Mark shell variables as unchangeable.
512
+ Mark each NAME as read-only; the values of these NAMEs may not be
513
+ changed by subsequent assignment.
514
+ Exit Status:
515
+ Returns success unless an invalid option is given or NAME is invalid.`]],["return",["return [n]",`Return from a shell function.
516
+ Causes a function or sourced script to exit with the return value
517
+ specified by N. If N is omitted, the return status is that of the
518
+ last command executed within the function or script.
519
+ Exit Status:
520
+ Returns N, or failure if the shell is not executing a function or script.`]],["set",["set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]",`Set or unset values of shell options and positional parameters.
521
+ Change the value of shell attributes and positional parameters, or
522
+ display the names and values of shell variables.
523
+
524
+ Options:
525
+ -e Exit immediately if a command exits with a non-zero status.
526
+ -u Treat unset variables as an error when substituting.
527
+ -x Print commands and their arguments as they are executed.
528
+ -o option-name
529
+ Set the variable corresponding to option-name
530
+
531
+ Exit Status:
532
+ Returns success unless an invalid option is given.`]],["shift",["shift [n]",`Shift positional parameters.
533
+ Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is
534
+ not given, it is assumed to be 1.
535
+ Exit Status:
536
+ Returns success unless N is negative or greater than $#.`]],["shopt",["shopt [-pqsu] [-o] [optname ...]",`Set and unset shell options.
537
+ Change the setting of each shell option OPTNAME. Without any option
538
+ arguments, list each supplied OPTNAME, or all shell options if no
539
+ OPTNAMEs are given, with an indication of whether or not each is set.
540
+
541
+ Options:
542
+ -o restrict OPTNAMEs to those defined for use with \`set -o'
543
+ -p print each shell option with an indication of its status
544
+ -q suppress output
545
+ -s enable (set) each OPTNAME
546
+ -u disable (unset) each OPTNAME
547
+
548
+ Exit Status:
549
+ Returns success if OPTNAME is enabled; fails if an invalid option is
550
+ given or OPTNAME is disabled.`]],["source",["source filename [arguments]",`Execute commands from a file in the current shell.
551
+ Read and execute commands from FILENAME in the current shell.
552
+ The entries in $PATH are used to find the directory containing FILENAME.
553
+ Exit Status:
554
+ Returns the status of the last command executed in FILENAME.`]],["suspend",["suspend [-f]",`Suspend shell execution.
555
+ Suspend the execution of this shell until it receives a SIGCONT signal.`]],["test",["test [expr]",`Evaluate conditional expression.
556
+ Exits with a status of 0 (true) or 1 (false) depending on
557
+ the evaluation of EXPR. Expressions may be unary or binary.
558
+ Exit Status:
559
+ Returns success if EXPR evaluates to true; fails if EXPR evaluates to
560
+ false or an invalid argument is given.`]],["times",["times",`Display process times.
561
+ Prints the accumulated user and system times for the shell and all of its
562
+ child processes.
563
+ Exit Status:
564
+ Always succeeds.`]],["trap",["trap [-lp] [[arg] signal_spec ...]",`Trap signals and other events.
565
+ Defines and activates handlers to be run when the shell receives signals
566
+ or other conditions.
567
+ Exit Status:
568
+ Returns success unless a SIGSPEC is invalid or an invalid option is given.`]],["true",["true",`Return a successful result.
569
+ Exit Status:
570
+ Always succeeds.`]],["type",["type [-afptP] name [name ...]",`Display information about command type.
571
+ For each NAME, indicate how it would be interpreted if used as a
572
+ command name.
573
+
574
+ Options:
575
+ -a display all locations containing an executable named NAME
576
+ -f suppress shell function lookup
577
+ -P force a PATH search for each NAME, even if it is an alias,
578
+ builtin, or function, and returns the name of the disk file
579
+ that would be executed
580
+ -p returns either the name of the disk file that would be executed,
581
+ or nothing if \`type -t NAME' would not return \`file'
582
+ -t output a single word which is one of \`alias', \`keyword',
583
+ \`function', \`builtin', \`file' or \`', if NAME is an alias,
584
+ shell reserved word, shell function, shell builtin, disk file,
585
+ or not found, respectively
586
+
587
+ Exit Status:
588
+ Returns success if all of the NAMEs are found; fails if any are not found.`]],["typeset",["typeset [-aAfFgilnrtux] [-p] name[=value] ...","Set variable values and attributes.\n A synonym for `declare'."]],["ulimit",["ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]",`Modify shell resource limits.
589
+ Provides control over the resources available to the shell and processes
590
+ it creates, on systems that allow such control.
591
+ Exit Status:
592
+ Returns success unless an invalid option is supplied or an error occurs.`]],["umask",["umask [-p] [-S] [mode]",`Display or set file mode mask.
593
+ Sets the user file-creation mask to MODE. If MODE is omitted, prints
594
+ the current value of the mask.
595
+ Exit Status:
596
+ Returns success unless MODE is invalid or an invalid option is given.`]],["unalias",["unalias [-a] name [name ...]",`Remove each NAME from the list of defined aliases.
597
+ Exit Status:
598
+ Returns success unless a NAME is not an existing alias.`]],["unset",["unset [-f] [-v] [-n] [name ...]",`Unset values and attributes of shell variables and functions.
599
+ For each NAME, remove the corresponding variable or function.
600
+
601
+ Options:
602
+ -f treat each NAME as a shell function
603
+ -v treat each NAME as a shell variable
604
+ -n treat each NAME as a name reference and unset the variable itself
605
+ rather than the variable it references
606
+
607
+ Without options, unset first tries to unset a variable, and if that fails,
608
+ tries to unset a function.
609
+ Exit Status:
610
+ Returns success unless an invalid option is given or a NAME is read-only.`]],["wait",["wait [-fn] [id ...]",`Wait for job completion and return exit status.
611
+ Waits for each process identified by an ID, which may be a process ID or a
612
+ job specification, and reports its termination status.
613
+ Exit Status:
614
+ Returns the status of the last ID; fails if ID is invalid or an invalid
615
+ option is given.`]]]),uf=[...cf.keys()].sort();function ra(e,t){let n=!1,r=[],s=0;for(;s<t.length;){let l=t[s];if(l==="--"){for(s++;s<t.length;)r.push(t[s]),s++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")n=!0;else return T(`bash: help: -${u}: invalid option
616
+ `,2)}s++}else r.push(l),s++}if(r.length===0)return bm();let i="",o=!1,a="";for(let l of r){let c=Em(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
617
+ `,o=!0;continue}for(let u of c){let f=cf.get(u);if(!f)continue;let[d,p]=f;n?i+=`${u}: ${d}
618
+ `:i+=`${u}: ${d}
619
+ ${p}
620
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Em(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),n=ge(`^${t}$`);return uf.filter(r=>n.test(r))}function bm(){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,n=uf.slice(),r=Math.ceil(n.length/2);for(let s=0;s<r;s++){let i=n[s]||"",o=n[s+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return te(`${e.join(`
621
+ `)}
622
+ `)}function Sm(e){let t=[],n="",r=0;for(let s of e){for(let i of s)i==="("?r++:i===")"&&r--;n?n+=` ${s}`:n=s,r===0&&(t.push(n),n="")}return n&&t.push(n),t}async function sa(e,t){if(t.length===0)return T(`bash: let: expression expected
623
+ `);let n=Sm(t),r=0;for(let s of n)try{let o=ze(`(( ${s} ))`).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 J(e,a.expression.expression))}}catch(i){return T(`bash: let: ${s}: ${i.message}
624
+ `)}return L("","",r===0?1:0)}async function ia(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength};if(e.state.localScopes.length===0)return T(`bash: local: can only be used in a function
625
+ `);let r=e.state.localScopes[e.state.localScopes.length-1];for(e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let s=e.state.localArrayScopes.at(-1),i=d=>{if(r.has(d)||r.set(d,e.state.env.get(d)),s&&!s.has(d)){let p=Pe(e,d);s.set(d,p?Ve(p):void 0)}},o="",a=0,l=!1,c=!1,u=!1,f=[];for(let d of t)if(d==="-n")l=!0;else if(d==="-a")c=!0;else if(d==="-p")u=!0;else if(d.startsWith("-")&&!d.includes("="))for(let p of d.slice(1))p==="n"?l=!0:p==="a"?c=!0:p==="p"&&(u=!0);else f.push(d);if(f.length===0){let d="",p=Array.from(r.keys()).sort();for(let h of p){let m=e.state.env.get(h);m!==void 0&&(d+=`${h}=${m}
626
+ `)}return L(d,"",0)}for(let d of f){let p,h,m=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(m){p=m[1];let b=m[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(p)){o+=`bash: local: \`${d}': not a valid identifier
627
+ `,a=1;continue}de(e,p,"bash");let v=jt(b,n);e.executionScope.consumeWork(v.length,"local array assignment"),i(p),Ee(e,p),tn(e,p,"indexed");for(let k=0;k<v.length;k++)G(e,p,k,v[k]);mn(e,p),l&&Ut(e,p);continue}let E=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(E){p=E[1];let b=E[2];de(e,p,"bash"),i(p);let v=jt(b,n);e.executionScope.consumeWork(v.length,"local array append");let k=Ae(e,p),A=0,x=e.state.env.get(p);k.length===0&&x!==void 0?(G(e,p,0,x),e.state.env.delete(p),A=1):k.length>0&&(A=Math.max(...k)+1),xn(e,p,Array.from({length:v.length},(R,P)=>A+P));for(let R=0;R<v.length;R++)G(e,p,A+R,v[R]);mn(e,p),l&&Ut(e,p);continue}let S=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(S){p=S[1];let b=S[2];de(e,p,"bash"),r.has(p)||r.set(p,e.state.env.get(p));let v=e.state.env.get(p)??"";e.state.env.set(p,Xt([v,b],"",e.limits.maxStringLength,"local append")),mn(e,p),l&&Ut(e,p);continue}let g=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(g){p=g[1];let b=g[2],v=g[3];de(e,p,"bash"),i(p);let k;try{let A=new Z,x=ie(A,b);k=await J(e,x.expression)}catch{let A=parseInt(b,10);k=Number.isNaN(A)?0:A}G(e,p,k,v),mn(e,p),l&&Ut(e,p);continue}if(d.includes("=")){let b=d.indexOf("=");p=d.slice(0,b),h=d.slice(b+1)}else p=d;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(p)){o+=`bash: local: \`${d}': not a valid identifier
628
+ `,a=1;continue}let y=r.has(p);if(h!==void 0){let b=e.state.env.get(p);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(p),k=e.state.mutatedTempEnvVars?.has(p);if(!v&&!k)for(let A=e.state.tempEnvBindings.length-1;A>=0;A--){let x=e.state.tempEnvBindings[A];if(x.has(p)){b=x.get(p);break}}}Bu(e,p,b)}if(!y){let b=e.state.env.get(p);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let k=e.state.tempEnvBindings[v];if(k.has(p)){b=k.get(p);break}}r.set(p,b),c&&i(p)}if(c&&h===void 0)Ee(e,p),tn(e,p,"indexed");else if(h!==void 0){if(de(e,p,"bash"),l&&h!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(h)){o+=`bash: local: \`${h}': invalid variable name for name reference
629
+ `,a=1;continue}e.state.env.set(p,h),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(p))}else{let b=e.state.tempEnvBindings?.some(v=>v.has(p));!y&&!b&&e.state.env.delete(p)}mn(e,p),l&&Ut(e,p)}return L("",o,a)}function oa(e,t,n){let r=`
630
+ `,s=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let g=t[c];g==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
631
+ `,c+=2):g==="-n"&&c+1<t.length?(s=Number.parseInt(t[c+1],10)||0,c+=2):g==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):g==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(a=!0,c++):g==="-u"||g==="-C"||g==="-c"?c+=2:(g.startsWith("-")||(l=g),c++)}if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l))return L("",`mapfile: ${l}: not a valid identifier
632
+ `,1);if(!Number.isSafeInteger(i)||i<0)return L("",`mapfile: invalid array origin
633
+ `,1);de(e,l,"mapfile");let u=n;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=0,p=0,h=0,m=e.limits.maxArrayElements,E=g=>{if(B(g)>e.limits.maxStringLength)throw new $(`mapfile: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");f.push(g)};for(;d<u.length;){e.executionScope.consumeWork(1,"mapfile input");let g=u.indexOf(r,d);if(g===-1){if(d<u.length){if(h<o)h++;else if(s===0||p<s){let v=u.slice(d),k=v.indexOf("\0");if(k!==-1&&(v=v.substring(0,k)),f.length>=m)return L("",`mapfile: array element limit exceeded (${m})
634
+ `,1);E(v),p++}}break}let y=u.slice(d,g),b=y.indexOf("\0");if(b!==-1&&(y=y.substring(0,b)),!a&&r!=="\0"&&(y+=r),d=g+r.length,h<o){h++;continue}if(s>0&&p>=s)break;if(f.length>=m)return L("",`mapfile: array element limit exceeded (${m})
635
+ `,1);E(y),p++}let S=new Set(i===0?[]:e.state.arrays?.get(l)?.elements.keys()??[]);for(let g=0;g<f.length;g++)if(S.add(String(i+g)),S.size>m)return L("",`mapfile: array element limit exceeded (${m})
636
+ `,1);i===0&&Ee(e,l);for(let g=0;g<f.length;g++)G(e,l,i+g,f[g]);return e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=""),{...L("","",0),internalStdinConsumed:u.length}}function aa(e,t,n,r=-1){let s=!1,i=`
637
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],p=0,h=!1,m=(D,I)=>{let M=1;for(;M<D.length;){let se=D[M];if(se==="r")s=!0,M++;else if(se==="s")M++;else{if(se==="d")return M+1<D.length?(i=D.substring(M+1),{nextArgIndex:I+1}):I+1<t.length?(i=t[I+1],{nextArgIndex:I+2}):{nextArgIndex:I+1};if(se==="n"){if(M+1<D.length){let Y=D.substring(M+1);return a=Number.parseInt(Y,10),(Number.isNaN(a)||a<0)&&(h=!0,a=0),{nextArgIndex:I+1}}else if(I+1<t.length)return a=Number.parseInt(t[I+1],10),(Number.isNaN(a)||a<0)&&(h=!0,a=0),{nextArgIndex:I+2};return{nextArgIndex:I+1}}else if(se==="N"){if(M+1<D.length){let Y=D.substring(M+1);return l=Number.parseInt(Y,10),(Number.isNaN(l)||l<0)&&(h=!0,l=0),{nextArgIndex:I+1}}else if(I+1<t.length)return l=Number.parseInt(t[I+1],10),(Number.isNaN(l)||l<0)&&(h=!0,l=0),{nextArgIndex:I+2};return{nextArgIndex:I+1}}else{if(se==="a")return M+1<D.length?(c=D.substring(M+1),{nextArgIndex:I+1}):I+1<t.length?(c=t[I+1],{nextArgIndex:I+2}):{nextArgIndex:I+1};if(se==="p")return M+1<D.length?(o=D.substring(M+1),{nextArgIndex:I+1}):I+1<t.length?(o=t[I+1],{nextArgIndex:I+2}):{nextArgIndex:I+1};if(se==="u"){if(M+1<D.length){let Y=D.substring(M+1);return u=Number.parseInt(Y,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:I+1}}else if(I+1<t.length)return u=Number.parseInt(t[I+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:I+2};return{nextArgIndex:I+1}}else if(se==="t"){if(M+1<D.length){let Y=D.substring(M+1);return f=Number.parseFloat(Y),Number.isNaN(f)&&(f=0),{nextArgIndex:I+1}}else if(I+1<t.length)return f=Number.parseFloat(t[I+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:I+2};return{nextArgIndex:I+1}}else if(se==="e"||se==="i"||se==="P"){if(se==="i"&&I+1<t.length)return{nextArgIndex:I+2};M++}else M++}}}return{nextArgIndex:I+1}};for(;p<t.length;){let D=t[p];if(D.startsWith("-")&&D.length>1&&D!=="--"){let I=m(D,p);if(I.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(I.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};p=I.nextArgIndex}else if(D==="--")for(p++;p<t.length;)d.push(t[p]),p++;else d.push(D),p++}if(h)return L("","",1);d.length===0&&c===null&&d.push("REPLY");let E=new Set;c&&E.add(c);for(let D of d)E.add(D);l>=0&&d.length===0&&E.add("REPLY");for(let D of E){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(D))return L("",`bash: read: \`${D}': not a valid identifier
638
+ `,1);de(e,D,"bash")}if(f===0){if(c)Ee(e,c);else{for(let D of d)e.state.env.set(D,"");d.length===0&&e.state.env.set("REPLY","")}return L("","",0)}if(f<0&&f!==-1)return L("","",1);let S=n,g=ot(e,u),y=u>0&&!(g?.kind==="dup-in"&&g.sourceFd===0);if(y){let D=js(e,u);if("error"in D){let M=D.error==="write-only"||u===1||u===2?`bash: read: read error: ${u}: Bad file descriptor
639
+ `:`bash: read: ${u}: invalid file descriptor: Bad file descriptor
640
+ `;return L("",M,1)}S=D.content}else!S&&e.state.groupStdin!==void 0&&(S=e.state.groupStdin);let b=i===""?"\0":i,v="",k=0,A=D=>{let I=B(D);if(I>e.limits.maxStringLength-k)throw new $(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");v+=D,k+=I},x=D=>{if(B(D)>e.limits.maxStringLength)throw new $(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")},R=0,P=!0,C=D=>{y?gn(e,u,D):r>=0?gn(e,r,D):e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=S.substring(D),e.state.groupStdinSourceFd!==void 0&&gn(e,e.state.groupStdinSourceFd,D))};if(l>=0){let D=Math.min(l,S.length);v=S.substring(0,D),x(v),R=D,P=D>=l,C(R);let I=d[0]||"REPLY";e.state.env.set(I,v);for(let M=1;M<d.length;M++)e.state.env.set(d[M],"");return L("","",P?0:1)}else if(a>=0){let D=0,I=0,M=!1;for(;I<S.length&&D<a;){let se=S[I];if(se===b){R=I+1,M=!0;break}if(!s&&se==="\\"&&I+1<S.length){let Y=S[I+1];if(Y===b&&b===`
641
+ `){I+=2,R=I;continue}if(Y===b){I+=2,D++,A(Y),R=I;continue}A(Y),I+=2,D++,R=I}else A(se),I++,D++,R=I}P=D>=a||M,C(R)}else{R=0;let D=0;for(;D<S.length;){let I=S[D];if(I===b){R=D+b.length,P=!0;break}if(!s&&I==="\\"&&D+1<S.length){let M=S[D+1];if(M===`
642
+ `){D+=2;continue}if(M===b){A(M),D+=2;continue}A(I),A(M),D+=2;continue}A(I),D++}if(D>=S.length&&(P=!1,R=D,v.length===0&&S.length===0)){for(let I of d)e.state.env.set(I,"");return c&&Ee(e,c),L("","",1)}C(R)}b===`
643
+ `&&v.endsWith(`
644
+ `)&&(v=v.slice(0,-1));let O=D=>s?D:D.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",O(v)),L("","",P?0:1);let W=ke(e.state.env),K=e.limits.maxArrayElements;if(c){let{words:D}=Yi(v,W,K,void 0,s);Ee(e,c);for(let I=0;I<D.length;I++)G(e,c,I,O(D[I]));return L("","",P?0:1)}let N=d.length,{words:U,wordStarts:j}=Yi(v,W,K,N,s);for(let D=0;D<d.length;D++){let I=d[D];if(D<d.length-1)e.state.env.set(I,O(U[D]??""));else if(D<j.length){let M=v.substring(j[D]);M=sc(M,W,s),M=O(M),e.state.env.set(I,M)}else e.state.env.set(I,"")}return L("","",P?0:1)}function la(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return T("bash: return: can only `return' from a function or sourced script\n");let n=e.state.lastExitCode;if(t.length>0){let r=t[0],s=Number.parseInt(r,10);if(r===""||Number.isNaN(s)||!/^-?\d+$/.test(r))return T(`bash: return: ${r}: numeric argument required
645
+ `,2);n=(s%256+256)%256}throw new Le(n)}var Rr=`set: usage: set [-eux] [+eux] [-o option] [+o option]
646
+ Options:
647
+ -e Exit immediately if a command exits with non-zero status
648
+ +e Disable -e
649
+ -u Treat unset variables as an error when substituting
650
+ +u Disable -u
651
+ -x Print commands and their arguments as they are executed
652
+ +x Disable -x
653
+ -o errexit Same as -e
654
+ +o errexit Disable errexit
655
+ -o nounset Same as -u
656
+ +o nounset Disable nounset
657
+ -o pipefail Return status of last failing command in pipeline
658
+ +o pipefail Disable pipefail
659
+ -o xtrace Same as -x
660
+ +o xtrace Disable xtrace
661
+ `,ff=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]]),Xs=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]]),hf=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],mf=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function ca(e,t,n){t!==null&&(n&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=n,qn(e))}function vm(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Am(e,t,n){let r=Ae(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=ce(e,n,i)??"";s>0&&t.append(" "),t.append(`[${i}]=`),t.reserve(Zs(o)),t.append(bn(o))}t.append(")")}function km(e,t){if(/^[a-zA-Z0-9_]+$/.test(t)){e.append(t);return}e.reserve(Zs(t)),e.append(bn(t))}function Pm(e,t,n){let r=Ct(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=ce(e,n,i)??"";s>0&&t.append(" "),t.append("["),km(t,i),t.append("]="),t.reserve(Zs(o)),t.append(bn(o))}t.append(" )")}function xm(e){let t=new Set,n=e.state.associativeArrays??new Set;for(let[r,s]of e.state.arrays??[])s.kind==="indexed"&&!n.has(r)&&t.add(r);return t}function $m(e){return e.state.associativeArrays??new Set}function df(e){let t=hf.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),n=mf.map(r=>`${r.padEnd(16)}off`);return`${[...t,...n].sort().join(`
662
+ `)}
663
+ `}function pf(e){let t=hf.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),n=mf.map(r=>`set +o ${r}`);return`${[...t,...n].sort().join(`
664
+ `)}
665
+ `}function fa(e,t){if(t.includes("--help"))return te(Rr);if(t.length===0){let i=xm(e),o=$m(e),a=[];for(let[u,f]of e.state.env)/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)&&(i.has(u)||o.has(u)||a.push([u,f]));let l=[...a.map(([u,f])=>({kind:"scalar",name:u,value:f})),...Array.from(i,u=>({kind:"indexed",name:u})),...Array.from(o,u=>({kind:"associative",name:u}))];l.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);let c=new Vn(e.limits.maxOutputSize,"set");for(let u of l)e.executionScope.consumeWork(1,"set variable listing"),u.kind==="scalar"?(c.append(u.name).append("="),c.reserve(Yu(u.value)),c.append(ve(u.value))):u.kind==="indexed"?Am(e,c,u.name):Pm(e,c,u.name),c.append(`
666
+ `);return te(c.build())}let n=[],r=()=>n.length>0?te(n.join("")):re,s=0;for(;s<t.length;){let i=t[s];if((i==="-o"||i==="+o")&&vm(t,s)){let o=t[s+1];if(!Xs.has(o)){let a=`bash: set: ${o}: invalid option name
667
+ ${Rr}`;if(e.state.options.posix)throw new lt(1,"",a);return T(a)}ca(e,Xs.get(o)??null,i==="-o"),s+=2;continue}if(i==="-o"){n.push(df(e)),s++;continue}if(i==="+o"){n.push(pf(e)),s++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let o=i[0]==="-",a=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=s+1+a;if(u<t.length&&!t[u].startsWith("-")&&!t[u].startsWith("+")){let d=t[u];if(!Xs.has(d)){let p=`bash: set: ${d}: invalid option name
668
+ ${Rr}`;if(e.state.options.posix)throw new lt(1,"",p);return T(p)}ca(e,Xs.get(d)??null,o),a++;continue}n.push(o?df(e):pf(e));continue}if(!ff.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
669
+ ${Rr}`;if(e.state.options.posix)throw new lt(1,"",u);return T(u)}ca(e,ff.get(c)??null,o)}s+=1+a;continue}if(i==="--")return ua(e,t.slice(s+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,qn(e),s+1<t.length)return ua(e,t.slice(s+1)),r();s++;continue}if(i==="+"){s++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
670
+ ${Rr}`;if(e.state.options.posix)throw new lt(1,"",o);return T(o)}return ua(e,t.slice(s)),r()}return r()}function ua(e,t){let n=1;for(;e.state.env.has(String(n));)e.state.env.delete(String(n)),n++;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 da(e,t){let n=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
671
+ `;if(e.state.options.posix)throw new lt(1,"",a);return T(a)}n=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(n>r){let o=`bash: shift: shift count out of range
672
+ `;if(e.state.options.posix)throw new lt(1,"",o);return T(o)}if(n===0)return re;let s=[];for(let o=1;o<=r;o++)s.push(e.state.env.get(String(o))||"");let i=s.slice(n);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(" ")),re}async function pa(e,t){let n=t;if(n.length>0&&n[0]==="--"&&(n=n.slice(1)),n.length===0)return L("",`bash: source: filename argument required
673
+ `,2);let r=n[0],s=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),s=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),s=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),s=f}catch{}}}if(i===null)return T(`bash: ${r}: No such file or directory
674
+ `);let o=new Map;if(n.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=n.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,n.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 $(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=ze(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof q)throw c;if(c instanceof Le)return L(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return T(`bash: ${r}: ${c.message}
675
+ `);throw c}}function yf(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Cm(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function gf(e,t){if(Cm(t))return null;try{let n=new Z,r=ie(n,t);return await J(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}function wf(e,t){if(e.state.localVarStack?.has(t)){let r=Ws(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let s=e.state.localVarStack?.get(t);if(!s||s.length===0)Bs(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),ha(e,t);else{let i=s[s.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),Bs(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 s=e.state.localScopes[r];if(s.has(t)){let i=s.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),s.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||Bs(e,t),!0}}return!1}function ha(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let n=e.state.tempEnvBindings.length-1;n>=0;n--){let r=e.state.tempEnvBindings[n];if(r.has(t)){let s=r.get(t);return s===void 0?e.state.env.delete(t):e.state.env.set(t,s),r.delete(t),!0}}return!1}async function Ef(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let n=t.slice(1,-1),s=new Z().parseWordFromString(n,!0,!1);return oe(e,s)}if(t.includes("$")){let r=new Z().parseWordFromString(t,!1,!1);return oe(e,r)}return t}async function ma(e,t){let n="both",r="",s=0;for(let i of t){if(i==="-v"){n="variable";continue}if(i==="-f"){n="function";continue}if(n==="function"){e.state.functions.delete(i);continue}if(n==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],p=c[2];if(je(e,d)){r+=`bash: unset: ${d}: cannot unset: readonly variable
676
+ `,s=1;continue}if(p==="@"||p==="*"){dr(e,d),e.state.env.delete(d);continue}let h=e.state.associativeArrays?.has(d);if(h){let y=await Ef(e,p);$n(e,d,y);continue}let m=bt(e,d),E=e.state.declaredVars?.has(d);if((e.state.env.has(d)||E)&&!m&&!h){r+=`bash: unset: ${d}: not an array variable
677
+ `,s=1;continue}let g=await gf(e,p);if(g===null&&m){r+=`bash: unset: ${p}: not a valid identifier
678
+ `,s=1;continue}if(g===null)continue;if(g<0){let y=Q(e,d),b=y.length,v=e.state.currentLine;if(b===0){r+=`bash: line ${v}: unset: [${g}]: bad array subscript
679
+ `,s=1;continue}let k=b+g;if(k<0){r+=`bash: line ${v}: unset: [${g}]: bad array subscript
680
+ `,s=1;continue}let A=y[k][0];$n(e,d,A);continue}$n(e,d,g);continue}if(!yf(i)){r+=`bash: unset: \`${i}': not a valid identifier
681
+ `,s=1;continue}let u=i;if(fe(e,i)){let d=Ue(e,i);d&&d!==i&&(u=d)}if(je(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
682
+ `,s=1;continue}dr(e,u);let f=bo(e,u);if(f!==void 0&&f!==e.state.callDepth)wf(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 h=Ws(e,u);h?h.value===void 0?e.state.env.delete(u):e.state.env.set(u,h.value):e.state.env.delete(u)}else e.state.env.delete(u)}else ha(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(je(e,c)){r+=`bash: unset: ${c}: cannot unset: readonly variable
683
+ `,s=1;continue}if(u==="@"||u==="*"){dr(e,c),e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let m=await Ef(e,u);$n(e,c,m);continue}let d=bt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
684
+ `,s=1;continue}let h=await gf(e,u);if(h===null&&d){r+=`bash: unset: ${u}: not a valid identifier
685
+ `,s=1;continue}if(h===null)continue;if(h<0){let m=Q(e,c),E=m.length,S=e.state.currentLine;if(E===0){r+=`bash: line ${S}: unset: [${h}]: bad array subscript
686
+ `,s=1;continue}let g=E+h;if(g<0){r+=`bash: line ${S}: unset: [${h}]: bad array subscript
687
+ `,s=1;continue}let y=m[g][0];$n(e,c,y);continue}$n(e,c,h);continue}if(!yf(i)){r+=`bash: unset: \`${i}': not a valid identifier
688
+ `,s=1;continue}let a=i;if(fe(e,i)){let c=Ue(e,i);c&&c!==i&&(a=c)}if(je(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
689
+ `,s=1;continue}dr(e,a);let l=bo(e,a);if(l!==void 0&&l!==e.state.callDepth)wf(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=Ws(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 ha(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return L("",r,s)}function Tt(e,t,n,r){let s=n+B(t)+1;if(s>r)throw new $(`shopt: output size limit exceeded (${r} bytes)`,"output_size");return e.push(t),s}var ya=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Nm=["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 ya.includes(e)}function Rm(e){return Nm.includes(e)}function bf(e,t){let n=e.limits.maxArrayElements;if(t.length>n)throw new $(`shopt: argument limit exceeded (${n})`,"array_elements");let r=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),s=!1,i=!1,o=!1,a=!1,l=!1,c=[],u=0;for(;u<t.length;){let E=t[u];if(E==="--"){u++;break}if(E.startsWith("-")&&E.length>1){for(let S=1;S<E.length;S++){let g=E[S];switch(g){case"s":s=!0;break;case"u":i=!0;break;case"p":o=!0;break;case"q":a=!0;break;case"o":l=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${g}: invalid option
690
+ `}}}u++}else break}for(;u<t.length;)c.push(t[u]),u++;if(l)return Om(e,c,s,i,o,a);if(s&&i)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
691
+ `};if(c.length===0){if(s||i){let S=[];for(let g of ya){let y=e.state.shoptOptions[g];s&&y?S.push(o?`shopt -s ${g}`:`${g} on`):i&&!y&&S.push(o?`shopt -u ${g}`:`${g} off`)}return{exitCode:0,stdout:S.length>0?`${S.join(`
692
+ `)}
693
+ `:"",stderr:""}}let E=[];for(let S of ya){let g=e.state.shoptOptions[S];E.push(o?`shopt ${g?"-s":"-u"} ${S}`:`${S} ${g?"on":"off"}`)}return{exitCode:0,stdout:`${E.join(`
694
+ `)}
695
+ `,stderr:""}}let f=!1,d=[],p=0,h=[],m=0;for(let E of c){if(!Ys(E)&&!Rm(E)){p=Tt(d,`shopt: ${E}: invalid shell option name`,p,r),f=!0;continue}if(s)Ys(E)&&(e.state.shoptOptions[E]=!0,ki(e));else if(i)Ys(E)&&(e.state.shoptOptions[E]=!1,ki(e));else if(Ys(E)){let S=e.state.shoptOptions[E];a?S||(f=!0):o?(m=Tt(h,`shopt ${S?"-s":"-u"} ${E}`,m,r),S||(f=!0)):(m=Tt(h,`${E} ${S?"on":"off"}`,m,r),S||(f=!0))}else a?f=!0:o?(m=Tt(h,`shopt -u ${E}`,m,r),f=!0):(m=Tt(h,`${E} off`,m,r),f=!0)}return{exitCode:f?1:0,stdout:h.length>0?`${h.join(`
696
+ `)}
697
+ `:"",stderr:d.length>0?`${d.join(`
698
+ `)}
699
+ `:""}}function Om(e,t,n,r,s,i){let o=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),a=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"]]),l=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...l].sort();if(t.length===0){let m=[];for(let E of c){let S=l.includes(E),g=a.get(E),y=S||!g?!1:e.state.options[g];n&&!y||r&&y||m.push(s?`set ${y?"-o":"+o"} ${E}`:`${E} ${y?"on":"off"}`)}return{exitCode:0,stdout:m.length>0?`${m.join(`
700
+ `)}
701
+ `:"",stderr:""}}let u=!1,f=[],d=0,p=[],h=0;for(let m of t){let E=a.has(m),S=l.includes(m);if(!E&&!S){d=Tt(f,`shopt: ${m}: invalid option name`,d,o),u=!0;continue}if(S){n||r||(i?u=!0:s?(h=Tt(p,`set +o ${m}`,h,o),u=!0):(h=Tt(p,`${m} off`,h,o),u=!0));continue}let g=a.get(m);if(g)if(n)g==="vi"?e.state.options.emacs=!1:g==="emacs"&&(e.state.options.vi=!1),e.state.options[g]=!0,qn(e);else if(r)e.state.options[g]=!1,qn(e);else{let y=e.state.options[g];i?y||(u=!0):s?(h=Tt(p,`set ${y?"-o":"+o"} ${m}`,h,o),y||(u=!0)):(h=Tt(p,`${m} ${y?"on":"off"}`,h,o),y||(u=!0))}}return{exitCode:u?1:0,stdout:p.length>0?`${p.join(`
702
+ `)}
703
+ `:"",stderr:f.length>0?`${f.join(`
704
+ `)}
705
+ `:""}}function Dm(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function me(e,t,n,r){return((...s)=>{cr(t,n,`${r} call`);let i=e(...s);return Dm(i)?i.then(o=>(cr(t,n,`${r} post-await`),o),o=>{throw cr(t,n,`${r} post-await`),o}):(cr(t,n,`${r} return`),i)})}function Im(e,t,n){let r={readFile:me(e.readFile.bind(e),t,n,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:me(e.readFileBytes.bind(e),t,n,"fs.readFileBytes")}:Object.create(null),readFileBuffer:me(e.readFileBuffer.bind(e),t,n,"fs.readFileBuffer"),writeFile:me(e.writeFile.bind(e),t,n,"fs.writeFile"),appendFile:me(e.appendFile.bind(e),t,n,"fs.appendFile"),exists:me(e.exists.bind(e),t,n,"fs.exists"),stat:me(e.stat.bind(e),t,n,"fs.stat"),mkdir:me(e.mkdir.bind(e),t,n,"fs.mkdir"),readdir:me(e.readdir.bind(e),t,n,"fs.readdir"),rm:me(e.rm.bind(e),t,n,"fs.rm"),cp:me(e.cp.bind(e),t,n,"fs.cp"),mv:me(e.mv.bind(e),t,n,"fs.mv"),resolvePath:me(e.resolvePath.bind(e),t,n,"fs.resolvePath"),getAllPaths:me(e.getAllPaths.bind(e),t,n,"fs.getAllPaths"),chmod:me(e.chmod.bind(e),t,n,"fs.chmod"),symlink:me(e.symlink.bind(e),t,n,"fs.symlink"),link:me(e.link.bind(e),t,n,"fs.link"),readlink:me(e.readlink.bind(e),t,n,"fs.readlink"),lstat:me(e.lstat.bind(e),t,n,"fs.lstat"),realpath:me(e.realpath.bind(e),t,n,"fs.realpath"),utimes:me(e.utimes.bind(e),t,n,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=me(e.readdirWithFileTypes.bind(e),t,n,"fs.readdirWithFileTypes")),r}function ga(e,t){if(!e.requireDefenseContext)return e;let n=`command:${t}`,r=Object.getOwnPropertyDescriptors(e);r.fs={value:Im(e.fs,e.requireDefenseContext,n),enumerable:!0,configurable:!0,writable:!0};let s=Object.defineProperties(Object.create(Object.getPrototypeOf(e)),r);return e.exec&&(s.exec=me(e.exec,e.requireDefenseContext,n,"exec")),e.origCommand&&(s.origCommand=me(e.origCommand,e.requireDefenseContext,n,"origCommand")),e.fetch&&(s.fetch=me(e.fetch,e.requireDefenseContext,n,"fetch")),e.sleep&&(s.sleep=me(e.sleep,e.requireDefenseContext,n,"sleep")),e.getRegisteredCommands&&(s.getRegisteredCommands=me(e.getRegisteredCommands,e.requireDefenseContext,n,"getRegisteredCommands")),s}var Sf="+ ";async function vf(e){let t=e.state.env.get("PS4");if(t===void 0)return Sf;if(t==="")return"";let n=e.state.options.xtrace;e.state.options.xtrace=!1;try{let s=new Z().parseWordFromString(t,!1,!1);return await oe(e,s)}catch(r){if(r instanceof ue&&!r.fatal)return t;if(r instanceof Zt||r instanceof Error&&r.name==="AbortError")throw r;return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
706
+ `,t||Sf}finally{e.state.options.xtrace=n}}function Tm(e){return e.map(t=>_m(t)).join(" ")}function _m(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let n=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
707
+ `),s=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(n||r||s||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
708
+ `?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 Af(e,t,n){if(!e.state.options.xtrace)return"";let r=await vf(e),s=[t,...n],i=Tm(s);return`${r}${i}
709
+ `}async function kf(e,t,n){return e.state.options.xtrace?`${await vf(e)}${t}=${n}
710
+ `:""}function Js(e,t,n){return Xt([t,n],"",e.limits.maxStringLength,"array assignment")}async function Pf(e,t){let n=new Map,r="";for(let s of t.assignments){let i=s.name;if(s.array){let u=await Lm(e,t,i,s.array,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=s.value?await oe(e,s.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:L("",`bash: ${i}: bad array subscript
711
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await Vm(e,t,l[1],l[2],o,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(u.continueToNext)continue}let c=await zm(e,t,i,o,s.append,n);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:n}}async function Lm(e,t,n,r,s,i){let o="";if(/\[.+\]$/.test(n))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: cannot assign list to array member
712
+ `,1)};if(fe(e,n)){let h=In(e,n);if(h===void 0||h==="")throw new q(1,"","");let m=Ue(e,n);if(m&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(m))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: cannot assign list to array member
713
+ `,1)}}if(je(e,n)){if(t.name)return o+=`bash: ${n}: readonly variable
714
+ `,{continueToNext:!0,xtraceOutput:o};let h=de(e,n);if(h)return{continueToNext:!1,xtraceOutput:"",error:h}}let a=e.state.associativeArrays?.has(n),l=Pe(e,n),c=l?Ve(l):void 0,u=e.state.env.get(n),f=()=>{e.state.arrays??=new Map,c?e.state.arrays.set(n,c):e.state.arrays.delete(n),u===void 0?e.state.env.delete(n):e.state.env.set(n,u)},d=Fm(r),p=()=>{Ee(e,n),e.state.env.delete(n)};try{a&&d?await Mm(e,t,n,r,s,p,h=>{o+=h}):d?await Bm(e,n,r,s,p):await Wm(e,n,r,s,p)}catch(h){throw f(),h}if(t.name){i.set(n,e.state.env.get(n));let m=`(${r.map(E=>jn(E)).join(" ")})`;e.state.env.set(n,m)}return{continueToNext:!0,xtraceOutput:o}}function Fm(e){return e.some(t=>{if(t.parts.length>=2){let n=t.parts[0],r=t.parts[1];if(n.type!=="Glob"||!n.pattern.startsWith("["))return!1;if(n.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let s=t.parts[2];return s.type!=="Literal"?!1:s.value.startsWith("]=")||s.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):n.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function Mm(e,t,n,r,s,i,o){let a=[];for(let l of r){if(a.length>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let c=bi(l);if(c){let{key:u,valueParts:f,append:d}=c,p;f.length>0?(p=await oe(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(p=un(e,p))):p="",a.push({type:"keyed",key:u,value:p,append:d})}else{let u=await oe(e,l);a.push({type:"invalid",expandedValue:u})}}e.executionScope.consumeWork(a.length,"associative array assignment"),s||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=ce(e,n,l.key)??"";G(e,n,l.key,Js(e,c,l.value),"associative")}else G(e,n,l.key,l.value,"associative");else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${n}: ${l.expandedValue}: must use subscript when assigning associative array
715
+ `)}}async function Bm(e,t,n,r,s){let i=[],o=0;for(let l of n){let c=bi(l);if(c){if(o>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let{key:u,valueParts:f,append:d}=c,p;f.length>0?(p=await oe(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(p=un(e,p))):p="",i.push({type:"keyed",indexExpr:u,value:p,append:d}),o++}else{let u=await kt(e,l);if(u.values.length>e.limits.maxArrayElements-o)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push({type:"non-keyed",values:u.values}),o+=u.values.length}}e.executionScope.consumeWork(o,"indexed array assignment"),r||s();let a=0;for(let l of i)if(l.type==="keyed"){let c;try{let u=new Z,f=ie(u,l.indexExpr);c=await J(e,f.expression,!1)}catch{if(/^-?\d+$/.test(l.indexExpr))c=Number.parseInt(l.indexExpr,10);else{let u=e.state.env.get(l.indexExpr);c=u?Number.parseInt(u,10):0,Number.isNaN(c)&&(c=0)}}if(l.append){let u=ce(e,t,c)??"";G(e,t,c,Js(e,u,l.value))}else G(e,t,c,l.value);a=c+1}else for(let c of l.values)G(e,t,a++,c)}async function Wm(e,t,n,r,s){let i=[];for(let a of n){let l=await kt(e,a);for(let c of l.values){if(i.length>=e.limits.maxArrayElements)throw new $(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push(c)}}let o=0;if(e.executionScope.consumeWork(i.length,"indexed array assignment"),r){let a=Q(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&&(G(e,t,0,l),e.state.env.delete(t),o=1)}}else s();for(let a=0;a<i.length;a++)G(e,t,o+a,i[a])}async function Vm(e,t,n,r,s,i,o){let a=n;if(fe(e,n)){let f=Ue(e,n);if(f&&f!==n){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: \`${f}': not a valid identifier
716
+ `,1)};a=f}}if(je(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=de(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await xf(e,r);else{let f=await wa(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=String(f.index)}let u=i?Js(e,ce(e,a,c)||"",s):s;return t.name||G(e,a,c,u,l?"associative":"indexed"),{continueToNext:!0,xtraceOutput:""}}async function xf(e,t){let n;if(t.startsWith("'")&&t.endsWith("'"))n=t.slice(1,-1);else if(t.startsWith('"')&&t.endsWith('"')){let r=t.slice(1,-1),i=new Z().parseWordFromString(r,!0,!1);n=await oe(e,i)}else if(t.includes("$")){let s=new Z().parseWordFromString(t,!1,!1);n=await oe(e,s)}else n=t;return n}async function wa(e,t,n){let r=n;n.startsWith('"')&&n.endsWith('"')&&n.length>=2&&(r=n.slice(1,-1));let s;if(/^-?\d+$/.test(r))s=Number.parseInt(r,10);else{try{let i=new Z,o=ie(i,r);s=await J(e,o.expression,!1)}catch(i){if(i instanceof q||i instanceof Ce)throw i;if(i instanceof ue){let l=`bash: line ${e.state.currentLine}: ${n}: ${i.message}
717
+ `;if(i.fatal)throw new q(1,"",l);return{index:0,error:L("",l,1)}}let o=e.state.currentLine;return{index:0,error:L("",`bash: line ${o}: ${t}[${n}]: bad array subscript
718
+ `,1)}}Number.isNaN(s)&&(s=0)}if(s<0){let i=Q(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:L("",`bash: line ${a}: ${t}[${n}]: bad array subscript
719
+ `,1)}}if(s=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+s,s<0){let a=e.state.currentLine;return{index:0,error:L("",`bash: line ${a}: ${t}[${n}]: bad array subscript
720
+ `,1)}}}return{index:s}}async function zm(e,t,n,r,s,i){let o="",a=n,l=null;if(fe(e,n)){let f=hs(e,n,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: circular name reference
721
+ `,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(je(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
722
+ `,{continueToNext:!0,xtraceOutput:o};let f=de(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(Cr(e,a))try{let f=new Z;if(s){let p=`(${e.state.env.get(a)||"0"}) + (${r})`,h=ie(f,p);c=String(await J(e,h.expression))}else{let d=ie(f,r);c=String(await J(e,d.expression))}}catch{c="0"}else{let f=bt(e,a)?ce(e,a,0):e.state.env.get(a);c=s?Js(e,f||"",r):r}c=rr(e,a,c),o+=await kf(e,a,c);let u;return l?u=await Um(e,l):bt(e,a)&&(u="0"),t.name?u===void 0&&(i.set(a,e.state.env.get(a)),e.state.env.set(a,c)):(u===void 0?e.state.env.set(a,c):G(e,a,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 Um(e,t){let{arrayName:n,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(n))return xf(e,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new Z,a=ie(o,r);i=await J(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=Q(e,n);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return String(i)}async function Nf(e,t,n,r){let s=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let m of t)if(m.startsWith("-")&&m.length>1)for(let E of m.slice(1))E==="t"?s=!0:E==="p"?i=!0:E==="P"?o=!0:E==="a"?a=!0:E==="f"&&(l=!0);else c.push(m);let u="",f="",d=0,p=!1,h=!1;for(let m of c){let E=!1;if(o){if(a){let k=await r(m);if(k.length>0){for(let A of k)u+=`${A}
723
+ `;p=!0,E=!0}}else{let k=await n(m);k&&(u+=`${k}
724
+ `,p=!0,E=!0)}E||(h=!0);continue}let S=!l&&e.state.functions.has(m);if(a&&S){if(!i)if(s)u+=`function
725
+ `;else{let k=e.state.functions.get(m),A=k?$f(m,k):`${m} is a function
726
+ `;u+=A}E=!0}let g=e.state.env.get(`BASH_ALIAS_${m}`);if(g!==void 0&&(a||!E)&&(i||(s?u+=`alias
727
+ `:u+=`${m} is aliased to \`${g}'
728
+ `),E=!0,!a)||Si.has(m)&&(a||!E)&&(i||(s?u+=`keyword
729
+ `:u+=`${m} is a shell keyword
730
+ `),E=!0,!a))continue;if(!a&&S&&!E){if(!i)if(s)u+=`function
731
+ `;else{let k=e.state.functions.get(m),A=k?$f(m,k):`${m} is a function
732
+ `;u+=A}E=!0;continue}if(!(rn.has(m)&&(a||!E)&&(i||(s?u+=`builtin
733
+ `:u+=`${m} is a shell builtin
734
+ `),E=!0,!a))){if(a){let k=await r(m);for(let A of k)i?u+=`${A}
735
+ `:s?u+=`file
736
+ `:u+=`${m} is ${A}
737
+ `,p=!0,E=!0}else if(!E){let k=await n(m);k&&(i?u+=`${k}
738
+ `:s?u+=`file
739
+ `:u+=`${m} is ${k}
740
+ `,p=!0,E=!0)}if(!E&&(h=!0,!s&&!i)){let k=!0;if(m.includes("/")){let A=e.fs.resolvePath(e.state.cwd,m);await e.fs.exists(A)&&(k=!1)}k&&(f+=`bash: type: ${m}: not found
741
+ `)}}}return i?d=h&&!p?1:0:d=h?1:0,L(u,f,d)}function $f(e,t){let n;return t.body.type==="Group"?n=t.body.body.map(s=>Or(s)).join("; "):n=Or(t.body),`${e} is a function
742
+ ${e} ()
743
+ {
744
+ ${n}
745
+ }
746
+ `}function Or(e){if(Array.isArray(e))return e.map(t=>Or(t)).join("; ");if(e.type==="Statement"){let t=[];for(let n=0;n<e.pipelines.length;n++){let r=e.pipelines[n];t.push(jm(r)),e.operators[n]&&t.push(e.operators[n])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,n=[];t.name&&n.push(Cf(t.name));for(let r of t.args)n.push(Cf(r));return n.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>Or(r)).join("; ")}; }`:"..."}function Cf(e){return e.parts.map(Rf).join("")}function Rf(e){switch(e.type){case"Literal":return e.value;case"Escaped":return`\\${e.value}`;case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(Rf).join("")}"`;default:return we(F.word([e]))}}function jm(e){let t=e.commands.map(n=>Or(n));return(e.negated?"! ":"")+t.join(" | ")}async function Of(e,t,n,r){let s="",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?s+=`${a} is an alias for "${l}"
747
+ `:s+=`alias ${a}='${l}'
748
+ `;else if(Si.has(a))r?s+=`${a} is a shell keyword
749
+ `:s+=`${a}
750
+ `;else if(rn.has(a))r?s+=`${a} is a shell builtin
751
+ `:s+=`${a}
752
+ `;else if(e.state.functions.has(a))r?s+=`${a} is a function
753
+ `:s+=`${a}
754
+ `;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?s+=`${a} is ${a}
755
+ `:s+=`${a}
756
+ `,u=!0)}catch{}u||(r&&(i+=`${a}: not found
757
+ `),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 h=await e.fs.stat(p);if(!h.isDirectory&&(h.mode&73)!==0){f=p;break}}catch{}}f||(f=`/usr/bin/${a}`),r?s+=`${a} is ${f}
758
+ `:s+=`${f}
759
+ `}else r&&(i+=`${a}: not found
760
+ `),o=1}return L(s,i,o)}async function Df(e,t){if(t.includes("/")){let s=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(s)){try{let i=await e.fs.stat(s);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 s of r){if(!s)continue;let o=`${s.startsWith("/")?s:e.fs.resolvePath(e.state.cwd,s)}/${t}`;if(await e.fs.exists(o)){try{let a=await e.fs.stat(o);if(a.isDirectory||(a.mode&73)===0)continue}catch{continue}return`${s}/${t}`}}if(e.commands.has(t)){for(let s of r)if(s==="/usr/bin"||s==="/bin")return`${s}/${t}`;return`/usr/bin/${t}`}return null}function If(e,t){let n=!0,r=e.signal?new AbortController:void 0,s=new WeakMap,i=()=>{if(!n)throw new tt("",`bash: ${t} used its context after cancellation
761
+ `)},o=f=>{if(f===null||typeof f!="object"&&typeof f!="function")return f;let d=s.get(f);if(d!==void 0)return d;if(typeof f=="object"&&qa(f))return f;if(f instanceof Uint8Array){let E=new Uint8Array(f);return s.set(f,E),E}if(f instanceof ArrayBuffer){let E=f.slice(0);return s.set(f,E),E}if(f instanceof Promise){let E=f.then(S=>(i(),o(S)));return s.set(f,E),E}if(typeof f=="function"){let E=function(...S){return i(),o(Reflect.apply(f,this,S))};return s.set(f,E),E}let p=Object.getPrototypeOf(f);if(Array.isArray(f)||p===Object.prototype||p===null){let E=Array.isArray(f)?[]:Object.create(p);s.set(f,E);let S=Object.getOwnPropertyDescriptors(f);for(let g of Object.values(S)){if("value"in g){let y=g.value;g.value=typeof y=="function"?(...b)=>(i(),o(Reflect.apply(y,f,b))):o(y)}if(g.get){let y=g.get;g.get=()=>(i(),o(Reflect.apply(y,f,[])))}if(g.set){let y=g.set;g.set=b=>{i(),Reflect.apply(y,f,[b])}}}return Object.defineProperties(E,S),E}let h=new Map,m=new La(f,{get(E,S){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);let g=Reflect.get(E,S,E);if(typeof g!="function")return o(g);if(h.has(S))return h.get(S);let y=(...b)=>(i(),o(Reflect.apply(g,E,b)));return h.set(S,y),y},set(E,S,g){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);return Reflect.set(E,S,g,E)}});return s.set(f,m),m},a=f=>o(f),l=f=>f&&((...d)=>(i(),o(f(...d)))),c=f=>({value:f,enumerable:!0,configurable:!0,writable:!0}),u=Object.getOwnPropertyDescriptors(e);return Object.assign(u,{fs:c(a(e.fs)),env:c(a(e.env)),limits:c(Object.freeze({...e.limits})),exportedEnv:c(e.exportedEnv?Object.freeze({...e.exportedEnv}):void 0),executionScope:c(e.executionScope?a(e.executionScope):void 0),fileDescriptors:c(e.fileDescriptors?a(e.fileDescriptors):void 0),coverage:c(e.coverage?a(e.coverage):void 0),assignShellVariable:c(l(e.assignShellVariable)),exec:c(l(e.exec)),origCommand:c(l(e.origCommand)),execWithInheritedStdin:c(l(e.execWithInheritedStdin)),fetch:c(l(e.fetch)),getRegisteredCommands:c(l(e.getRegisteredCommands)),sleep:c(l(e.sleep)),trace:c(l(e.trace)),invokeTool:c(l(e.invokeTool)),signal:c(r?.signal)}),{context:Object.defineProperties(Object.create(Object.getPrototypeOf(e)),u),revoke(){n=!1,r?.signal.aborted||r?.abort(new tt("",`bash: ${t} context revoked
762
+ `))}}}async function qm(e,t,n,r,s,i){let o=s.remainingTimeMs()??t.limits.maxExecutionTimeMs,a=t.limits.maxExtensionCleanupTimeMs,l,c,u,d=Promise.resolve().then(e).then(h=>({kind:"result",result:h}),h=>({kind:"error",error:h})),p=new Promise(h=>{let m=()=>{n(),h({kind:"abort"})};c=m,i?.addEventListener("abort",m,{once:!0}),i?.aborted&&m(),l=or(()=>{n(),h({kind:"deadline"})},o)});try{let h=await Promise.race([d,p]);if(h.kind==="result")return h.result;if(h.kind==="error")throw h.error;n();let m=await Promise.race([d.then(()=>!0),new Promise(S=>{u=or(()=>S(!1),a)})]),E=h.kind==="deadline"?new tt("",`bash: ${r} exceeded its execution deadline
763
+ `):new tt("",`bash: execution aborted
764
+ `);throw m||s.poisonAfterAbort(E),E}finally{n(),ar(l),ar(u),c&&i?.removeEventListener("abort",c)}}async function Tf(e,t,n,r,s,i,o,a,l=!1){let{ctx:c,runCommand:u}=e;if(c.coverage&&rn.has(t)&&c.coverage.hit(`bash:builtin:${t}`),t==="export")return ta(c,n);if(t==="unset")return ma(c,n);if(t==="exit")return ea(c,n);if(t==="local")return ia(c,n);if(t==="set")return fa(c,n);if(t==="break")return ho(c,n);if(t==="continue")return zo(c,n);if(t==="return")return la(c,n);if(t==="eval"&&c.state.options.posix)return Qs(c,n,s,l);if(t==="shift")return da(c,n);if(t==="getopts")return Ks(c,n);if(t==="compgen")return Fo(c,n);if(t==="complete")return Wo(c,n);if(t==="compopt")return Vo(c,n);if(t==="pushd")return await Xo(c,n);if(t==="popd")return Yo(c,n);if(t==="dirs")return Jo(c,n);if(t==="source"||t===".")return pa(c,n);if(t==="read")return aa(c,n,s,a);if(t==="mapfile"||t==="readarray")return oa(c,n,s);if(t==="declare"||t==="typeset")return Zo(c,n);if(t==="readonly")return Qo(c,n);if(!i){let f=c.state.functions.get(t);if(f)return Hs(c,f,n,s,void 0,l)}if(t==="__just_bash_tee_restore"){if(n.length===0||n.length>c.limits.maxArrayElements)return T(`bash: invalid internal pipeline status restore
765
+ `,2);let f=[];for(let h of n){if(!/^(?:0|[1-9][0-9]{0,2})$/.test(h))return T(`bash: invalid internal pipeline status restore
766
+ `,2);let m=Number(h);if(!Number.isSafeInteger(m)||m>255)return T(`bash: invalid internal pipeline status restore
767
+ `,2);f.push(m)}let d=f[f.length-1]??0,p=[...f].reverse().find(h=>h!==0);return{stdout:"",stderr:"",exitCode:c.state.options.pipefail&&p!==void 0?p:d,internalPipeStatusOverride:f}}if(t==="eval")return Qs(c,n,s,l);if(t==="cd")return await mo(c,n);if(t===":"||t==="true")return re;if(t==="false")return be(!1);if(t==="let")return sa(c,n);if(t==="command")return Gm(e,n,s,l);if(t==="builtin")return Hm(e,n,s,l);if(t==="shopt")return bf(c,n);if(t==="exec"){if(n.length===0)return re;let[f,...d]=n;return{...await u(f,d,[],s,!1,!1,-1,l),internalProducerOmitsShellPrefix:!0}}if(t==="wait")return re;if(t==="type")return await Nf(c,n,f=>Df(c,f),f=>es(c,f));if(t==="hash")return na(c,n);if(t==="help")return ra(c,n);if(t==="["||t==="test"){let f=n;if(t==="["){if(n[n.length-1]!=="]")return T("[: missing `]'\n",2);f=n.slice(0,-1)}return kr(c,f)}return null}async function Gm(e,t,n,r=!1){let{ctx:s,runCommand:i}=e;if(t.length===0)return re;let o=!1,a=!1,l=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let d=c[0];if(d==="--"){c=c.slice(1);break}for(let p of d.slice(1))p==="p"?o=!0:p==="V"?a=!0:p==="v"&&(l=!0);c=c.slice(1)}if(c.length===0)return re;if(l||a)return await Of(s,c,l,a);let[u,...f]=c;return i(u,f,[],n,!0,o,-1,r)}async function Hm(e,t,n,r=!1){let{runCommand:s}=e;if(t.length===0)return re;let i=t;if(i[0]==="--"&&(i=i.slice(1),i.length===0))return re;let o=i[0];if(o!=="__just_bash_tee_restore"&&!rn.has(o))return T(`bash: builtin: ${o}: not a shell builtin
768
+ `);let[,...a]=i;return s(o,a,[],n,!0,!1,-1,r)}async function _f(e,t,n,r,s){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await Jr(i,t,s?"/usr/bin:/bin":void 0);if(!c){i.executionScope.recordUnresolvedCommand(t);let v=i.executionScope.abortOnUnresolvedCommands;if($u(t)){let k=`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
769
+ `;if(v)throw new Ce(t,"",k);return T(k,127)}if(v)throw new Ce(t,"",`bash: ${t}: command not found
770
+ `);return T(`bash: ${t}: command not found
771
+ `,127)}if("error"in c)return c.error==="permission_denied"?T(`bash: ${t}: Permission denied
772
+ `,126):T(`bash: ${t}: No such file or directory
773
+ `,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,n,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=!1,h=o();i.state.fileDescriptors??=new Map;let m={fs:i.fs,fsIdentity:Hr(i.fs),cwd:i.state.cwd,env:i.state.env,assignShellVariable:async(v,k,A)=>{if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(v))throw new Error(`${v}: not a valid identifier`);let x=A===void 0?v:`${v}[${A}]`,R=hs(i,v,k);if(R===void 0)throw new Error(`${v}: circular name reference`);if(R===null)return;let P=R.match(/^([a-zA-Z_][a-zA-Z0-9_]*)(?:\[(.*)\])?$/);if(!P)throw new Error(`${x}: not a valid identifier`);let C=P[1],O=P[2]??A;if(je(i,v)||je(i,C))throw new Error(`${C}: readonly variable`);if(O===void 0)i.state.env.set(C,k);else{let W=i.state.associativeArrays?.has(C)?"associative":"indexed";if(W==="associative"){G(i,C,O,k,W);return}let K=await wa(i,C,O);if(K.error)throw new q(K.error.exitCode,K.error.stdout,K.error.stderr);G(i,C,K.index,k,W)}},exportedEnv:h,get stdin(){return p=!0,d},limits:i.limits,executionScope:u.internalIsExtension?Ka(i.executionScope):i.executionScope,exec:(v,k)=>i.execFn(v,k,!1),execWithInheritedStdin:(v,k)=>i.execFn(v,{...k,stdin:d,stdinKind:"bytes"},!0),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,invokeTool:i.invokeTool},E=u.internalOriginalCommand,S=()=>{};if(E){let v=Object.getOwnPropertyDescriptors(m);v.executionScope={value:i.executionScope,enumerable:!0,configurable:!0,writable:!0};let k=Object.defineProperties(Object.create(Object.getPrototypeOf(m)),v),A=If(k,E.name),x=ga(A.context,E.name);S=A.revoke,m.origCommand=R=>{let P=()=>E.execute(R,x);return E.trusted?Be.runTrustedAsync(P):Be.runUntrustedAsync(P)}}let g=If(m,t),y=ga(g.context,t),b=()=>{g.revoke(),S()};try{let v=()=>_a(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(n,y)),k=()=>qm(v,y,b,t,i.executionScope,i.state.signal),A=u.trusted?await Be.runTrustedAsync(k):await k();return{...A,internalStdinConsumed:A.internalStdinConsumed??(p?r.length:0)}}catch(v){return Ur(v),T(`${t}: ${Pt(Mt(v))}
774
+ `)}}async function Ea(e,t){let n=e.state.inCondition;e.state.inCondition=!0;let r=new en(e.executionScope,"condition"),s=0;try{for(let i of t){let o=await e.executeStatement(i);r.appendResult(o),s=o.exitCode}}catch(i){throw r.prependTo(i),i}finally{e.state.inCondition=n}return r.build(s)}function Dr(e,t,n,r){if(e instanceof Ye)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"break",stdout:t,stderr:n};if(e instanceof Je)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"continue",stdout:t,stderr:n};if(Ta(e)||e instanceof Le||e instanceof qe||e instanceof q)return e instanceof Zt&&e.prependOutput(t,n),{action:"rethrow",stdout:t,stderr:n,error:e};let s=Mt(e);return{action:"error",stdout:t,stderr:`${n}${s}
775
+ `,exitCode:1}}function Lf(e,t){return e!==void 0?{owns:!0,stdin:e}:t!==""?{owns:!0,stdin:t}:{owns:!1}}var Sn=class{ctx;stdoutChunks=[];stderrChunks=[];totalBytes=0;constructor(t){this.ctx=t}append(t,n){let r=B(t)+B(n);r>this.ctx.limits.maxOutputSize-this.totalBytes&&pn(`total output size exceeded (>${this.ctx.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size"),t&&this.stdoutChunks.push(t),n&&this.stderrChunks.push(n),this.totalBytes+=r}appendUnaccounted(t,n){this.ctx.executionScope.appendOutput("stdout",t,"control-flow"),this.ctx.executionScope.appendOutput("stderr",n,"control-flow"),this.append(t,n)}replace(t,n){this.stdoutChunks=[],this.stderrChunks=[],this.totalBytes=0,this.append(t,n)}get stdout(){return this.stdoutChunks.join("")}get stderr(){return this.stderrChunks.join("")}build(t){let n=this.stdout,r=this.stderr;return{stdout:n,stderr:r,exitCode:t,internalOutputAccounting:{stdout:B(n),stderr:B(r)}}}};async function ba(e,t,n){let r=0;try{for(let s of t){let i=await e.executeStatement(s);n.append(i.stdout,i.stderr),r=i.exitCode}}catch(s){if(zr(s)||s instanceof qe||s instanceof q||s instanceof Ce||s instanceof $||s instanceof Kt)throw s.prependOutput(n.stdout,n.stderr),s;return n.appendUnaccounted("",`${Mt(s)}
776
+ `),n.build(1)}return n.build(r)}async function Ff(e,t){return at(e,t.redirections,"",()=>Zm(e,t))}async function Zm(e,t){let n=new Sn(e);for(let r of t.clauses){let s=await Ea(e,r.condition);if(n.append(s.stdout,s.stderr),s.exitCode===0)return ba(e,r.body,n)}return t.elseBody?ba(e,t.elseBody,n):n.build(0)}async function Mf(e,t){return at(e,t.redirections,"",()=>Qm(e,t))}async function Qm(e,t){let n=new Sn(e),r=0,s=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return T(`bash: \`${t.variable}': not a valid identifier
777
+ `);let i=[];if(t.words===null)i=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)i=[];else try{for(let o of t.words){let a=await kt(e,o);De(i,a.values,e.limits.maxArrayElements,"for-loop expansion")}}catch(o){if(o instanceof Qt)return{stdout:"",stderr:o.stderr,exitCode:1};throw o}e.state.loopDepth++;try{for(let o of i){s++,s>e.limits.maxLoopIterations&&pn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n.stdout,n.stderr),e.state.env.set(t.variable,o);try{for(let a of t.body){let l=await e.executeStatement(a);n.append(l.stdout,l.stderr),r=l.exitCode}}catch(a){let l=Dr(a,n.stdout,n.stderr,e.state.loopDepth);if(n.replace(l.stdout,l.stderr),l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return n.build(l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return n.build(r)}async function Bf(e,t){return at(e,t.redirections,"",()=>Km(e,t))}async function Km(e,t){let n=t.line;n!==void 0&&(e.state.currentLine=n);let r=new Sn(e),s=0,i=0;t.init&&await J(e,t.init.expression),e.state.loopDepth++;try{for(;i++,i>e.limits.maxLoopIterations&&pn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r.stdout,r.stderr),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await J(e,t.condition.expression)===0));){try{for(let o of t.body){let a=await e.executeStatement(o);r.append(a.stdout,a.stderr),s=a.exitCode}}catch(o){let a=Dr(o,r.stdout,r.stderr,e.state.loopDepth);if(r.replace(a.stdout,a.stderr),a.action==="break")break;if(a.action==="continue"){t.update&&await J(e,t.update.expression);continue}if(a.action==="error")return r.build(a.exitCode??1);throw a.error}t.update&&await J(e,t.update.expression)}}finally{e.state.loopDepth--}return r.build(s)}async function Wf(e,t,n=""){return at(e,t.redirections,n,r=>Xm(e,t,n,r))}async function Xm(e,t,n,r){let s=new Sn(e),i=0,o=0,a=Lf(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&pn(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let p of t.condition){let h=await e.executeStatement(p);s.append(h.stdout,h.stderr),c=h.exitCode}}catch(p){if(p instanceof Ye){if(s.append(p.stdout,p.stderr),p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=s.stdout,p.stderr=s.stderr,e.state.inCondition=d,p;u=!0}else if(p instanceof Je){if(s.append(p.stdout,p.stderr),p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=s.stdout,p.stderr=s.stderr,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 h=await e.executeStatement(p);s.append(h.stdout,h.stderr),i=h.exitCode}}catch(p){let h=Dr(p,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(h.stdout,h.stderr),h.action==="break")break;if(h.action==="continue")continue;if(h.action==="error")return s.build(h.exitCode??1);throw h.error}}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function Vf(e,t,n=""){return at(e,t.redirections,n,r=>Ym(e,t,n,r))}async function Ym(e,t,n,r){let s=new Sn(e),i=0,o=0,a=Lf(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&pn(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=await Ea(e,t.condition);if(s.append(c.stdout,c.stderr),c.exitCode===0)break;try{for(let u of t.body){let f=await e.executeStatement(u);s.append(f.stdout,f.stderr),i=f.exitCode}}catch(u){let f=Dr(u,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(f.stdout,f.stderr),f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error")return s.build(f.exitCode??1);throw f.error}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function zf(e,t){return at(e,t.redirections,"",()=>Jm(e,t))}async function Jm(e,t){let n=new Sn(e),r=0,s=await oe(e,t.word),i=!1;for(let o=0;o<t.items.length;o++){let a=t.items[o],l=i;if(!i)for(let c of a.patterns){let u=await oe(e,c);yu(c)&&(u=st(u));let f=e.state.shoptOptions.nocasematch,d=e.state.shoptOptions.extglob;if(Xn(s,u,f,d,e.limits.maxCallDepth)){l=!0;break}}if(l){let c=await ba(e,a.body,n);if(n.replace(c.stdout,c.stderr),r=c.exitCode,a.terminator===";;")break;a.terminator===";&"?i=!0:i=!1}else i=!1}return n.build(r)}function Sa(e,t){if(e.parts.length!==1)return!1;let n=e.parts[0];return n.type!=="Literal"?!1:t.includes(n.value)}async function Uf(e,t,n){let r=t.timed?yi():0,s="",i=re,o=0,a=[],l="",c=0,u=t.commands.length>1,f=e.state.lastArg,d=e.state.groupStdin,p=e.state.groupStdinSourceFd;for(let g=0;g<t.commands.length;g++){let y=t.commands[g],b=g===t.commands.length-1,v=g===0;u&&(e.state.lastArg="",e.state.groupStdin=v?d:void 0,e.state.groupStdinSourceFd=v?p:void 0);let k=u&&(!b||!e.state.shoptOptions.lastpipe),A=k?new Map(e.state.env):null,x=k?ut(e.state.arrays):null,R,P=e.executionScope.outputBytesUsed;try{e.state.commandCount=e.executionScope.chargeCommand(),R=await n(y,s)}catch(C){if(C instanceof et)R={stdout:C.stdout,stderr:C.stderr,exitCode:1};else if(C instanceof q&&t.commands.length>1)R={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else if(C instanceof qe&&t.commands.length>1)R={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else throw A&&(e.state.env=A,e.state.arrays=x??new Map),C}finally{u&&(v&&(d=e.state.groupStdin,p=e.state.groupStdinSourceFd),e.state.groupStdin=d,e.state.groupStdinSourceFd=p)}if(A&&(e.state.env=A,e.state.arrays=x??new Map),R=e.executionScope.accountResult(R,"pipeline",e.executionScope.outputBytesUsed-P),!b){let C=t.pipeStderr?.[g]??!1,O=R.internalOutputAccounting?.stdout??0,W=C?R.internalOutputAccounting?.stderr??0:0;Xa(e.executionScope,O+W,"pipeline"),R={...R,internalOutputAccounting:{stdout:0,stderr:C?0:R.internalOutputAccounting?.stderr??0}}}a.push(R.exitCode),R.exitCode!==0&&(o=R.exitCode),b?i=R:(t.pipeStderr?.[g]??!1?s=Ht(R.stderr)+Ft(R):(s=Ft(R),l+=R.stderr,c+=R.internalOutputAccounting?.stderr??0),i={stdout:"",stderr:"",exitCode:R.exitCode})}l&&(i={...i,stderr:l+i.stderr,internalOutputAccounting:{stdout:i.internalOutputAccounting?.stdout??0,stderr:c+(i.internalOutputAccounting?.stderr??0)}});let h=t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand",m=i.internalPipeStatusOverride??a;if(h){Ee(e,"PIPESTATUS");for(let g=0;g<m.length;g++)G(e,"PIPESTATUS",g,String(m[g]))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let y=(yi()-r)/1e3,b=Math.floor(y/60),v=y%60,k;t.timePosix?k=`real ${y.toFixed(2)}
778
+ user 0.00
779
+ sys 0.00
780
+ `:k=`
781
+ real ${`${b}m${v.toFixed(3)}s`}
782
+ user 0m0.000s
783
+ sys 0m0.000s
784
+ `,i={...i,stderr:i.stderr+k}}u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=f),i=e.executionScope.accountResult(i,"pipeline");let{internalPipeStatusOverride:E,...S}=i;return S}function va(e){return e?{...e,options:e.options?[...e.options]:void 0,actions:e.actions?[...e.actions]:void 0}:void 0}function ey(e){return e?new Map(Array.from(e,([t,n])=>[t,va(n)])):void 0}function ty(e){if(!e)return;let t=new Map,n=new Map;for(let[r,s]of e){let i=t.get(s);i||(i=new Set(s),t.set(s,i)),n.set(r,i)}return n}function ny(e){return e?.map(t=>new Map(Array.from(t,([n,r])=>[n,r?{kind:r.kind,elements:new Map(r.elements)}:void 0])))}function ry(e){return e?new Map(Array.from(e,([t,n])=>[t,n.map(r=>({...r}))])):void 0}function Aa(e){let t={env:e.env,arrays:e.arrays,cwd:e.cwd,previousDir:e.previousDir,lastExitCode:e.lastExitCode,lastArg:e.lastArg,currentLine:e.currentLine,options:e.options,shoptOptions:e.shoptOptions,fileDescriptors:e.fileDescriptors,inputFds:e.inputFds,fdAliases:e.fdAliases,closedStandardFds:e.closedStandardFds,nextFd:e.nextFd,readonlyVars:e.readonlyVars,associativeArrays:e.associativeArrays,namerefs:e.namerefs,boundNamerefs:e.boundNamerefs,invalidNamerefs:e.invalidNamerefs,integerVars:e.integerVars,lowercaseVars:e.lowercaseVars,uppercaseVars:e.uppercaseVars,exportedVars:e.exportedVars,tempExportedVars:e.tempExportedVars,localExportedVars:e.localExportedVars,declaredVars:e.declaredVars,localScopes:e.localScopes,localArrayScopes:e.localArrayScopes,localVarDepth:e.localVarDepth,localVarStack:e.localVarStack,fullyUnsetLocals:e.fullyUnsetLocals,tempEnvBindings:e.tempEnvBindings,mutatedTempEnvVars:e.mutatedTempEnvVars,accessedTempEnvVars:e.accessedTempEnvVars,functions:e.functions,callDepth:e.callDepth,sourceDepth:e.sourceDepth,callLineStack:e.callLineStack,funcNameStack:e.funcNameStack,sourceStack:e.sourceStack,currentSource:e.currentSource,inCondition:e.inCondition,loopDepth:e.loopDepth,parentHasLoopContext:e.parentHasLoopContext,errexitSafe:e.errexitSafe,directoryStack:e.directoryStack,hashTable:e.hashTable,completionSpecs:e.completionSpecs,defaultCompletionSpec:e.defaultCompletionSpec,emptyCompletionSpec:e.emptyCompletionSpec,groupStdin:e.groupStdin,groupStdinSourceFd:e.groupStdinSourceFd,bashPid:e.bashPid,expansionExitCode:e.expansionExitCode,expansionStderr:e.expansionStderr};e.env=new Map(e.env),e.arrays=ut(e.arrays),e.options={...e.options},e.shoptOptions={...e.shoptOptions},e.fileDescriptors=e.fileDescriptors?new Map(e.fileDescriptors):void 0,e.inputFds=e.inputFds?new Set(e.inputFds):void 0,e.fdAliases=ty(e.fdAliases),e.closedStandardFds=e.closedStandardFds?new Set(e.closedStandardFds):void 0,e.readonlyVars=new Set(e.readonlyVars),e.associativeArrays=new Set(e.associativeArrays),e.namerefs=new Set(e.namerefs),e.boundNamerefs=new Set(e.boundNamerefs),e.invalidNamerefs=new Set(e.invalidNamerefs),e.integerVars=new Set(e.integerVars),e.lowercaseVars=new Set(e.lowercaseVars),e.uppercaseVars=new Set(e.uppercaseVars),e.exportedVars=new Set(e.exportedVars),e.tempExportedVars=new Set(e.tempExportedVars),e.localExportedVars=e.localExportedVars?.map(r=>new Set(r)),e.declaredVars=new Set(e.declaredVars),e.localScopes=e.localScopes.map(r=>new Map(r)),e.localArrayScopes=ny(e.localArrayScopes),e.localVarDepth=e.localVarDepth?new Map(e.localVarDepth):void 0,e.localVarStack=ry(e.localVarStack),e.fullyUnsetLocals=e.fullyUnsetLocals?new Map(e.fullyUnsetLocals):void 0,e.tempEnvBindings=e.tempEnvBindings?.map(r=>new Map(r)),e.mutatedTempEnvVars=e.mutatedTempEnvVars?new Set(e.mutatedTempEnvVars):void 0,e.accessedTempEnvVars=e.accessedTempEnvVars?new Set(e.accessedTempEnvVars):void 0,e.functions=new Map(e.functions),e.callLineStack=e.callLineStack?[...e.callLineStack]:void 0,e.funcNameStack=e.funcNameStack?[...e.funcNameStack]:void 0,e.sourceStack=e.sourceStack?[...e.sourceStack]:void 0,e.directoryStack=e.directoryStack?[...e.directoryStack]:void 0,e.hashTable=e.hashTable?new Map(e.hashTable):void 0,e.completionSpecs=ey(e.completionSpecs),e.defaultCompletionSpec=va(e.defaultCompletionSpec),e.emptyCompletionSpec=va(e.emptyCompletionSpec);let n=!1;return()=>{n||(n=!0,Object.assign(e,t))}}async function jf(e,t,n,r,s=!1){let i=e.state.loopDepth,o=new Map;for(let l of e.state.fileDescriptors?.keys()??[]){let c=ot(e,l);c&&o.set(l,c)}let a=Aa(e.state);e.state.parentHasLoopContext=i>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++;try{return await at(e,t.redirections,n,l=>sy(e,t,l.stdin??n,r,s||l.stdin!==void 0))}finally{let l=new Map;for(let[c,u]of o){let f=ot(e,c),d=u.kind==="input"&&f?.kind==="input"?u.content.length-f.content.length:u.kind==="readwrite"&&f?.kind==="readwrite"&&u.path===f.path?f.position-u.position:0;if(d<=0)continue;let p=Math.min(...yn(e,c));l.set(p,Math.max(l.get(p)??0,d))}a();for(let[c,u]of l)gn(e,c,u)}}async function sy(e,t,n,r,s){(s||n)&&(e.state.groupStdin=n);let i=new en(e.executionScope,"subshell"),o=0;try{for(let a of t.body){let l=await r(a);i.appendResult(l),o=l.exitCode}}catch(a){if(a instanceof $)throw i.prependTo(a),a;if(a instanceof Kt||a instanceof Ye||a instanceof Je)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(0);if(a instanceof q||a instanceof Le||a instanceof qe)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(a.exitCode);if(a instanceof Ce)throw a.prependOutput(i.stdout,i.stderr),a;return i.append("stderr",`${Mt(a)}
785
+ `),i.build(1)}return i.build(o)}async function qf(e,t,n,r,s=!1){return at(e,t.redirections,n,i=>iy(e,t,n,r,s,i))}async function iy(e,t,n,r,s,i){let o=new en(e.executionScope,"group"),a=0,l=i.stdin??n,c=s||n!==""||i.stdin!==void 0,u=e.state.groupStdin;c&&(e.state.groupStdin=l);let f=()=>{(c||u!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=u)};try{for(let d of t.body){let p=await r(d);o.appendResult(p),a=p.exitCode}}catch(d){if(f(),d instanceof $)throw o.prependTo(d),d;if(zr(d)||d instanceof qe||d instanceof q||d instanceof Ce)throw d.prependOutput(o.stdout,o.stderr),d;return o.append("stderr",`${Mt(d)}
786
+ `),o.build(1)}return f(),o.build(a)}async function Gf(e,t,n,r,s){let i;try{i=await e.fs.readFile(t)}catch{return T(`bash: ${t}: No such file or directory
787
+ `,127)}if(i.startsWith("#!")){let l=i.indexOf(`
788
+ `);l!==-1&&(i=i.slice(l+1))}let o=e.state.loopDepth,a=Aa(e.state);e.state.parentHasLoopContext=o>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(n.length)),e.state.env.set("@",n.join(" ")),e.state.env.set("*",n.join(" "));for(let l=0;l<n.length&&l<9;l++)e.state.env.set(String(l+1),n[l]);for(let l=n.length+1;l<=9;l++)e.state.env.delete(String(l));try{let c=new Z().parse(i),u=await s(c);return a(),u}catch(l){if(a(),l instanceof q)return L(l.stdout,l.stderr,l.exitCode);if(l instanceof Ce||l instanceof $)throw l;if(l.name==="ParseException")return T(`bash: ${t}: ${l.message}
789
+ `);throw l}}function oy(e){throw new TypeError(`Unsupported command node: ${JSON.stringify(e)}`)}var Ir=class{ctx;constructor(t,n){this.ctx={state:n,fs:t.fs,commands:t.commands,limits:t.limits,executionScope:t.executionScope,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,invokeTool:t.invokeTool}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||Be.isInSandboxedContext())return;let n=`interpreter ${t} attempted outside defense context`;throw new Bn(n,{timestamp:Date.now(),type:"missing_defense_context",message:n,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:Be.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,n=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(n)for(let i of n)r.add(i);if(r.size===0)return Object.create(null);let s=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(s[i]=o)}return s}async executeScript(t){this.assertDefenseContext("execution");let n=0,r=new en(this.ctx.executionScope,"script");for(let s of t.statements)try{let i=await this.executeStatement(s);r.appendResult(i,hi(i)),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(i){if(i instanceof q||i instanceof Ce)throw i.prependOutput(r.stdout,r.stderr),i;if(i instanceof lt)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:Jt(this.ctx.state.env)};if(i instanceof $)throw r.prependTo(i),i;if(i instanceof qe)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:Jt(this.ctx.state.env)};if(i instanceof Ge)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:Jt(this.ctx.state.env)};if(i instanceof et)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:Jt(this.ctx.state.env)};if(i instanceof ue){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Vr){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Ye||i instanceof Je){if(this.ctx.state.loopDepth>0)throw i.prependOutput(r.stdout,r.stderr),i;r.append("stdout",i.stdout),r.append("stderr",i.stderr);continue}throw i instanceof Le&&i.prependOutput(r.stdout,r.stderr),i}return{...r.build(n),env:Jt(this.ctx.state.env)}}async executeUserScript(t,n,r=""){return Gf(this.ctx,t,n,r,s=>this.executeScript(s))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new tt;if(t.deferredError)throw new xe(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return re;this.ctx.state.errexitSafe=!1;let n=new en(this.ctx.executionScope,"statement");this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&n.append("stderr",`${t.sourceText}
790
+ `);let r=0,s=-1,i=!1;try{for(let l=0;l<t.pipelines.length;l++){let c=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let f=await this.executePipeline(c);n.appendResult(f,hi(f)),r=f.exitCode,s=l,i=c.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}}catch(l){throw n.prependTo(l),l}let o=s<t.pipelines.length-1,a=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||i||a,this.ctx.state.options.errexit&&r!==0&&s===t.pipelines.length-1&&!i&&!this.ctx.state.inCondition&&!a){let l=new qe(r);throw l.prependOutput(n.stdout,n.stderr),l}return n.build(r)}async executePipeline(t){return Uf(this.ctx,t,(n,r)=>this.executeCommand(n,r))}async executeCommand(t,n,r=!1){let s=hu(this.ctx),i;try{i=await this.executeCommandInner(t,n,r)}catch(a){throw await co(this.ctx,s).catch(()=>{}),a}let o=await co(this.ctx,s);return!o.stdout&&!o.stderr?i:{...i,stdout:o.stdout?Ft(i)+o.stdout:i.stdout,stdoutKind:o.stdout?"bytes":i.stdoutKind,stderr:i.stderr+o.stderr}}async executeCommandInner(t,n,r){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,n);case"If":return Ff(this.ctx,t);case"For":return Mf(this.ctx,t);case"CStyleFor":return Bf(this.ctx,t);case"While":return Wf(this.ctx,t,n);case"Until":return Vf(this.ctx,t,n);case"Case":return zf(this.ctx,t);case"Subshell":return this.executeSubshell(t,n,r);case"Group":return this.executeGroup(t,n,r);case"FunctionDef":return Zu(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return oy(t)}}async executeSimpleCommand(t,n){let r;try{return await this.executeSimpleCommandInner(t,n,s=>{r=s})}catch(s){if(r?.finish(),s instanceof Qt)return T(s.stderr);throw s}}async executeSimpleCommandInner(t,n,r){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let P=t,C=0;for(;;){let O=this.expandAlias(P);if(O===P)break;if(C>=this.ctx.limits.maxCallDepth)throw new $(`alias expansion depth limit exceeded (${this.ctx.limits.maxCallDepth})`,"recursion");C++,P=O}this.aliasExpansionStack.clear(),P!==t&&(t=P)}this.ctx.state.expansionStderr="";let s=await Pf(this.ctx,t);if(s.error)return s.error;let i=s.tempAssignments,o=s.xtraceOutput,a=()=>{for(let[P,C]of i)C===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,C)};if(!t.name){if(t.redirections.length>0){let C=er(this.ctx,t.redirections,Gu);r(C);let O=await C.prepare(n);if(O.error){if(a(),!O.errorCause)return C.finish(),O.error;try{return tr(O)}finally{C.finish()}}let W=L("",o,0),K=await En(this.ctx,W,t.redirections,O.targets,O.dupSources,O.standardRoutes);return C.finish(),K}this.ctx.state.lastArg="";let P=(this.ctx.state.expansionStderr||"")+o;return this.ctx.state.expansionStderr="",L("",P,this.ctx.state.lastExitCode)}let l=t.name&&Sa(t.name,["local","declare","typeset","export","readonly"]),c=Array.from(i.keys());if(c.length>0&&!l){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let P of c)this.ctx.state.tempExportedVars.add(P)}let u=await oe(this.ctx,t.name),f=[],d=[],p=(P,C)=>{if(f.length>=this.ctx.limits.maxArrayElements)throw new $(`expanded argument element limit exceeded (${this.ctx.limits.maxArrayElements})`,"array_elements");f.push(P),d.push(C)};if(Sa(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let P of t.args){let C=await Pu(this.ctx,P);if(C)p(C,!0);else{let O=await xu(this.ctx,P);if(O!==null)p(O,!0);else{let W=await kt(this.ctx,P);for(let K of W.values)p(K,W.quoted)}}}else for(let P of t.args){let C=await kt(this.ctx,P);for(let O of C.values)p(O,C.quoted)}let m=t.name.parts.every(P=>P.type==="CommandSubstitution"||P.type==="ParameterExpansion"||P.type==="ArithmeticExpansion");!u&&m&&f.length>0&&(u=f.shift(),d.shift());let E=er(this.ctx,t.redirections,u==="exec"?Hu:Pr);r(E);let S=await E.prepare(n);if(S.error)return a(),S.errorCause?tr(S):(E.finish(),S.error);let g=S.stdinSourceFd,y=S.stdin!==void 0;if(S.stdin!==void 0&&(n=S.stdin),!u)return m?(E.finish(),L("","",this.ctx.state.lastExitCode)):(E.finish(),T(`bash: : command not found
791
+ `,127));if(u==="exec"&&(f.length===0||f[0]==="--")){for(let[P,C]of i)C===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,C);if(this.ctx.state.tempExportedVars)for(let P of i.keys())this.ctx.state.tempExportedVars.delete(P);return E.finish(),re}if(this.ctx.state.extraArgs){let P=this.ctx.state.extraArgs;this.ctx.state.extraArgs=void 0;for(let C of P)p(C,!0)}let b=await Af(this.ctx,u,f);i.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(i)));let v,k=null;try{v=await this.runCommand(u,f,d,n,!1,!1,g,y)}catch(P){if(P instanceof Ye||P instanceof Je)k=P,v=re;else throw P}g>=0&&u!=="read"&&gn(this.ctx,g,v.internalStdinConsumed??0);let A=o+b;if(A&&(v={...v,stderr:A+v.stderr}),v=await En(this.ctx,v,t.redirections,S.targets,S.dupSources,S.standardRoutes,v.internalProducerCommand??u,v.internalProducerOmitsShellPrefix),E.finish(),k)throw k;if(f.length>0){let P=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(P)){let C=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);C&&(P=C[1])}this.ctx.state.lastArg=P}else this.ctx.state.lastArg=u;let x=rl(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!x)for(let[P,C]of i)this.ctx.state.fullyUnsetLocals?.has(P)||(C===void 0?this.ctx.state.env.delete(P):this.ctx.state.env.set(P,C));if(this.ctx.state.tempExportedVars)for(let P of i.keys())this.ctx.state.tempExportedVars.delete(P);return i.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(v={...v,stderr:this.ctx.state.expansionStderr+v.stderr},this.ctx.state.expansionStderr=""),v}async runCommand(t,n,r,s,i=!1,o=!1,a=-1,l=!1){let c={ctx:this.ctx,runCommand:(d,p,h,m,E,S,g,y)=>this.runCommand(d,p,h,m,E,S,g,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(d,p,h)=>this.executeUserScript(d,p,h)},u=await Tf(c,t,n,r,s,i,o,a,l);return u!==null?u.internalProducerCommand===void 0?{...u,internalProducerCommand:t}:u:{...await _f(c,t,n,s,o),internalProducerCommand:t}}aliasExpansionStack=new Set;expandAlias(t){return Xl({env:this.ctx.state.env,limits:this.ctx.limits},t,this.aliasExpansionStack)}async findCommandInPath(t){return es(this.ctx,t)}async executeSubshell(t,n="",r=!1){return jf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeGroup(t,n="",r=!1){return qf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeArithmeticCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),at(this.ctx,t.redirections,"",async()=>{try{let n=await J(this.ctx,t.expression.expression),r=be(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){return T(`bash: arithmetic expression: ${n.message}
792
+ `)}})}async executeConditionalCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),at(this.ctx,t.redirections,"",async()=>{try{let n=await hn(this.ctx,t.expression),r=be(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){let r=n instanceof ue?1:2;return T(`bash: conditional expression: ${n.message}
793
+ `,r)}})}};function ka(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function ay(e){let t=ka(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}var ly=3;function Hf(e){let t=e;for(let n=0;n<ly;n++){if(t.includes("\\")||t.includes(";")||/%(?![0-9a-f]{2})/i.test(t))return!0;let r=t.toLowerCase();if(r.includes("%2f")||r.includes("%2e")||r.includes("%5c")||r.includes("%3b"))return!0;let s;try{s=decodeURIComponent(t)}catch{return!0}if(s===t)return!1;t=s}return t.includes("%")}function cy(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function Pa(e,t){let n=ka(e);if(!n)return!1;let r=ay(t);return!r||n.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&Hf(n.pathname)?!1:cy(n.pathname,r.pathPrefix)}function Zf(e){return typeof e=="string"?e:e.url}function Qf(e,t){return!t||t.length===0?!1:t.some(n=>Pa(e,Zf(n)))}function xa(e){let t=uy(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let n=Kf(t);if(n)return ei(n);let r=dy(t);return r?py(r):!1}function uy(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function fy(e){if(!e)return null;let t=10,n=e;if(n.startsWith("0x")||n.startsWith("0X")?(t=16,n=n.slice(2)):n.length>1&&n.startsWith("0")&&(t=8),!n||t===16&&!/^[0-9a-fA-F]+$/.test(n)||t===10&&!/^\d+$/.test(n)||t===8&&!/^[0-7]+$/.test(n))return null;let r=Number.parseInt(n,t);return!Number.isFinite(r)||r<0?null:r}function Kf(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let n=t.map(l=>fy(l));if(n.some(l=>l===null))return null;let r=n;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[s,i,o,a]=r;return s>255||i>255||o>255||a>255?null:[s,i,o,a]}function dy(e){let t=e,n=null;if(t.includes(".")){let m=t.lastIndexOf(":");if(m<0)return null;let E=t.slice(m+1),S=Kf(E);if(!S)return null;n=S,t=t.slice(0,m)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[s,i]=t.split("::"),o=s?s.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=m=>/^[0-9a-f]{1,4}$/i.test(m)?Number.parseInt(m,16):null,c=o.map(l),u=a.map(l);if(c.some(m=>m===null)||u.some(m=>m===null))return null;let f=n?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 h=[...c,...new Array(p).fill(0),...u];return n&&(h.push(n[0]<<8|n[1]),h.push(n[2]<<8|n[3])),h.length===8?h:null}function ei(e){let[t,n]=e;return t===127||t===10||t===172&&n>=16&&n<=31||t===192&&n===168||t===169&&n===254||t===0||t===100&&n>=64&&n<=127||t===198&&(n===18||n===19)||t===192&&n===0&&e[2]===0||t===192&&n===0&&e[2]===2||t===198&&n===51&&e[2]===100||t===203&&n===0&&e[2]===113||t>=240}function py(e){if(e.every(s=>s===0)||e.slice(0,7).every(s=>s===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 s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return ei(s)}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 s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return ei(s)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let s=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return ei(s)}return!1}function Xf(e){let t=[];for(let n of e){if(typeof n!="string"&&(n===null||typeof n!="object"||!("url"in n)||typeof n.url!="string")){t.push('Invalid allow-list entry: must be a string URL or an object with a "url" string property');continue}let r=Zf(n);if(!ka(r)){t.push(`Invalid URL in allow-list: "${r}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(r);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${r}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${r}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&Hf(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${r}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${r}"`)}return t}var ht=class extends Error{constructor(t,n){let r=n??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},_n=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},qt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},ti=class extends Error{constructor(t,n){super(`HTTP method '${t}' not allowed. Allowed methods: ${n.join(", ")}`),this.name="MethodNotAllowedError"}},Ln=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var hy=20,my=3e4,yy=10485760,gy=["GET","HEAD"],Tr;typeof __BROWSER__<"u"&&__BROWSER__?Tr=null:(Tr=import("guarded-fetch"),Tr.catch(()=>{}));var wy=new Set(["GET","HEAD","OPTIONS"]),Ey=new Set([301,302,303,307,308]);function _r(e){return e.reason instanceof Error?e.reason:new DOMException("The operation was aborted","AbortError")}function by(e){if(e?.aborted)throw _r(e)}function Ca(e){let t=e.allowedUrlPrefixes??[];if(e._dnsResolve)throw new Error("NetworkConfig._dnsResolve is no longer supported: DNS resolution is performed by guarded-fetch and cannot be overridden");if(e._createConnectionOwner)throw new Error("NetworkConfig._createConnectionOwner is no longer supported: connect-time IP pinning is performed by guarded-fetch and cannot be overridden");let n=e._fetch;if(!e.dangerouslyAllowFullInternetAccess){let b=Xf(t);if(b.length>0)throw new Error(`Invalid network allow-list:
794
+ ${b.join(`
795
+ `)}`)}let r=[];for(let b of t)typeof b=="object"&&b.transform&&b.transform.length>0&&r.push(b);function s(b){if(r.length===0)return null;let v=null;for(let k of r)if(Pa(b,k.url)&&k.transform){v||(v=new Headers);for(let A of k.transform)for(let[x,R]of Object.entries(A.headers))v.set(x,R)}return v}if(e.maxRedirects!==void 0&&(!Number.isSafeInteger(e.maxRedirects)||e.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let i=e.maxRedirects??hy,o=e.timeoutMs??my,a=e.maxResponseSize??yy,l=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??gy,c=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),u=[];for(let b of t){let v=typeof b=="string"?b:b.url;try{u.push(new URL(v).hostname)}catch{}}function f(b){try{return new URL(b).hostname||"localhost.invalid"}catch{return"localhost.invalid"}}function d(b){return e.dangerouslyAllowFullInternetAccess?c?{allowedHosts:void 0,skipSsrfCheckForAllowedHosts:void 0}:{allowedHosts:[f(b)],skipSsrfCheckForAllowedHosts:!0}:{allowedHosts:u,skipSsrfCheckForAllowedHosts:!c}}function p(b){try{return xa(new URL(b).hostname)}catch{return!1}}async function h(b,v){let k={method:v.method,headers:v.headers,signal:v.signal,redirect:"manual"};return v.body!==void 0&&(k.body=v.body),await(n??globalThis.fetch)(b,k)}function m(b){if(!e.dangerouslyAllowFullInternetAccess&&!Qf(b,t))throw new ht(b)}function E(b){if(!c)return;let v;try{v=new URL(b)}catch{throw new ht(b,"invalid URL")}if(xa(v.hostname))throw new ht(b,"private/loopback IP address blocked")}function S(b){if(e.dangerouslyAllowFullInternetAccess)return;let v=b.toUpperCase();if(!l.includes(v))throw new ti(v,l)}function g(b,v,k,A){if(!k.isGuardedFetchError(b))return b;let x=b,{onRedirectHop:R,subReason:P}=A;switch(x.code){case"host_not_allowed":case"protocol_not_allowed":return R?new qt(v):new ht(v);case"hostname_unsafe":return R?new qt(v):new ht(v,P==="dns_resolution_failed"?"DNS resolution failed for private IP check":"hostname resolves to private/loopback IP address");case"redirect_to_unsafe_host":return new qt(v);case"too_many_redirects":return new _n(i);case"response_too_large":return new Ln(a);default:return b}}async function y(b,v={}){let k=v.method?.toUpperCase()??"GET",A=v.followRedirects??!0;if(v.maxRedirects!==void 0&&(!Number.isSafeInteger(v.maxRedirects)||v.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let x=v.maxRedirects??i,R=Math.min(i,x),P=v.timeoutMs!==void 0?Math.min(v.timeoutMs,o):o,C=new AbortController,O=Mr(()=>C.abort(new DOMException("The operation was aborted","AbortError")),P),W=Wr(v.signal,C.signal);try{m(b),E(b),S(k);let K=Tr?await Tr:null,N=b,U=0,j=[],D=k,I=v.body,M=v.headers,se=!1;for(;;){by(W.signal);let Y=await Be.runTrustedAsync(async()=>{let _e=M;if(se&&_e){let Lt=_e instanceof Headers?new Headers(_e):new Headers(_e);Lt.delete("authorization"),Lt.delete("cookie"),_e=Lt}let yt=s(N),_t=vy(_e,yt),gt={method:D,headers:_t,signal:W.signal,followRedirects:!1,timeoutMs:P,sanitizeHeaders:!1};if(I&&!wy.has(D)&&(gt.body=I),Object.assign(gt,d(N)),!K||p(N)){if(c)throw new ht(N,"DNS pinning unavailable for private IP enforcement");return await h(N,gt)}c?n&&(gt.fetch=n):(gt.fetch=n??globalThis.fetch,gt.dispatcher=null);let wt;gt.onUrlBlocked=Lt=>{wt=Lt.subReason};try{return await K.guardedFetch(N,gt)}catch(Lt){throw g(Lt,N,K,{onRedirectHop:U>0,subReason:wt})}});if(Ey.has(Y.status)&&A){let _e=Y.headers.get("location");if(!_e)return await Yf(Y,N,a,W.signal,j);j.push({status:Y.status,statusText:Y.statusText,headers:Jf(Y.headers)});let yt=new URL(_e,N).href;await $a(Sy(Y),W.signal);try{m(yt),E(yt)}catch(wt){throw W.signal?.aborted?_r(W.signal):wt instanceof ht?new qt(yt):wt}let _t=Y.status;if(((_t===301||_t===302)&&D==="POST"||_t===303&&D!=="GET"&&D!=="HEAD")&&(D="GET",I=void 0,S(D)),new URL(yt).origin!==new URL(N).origin&&(se=!0),U++,U>R)throw new _n(R);N=yt;continue}return await Yf(Y,N,a,W.signal,j)}}finally{Br(O),W.cleanup()}}return y}async function $a(e,t){if(!t)return e;if(t.aborted)throw e.catch(()=>{}),_r(t);let n,r=new Promise((s,i)=>{n=()=>i(_r(t)),t.addEventListener("abort",n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener("abort",n)}}async function Sy(e){e.body&&!e.body.locked&&await e.body.cancel()}function vy(e,t){if(!e&&!t)return;if(!t)return e;let n=e instanceof Headers?new Headers(e):new Headers(e);for(let[r,s]of t)n.set(r,s);return n}function Jf(e){let t=Object.create(null);return e.forEach((n,r)=>{t[r.toLowerCase()]=n}),t}async function Yf(e,t,n,r,s){let i=Jf(e.headers);if(n>0){let l=e.headers.get("content-length");if(l){let c=parseInt(l,10);if(!Number.isNaN(c)&&c>n)throw new Ln(n)}}let o;if(n>0&&e.body){let l=e.body.getReader(),c=[],u=0;try{for(;;){let{done:d,value:p}=await $a(l.read(),r);if(d)break;if(p){if(u+=p.byteLength,u>n)throw await l.cancel(),new Ln(n);c.push(p)}}}catch(d){throw r?.aborted&&await l.cancel(_r(r)).catch(()=>{}),d}o=new Uint8Array(u);let f=0;for(let d of c)o.set(d,f),f+=d.byteLength}else{let l=await $a(e.arrayBuffer(),r);if(n>0&&l.byteLength>n)throw new Ln(n);o=new Uint8Array(l)}let a={status:e.status,statusText:e.statusText,headers:i,body:o,url:t};return s&&s.length>0&&(a.redirectChain=s),a}function sr(e,t){if(e.length>t||B(e)>t)throw new $(`script input size limit exceeded (${t} bytes)`,"string_length")}var Fn=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;abortOnUnresolvedCommands=!1;invokeToolFn;transformPlugins=[];state;constructor(t={}){this.limits=Zr({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}},t.executionLimitProfile);let n=t.fs??new nt(t.files,{maxTotalBytes:this.limits.maxFileSystemBytes});this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
796
+ `],["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(t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=Ca(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.abortOnUnresolvedCommands=t.abortOnUnresolvedCommands??!1,this.coverageWriter=t.coverage,this.state={env:s,arrays:new Map,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",vi(this.state.options)),this.state.env.set("BASHOPTS",Ai(this.state.shoptOptions)),el(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof nt)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of Ba(t.commands))this.registerBundledCommand(o);if(t.fetch||t.network)for(let o of Wa())this.registerBundledCommand(o);if(t.python)for(let o of Va())this.registerBundledCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of za())this.registerBundledCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)if(Ha(o)){let a=Za(o);this.registerCommandInternal(a,!0)}else this.registerCommandInternal(o,!0)}registerCommand(t){this.registerCommandInternal(t,!0)}registerBundledCommand(t){this.registerCommandInternal(t,!1)}registerCommandInternal(t,n,r=n?t.trusted??!0:t.trusted){let s=this.commands.get(t.name),i=n?s?.internalOriginalCommand??(s&&!s.internalIsExtension?s:void 0):void 0,o={name:t.name,trusted:r,internalIsExtension:n,internalOriginalCommand:i,execute:(l,c)=>t.execute(l,c)};this.commands.set(t.name,o);let a=this.fs;if(typeof a.writeFileSync=="function"){let l=`#!/bin/bash
797
+ # Built-in command: ${t.name}
798
+ `;try{a.writeFileSync(`/bin/${t.name}`,l)}catch{}try{a.writeFileSync(`/usr/bin/${t.name}`,l)}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=ed(t.stdout),t.stderr=ed(t.stderr),t}async exec(t,n){let r=new Qr(this.limits,n?.signal,this.abortOnUnresolvedCommands),s;try{s=await this.execInScope(t,n,r,0,n?.signal,!1,!1)}catch(o){try{await r.close()}catch{}throw o}let i=s;try{await r.close()}catch{i={...s,stderr:`${s.stderr}bash: execution cleanup failed
799
+ `,exitCode:126}}return i.unresolvedCommands=r.unresolvedCommandNames,t.trim()?this.logResult(i):i}async execInScope(t,n,r,s,i,o=!1,a=!0){let l=f=>a?this.logResult(f):f,c=Wr(i,n?.signal),u=n?{...n,signal:c.signal}:{signal:c.signal};try{if(r.assertExecDepth(s),sr(t,this.limits.maxSourceBytes),!t.trim())return{stdout:"",stderr:"",exitCode:0,env:He(this.state.env,u.env)};this.logger?.info("exec",{command:t});let f=u.cwd??this.state.cwd,d,p=f;if(u.cwd)if(u.env&&"PWD"in u.env)d=u.env.PWD;else if(u.env&&!("PWD"in u.env))try{d=await this.fs.realpath(f),p=d}catch{d=f}else d=f;let h=u.replaceEnv?new Map:new Map(this.state.env);if(u.env)for(let[y,b]of Object.entries(u.env))h.set(y,b);d!==void 0&&h.set("PWD",d);let m={...this.state,env:h,arrays:u.replaceEnv?new Map:ut(this.state.arrays),cwd:p,previousDir:u.env?.OLDPWD??this.state.previousDir,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:Py(u.stdin,u.stdinKind,this.limits.maxInputBytes,this.limits.maxStringLength,r,o),signal:u.signal,extraArgs:u.args},E=t;u.rawScript||(E=Na(t));let S=this.defenseInDepthConfig?Be.getInstance(this.defenseInDepthConfig):null,g=S?.activate();try{let y=async()=>{let b=ze(E,{maxHeredocSize:this.limits.maxHeredocSize}),v;if(this.transformPlugins.length>0){let P=Object.create(null);for(let C of this.transformPlugins){let O=C.transform({ast:b,metadata:P});b=O.ast,O.metadata&&(P=ur(P,O.metadata))}v=P}let k={fs:this.fs,commands:this.commands,limits:this.limits,executionScope:r,exec:(P,C,O=!1)=>this.execInScope(P,C,r,s+1,u.signal,O),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:S?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},R=await new Ir(k,m).executeScript(b);return v&&(R.metadata=v),l(R)};return g?await g.run(y):await y()}catch(y){if(y instanceof q)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:He(this.state.env,u.env)});if(y instanceof Ce){if(s>0)throw y;return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:He(this.state.env,u.env)})}if(y instanceof lt)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,env:He(this.state.env,u.env)});if(y instanceof ue)return l({stdout:y.stdout,stderr:y.stderr,exitCode:1,env:He(this.state.env,u.env)});if(y instanceof tt)return l({stdout:y.stdout,stderr:y.stderr,exitCode:124,env:He(this.state.env,u.env)});if(y instanceof $)return l({stdout:y.stdout,stderr:Pt(y.stderr),exitCode:$.EXIT_CODE,internalOutputAccounting:y.internalOutputAccounting,env:He(this.state.env,u.env)});if(y instanceof Bn)return l({stdout:"",stderr:`bash: security violation: ${Pt(y.message)}
800
+ `,exitCode:1,env:He(this.state.env,u.env)});if(y.name==="ParseException")return l({stdout:"",stderr:`bash: syntax error: ${Pt(y.message)}
801
+ `,exitCode:2,env:He(this.state.env,u.env)});if(y instanceof rt)return l({stdout:"",stderr:`bash: ${Pt(y.message)}
802
+ `,exitCode:2,env:He(this.state.env,u.env)});if(y instanceof RangeError)return l({stdout:"",stderr:`bash: ${Pt(y.message)}
803
+ `,exitCode:1,env:He(this.state.env,u.env)});throw y}finally{g?.deactivate()}}catch(f){if(f instanceof tt)return l({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:He(this.state.env,u.env)});if(f instanceof $)return l({stdout:f.stdout,stderr:Pt(f.stderr),exitCode:$.EXIT_CODE,internalOutputAccounting:f.internalOutputAccounting,env:He(this.state.env,u.env)});throw f}finally{c.cleanup()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,n){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),n)}getCwd(){return this.state.cwd}getEnv(){return Jt(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){sr(t,this.limits.maxSourceBytes);let n=Na(t),r=ze(n,{maxHeredocSize:this.limits.maxHeredocSize}),s=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:s});r=o.ast,o.metadata&&(s=ur(s,o.metadata))}return{script:Er(r),ast:r,metadata:s}}async analyzeCommands(t){sr(t,this.limits.maxSourceBytes);let n=ze(Na(t),{maxHeredocSize:this.limits.maxHeredocSize}),{commands:r,definedFunctions:s,definedAliases:i}=Xr(n),o=[];for(let a of r)s.has(a)||i.has(a)||await this.resolvesCommandForAnalysis(a)||o.push(a);return{commands:r,unresolved:o}}async resolvesCommandForAnalysis(t){if((pr.has(t)||rn.has(t))&&!sl.has(t)||this.state.functions.has(t))return!0;let n=await Jr({fs:this.fs,state:{...this.state,hashTable:new Map},commands:this.commands},t);return n!==null&&!("error"in n)}};function Ay(e,t){let n=t;for(let r=0;r<e.length;r++){let s=e[r];if(n==="single")s==="'"&&(n="none");else if(n==="double")s==="\\"?r++:s==='"'&&(n="none");else if(s==="'")n="single";else if(s==='"')n="double";else if(s==="\\")r++;else if(s==="#"&&(r===0||/\s/.test(e[r-1])))break}return n}function Na(e){let t=e.split(`
804
+ `),n=[],r=[],s="none";for(let i=0;i<t.length;i++){let o=t[i];if(r.length>0){let u=r[r.length-1];if((u.stripTabs?o.replace(/^\t+/,""):o)===u.delimiter){n.push(o.trimStart()),r.pop();continue}n.push(o);continue}let a=s,l=a==="none"?o.trimStart():o;if(n.push(l),s=Ay(o,a),a!=="none")continue;let c=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let u of l.matchAll(c)){let f=u[1]==="-",d=u[3];r.push({delimiter:d,stripTabs:f})}}return n.join(`
805
+ `)}var ky=new TextDecoder("utf-8",{fatal:!0});function ed(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);if(s>255)return e;s>127&&(t=!0)}if(!t)return e;let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);try{return ky.decode(n)}catch{return e}}function Py(e,t,n,r,s,i){if(e===void 0)return;let o=t==="bytes"?e.length:B(e);if(o>n||o>r)throw new $(`stdin size limit exceeded (${Math.min(n,r)} bytes)`,"string_length");return i||s.consumeInput(o,"stdin"),t==="bytes"?e:Ht(e)}import*as Me from"node:fs";import*as td from"node:path";function Ra(e){return Me.realpathSync(e)}function nd(e){Me.rmSync(e,{recursive:!0,force:!0})}function rd(e,t){if(t.nodeType==="directory"){Me.mkdirSync(e,{recursive:!0});return}if(Me.mkdirSync(td.dirname(e),{recursive:!0}),t.nodeType==="symlink"){Me.rmSync(e,{force:!0}),Me.symlinkSync(new TextDecoder().decode(t.content),e);return}t.metadataOnly||Me.writeFileSync(e,t.content),process.platform!=="win32"&&Me.chmodSync(e,t.mode),Me.utimesSync(e,t.mtime,t.mtime)}import*as le from"node:fs";import*as Te from"node:path";import*as mt from"node:fs";import*as $e from"node:path";function Ie(e,t){let n=/^[A-Za-z]:[\\/]/.test(t)?$e.win32:$e.posix,r=n.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${n.sep}`)&&!n.isAbsolute(r)}function Mn(e,t){try{let n=mt.realpathSync(e);return Ie(n,t)?n:null}catch(n){if(n.code==="ENOENT"){let r=$e.dirname(e);if(r===e)return null;let s=Mn(r,t);if(s===null)return null;try{if(mt.lstatSync(e).isSymbolicLink()){let o=mt.readlinkSync(e),a=$e.isAbsolute(o)?o:$e.resolve($e.dirname(e),o),l=Mn(a,t);return l===null?null:l}}catch{}return $e.join(s,$e.basename(e))}return null}}function ni(e,t,n){let r=Mn(e,n);if(r===null)return null;let s=$e.resolve(e),i=s.slice(t.length),o=r.slice(n.length);if(i!==o)return null;try{if(mt.lstatSync(s).isSymbolicLink())return null}catch{}return r}function ri(e,t){if(!mt.existsSync(e))throw new Error(`${t} root does not exist`);if(!mt.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function sd(e,t){if(!$e.isAbsolute(e))return{withinRoot:!0,relativePath:e};let n;try{n=mt.realpathSync(e)}catch{n=$e.resolve(e)}return Ie(n,t)?{withinRoot:!0,relativePath:n.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:$e.basename(e)}}function si(e,t,n,r){let s=e;if(s.path===void 0){for(let o of r)if(s.message?.includes(o))throw e}let i=s.code||"EIO";throw new Error(`${i}: ${n} '${t}'`)}function ii(e){let t=e.content.byteLength;for(let n of e.appendChunks??[])t+=n.byteLength;return t}function ad(e){return ii(e)}function ai(e,t){if(!e.appendChunks||e.appendChunks.length===0)return e.content;let n=e.appendChunks.reduce((i,o)=>i+o.byteLength,e.content.byteLength);if(!Number.isSafeInteger(n))throw new Error(`EFBIG: file too large, read '${t}'`);let r=new Uint8Array(n);r.set(e.content);let s=e.content.byteLength;for(let i of e.appendChunks)r.set(i,s),s+=i.byteLength;return e.content=r,e.appendChunks=void 0,r}function id(e){return!e||e.type!=="file"?0:ii(e)}function Lr(){return{type:"directory",children:new Map,mode:493,mtime:new Date}}function Fr(e){return e.split("/").filter(Boolean)}var oi=class e{maxMemoryBytes;rootNode=Lr();bytes=0;constructor(t){this.maxMemoryBytes=t}get root(){return this.rootNode}get retainedBytes(){return this.bytes}descend(t){let n=Fr(t),r=[this.rootNode],s=this.rootNode;for(let i=0;i<n.length;i++){let o=s.children.get(n[i]);if(o===void 0)return{kind:"missing",stack:r,missingAt:i};if(i===n.length-1)return{kind:"found",stack:r,node:o};if(o.type==="whiteout")return{kind:"blocked",stack:r,blockedAt:i};if(o.type!=="directory")return{kind:"notdir",stack:r,notdirAt:i};r.push(o),s=o}return{kind:"found",stack:[],node:this.rootNode}}ensureDirs(t,n){let r=this.rootNode,s="";for(let i of Fr(t)){s=`${s}/${i}`;let o=r.children.get(i);if(o===void 0)o=Lr(),r.children.set(i,o);else if(o.type==="whiteout")o=this.resurrectDir(r,i,s,n);else if(o.type!=="directory")throw new Error(`ENOTDIR: not a directory, mkdir '${t}'`);r=o}return r}resurrectDir(t,n,r,s){let i=Lr();t.children.set(n,i);let o=s?.(r);if(o)for(let a of o)i.children.has(a)||i.children.set(a,{type:"whiteout"});return i}attach(t,n){let r=Fr(t);if(r.length===0)throw new Error(`EINVAL: cannot attach at root, attach '${t}'`);let s=this.parentDirOf(r,t),i=s.children.get(r[r.length-1]);if(i?.type==="directory"&&n.type!=="directory")throw new Error(`EISDIR: cannot replace directory with ${n.type}, attach '${t}'`);if(i!==void 0&&n.type==="directory")throw new Error(`EEXIST: cannot replace ${i.type} with directory, attach '${t}'`);let o=id(i),a=id(n);this.assertCapacity(a,o),s.children.set(r[r.length-1],n),this.bytes+=a-o}detach(t){let n=Fr(t);if(n.length===0)return;let r=this.descend(t);return r.kind!=="found"?void 0:(r.stack[r.stack.length-1].children.delete(n[n.length-1]),this.bytes-=e.subtreeBytes(r.node),r.node)}putWhiteout(t){let n=Fr(t);if(n.length===0)throw new Error(`EINVAL: cannot whiteout the root, rm '${t}'`);let r=this.rootNode;for(let o=0;o<n.length-1;o++)r=this.ensureChildDir(r,n[o],t);let s=n[n.length-1],i=r.children.get(s);i?.type!=="whiteout"&&(this.bytes-=e.subtreeBytes(i),r.children.set(s,{type:"whiteout"}))}appendChunk(t,n){this.assertCapacity(n.byteLength),t.appendChunks||(t.appendChunks=[]),t.appendChunks.push(n),this.bytes+=n.byteLength}*preOrder(){let t=[{path:"/",node:this.rootNode}];for(;t.length>0;){let n=t.pop();if(yield n,n.node.type==="directory"){let r=[...n.node.children.entries()];for(let s=r.length-1;s>=0;s--){let[i,o]=r[s];t.push({path:od(n.path,i),node:o})}}}}*postOrder(){let t=[],n=[{path:"/",node:this.rootNode}];for(;n.length>0;){let r=n.pop();if(t.push(r),r.node.type==="directory")for(let[s,i]of r.node.children)n.push({path:od(r.path,s),node:i})}for(let r=t.length-1;r>=0;r--)yield t[r]}clear(){this.rootNode=Lr(),this.bytes=0}static subtreeBytes(t){if(t===void 0)return 0;if(t.type==="file")return ii(t);if(t.type!=="directory")return 0;let n=0,r=[t];for(;r.length>0;){let s=r.pop();for(let i of s.children.values())i.type==="file"?n+=ii(i):i.type==="directory"&&r.push(i)}return n}parentDirOf(t,n){let r=this.rootNode;for(let s=0;s<t.length-1;s++){let i=r.children.get(t[s]);if(i?.type!=="directory")throw new Error(`ENOTDIR: not a directory, attach '${n}'`);r=i}return r}ensureChildDir(t,n,r){let s=t.children.get(n);if(s===void 0||s.type==="whiteout")s=Lr(),t.children.set(n,s);else if(s.type!=="directory")throw new Error(`ENOTDIR: not a directory, rm '${r}'`);return s}assertCapacity(t,n=0){if(!Number.isSafeInteger(t)||t<0||t>this.maxMemoryBytes-this.bytes+n)throw new Error(`ENOSPC: overlay memory byte limit exceeded (${this.maxMemoryBytes} bytes)`)}};function od(e,t){return e==="/"?`/${t}`:`${e}/${t}`}var xy=["ELOOP","EFBIG","EPERM"],$y="/home/user/project",Gt=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;maxMemoryBytes;allowSymlinks;tree;nextMemoryIdentity=1;identityFor(t){return t.type==="symlink"?"":(t.identity||(t.identity=`overlay:${this.nextMemoryIdentity++}`),t.identity)}constructor(t){this.root=Te.resolve(t.root);let n=t.mountPoint??$y;if(this.mountPoint=n==="/"?"/":n.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${n}`);if(this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxMemoryBytes=t.maxMemoryBytes??1024*1024*1024,!Number.isSafeInteger(this.maxMemoryBytes)||this.maxMemoryBytes<0)throw new Error("OverlayFs: invalid maxMemoryBytes");this.allowSymlinks=t.allowSymlinks??!1,ri(this.root,"OverlayFs"),this.canonicalRoot=le.realpathSync(this.root),this.tree=new oi(this.maxMemoryBytes),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){this.tree.ensureDirs(this.mountPoint)}getMountPoint(){return this.mountPoint}diff(){let t=[],n=[];for(let{path:r,node:s}of this.tree.preOrder()){let i=this.getRelativeToMount(r);if(!(i===null||i==="/")){if(s.type==="whiteout"){this.existsOnRealFs(r)&&n.push(i);continue}if(s.type==="file")if(s.metacopy){if(!this.existsOnRealFs(r))continue;t.push({path:i,nodeType:"file",content:new Uint8Array(0),mode:s.mode,mtime:s.mtime,metadataOnly:!0})}else t.push({path:i,nodeType:"file",content:ai(s,r),mode:s.mode,mtime:s.mtime});else s.type==="directory"?t.push({path:i,nodeType:"directory",content:new Uint8Array(0),mode:s.mode,mtime:s.mtime}):t.push({path:i,nodeType:"symlink",content:new TextEncoder().encode(s.target),mode:s.mode,mtime:s.mtime})}}return t.sort((r,s)=>r.path<s.path?-1:r.path>s.path?1:0),n.sort(),{writes:t,deletions:n}}async sync(){for(let{path:t,node:n}of this.tree.postOrder()){let r=this.getRelativeToMount(t);if(!(r===null||r==="/")){if(n.type==="whiteout"){this.existsOnRealFs(t)||this.tree.detach(t);continue}n.type==="directory"&&n.children.size>0||await this.nodeMatchesDisk(t,n)&&this.tree.detach(t)}}}reset(){this.tree.clear(),this.createMountPointDirs()}drop(t){let n=t.map(r=>{let s=V(r);if(s==="/")throw new Error(`EINVAL: invalid argument, drop '${r}'`);return this.mountPoint==="/"?s:`${this.mountPoint}${s}`});n.sort((r,s)=>s.length-r.length);for(let r of n){let s=this.tree.descend(r);if(s.kind!=="found")continue;let i=s.node;i.type==="directory"&&i.children.size>0||this.tree.detach(r)}}async lstatLower(t){let n=this.resolveRealPathParent_(this.toRealPath(t));if(!n)return null;try{return{canonical:n,stat:await le.promises.lstat(n)}}catch{return null}}async nodeMatchesDisk(t,n){if(n.type==="directory")return(await this.lstatLower(t))?.stat.isDirectory()??!1;if(n.type==="symlink"){if(!this.allowSymlinks)return!1;let s=await this.lstatLower(t);if(!s?.stat.isSymbolicLink())return!1;try{let i=await le.promises.readlink(s.canonical);return this.realTargetToVirtual(i)===n.target}catch{return!1}}if(n.metacopy){let s=await this.lstatLower(t);if(!s?.stat.isFile())return!1;let{stat:i}=s;return!(i.mtime.getTime()!==n.mtime.getTime()||process.platform!=="win32"&&(i.mode&4095)!==(n.mode&4095))}let r=this.resolveRealPath_(this.toRealPath(t));if(!r)return!1;try{let s=await le.promises.lstat(r);if(!s.isFile())return!1;let i=ai(n,t);if(s.size!==i.byteLength)return!1;let o=this.allowSymlinks?le.constants.O_RDONLY:le.constants.O_RDONLY|le.constants.O_NOFOLLOW,a=await le.promises.open(r,o),l;try{l=new Uint8Array(await a.readFile())}finally{await a.close()}for(let c=0;c<l.byteLength;c++)if(l[c]!==i[c])return!1;return!0}catch{return!1}}mkdirSync(t,n){this.tree.ensureDirs(V(t),r=>this.lowerChildren(r))}writeFileSync(t,n){let r=V(t);this.ensureParentDirs(r);let s=n instanceof Uint8Array?n:new TextEncoder().encode(n);this.tree.attach(r,{type:"file",content:s,mode:420,mtime:new Date})}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let n=V(t),r=this.getRelativeToMount(n);if(r===null)return null;let s=Te.join(this.root,r),i=Te.resolve(s);return Ie(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Mn(t,this.canonicalRoot):ni(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let n=Te.dirname(t),r=this.resolveRealPath_(n);return r===null?null:Te.join(r,Te.basename(t))}sanitizeError(t,n,r){si(t,n,r,xy)}ensureParentDirs(t){let n=zn(t);n!=="/"&&this.tree.ensureDirs(n,r=>this.lowerChildren(r))}lowerChildren(t){let n=this.resolveRealPath_(this.toRealPath(t));if(!n)return null;try{return le.readdirSync(n)}catch{return null}}async existsInOverlay(t){let n=V(t),r=this.tree.descend(n);if(r.kind==="found")return r.node.type!=="whiteout";if(r.kind==="blocked"||r.kind==="notdir")return!1;let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)return!1;try{return await le.promises.lstat(s),!0}catch{return!1}}async readFile(t,n){let r=await this.readFileBuffer(t),s=ct(n);return zt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return zt(n,"binary")}async readFileBuffer(t,n=new Set){z(t,"open");let r=V(t);if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(s.kind==="notdir")throw new Error(`ENOTDIR: not a directory, open '${t}'`);if(s.kind==="found"){let i=s.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.type==="symlink"){let a=this.resolveSymlink(r,i.target);return this.readFileBuffer(a,n)}if(i.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(!i.metacopy)return ai(i,t);let o=await this.readLowerFileBytes(r,t,n);if(process.platform==="win32")try{this.tree.attach(r,{type:"file",content:o,mode:i.mode,mtime:i.mtime})}catch(a){if(!(a instanceof Error)||!a.message.startsWith("ENOSPC"))throw a}return o}return this.readLowerFileBytes(r,t,n)}async readLowerFileBytes(t,n,r){let s=this.resolveRealPath_(this.toRealPath(t));if(!s)throw new Error(`ENOENT: no such file or directory, open '${n}'`);try{let i=await le.promises.lstat(s);if(i.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${n}'`);let l=await le.promises.readlink(s),c=this.realTargetToVirtual(l),u=this.resolveSymlink(t,c);return this.readFileBuffer(u,r)}if(i.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${n}'`);if(this.maxFileReadSize>0&&i.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${n}' (${i.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?le.constants.O_RDONLY:le.constants.O_RDONLY|le.constants.O_NOFOLLOW,a=await le.promises.open(s,o);try{let l=await a.readFile();return new Uint8Array(l)}finally{await a.close()}}catch(i){let o=i.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${n}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${n}'`);this.sanitizeError(i,n,"open")}}async writeFile(t,n,r){z(t,"write"),this.assertWritable(`write '${t}'`);let s=V(t);this.ensureParentDirs(s);let i=ct(r),o=Vt(n,i);this.tree.attach(s,{type:"file",content:o,mode:await this.inheritedMode(s),mtime:new Date})}async inheritedMode(t){let n=this.entryAt(t);if(n?.type==="file")return n.mode;if(n?.type==="directory")return 420;if(process.platform==="win32")return 420;try{let r=await this.stat(t);if(r.isFile)return r.mode}catch{}return 420}async appendFile(t,n,r){z(t,"append"),this.assertWritable(`append '${t}'`);let s=V(t),i=ct(r),o=Vt(n,i),a=this.tree.descend(s);if(a.kind==="found"&&a.node.type==="file"){let c=a.node;if(c.metacopy){let u=await this.readLowerFileBytes(s,t,new Set);this.tree.attach(s,{type:"file",content:u,appendChunks:[o],mode:c.mode,mtime:new Date});return}this.tree.appendChunk(c,o),c.mtime=new Date;return}if(a.kind==="blocked")throw new Error(`ENOENT: no such file or directory, append '${t}'`);if(a.kind==="notdir")throw new Error(`ENOTDIR: not a directory, append '${t}'`);let l;try{l=await this.readFileBuffer(s)}catch(c){if(!(c instanceof Error)||!c.message.startsWith("ENOENT"))throw c;l=new Uint8Array(0)}this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,appendChunks:[o],mode:await this.inheritedMode(s),mtime:new Date})}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,n=new Set){z(t,"stat");let r=V(t);if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);if(s.kind==="notdir")throw new Error(`ENOTDIR: not a directory, stat '${t}'`);if(s.kind==="found"){let o=s.node;if(o.type==="whiteout")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);if(o.type==="symlink"){let a=this.resolveSymlink(r,o.target);return this.stat(a,n)}return this.memoryEntryStat(o)}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await le.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await le.promises.readlink(i),l=this.realTargetToVirtual(a),c=this.resolveSymlink(r,l);return this.stat(c,n)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime,dev:o.dev,ino:o.ino}}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){z(t,"lstat");let n=V(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.kind==="notdir")throw new Error(`ENOTDIR: not a directory, lstat '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);return this.memoryEntryStat(i)}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await le.promises.lstat(s);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime,dev:i.dev,ino:i.ino}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}memoryEntryStat(t){if(t.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:t.mode,size:t.target.length,mtime:t.mtime};let n=0;return t.type==="file"&&(n=t.metacopy?t.lowerSize??0:ad(t)),{isFile:t.type==="file",isDirectory:t.type==="directory",isSymbolicLink:!1,mode:t.mode,size:n,mtime:t.mtime,identity:this.identityFor(t)}}resolveSymlink(t,n){return Un(t,n)}realTargetToVirtual(t){let n=sd(t,this.canonicalRoot);if(n.withinRoot){if(!Te.isAbsolute(t))return t;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,n){z(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=V(t);if(await this.existsInOverlay(r)){if(!n?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=zn(r);if(i!=="/"&&!await this.existsInOverlay(i))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.tree.ensureDirs(r,o=>this.lowerChildren(o))}async readdirCore(t,n){let r=new Map,s=new Set,i=this.tree.descend(n);if(i.kind==="blocked")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.kind==="notdir")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let o;if(i.kind==="found"){let l=i.node;if(l.type==="whiteout")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(l.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);o=l;for(let[c,u]of l.children){if(u.type==="whiteout"){s.add(c);continue}r.set(c,{name:c,isFile:u.type==="file",isDirectory:u.type==="directory",isSymbolicLink:u.type==="symlink"})}}let a=this.resolveRealPath_(this.toRealPath(n));if(a)try{if(!this.allowSymlinks&&(await le.promises.lstat(a)).isSymbolicLink()){if(!o){let u=new Error(`ENOENT: no such file or directory, scandir '${t}'`);throw u.code="ENOENT",u}return r}let l=await le.promises.readdir(a,{withFileTypes:!0});for(let c of l)!s.has(c.name)&&!r.has(c.name)&&r.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(l){if(l.code==="ENOENT"){if(!o)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else l.code!=="ENOTDIR"&&this.sanitizeError(l,t,"scandir")}return r}async resolveForReaddir(t,n=!1){let r=V(t),s=new Set,i=n;for(;;){let l=this.tree.descend(r);if(l.kind!=="found")break;let c=l.node;if(c.type!=="symlink")return{normalized:r,outsideOverlay:!1};if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);s.add(r),i=!0,r=this.resolveSymlink(r,c.target)}if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let a=this.resolveRealPath_(this.toRealPath(r));if(!a)return{normalized:r,outsideOverlay:!0};try{if((await le.promises.lstat(a)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let c=await le.promises.readlink(a),u=this.realTargetToVirtual(c),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){z(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){z(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,n){z(t,"rm"),this.assertWritable(`rm '${t}'`);let r=V(t);if(!await this.existsInOverlay(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}let i=!1;try{(await this.stat(r)).isDirectory&&(i=(await this.readdir(r)).length>0)}catch{}if(i&&!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.existsOnRealFs(r)?this.tree.putWhiteout(r):this.tree.detach(r)}existsOnRealFs(t){let n=this.toRealPath(t),r=this.resolveRealPathParent_(n);if(!r)return!1;try{return le.lstatSync(r),!0}catch{return!1}}async cp(t,n,r){z(t,"cp"),z(n,"cp"),this.assertWritable(`cp '${n}'`);let s=V(t),i=V(n);if(!await this.existsInOverlay(s))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(s);if(a.isFile){let l=await this.readFileBuffer(s);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);if(Bt(s,i))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(s);for(let c of l){let u=s==="/"?`/${c}`:`${s}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,n){this.assertWritable(`mv '${n}'`),await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return Yt(t,n)}getAllPaths(){let t=new Set;for(let{path:n,node:r}of this.tree.preOrder())r.type!=="whiteout"&&t.add(n);return this.scanRealFs(this.mountPoint,t),Array.from(t)}scanRealFs(t,n){if(this.lowerHidden(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let s=le.readdirSync(r);for(let i of s){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.lowerHidden(o))continue;n.add(o);let a=Te.join(r,i);le.lstatSync(a).isDirectory()&&this.scanRealFs(o,n)}}catch{}}lowerHidden(t){let n=this.tree.descend(t);switch(n.kind){case"blocked":case"notdir":return!0;case"found":return n.node.type!=="directory";default:return!1}}entryAt(t){let n=this.tree.descend(t);if(n.kind==="found"&&n.node.type!=="whiteout")return n.node}async chmod(t,n){z(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=V(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.entryAt(r);if(i){i.mode=n;return}let o=await this.stat(r);this.attachMetacopyShadow(r,o,n,o.isFile?o.mtime:new Date)}attachMetacopyShadow(t,n,r,s){this.ensureParentDirs(t),n.isFile?this.tree.attach(t,{type:"file",content:new Uint8Array(0),metacopy:!0,lowerSize:n.size,mode:r,mtime:s}):n.isDirectory&&this.tree.attach(t,{type:"directory",children:new Map,mode:r,mtime:s})}async symlink(t,n){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${n}'`);z(n,"symlink"),this.assertWritable(`symlink '${n}'`);let r=V(n);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.tree.attach(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,n){z(t,"link"),z(n,"link"),this.assertWritable(`link '${n}'`);let r=V(t),s=V(n);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(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,mode:o.mode,mtime:new Date,identity:o.identity??`overlay:${this.nextMemoryIdentity++}`})}async readlink(t){z(t,"readlink");let n=V(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.kind==="notdir")throw new Error(`ENOTDIR: not a directory, readlink '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return i.target}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await le.promises.readlink(s);if(!Te.isAbsolute(i)){let o=Te.resolve(Te.dirname(s),i),a;try{a=le.realpathSync(o)}catch{a=o}if(!Ie(a,this.canonicalRoot))return Te.basename(i)}return this.realTargetToVirtual(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){z(t,"realpath");let n=V(t),r=new Set,s=l=>{let c=this.tree.descend(l);if(c.kind==="blocked"||c.kind==="found"&&c.node.type==="whiteout")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return c.kind==="found"?c.node:void 0},i=async l=>{let c=l==="/"?[]:l.slice(1).split("/"),u="";for(let f of c){if(u=`${u}/${f}`,r.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);let d=s(u),p=0,h=40;for(;d&&d.type==="symlink"&&p<h;){if(r.add(u),u=this.resolveSymlink(u,d.target),p++,r.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);d=s(u)}if(p>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!d){let m=this.toRealPath(u),E=this.resolveRealPath_(m);if(E)try{if((await le.promises.lstat(E)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let g=await le.promises.readlink(E),y=this.realTargetToVirtual(g);return r.add(u),u=this.resolveSymlink(u,y),i(u)}}catch(S){if(S.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(S,t,"realpath")}else if(!this.allowSymlinks){let S=this.resolveRealPathParent_(m);if(S)try{if((await le.promises.lstat(S)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(g){if(g.message?.includes("ENOENT")||g.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(g,t,"realpath")}}}}return u||"/"},o=await i(n);if(!await this.existsInOverlay(o))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return o}async utimes(t,n,r){z(t,"utimes"),this.assertWritable(`utimes '${t}'`);let s=V(t);if(!await this.existsInOverlay(s))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.entryAt(s);if(o){o.mtime=r;return}let a=await this.stat(s);this.attachMetacopyShadow(s,a,a.mode,r)}};var li=class{bash;overlays;constructor(t={}){let{home:n,project:r,cwd:s,env:i,...o}=t,a=new Map,l=[],c=n?Ra(n):null,u=r?Ra(r):null,f=c&&u&&(()=>{let h=Xe.relative(c,u);return h!==".."&&!h.startsWith(`..${Xe.sep}`)&&!Xe.isAbsolute(h)})();if(c){let h=new Gt({root:c,mountPoint:"/"});a.set("/home/user",{root:c,fs:h}),l.push({mountPoint:"/home/user",filesystem:h})}let d="/home/user";if(u)if(f&&c){let h=Xe.relative(c,u);d=h?`/home/user/${h.split(Xe.sep).join("/")}`:"/home/user"}else{let h=new Gt({root:u,mountPoint:"/"});a.set("/project",{root:u,fs:h}),l.push({mountPoint:"/project",filesystem:h}),d="/project"}let p=new fn({base:new nt,mounts:l});this.overlays=a,this.bash=new Fn({...o,env:{HOME:"/home/user",...i},cwd:s??d,fs:p})}analyzeCommands(t){return this.bash.analyzeCommands(t)}exec(t){return this.bash.exec(t)}diff(){let t=[],n=[];for(let{root:r,fs:s}of this.overlays.values()){let i=s.diff();for(let{path:o,...a}of i.writes)t.push({...a,path:Xe.join(r,o)});for(let o of i.deletions)n.push(Xe.join(r,o))}return t.sort((r,s)=>r.path<s.path?-1:r.path>s.path?1:0),n.sort(),{writes:t,deletions:n}}async applyChanges(t=this.diff()){let n=new Map,r=s=>{let i=this.findOverlay(s);if(!i)return;let o=`/${Xe.relative(i.root,s).split(Xe.sep).join("/")}`,a=n.get(i.fs);a?a.push(o):n.set(i.fs,[o])};try{for(let s of t.deletions)nd(s),r(s);for(let s of t.writes)rd(s.path,s),r(s.path)}finally{for(let[s,i]of n)s.drop(i)}}findOverlay(t){let n=null;for(let r of this.overlays.values())(t===r.root||t.startsWith(r.root+Xe.sep))&&(!n||r.root.length>n.root.length)&&(n=r);return n}async sync(){for(let{fs:t}of this.overlays.values())await t.sync()}reset(){for(let{fs:t}of this.overlays.values())t.reset()}};function Cy(e={}){return new li(e)}import{randomBytes as Ny}from"node:crypto";import*as _ from"node:fs";import*as H from"node:path";var Ry=["EACCES","escaping sandbox","EFBIG","ENOTSUP"],ci=class e{static activeMutationRoots=new Set;static pendingMutations=[];root;canonicalRoot;maxFileReadSize;maxCopyOnWriteSize;maxCopySize;allowSymlinks;constructor(t){this.root=H.resolve(t.root),this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxCopyOnWriteSize=t.maxCopyOnWriteSize??104857600,this.maxCopySize=t.maxCopySize??0,this.allowSymlinks=t.allowSymlinks??!1,ri(this.root,"ReadWriteFs"),this.canonicalRoot=_.realpathSync(this.root)}resolveAndValidate(t,n){let r=this.allowSymlinks?Mn(t,this.canonicalRoot):ni(t,this.root,this.canonicalRoot);if(r===null)throw new Error(`EACCES: permission denied, '${n}' resolves outside sandbox`);return r}validateParent(t,n){let r=H.dirname(t),s=this.resolveAndValidate(r,n);return H.join(s,H.basename(t))}toRealPath(t){let n=V(t),r=H.join(this.root,n);return H.resolve(r)}async readFile(t,n){let r=await this.readFileBuffer(t),s=ct(n);return zt(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return zt(n,"binary")}async readFileBuffer(t){z(t,"open");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{let s=this.allowSymlinks?_.constants.O_RDONLY:_.constants.O_RDONLY|_.constants.O_NOFOLLOW,i=await _.promises.open(r,s);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(s){let i=s;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(s,t,"open")}}async writeFile(t,n,r){await this.withFilesystemMutation(()=>this.writeFileUnlocked(t,n,r))}async writeFileUnlocked(t,n,r){z(t,"write");let s=this.toRealPath(t),i=this.resolveAndValidate(s,t),o=ct(r),a=Vt(n,o),l=H.dirname(i);try{await _.promises.mkdir(l,{recursive:!0}),i=this.resolveAndValidate(s,t);let c=this.allowSymlinks?0:_.constants.O_NOFOLLOW,u=null;try{let f=await _.promises.lstat(i);if(!f.isFile()&&!f.isDirectory())throw new Error(`EACCES: cannot write special file '${t}'`);let d=await _.promises.open(i,_.constants.O_WRONLY|_.constants.O_NONBLOCK|c);try{if(u=await d.stat(),!u.isFile())throw new Error(`EACCES: cannot write special file '${t}'`);if(u.nlink<=1){await d.truncate(0),await d.writeFile(a);return}}finally{await d.close()}}catch(f){if(f.code!=="ENOENT")throw f}await this.replaceFile(i,a,u)}catch(c){if(c.code==="ELOOP")throw new Error(`EACCES: permission denied, '${t}' is a symlink`);this.sanitizeError(c,t,"write")}}async appendFile(t,n,r){await this.withFilesystemMutation(()=>this.appendFileUnlocked(t,n,r))}async appendFileUnlocked(t,n,r){z(t,"append");let s=this.toRealPath(t),i=ct(r),o=Vt(n,i),a=this.resolveAndValidate(s,t),l=H.dirname(a);try{await _.promises.mkdir(l,{recursive:!0}),a=this.resolveAndValidate(s,t);let c=this.allowSymlinks?0:_.constants.O_NOFOLLOW,u=null;try{let d=await _.promises.lstat(a);if(!d.isFile()&&!d.isDirectory())throw new Error(`EACCES: cannot append special file '${t}'`);let p=await _.promises.open(a,_.constants.O_WRONLY|_.constants.O_APPEND|_.constants.O_NONBLOCK|c);try{if(u=await p.stat(),!u.isFile())throw new Error(`EACCES: cannot append special file '${t}'`);if(u.nlink<=1){await p.writeFile(o);return}}finally{await p.close()}}catch(d){if(d.code!=="ENOENT")throw d}if(!u){await this.replaceFile(a,o,null);return}this.assertCopyOnWriteSize(u.size,"append",t);let f=await this.openCopySource(a);try{let d=await f.stat();if(!d.isFile()||d.dev!==u.dev||d.ino!==u.ino)throw new Error(`EACCES: file identity changed, append '${t}'`);await this.replaceFile(a,o,d,{handle:f,size:u.size})}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 withFilesystemMutation(t){return new Promise((n,r)=>{e.pendingMutations.push({root:this.canonicalRoot,start:()=>{e.activeMutationRoots.add(this.canonicalRoot),t().then(n,r).finally(()=>{e.activeMutationRoots.delete(this.canonicalRoot),e.drainMutationQueue()})}}),e.drainMutationQueue()})}static drainMutationQueue(){for(let t=0;t<e.pendingMutations.length;){let n=e.pendingMutations[t];if([...e.activeMutationRoots].some(s=>Ie(n.root,s)||Ie(s,n.root))){t++;continue}e.pendingMutations.splice(t,1),n.start()}}assertCopyOnWriteSize(t,n,r){if(this.maxCopyOnWriteSize>0&&t>this.maxCopyOnWriteSize)throw new Error(`EFBIG: file too large for copy-on-write ${n} '${r}' (${t} bytes, max ${this.maxCopyOnWriteSize})`)}assertCopySize(t,n){if(this.maxCopySize>0&&t.size>this.maxCopySize)throw new Error(`EFBIG: file too large to copy '${n}' (${t.size} bytes, max ${this.maxCopySize})`)}randomTransactionToken(){return Ny(16).toString("hex")}async openCopySource(t){let n=this.allowSymlinks?0:_.constants.O_NOFOLLOW,r=_.constants.O_RDONLY|_.constants.O_NONBLOCK|n,s=_.constants.O_NOATIME;if(process.platform!=="linux"||s===void 0)return _.promises.open(t,r);try{return await _.promises.open(t,r|s)}catch(i){if(i.code!=="EPERM")throw i;return _.promises.open(t,r)}}async replaceFile(t,n,r,s,i,o=!1){let a=H.dirname(t),l="",c=null,u=r===null?438:384;for(let h=0;h<16;h++){l=H.join(a,`.just-bash-write-${this.randomTransactionToken()}`);try{c=await _.promises.open(l,_.constants.O_WRONLY|_.constants.O_CREAT|_.constants.O_EXCL,u);break}catch(m){if(m.code!=="EEXIST")throw m}}if(!c)throw new Error(`EEXIST: replacement write '${t}'`);let f=c,d=await f.stat(),p=!1;try{try{let m=0,E=async S=>{let g=0;for(;g<S.byteLength;){let{bytesWritten:y}=await f.write(S,g,S.byteLength-g,m+g);if(y===0)throw new Error("EIO: replacement write made no progress");g+=y}m+=g};if(s){let S=Buffer.allocUnsafe(65536),g=0,y=s.size;for(;y>0;){let b=Math.min(S.length,y),{bytesRead:v}=await s.handle.read(S,0,b,g);if(v===0)break;await E(S.subarray(0,v)),g+=v,y-=v}}if(await E(n),r!==null&&await f.chmod(r.mode&(o?4095:511)),i)await f.utimes(i.atime,i.mtime);else if(r!==null){let S=await f.stat();await f.utimes(r.atime,S.mtime)}}finally{await f.close(),c=null}let h=await _.promises.lstat(l);if(!h.isFile()||h.dev!==d.dev||h.ino!==d.ino)throw new Error("EACCES: replacement staging entry changed");await _.promises.rename(l,t),p=!0}finally{c&&await c.close().catch(()=>{}),p||await _.promises.rm(l,{force:!0}).catch(()=>{})}}async exists(t){if(t.includes("\0"))return!1;let n=this.toRealPath(t);try{let r=this.resolveAndValidate(n,t);return await _.promises.access(r),!0}catch{return!1}}async stat(t){z(t,"stat");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{let s=await _.promises.lstat(r);if(!this.allowSymlinks&&s.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return{isFile:s.isFile(),isDirectory:s.isDirectory(),isSymbolicLink:s.isSymbolicLink(),mode:s.mode,size:s.size,mtime:s.mtime,dev:s.dev,ino:s.ino,identity:`real:${s.dev}:${s.ino}`}}catch(s){if(s.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(s,t,"stat")}}async lstat(t){z(t,"lstat");let n=this.toRealPath(t),r=this.validateParent(n,t);try{let s=await _.promises.lstat(r);return{isFile:s.isFile(),isDirectory:s.isDirectory(),isSymbolicLink:s.isSymbolicLink(),mode:s.mode,size:s.size,mtime:s.mtime,dev:s.dev,ino:s.ino,identity:`real:${s.dev}:${s.ino}`}}catch(s){if(s.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(s,t,"lstat")}}async mkdir(t,n){await this.withFilesystemMutation(()=>this.mkdirUnlocked(t,n))}async mkdirUnlocked(t,n){z(t,"mkdir");let r=this.toRealPath(t),s=r===this.root?this.resolveAndValidate(r,t):this.validateParent(r,t);try{await _.promises.mkdir(s,{recursive:n?.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){z(t,"scandir");let n=this.toRealPath(t),r=this.resolveAndValidate(n,t);try{if(!this.allowSymlinks&&(await _.promises.lstat(r)).isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);return(await _.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(s){let i=s;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(s,t,"scandir")}}async rm(t,n){await this.withFilesystemMutation(()=>this.rmUnlocked(t,n))}async rmUnlocked(t,n){z(t,"rm");let r=this.toRealPath(t),s=this.validateParent(r,t);try{let i=await _.promises.lstat(s);if(!this.allowSymlinks&&i.isSymbolicLink())throw new Error(`EACCES: permission denied, '${t}' is a symlink`);await _.promises.rm(s,{recursive:n?.recursive??!1,force:n?.force??!1})}catch(i){let o=i;if(o.code==="ENOENT"){if(n?.force)return;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,n,r){await this.withFilesystemMutation(()=>this.cpUnlocked(t,n,r))}async cpUnlocked(t,n,r){z(t,"cp"),z(n,"cp");let s=this.toRealPath(t),i=this.toRealPath(n),o=this.validateParent(s,t),a=this.resolveAndValidate(i,n),l;try{l=await _.promises.lstat(o)}catch(c){if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);this.sanitizeError(c,t,"cp")}if(l.isDirectory()&&Ie(a,o))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);if(!l.isDirectory())try{let c=this.validateParent(i,n),u=await _.promises.lstat(c);if(l.dev===u.dev&&l.ino===u.ino)throw new Error(`EINVAL: cannot copy '${t}' onto itself, '${n}'`)}catch(c){if(c.code!=="ENOENT")throw c}if(l.isFile())try{let c=await _.promises.stat(a);if(l.dev===c.dev&&l.ino===c.ino)throw new Error(`EINVAL: cannot copy '${t}' onto itself, '${n}'`)}catch(c){if(c.code!=="ENOENT")throw c}try{await this.preflightCopyTree(o,t)}catch(c){this.sanitizeError(c,t,"cp")}if(l.isFile()||l.isSymbolicLink())try{await _.promises.mkdir(H.dirname(a),{recursive:!0}),this.resolveAndValidate(i,n)}catch(c){this.sanitizeError(c,n,"cp")}try{await this.copyTreeEntry(o,i,t,n,r?.recursive??!1)}catch(c){let u=c;if(u.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(u.code==="EISDIR")throw new Error(`EISDIR: is a directory, cp '${t}'`);this.sanitizeError(c,t,"cp")}}async copyTreeEntry(t,n,r,s,i){let o=await _.promises.lstat(t);if(o.isFile()){this.assertCopySize(o,r);let a=this.resolveAndValidate(n,s),l=await this.assertCopyDestinationWritable(a,s),c=await this.openCopySource(t);try{let u=await c.stat();if(!u.isFile()||u.dev!==o.dev||u.ino!==o.ino)throw new Error(`EACCES: file identity changed, cp '${r}'`);await this.replaceFile(a,new Uint8Array(0),l??o,{handle:c,size:o.size})}finally{await c.close()}return}if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`EACCES: permission denied, cp '${r}' contains a symlink`);let a=await _.promises.readlink(t),l=H.isAbsolute(a)?await this.toVirtualAbsoluteSymlinkTarget(a,r):a;await this.replaceSymlink(n,s,l);return}if(o.isDirectory()){if(!i)throw new Error(`EISDIR: is a directory, cp '${r}'`);let a=this.resolveAndValidate(n,s);await _.promises.mkdir(a,{recursive:!0}),a=this.resolveAndValidate(n,s);for(let l of await _.promises.readdir(t))await this.copyTreeEntry(H.join(t,l),H.join(n,l),H.join(r,l),H.join(s,l),!0);await _.promises.chmod(a,o.mode&4095);return}throw new Error(`EINVAL: unsupported file type, cp '${r}'`)}async assertCopyDestinationWritable(t,n){let r;try{r=await _.promises.lstat(t)}catch(o){if(o.code==="ENOENT")return null;throw o}if(!r.isFile()){if(r.isDirectory())return r;throw new Error(`EACCES: cannot copy over special file '${n}'`)}let s=this.allowSymlinks?0:_.constants.O_NOFOLLOW,i=await _.promises.open(t,_.constants.O_WRONLY|_.constants.O_NONBLOCK|s);try{let o=await i.stat();if(!o.isFile()||o.dev!==r.dev||o.ino!==r.ino)throw new Error(`EACCES: destination changed, cp '${n}'`)}finally{await i.close()}return r}async replaceSymlink(t,n,r){let s=this.validateParent(t,n),i=H.dirname(V(n)),o="",a="",l="",c=null;for(let f=0;f<16;f++){let d=`.just-bash-copy-link-${this.randomTransactionToken()}`;o=i==="/"?`/${d}`:`${i}/${d}`,a=this.toRealPath(o);try{await this.symlinkUnlocked(r,o),l=this.validateParent(a,o),c=await _.promises.lstat(l);break}catch(p){let h=p;if(h.code!=="EEXIST"&&!h.message.startsWith("EEXIST:"))throw p}}if(!c)throw new Error(`EEXIST: replacement symlink '${n}'`);let u=!1;try{let f=await _.promises.lstat(l);if(!f.isSymbolicLink()||f.dev!==c.dev||f.ino!==c.ino)throw new Error("EACCES: replacement symlink entry changed");await _.promises.rename(l,s),u=!0}finally{!u&&l&&await _.promises.rm(l,{force:!0}).catch(()=>{})}}async toVirtualAbsoluteSymlinkTarget(t,n){let r=H.resolve(t),s=await _.promises.realpath(r),i=await _.promises.realpath(H.dirname(r)),o=H.join(i,H.basename(r));if(!Ie(s,this.canonicalRoot)||!Ie(o,this.canonicalRoot))throw new Error(`EACCES: permission denied, cp '${n}' contains an unsafe symlink`);return o.slice(this.canonicalRoot.length)||"/"}async preflightCopyTree(t,n,r=new Set){let s=await _.promises.lstat(t),i=`${s.dev}:${s.ino}`;if(r.has(i))throw new Error(`ELOOP: cp '${n}' contains a cycle`);if(s.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`EACCES: permission denied, cp '${n}' contains a symlink`);let o=await _.promises.realpath(t);if(!Ie(o,this.canonicalRoot))throw new Error(`EACCES: permission denied, cp '${n}' contains an unsafe symlink`);return}if(s.isDirectory()){r.add(i);try{let o=await _.promises.readdir(t);for(let a of o)await this.preflightCopyTree(H.join(t,a),H.join(n,a),r)}finally{r.delete(i)}}}async mv(t,n){await this.withFilesystemMutation(()=>this.mvUnlocked(t,n))}async mvUnlocked(t,n){z(t,"mv"),z(n,"mv");let r=this.toRealPath(t),s=this.toRealPath(n),i=this.validateParent(r,t),o=this.validateParent(s,n),a;try{a=await _.promises.lstat(i)}catch(c){if(c.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);this.sanitizeError(c,t,"mv")}if(a.isDirectory()&&this.isSameOrDescendantIdentity(i,o))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);try{if(a.isSymbolicLink()){let c=await _.promises.readlink(i),u=H.resolve(H.dirname(o),c),f=await _.promises.realpath(u).catch(()=>u);if(!Ie(f,this.canonicalRoot))throw new Error(`EACCES: permission denied, mv '${t}' -> '${n}' would create symlink escaping sandbox`)}}catch(c){let u=c;if(u.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(u.message?.includes("EACCES")||u.message?.includes("escaping sandbox"))throw c}let l=H.dirname(o);try{await _.promises.mkdir(l,{recursive:!0})}catch(c){this.sanitizeError(c,n,"mv")}try{await _.promises.rename(i,o)}catch(c){let u=c;if(u.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(u.code==="EXDEV"){await this.moveAcrossDevices(t,n);return}this.sanitizeError(c,t,"mv")}try{if(_.lstatSync(o).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw await _.promises.rename(o,i),new Error(`EACCES: permission denied, mv '${t}' -> '${n}' would create symlinks escaping sandbox`)}catch(c){if(c.message?.includes("EACCES")||c.message?.includes("escaping sandbox"))throw c;await _.promises.rename(o,i).catch(()=>{}),this.sanitizeError(c,n,"mv")}}isSameOrDescendantIdentity(t,n){let r=t,s=n;try{r=_.realpathSync(t)}catch{}try{s=_.realpathSync(n)}catch{try{let i=_.realpathSync(H.dirname(n));s=H.join(i,H.basename(n))}catch{}}return Ie(s,r)}async uniqueTransactionPath(t,n){let r=H.posix.dirname(t);for(let s=0;s<16;s++){let i=H.posix.join(r,`.just-bash-mv-${n}-${this.randomTransactionToken()}`);if(!await this.exists(i))return i}throw new Error(`EEXIST: mv '${t}'`)}async moveAcrossDevices(t,n){let r=await this.uniqueTransactionPath(n,"stage"),s=await this.uniqueTransactionPath(n,"backup"),i=await this.uniqueTransactionPath(t,"source"),o=this.validateParent(this.toRealPath(r),r),a=this.validateParent(this.toRealPath(s),s),l=this.validateParent(this.toRealPath(t),t),c=this.validateParent(this.toRealPath(i),i),u=this.validateParent(this.toRealPath(n),n),f=!1,d=!1,p=!1,h=async()=>{p&&await _.promises.rename(c,l).catch(()=>{}),d&&await _.promises.rm(u,{recursive:!0,force:!0}).catch(()=>{}),f&&await _.promises.rename(a,u).catch(()=>{}),await _.promises.rm(o,{recursive:!0,force:!0}).catch(()=>{})};try{if(await this.cpUnlocked(t,r,{recursive:!0}),(await _.promises.lstat(o)).isDirectory()&&this.findEscapingSymlinks(o).length>0)throw new Error(`EACCES: permission denied, mv '${t}' -> '${n}' would create symlinks escaping sandbox`);try{await _.promises.rename(u,a),f=!0}catch(E){if(E.code!=="ENOENT")throw E}await _.promises.rename(o,u),d=!0,await _.promises.rename(l,c),p=!0,await _.promises.rm(c,{recursive:!0,force:!1}),p=!1,f&&await _.promises.rm(a,{recursive:!0,force:!0}).catch(()=>{})}catch(m){await h(),this.sanitizeError(m,t,"mv")}}resolvePath(t,n){return Yt(t,n)}getAllPaths(){let t=[];return this.scanDir("/",t),t}sanitizeError(t,n,r){si(t,n,r,Ry)}findEscapingSymlinks(t){let n=[],r=_.readdirSync(t);for(let s of r){let i=H.join(t,s),o=_.lstatSync(i);if(o.isSymbolicLink()){let a=_.readlinkSync(i),l=H.resolve(t,a),c;try{c=_.realpathSync(l)}catch(u){if(u.code!=="ENOENT")throw u;c=l}Ie(c,this.canonicalRoot)||n.push(i)}else o.isDirectory()&&n.push(...this.findEscapingSymlinks(i))}return n}scanDir(t,n){let r=this.toRealPath(t),s;try{s=this.resolveAndValidate(r,t)}catch{return}try{let i=_.readdirSync(s);for(let o of i){let a=t==="/"?`/${o}`:`${t}/${o}`;n.push(a);let l=H.join(s,o);_.lstatSync(l).isDirectory()&&this.scanDir(a,n)}}catch{}}async chmod(t,n){await this.withFilesystemMutation(()=>this.chmodUnlocked(t,n))}async chmodUnlocked(t,n){z(t,"chmod");let r=this.toRealPath(t),s=this.resolveAndValidate(r,t);try{let i=await _.promises.lstat(s);if(!i.isFile()){if(!i.isDirectory()&&i.nlink>1)throw new Error(`EACCES: cannot chmod multiply-linked special file '${t}'`);await _.promises.chmod(s,n);return}if(i.nlink<=1){await _.promises.chmod(s,n);return}this.assertCopyOnWriteSize(i.size,"chmod",t);let o=await this.openCopySource(s);try{let a=await o.stat();if(!a.isFile())throw new Error(`EACCES: file type changed, chmod '${t}'`);await this.replaceFile(s,new Uint8Array(0),{mode:n,atime:a.atime,mtime:a.mtime},{handle:o,size:a.size},{atime:a.atime,mtime:a.mtime},!0)}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,n){await this.withFilesystemMutation(()=>this.symlinkUnlocked(t,n))}async symlinkUnlocked(t,n){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${n}'`);z(n,"symlink");let r=this.toRealPath(n),s=this.validateParent(r,n),i=V(n),o=V(H.dirname(i)),a=t.startsWith("/")?V(t):V(o==="/"?`/${t}`:`${o}/${t}`),l=H.join(this.canonicalRoot,a),c=H.dirname(s),u=t.startsWith("/")?l:H.relative(c,l)||".";try{await _.promises.symlink(u,s)}catch(f){if(f.code==="EEXIST")throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.sanitizeError(f,n,"symlink")}}async link(t,n){await this.withFilesystemMutation(()=>this.linkUnlocked(t,n))}async linkUnlocked(t,n){z(t,"link"),z(n,"link");let r=this.toRealPath(t),s=this.toRealPath(n),i=this.resolveAndValidate(r,t),o=s===this.root?this.resolveAndValidate(s,n):this.validateParent(s,n);try{await _.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 '${n}'`);if(l.code==="EPERM")throw new Error(`EPERM: operation not permitted, link '${t}'`);this.sanitizeError(a,t,"link")}}async readlink(t){z(t,"readlink");let n=this.toRealPath(t),r=this.validateParent(n,t);try{let s=await _.promises.readlink(r),i=V(t),o=H.dirname(i),a=H.isAbsolute(s)?s:H.resolve(H.dirname(r),s),l=await _.promises.realpath(a).catch(()=>a);if(Ie(l,this.canonicalRoot)){let c=l.slice(this.canonicalRoot.length)||"/";return o==="/"?c.startsWith("/")?c.slice(1)||".":c:H.relative(o,c)}return H.basename(s)}catch(s){let i=s;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(s,t,"readlink")}}async realpath(t){z(t,"realpath");let n=this.toRealPath(t);try{this.resolveAndValidate(n,t)}catch{throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}let r;try{r=await _.promises.realpath(n)}catch(s){let i=s;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(s,t,"realpath")}if(Ie(r,this.canonicalRoot))return r.slice(this.canonicalRoot.length)||"/";throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}async utimes(t,n,r){await this.withFilesystemMutation(()=>this.utimesUnlocked(t,n,r))}async utimesUnlocked(t,n,r){z(t,"utimes");let s=this.toRealPath(t),i=this.resolveAndValidate(s,t);try{let o=await _.promises.lstat(i);if(!o.isFile()){if(!o.isDirectory()&&o.nlink>1)throw new Error(`EACCES: cannot change times on multiply-linked special file '${t}'`);await _.promises.utimes(i,n,r);return}if(o.nlink<=1){await _.promises.utimes(i,n,r);return}this.assertCopyOnWriteSize(o.size,"utimes",t);let a=await this.openCopySource(i);try{let l=await a.stat();if(!l.isFile())throw new Error(`EACCES: file type changed, utimes '${t}'`);await this.replaceFile(i,new Uint8Array(0),l,{handle:a,size:l.size},{atime:n,mtime:r},!0)}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 ir=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;signal;timeoutMs;abortController=new AbortController;timeoutId;externalAbortListener;resultPromise;constructor(t,n,r,s,i=!1,o,a){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=n,this.env=s,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=Mr(()=>{this.abortController.abort(new Error(`sandbox command timeout after ${t}ms`))},t)}}cleanupCancellation(){this.timeoutId!==void 0&&(Br(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 n=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=n.exitCode,n}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 ui=class e{bashEnv;timeoutMs;constructor(t,n){this.bashEnv=t,this.timeoutMs=n}static async create(t){let n=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");n=new Gt({root:t.overlayRoot})}let r=new Fn({env:t?.env,cwd:t?.cwd,fs:n,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network,defenseInDepth:t?.defenseInDepth,python:t?.python,javascript:t?.javascript,commands:t?.commands,customCommands:t?.customCommands,fetch:t?.fetch});return new e(r,t?.timeoutMs)}async runCommand(t,n,r){let s,i,o,a,l=!1,c,u;if(typeof t=="object"){let m=t,E=[m.cmd,...m.args??[]];s=mi(E),i=m.cwd,o=m.env,a=m.signal,l=m.detached??!1,c=m.stdout,u=m.stderr}else if(Array.isArray(n)){let m=r;s=mi([t,...n]),a=m?.signal}else{s=t;let m=n;i=m?.cwd,o=m?.env}let f=i??this.bashEnv.getCwd(),d=i!==void 0,p=new ir(this.bashEnv,s,f,o,d,a,this.timeoutMs);if(l)return p;let h=await p.wait();if(c){let m=await p.stdout();m&&c.write(m)}if(u){let m=await p.stderr();m&&u.write(m)}return h}async writeFiles(t){let n=this.bashEnv.getCwd();for(let[r,s]of Object.entries(t)){let i;typeof s=="string"?i=s:s.encoding==="base64"?i=Buffer.from(s.content,"base64").toString("utf-8"):i=s.content;let o=this.bashEnv.fs.resolvePath(n,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,n){let r=await this.bashEnv.readFile(t);return n==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,n){let r=this.bashEnv.fs.resolvePath(this.bashEnv.getCwd(),t);await this.bashEnv.fs.mkdir(r,{recursive:n?.recursive??!1})}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var fi=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 n=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(n),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(n),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(n)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[n,r]of this.violationsByType){if(r.length===0)continue;let s=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)s.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:n,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(s)})}return t.sort((n,r)=>r.count-n.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 ld(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
806
+ Type: ${e.type}`,`
807
+ Path: ${e.path}`,`
808
+ Message: ${e.message}`,e.executionId?`
809
+ ExecutionId: ${e.executionId}`:"")}}var cd=null;try{let e=process.getBuiltinModule,t=typeof e=="function"?e("module"):typeof di=="function"?di("node:module"):null;cd=t?.Module??t?.default??null,typeof e=="function"&&e("worker_threads")?.isMainThread===!1&&e("crypto")?.randomUUID?.()}catch{cd=null}var Oa=class{maxSourceBytes;plugins=[];constructor(t=67108864){if(this.maxSourceBytes=t,!Number.isSafeInteger(t)||t<0)throw new Error("BashTransformPipeline: invalid maxSourceBytes")}use(t){return this.plugins.push(t),this}transform(t){sr(t,this.maxSourceBytes);let n=ze(t),r=Object.create(null);for(let s of this.plugins){let i=s.transform({ast:n,metadata:r});n=i.ast,i.metadata&&(r=ur(r,i.metadata))}return{script:Er(n),ast:n,metadata:r}}};var Da=class{name="command-collector";transform(t){let{commands:n}=Xr(t.ast);return{ast:t.ast,metadata:{commands:n.sort()}}}};var Ia=class{name="tee";options;counter=0;constructor(t){this.options=t}transform(t){let n=[],r=this.options.timestamp??new Date;return{ast:this.transformScript(t.ast,n,r),metadata:{teeFiles:n}}}formatTimestamp(t){return t.toISOString().replace(/:/g,"-")}generateStdoutPath(t,n,r){let s=this.formatTimestamp(r),i=String(t).padStart(3,"0");if(z(this.options.outputDir,"create tee output"),!this.options.outputDir.startsWith("/")||this.options.outputDir.split("/").includes(".."))throw new Error("tee output directory must be an absolute safe path");let o=V(this.options.outputDir),a=this.encodeCommandName(n),l=V(`${o}/${s}-${i}-${a}.stdout.txt`);if(o!=="/"&&!l.startsWith(`${o}/`))throw new Error("tee output path escapes configured output directory");return l}encodeCommandName(t){if(/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/.test(t))return t;let n=2166136261;for(let s=0;s<t.length;s++)n^=t.charCodeAt(s),n=Math.imul(n,16777619)>>>0;return`${t.replace(/[^A-Za-z0-9_-]/g,"_").replace(/^_+|_+$/g,"").slice(0,32)||"command"}-${n.toString(16).padStart(8,"0")}`}transformScript(t,n,r){return{...t,statements:t.statements.map(s=>this.transformStatement(s,n,r))}}transformStatement(t,n,r){let s=[],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,n,r);s.push(l.pipeline),l.origCmdNewIndices!==null&&(i.push(";"),s.push(this.makePipestatusRestore(l.origCmdNewIndices,l.negated)))}return{...t,pipelines:s,operators:i}}transformPipeline(t,n,r){if(t.commands.length<=1)return{pipeline:t,origCmdNewIndices:null,negated:!1};let s=[],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(s.length),s.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),h=this.makeTeeCommand(p),m=this.serializeCommand(c);n.push({commandIndex:d,commandName:f,command:m,stdoutFile:p}),o.push(s.length),s.push(c),i.push(t.pipeStderr?.[l]??!1),s.push(h),u||i.push(!1),a=!0}return a?{pipeline:{...t,negated:!1,commands:s,pipeStderr:i.length>0?i:void 0},origCmdNewIndices:o,negated:t.negated}:{pipeline:t,origCmdNewIndices:null,negated:!1}}makePipestatusRestore(t,n){return{type:"Pipeline",commands:[{type:"SimpleCommand",assignments:[],name:{type:"Word",parts:[{type:"Literal",value:"builtin"}]},args:[{type:"Word",parts:[{type:"Literal",value:"__just_bash_tee_restore"}]},...t.map(r=>({type:"Word",parts:[{type:"ParameterExpansion",parameter:`PIPESTATUS[${r}]`,operation:null}]}))],redirections:[]}],negated:n}}shouldTarget(t){if(!this.options.targetCommandPattern)return!0;let n=this.getCommandName(t.name);return n!==null&&this.options.targetCommandPattern.test(n)}getCommandName(t){return t&&t.parts.length===1&&t.parts[0].type==="Literal"?t.parts[0].value:null}serializeCommand(t){let n=[];t.name&&n.push(we(t.name));for(let r of t.args)n.push(we(r));return n.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{li as AgentSandbox,Fn as Bash,Oa as BashTransformPipeline,Da as CommandCollectorPlugin,Be as DefenseInDepthBox,pi as EMPTY_BYTES,nt as InMemoryFs,fn as MountableFs,ht as NetworkAccessDeniedError,Gt as OverlayFs,ci as ReadWriteFs,qt as RedirectNotAllowedError,ui as Sandbox,ir as SandboxCommand,Bn as SecurityViolationError,fi as SecurityViolationLogger,Ia as TeePlugin,_n as TooManyRedirectsError,hd as bytesOutput,Cy as createAgentSandbox,bd as createCommandContext,ld as createConsoleViolationCallback,fd as decodeBytesToUtf8,Sd as defineCommand,Ht as encodeUtf8ToBytes,md as getCommandNames,wd as getJavaScriptCommandNames,yd as getNetworkCommandNames,gd as getPythonCommandNames,vn as latin1FromBytes,ze as parse,Er as serialize,Ft as stdoutAsBytes,dd as stdoutKind,pd as textOutput,lr as unsafeBytesFromLatin1};