@keystrokehq/cli 0.1.3 → 0.1.4

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 (236) hide show
  1. package/dist/alias-RTYYYW3D-CLFgrowj.mjs +98 -0
  2. package/dist/alias-RTYYYW3D-CLFgrowj.mjs.map +1 -0
  3. package/dist/awk2-LA3USKJP-BbsfXVlR.mjs +2737 -0
  4. package/dist/awk2-LA3USKJP-BbsfXVlR.mjs.map +1 -0
  5. package/dist/base64-C2AIWVNC-C0WIgu5V.mjs +123 -0
  6. package/dist/base64-C2AIWVNC-C0WIgu5V.mjs.map +1 -0
  7. package/dist/basename-UB3CIYNI-BgNN3bGm.mjs +53 -0
  8. package/dist/basename-UB3CIYNI-BgNN3bGm.mjs.map +1 -0
  9. package/dist/bash-YZ33HQZQ-N6YyKtUH.mjs +118 -0
  10. package/dist/bash-YZ33HQZQ-N6YyKtUH.mjs.map +1 -0
  11. package/dist/cat-TSFMZVYS-Dz3-oHsV.mjs +63 -0
  12. package/dist/cat-TSFMZVYS-Dz3-oHsV.mjs.map +1 -0
  13. package/dist/chmod-TFEPA42X-YF02QJUv.mjs +125 -0
  14. package/dist/chmod-TFEPA42X-YF02QJUv.mjs.map +1 -0
  15. package/dist/chunk-27JIFWUR-B6ZjjMMI.mjs +100 -0
  16. package/dist/chunk-27JIFWUR-B6ZjjMMI.mjs.map +1 -0
  17. package/dist/chunk-4I3HOE5Z-BixWWVkW.mjs +719 -0
  18. package/dist/chunk-4I3HOE5Z-BixWWVkW.mjs.map +1 -0
  19. package/dist/chunk-4RUAZWKT-D60fyWAB.mjs +22543 -0
  20. package/dist/chunk-4RUAZWKT-D60fyWAB.mjs.map +1 -0
  21. package/dist/chunk-4WKZNNJK-CiwxAWRf.mjs +69 -0
  22. package/dist/chunk-4WKZNNJK-CiwxAWRf.mjs.map +1 -0
  23. package/dist/chunk-5H5SCKJM-BvfXlL01.mjs +606 -0
  24. package/dist/chunk-5H5SCKJM-BvfXlL01.mjs.map +1 -0
  25. package/dist/chunk-AQ6FYS2X-CkVetjym.mjs +37 -0
  26. package/dist/chunk-AQ6FYS2X-CkVetjym.mjs.map +1 -0
  27. package/dist/chunk-BZUGFHVS-CPWRFwK8.mjs +34 -0
  28. package/dist/chunk-BZUGFHVS-CPWRFwK8.mjs.map +1 -0
  29. package/dist/chunk-CHFEPBH4-BUdgjFtD.mjs +594 -0
  30. package/dist/chunk-CHFEPBH4-BUdgjFtD.mjs.map +1 -0
  31. package/dist/chunk-DLL7UR66-BUYgzxnR.mjs +14 -0
  32. package/dist/chunk-DLL7UR66-BUYgzxnR.mjs.map +1 -0
  33. package/dist/chunk-DiodbrVj.mjs +27 -0
  34. package/dist/chunk-EBAPSGAO-Ctfslw2R.mjs +247 -0
  35. package/dist/chunk-EBAPSGAO-Ctfslw2R.mjs.map +1 -0
  36. package/dist/chunk-FOCWZZDE-BIntqBh2.mjs +19 -0
  37. package/dist/chunk-FOCWZZDE-BIntqBh2.mjs.map +1 -0
  38. package/dist/chunk-HBVMHTO5-CJyD-QZX.mjs +10 -0
  39. package/dist/chunk-HBVMHTO5-CJyD-QZX.mjs.map +1 -0
  40. package/dist/chunk-L2UW7DWF-B3tEHhPF.mjs +14 -0
  41. package/dist/chunk-L2UW7DWF-B3tEHhPF.mjs.map +1 -0
  42. package/dist/chunk-L64BMZUV-CyR7RKok.mjs +30 -0
  43. package/dist/chunk-L64BMZUV-CyR7RKok.mjs.map +1 -0
  44. package/dist/chunk-LEKBROJD-CJMrAyu9.mjs +3113 -0
  45. package/dist/chunk-LEKBROJD-CJMrAyu9.mjs.map +1 -0
  46. package/dist/chunk-NRSASXYY-CuWyREpD.mjs +41 -0
  47. package/dist/chunk-NRSASXYY-CuWyREpD.mjs.map +1 -0
  48. package/dist/chunk-QAYAQNCG-Bl0Kbd53.mjs +63 -0
  49. package/dist/chunk-QAYAQNCG-Bl0Kbd53.mjs.map +1 -0
  50. package/dist/chunk-QIQMJJZ4-BwKdslXs.mjs +93 -0
  51. package/dist/chunk-QIQMJJZ4-BwKdslXs.mjs.map +1 -0
  52. package/dist/chunk-SAI2SPQQ-CVRoDNs9.mjs +26 -0
  53. package/dist/chunk-SAI2SPQQ-CVRoDNs9.mjs.map +1 -0
  54. package/dist/chunk-SO6R3ZKN-tTw_RMDX.mjs +140 -0
  55. package/dist/chunk-SO6R3ZKN-tTw_RMDX.mjs.map +1 -0
  56. package/dist/chunk-STHBFACM-lyj-j2a-.mjs +8 -0
  57. package/dist/chunk-STHBFACM-lyj-j2a-.mjs.map +1 -0
  58. package/dist/chunk-SX2HC7SO-Cc4Hpis1.mjs +20 -0
  59. package/dist/chunk-SX2HC7SO-Cc4Hpis1.mjs.map +1 -0
  60. package/dist/chunk-TDD4NFYE-wsWW75MX.mjs +21 -0
  61. package/dist/chunk-TDD4NFYE-wsWW75MX.mjs.map +1 -0
  62. package/dist/chunk-TN7HHBQW-CSB_R-XD.mjs +1137 -0
  63. package/dist/chunk-TN7HHBQW-CSB_R-XD.mjs.map +1 -0
  64. package/dist/chunk-VPADYNBD-BKlA28GJ.mjs +122 -0
  65. package/dist/chunk-VPADYNBD-BKlA28GJ.mjs.map +1 -0
  66. package/dist/chunk-W5DWRFSU-lCyWk0ph.mjs +11 -0
  67. package/dist/chunk-W5DWRFSU-lCyWk0ph.mjs.map +1 -0
  68. package/dist/chunk-WNH3HOQA-BCZUOjCJ.mjs +34 -0
  69. package/dist/chunk-WNH3HOQA-BCZUOjCJ.mjs.map +1 -0
  70. package/dist/chunk-XRFHFXFP-BGxzVZgK.mjs +16 -0
  71. package/dist/chunk-XRFHFXFP-BGxzVZgK.mjs.map +1 -0
  72. package/dist/chunk-YCLFEX4T-COc1AThz.mjs +77 -0
  73. package/dist/chunk-YCLFEX4T-COc1AThz.mjs.map +1 -0
  74. package/dist/clear-HKGFEOF6-CekN2x-O.mjs +28 -0
  75. package/dist/clear-HKGFEOF6-CekN2x-O.mjs.map +1 -0
  76. package/dist/column-XT6UFXNQ-DHENV9D2.mjs +143 -0
  77. package/dist/column-XT6UFXNQ-DHENV9D2.mjs.map +1 -0
  78. package/dist/comm-VV2LDX2J-ppxDJFkY.mjs +87 -0
  79. package/dist/comm-VV2LDX2J-ppxDJFkY.mjs.map +1 -0
  80. package/dist/cp-BISAAS7A-CMWayU4n.mjs +106 -0
  81. package/dist/cp-BISAAS7A-CMWayU4n.mjs.map +1 -0
  82. package/dist/cut-OKARJCCV-Bt8b58eI.mjs +119 -0
  83. package/dist/cut-OKARJCCV-Bt8b58eI.mjs.map +1 -0
  84. package/dist/date-UUUPW43J-B7T5OTZZ.mjs +188 -0
  85. package/dist/date-UUUPW43J-B7T5OTZZ.mjs.map +1 -0
  86. package/dist/diff-MWJFIG7X-DhnPc_5r.mjs +755 -0
  87. package/dist/diff-MWJFIG7X-DhnPc_5r.mjs.map +1 -0
  88. package/dist/dirname-MPHRFUTI-Dkb3S4OX.mjs +43 -0
  89. package/dist/dirname-MPHRFUTI-Dkb3S4OX.mjs.map +1 -0
  90. package/dist/{dist-DjfxlOWX.mjs → dist-C47GdlWY.mjs} +18 -93
  91. package/dist/{dist-DjfxlOWX.mjs.map → dist-C47GdlWY.mjs.map} +1 -1
  92. package/dist/{dist-DWcRd4Se.mjs → dist-CJL2zYbP.mjs} +4 -71
  93. package/dist/dist-CJL2zYbP.mjs.map +1 -0
  94. package/dist/dist-Ch53z2P3.mjs +3 -0
  95. package/dist/dist-CwR72_PS.mjs +1887 -0
  96. package/dist/dist-CwR72_PS.mjs.map +1 -0
  97. package/dist/du-572XNP42-ClP4jXB1.mjs +176 -0
  98. package/dist/du-572XNP42-ClP4jXB1.mjs.map +1 -0
  99. package/dist/echo-NDWZZHPO-CCp_-MxA.mjs +137 -0
  100. package/dist/echo-NDWZZHPO-CCp_-MxA.mjs.map +1 -0
  101. package/dist/env-36M5BO7M-CsP_aiWr.mjs +119 -0
  102. package/dist/env-36M5BO7M-CsP_aiWr.mjs.map +1 -0
  103. package/dist/expand-JSPG6VOP-B-YUvYpu.mjs +145 -0
  104. package/dist/expand-JSPG6VOP-B-YUvYpu.mjs.map +1 -0
  105. package/dist/expr-5JAACS4X-1TBq84gG.mjs +153 -0
  106. package/dist/expr-5JAACS4X-1TBq84gG.mjs.map +1 -0
  107. package/dist/file-IPZJC3FQ-DcZNOWyY.mjs +4201 -0
  108. package/dist/file-IPZJC3FQ-DcZNOWyY.mjs.map +1 -0
  109. package/dist/find-INTH3OLC-6p47KeeT.mjs +1332 -0
  110. package/dist/find-INTH3OLC-6p47KeeT.mjs.map +1 -0
  111. package/dist/fold-4TQNYMSW-C54bHzLd.mjs +138 -0
  112. package/dist/fold-4TQNYMSW-C54bHzLd.mjs.map +1 -0
  113. package/dist/grep-V3LQVMRQ-D99Bq7Kj.mjs +335 -0
  114. package/dist/grep-V3LQVMRQ-D99Bq7Kj.mjs.map +1 -0
  115. package/dist/gzip-O5ASJAFY-CZDRROqP.mjs +592 -0
  116. package/dist/gzip-O5ASJAFY-CZDRROqP.mjs.map +1 -0
  117. package/dist/head-442HYESI-D96RMdki.mjs +36 -0
  118. package/dist/head-442HYESI-D96RMdki.mjs.map +1 -0
  119. package/dist/help-HZ6M2CKN--DK8mY2L.mjs +123 -0
  120. package/dist/help-HZ6M2CKN--DK8mY2L.mjs.map +1 -0
  121. package/dist/history-WYYKSLSZ-ACNQVupn.mjs +48 -0
  122. package/dist/history-WYYKSLSZ-ACNQVupn.mjs.map +1 -0
  123. package/dist/hostname-C4HQXXUP-CXVVFkUK.mjs +24 -0
  124. package/dist/hostname-C4HQXXUP-CXVVFkUK.mjs.map +1 -0
  125. package/dist/html-to-markdown-JW4MSQZO-DQOxFIvF.mjs +15890 -0
  126. package/dist/html-to-markdown-JW4MSQZO-DQOxFIvF.mjs.map +1 -0
  127. package/dist/index.mjs +9 -9
  128. package/dist/join-TBRGI3LQ-B8I9tkJ5.mjs +198 -0
  129. package/dist/join-TBRGI3LQ-B8I9tkJ5.mjs.map +1 -0
  130. package/dist/jq-4XLYLOS5-wFZYfsfJ.mjs +257 -0
  131. package/dist/jq-4XLYLOS5-wFZYfsfJ.mjs.map +1 -0
  132. package/dist/js-exec-N5KEZBH7-CgtG-I6s.mjs +333 -0
  133. package/dist/js-exec-N5KEZBH7-CgtG-I6s.mjs.map +1 -0
  134. package/dist/lib-D4GpdNNK.mjs +45 -0
  135. package/dist/lib-D4GpdNNK.mjs.map +1 -0
  136. package/dist/ln-4LGSXXGD-Dg0R9i5G.mjs +101 -0
  137. package/dist/ln-4LGSXXGD-Dg0R9i5G.mjs.map +1 -0
  138. package/dist/ls-ZJGQER7M-DLDSfI4x.mjs +1891 -0
  139. package/dist/ls-ZJGQER7M-DLDSfI4x.mjs.map +1 -0
  140. package/dist/lzma-CTMDi254.mjs +1135 -0
  141. package/dist/lzma-CTMDi254.mjs.map +1 -0
  142. package/dist/{maybe-auto-update-Ou7H6dXT.mjs → maybe-auto-update-B0kal2FM.mjs} +2 -2
  143. package/dist/{maybe-auto-update-Ou7H6dXT.mjs.map → maybe-auto-update-B0kal2FM.mjs.map} +1 -1
  144. package/dist/md5sum-SPU24VSG-DQc8sqXO.mjs +16 -0
  145. package/dist/md5sum-SPU24VSG-DQc8sqXO.mjs.map +1 -0
  146. package/dist/mkdir-MEPGZOB6-BjUKzhdL.mjs +58 -0
  147. package/dist/mkdir-MEPGZOB6-BjUKzhdL.mjs.map +1 -0
  148. package/dist/mv-W5BIQ646-CdSIyY-U.mjs +93 -0
  149. package/dist/mv-W5BIQ646-CdSIyY-U.mjs.map +1 -0
  150. package/dist/nl-WSDW7I4O-DmtCnyKU.mjs +208 -0
  151. package/dist/nl-WSDW7I4O-DmtCnyKU.mjs.map +1 -0
  152. package/dist/od-WOKFDJTP-DZ2nxQNJ.mjs +73 -0
  153. package/dist/od-WOKFDJTP-DZ2nxQNJ.mjs.map +1 -0
  154. package/dist/paste-7JC6S4DX-CtmM5Qy8.mjs +113 -0
  155. package/dist/paste-7JC6S4DX-CtmM5Qy8.mjs.map +1 -0
  156. package/dist/printf-TWGXF445-B7cTysaa.mjs +880 -0
  157. package/dist/printf-TWGXF445-B7cTysaa.mjs.map +1 -0
  158. package/dist/pwd-WE6EN5AV-CO8o2WQS.mjs +34 -0
  159. package/dist/pwd-WE6EN5AV-CO8o2WQS.mjs.map +1 -0
  160. package/dist/python3-POMOR4OA-CKy80mpF.mjs +299 -0
  161. package/dist/python3-POMOR4OA-CKy80mpF.mjs.map +1 -0
  162. package/dist/readlink-OPJF4DL5-Rc1Mz_Xx.mjs +76 -0
  163. package/dist/readlink-OPJF4DL5-Rc1Mz_Xx.mjs.map +1 -0
  164. package/dist/rev-5EHFX4EJ-3dd9vwHW.mjs +66 -0
  165. package/dist/rev-5EHFX4EJ-3dd9vwHW.mjs.map +1 -0
  166. package/dist/rg-S4FXYXWB-BbXVo6JX.mjs +1539 -0
  167. package/dist/rg-S4FXYXWB-BbXVo6JX.mjs.map +1 -0
  168. package/dist/rm-SSGETQVQ-Ch53Rmrr.mjs +81 -0
  169. package/dist/rm-SSGETQVQ-Ch53Rmrr.mjs.map +1 -0
  170. package/dist/rmdir-OC4ZLPYA-D3QCHlIB.mjs +132 -0
  171. package/dist/rmdir-OC4ZLPYA-D3QCHlIB.mjs.map +1 -0
  172. package/dist/sed-S5UIK574-DE1KeTk3.mjs +1722 -0
  173. package/dist/sed-S5UIK574-DE1KeTk3.mjs.map +1 -0
  174. package/dist/seq-M5EC7Q57-BHfGjQvK.mjs +85 -0
  175. package/dist/seq-M5EC7Q57-BHfGjQvK.mjs.map +1 -0
  176. package/dist/sha1sum-2PTOAFR6-DNjSNcYK.mjs +16 -0
  177. package/dist/sha1sum-2PTOAFR6-DNjSNcYK.mjs.map +1 -0
  178. package/dist/sha256sum-NS7D3IXX-BMaCKkT5.mjs +16 -0
  179. package/dist/sha256sum-NS7D3IXX-BMaCKkT5.mjs.map +1 -0
  180. package/dist/sleep-X22JJINO-Do5hEQQW.mjs +67 -0
  181. package/dist/sleep-X22JJINO-Do5hEQQW.mjs.map +1 -0
  182. package/dist/sort-SW2YEO5B-B7j1zw8k.mjs +320 -0
  183. package/dist/sort-SW2YEO5B-B7j1zw8k.mjs.map +1 -0
  184. package/dist/split-4KKZZXXE-h8GD4HP4.mjs +248 -0
  185. package/dist/split-4KKZZXXE-h8GD4HP4.mjs.map +1 -0
  186. package/dist/sqlite3-CGOEFJAO-DvzzghDg.mjs +2879 -0
  187. package/dist/sqlite3-CGOEFJAO-DvzzghDg.mjs.map +1 -0
  188. package/dist/stat-CD34IZ4P-B5ZOJh4J.mjs +65 -0
  189. package/dist/stat-CD34IZ4P-B5ZOJh4J.mjs.map +1 -0
  190. package/dist/strings-6WDHLGMX-DdiEdoL-.mjs +179 -0
  191. package/dist/strings-6WDHLGMX-DdiEdoL-.mjs.map +1 -0
  192. package/dist/tac-2STMMJYW-DPyeWM9R.mjs +53 -0
  193. package/dist/tac-2STMMJYW-DPyeWM9R.mjs.map +1 -0
  194. package/dist/tail-R4PCA2C4-CUfroNeu.mjs +37 -0
  195. package/dist/tail-R4PCA2C4-CUfroNeu.mjs.map +1 -0
  196. package/dist/tar-STHHZTZ6-DRf60e-G.mjs +2838 -0
  197. package/dist/tar-STHHZTZ6-DRf60e-G.mjs.map +1 -0
  198. package/dist/tee-YUZ2FKCJ-po_dfyc_.mjs +46 -0
  199. package/dist/tee-YUZ2FKCJ-po_dfyc_.mjs.map +1 -0
  200. package/dist/time-D4LNBSWX-DVWhAldK.mjs +112 -0
  201. package/dist/time-D4LNBSWX-DVWhAldK.mjs.map +1 -0
  202. package/dist/timeout-YDCRSLPQ-B_yntmXU.mjs +113 -0
  203. package/dist/timeout-YDCRSLPQ-B_yntmXU.mjs.map +1 -0
  204. package/dist/touch-UA33VN3N-oW1SBT1r.mjs +104 -0
  205. package/dist/touch-UA33VN3N-oW1SBT1r.mjs.map +1 -0
  206. package/dist/tr-36LHWFRQ-CTq3z6wq.mjs +167 -0
  207. package/dist/tr-36LHWFRQ-CTq3z6wq.mjs.map +1 -0
  208. package/dist/tree-YLD52CNT-CIozNsLQ.mjs +186 -0
  209. package/dist/tree-YLD52CNT-CIozNsLQ.mjs.map +1 -0
  210. package/dist/true-FHQXJXBE-DsJOznSp.mjs +31 -0
  211. package/dist/true-FHQXJXBE-DsJOznSp.mjs.map +1 -0
  212. package/dist/unexpand-CADSA4VO-Cq9DTcUg.mjs +155 -0
  213. package/dist/unexpand-CADSA4VO-Cq9DTcUg.mjs.map +1 -0
  214. package/dist/uniq-XSIZR6PB-D5lt-IXF.mjs +92 -0
  215. package/dist/uniq-XSIZR6PB-D5lt-IXF.mjs.map +1 -0
  216. package/dist/{version-n-JpPeUF.mjs → version-Dxl3y5p6.mjs} +2 -2
  217. package/dist/{version-n-JpPeUF.mjs.map → version-Dxl3y5p6.mjs.map} +1 -1
  218. package/dist/wc-LF7NU4LA-BFPabrwD.mjs +111 -0
  219. package/dist/wc-LF7NU4LA-BFPabrwD.mjs.map +1 -0
  220. package/dist/which-XEM24D5D-2LvlkpUo.mjs +62 -0
  221. package/dist/which-XEM24D5D-2LvlkpUo.mjs.map +1 -0
  222. package/dist/whoami-XMTX52VE-24Kwqrk6.mjs +24 -0
  223. package/dist/whoami-XMTX52VE-24Kwqrk6.mjs.map +1 -0
  224. package/dist/xan-Y6WF3IRG-DjKO96Pj.mjs +2832 -0
  225. package/dist/xan-Y6WF3IRG-DjKO96Pj.mjs.map +1 -0
  226. package/dist/xan-view-HDVKHFC2-DhDNVE_V.mjs +12 -0
  227. package/dist/xan-view-HDVKHFC2-DhDNVE_V.mjs.map +1 -0
  228. package/dist/xargs-MGZPH7AX-D2bIgrdg.mjs +112 -0
  229. package/dist/xargs-MGZPH7AX-D2bIgrdg.mjs.map +1 -0
  230. package/dist/yq-4QJW3EQG-XhB3aACo.mjs +8610 -0
  231. package/dist/yq-4QJW3EQG-XhB3aACo.mjs.map +1 -0
  232. package/package.json +1 -1
  233. package/dist/dist-DWcRd4Se.mjs.map +0 -1
  234. package/dist/dist-DitNZUHA.mjs +0 -3
  235. package/dist/dist-vwoMCz6d.mjs +0 -775
  236. package/dist/dist-vwoMCz6d.mjs.map +0 -1
@@ -0,0 +1,2737 @@
1
+ #!/usr/bin/env node
2
+ import { n as r$1, r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
3
+ import "./chunk-BZUGFHVS-CPWRFwK8.mjs";
4
+ import { n as r$2 } from "./chunk-DLL7UR66-BUYgzxnR.mjs";
5
+ import { n as d } from "./chunk-TN7HHBQW-CSB_R-XD.mjs";
6
+ import { r as x, t as a } from "./chunk-L64BMZUV-CyR7RKok.mjs";
7
+ import { n as r1, t as I1 } from "./chunk-4RUAZWKT-D60fyWAB.mjs";
8
+ import { r as x$1 } from "./chunk-NRSASXYY-CuWyREpD.mjs";
9
+ import { t as b$1 } from "./chunk-SAI2SPQQ-CVRoDNs9.mjs";
10
+ import { createRequire } from "node:module";
11
+ //#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-LNBPBRV4.js
12
+ createRequire(import.meta.url);
13
+ var Be = 1e4, He = 100, $e = new r1(/\s+/);
14
+ function se(e = {}) {
15
+ let { fieldSep: t = $e, maxIterations: n = Be, maxRecursionDepth: i = He, maxOutputSize: s = 0, fs: a, cwd: o, exec: l, coverage: u, requireDefenseContext: N } = e;
16
+ return {
17
+ FS: " ",
18
+ OFS: " ",
19
+ ORS: `
20
+ `,
21
+ OFMT: "%.6g",
22
+ NR: 0,
23
+ NF: 0,
24
+ FNR: 0,
25
+ FILENAME: "",
26
+ RSTART: 0,
27
+ RLENGTH: -1,
28
+ SUBSEP: "",
29
+ fields: [],
30
+ line: "",
31
+ vars: Object.create(null),
32
+ arrays: Object.create(null),
33
+ arrayAliases: /* @__PURE__ */ new Map(),
34
+ ARGC: 0,
35
+ ARGV: Object.create(null),
36
+ ENVIRON: Object.create(null),
37
+ functions: /* @__PURE__ */ new Map(),
38
+ fieldSep: t,
39
+ maxIterations: n,
40
+ maxRecursionDepth: i,
41
+ maxOutputSize: s,
42
+ currentRecursionDepth: 0,
43
+ exitCode: 0,
44
+ shouldExit: !1,
45
+ shouldNext: !1,
46
+ shouldNextFile: !1,
47
+ loopBreak: !1,
48
+ loopContinue: !1,
49
+ hasReturn: !1,
50
+ inEndBlock: !1,
51
+ output: "",
52
+ openedFiles: /* @__PURE__ */ new Set(),
53
+ fs: a,
54
+ cwd: o,
55
+ exec: l,
56
+ coverage: u,
57
+ requireDefenseContext: N
58
+ };
59
+ }
60
+ function Ne(e, t, n) {
61
+ switch (n) {
62
+ case "+": return e + t;
63
+ case "-": return e - t;
64
+ case "*": return e * t;
65
+ case "/": return t !== 0 ? e / t : 0;
66
+ case "%": return t !== 0 ? e % t : 0;
67
+ case "^":
68
+ case "**": return e ** t;
69
+ default: return 0;
70
+ }
71
+ }
72
+ function M(e) {
73
+ if (typeof e == "number") return e;
74
+ let t = parseFloat(e);
75
+ return Number.isNaN(t) ? 0 : t;
76
+ }
77
+ function k(e) {
78
+ return typeof e == "string" ? e : String(e);
79
+ }
80
+ async function j(e, t) {
81
+ if (e.type === "regex") return e.pattern;
82
+ let n = k(await t.evalExpr(e));
83
+ return n.startsWith("/") && n.endsWith("/") && (n = n.slice(1, -1)), n;
84
+ }
85
+ async function Se(e, t) {
86
+ return e ? e.type === "variable" ? e.name : e.type === "field" ? `$${Math.floor(M(await t.evalExpr(e.index)))}` : "$0" : "$0";
87
+ }
88
+ function me(e, t) {
89
+ if (e === "$0") return t.line;
90
+ if (e.startsWith("$")) {
91
+ let n = parseInt(e.slice(1), 10) - 1;
92
+ return t.fields[n] || "";
93
+ }
94
+ return k(t.vars[e] ?? "");
95
+ }
96
+ function we(e, t, n) {
97
+ if (e === "$0") n.line = t, n.fields = n.FS === " " ? t.trim().split(/\s+/).filter(Boolean) : n.fieldSep.split(t), n.NF = n.fields.length;
98
+ else if (e.startsWith("$")) {
99
+ let i = parseInt(e.slice(1), 10) - 1;
100
+ for (; n.fields.length <= i;) n.fields.push("");
101
+ n.fields[i] = t, n.NF = n.fields.length, n.line = n.fields.join(n.OFS);
102
+ } else n.vars[e] = t;
103
+ }
104
+ async function We(e, t, n) {
105
+ return e.length === 0 ? t.line.length : k(await n.evalExpr(e[0])).length;
106
+ }
107
+ async function Ve(e, t, n) {
108
+ if (e.length < 2) return "";
109
+ let i = k(await n.evalExpr(e[0])), s = Math.floor(M(await n.evalExpr(e[1]))) - 1;
110
+ if (e.length >= 3) {
111
+ let a = Math.floor(M(await n.evalExpr(e[2])));
112
+ return i.substr(Math.max(0, s), a);
113
+ }
114
+ return i.substr(Math.max(0, s));
115
+ }
116
+ async function Ke(e, t, n) {
117
+ if (e.length < 2) return 0;
118
+ let i = k(await n.evalExpr(e[0])), s = k(await n.evalExpr(e[1])), a = i.indexOf(s);
119
+ return a === -1 ? 0 : a + 1;
120
+ }
121
+ async function Xe(e, t, n) {
122
+ if (e.length < 2) return 0;
123
+ let i = k(await n.evalExpr(e[0])), s = e[1];
124
+ if (s.type !== "variable") return 0;
125
+ let a = s.name, o = t.FS;
126
+ if (e.length >= 3) {
127
+ let u = e[2];
128
+ if (u.type === "regex") o = I1(u.pattern);
129
+ else {
130
+ let N = k(await n.evalExpr(u));
131
+ o = N === " " ? I1("\\s+") : N;
132
+ }
133
+ } else t.FS === " " && (o = I1("\\s+"));
134
+ let l = typeof o == "string" ? i.split(o) : o.split(i);
135
+ t.arrays[a] = Object.create(null);
136
+ for (let u = 0; u < l.length; u++) t.arrays[a][String(u + 1)] = l[u];
137
+ return l.length;
138
+ }
139
+ async function qe(e, t, n) {
140
+ if (e.length < 2) return 0;
141
+ let i = await j(e[0], n), s = k(await n.evalExpr(e[1])), a = await Se(e[2], n), o = me(a, t);
142
+ try {
143
+ let u = I1(i).replace(o, Re(s)), N = u !== o ? 1 : 0;
144
+ return we(a, u, t), N;
145
+ } catch {
146
+ return 0;
147
+ }
148
+ }
149
+ async function ze(e, t, n) {
150
+ if (e.length < 2) return 0;
151
+ let i = await j(e[0], n), s = k(await n.evalExpr(e[1])), a = await Se(e[2], n), o = me(a, t);
152
+ try {
153
+ let l = I1(i, "g"), u = l.match(o), N = u ? u.length : 0;
154
+ return we(a, l.replace(o, Re(s)), t), N;
155
+ } catch {
156
+ return 0;
157
+ }
158
+ }
159
+ function Re(e) {
160
+ return (t) => {
161
+ let n = "", i = 0;
162
+ for (; i < e.length;) if (e[i] === "\\" && i + 1 < e.length) {
163
+ let s = e[i + 1];
164
+ s === "&" ? (n += "&", i += 2) : s === "\\" ? (n += "\\", i += 2) : (n += e[i + 1], i += 2);
165
+ } else e[i] === "&" ? (n += t, i++) : (n += e[i], i++);
166
+ return n;
167
+ };
168
+ }
169
+ async function je(e, t, n) {
170
+ if (e.length < 2) return t.RSTART = 0, t.RLENGTH = -1, 0;
171
+ let i = k(await n.evalExpr(e[0])), s = await j(e[1], n);
172
+ try {
173
+ let o = I1(s).exec(i);
174
+ if (o) return t.RSTART = o.index + 1, t.RLENGTH = o[0].length, t.RSTART;
175
+ } catch {}
176
+ return t.RSTART = 0, t.RLENGTH = -1, 0;
177
+ }
178
+ async function Qe(e, t, n) {
179
+ if (e.length < 3) return "";
180
+ let i = await j(e[0], n), s = k(await n.evalExpr(e[1])), a = k(await n.evalExpr(e[2])), o = e.length >= 4 ? k(await n.evalExpr(e[3])) : t.line;
181
+ try {
182
+ let l = a.toLowerCase() === "g", u = l ? 0 : parseInt(a, 10) || 1;
183
+ if (l) return I1(i, "g").replace(o, (A, ...C) => ye(s, A, C.slice(0, -2)));
184
+ {
185
+ let N = 0;
186
+ return I1(i, "g").replace(o, (C, ...O) => (N++, N === u ? ye(s, C, O.slice(0, -2)) : C));
187
+ }
188
+ } catch {
189
+ return o;
190
+ }
191
+ }
192
+ function ye(e, t, n) {
193
+ let i = "", s = 0;
194
+ for (; s < e.length;) if (e[s] === "\\" && s + 1 < e.length) {
195
+ let a = e[s + 1];
196
+ if (a === "&") i += "&", s += 2;
197
+ else if (a === "0") i += t, s += 2;
198
+ else if (a >= "1" && a <= "9") {
199
+ let o = parseInt(a, 10) - 1;
200
+ i += n[o] || "", s += 2;
201
+ } else a === "n" ? (i += `
202
+ `, s += 2) : a === "t" ? (i += " ", s += 2) : (i += a, s += 2);
203
+ } else e[s] === "&" ? (i += t, s++) : (i += e[s], s++);
204
+ return i;
205
+ }
206
+ async function Je(e, t, n) {
207
+ return e.length === 0 ? "" : k(await n.evalExpr(e[0])).toLowerCase();
208
+ }
209
+ async function Ze(e, t, n) {
210
+ return e.length === 0 ? "" : k(await n.evalExpr(e[0])).toUpperCase();
211
+ }
212
+ async function Ye(e, t, n) {
213
+ if (e.length === 0) return "";
214
+ let i = k(await n.evalExpr(e[0])), s = [];
215
+ for (let a = 1; a < e.length; a++) s.push(await n.evalExpr(e[a]));
216
+ return Q(i, s);
217
+ }
218
+ async function et(e, t, n) {
219
+ return e.length === 0 ? 0 : Math.floor(M(await n.evalExpr(e[0])));
220
+ }
221
+ async function tt(e, t, n) {
222
+ return e.length === 0 ? 0 : Math.sqrt(M(await n.evalExpr(e[0])));
223
+ }
224
+ async function nt(e, t, n) {
225
+ return e.length === 0 ? 0 : Math.sin(M(await n.evalExpr(e[0])));
226
+ }
227
+ async function rt(e, t, n) {
228
+ return e.length === 0 ? 0 : Math.cos(M(await n.evalExpr(e[0])));
229
+ }
230
+ async function it(e, t, n) {
231
+ let i = e.length > 0 ? M(await n.evalExpr(e[0])) : 0, s = e.length > 1 ? M(await n.evalExpr(e[1])) : 0;
232
+ return Math.atan2(i, s);
233
+ }
234
+ async function st(e, t, n) {
235
+ return e.length === 0 ? 0 : Math.log(M(await n.evalExpr(e[0])));
236
+ }
237
+ async function at(e, t, n) {
238
+ return e.length === 0 ? 1 : Math.exp(M(await n.evalExpr(e[0])));
239
+ }
240
+ function ot(e, t, n) {
241
+ return t.random ? t.random() : Math.random();
242
+ }
243
+ async function lt(e, t, n) {
244
+ let i = e.length > 0 ? M(await n.evalExpr(e[0])) : Date.now();
245
+ return t.vars._srand_seed = i, i;
246
+ }
247
+ function ut(e, t) {
248
+ return () => {
249
+ throw new Error(`${e}() is not supported - ${t}`);
250
+ };
251
+ }
252
+ function ae(e) {
253
+ return () => {
254
+ throw new Error(`function '${e}()' is not implemented`);
255
+ };
256
+ }
257
+ var U = 1e4;
258
+ function Q(e, t) {
259
+ let n = 0, i = "", s = 0;
260
+ for (; s < e.length;) if (e[s] === "%" && s + 1 < e.length) {
261
+ let a = s + 1, o = "", l = "", u = "", N, A = a;
262
+ for (; a < e.length && /\d/.test(e[a]);) a++;
263
+ a > A && e[a] === "$" ? (N = parseInt(e.substring(A, a), 10) - 1, a++) : a = A;
264
+ let C = () => {
265
+ if (a < e.length) {
266
+ if (a + 1 < e.length && (e[a] === "h" && e[a + 1] === "h" || e[a] === "l" && e[a + 1] === "l")) {
267
+ a += 2;
268
+ return;
269
+ }
270
+ /[lzjh]/.test(e[a]) && a++;
271
+ }
272
+ };
273
+ for (; a < e.length && /[-+ #0]/.test(e[a]);) o += e[a++];
274
+ if (e[a] === "*") {
275
+ let d = t[n++], R = d !== void 0 ? Math.floor(Number(d)) : 0;
276
+ R < 0 ? (o += "-", l = String(Math.min(-R, U))) : l = String(Math.min(R, U)), a++;
277
+ } else for (; a < e.length && /\d/.test(e[a]);) l += e[a++];
278
+ if (l && parseInt(l, 10) > U && (l = String(U)), e[a] === ".") {
279
+ if (a++, e[a] === "*") {
280
+ let d = t[n++];
281
+ u = String(Math.min(d !== void 0 ? Math.floor(Number(d)) : 0, U)), a++;
282
+ } else for (; a < e.length && /\d/.test(e[a]);) u += e[a++];
283
+ u && parseInt(u, 10) > U && (u = String(U));
284
+ }
285
+ C();
286
+ let O = e[a], w = t[N !== void 0 ? N : n];
287
+ switch (O) {
288
+ case "s": {
289
+ let d = w !== void 0 ? String(w) : "";
290
+ if (u && (d = d.substring(0, parseInt(u, 10))), l) {
291
+ let R = parseInt(l, 10);
292
+ o.includes("-") ? d = d.padEnd(R) : d = d.padStart(R);
293
+ }
294
+ i += d, N === void 0 && n++;
295
+ break;
296
+ }
297
+ case "d":
298
+ case "i": {
299
+ let d = w !== void 0 ? Math.floor(Number(w)) : 0;
300
+ Number.isNaN(d) && (d = 0);
301
+ let R = d < 0, h = Math.abs(d).toString();
302
+ if (u) {
303
+ let F = parseInt(u, 10);
304
+ h = h.padStart(F, "0");
305
+ }
306
+ let c = "";
307
+ R ? c = "-" : o.includes("+") ? c = "+" : o.includes(" ") && (c = " ");
308
+ let E = c + h;
309
+ if (l) {
310
+ let F = parseInt(l, 10);
311
+ o.includes("-") ? E = E.padEnd(F) : o.includes("0") && !u ? E = c + h.padStart(F - c.length, "0") : E = E.padStart(F);
312
+ }
313
+ i += E, N === void 0 && n++;
314
+ break;
315
+ }
316
+ case "f": {
317
+ let d = w !== void 0 ? Number(w) : 0;
318
+ Number.isNaN(d) && (d = 0);
319
+ let R = u ? parseInt(u, 10) : 6, h = d.toFixed(R);
320
+ if (l) {
321
+ let c = parseInt(l, 10);
322
+ o.includes("-") ? h = h.padEnd(c) : h = h.padStart(c);
323
+ }
324
+ i += h, N === void 0 && n++;
325
+ break;
326
+ }
327
+ case "e":
328
+ case "E": {
329
+ let d = w !== void 0 ? Number(w) : 0;
330
+ Number.isNaN(d) && (d = 0);
331
+ let R = u ? parseInt(u, 10) : 6, h = d.toExponential(R);
332
+ if (O === "E" && (h = h.toUpperCase()), l) {
333
+ let c = parseInt(l, 10);
334
+ o.includes("-") ? h = h.padEnd(c) : h = h.padStart(c);
335
+ }
336
+ i += h, N === void 0 && n++;
337
+ break;
338
+ }
339
+ case "g":
340
+ case "G": {
341
+ let d = w !== void 0 ? Number(w) : 0;
342
+ Number.isNaN(d) && (d = 0);
343
+ let R = u ? parseInt(u, 10) : 6, h = d !== 0 ? Math.floor(Math.log10(Math.abs(d))) : 0, c;
344
+ if (d === 0 ? c = "0" : h < -4 || h >= R ? (c = d.toExponential(R - 1), O === "G" && (c = c.toUpperCase())) : c = d.toPrecision(R), c.includes(".") && (c = c.replace(/\.?0+$/, "").replace(/\.?0+e/, "e")), c.includes("e") && (c = c.replace(/\.?0+e/, "e")), l) {
345
+ let E = parseInt(l, 10);
346
+ o.includes("-") ? c = c.padEnd(E) : c = c.padStart(E);
347
+ }
348
+ i += c, N === void 0 && n++;
349
+ break;
350
+ }
351
+ case "x":
352
+ case "X": {
353
+ let d = w !== void 0 ? Math.floor(Number(w)) : 0;
354
+ Number.isNaN(d) && (d = 0);
355
+ let R = Math.abs(d).toString(16);
356
+ if (O === "X" && (R = R.toUpperCase()), u) {
357
+ let E = parseInt(u, 10);
358
+ R = R.padStart(E, "0");
359
+ }
360
+ let h = d < 0 ? "-" : "", c = h + R;
361
+ if (l) {
362
+ let E = parseInt(l, 10);
363
+ o.includes("-") ? c = c.padEnd(E) : o.includes("0") && !u ? c = h + R.padStart(E - h.length, "0") : c = c.padStart(E);
364
+ }
365
+ i += c, N === void 0 && n++;
366
+ break;
367
+ }
368
+ case "o": {
369
+ let d = w !== void 0 ? Math.floor(Number(w)) : 0;
370
+ Number.isNaN(d) && (d = 0);
371
+ let R = Math.abs(d).toString(8);
372
+ if (u) {
373
+ let E = parseInt(u, 10);
374
+ R = R.padStart(E, "0");
375
+ }
376
+ let h = d < 0 ? "-" : "", c = h + R;
377
+ if (l) {
378
+ let E = parseInt(l, 10);
379
+ o.includes("-") ? c = c.padEnd(E) : o.includes("0") && !u ? c = h + R.padStart(E - h.length, "0") : c = c.padStart(E);
380
+ }
381
+ i += c, N === void 0 && n++;
382
+ break;
383
+ }
384
+ case "c":
385
+ typeof w == "number" ? i += String.fromCharCode(w) : i += String(w ?? "").charAt(0) || "", N === void 0 && n++;
386
+ break;
387
+ case "%":
388
+ i += "%";
389
+ break;
390
+ default: i += e.substring(s, a + 1);
391
+ }
392
+ s = a + 1;
393
+ } else if (e[s] === "\\" && s + 1 < e.length) {
394
+ let a = e[s + 1];
395
+ switch (a) {
396
+ case "n":
397
+ i += `
398
+ `;
399
+ break;
400
+ case "t":
401
+ i += " ";
402
+ break;
403
+ case "r":
404
+ i += "\r";
405
+ break;
406
+ case "\\":
407
+ i += "\\";
408
+ break;
409
+ default: i += a;
410
+ }
411
+ s += 2;
412
+ } else i += e[s++];
413
+ return i;
414
+ }
415
+ var ge = new Map([
416
+ ["length", We],
417
+ ["substr", Ve],
418
+ ["index", Ke],
419
+ ["split", Xe],
420
+ ["sub", qe],
421
+ ["gsub", ze],
422
+ ["match", je],
423
+ ["gensub", Qe],
424
+ ["tolower", Je],
425
+ ["toupper", Ze],
426
+ ["sprintf", Ye],
427
+ ["int", et],
428
+ ["sqrt", tt],
429
+ ["sin", nt],
430
+ ["cos", rt],
431
+ ["atan2", it],
432
+ ["log", st],
433
+ ["exp", at],
434
+ ["rand", ot],
435
+ ["srand", lt],
436
+ ["system", ut("system", "shell execution not allowed in sandboxed environment")],
437
+ ["close", () => 0],
438
+ ["fflush", () => 0],
439
+ ["systime", ae("systime")],
440
+ ["mktime", ae("mktime")],
441
+ ["strftime", ae("strftime")]
442
+ ]);
443
+ function b(e) {
444
+ return typeof e == "number" ? e !== 0 : !(e === "" || e === "0");
445
+ }
446
+ function g(e) {
447
+ if (typeof e == "number") return e;
448
+ let t = parseFloat(e);
449
+ return Number.isNaN(t) ? 0 : t;
450
+ }
451
+ function m(e) {
452
+ return typeof e == "string" ? e : String(e);
453
+ }
454
+ function oe(e) {
455
+ if (typeof e == "number") return !0;
456
+ let t = String(e).trim();
457
+ return t === "" ? !1 : !Number.isNaN(Number(t));
458
+ }
459
+ function K(e, t) {
460
+ try {
461
+ return I1(e).test(t);
462
+ } catch {
463
+ return !1;
464
+ }
465
+ }
466
+ function Ae(e, t) {
467
+ return t === "" ? [] : e.FS === " " ? t.trim().split(/\s+/).filter(Boolean) : e.fieldSep.split(t);
468
+ }
469
+ function J(e, t) {
470
+ return t === 0 ? e.line : t < 0 || t > e.fields.length ? "" : e.fields[t - 1] ?? "";
471
+ }
472
+ function le(e, t, n) {
473
+ if (t === 0) e.line = m(n), e.fields = Ae(e, e.line), e.NF = e.fields.length;
474
+ else if (t > 0) {
475
+ for (; e.fields.length < t;) e.fields.push("");
476
+ e.fields[t - 1] = m(n), e.NF = e.fields.length, e.line = e.fields.join(e.OFS);
477
+ }
478
+ }
479
+ function $(e, t) {
480
+ e.line = t, e.fields = Ae(e, t), e.NF = e.fields.length;
481
+ }
482
+ function ve(e, t) {
483
+ if (e.FS = t, t === " ") e.fieldSep = new r1(/\s+/);
484
+ else try {
485
+ e.fieldSep = I1(t);
486
+ } catch {
487
+ e.fieldSep = I1(t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
488
+ }
489
+ }
490
+ function Z(e, t) {
491
+ switch (t) {
492
+ case "FS": return e.FS;
493
+ case "OFS": return e.OFS;
494
+ case "ORS": return e.ORS;
495
+ case "OFMT": return e.OFMT;
496
+ case "NR": return e.NR;
497
+ case "NF": return e.NF;
498
+ case "FNR": return e.FNR;
499
+ case "FILENAME": return e.FILENAME;
500
+ case "RSTART": return e.RSTART;
501
+ case "RLENGTH": return e.RLENGTH;
502
+ case "SUBSEP": return e.SUBSEP;
503
+ case "ARGC": return e.ARGC;
504
+ }
505
+ return e.vars[t] ?? "";
506
+ }
507
+ function W(e, t, n) {
508
+ switch (t) {
509
+ case "FS":
510
+ ve(e, m(n));
511
+ return;
512
+ case "OFS":
513
+ e.OFS = m(n);
514
+ return;
515
+ case "ORS":
516
+ e.ORS = m(n);
517
+ return;
518
+ case "OFMT":
519
+ e.OFMT = m(n);
520
+ return;
521
+ case "NR":
522
+ e.NR = Math.floor(g(n));
523
+ return;
524
+ case "NF": {
525
+ let i = Math.floor(g(n));
526
+ if (i < e.NF) e.fields = e.fields.slice(0, i), e.line = e.fields.join(e.OFS);
527
+ else if (i > e.NF) {
528
+ for (; e.fields.length < i;) e.fields.push("");
529
+ e.line = e.fields.join(e.OFS);
530
+ }
531
+ e.NF = i;
532
+ return;
533
+ }
534
+ case "FNR":
535
+ e.FNR = Math.floor(g(n));
536
+ return;
537
+ case "FILENAME":
538
+ e.FILENAME = m(n);
539
+ return;
540
+ case "RSTART":
541
+ e.RSTART = Math.floor(g(n));
542
+ return;
543
+ case "RLENGTH":
544
+ e.RLENGTH = Math.floor(g(n));
545
+ return;
546
+ case "SUBSEP":
547
+ e.SUBSEP = m(n);
548
+ return;
549
+ }
550
+ e.vars[t] = n;
551
+ }
552
+ function X(e, t) {
553
+ let n = t, i = /* @__PURE__ */ new Set(), s = e.arrayAliases.get(n);
554
+ for (; s !== void 0 && !i.has(n);) i.add(n), n = s, s = e.arrayAliases.get(n);
555
+ return n;
556
+ }
557
+ function Y(e, t, n) {
558
+ if (t === "ARGV") return e.ARGV[n] ?? "";
559
+ if (t === "ENVIRON") return e.ENVIRON[n] ?? "";
560
+ let i = X(e, t);
561
+ return e.arrays[i]?.[n] ?? "";
562
+ }
563
+ function ue(e, t, n, i) {
564
+ let s = X(e, t);
565
+ e.arrays[s] || (e.arrays[s] = Object.create(null)), e.arrays[s][n] = i;
566
+ }
567
+ function Ie(e, t, n) {
568
+ if (t === "ARGV") return e.ARGV[n] !== void 0;
569
+ if (t === "ENVIRON") return e.ENVIRON[n] !== void 0;
570
+ let i = X(e, t);
571
+ return e.arrays[i]?.[n] !== void 0;
572
+ }
573
+ function ke(e, t, n) {
574
+ let i = X(e, t);
575
+ e.arrays[i] && delete e.arrays[i][n];
576
+ }
577
+ function Ce(e, t) {
578
+ let n = X(e, t);
579
+ delete e.arrays[n];
580
+ }
581
+ var be = null;
582
+ function Oe(e) {
583
+ be = e;
584
+ }
585
+ function L(e, t) {
586
+ a(e.requireDefenseContext, "awk", t);
587
+ }
588
+ function S(e, t, n) {
589
+ return x(e.requireDefenseContext, "awk", t, n);
590
+ }
591
+ async function f(e, t) {
592
+ switch (L(e, "expression evaluation"), e.coverage?.hit(`awk:expr:${t.type}`), t.type) {
593
+ case "number": return t.value;
594
+ case "string": return t.value;
595
+ case "regex": return K(t.pattern, e.line) ? 1 : 0;
596
+ case "field": return ct(e, t);
597
+ case "variable": return Z(e, t.name);
598
+ case "array_access": return ht(e, t);
599
+ case "binary": return pt(e, t);
600
+ case "unary": return Et(e, t);
601
+ case "ternary": return b(await S(e, "ternary condition evaluation", () => f(e, t.condition))) ? await S(e, "ternary consequent evaluation", () => f(e, t.consequent)) : await S(e, "ternary alternate evaluation", () => f(e, t.alternate));
602
+ case "call": return Nt(e, t.name, t.args);
603
+ case "assignment": return St(e, t);
604
+ case "pre_increment": return mt(e, t.operand);
605
+ case "pre_decrement": return wt(e, t.operand);
606
+ case "post_increment": return Rt(e, t.operand);
607
+ case "post_decrement": return gt(e, t.operand);
608
+ case "in": return At(e, t.key, t.array);
609
+ case "getline": return vt(e, t.variable, t.file, t.command);
610
+ case "tuple": return Ct(e, t.elements);
611
+ default: return "";
612
+ }
613
+ }
614
+ async function ct(e, t) {
615
+ L(e, "field reference evaluation");
616
+ return J(e, Math.floor(g(await S(e, "field index evaluation", () => f(e, t.index)))));
617
+ }
618
+ async function ht(e, t) {
619
+ L(e, "array access evaluation");
620
+ let n = m(await S(e, "array key evaluation", () => f(e, t.key)));
621
+ return Y(e, t.array, n);
622
+ }
623
+ async function pt(e, t) {
624
+ L(e, "binary expression evaluation");
625
+ let n = t.operator;
626
+ if (n === "||") return b(await S(e, "logical-or left evaluation", () => f(e, t.left))) || b(await S(e, "logical-or right evaluation", () => f(e, t.right))) ? 1 : 0;
627
+ if (n === "&&") return b(await S(e, "logical-and left evaluation", () => f(e, t.left))) && b(await S(e, "logical-and right evaluation", () => f(e, t.right))) ? 1 : 0;
628
+ if (n === "~") {
629
+ let l = await S(e, "regex left evaluation", () => f(e, t.left));
630
+ t.right.type === "regex" && e.coverage?.hit("awk:expr:regex");
631
+ let u = t.right.type === "regex" ? t.right.pattern : m(await S(e, "regex right evaluation", () => f(e, t.right)));
632
+ try {
633
+ return I1(u).test(m(l)) ? 1 : 0;
634
+ } catch {
635
+ return 0;
636
+ }
637
+ }
638
+ if (n === "!~") {
639
+ let l = await S(e, "negated-regex left evaluation", () => f(e, t.left));
640
+ t.right.type === "regex" && e.coverage?.hit("awk:expr:regex");
641
+ let u = t.right.type === "regex" ? t.right.pattern : m(await S(e, "negated-regex right evaluation", () => f(e, t.right)));
642
+ try {
643
+ return I1(u).test(m(l)) ? 0 : 1;
644
+ } catch {
645
+ return 1;
646
+ }
647
+ }
648
+ let i = await S(e, "binary left evaluation", () => f(e, t.left)), s = await S(e, "binary right evaluation", () => f(e, t.right));
649
+ if (n === " ") {
650
+ let l = m(i) + m(s);
651
+ if (e.maxOutputSize > 0 && l.length > e.maxOutputSize) throw new b$1(`awk: string concatenation size limit exceeded (${e.maxOutputSize} bytes)`, "string_length", e.output);
652
+ return l;
653
+ }
654
+ if (ft(n)) return dt(i, s, n);
655
+ return Ne(g(i), g(s), n);
656
+ }
657
+ function ft(e) {
658
+ return [
659
+ "<",
660
+ "<=",
661
+ ">",
662
+ ">=",
663
+ "==",
664
+ "!="
665
+ ].includes(e);
666
+ }
667
+ function dt(e, t, n) {
668
+ let i = oe(e), s = oe(t);
669
+ if (i && s) {
670
+ let l = g(e), u = g(t);
671
+ switch (n) {
672
+ case "<": return l < u ? 1 : 0;
673
+ case "<=": return l <= u ? 1 : 0;
674
+ case ">": return l > u ? 1 : 0;
675
+ case ">=": return l >= u ? 1 : 0;
676
+ case "==": return l === u ? 1 : 0;
677
+ case "!=": return l !== u ? 1 : 0;
678
+ }
679
+ }
680
+ let a = m(e), o = m(t);
681
+ switch (n) {
682
+ case "<": return a < o ? 1 : 0;
683
+ case "<=": return a <= o ? 1 : 0;
684
+ case ">": return a > o ? 1 : 0;
685
+ case ">=": return a >= o ? 1 : 0;
686
+ case "==": return a === o ? 1 : 0;
687
+ case "!=": return a !== o ? 1 : 0;
688
+ }
689
+ return 0;
690
+ }
691
+ async function Et(e, t) {
692
+ L(e, "unary expression evaluation");
693
+ let n = await S(e, "unary operand evaluation", () => f(e, t.operand));
694
+ switch (t.operator) {
695
+ case "!": return b(n) ? 0 : 1;
696
+ case "-": return -g(n);
697
+ case "+": return +g(n);
698
+ default: return n;
699
+ }
700
+ }
701
+ async function Nt(e, t, n) {
702
+ L(e, "function call evaluation");
703
+ let i = ge.get(t);
704
+ if (i) return i(n, e, { evalExpr: (a) => f(e, a) });
705
+ let s = e.functions.get(t);
706
+ return s ? yt(e, s, n) : "";
707
+ }
708
+ async function yt(e, t, n) {
709
+ if (L(e, "user function call"), e.currentRecursionDepth++, e.currentRecursionDepth > e.maxRecursionDepth) throw e.currentRecursionDepth--, new b$1(`awk: recursion depth exceeded maximum (${e.maxRecursionDepth})`, "recursion", e.output);
710
+ let i = Object.create(null);
711
+ for (let l of t.params) i[l] = e.vars[l];
712
+ let s = [];
713
+ for (let l = 0; l < t.params.length; l++) {
714
+ let u = t.params[l];
715
+ if (l < n.length) {
716
+ let N = n[l];
717
+ N.type === "variable" && (e.arrayAliases.set(u, N.name), s.push(u));
718
+ let A = await S(e, "user function argument evaluation", () => f(e, N));
719
+ e.vars[u] = A;
720
+ } else e.vars[u] = "";
721
+ }
722
+ e.hasReturn = !1, e.returnValue = void 0;
723
+ let a = be;
724
+ a && await S(e, "user function body execution", () => a(e, t.body.statements));
725
+ let o = e.returnValue ?? "";
726
+ for (let l of t.params) i[l] !== void 0 ? e.vars[l] = i[l] : delete e.vars[l];
727
+ for (let l of s) e.arrayAliases.delete(l);
728
+ return e.hasReturn = !1, e.returnValue = void 0, e.currentRecursionDepth--, o;
729
+ }
730
+ async function St(e, t) {
731
+ L(e, "assignment evaluation");
732
+ let n = await S(e, "assignment value evaluation", () => f(e, t.value)), i = t.target, s = t.operator, a;
733
+ if (s === "=") a = n;
734
+ else {
735
+ let o;
736
+ if (i.type === "field") o = J(e, Math.floor(g(await S(e, "assignment field index", () => f(e, i.index)))));
737
+ else if (i.type === "variable") o = Z(e, i.name);
738
+ else {
739
+ let N = m(await S(e, "assignment array key", () => f(e, i.key)));
740
+ o = Y(e, i.array, N);
741
+ }
742
+ let l = g(o), u = g(n);
743
+ switch (s) {
744
+ case "+=":
745
+ a = l + u;
746
+ break;
747
+ case "-=":
748
+ a = l - u;
749
+ break;
750
+ case "*=":
751
+ a = l * u;
752
+ break;
753
+ case "/=":
754
+ a = u !== 0 ? l / u : 0;
755
+ break;
756
+ case "%=":
757
+ a = u !== 0 ? l % u : 0;
758
+ break;
759
+ case "^=":
760
+ a = l ** u;
761
+ break;
762
+ default: a = n;
763
+ }
764
+ }
765
+ if (i.type === "field") le(e, Math.floor(g(await S(e, "assignment target field index", () => f(e, i.index)))), a);
766
+ else if (i.type === "variable") W(e, i.name, a);
767
+ else {
768
+ let o = m(await S(e, "assignment target array key", () => f(e, i.key)));
769
+ ue(e, i.array, o, a);
770
+ }
771
+ return a;
772
+ }
773
+ async function ee(e, t, n, i) {
774
+ L(e, "inc/dec evaluation");
775
+ let s;
776
+ if (t.type === "field") {
777
+ let a = Math.floor(g(await S(e, "inc/dec field index", () => f(e, t.index))));
778
+ s = g(J(e, a)), le(e, a, s + n);
779
+ } else if (t.type === "variable") s = g(Z(e, t.name)), W(e, t.name, s + n);
780
+ else {
781
+ let a = m(await S(e, "inc/dec array key", () => f(e, t.key)));
782
+ s = g(Y(e, t.array, a)), ue(e, t.array, a, s + n);
783
+ }
784
+ return i ? s + n : s;
785
+ }
786
+ async function mt(e, t) {
787
+ return ee(e, t, 1, !0);
788
+ }
789
+ async function wt(e, t) {
790
+ return ee(e, t, -1, !0);
791
+ }
792
+ async function Rt(e, t) {
793
+ return ee(e, t, 1, !1);
794
+ }
795
+ async function gt(e, t) {
796
+ return ee(e, t, -1, !1);
797
+ }
798
+ async function At(e, t, n) {
799
+ L(e, "in-expression evaluation");
800
+ let i;
801
+ if (t.type === "tuple") {
802
+ e.coverage?.hit("awk:expr:tuple");
803
+ let s = [];
804
+ for (let a of t.elements) s.push(m(await S(e, "tuple key element evaluation", () => f(e, a))));
805
+ i = s.join(e.SUBSEP);
806
+ } else i = m(await S(e, "in-expression key evaluation", () => f(e, t)));
807
+ return Ie(e, n, i) ? 1 : 0;
808
+ }
809
+ async function vt(e, t, n, i) {
810
+ if (L(e, "getline evaluation"), i) return It(e, t, i);
811
+ if (n) return kt(e, t, n);
812
+ if (!e.lines || e.lineIndex === void 0) return -1;
813
+ let s = e.lineIndex + 1;
814
+ if (s >= e.lines.length) return 0;
815
+ let a = e.lines[s];
816
+ return t ? W(e, t, a) : $(e, a), e.NR++, e.lineIndex = s, 1;
817
+ }
818
+ async function It(e, t, n) {
819
+ let i = e.exec;
820
+ if (!i) return -1;
821
+ L(e, "getline command source");
822
+ let s = m(await S(e, "getline command expression", () => f(e, n))), a = `__cmd_${s}`, o = `__cmdi_${s}`, l, u;
823
+ if (e.vars[a] === void 0) try {
824
+ l = x$1((await S(e, "getline command exec", () => i(s))).stdout).split(`
825
+ `), l.length > 0 && l[l.length - 1] === "" && l.pop(), e.vars[a] = JSON.stringify(l), e.vars[o] = -1, u = -1;
826
+ } catch (C) {
827
+ if (C instanceof d) throw C;
828
+ return -1;
829
+ }
830
+ else l = JSON.parse(e.vars[a]), u = e.vars[o];
831
+ let N = u + 1;
832
+ if (N >= l.length) return 0;
833
+ let A = l[N];
834
+ return e.vars[o] = N, t ? W(e, t, A) : $(e, A), 1;
835
+ }
836
+ async function kt(e, t, n) {
837
+ let i = e.fs;
838
+ if (!i || !e.cwd) return -1;
839
+ L(e, "getline file source");
840
+ let s = m(await S(e, "getline filename evaluation", () => f(e, n)));
841
+ if (s === "/dev/null") return 0;
842
+ let a = i.resolvePath(e.cwd, s), o = `__fc_${a}`, l = `__fi_${a}`, u, N;
843
+ if (e.vars[o] === void 0) try {
844
+ u = (await S(e, "getline file read", () => i.readFile(a))).split(`
845
+ `), u.length > 0 && u[u.length - 1] === "" && u.pop(), e.vars[o] = JSON.stringify(u), e.vars[l] = -1, N = -1;
846
+ } catch (O) {
847
+ if (O instanceof d) throw O;
848
+ return -1;
849
+ }
850
+ else u = JSON.parse(e.vars[o]), N = e.vars[l];
851
+ let A = N + 1;
852
+ if (A >= u.length) return 0;
853
+ let C = u[A];
854
+ return e.vars[l] = A, t ? W(e, t, C) : $(e, C), 1;
855
+ }
856
+ async function Ct(e, t) {
857
+ if (L(e, "tuple evaluation"), t.length === 0) return "";
858
+ for (let n = 0; n < t.length - 1; n++) await S(e, "tuple intermediate element", () => f(e, t[n]));
859
+ return S(e, "tuple final element", () => f(e, t[t.length - 1]));
860
+ }
861
+ Oe(V);
862
+ function ce(e) {
863
+ if (e.maxOutputSize > 0 && e.output.length > e.maxOutputSize) throw new b$1(`awk: output size limit exceeded (${e.maxOutputSize} bytes)`, "string_length", e.output);
864
+ }
865
+ function T(e, t) {
866
+ a(e.requireDefenseContext, "awk", t);
867
+ }
868
+ function y(e, t, n) {
869
+ return x(e.requireDefenseContext, "awk", t, n);
870
+ }
871
+ async function V(e, t) {
872
+ T(e, "block execution");
873
+ for (let n of t) if (await y(e, "statement execution", () => B(e, n)), bt(e)) break;
874
+ }
875
+ function bt(e) {
876
+ return e.shouldExit || e.shouldNext || e.shouldNextFile || e.loopBreak || e.loopContinue || e.hasReturn;
877
+ }
878
+ async function B(e, t) {
879
+ switch (T(e, "single statement execution"), e.coverage?.hit(`awk:stmt:${t.type}`), t.type) {
880
+ case "block":
881
+ await y(e, "nested block statement", () => V(e, t.statements));
882
+ break;
883
+ case "expr_stmt":
884
+ await y(e, "expression statement", () => f(e, t.expression));
885
+ break;
886
+ case "print":
887
+ await y(e, "print statement", () => Ot(e, t.args, t.output));
888
+ break;
889
+ case "printf":
890
+ await y(e, "printf statement", () => Lt(e, t.format, t.args, t.output));
891
+ break;
892
+ case "if":
893
+ await y(e, "if statement", () => Mt(e, t));
894
+ break;
895
+ case "while":
896
+ await y(e, "while statement", () => Pt(e, t));
897
+ break;
898
+ case "do_while":
899
+ await y(e, "do-while statement", () => Tt(e, t));
900
+ break;
901
+ case "for":
902
+ await y(e, "for statement", () => Ft(e, t));
903
+ break;
904
+ case "for_in":
905
+ await y(e, "for-in statement", () => Dt(e, t));
906
+ break;
907
+ case "break":
908
+ e.loopBreak = !0;
909
+ break;
910
+ case "continue":
911
+ e.loopContinue = !0;
912
+ break;
913
+ case "next":
914
+ e.shouldNext = !0;
915
+ break;
916
+ case "nextfile":
917
+ e.shouldNextFile = !0;
918
+ break;
919
+ case "exit":
920
+ e.shouldExit = !0;
921
+ {
922
+ let n = t.code;
923
+ e.exitCode = n ? Math.floor(g(await y(e, "exit code expression", () => f(e, n)))) : 0;
924
+ }
925
+ break;
926
+ case "return":
927
+ e.hasReturn = !0;
928
+ {
929
+ let n = t.value;
930
+ e.returnValue = n ? await y(e, "return expression", () => f(e, n)) : "";
931
+ }
932
+ break;
933
+ case "delete":
934
+ await y(e, "delete statement", () => _t(e, t.target));
935
+ break;
936
+ }
937
+ }
938
+ async function Ot(e, t, n) {
939
+ T(e, "print execution");
940
+ let i = [];
941
+ for (let a of t) {
942
+ let o = await y(e, "print argument evaluation", () => f(e, a));
943
+ typeof o == "number" ? Number.isInteger(o) && Math.abs(o) < Number.MAX_SAFE_INTEGER ? i.push(String(o)) : i.push(Q(e.OFMT, [o])) : i.push(m(o));
944
+ }
945
+ let s = i.join(e.OFS) + e.ORS;
946
+ n ? await y(e, "print redirection write", () => Le(e, n.redirect, n.file, s)) : (e.output += s, ce(e));
947
+ }
948
+ async function Lt(e, t, n, i) {
949
+ T(e, "printf execution");
950
+ let s = m(await y(e, "printf format evaluation", () => f(e, t))), a = [];
951
+ for (let l of n) a.push(await y(e, "printf argument evaluation", () => f(e, l)));
952
+ let o = Q(s, a);
953
+ i ? await y(e, "printf redirection write", () => Le(e, i.redirect, i.file, o)) : (e.output += o, ce(e));
954
+ }
955
+ async function Le(e, t, n, i) {
956
+ T(e, "file write execution");
957
+ let s = e.fs;
958
+ if (!s || !e.cwd) {
959
+ e.output += i, ce(e);
960
+ return;
961
+ }
962
+ let a = m(await y(e, "redirection filename evaluation", () => f(e, n))), o = s.resolvePath(e.cwd, a);
963
+ t === ">" ? e.openedFiles.has(o) ? await y(e, "redirection append write", () => s.appendFile(o, i)) : (await y(e, "redirection overwrite write", () => s.writeFile(o, i)), e.openedFiles.add(o)) : (e.openedFiles.has(o) || e.openedFiles.add(o), await y(e, "redirection append mode write", () => s.appendFile(o, i)));
964
+ }
965
+ async function Mt(e, t) {
966
+ if (T(e, "if execution"), b(await y(e, "if condition evaluation", () => f(e, t.condition)))) await y(e, "if consequent execution", () => B(e, t.consequent));
967
+ else if (t.alternate) {
968
+ let n = t.alternate;
969
+ await y(e, "if alternate execution", () => B(e, n));
970
+ }
971
+ }
972
+ async function Pt(e, t) {
973
+ T(e, "while execution");
974
+ let n = 0;
975
+ for (; b(await y(e, "while condition evaluation", () => f(e, t.condition)));) {
976
+ if (n++, n > e.maxIterations) throw new b$1(`awk: while loop exceeded maximum iterations (${e.maxIterations})`, "iterations", e.output);
977
+ if (e.loopContinue = !1, await y(e, "while body execution", () => B(e, t.body)), e.loopBreak) {
978
+ e.loopBreak = !1;
979
+ break;
980
+ }
981
+ if (e.shouldExit || e.shouldNext || e.hasReturn) break;
982
+ }
983
+ }
984
+ async function Tt(e, t) {
985
+ T(e, "do-while execution");
986
+ let n = 0;
987
+ do {
988
+ if (n++, n > e.maxIterations) throw new b$1(`awk: do-while loop exceeded maximum iterations (${e.maxIterations})`, "iterations", e.output);
989
+ if (e.loopContinue = !1, await y(e, "do-while body execution", () => B(e, t.body)), e.loopBreak) {
990
+ e.loopBreak = !1;
991
+ break;
992
+ }
993
+ if (e.shouldExit || e.shouldNext || e.hasReturn) break;
994
+ } while (b(await y(e, "do-while condition evaluation", () => f(e, t.condition))));
995
+ }
996
+ async function Ft(e, t) {
997
+ T(e, "for execution");
998
+ let n = t.init, i = t.condition, s = t.update;
999
+ n && await y(e, "for init evaluation", () => f(e, n));
1000
+ let a = 0;
1001
+ for (; !i || b(await y(e, "for condition evaluation", () => f(e, i)));) {
1002
+ if (a++, a > e.maxIterations) throw new b$1(`awk: for loop exceeded maximum iterations (${e.maxIterations})`, "iterations", e.output);
1003
+ if (e.loopContinue = !1, await y(e, "for body execution", () => B(e, t.body)), e.loopBreak) {
1004
+ e.loopBreak = !1;
1005
+ break;
1006
+ }
1007
+ if (e.shouldExit || e.shouldNext || e.hasReturn) break;
1008
+ s && await y(e, "for update evaluation", () => f(e, s));
1009
+ }
1010
+ }
1011
+ async function Dt(e, t) {
1012
+ T(e, "for-in execution");
1013
+ let n = e.arrays[t.array];
1014
+ if (n) for (let i of Object.keys(n)) {
1015
+ if (e.vars[t.variable] = i, e.loopContinue = !1, await y(e, "for-in body execution", () => B(e, t.body)), e.loopBreak) {
1016
+ e.loopBreak = !1;
1017
+ break;
1018
+ }
1019
+ if (e.shouldExit || e.shouldNext || e.hasReturn) break;
1020
+ }
1021
+ }
1022
+ async function _t(e, t) {
1023
+ if (T(e, "delete execution"), t.type === "array_access") {
1024
+ let n = m(await y(e, "delete key evaluation", () => f(e, t.key)));
1025
+ ke(e, t.array, n);
1026
+ } else t.type === "variable" && Ce(e, t.name);
1027
+ }
1028
+ var q = class {
1029
+ ctx;
1030
+ program = null;
1031
+ rangeStates = [];
1032
+ constructor(t) {
1033
+ this.ctx = t;
1034
+ }
1035
+ assertDefenseContext(t) {
1036
+ a(this.ctx.requireDefenseContext, "awk", t);
1037
+ }
1038
+ withDefenseContext(t, n) {
1039
+ return x(this.ctx.requireDefenseContext, "awk", t, n);
1040
+ }
1041
+ execute(t) {
1042
+ this.assertDefenseContext("program initialization"), this.program = t, this.ctx.output = "";
1043
+ for (let n of t.functions) this.ctx.functions.set(n.name, n);
1044
+ this.rangeStates = t.rules.map(() => !1);
1045
+ }
1046
+ async executeBegin() {
1047
+ if (this.assertDefenseContext("BEGIN execution entry"), !!this.program) {
1048
+ for (let t of this.program.rules) if (t.pattern?.type === "begin" && (await this.withDefenseContext("BEGIN block execution", () => V(this.ctx, t.action.statements)), this.ctx.shouldExit)) break;
1049
+ }
1050
+ }
1051
+ async executeLine(t) {
1052
+ if (this.assertDefenseContext("line execution entry"), !(!this.program || this.ctx.shouldExit)) {
1053
+ $(this.ctx, t), this.ctx.NR++, this.ctx.FNR++, this.ctx.shouldNext = !1;
1054
+ for (let n = 0; n < this.program.rules.length && !(this.ctx.shouldExit || this.ctx.shouldNext || this.ctx.shouldNextFile); n++) {
1055
+ let i = this.program.rules[n];
1056
+ i.pattern?.type === "begin" || i.pattern?.type === "end" || await this.withDefenseContext("rule match", () => this.matchesRule(i, n)) && await this.withDefenseContext("rule block execution", () => V(this.ctx, i.action.statements));
1057
+ }
1058
+ }
1059
+ }
1060
+ async executeEnd() {
1061
+ if (this.assertDefenseContext("END execution entry"), !!this.program && !this.ctx.inEndBlock) {
1062
+ this.ctx.inEndBlock = !0, this.ctx.shouldExit = !1;
1063
+ for (let t of this.program.rules) if (t.pattern?.type === "end" && (await this.withDefenseContext("END block execution", () => V(this.ctx, t.action.statements)), this.ctx.shouldExit)) break;
1064
+ this.ctx.inEndBlock = !1;
1065
+ }
1066
+ }
1067
+ getOutput() {
1068
+ return this.ctx.output;
1069
+ }
1070
+ getExitCode() {
1071
+ return this.ctx.exitCode;
1072
+ }
1073
+ getContext() {
1074
+ return this.ctx;
1075
+ }
1076
+ async matchesRule(t, n) {
1077
+ this.assertDefenseContext("rule matching");
1078
+ let i = t.pattern;
1079
+ if (!i) return !0;
1080
+ switch (i.type) {
1081
+ case "begin":
1082
+ case "end": return !1;
1083
+ case "regex_pattern": return K(i.pattern, this.ctx.line);
1084
+ case "expr_pattern": return b(await this.withDefenseContext("expression pattern evaluation", () => f(this.ctx, i.expression)));
1085
+ case "range": {
1086
+ let s = await this.withDefenseContext("range start pattern", () => this.matchPattern(i.start)), a = await this.withDefenseContext("range end pattern", () => this.matchPattern(i.end));
1087
+ return this.rangeStates[n] ? (a && (this.rangeStates[n] = !1), !0) : s ? (this.rangeStates[n] = !0, a && (this.rangeStates[n] = !1), !0) : !1;
1088
+ }
1089
+ default: return !1;
1090
+ }
1091
+ }
1092
+ async matchPattern(t) {
1093
+ switch (this.assertDefenseContext("pattern matching"), t.type) {
1094
+ case "regex_pattern": return K(t.pattern, this.ctx.line);
1095
+ case "expr_pattern": return b(await this.withDefenseContext("nested expression pattern", () => f(this.ctx, t.expression)));
1096
+ default: return !1;
1097
+ }
1098
+ }
1099
+ };
1100
+ var r;
1101
+ (function(e) {
1102
+ e.NUMBER = "NUMBER", e.STRING = "STRING", e.REGEX = "REGEX", e.IDENT = "IDENT", e.BEGIN = "BEGIN", e.END = "END", e.IF = "IF", e.ELSE = "ELSE", e.WHILE = "WHILE", e.DO = "DO", e.FOR = "FOR", e.IN = "IN", e.BREAK = "BREAK", e.CONTINUE = "CONTINUE", e.NEXT = "NEXT", e.NEXTFILE = "NEXTFILE", e.EXIT = "EXIT", e.RETURN = "RETURN", e.DELETE = "DELETE", e.FUNCTION = "FUNCTION", e.PRINT = "PRINT", e.PRINTF = "PRINTF", e.GETLINE = "GETLINE", e.PLUS = "PLUS", e.MINUS = "MINUS", e.STAR = "STAR", e.SLASH = "SLASH", e.PERCENT = "PERCENT", e.CARET = "CARET", e.EQ = "EQ", e.NE = "NE", e.LT = "LT", e.GT = "GT", e.LE = "LE", e.GE = "GE", e.MATCH = "MATCH", e.NOT_MATCH = "NOT_MATCH", e.AND = "AND", e.OR = "OR", e.NOT = "NOT", e.ASSIGN = "ASSIGN", e.PLUS_ASSIGN = "PLUS_ASSIGN", e.MINUS_ASSIGN = "MINUS_ASSIGN", e.STAR_ASSIGN = "STAR_ASSIGN", e.SLASH_ASSIGN = "SLASH_ASSIGN", e.PERCENT_ASSIGN = "PERCENT_ASSIGN", e.CARET_ASSIGN = "CARET_ASSIGN", e.INCREMENT = "INCREMENT", e.DECREMENT = "DECREMENT", e.QUESTION = "QUESTION", e.COLON = "COLON", e.COMMA = "COMMA", e.SEMICOLON = "SEMICOLON", e.NEWLINE = "NEWLINE", e.LPAREN = "LPAREN", e.RPAREN = "RPAREN", e.LBRACE = "LBRACE", e.RBRACE = "RBRACE", e.LBRACKET = "LBRACKET", e.RBRACKET = "RBRACKET", e.DOLLAR = "DOLLAR", e.APPEND = "APPEND", e.PIPE = "PIPE", e.EOF = "EOF";
1103
+ })(r || (r = {}));
1104
+ var Gt = new Map([
1105
+ ["BEGIN", r.BEGIN],
1106
+ ["END", r.END],
1107
+ ["if", r.IF],
1108
+ ["else", r.ELSE],
1109
+ ["while", r.WHILE],
1110
+ ["do", r.DO],
1111
+ ["for", r.FOR],
1112
+ ["in", r.IN],
1113
+ ["break", r.BREAK],
1114
+ ["continue", r.CONTINUE],
1115
+ ["next", r.NEXT],
1116
+ ["nextfile", r.NEXTFILE],
1117
+ ["exit", r.EXIT],
1118
+ ["return", r.RETURN],
1119
+ ["delete", r.DELETE],
1120
+ ["function", r.FUNCTION],
1121
+ ["print", r.PRINT],
1122
+ ["printf", r.PRINTF],
1123
+ ["getline", r.GETLINE]
1124
+ ]);
1125
+ function xt(e) {
1126
+ return e.replace(/\[\[:space:\]\]/g, "[ \\t\\n\\r\\f\\v]").replace(/\[\[:blank:\]\]/g, "[ \\t]").replace(/\[\[:alpha:\]\]/g, "[a-zA-Z]").replace(/\[\[:digit:\]\]/g, "[0-9]").replace(/\[\[:alnum:\]\]/g, "[a-zA-Z0-9]").replace(/\[\[:upper:\]\]/g, "[A-Z]").replace(/\[\[:lower:\]\]/g, "[a-z]").replace(/\[\[:punct:\]\]/g, "[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~]").replace(/\[\[:xdigit:\]\]/g, "[0-9A-Fa-f]").replace(/\[\[:graph:\]\]/g, "[!-~]").replace(/\[\[:print:\]\]/g, "[ -~]").replace(/\[\[:cntrl:\]\]/g, "[\\x00-\\x1f\\x7f]");
1127
+ }
1128
+ var Ut = new Set([
1129
+ r.COMMA,
1130
+ r.LBRACE,
1131
+ r.AND,
1132
+ r.OR,
1133
+ r.QUESTION,
1134
+ r.COLON,
1135
+ r.DO,
1136
+ r.ELSE,
1137
+ r.IF,
1138
+ r.WHILE
1139
+ ]), te = class {
1140
+ input;
1141
+ pos = 0;
1142
+ line = 1;
1143
+ column = 1;
1144
+ lastTokenType = null;
1145
+ constructor(t) {
1146
+ this.input = t;
1147
+ }
1148
+ tokenize() {
1149
+ let t = [];
1150
+ for (; this.pos < this.input.length;) {
1151
+ let n = this.nextToken();
1152
+ n && (t.push(n), this.lastTokenType = n.type);
1153
+ }
1154
+ return t.push(this.makeToken(r.EOF, "")), t;
1155
+ }
1156
+ makeToken(t, n) {
1157
+ return {
1158
+ type: t,
1159
+ value: n,
1160
+ line: this.line,
1161
+ column: this.column
1162
+ };
1163
+ }
1164
+ peek(t = 0) {
1165
+ return this.input[this.pos + t] || "";
1166
+ }
1167
+ advance() {
1168
+ let t = this.input[this.pos++] || "";
1169
+ return t === `
1170
+ ` ? (this.line++, this.column = 1) : this.column++, t;
1171
+ }
1172
+ skipWhitespace() {
1173
+ for (; this.pos < this.input.length;) {
1174
+ let t = this.peek();
1175
+ if (t === " " || t === " " || t === "\r") this.advance();
1176
+ else if (t === "\\") if (this.peek(1) === `
1177
+ `) this.advance(), this.advance();
1178
+ else break;
1179
+ else if (t === "#") for (; this.pos < this.input.length && this.peek() !== `
1180
+ `;) this.advance();
1181
+ else break;
1182
+ }
1183
+ }
1184
+ nextToken() {
1185
+ if (this.skipWhitespace(), this.pos >= this.input.length) return null;
1186
+ let t = this.line, n = this.column, i = this.peek();
1187
+ return i === `
1188
+ ` ? (this.advance(), this.lastTokenType !== null && Ut.has(this.lastTokenType) ? this.nextToken() : {
1189
+ type: r.NEWLINE,
1190
+ value: `
1191
+ `,
1192
+ line: t,
1193
+ column: n
1194
+ }) : i === "\"" ? this.readString() : i === "/" && this.canBeRegex() ? this.readRegex() : this.isDigit(i) || i === "." && this.isDigit(this.peek(1)) ? this.readNumber() : this.isAlpha(i) || i === "_" ? this.readIdentifier() : this.readOperator();
1195
+ }
1196
+ canBeRegex() {
1197
+ return new Set([
1198
+ null,
1199
+ r.NEWLINE,
1200
+ r.SEMICOLON,
1201
+ r.LBRACE,
1202
+ r.RBRACE,
1203
+ r.LPAREN,
1204
+ r.LBRACKET,
1205
+ r.COMMA,
1206
+ r.ASSIGN,
1207
+ r.PLUS_ASSIGN,
1208
+ r.MINUS_ASSIGN,
1209
+ r.STAR_ASSIGN,
1210
+ r.SLASH_ASSIGN,
1211
+ r.PERCENT_ASSIGN,
1212
+ r.CARET_ASSIGN,
1213
+ r.AND,
1214
+ r.OR,
1215
+ r.NOT,
1216
+ r.MATCH,
1217
+ r.NOT_MATCH,
1218
+ r.QUESTION,
1219
+ r.COLON,
1220
+ r.LT,
1221
+ r.GT,
1222
+ r.LE,
1223
+ r.GE,
1224
+ r.EQ,
1225
+ r.NE,
1226
+ r.PLUS,
1227
+ r.MINUS,
1228
+ r.STAR,
1229
+ r.PERCENT,
1230
+ r.CARET,
1231
+ r.PRINT,
1232
+ r.PRINTF,
1233
+ r.IF,
1234
+ r.WHILE,
1235
+ r.DO,
1236
+ r.FOR,
1237
+ r.RETURN
1238
+ ]).has(this.lastTokenType);
1239
+ }
1240
+ readString() {
1241
+ let t = this.line, n = this.column;
1242
+ this.advance();
1243
+ let i = "";
1244
+ for (; this.pos < this.input.length && this.peek() !== "\"";) if (this.peek() === "\\") {
1245
+ this.advance();
1246
+ let s = this.advance();
1247
+ switch (s) {
1248
+ case "n":
1249
+ i += `
1250
+ `;
1251
+ break;
1252
+ case "t":
1253
+ i += " ";
1254
+ break;
1255
+ case "r":
1256
+ i += "\r";
1257
+ break;
1258
+ case "f":
1259
+ i += "\f";
1260
+ break;
1261
+ case "b":
1262
+ i += "\b";
1263
+ break;
1264
+ case "v":
1265
+ i += "\v";
1266
+ break;
1267
+ case "a":
1268
+ i += "\x07";
1269
+ break;
1270
+ case "\\":
1271
+ i += "\\";
1272
+ break;
1273
+ case "\"":
1274
+ i += "\"";
1275
+ break;
1276
+ case "/":
1277
+ i += "/";
1278
+ break;
1279
+ case "x": {
1280
+ let a = "";
1281
+ for (; a.length < 2 && /[0-9a-fA-F]/.test(this.peek());) a += this.advance();
1282
+ a.length > 0 ? i += String.fromCharCode(parseInt(a, 16)) : i += "x";
1283
+ break;
1284
+ }
1285
+ default: if (/[0-7]/.test(s)) {
1286
+ let a = s;
1287
+ for (; a.length < 3 && /[0-7]/.test(this.peek());) a += this.advance();
1288
+ i += String.fromCharCode(parseInt(a, 8));
1289
+ } else i += s;
1290
+ }
1291
+ } else i += this.advance();
1292
+ return this.peek() === "\"" && this.advance(), {
1293
+ type: r.STRING,
1294
+ value: i,
1295
+ line: t,
1296
+ column: n
1297
+ };
1298
+ }
1299
+ readRegex() {
1300
+ let t = this.line, n = this.column;
1301
+ this.advance();
1302
+ let i = "";
1303
+ for (; this.pos < this.input.length && this.peek() !== "/";) if (this.peek() === "\\") i += this.advance(), this.pos < this.input.length && (i += this.advance());
1304
+ else {
1305
+ if (this.peek() === `
1306
+ `) break;
1307
+ i += this.advance();
1308
+ }
1309
+ return this.peek() === "/" && this.advance(), i = xt(i), {
1310
+ type: r.REGEX,
1311
+ value: i,
1312
+ line: t,
1313
+ column: n
1314
+ };
1315
+ }
1316
+ readNumber() {
1317
+ let t = this.line, n = this.column, i = "";
1318
+ for (; this.isDigit(this.peek());) i += this.advance();
1319
+ if (this.peek() === "." && this.isDigit(this.peek(1))) for (i += this.advance(); this.isDigit(this.peek());) i += this.advance();
1320
+ if (this.peek() === "e" || this.peek() === "E") for (i += this.advance(), (this.peek() === "+" || this.peek() === "-") && (i += this.advance()); this.isDigit(this.peek());) i += this.advance();
1321
+ return {
1322
+ type: r.NUMBER,
1323
+ value: parseFloat(i),
1324
+ line: t,
1325
+ column: n
1326
+ };
1327
+ }
1328
+ readIdentifier() {
1329
+ let t = this.line, n = this.column, i = "";
1330
+ for (; this.isAlphaNumeric(this.peek()) || this.peek() === "_";) i += this.advance();
1331
+ let s = Gt.get(i);
1332
+ return s !== void 0 ? {
1333
+ type: s,
1334
+ value: i,
1335
+ line: t,
1336
+ column: n
1337
+ } : {
1338
+ type: r.IDENT,
1339
+ value: i,
1340
+ line: t,
1341
+ column: n
1342
+ };
1343
+ }
1344
+ readOperator() {
1345
+ let t = this.line, n = this.column, i = this.advance(), s = this.peek();
1346
+ switch (i) {
1347
+ case "+": return s === "+" ? (this.advance(), {
1348
+ type: r.INCREMENT,
1349
+ value: "++",
1350
+ line: t,
1351
+ column: n
1352
+ }) : s === "=" ? (this.advance(), {
1353
+ type: r.PLUS_ASSIGN,
1354
+ value: "+=",
1355
+ line: t,
1356
+ column: n
1357
+ }) : {
1358
+ type: r.PLUS,
1359
+ value: "+",
1360
+ line: t,
1361
+ column: n
1362
+ };
1363
+ case "-": return s === "-" ? (this.advance(), {
1364
+ type: r.DECREMENT,
1365
+ value: "--",
1366
+ line: t,
1367
+ column: n
1368
+ }) : s === "=" ? (this.advance(), {
1369
+ type: r.MINUS_ASSIGN,
1370
+ value: "-=",
1371
+ line: t,
1372
+ column: n
1373
+ }) : {
1374
+ type: r.MINUS,
1375
+ value: "-",
1376
+ line: t,
1377
+ column: n
1378
+ };
1379
+ case "*": return s === "*" ? (this.advance(), {
1380
+ type: r.CARET,
1381
+ value: "**",
1382
+ line: t,
1383
+ column: n
1384
+ }) : s === "=" ? (this.advance(), {
1385
+ type: r.STAR_ASSIGN,
1386
+ value: "*=",
1387
+ line: t,
1388
+ column: n
1389
+ }) : {
1390
+ type: r.STAR,
1391
+ value: "*",
1392
+ line: t,
1393
+ column: n
1394
+ };
1395
+ case "/": return s === "=" ? (this.advance(), {
1396
+ type: r.SLASH_ASSIGN,
1397
+ value: "/=",
1398
+ line: t,
1399
+ column: n
1400
+ }) : {
1401
+ type: r.SLASH,
1402
+ value: "/",
1403
+ line: t,
1404
+ column: n
1405
+ };
1406
+ case "%": return s === "=" ? (this.advance(), {
1407
+ type: r.PERCENT_ASSIGN,
1408
+ value: "%=",
1409
+ line: t,
1410
+ column: n
1411
+ }) : {
1412
+ type: r.PERCENT,
1413
+ value: "%",
1414
+ line: t,
1415
+ column: n
1416
+ };
1417
+ case "^": return s === "=" ? (this.advance(), {
1418
+ type: r.CARET_ASSIGN,
1419
+ value: "^=",
1420
+ line: t,
1421
+ column: n
1422
+ }) : {
1423
+ type: r.CARET,
1424
+ value: "^",
1425
+ line: t,
1426
+ column: n
1427
+ };
1428
+ case "=": return s === "=" ? (this.advance(), {
1429
+ type: r.EQ,
1430
+ value: "==",
1431
+ line: t,
1432
+ column: n
1433
+ }) : {
1434
+ type: r.ASSIGN,
1435
+ value: "=",
1436
+ line: t,
1437
+ column: n
1438
+ };
1439
+ case "!": return s === "=" ? (this.advance(), {
1440
+ type: r.NE,
1441
+ value: "!=",
1442
+ line: t,
1443
+ column: n
1444
+ }) : s === "~" ? (this.advance(), {
1445
+ type: r.NOT_MATCH,
1446
+ value: "!~",
1447
+ line: t,
1448
+ column: n
1449
+ }) : {
1450
+ type: r.NOT,
1451
+ value: "!",
1452
+ line: t,
1453
+ column: n
1454
+ };
1455
+ case "<": return s === "=" ? (this.advance(), {
1456
+ type: r.LE,
1457
+ value: "<=",
1458
+ line: t,
1459
+ column: n
1460
+ }) : {
1461
+ type: r.LT,
1462
+ value: "<",
1463
+ line: t,
1464
+ column: n
1465
+ };
1466
+ case ">": return s === "=" ? (this.advance(), {
1467
+ type: r.GE,
1468
+ value: ">=",
1469
+ line: t,
1470
+ column: n
1471
+ }) : s === ">" ? (this.advance(), {
1472
+ type: r.APPEND,
1473
+ value: ">>",
1474
+ line: t,
1475
+ column: n
1476
+ }) : {
1477
+ type: r.GT,
1478
+ value: ">",
1479
+ line: t,
1480
+ column: n
1481
+ };
1482
+ case "&": return s === "&" ? (this.advance(), {
1483
+ type: r.AND,
1484
+ value: "&&",
1485
+ line: t,
1486
+ column: n
1487
+ }) : {
1488
+ type: r.IDENT,
1489
+ value: "&",
1490
+ line: t,
1491
+ column: n
1492
+ };
1493
+ case "|": return s === "|" ? (this.advance(), {
1494
+ type: r.OR,
1495
+ value: "||",
1496
+ line: t,
1497
+ column: n
1498
+ }) : {
1499
+ type: r.PIPE,
1500
+ value: "|",
1501
+ line: t,
1502
+ column: n
1503
+ };
1504
+ case "~": return {
1505
+ type: r.MATCH,
1506
+ value: "~",
1507
+ line: t,
1508
+ column: n
1509
+ };
1510
+ case "?": return {
1511
+ type: r.QUESTION,
1512
+ value: "?",
1513
+ line: t,
1514
+ column: n
1515
+ };
1516
+ case ":": return {
1517
+ type: r.COLON,
1518
+ value: ":",
1519
+ line: t,
1520
+ column: n
1521
+ };
1522
+ case ",": return {
1523
+ type: r.COMMA,
1524
+ value: ",",
1525
+ line: t,
1526
+ column: n
1527
+ };
1528
+ case ";": return {
1529
+ type: r.SEMICOLON,
1530
+ value: ";",
1531
+ line: t,
1532
+ column: n
1533
+ };
1534
+ case "(": return {
1535
+ type: r.LPAREN,
1536
+ value: "(",
1537
+ line: t,
1538
+ column: n
1539
+ };
1540
+ case ")": return {
1541
+ type: r.RPAREN,
1542
+ value: ")",
1543
+ line: t,
1544
+ column: n
1545
+ };
1546
+ case "{": return {
1547
+ type: r.LBRACE,
1548
+ value: "{",
1549
+ line: t,
1550
+ column: n
1551
+ };
1552
+ case "}": return {
1553
+ type: r.RBRACE,
1554
+ value: "}",
1555
+ line: t,
1556
+ column: n
1557
+ };
1558
+ case "[": return {
1559
+ type: r.LBRACKET,
1560
+ value: "[",
1561
+ line: t,
1562
+ column: n
1563
+ };
1564
+ case "]": return {
1565
+ type: r.RBRACKET,
1566
+ value: "]",
1567
+ line: t,
1568
+ column: n
1569
+ };
1570
+ case "$": return {
1571
+ type: r.DOLLAR,
1572
+ value: "$",
1573
+ line: t,
1574
+ column: n
1575
+ };
1576
+ default: return {
1577
+ type: r.IDENT,
1578
+ value: i,
1579
+ line: t,
1580
+ column: n
1581
+ };
1582
+ }
1583
+ }
1584
+ isDigit(t) {
1585
+ return t >= "0" && t <= "9";
1586
+ }
1587
+ isAlpha(t) {
1588
+ return t >= "a" && t <= "z" || t >= "A" && t <= "Z";
1589
+ }
1590
+ isAlphaNumeric(t) {
1591
+ return this.isDigit(t) || this.isAlpha(t);
1592
+ }
1593
+ };
1594
+ var p = {
1595
+ LPAREN: "LPAREN",
1596
+ RPAREN: "RPAREN",
1597
+ QUESTION: "QUESTION",
1598
+ NEWLINE: "NEWLINE",
1599
+ SEMICOLON: "SEMICOLON",
1600
+ RBRACE: "RBRACE",
1601
+ COMMA: "COMMA",
1602
+ PIPE: "PIPE",
1603
+ GT: "GT",
1604
+ APPEND: "APPEND",
1605
+ AND: "AND",
1606
+ OR: "OR",
1607
+ ASSIGN: "ASSIGN",
1608
+ PLUS_ASSIGN: "PLUS_ASSIGN",
1609
+ MINUS_ASSIGN: "MINUS_ASSIGN",
1610
+ STAR_ASSIGN: "STAR_ASSIGN",
1611
+ SLASH_ASSIGN: "SLASH_ASSIGN",
1612
+ PERCENT_ASSIGN: "PERCENT_ASSIGN",
1613
+ CARET_ASSIGN: "CARET_ASSIGN",
1614
+ RBRACKET: "RBRACKET",
1615
+ COLON: "COLON",
1616
+ IN: "IN",
1617
+ PRINT: "PRINT",
1618
+ PRINTF: "PRINTF",
1619
+ IDENT: "IDENT",
1620
+ LT: "LT",
1621
+ LE: "LE",
1622
+ GE: "GE",
1623
+ EQ: "EQ",
1624
+ NE: "NE",
1625
+ MATCH: "MATCH",
1626
+ NOT_MATCH: "NOT_MATCH",
1627
+ NUMBER: "NUMBER",
1628
+ STRING: "STRING",
1629
+ DOLLAR: "DOLLAR",
1630
+ NOT: "NOT",
1631
+ MINUS: "MINUS",
1632
+ PLUS: "PLUS",
1633
+ INCREMENT: "INCREMENT",
1634
+ DECREMENT: "DECREMENT"
1635
+ };
1636
+ function De(e) {
1637
+ e.expect(p.PRINT);
1638
+ let t = [];
1639
+ if (e.check(p.NEWLINE) || e.check(p.SEMICOLON) || e.check(p.RBRACE) || e.check(p.PIPE) || e.check(p.GT) || e.check(p.APPEND)) t.push({
1640
+ type: "field",
1641
+ index: {
1642
+ type: "number",
1643
+ value: 0
1644
+ }
1645
+ });
1646
+ else for (t.push(ne(e)); e.check(p.COMMA);) e.advance(), t.push(ne(e));
1647
+ let n;
1648
+ return e.check(p.GT) ? (e.advance(), n = {
1649
+ redirect: ">",
1650
+ file: e.parsePrimary()
1651
+ }) : e.check(p.APPEND) && (e.advance(), n = {
1652
+ redirect: ">>",
1653
+ file: e.parsePrimary()
1654
+ }), {
1655
+ type: "print",
1656
+ args: t,
1657
+ output: n
1658
+ };
1659
+ }
1660
+ function ne(e) {
1661
+ return Bt(e) ? he(e, !0) : he(e, !1);
1662
+ }
1663
+ function he(e, t) {
1664
+ let n = t ? e.parseTernary() : Ht(e);
1665
+ if (e.match(p.ASSIGN, p.PLUS_ASSIGN, p.MINUS_ASSIGN, p.STAR_ASSIGN, p.SLASH_ASSIGN, p.PERCENT_ASSIGN, p.CARET_ASSIGN)) {
1666
+ let i = e.advance(), s = he(e, t);
1667
+ if (n.type !== "variable" && n.type !== "field" && n.type !== "array_access") throw new Error("Invalid assignment target");
1668
+ return {
1669
+ type: "assignment",
1670
+ operator: new Map([
1671
+ ["=", "="],
1672
+ ["+=", "+="],
1673
+ ["-=", "-="],
1674
+ ["*=", "*="],
1675
+ ["/=", "/="],
1676
+ ["%=", "%="],
1677
+ ["^=", "^="]
1678
+ ]).get(i.value) ?? "=",
1679
+ target: n,
1680
+ value: s
1681
+ };
1682
+ }
1683
+ return n;
1684
+ }
1685
+ function Bt(e) {
1686
+ let t = 0, n = e.pos;
1687
+ for (; n < e.tokens.length;) {
1688
+ let i = e.tokens[n];
1689
+ if (i.type === p.LPAREN && t++, i.type === p.RPAREN && t--, i.type === p.QUESTION && t === 0) return !0;
1690
+ if (i.type === p.NEWLINE || i.type === p.SEMICOLON || i.type === p.RBRACE || i.type === p.COMMA || i.type === p.PIPE) return !1;
1691
+ n++;
1692
+ }
1693
+ return !1;
1694
+ }
1695
+ function Ht(e) {
1696
+ let t = Me(e);
1697
+ for (; e.check(p.OR);) {
1698
+ e.advance();
1699
+ let n = Me(e);
1700
+ t = {
1701
+ type: "binary",
1702
+ operator: "||",
1703
+ left: t,
1704
+ right: n
1705
+ };
1706
+ }
1707
+ return t;
1708
+ }
1709
+ function Me(e) {
1710
+ let t = Pe(e);
1711
+ for (; e.check(p.AND);) {
1712
+ e.advance();
1713
+ let n = Pe(e);
1714
+ t = {
1715
+ type: "binary",
1716
+ operator: "&&",
1717
+ left: t,
1718
+ right: n
1719
+ };
1720
+ }
1721
+ return t;
1722
+ }
1723
+ function Pe(e) {
1724
+ let t = $t(e);
1725
+ if (e.check(p.IN)) {
1726
+ e.advance();
1727
+ return {
1728
+ type: "in",
1729
+ key: t,
1730
+ array: String(e.expect(p.IDENT).value)
1731
+ };
1732
+ }
1733
+ return t;
1734
+ }
1735
+ function $t(e) {
1736
+ let t = Te(e);
1737
+ for (; Wt(e) && !Vt(e);) {
1738
+ let n = Te(e);
1739
+ t = {
1740
+ type: "binary",
1741
+ operator: " ",
1742
+ left: t,
1743
+ right: n
1744
+ };
1745
+ }
1746
+ return t;
1747
+ }
1748
+ function Te(e) {
1749
+ let t = Fe(e);
1750
+ for (; e.match(p.MATCH, p.NOT_MATCH);) {
1751
+ let n = e.advance().type === p.MATCH ? "~" : "!~", i = Fe(e);
1752
+ t = {
1753
+ type: "binary",
1754
+ operator: n,
1755
+ left: t,
1756
+ right: i
1757
+ };
1758
+ }
1759
+ return t;
1760
+ }
1761
+ function Fe(e) {
1762
+ let t = e.parseAddSub();
1763
+ for (; e.match(p.LT, p.LE, p.GE, p.EQ, p.NE);) {
1764
+ let n = e.advance(), i = e.parseAddSub();
1765
+ t = {
1766
+ type: "binary",
1767
+ operator: new Map([
1768
+ ["<", "<"],
1769
+ ["<=", "<="],
1770
+ [">=", ">="],
1771
+ ["==", "=="],
1772
+ ["!=", "!="]
1773
+ ]).get(n.value) ?? "==",
1774
+ left: t,
1775
+ right: i
1776
+ };
1777
+ }
1778
+ return t;
1779
+ }
1780
+ function Wt(e) {
1781
+ return e.match(p.NUMBER, p.STRING, p.IDENT, p.DOLLAR, p.LPAREN, p.NOT, p.MINUS, p.PLUS, p.INCREMENT, p.DECREMENT);
1782
+ }
1783
+ function Vt(e) {
1784
+ return e.match(p.AND, p.OR, p.QUESTION, p.ASSIGN, p.PLUS_ASSIGN, p.MINUS_ASSIGN, p.STAR_ASSIGN, p.SLASH_ASSIGN, p.PERCENT_ASSIGN, p.CARET_ASSIGN, p.COMMA, p.SEMICOLON, p.NEWLINE, p.RBRACE, p.RPAREN, p.RBRACKET, p.COLON, p.PIPE, p.APPEND, p.GT, p.IN);
1785
+ }
1786
+ function _e(e) {
1787
+ e.expect(p.PRINTF);
1788
+ let t = e.check(p.LPAREN);
1789
+ t && (e.advance(), e.skipNewlines());
1790
+ let n = t ? e.parseExpression() : ne(e), i = [];
1791
+ for (; e.check(p.COMMA);) e.advance(), t && e.skipNewlines(), i.push(t ? e.parseExpression() : ne(e));
1792
+ t && (e.skipNewlines(), e.expect(p.RPAREN));
1793
+ let s;
1794
+ return e.check(p.GT) ? (e.advance(), s = {
1795
+ redirect: ">",
1796
+ file: e.parsePrimary()
1797
+ }) : e.check(p.APPEND) && (e.advance(), s = {
1798
+ redirect: ">>",
1799
+ file: e.parsePrimary()
1800
+ }), {
1801
+ type: "printf",
1802
+ format: n,
1803
+ args: i,
1804
+ output: s
1805
+ };
1806
+ }
1807
+ var re = class {
1808
+ tokens = [];
1809
+ pos = 0;
1810
+ parse(t) {
1811
+ let n = new te(t);
1812
+ return this.tokens = n.tokenize(), this.pos = 0, this.parseProgram();
1813
+ }
1814
+ setPos(t) {
1815
+ this.pos = t;
1816
+ }
1817
+ current() {
1818
+ return this.tokens[this.pos] || {
1819
+ type: r.EOF,
1820
+ value: "",
1821
+ line: 0,
1822
+ column: 0
1823
+ };
1824
+ }
1825
+ advance() {
1826
+ let t = this.current();
1827
+ return this.pos < this.tokens.length && this.pos++, t;
1828
+ }
1829
+ match(...t) {
1830
+ return t.includes(this.current().type);
1831
+ }
1832
+ check(t) {
1833
+ return this.current().type === t;
1834
+ }
1835
+ expect(t, n) {
1836
+ if (!this.check(t)) {
1837
+ let i = this.current();
1838
+ throw new Error(n || `Expected ${t}, got ${i.type} at line ${i.line}:${i.column}`);
1839
+ }
1840
+ return this.advance();
1841
+ }
1842
+ skipNewlines() {
1843
+ for (; this.check(r.NEWLINE);) this.advance();
1844
+ }
1845
+ skipTerminators() {
1846
+ for (; this.check(r.NEWLINE) || this.check(r.SEMICOLON);) this.advance();
1847
+ }
1848
+ parseProgram() {
1849
+ let t = [], n = [];
1850
+ for (this.skipNewlines(); !this.check(r.EOF) && (this.skipNewlines(), !this.check(r.EOF));) this.check(r.FUNCTION) ? t.push(this.parseFunction()) : n.push(this.parseRule()), this.skipTerminators();
1851
+ return {
1852
+ functions: t,
1853
+ rules: n
1854
+ };
1855
+ }
1856
+ parseFunction() {
1857
+ this.expect(r.FUNCTION);
1858
+ let t = this.expect(r.IDENT).value;
1859
+ this.expect(r.LPAREN);
1860
+ let n = [];
1861
+ if (!this.check(r.RPAREN)) for (n.push(this.expect(r.IDENT).value); this.check(r.COMMA);) this.advance(), n.push(this.expect(r.IDENT).value);
1862
+ this.expect(r.RPAREN), this.skipNewlines();
1863
+ return {
1864
+ name: t,
1865
+ params: n,
1866
+ body: this.parseBlock()
1867
+ };
1868
+ }
1869
+ parseRule() {
1870
+ let t;
1871
+ if (this.check(r.BEGIN)) this.advance(), t = { type: "begin" };
1872
+ else if (this.check(r.END)) this.advance(), t = { type: "end" };
1873
+ else if (this.check(r.LBRACE)) t = void 0;
1874
+ else if (this.check(r.REGEX)) {
1875
+ let i = this.advance();
1876
+ if (this.check(r.AND) || this.check(r.OR)) {
1877
+ let s = {
1878
+ type: "binary",
1879
+ operator: "~",
1880
+ left: {
1881
+ type: "field",
1882
+ index: {
1883
+ type: "number",
1884
+ value: 0
1885
+ }
1886
+ },
1887
+ right: {
1888
+ type: "regex",
1889
+ pattern: i.value
1890
+ }
1891
+ };
1892
+ t = {
1893
+ type: "expr_pattern",
1894
+ expression: this.parseLogicalOrRest(s)
1895
+ };
1896
+ } else {
1897
+ let s = {
1898
+ type: "regex_pattern",
1899
+ pattern: i.value
1900
+ };
1901
+ if (this.check(r.COMMA)) {
1902
+ this.advance();
1903
+ let a;
1904
+ this.check(r.REGEX) ? a = {
1905
+ type: "regex_pattern",
1906
+ pattern: this.advance().value
1907
+ } : a = {
1908
+ type: "expr_pattern",
1909
+ expression: this.parseExpression()
1910
+ }, t = {
1911
+ type: "range",
1912
+ start: s,
1913
+ end: a
1914
+ };
1915
+ } else t = s;
1916
+ }
1917
+ } else {
1918
+ let s = {
1919
+ type: "expr_pattern",
1920
+ expression: this.parseExpression()
1921
+ };
1922
+ if (this.check(r.COMMA)) {
1923
+ this.advance();
1924
+ let a;
1925
+ this.check(r.REGEX) ? a = {
1926
+ type: "regex_pattern",
1927
+ pattern: this.advance().value
1928
+ } : a = {
1929
+ type: "expr_pattern",
1930
+ expression: this.parseExpression()
1931
+ }, t = {
1932
+ type: "range",
1933
+ start: s,
1934
+ end: a
1935
+ };
1936
+ } else t = s;
1937
+ }
1938
+ this.skipNewlines();
1939
+ let n;
1940
+ return this.check(r.LBRACE) ? n = this.parseBlock() : n = {
1941
+ type: "block",
1942
+ statements: [{
1943
+ type: "print",
1944
+ args: [{
1945
+ type: "field",
1946
+ index: {
1947
+ type: "number",
1948
+ value: 0
1949
+ }
1950
+ }]
1951
+ }]
1952
+ }, {
1953
+ pattern: t,
1954
+ action: n
1955
+ };
1956
+ }
1957
+ parseBlock() {
1958
+ this.expect(r.LBRACE), this.skipNewlines();
1959
+ let t = [];
1960
+ for (; !this.check(r.RBRACE) && !this.check(r.EOF);) t.push(this.parseStatement()), this.skipTerminators();
1961
+ return this.expect(r.RBRACE), {
1962
+ type: "block",
1963
+ statements: t
1964
+ };
1965
+ }
1966
+ parseStatement() {
1967
+ if (this.check(r.SEMICOLON) || this.check(r.NEWLINE)) return this.advance(), {
1968
+ type: "block",
1969
+ statements: []
1970
+ };
1971
+ if (this.check(r.LBRACE)) return this.parseBlock();
1972
+ if (this.check(r.IF)) return this.parseIf();
1973
+ if (this.check(r.WHILE)) return this.parseWhile();
1974
+ if (this.check(r.DO)) return this.parseDoWhile();
1975
+ if (this.check(r.FOR)) return this.parseFor();
1976
+ if (this.check(r.BREAK)) return this.advance(), { type: "break" };
1977
+ if (this.check(r.CONTINUE)) return this.advance(), { type: "continue" };
1978
+ if (this.check(r.NEXT)) return this.advance(), { type: "next" };
1979
+ if (this.check(r.NEXTFILE)) return this.advance(), { type: "nextfile" };
1980
+ if (this.check(r.EXIT)) {
1981
+ this.advance();
1982
+ let n;
1983
+ return !this.check(r.NEWLINE) && !this.check(r.SEMICOLON) && !this.check(r.RBRACE) && !this.check(r.EOF) && (n = this.parseExpression()), {
1984
+ type: "exit",
1985
+ code: n
1986
+ };
1987
+ }
1988
+ if (this.check(r.RETURN)) {
1989
+ this.advance();
1990
+ let n;
1991
+ return !this.check(r.NEWLINE) && !this.check(r.SEMICOLON) && !this.check(r.RBRACE) && !this.check(r.EOF) && (n = this.parseExpression()), {
1992
+ type: "return",
1993
+ value: n
1994
+ };
1995
+ }
1996
+ if (this.check(r.DELETE)) {
1997
+ this.advance();
1998
+ let n = this.parsePrimary();
1999
+ if (n.type !== "array_access" && n.type !== "variable") throw new Error("delete requires array element or array");
2000
+ return {
2001
+ type: "delete",
2002
+ target: n
2003
+ };
2004
+ }
2005
+ return this.check(r.PRINT) ? De(this) : this.check(r.PRINTF) ? _e(this) : {
2006
+ type: "expr_stmt",
2007
+ expression: this.parseExpression()
2008
+ };
2009
+ }
2010
+ parseIf() {
2011
+ this.expect(r.IF), this.expect(r.LPAREN);
2012
+ let t = this.parseExpression();
2013
+ this.expect(r.RPAREN), this.skipNewlines();
2014
+ let n = this.parseStatement();
2015
+ this.skipTerminators();
2016
+ let i;
2017
+ return this.check(r.ELSE) && (this.advance(), this.skipNewlines(), i = this.parseStatement()), {
2018
+ type: "if",
2019
+ condition: t,
2020
+ consequent: n,
2021
+ alternate: i
2022
+ };
2023
+ }
2024
+ parseWhile() {
2025
+ this.expect(r.WHILE), this.expect(r.LPAREN);
2026
+ let t = this.parseExpression();
2027
+ this.expect(r.RPAREN), this.skipNewlines();
2028
+ return {
2029
+ type: "while",
2030
+ condition: t,
2031
+ body: this.parseStatement()
2032
+ };
2033
+ }
2034
+ parseDoWhile() {
2035
+ this.expect(r.DO), this.skipNewlines();
2036
+ let t = this.parseStatement();
2037
+ this.skipNewlines(), this.expect(r.WHILE), this.expect(r.LPAREN);
2038
+ let n = this.parseExpression();
2039
+ return this.expect(r.RPAREN), {
2040
+ type: "do_while",
2041
+ body: t,
2042
+ condition: n
2043
+ };
2044
+ }
2045
+ parseFor() {
2046
+ if (this.expect(r.FOR), this.expect(r.LPAREN), this.check(r.IDENT)) {
2047
+ let a = this.advance();
2048
+ if (this.check(r.IN)) {
2049
+ this.advance();
2050
+ let o = this.expect(r.IDENT).value;
2051
+ this.expect(r.RPAREN), this.skipNewlines();
2052
+ let l = this.parseStatement();
2053
+ return {
2054
+ type: "for_in",
2055
+ variable: a.value,
2056
+ array: o,
2057
+ body: l
2058
+ };
2059
+ }
2060
+ this.pos--;
2061
+ }
2062
+ let t;
2063
+ this.check(r.SEMICOLON) || (t = this.parseExpression()), this.expect(r.SEMICOLON);
2064
+ let n;
2065
+ this.check(r.SEMICOLON) || (n = this.parseExpression()), this.expect(r.SEMICOLON);
2066
+ let i;
2067
+ this.check(r.RPAREN) || (i = this.parseExpression()), this.expect(r.RPAREN), this.skipNewlines();
2068
+ let s = this.parseStatement();
2069
+ return {
2070
+ type: "for",
2071
+ init: t,
2072
+ condition: n,
2073
+ update: i,
2074
+ body: s
2075
+ };
2076
+ }
2077
+ parseExpression() {
2078
+ return this.parseAssignment();
2079
+ }
2080
+ parseAssignment() {
2081
+ let t = this.parseTernary();
2082
+ if (this.match(r.ASSIGN, r.PLUS_ASSIGN, r.MINUS_ASSIGN, r.STAR_ASSIGN, r.SLASH_ASSIGN, r.PERCENT_ASSIGN, r.CARET_ASSIGN)) {
2083
+ let n = this.advance(), i = this.parseAssignment();
2084
+ if (t.type !== "variable" && t.type !== "field" && t.type !== "array_access") throw new Error("Invalid assignment target");
2085
+ let s = new Set([
2086
+ "=",
2087
+ "+=",
2088
+ "-=",
2089
+ "*=",
2090
+ "/=",
2091
+ "%=",
2092
+ "^="
2093
+ ]), a = n.value;
2094
+ if (!s.has(a)) throw new Error(`Unknown assignment operator: ${a}`);
2095
+ return {
2096
+ type: "assignment",
2097
+ operator: a,
2098
+ target: t,
2099
+ value: i
2100
+ };
2101
+ }
2102
+ return t;
2103
+ }
2104
+ parseTernary() {
2105
+ let t = this.parsePipeGetline();
2106
+ if (this.check(r.QUESTION)) {
2107
+ this.advance();
2108
+ let n = this.parseExpression();
2109
+ this.expect(r.COLON);
2110
+ let i = this.parseExpression();
2111
+ t = {
2112
+ type: "ternary",
2113
+ condition: t,
2114
+ consequent: n,
2115
+ alternate: i
2116
+ };
2117
+ }
2118
+ return t;
2119
+ }
2120
+ parsePipeGetline() {
2121
+ let t = this.parseOr();
2122
+ if (this.check(r.PIPE)) {
2123
+ if (this.advance(), !this.check(r.GETLINE)) throw new Error("Expected 'getline' after '|' in expression context");
2124
+ this.advance();
2125
+ let n;
2126
+ return this.check(r.IDENT) && (n = this.advance().value), {
2127
+ type: "getline",
2128
+ command: t,
2129
+ variable: n
2130
+ };
2131
+ }
2132
+ return t;
2133
+ }
2134
+ parseOr() {
2135
+ let t = this.parseAnd();
2136
+ for (; this.check(r.OR);) {
2137
+ this.advance();
2138
+ let n = this.parseAnd();
2139
+ t = {
2140
+ type: "binary",
2141
+ operator: "||",
2142
+ left: t,
2143
+ right: n
2144
+ };
2145
+ }
2146
+ return t;
2147
+ }
2148
+ parseLogicalOrRest(t) {
2149
+ for (t = this.parseLogicalAndRest(t); this.check(r.OR);) {
2150
+ this.advance();
2151
+ let n = this.parseAnd();
2152
+ t = {
2153
+ type: "binary",
2154
+ operator: "||",
2155
+ left: t,
2156
+ right: n
2157
+ };
2158
+ }
2159
+ return t;
2160
+ }
2161
+ parseLogicalAndRest(t) {
2162
+ for (; this.check(r.AND);) {
2163
+ this.advance();
2164
+ let n = this.parseIn();
2165
+ t = {
2166
+ type: "binary",
2167
+ operator: "&&",
2168
+ left: t,
2169
+ right: n
2170
+ };
2171
+ }
2172
+ return t;
2173
+ }
2174
+ parseAnd() {
2175
+ let t = this.parseIn();
2176
+ for (; this.check(r.AND);) {
2177
+ this.advance();
2178
+ let n = this.parseIn();
2179
+ t = {
2180
+ type: "binary",
2181
+ operator: "&&",
2182
+ left: t,
2183
+ right: n
2184
+ };
2185
+ }
2186
+ return t;
2187
+ }
2188
+ parseIn() {
2189
+ let t = this.parseConcatenation();
2190
+ if (this.check(r.IN)) {
2191
+ this.advance();
2192
+ return {
2193
+ type: "in",
2194
+ key: t,
2195
+ array: this.expect(r.IDENT).value
2196
+ };
2197
+ }
2198
+ return t;
2199
+ }
2200
+ parseConcatenation() {
2201
+ let t = this.parseMatch();
2202
+ for (; this.canStartExpression() && !this.isConcatTerminator();) {
2203
+ let n = this.parseMatch();
2204
+ t = {
2205
+ type: "binary",
2206
+ operator: " ",
2207
+ left: t,
2208
+ right: n
2209
+ };
2210
+ }
2211
+ return t;
2212
+ }
2213
+ parseMatch() {
2214
+ let t = this.parseComparison();
2215
+ for (; this.match(r.MATCH, r.NOT_MATCH);) {
2216
+ let n = this.advance().type === r.MATCH ? "~" : "!~", i = this.parseComparison();
2217
+ t = {
2218
+ type: "binary",
2219
+ operator: n,
2220
+ left: t,
2221
+ right: i
2222
+ };
2223
+ }
2224
+ return t;
2225
+ }
2226
+ parseComparison() {
2227
+ let t = this.parseAddSub();
2228
+ for (; this.match(r.LT, r.LE, r.GT, r.GE, r.EQ, r.NE);) {
2229
+ let n = this.advance(), i = this.parseAddSub();
2230
+ t = {
2231
+ type: "binary",
2232
+ operator: new Map([
2233
+ ["<", "<"],
2234
+ ["<=", "<="],
2235
+ [">", ">"],
2236
+ [">=", ">="],
2237
+ ["==", "=="],
2238
+ ["!=", "!="]
2239
+ ]).get(n.value) ?? "==",
2240
+ left: t,
2241
+ right: i
2242
+ };
2243
+ }
2244
+ return t;
2245
+ }
2246
+ canStartExpression() {
2247
+ return this.match(r.NUMBER, r.STRING, r.IDENT, r.DOLLAR, r.LPAREN, r.NOT, r.MINUS, r.PLUS, r.INCREMENT, r.DECREMENT);
2248
+ }
2249
+ isConcatTerminator() {
2250
+ return this.match(r.AND, r.OR, r.QUESTION, r.ASSIGN, r.PLUS_ASSIGN, r.MINUS_ASSIGN, r.STAR_ASSIGN, r.SLASH_ASSIGN, r.PERCENT_ASSIGN, r.CARET_ASSIGN, r.COMMA, r.SEMICOLON, r.NEWLINE, r.RBRACE, r.RPAREN, r.RBRACKET, r.COLON, r.PIPE, r.APPEND, r.IN);
2251
+ }
2252
+ parseAddSub() {
2253
+ let t = this.parseMulDiv();
2254
+ for (; this.match(r.PLUS, r.MINUS);) {
2255
+ let n = this.advance().value, i = this.parseMulDiv();
2256
+ t = {
2257
+ type: "binary",
2258
+ operator: n,
2259
+ left: t,
2260
+ right: i
2261
+ };
2262
+ }
2263
+ return t;
2264
+ }
2265
+ parseMulDiv() {
2266
+ let t = this.parseUnary();
2267
+ for (; this.match(r.STAR, r.SLASH, r.PERCENT);) {
2268
+ let n = this.advance(), i = this.parseUnary();
2269
+ t = {
2270
+ type: "binary",
2271
+ operator: new Map([
2272
+ ["*", "*"],
2273
+ ["/", "/"],
2274
+ ["%", "%"]
2275
+ ]).get(n.value) ?? "*",
2276
+ left: t,
2277
+ right: i
2278
+ };
2279
+ }
2280
+ return t;
2281
+ }
2282
+ parseUnary() {
2283
+ if (this.check(r.INCREMENT)) {
2284
+ this.advance();
2285
+ let t = this.parseUnary();
2286
+ return t.type !== "variable" && t.type !== "field" && t.type !== "array_access" ? {
2287
+ type: "unary",
2288
+ operator: "+",
2289
+ operand: {
2290
+ type: "unary",
2291
+ operator: "+",
2292
+ operand: t
2293
+ }
2294
+ } : {
2295
+ type: "pre_increment",
2296
+ operand: t
2297
+ };
2298
+ }
2299
+ if (this.check(r.DECREMENT)) {
2300
+ this.advance();
2301
+ let t = this.parseUnary();
2302
+ return t.type !== "variable" && t.type !== "field" && t.type !== "array_access" ? {
2303
+ type: "unary",
2304
+ operator: "-",
2305
+ operand: {
2306
+ type: "unary",
2307
+ operator: "-",
2308
+ operand: t
2309
+ }
2310
+ } : {
2311
+ type: "pre_decrement",
2312
+ operand: t
2313
+ };
2314
+ }
2315
+ if (this.match(r.NOT, r.MINUS, r.PLUS)) return {
2316
+ type: "unary",
2317
+ operator: this.advance().value,
2318
+ operand: this.parseUnary()
2319
+ };
2320
+ return this.parsePower();
2321
+ }
2322
+ parsePower() {
2323
+ let t = this.parsePostfix();
2324
+ if (this.check(r.CARET)) {
2325
+ this.advance();
2326
+ let n = this.parsePower();
2327
+ t = {
2328
+ type: "binary",
2329
+ operator: "^",
2330
+ left: t,
2331
+ right: n
2332
+ };
2333
+ }
2334
+ return t;
2335
+ }
2336
+ parsePostfix() {
2337
+ let t = this.parsePrimary();
2338
+ if (this.check(r.INCREMENT)) {
2339
+ if (this.advance(), t.type !== "variable" && t.type !== "field" && t.type !== "array_access") throw new Error("Invalid increment operand");
2340
+ return {
2341
+ type: "post_increment",
2342
+ operand: t
2343
+ };
2344
+ }
2345
+ if (this.check(r.DECREMENT)) {
2346
+ if (this.advance(), t.type !== "variable" && t.type !== "field" && t.type !== "array_access") throw new Error("Invalid decrement operand");
2347
+ return {
2348
+ type: "post_decrement",
2349
+ operand: t
2350
+ };
2351
+ }
2352
+ return t;
2353
+ }
2354
+ parseFieldIndex() {
2355
+ if (this.check(r.INCREMENT)) {
2356
+ this.advance();
2357
+ let t = this.parseFieldIndex();
2358
+ return t.type !== "variable" && t.type !== "field" && t.type !== "array_access" ? {
2359
+ type: "unary",
2360
+ operator: "+",
2361
+ operand: {
2362
+ type: "unary",
2363
+ operator: "+",
2364
+ operand: t
2365
+ }
2366
+ } : {
2367
+ type: "pre_increment",
2368
+ operand: t
2369
+ };
2370
+ }
2371
+ if (this.check(r.DECREMENT)) {
2372
+ this.advance();
2373
+ let t = this.parseFieldIndex();
2374
+ return t.type !== "variable" && t.type !== "field" && t.type !== "array_access" ? {
2375
+ type: "unary",
2376
+ operator: "-",
2377
+ operand: {
2378
+ type: "unary",
2379
+ operator: "-",
2380
+ operand: t
2381
+ }
2382
+ } : {
2383
+ type: "pre_decrement",
2384
+ operand: t
2385
+ };
2386
+ }
2387
+ if (this.match(r.NOT, r.MINUS, r.PLUS)) return {
2388
+ type: "unary",
2389
+ operator: this.advance().value,
2390
+ operand: this.parseFieldIndex()
2391
+ };
2392
+ return this.parseFieldIndexPower();
2393
+ }
2394
+ parseFieldIndexPower() {
2395
+ let t = this.parseFieldIndexPrimary();
2396
+ if (this.check(r.CARET)) {
2397
+ this.advance();
2398
+ let n = this.parseFieldIndexPower();
2399
+ t = {
2400
+ type: "binary",
2401
+ operator: "^",
2402
+ left: t,
2403
+ right: n
2404
+ };
2405
+ }
2406
+ return t;
2407
+ }
2408
+ parseFieldIndexPrimary() {
2409
+ if (this.check(r.NUMBER)) return {
2410
+ type: "number",
2411
+ value: this.advance().value
2412
+ };
2413
+ if (this.check(r.STRING)) return {
2414
+ type: "string",
2415
+ value: this.advance().value
2416
+ };
2417
+ if (this.check(r.DOLLAR)) return this.advance(), {
2418
+ type: "field",
2419
+ index: this.parseFieldIndex()
2420
+ };
2421
+ if (this.check(r.LPAREN)) {
2422
+ this.advance();
2423
+ let t = this.parseExpression();
2424
+ return this.expect(r.RPAREN), t;
2425
+ }
2426
+ if (this.check(r.IDENT)) {
2427
+ let t = this.advance().value;
2428
+ if (this.check(r.LPAREN)) {
2429
+ this.advance();
2430
+ let n = [];
2431
+ if (!this.check(r.RPAREN)) for (n.push(this.parseExpression()); this.check(r.COMMA);) this.advance(), n.push(this.parseExpression());
2432
+ return this.expect(r.RPAREN), {
2433
+ type: "call",
2434
+ name: t,
2435
+ args: n
2436
+ };
2437
+ }
2438
+ if (this.check(r.LBRACKET)) {
2439
+ this.advance();
2440
+ let n = this.parseExpression();
2441
+ if (this.check(r.COMMA)) {
2442
+ let i = [n];
2443
+ for (; this.check(r.COMMA);) this.advance(), i.push(this.parseExpression());
2444
+ this.expect(r.RBRACKET);
2445
+ return {
2446
+ type: "array_access",
2447
+ array: t,
2448
+ key: i.reduce((a, o) => ({
2449
+ type: "binary",
2450
+ operator: " ",
2451
+ left: {
2452
+ type: "binary",
2453
+ operator: " ",
2454
+ left: a,
2455
+ right: {
2456
+ type: "variable",
2457
+ name: "SUBSEP"
2458
+ }
2459
+ },
2460
+ right: o
2461
+ }))
2462
+ };
2463
+ }
2464
+ return this.expect(r.RBRACKET), {
2465
+ type: "array_access",
2466
+ array: t,
2467
+ key: n
2468
+ };
2469
+ }
2470
+ return {
2471
+ type: "variable",
2472
+ name: t
2473
+ };
2474
+ }
2475
+ throw new Error(`Unexpected token in field index: ${this.current().type} at line ${this.current().line}:${this.current().column}`);
2476
+ }
2477
+ parsePrimary() {
2478
+ if (this.check(r.NUMBER)) return {
2479
+ type: "number",
2480
+ value: this.advance().value
2481
+ };
2482
+ if (this.check(r.STRING)) return {
2483
+ type: "string",
2484
+ value: this.advance().value
2485
+ };
2486
+ if (this.check(r.REGEX)) return {
2487
+ type: "regex",
2488
+ pattern: this.advance().value
2489
+ };
2490
+ if (this.check(r.DOLLAR)) return this.advance(), {
2491
+ type: "field",
2492
+ index: this.parseFieldIndex()
2493
+ };
2494
+ if (this.check(r.LPAREN)) {
2495
+ this.advance();
2496
+ let t = this.parseExpression();
2497
+ if (this.check(r.COMMA)) {
2498
+ let n = [t];
2499
+ for (; this.check(r.COMMA);) this.advance(), n.push(this.parseExpression());
2500
+ return this.expect(r.RPAREN), {
2501
+ type: "tuple",
2502
+ elements: n
2503
+ };
2504
+ }
2505
+ return this.expect(r.RPAREN), t;
2506
+ }
2507
+ if (this.check(r.GETLINE)) {
2508
+ this.advance();
2509
+ let t, n;
2510
+ return this.check(r.IDENT) && (t = this.advance().value), this.check(r.LT) && (this.advance(), n = this.parsePrimary()), {
2511
+ type: "getline",
2512
+ variable: t,
2513
+ file: n
2514
+ };
2515
+ }
2516
+ if (this.check(r.IDENT)) {
2517
+ let t = this.advance().value;
2518
+ if (this.check(r.LPAREN)) {
2519
+ this.advance();
2520
+ let n = [];
2521
+ if (this.skipNewlines(), !this.check(r.RPAREN)) for (n.push(this.parseExpression()); this.check(r.COMMA);) this.advance(), this.skipNewlines(), n.push(this.parseExpression());
2522
+ return this.skipNewlines(), this.expect(r.RPAREN), {
2523
+ type: "call",
2524
+ name: t,
2525
+ args: n
2526
+ };
2527
+ }
2528
+ if (this.check(r.LBRACKET)) {
2529
+ this.advance();
2530
+ let n = [this.parseExpression()];
2531
+ for (; this.check(r.COMMA);) this.advance(), n.push(this.parseExpression());
2532
+ this.expect(r.RBRACKET);
2533
+ let i;
2534
+ if (n.length === 1) i = n[0];
2535
+ else {
2536
+ i = n[0];
2537
+ for (let s = 1; s < n.length; s++) i = {
2538
+ type: "binary",
2539
+ operator: " ",
2540
+ left: {
2541
+ type: "binary",
2542
+ operator: " ",
2543
+ left: i,
2544
+ right: {
2545
+ type: "variable",
2546
+ name: "SUBSEP"
2547
+ }
2548
+ },
2549
+ right: n[s]
2550
+ };
2551
+ }
2552
+ return {
2553
+ type: "array_access",
2554
+ array: t,
2555
+ key: i
2556
+ };
2557
+ }
2558
+ return {
2559
+ type: "variable",
2560
+ name: t
2561
+ };
2562
+ }
2563
+ throw new Error(`Unexpected token: ${this.current().type} at line ${this.current().line}:${this.current().column}`);
2564
+ }
2565
+ };
2566
+ var Kt = {
2567
+ name: "awk",
2568
+ summary: "pattern scanning and text processing language",
2569
+ usage: "awk [OPTIONS] 'PROGRAM' [FILE...]",
2570
+ options: [
2571
+ "-F FS use FS as field separator",
2572
+ "-v VAR=VAL assign VAL to variable VAR",
2573
+ " --help display this help and exit"
2574
+ ]
2575
+ }, zn = {
2576
+ name: "awk",
2577
+ async execute(e, t) {
2578
+ a(t.requireDefenseContext, "awk", "execution entry");
2579
+ let n = (h, c) => x(t.requireDefenseContext, "awk", h, c);
2580
+ if (o(e)) return s(Kt);
2581
+ let i = new r1(/\s+/), s$1 = " ", a$1 = Object.create(null), o$1 = 0;
2582
+ for (let h = 0; h < e.length; h++) {
2583
+ let c = e[h];
2584
+ if (c === "-F" && h + 1 < e.length) s$1 = pe(e[++h]), i = Ge(s$1), o$1 = h + 1;
2585
+ else if (c.startsWith("-F")) s$1 = pe(c.slice(2)), i = Ge(s$1), o$1 = h + 1;
2586
+ else if (c === "-v" && h + 1 < e.length) {
2587
+ let E = e[++h], F = E.indexOf("=");
2588
+ if (F > 0) {
2589
+ let G = E.slice(0, F);
2590
+ a$1[G] = pe(E.slice(F + 1));
2591
+ }
2592
+ o$1 = h + 1;
2593
+ } else {
2594
+ if (c.startsWith("--")) return r$1("awk", c);
2595
+ if (c.startsWith("-") && c.length > 1) {
2596
+ let E = c[1];
2597
+ if (E !== "F" && E !== "v") return r$1("awk", `-${E}`);
2598
+ o$1 = h + 1;
2599
+ } else if (!c.startsWith("-")) {
2600
+ o$1 = h;
2601
+ break;
2602
+ }
2603
+ }
2604
+ }
2605
+ if (o$1 >= e.length) return {
2606
+ stdout: "",
2607
+ stderr: `awk: missing program
2608
+ `,
2609
+ exitCode: 1
2610
+ };
2611
+ let l = e[o$1], u = e.slice(o$1 + 1), N = new re(), A;
2612
+ try {
2613
+ A = N.parse(l);
2614
+ } catch (h) {
2615
+ return {
2616
+ stdout: "",
2617
+ stderr: `awk: ${h instanceof Error ? h.message : String(h)}
2618
+ `,
2619
+ exitCode: 1
2620
+ };
2621
+ }
2622
+ let C = {
2623
+ readFile: t.fs.readFile.bind(t.fs),
2624
+ writeFile: t.fs.writeFile.bind(t.fs),
2625
+ appendFile: async (h, c) => {
2626
+ try {
2627
+ let E = await n("appendFile read", () => t.fs.readFile(h));
2628
+ await n("appendFile write", () => t.fs.writeFile(h, E + c));
2629
+ } catch (E) {
2630
+ if (E instanceof d) throw E;
2631
+ await n("appendFile create", () => t.fs.writeFile(h, c));
2632
+ }
2633
+ },
2634
+ resolvePath: t.fs.resolvePath.bind(t.fs)
2635
+ }, O = t.exec, I = se({
2636
+ fieldSep: i,
2637
+ maxIterations: t.limits?.maxAwkIterations,
2638
+ maxOutputSize: t.limits?.maxStringLength,
2639
+ fs: C,
2640
+ cwd: t.cwd,
2641
+ exec: O ? (h) => n("command pipe exec", () => O(h, {
2642
+ cwd: t.cwd,
2643
+ signal: t.signal
2644
+ })) : void 0,
2645
+ coverage: t.coverage,
2646
+ requireDefenseContext: t.requireDefenseContext
2647
+ });
2648
+ I.FS = s$1, I.vars = Object.assign(Object.create(null), a$1), I.ARGC = u.length + 1, I.ARGV = Object.create(null), I.ARGV[0] = "awk";
2649
+ for (let h = 0; h < u.length; h++) I.ARGV[String(h + 1)] = u[h];
2650
+ I.ENVIRON = r$2(t.env);
2651
+ let w = new q(I);
2652
+ w.execute(A);
2653
+ let d$1 = A.rules.some((h) => h.pattern?.type !== "begin" && h.pattern?.type !== "end"), R = A.rules.some((h) => h.pattern?.type === "end");
2654
+ try {
2655
+ if (await n("BEGIN execution", () => w.executeBegin()), I.shouldExit) return await n("END execution after BEGIN exit", () => w.executeEnd()), {
2656
+ stdout: w.getOutput(),
2657
+ stderr: "",
2658
+ exitCode: w.getExitCode()
2659
+ };
2660
+ if (!d$1 && !R) return {
2661
+ stdout: w.getOutput(),
2662
+ stderr: "",
2663
+ exitCode: w.getExitCode()
2664
+ };
2665
+ let h = [];
2666
+ if (u.length > 0) for (let c of u) try {
2667
+ let E = t.fs.resolvePath(t.cwd, c), G = (await n("input file read", () => t.fs.readFile(E))).split(`
2668
+ `);
2669
+ G.length > 0 && G[G.length - 1] === "" && G.pop(), h.push({
2670
+ filename: c,
2671
+ lines: G
2672
+ });
2673
+ } catch (E) {
2674
+ if (E instanceof d) throw E;
2675
+ return {
2676
+ stdout: "",
2677
+ stderr: `awk: ${c}: No such file or directory
2678
+ `,
2679
+ exitCode: 1
2680
+ };
2681
+ }
2682
+ else {
2683
+ let c = x$1(t.stdin).split(`
2684
+ `);
2685
+ c.length > 0 && c[c.length - 1] === "" && c.pop(), h.push({
2686
+ filename: "",
2687
+ lines: c
2688
+ });
2689
+ }
2690
+ for (let c of h) {
2691
+ for (I.FILENAME = c.filename, I.FNR = 0, I.lines = c.lines, I.lineIndex = -1, I.shouldNextFile = !1; I.lineIndex < c.lines.length - 1;) {
2692
+ I.lineIndex++;
2693
+ let E = I.lineIndex;
2694
+ if (await n("line execution", () => w.executeLine(c.lines[E])), I.shouldExit || I.shouldNextFile) break;
2695
+ }
2696
+ if (I.shouldExit) break;
2697
+ }
2698
+ return await n("END execution", () => w.executeEnd()), {
2699
+ stdout: w.getOutput(),
2700
+ stderr: "",
2701
+ exitCode: w.getExitCode()
2702
+ };
2703
+ } catch (h) {
2704
+ if (h instanceof d) throw h;
2705
+ let c = h instanceof Error ? h.message : String(h), E = h instanceof b$1 ? b$1.EXIT_CODE : 2;
2706
+ return {
2707
+ stdout: w.getOutput(),
2708
+ stderr: `awk: ${c}
2709
+ `,
2710
+ exitCode: E
2711
+ };
2712
+ }
2713
+ }
2714
+ };
2715
+ function pe(e) {
2716
+ return e.replace(/\\t/g, " ").replace(/\\n/g, `
2717
+ `).replace(/\\r/g, "\r").replace(/\\b/g, "\b").replace(/\\f/g, "\f").replace(/\\a/g, "\x07").replace(/\\v/g, "\v").replace(/\\\\/g, "\\");
2718
+ }
2719
+ function Ge(e) {
2720
+ if (e === " ") return I1("\\s+");
2721
+ if (/[[\](){}.*+?^$|\\]/.test(e)) try {
2722
+ return I1(e);
2723
+ } catch {
2724
+ return I1(xe(e));
2725
+ }
2726
+ return I1(xe(e));
2727
+ }
2728
+ function xe(e) {
2729
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
2730
+ }
2731
+ //#endregion
2732
+ //#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/awk2-LA3USKJP.js
2733
+ createRequire(import.meta.url);
2734
+ //#endregion
2735
+ export { zn as awkCommand2 };
2736
+
2737
+ //# sourceMappingURL=awk2-LA3USKJP-BbsfXVlR.mjs.map