secure-scan 1.2.2

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 (569) hide show
  1. package/README.md +564 -0
  2. package/dist/ai/aiAnalyzer.d.ts +99 -0
  3. package/dist/ai/aiAnalyzer.d.ts.map +1 -0
  4. package/dist/ai/aiAnalyzer.js +669 -0
  5. package/dist/ai/aiAnalyzer.js.map +1 -0
  6. package/dist/ai/index.d.ts +5 -0
  7. package/dist/ai/index.d.ts.map +1 -0
  8. package/dist/ai/index.js +21 -0
  9. package/dist/ai/index.js.map +1 -0
  10. package/dist/analyzers/base/baseAnalyzer.d.ts +44 -0
  11. package/dist/analyzers/base/baseAnalyzer.d.ts.map +1 -0
  12. package/dist/analyzers/base/baseAnalyzer.js +53 -0
  13. package/dist/analyzers/base/baseAnalyzer.js.map +1 -0
  14. package/dist/analyzers/base/index.d.ts +5 -0
  15. package/dist/analyzers/base/index.d.ts.map +1 -0
  16. package/dist/analyzers/base/index.js +21 -0
  17. package/dist/analyzers/base/index.js.map +1 -0
  18. package/dist/analyzers/c-cpp/cppAnalyzer.d.ts +60 -0
  19. package/dist/analyzers/c-cpp/cppAnalyzer.d.ts.map +1 -0
  20. package/dist/analyzers/c-cpp/cppAnalyzer.js +218 -0
  21. package/dist/analyzers/c-cpp/cppAnalyzer.js.map +1 -0
  22. package/dist/analyzers/c-cpp/index.d.ts +5 -0
  23. package/dist/analyzers/c-cpp/index.d.ts.map +1 -0
  24. package/dist/analyzers/c-cpp/index.js +21 -0
  25. package/dist/analyzers/c-cpp/index.js.map +1 -0
  26. package/dist/analyzers/core/engine/index.d.ts +5 -0
  27. package/dist/analyzers/core/engine/index.d.ts.map +1 -0
  28. package/dist/analyzers/core/engine/index.js +21 -0
  29. package/dist/analyzers/core/engine/index.js.map +1 -0
  30. package/dist/analyzers/core/engine/ruleEngine.d.ts +46 -0
  31. package/dist/analyzers/core/engine/ruleEngine.d.ts.map +1 -0
  32. package/dist/analyzers/core/engine/ruleEngine.js +173 -0
  33. package/dist/analyzers/core/engine/ruleEngine.js.map +1 -0
  34. package/dist/analyzers/core/index.d.ts +8 -0
  35. package/dist/analyzers/core/index.d.ts.map +1 -0
  36. package/dist/analyzers/core/index.js +24 -0
  37. package/dist/analyzers/core/index.js.map +1 -0
  38. package/dist/analyzers/core/scanner/fileScanner.d.ts +31 -0
  39. package/dist/analyzers/core/scanner/fileScanner.d.ts.map +1 -0
  40. package/dist/analyzers/core/scanner/fileScanner.js +199 -0
  41. package/dist/analyzers/core/scanner/fileScanner.js.map +1 -0
  42. package/dist/analyzers/core/scanner/index.d.ts +5 -0
  43. package/dist/analyzers/core/scanner/index.d.ts.map +1 -0
  44. package/dist/analyzers/core/scanner/index.js +21 -0
  45. package/dist/analyzers/core/scanner/index.js.map +1 -0
  46. package/dist/analyzers/core/scoring/index.d.ts +5 -0
  47. package/dist/analyzers/core/scoring/index.d.ts.map +1 -0
  48. package/dist/analyzers/core/scoring/index.js +21 -0
  49. package/dist/analyzers/core/scoring/index.js.map +1 -0
  50. package/dist/analyzers/core/scoring/riskScoring.d.ts +49 -0
  51. package/dist/analyzers/core/scoring/riskScoring.d.ts.map +1 -0
  52. package/dist/analyzers/core/scoring/riskScoring.js +180 -0
  53. package/dist/analyzers/core/scoring/riskScoring.js.map +1 -0
  54. package/dist/analyzers/core/securityScanner.d.ts +47 -0
  55. package/dist/analyzers/core/securityScanner.d.ts.map +1 -0
  56. package/dist/analyzers/core/securityScanner.js +298 -0
  57. package/dist/analyzers/core/securityScanner.js.map +1 -0
  58. package/dist/analyzers/csharp/csharpAnalyzer.d.ts +64 -0
  59. package/dist/analyzers/csharp/csharpAnalyzer.d.ts.map +1 -0
  60. package/dist/analyzers/csharp/csharpAnalyzer.js +232 -0
  61. package/dist/analyzers/csharp/csharpAnalyzer.js.map +1 -0
  62. package/dist/analyzers/csharp/index.d.ts +5 -0
  63. package/dist/analyzers/csharp/index.d.ts.map +1 -0
  64. package/dist/analyzers/csharp/index.js +21 -0
  65. package/dist/analyzers/csharp/index.js.map +1 -0
  66. package/dist/analyzers/iac/iacAnalyzer.d.ts +36 -0
  67. package/dist/analyzers/iac/iacAnalyzer.d.ts.map +1 -0
  68. package/dist/analyzers/iac/iacAnalyzer.js +182 -0
  69. package/dist/analyzers/iac/iacAnalyzer.js.map +1 -0
  70. package/dist/analyzers/iac/index.d.ts +5 -0
  71. package/dist/analyzers/iac/index.d.ts.map +1 -0
  72. package/dist/analyzers/iac/index.js +21 -0
  73. package/dist/analyzers/iac/index.js.map +1 -0
  74. package/dist/analyzers/index.d.ts +30 -0
  75. package/dist/analyzers/index.d.ts.map +1 -0
  76. package/dist/analyzers/index.js +80 -0
  77. package/dist/analyzers/index.js.map +1 -0
  78. package/dist/analyzers/java/index.d.ts +5 -0
  79. package/dist/analyzers/java/index.d.ts.map +1 -0
  80. package/dist/analyzers/java/index.js +21 -0
  81. package/dist/analyzers/java/index.js.map +1 -0
  82. package/dist/analyzers/java/javaAnalyzer.d.ts +64 -0
  83. package/dist/analyzers/java/javaAnalyzer.d.ts.map +1 -0
  84. package/dist/analyzers/java/javaAnalyzer.js +224 -0
  85. package/dist/analyzers/java/javaAnalyzer.js.map +1 -0
  86. package/dist/analyzers/javascript/astUtils.d.ts +170 -0
  87. package/dist/analyzers/javascript/astUtils.d.ts.map +1 -0
  88. package/dist/analyzers/javascript/astUtils.js +700 -0
  89. package/dist/analyzers/javascript/astUtils.js.map +1 -0
  90. package/dist/analyzers/javascript/index.d.ts +18 -0
  91. package/dist/analyzers/javascript/index.d.ts.map +1 -0
  92. package/dist/analyzers/javascript/index.js +50 -0
  93. package/dist/analyzers/javascript/index.js.map +1 -0
  94. package/dist/analyzers/javascript/javascriptAnalyzer.d.ts +111 -0
  95. package/dist/analyzers/javascript/javascriptAnalyzer.d.ts.map +1 -0
  96. package/dist/analyzers/javascript/javascriptAnalyzer.js +860 -0
  97. package/dist/analyzers/javascript/javascriptAnalyzer.js.map +1 -0
  98. package/dist/analyzers/javascript/malwareDetector.d.ts +102 -0
  99. package/dist/analyzers/javascript/malwareDetector.d.ts.map +1 -0
  100. package/dist/analyzers/javascript/malwareDetector.js +616 -0
  101. package/dist/analyzers/javascript/malwareDetector.js.map +1 -0
  102. package/dist/analyzers/javascript/packageJsonAnalyzer.d.ts +87 -0
  103. package/dist/analyzers/javascript/packageJsonAnalyzer.d.ts.map +1 -0
  104. package/dist/analyzers/javascript/packageJsonAnalyzer.js +553 -0
  105. package/dist/analyzers/javascript/packageJsonAnalyzer.js.map +1 -0
  106. package/dist/analyzers/javascript/taintAnalyzer.d.ts +120 -0
  107. package/dist/analyzers/javascript/taintAnalyzer.d.ts.map +1 -0
  108. package/dist/analyzers/javascript/taintAnalyzer.js +526 -0
  109. package/dist/analyzers/javascript/taintAnalyzer.js.map +1 -0
  110. package/dist/analyzers/php/index.d.ts +5 -0
  111. package/dist/analyzers/php/index.d.ts.map +1 -0
  112. package/dist/analyzers/php/index.js +21 -0
  113. package/dist/analyzers/php/index.js.map +1 -0
  114. package/dist/analyzers/php/phpAnalyzer.d.ts +56 -0
  115. package/dist/analyzers/php/phpAnalyzer.d.ts.map +1 -0
  116. package/dist/analyzers/php/phpAnalyzer.js +202 -0
  117. package/dist/analyzers/php/phpAnalyzer.js.map +1 -0
  118. package/dist/analyzers/python/index.d.ts +5 -0
  119. package/dist/analyzers/python/index.d.ts.map +1 -0
  120. package/dist/analyzers/python/index.js +21 -0
  121. package/dist/analyzers/python/index.js.map +1 -0
  122. package/dist/analyzers/python/pythonAnalyzer.d.ts +64 -0
  123. package/dist/analyzers/python/pythonAnalyzer.d.ts.map +1 -0
  124. package/dist/analyzers/python/pythonAnalyzer.js +226 -0
  125. package/dist/analyzers/python/pythonAnalyzer.js.map +1 -0
  126. package/dist/cli/index.d.ts +7 -0
  127. package/dist/cli/index.d.ts.map +1 -0
  128. package/dist/cli/index.js +281 -0
  129. package/dist/cli/index.js.map +1 -0
  130. package/dist/core/engine/index.d.ts +5 -0
  131. package/dist/core/engine/index.d.ts.map +1 -0
  132. package/dist/core/engine/index.js +21 -0
  133. package/dist/core/engine/index.js.map +1 -0
  134. package/dist/core/engine/ruleEngine.d.ts +46 -0
  135. package/dist/core/engine/ruleEngine.d.ts.map +1 -0
  136. package/dist/core/engine/ruleEngine.js +173 -0
  137. package/dist/core/engine/ruleEngine.js.map +1 -0
  138. package/dist/core/index.d.ts +8 -0
  139. package/dist/core/index.d.ts.map +1 -0
  140. package/dist/core/index.js +24 -0
  141. package/dist/core/index.js.map +1 -0
  142. package/dist/core/scanner/fileScanner.d.ts +31 -0
  143. package/dist/core/scanner/fileScanner.d.ts.map +1 -0
  144. package/dist/core/scanner/fileScanner.js +199 -0
  145. package/dist/core/scanner/fileScanner.js.map +1 -0
  146. package/dist/core/scanner/index.d.ts +5 -0
  147. package/dist/core/scanner/index.d.ts.map +1 -0
  148. package/dist/core/scanner/index.js +21 -0
  149. package/dist/core/scanner/index.js.map +1 -0
  150. package/dist/core/scoring/index.d.ts +5 -0
  151. package/dist/core/scoring/index.d.ts.map +1 -0
  152. package/dist/core/scoring/index.js +21 -0
  153. package/dist/core/scoring/index.js.map +1 -0
  154. package/dist/core/scoring/riskScoring.d.ts +49 -0
  155. package/dist/core/scoring/riskScoring.d.ts.map +1 -0
  156. package/dist/core/scoring/riskScoring.js +180 -0
  157. package/dist/core/scoring/riskScoring.js.map +1 -0
  158. package/dist/core/securityScanner.d.ts +47 -0
  159. package/dist/core/securityScanner.d.ts.map +1 -0
  160. package/dist/core/securityScanner.js +298 -0
  161. package/dist/core/securityScanner.js.map +1 -0
  162. package/dist/dependencies/aiDependencyAnalyzer.d.ts +96 -0
  163. package/dist/dependencies/aiDependencyAnalyzer.d.ts.map +1 -0
  164. package/dist/dependencies/aiDependencyAnalyzer.js +435 -0
  165. package/dist/dependencies/aiDependencyAnalyzer.js.map +1 -0
  166. package/dist/dependencies/database/cveDatabase.d.ts +32 -0
  167. package/dist/dependencies/database/cveDatabase.d.ts.map +1 -0
  168. package/dist/dependencies/database/cveDatabase.js +393 -0
  169. package/dist/dependencies/database/cveDatabase.js.map +1 -0
  170. package/dist/dependencies/database/index.d.ts +6 -0
  171. package/dist/dependencies/database/index.d.ts.map +1 -0
  172. package/dist/dependencies/database/index.js +22 -0
  173. package/dist/dependencies/database/index.js.map +1 -0
  174. package/dist/dependencies/database/maliciousPackages.d.ts +43 -0
  175. package/dist/dependencies/database/maliciousPackages.d.ts.map +1 -0
  176. package/dist/dependencies/database/maliciousPackages.js +279 -0
  177. package/dist/dependencies/database/maliciousPackages.js.map +1 -0
  178. package/dist/dependencies/dependencyAnalyzer.d.ts +74 -0
  179. package/dist/dependencies/dependencyAnalyzer.d.ts.map +1 -0
  180. package/dist/dependencies/dependencyAnalyzer.js +349 -0
  181. package/dist/dependencies/dependencyAnalyzer.js.map +1 -0
  182. package/dist/dependencies/detectors/index.d.ts +7 -0
  183. package/dist/dependencies/detectors/index.d.ts.map +1 -0
  184. package/dist/dependencies/detectors/index.js +28 -0
  185. package/dist/dependencies/detectors/index.js.map +1 -0
  186. package/dist/dependencies/detectors/securityStandards.d.ts +15 -0
  187. package/dist/dependencies/detectors/securityStandards.d.ts.map +1 -0
  188. package/dist/dependencies/detectors/securityStandards.js +178 -0
  189. package/dist/dependencies/detectors/securityStandards.js.map +1 -0
  190. package/dist/dependencies/detectors/vulnerabilityDetector.d.ts +53 -0
  191. package/dist/dependencies/detectors/vulnerabilityDetector.d.ts.map +1 -0
  192. package/dist/dependencies/detectors/vulnerabilityDetector.js +289 -0
  193. package/dist/dependencies/detectors/vulnerabilityDetector.js.map +1 -0
  194. package/dist/dependencies/index.d.ts +14 -0
  195. package/dist/dependencies/index.d.ts.map +1 -0
  196. package/dist/dependencies/index.js +43 -0
  197. package/dist/dependencies/index.js.map +1 -0
  198. package/dist/dependencies/installed/index.d.ts +8 -0
  199. package/dist/dependencies/installed/index.d.ts.map +1 -0
  200. package/dist/dependencies/installed/index.js +24 -0
  201. package/dist/dependencies/installed/index.js.map +1 -0
  202. package/dist/dependencies/installed/installedScanner.d.ts +91 -0
  203. package/dist/dependencies/installed/installedScanner.d.ts.map +1 -0
  204. package/dist/dependencies/installed/installedScanner.js +766 -0
  205. package/dist/dependencies/installed/installedScanner.js.map +1 -0
  206. package/dist/dependencies/installed/malwarePatterns.d.ts +32 -0
  207. package/dist/dependencies/installed/malwarePatterns.d.ts.map +1 -0
  208. package/dist/dependencies/installed/malwarePatterns.js +480 -0
  209. package/dist/dependencies/installed/malwarePatterns.js.map +1 -0
  210. package/dist/dependencies/installed/types.d.ts +274 -0
  211. package/dist/dependencies/installed/types.d.ts.map +1 -0
  212. package/dist/dependencies/installed/types.js +7 -0
  213. package/dist/dependencies/installed/types.js.map +1 -0
  214. package/dist/dependencies/parsers/base/baseParser.d.ts +44 -0
  215. package/dist/dependencies/parsers/base/baseParser.d.ts.map +1 -0
  216. package/dist/dependencies/parsers/base/baseParser.js +80 -0
  217. package/dist/dependencies/parsers/base/baseParser.js.map +1 -0
  218. package/dist/dependencies/parsers/base/index.d.ts +6 -0
  219. package/dist/dependencies/parsers/base/index.d.ts.map +1 -0
  220. package/dist/dependencies/parsers/base/index.js +27 -0
  221. package/dist/dependencies/parsers/base/index.js.map +1 -0
  222. package/dist/dependencies/parsers/cpp/cppParser.d.ts +36 -0
  223. package/dist/dependencies/parsers/cpp/cppParser.d.ts.map +1 -0
  224. package/dist/dependencies/parsers/cpp/cppParser.js +196 -0
  225. package/dist/dependencies/parsers/cpp/cppParser.js.map +1 -0
  226. package/dist/dependencies/parsers/cpp/index.d.ts +6 -0
  227. package/dist/dependencies/parsers/cpp/index.d.ts.map +1 -0
  228. package/dist/dependencies/parsers/cpp/index.js +27 -0
  229. package/dist/dependencies/parsers/cpp/index.js.map +1 -0
  230. package/dist/dependencies/parsers/csharp/csharpParser.d.ts +32 -0
  231. package/dist/dependencies/parsers/csharp/csharpParser.d.ts.map +1 -0
  232. package/dist/dependencies/parsers/csharp/csharpParser.js +125 -0
  233. package/dist/dependencies/parsers/csharp/csharpParser.js.map +1 -0
  234. package/dist/dependencies/parsers/csharp/index.d.ts +6 -0
  235. package/dist/dependencies/parsers/csharp/index.d.ts.map +1 -0
  236. package/dist/dependencies/parsers/csharp/index.js +27 -0
  237. package/dist/dependencies/parsers/csharp/index.js.map +1 -0
  238. package/dist/dependencies/parsers/index.d.ts +24 -0
  239. package/dist/dependencies/parsers/index.d.ts.map +1 -0
  240. package/dist/dependencies/parsers/index.js +69 -0
  241. package/dist/dependencies/parsers/index.js.map +1 -0
  242. package/dist/dependencies/parsers/java/index.d.ts +6 -0
  243. package/dist/dependencies/parsers/java/index.d.ts.map +1 -0
  244. package/dist/dependencies/parsers/java/index.js +27 -0
  245. package/dist/dependencies/parsers/java/index.js.map +1 -0
  246. package/dist/dependencies/parsers/java/javaParser.d.ts +32 -0
  247. package/dist/dependencies/parsers/java/javaParser.d.ts.map +1 -0
  248. package/dist/dependencies/parsers/java/javaParser.js +168 -0
  249. package/dist/dependencies/parsers/java/javaParser.js.map +1 -0
  250. package/dist/dependencies/parsers/javascript/index.d.ts +6 -0
  251. package/dist/dependencies/parsers/javascript/index.d.ts.map +1 -0
  252. package/dist/dependencies/parsers/javascript/index.js +27 -0
  253. package/dist/dependencies/parsers/javascript/index.js.map +1 -0
  254. package/dist/dependencies/parsers/javascript/javascriptParser.d.ts +55 -0
  255. package/dist/dependencies/parsers/javascript/javascriptParser.d.ts.map +1 -0
  256. package/dist/dependencies/parsers/javascript/javascriptParser.js +266 -0
  257. package/dist/dependencies/parsers/javascript/javascriptParser.js.map +1 -0
  258. package/dist/dependencies/parsers/php/index.d.ts +6 -0
  259. package/dist/dependencies/parsers/php/index.d.ts.map +1 -0
  260. package/dist/dependencies/parsers/php/index.js +27 -0
  261. package/dist/dependencies/parsers/php/index.js.map +1 -0
  262. package/dist/dependencies/parsers/php/phpParser.d.ts +35 -0
  263. package/dist/dependencies/parsers/php/phpParser.d.ts.map +1 -0
  264. package/dist/dependencies/parsers/php/phpParser.js +162 -0
  265. package/dist/dependencies/parsers/php/phpParser.js.map +1 -0
  266. package/dist/dependencies/parsers/python/index.d.ts +6 -0
  267. package/dist/dependencies/parsers/python/index.d.ts.map +1 -0
  268. package/dist/dependencies/parsers/python/index.js +27 -0
  269. package/dist/dependencies/parsers/python/index.js.map +1 -0
  270. package/dist/dependencies/parsers/python/pythonParser.d.ts +60 -0
  271. package/dist/dependencies/parsers/python/pythonParser.d.ts.map +1 -0
  272. package/dist/dependencies/parsers/python/pythonParser.js +336 -0
  273. package/dist/dependencies/parsers/python/pythonParser.js.map +1 -0
  274. package/dist/dependencies/types.d.ts +280 -0
  275. package/dist/dependencies/types.d.ts.map +1 -0
  276. package/dist/dependencies/types.js +59 -0
  277. package/dist/dependencies/types.js.map +1 -0
  278. package/dist/i18n/index.d.ts +2 -0
  279. package/dist/i18n/index.d.ts.map +1 -0
  280. package/dist/i18n/index.js +18 -0
  281. package/dist/i18n/index.js.map +1 -0
  282. package/dist/i18n/translations.d.ts +55 -0
  283. package/dist/i18n/translations.d.ts.map +1 -0
  284. package/dist/i18n/translations.js +119 -0
  285. package/dist/i18n/translations.js.map +1 -0
  286. package/dist/index.d.ts +14 -0
  287. package/dist/index.d.ts.map +1 -0
  288. package/dist/index.js +36 -0
  289. package/dist/index.js.map +1 -0
  290. package/dist/reports/dependencyReportGenerator.d.ts +20 -0
  291. package/dist/reports/dependencyReportGenerator.d.ts.map +1 -0
  292. package/dist/reports/dependencyReportGenerator.js +690 -0
  293. package/dist/reports/dependencyReportGenerator.js.map +1 -0
  294. package/dist/reports/htmlReportGenerator.d.ts +43 -0
  295. package/dist/reports/htmlReportGenerator.d.ts.map +1 -0
  296. package/dist/reports/htmlReportGenerator.js +793 -0
  297. package/dist/reports/htmlReportGenerator.js.map +1 -0
  298. package/dist/reports/index.d.ts +7 -0
  299. package/dist/reports/index.d.ts.map +1 -0
  300. package/dist/reports/index.js +23 -0
  301. package/dist/reports/index.js.map +1 -0
  302. package/dist/reports/installedDepsReportGenerator.d.ts +14 -0
  303. package/dist/reports/installedDepsReportGenerator.d.ts.map +1 -0
  304. package/dist/reports/installedDepsReportGenerator.js +872 -0
  305. package/dist/reports/installedDepsReportGenerator.js.map +1 -0
  306. package/dist/rules/index.d.ts +31 -0
  307. package/dist/rules/index.d.ts.map +1 -0
  308. package/dist/rules/index.js +95 -0
  309. package/dist/rules/index.js.map +1 -0
  310. package/dist/rules/malware/categories/backdoors.d.ts +12 -0
  311. package/dist/rules/malware/categories/backdoors.d.ts.map +1 -0
  312. package/dist/rules/malware/categories/backdoors.js +163 -0
  313. package/dist/rules/malware/categories/backdoors.js.map +1 -0
  314. package/dist/rules/malware/categories/cryptominers.d.ts +13 -0
  315. package/dist/rules/malware/categories/cryptominers.d.ts.map +1 -0
  316. package/dist/rules/malware/categories/cryptominers.js +415 -0
  317. package/dist/rules/malware/categories/cryptominers.js.map +1 -0
  318. package/dist/rules/malware/categories/exfiltration.d.ts +20 -0
  319. package/dist/rules/malware/categories/exfiltration.d.ts.map +1 -0
  320. package/dist/rules/malware/categories/exfiltration.js +658 -0
  321. package/dist/rules/malware/categories/exfiltration.js.map +1 -0
  322. package/dist/rules/malware/categories/keyloggers.d.ts +19 -0
  323. package/dist/rules/malware/categories/keyloggers.d.ts.map +1 -0
  324. package/dist/rules/malware/categories/keyloggers.js +763 -0
  325. package/dist/rules/malware/categories/keyloggers.js.map +1 -0
  326. package/dist/rules/malware/categories/loaders.d.ts +20 -0
  327. package/dist/rules/malware/categories/loaders.d.ts.map +1 -0
  328. package/dist/rules/malware/categories/loaders.js +702 -0
  329. package/dist/rules/malware/categories/loaders.js.map +1 -0
  330. package/dist/rules/malware/categories/network.d.ts +19 -0
  331. package/dist/rules/malware/categories/network.d.ts.map +1 -0
  332. package/dist/rules/malware/categories/network.js +622 -0
  333. package/dist/rules/malware/categories/network.js.map +1 -0
  334. package/dist/rules/malware/categories/obfuscation.d.ts +22 -0
  335. package/dist/rules/malware/categories/obfuscation.d.ts.map +1 -0
  336. package/dist/rules/malware/categories/obfuscation.js +766 -0
  337. package/dist/rules/malware/categories/obfuscation.js.map +1 -0
  338. package/dist/rules/malware/constants/index.d.ts +281 -0
  339. package/dist/rules/malware/constants/index.d.ts.map +1 -0
  340. package/dist/rules/malware/constants/index.js +327 -0
  341. package/dist/rules/malware/constants/index.js.map +1 -0
  342. package/dist/rules/malware/engine/index.d.ts +178 -0
  343. package/dist/rules/malware/engine/index.d.ts.map +1 -0
  344. package/dist/rules/malware/engine/index.js +552 -0
  345. package/dist/rules/malware/engine/index.js.map +1 -0
  346. package/dist/rules/malware/index.d.ts +205 -0
  347. package/dist/rules/malware/index.d.ts.map +1 -0
  348. package/dist/rules/malware/index.js +837 -0
  349. package/dist/rules/malware/index.js.map +1 -0
  350. package/dist/rules/malware/scoring/index.d.ts +84 -0
  351. package/dist/rules/malware/scoring/index.d.ts.map +1 -0
  352. package/dist/rules/malware/scoring/index.js +441 -0
  353. package/dist/rules/malware/scoring/index.js.map +1 -0
  354. package/dist/rules/malware/types/index.d.ts +616 -0
  355. package/dist/rules/malware/types/index.d.ts.map +1 -0
  356. package/dist/rules/malware/types/index.js +155 -0
  357. package/dist/rules/malware/types/index.js.map +1 -0
  358. package/dist/rules/malware/utils/index.d.ts +117 -0
  359. package/dist/rules/malware/utils/index.d.ts.map +1 -0
  360. package/dist/rules/malware/utils/index.js +514 -0
  361. package/dist/rules/malware/utils/index.js.map +1 -0
  362. package/dist/rules/standards.d.ts +26 -0
  363. package/dist/rules/standards.d.ts.map +1 -0
  364. package/dist/rules/standards.js +352 -0
  365. package/dist/rules/standards.js.map +1 -0
  366. package/dist/rules/vulnerabilities/constants/index.d.ts +835 -0
  367. package/dist/rules/vulnerabilities/constants/index.d.ts.map +1 -0
  368. package/dist/rules/vulnerabilities/constants/index.js +544 -0
  369. package/dist/rules/vulnerabilities/constants/index.js.map +1 -0
  370. package/dist/rules/vulnerabilities/engine/index.d.ts +145 -0
  371. package/dist/rules/vulnerabilities/engine/index.d.ts.map +1 -0
  372. package/dist/rules/vulnerabilities/engine/index.js +581 -0
  373. package/dist/rules/vulnerabilities/engine/index.js.map +1 -0
  374. package/dist/rules/vulnerabilities/index.d.ts +148 -0
  375. package/dist/rules/vulnerabilities/index.d.ts.map +1 -0
  376. package/dist/rules/vulnerabilities/index.js +252 -0
  377. package/dist/rules/vulnerabilities/index.js.map +1 -0
  378. package/dist/rules/vulnerabilities/rules/authentication.d.ts +8 -0
  379. package/dist/rules/vulnerabilities/rules/authentication.d.ts.map +1 -0
  380. package/dist/rules/vulnerabilities/rules/authentication.js +419 -0
  381. package/dist/rules/vulnerabilities/rules/authentication.js.map +1 -0
  382. package/dist/rules/vulnerabilities/rules/commandInjection.d.ts +8 -0
  383. package/dist/rules/vulnerabilities/rules/commandInjection.d.ts.map +1 -0
  384. package/dist/rules/vulnerabilities/rules/commandInjection.js +300 -0
  385. package/dist/rules/vulnerabilities/rules/commandInjection.js.map +1 -0
  386. package/dist/rules/vulnerabilities/rules/csrf.d.ts +8 -0
  387. package/dist/rules/vulnerabilities/rules/csrf.d.ts.map +1 -0
  388. package/dist/rules/vulnerabilities/rules/csrf.js +261 -0
  389. package/dist/rules/vulnerabilities/rules/csrf.js.map +1 -0
  390. package/dist/rules/vulnerabilities/rules/deserialization.d.ts +8 -0
  391. package/dist/rules/vulnerabilities/rules/deserialization.d.ts.map +1 -0
  392. package/dist/rules/vulnerabilities/rules/deserialization.js +336 -0
  393. package/dist/rules/vulnerabilities/rules/deserialization.js.map +1 -0
  394. package/dist/rules/vulnerabilities/rules/fileUpload.d.ts +8 -0
  395. package/dist/rules/vulnerabilities/rules/fileUpload.d.ts.map +1 -0
  396. package/dist/rules/vulnerabilities/rules/fileUpload.js +325 -0
  397. package/dist/rules/vulnerabilities/rules/fileUpload.js.map +1 -0
  398. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.d.ts +8 -0
  399. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.d.ts.map +1 -0
  400. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.js +446 -0
  401. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.js.map +1 -0
  402. package/dist/rules/vulnerabilities/rules/index.d.ts +17 -0
  403. package/dist/rules/vulnerabilities/rules/index.d.ts.map +1 -0
  404. package/dist/rules/vulnerabilities/rules/index.js +47 -0
  405. package/dist/rules/vulnerabilities/rules/index.js.map +1 -0
  406. package/dist/rules/vulnerabilities/rules/pathTraversal.d.ts +8 -0
  407. package/dist/rules/vulnerabilities/rules/pathTraversal.d.ts.map +1 -0
  408. package/dist/rules/vulnerabilities/rules/pathTraversal.js +351 -0
  409. package/dist/rules/vulnerabilities/rules/pathTraversal.js.map +1 -0
  410. package/dist/rules/vulnerabilities/rules/prototypePollution.d.ts +8 -0
  411. package/dist/rules/vulnerabilities/rules/prototypePollution.d.ts.map +1 -0
  412. package/dist/rules/vulnerabilities/rules/prototypePollution.js +272 -0
  413. package/dist/rules/vulnerabilities/rules/prototypePollution.js.map +1 -0
  414. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.d.ts +8 -0
  415. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.d.ts.map +1 -0
  416. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.js +438 -0
  417. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.js.map +1 -0
  418. package/dist/rules/vulnerabilities/rules/sqlInjection.d.ts +12 -0
  419. package/dist/rules/vulnerabilities/rules/sqlInjection.d.ts.map +1 -0
  420. package/dist/rules/vulnerabilities/rules/sqlInjection.js +636 -0
  421. package/dist/rules/vulnerabilities/rules/sqlInjection.js.map +1 -0
  422. package/dist/rules/vulnerabilities/rules/ssrf.d.ts +8 -0
  423. package/dist/rules/vulnerabilities/rules/ssrf.d.ts.map +1 -0
  424. package/dist/rules/vulnerabilities/rules/ssrf.js +401 -0
  425. package/dist/rules/vulnerabilities/rules/ssrf.js.map +1 -0
  426. package/dist/rules/vulnerabilities/rules/xss.d.ts +11 -0
  427. package/dist/rules/vulnerabilities/rules/xss.d.ts.map +1 -0
  428. package/dist/rules/vulnerabilities/rules/xss.js +724 -0
  429. package/dist/rules/vulnerabilities/rules/xss.js.map +1 -0
  430. package/dist/rules/vulnerabilities/scoring/index.d.ts +80 -0
  431. package/dist/rules/vulnerabilities/scoring/index.d.ts.map +1 -0
  432. package/dist/rules/vulnerabilities/scoring/index.js +414 -0
  433. package/dist/rules/vulnerabilities/scoring/index.js.map +1 -0
  434. package/dist/rules/vulnerabilities/types/index.d.ts +830 -0
  435. package/dist/rules/vulnerabilities/types/index.d.ts.map +1 -0
  436. package/dist/rules/vulnerabilities/types/index.js +164 -0
  437. package/dist/rules/vulnerabilities/types/index.js.map +1 -0
  438. package/dist/rules/vulnerabilities/utils/index.d.ts +206 -0
  439. package/dist/rules/vulnerabilities/utils/index.d.ts.map +1 -0
  440. package/dist/rules/vulnerabilities/utils/index.js +615 -0
  441. package/dist/rules/vulnerabilities/utils/index.js.map +1 -0
  442. package/dist/types/index.d.ts +359 -0
  443. package/dist/types/index.d.ts.map +1 -0
  444. package/dist/types/index.js +61 -0
  445. package/dist/types/index.js.map +1 -0
  446. package/dist/utils/index.d.ts +82 -0
  447. package/dist/utils/index.d.ts.map +1 -0
  448. package/dist/utils/index.js +326 -0
  449. package/dist/utils/index.js.map +1 -0
  450. package/dist/utils/logger.d.ts +40 -0
  451. package/dist/utils/logger.d.ts.map +1 -0
  452. package/dist/utils/logger.js +139 -0
  453. package/dist/utils/logger.js.map +1 -0
  454. package/docs/ARCHITECTURE.md +320 -0
  455. package/docs/V1.2.1-IA_Performances.md +116 -0
  456. package/docs/images/WIN_Defender.png +0 -0
  457. package/package.json +68 -0
  458. package/secure-scan.config.json +134 -0
  459. package/secure-scan.sln +29 -0
  460. package/src/ai/aiAnalyzer.ts +714 -0
  461. package/src/ai/index.ts +5 -0
  462. package/src/analyzers/base/baseAnalyzer.ts +66 -0
  463. package/src/analyzers/base/index.ts +5 -0
  464. package/src/analyzers/c-cpp/cppAnalyzer.ts +308 -0
  465. package/src/analyzers/c-cpp/index.ts +5 -0
  466. package/src/analyzers/core/engine/index.ts +5 -0
  467. package/src/analyzers/core/engine/ruleEngine.ts +221 -0
  468. package/src/analyzers/core/index.ts +8 -0
  469. package/src/analyzers/core/scanner/fileScanner.ts +204 -0
  470. package/src/analyzers/core/scanner/index.ts +5 -0
  471. package/src/analyzers/core/scoring/index.ts +5 -0
  472. package/src/analyzers/core/scoring/riskScoring.ts +198 -0
  473. package/src/analyzers/core/securityScanner.ts +321 -0
  474. package/src/analyzers/csharp/csharpAnalyzer.ts +328 -0
  475. package/src/analyzers/csharp/index.ts +5 -0
  476. package/src/analyzers/iac/iacAnalyzer.ts +318 -0
  477. package/src/analyzers/iac/index.ts +5 -0
  478. package/src/analyzers/index.ts +67 -0
  479. package/src/analyzers/java/index.ts +5 -0
  480. package/src/analyzers/java/javaAnalyzer.ts +320 -0
  481. package/src/analyzers/javascript/PROMPT_JS_ANALYZER.md +267 -0
  482. package/src/analyzers/javascript/astUtils.ts +789 -0
  483. package/src/analyzers/javascript/index.ts +50 -0
  484. package/src/analyzers/javascript/javascriptAnalyzer.ts +984 -0
  485. package/src/analyzers/javascript/malwareDetector.ts +697 -0
  486. package/src/analyzers/javascript/packageJsonAnalyzer.ts +626 -0
  487. package/src/analyzers/javascript/taintAnalyzer.ts +630 -0
  488. package/src/analyzers/php/index.ts +5 -0
  489. package/src/analyzers/php/phpAnalyzer.ts +280 -0
  490. package/src/analyzers/python/index.ts +5 -0
  491. package/src/analyzers/python/pythonAnalyzer.ts +319 -0
  492. package/src/cli/index.ts +276 -0
  493. package/src/dependencies/aiDependencyAnalyzer.ts +496 -0
  494. package/src/dependencies/database/cveDatabase.ts +426 -0
  495. package/src/dependencies/database/index.ts +6 -0
  496. package/src/dependencies/database/maliciousPackages.ts +286 -0
  497. package/src/dependencies/dependencyAnalyzer.ts +394 -0
  498. package/src/dependencies/detectors/index.ts +7 -0
  499. package/src/dependencies/detectors/securityStandards.ts +200 -0
  500. package/src/dependencies/detectors/vulnerabilityDetector.ts +343 -0
  501. package/src/dependencies/index.ts +27 -0
  502. package/src/dependencies/installed/index.ts +8 -0
  503. package/src/dependencies/installed/installedScanner.ts +821 -0
  504. package/src/dependencies/installed/malwarePatterns.ts +492 -0
  505. package/src/dependencies/installed/types.ts +287 -0
  506. package/src/dependencies/parsers/base/baseParser.ts +108 -0
  507. package/src/dependencies/parsers/base/index.ts +6 -0
  508. package/src/dependencies/parsers/cpp/cppParser.ts +245 -0
  509. package/src/dependencies/parsers/cpp/index.ts +6 -0
  510. package/src/dependencies/parsers/csharp/csharpParser.ts +151 -0
  511. package/src/dependencies/parsers/csharp/index.ts +6 -0
  512. package/src/dependencies/parsers/index.ts +56 -0
  513. package/src/dependencies/parsers/java/index.ts +6 -0
  514. package/src/dependencies/parsers/java/javaParser.ts +203 -0
  515. package/src/dependencies/parsers/javascript/index.ts +6 -0
  516. package/src/dependencies/parsers/javascript/javascriptParser.ts +362 -0
  517. package/src/dependencies/parsers/php/index.ts +6 -0
  518. package/src/dependencies/parsers/php/phpParser.ts +208 -0
  519. package/src/dependencies/parsers/python/index.ts +6 -0
  520. package/src/dependencies/parsers/python/pythonParser.ts +437 -0
  521. package/src/dependencies/types.ts +330 -0
  522. package/src/i18n/index.ts +1 -0
  523. package/src/i18n/translations.ts +194 -0
  524. package/src/index.ts +16 -0
  525. package/src/reports/dependencyReportGenerator.ts +717 -0
  526. package/src/reports/htmlReportGenerator.ts +781 -0
  527. package/src/reports/index.ts +7 -0
  528. package/src/reports/installedDepsReportGenerator.ts +899 -0
  529. package/src/rules/index.ts +58 -0
  530. package/src/rules/malware/INFO.md +287 -0
  531. package/src/rules/malware/categories/backdoors.ts +174 -0
  532. package/src/rules/malware/categories/cryptominers.ts +434 -0
  533. package/src/rules/malware/categories/exfiltration.ts +677 -0
  534. package/src/rules/malware/categories/keyloggers.ts +780 -0
  535. package/src/rules/malware/categories/loaders.ts +721 -0
  536. package/src/rules/malware/categories/network.ts +639 -0
  537. package/src/rules/malware/categories/obfuscation.ts +788 -0
  538. package/src/rules/malware/constants/index.ts +358 -0
  539. package/src/rules/malware/engine/index.ts +758 -0
  540. package/src/rules/malware/index.ts +928 -0
  541. package/src/rules/malware/scoring/index.ts +549 -0
  542. package/src/rules/malware/types/index.ts +752 -0
  543. package/src/rules/malware/utils/index.ts +643 -0
  544. package/src/rules/standards.ts +372 -0
  545. package/src/rules/vulnerabilities/PROMPT_VULNERABILITIES.md +226 -0
  546. package/src/rules/vulnerabilities/constants/index.ts +625 -0
  547. package/src/rules/vulnerabilities/engine/index.ts +831 -0
  548. package/src/rules/vulnerabilities/index.ts +312 -0
  549. package/src/rules/vulnerabilities/rules/authentication.ts +426 -0
  550. package/src/rules/vulnerabilities/rules/commandInjection.ts +307 -0
  551. package/src/rules/vulnerabilities/rules/csrf.ts +268 -0
  552. package/src/rules/vulnerabilities/rules/deserialization.ts +343 -0
  553. package/src/rules/vulnerabilities/rules/fileUpload.ts +332 -0
  554. package/src/rules/vulnerabilities/rules/hardcodedSecrets.ts +453 -0
  555. package/src/rules/vulnerabilities/rules/index.ts +17 -0
  556. package/src/rules/vulnerabilities/rules/pathTraversal.ts +358 -0
  557. package/src/rules/vulnerabilities/rules/prototypePollution.ts +279 -0
  558. package/src/rules/vulnerabilities/rules/securityMisconfiguration.ts +445 -0
  559. package/src/rules/vulnerabilities/rules/sqlInjection.ts +669 -0
  560. package/src/rules/vulnerabilities/rules/ssrf.ts +408 -0
  561. package/src/rules/vulnerabilities/rules/xss.ts +753 -0
  562. package/src/rules/vulnerabilities/scoring/index.ts +543 -0
  563. package/src/rules/vulnerabilities/types/index.ts +1004 -0
  564. package/src/rules/vulnerabilities/utils/index.ts +709 -0
  565. package/src/types/index.ts +391 -0
  566. package/src/utils/index.ts +306 -0
  567. package/src/utils/logger.ts +150 -0
  568. package/test-installed-scanner.ts +136 -0
  569. package/tsconfig.json +30 -0
@@ -0,0 +1,581 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Vulnerability Rule Engine - Core Detection Engine
4
+ * @module rules/vulnerabilities/engine
5
+ *
6
+ * Orchestrates vulnerability detection across all rule categories:
7
+ * - Multi-pattern matching with timeout protection
8
+ * - Taint analysis integration
9
+ * - AST-aware analysis
10
+ * - Dynamic scoring
11
+ * - Rule correlation
12
+ * - Finding aggregation and deduplication
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.VulnerabilityRuleEngine = exports.SimpleTaintAnalyzer = exports.PatternMatcher = void 0;
16
+ exports.createDefaultEngine = createDefaultEngine;
17
+ exports.quickScan = quickScan;
18
+ const types_1 = require("../types");
19
+ const utils_1 = require("../utils");
20
+ const scoring_1 = require("../scoring");
21
+ const constants_1 = require("../constants");
22
+ // ============================================================================
23
+ // PATTERN MATCHER IMPLEMENTATION
24
+ // ============================================================================
25
+ /**
26
+ * Pattern matcher with timeout protection
27
+ */
28
+ class PatternMatcher {
29
+ timeoutMs;
30
+ maxMatches;
31
+ constructor(options) {
32
+ this.timeoutMs = options?.timeoutMs ?? constants_1.LIMITS.REGEX_TIMEOUT;
33
+ this.maxMatches = options?.maxMatches ?? constants_1.LIMITS.MAX_MATCHES_PER_PATTERN;
34
+ }
35
+ /**
36
+ * Match patterns against content
37
+ */
38
+ match(content, patterns, language) {
39
+ const allMatches = [];
40
+ for (const pattern of patterns) {
41
+ // Check language compatibility
42
+ if (pattern.languages && !pattern.languages.includes(language)) {
43
+ continue;
44
+ }
45
+ const matches = this.matchSinglePattern(pattern, content, language);
46
+ allMatches.push(...matches);
47
+ if (allMatches.length >= this.maxMatches) {
48
+ break;
49
+ }
50
+ }
51
+ return allMatches;
52
+ }
53
+ /**
54
+ * Match with timeout protection
55
+ */
56
+ async matchWithTimeout(content, patterns, language, timeout) {
57
+ return new Promise((resolve) => {
58
+ const timeoutId = setTimeout(() => {
59
+ resolve([]);
60
+ }, timeout);
61
+ try {
62
+ const results = this.match(content, patterns, language);
63
+ clearTimeout(timeoutId);
64
+ resolve(results);
65
+ }
66
+ catch {
67
+ clearTimeout(timeoutId);
68
+ resolve([]);
69
+ }
70
+ });
71
+ }
72
+ /**
73
+ * Match a single pattern against code
74
+ */
75
+ matchSinglePattern(pattern, code, language) {
76
+ try {
77
+ switch (pattern.type) {
78
+ case types_1.PatternType.REGEX:
79
+ return (0, utils_1.safeRegexMatch)(code, pattern);
80
+ case types_1.PatternType.LITERAL:
81
+ return this.matchLiteralPattern(pattern, code);
82
+ case types_1.PatternType.AST:
83
+ // AST patterns require external AST parser
84
+ return [];
85
+ case types_1.PatternType.TAINT:
86
+ // Taint patterns are handled separately
87
+ return [];
88
+ case types_1.PatternType.SEMANTIC:
89
+ // Semantic patterns require deeper analysis
90
+ return [];
91
+ case types_1.PatternType.CFG:
92
+ // CFG patterns require control flow analysis
93
+ return [];
94
+ default:
95
+ return [];
96
+ }
97
+ }
98
+ catch (error) {
99
+ console.error(`Pattern matching error for ${pattern.patternId}:`, error);
100
+ return [];
101
+ }
102
+ }
103
+ /**
104
+ * Match literal string pattern
105
+ */
106
+ matchLiteralPattern(pattern, code) {
107
+ const matches = [];
108
+ if (pattern.type !== types_1.PatternType.LITERAL)
109
+ return matches;
110
+ const literalPattern = pattern;
111
+ const searchString = literalPattern.value || '';
112
+ const searchCode = literalPattern.caseSensitive === false ? code.toLowerCase() : code;
113
+ const searchFor = literalPattern.caseSensitive === false ? searchString.toLowerCase() : searchString;
114
+ let index = 0;
115
+ while (index < searchCode.length && matches.length < this.maxMatches) {
116
+ index = searchCode.indexOf(searchFor, index);
117
+ if (index === -1)
118
+ break;
119
+ const line = (0, utils_1.getLineNumber)(code, index);
120
+ const column = (0, utils_1.getColumnNumber)(code, index);
121
+ matches.push({
122
+ pattern,
123
+ matchedText: code.substring(index, index + searchString.length),
124
+ location: {
125
+ filePath: '',
126
+ startLine: line,
127
+ endLine: line,
128
+ startColumn: column,
129
+ endColumn: column + searchString.length
130
+ }
131
+ });
132
+ index += searchString.length;
133
+ }
134
+ return matches;
135
+ }
136
+ }
137
+ exports.PatternMatcher = PatternMatcher;
138
+ // ============================================================================
139
+ // SIMPLE TAINT ANALYZER
140
+ // ============================================================================
141
+ /**
142
+ * Simple taint analyzer for detecting data flows
143
+ */
144
+ class SimpleTaintAnalyzer {
145
+ /**
146
+ * Analyze taint flows in code
147
+ */
148
+ analyze(context, rule) {
149
+ const flows = [];
150
+ if (!rule.taintSources || !rule.taintSinks) {
151
+ return flows;
152
+ }
153
+ // Find all sources
154
+ const sources = (0, utils_1.findTaintSources)(context.content, rule.taintSources, context.language);
155
+ // Find all sinks
156
+ const sinks = (0, utils_1.findTaintSinks)(context.content, rule.taintSinks, context.language);
157
+ // For each source-sink pair, check if there's a potential flow
158
+ for (const sourceMatch of sources) {
159
+ for (const sinkMatch of sinks) {
160
+ // Simple heuristic: if source appears before sink in the same file
161
+ if (sourceMatch.location.startLine <= sinkMatch.location.startLine) {
162
+ // Check for sanitizers between source and sink
163
+ const sanitizers = rule.taintSanitizers
164
+ ? (0, utils_1.findSanitizers)(context.content, sourceMatch.location, sinkMatch.location, rule.taintSanitizers)
165
+ : [];
166
+ const isExploitable = sanitizers.length === 0;
167
+ flows.push({
168
+ source: sourceMatch.source,
169
+ sink: sinkMatch.sink,
170
+ path: [
171
+ {
172
+ name: sourceMatch.matchedText,
173
+ location: sourceMatch.location,
174
+ operation: 'source'
175
+ },
176
+ {
177
+ name: sinkMatch.matchedText,
178
+ location: sinkMatch.location,
179
+ operation: 'sink'
180
+ }
181
+ ],
182
+ sanitizers,
183
+ isExploitable,
184
+ confidence: isExploitable ? types_1.ConfidenceLevel.HIGH : types_1.ConfidenceLevel.MEDIUM
185
+ });
186
+ }
187
+ }
188
+ }
189
+ return flows;
190
+ }
191
+ /**
192
+ * Convert taint flow to data flow trace for reporting
193
+ */
194
+ createDataFlowTrace(flow, code) {
195
+ const sourceSnippet = (0, utils_1.extractSnippet)(code, flow.path[0].location, 1);
196
+ const sinkSnippet = (0, utils_1.extractSnippet)(code, flow.path[flow.path.length - 1].location, 1);
197
+ return {
198
+ source: {
199
+ name: flow.source.name,
200
+ location: flow.path[0].location,
201
+ codeSnippet: sourceSnippet.snippet
202
+ },
203
+ propagation: flow.path.slice(1, -1).map(node => ({
204
+ variable: node.name,
205
+ location: node.location,
206
+ operation: node.operation || 'propagate',
207
+ codeSnippet: (0, utils_1.extractSnippet)(code, node.location, 0).snippet
208
+ })),
209
+ sink: {
210
+ name: flow.sink.name,
211
+ location: flow.path[flow.path.length - 1].location,
212
+ codeSnippet: sinkSnippet.snippet
213
+ },
214
+ sanitized: flow.sanitizers.length > 0,
215
+ sanitizationDetails: flow.sanitizers.length > 0 ? {
216
+ sanitizer: flow.sanitizers[0].name,
217
+ location: flow.path[0].location, // Approximate
218
+ effectiveness: flow.sanitizers[0].effectiveness ?? 80
219
+ } : undefined
220
+ };
221
+ }
222
+ }
223
+ exports.SimpleTaintAnalyzer = SimpleTaintAnalyzer;
224
+ const DEFAULT_OPTIONS = {
225
+ enableTaintAnalysis: true,
226
+ enableAstAnalysis: false,
227
+ enableCfgAnalysis: false,
228
+ timeoutMs: constants_1.LIMITS.RULE_TIMEOUT,
229
+ maxFindings: constants_1.LIMITS.MAX_FINDINGS_PER_FILE,
230
+ minConfidence: types_1.ConfidenceLevel.LOW,
231
+ includeInfo: false,
232
+ excludeTestFiles: false,
233
+ excludeVendorCode: true
234
+ };
235
+ // ============================================================================
236
+ // VULNERABILITY RULE ENGINE
237
+ // ============================================================================
238
+ /**
239
+ * Main vulnerability detection engine
240
+ */
241
+ class VulnerabilityRuleEngine {
242
+ rules;
243
+ patternMatcher;
244
+ taintAnalyzer;
245
+ scoreCalculator;
246
+ engineOptions;
247
+ constructor(rules, options) {
248
+ this.rules = new Map(rules.map(rule => [rule.id, rule]));
249
+ this.patternMatcher = new PatternMatcher();
250
+ this.taintAnalyzer = new SimpleTaintAnalyzer();
251
+ this.scoreCalculator = new scoring_1.VulnerabilityScoreCalculator();
252
+ this.engineOptions = { ...DEFAULT_OPTIONS, ...options };
253
+ }
254
+ /**
255
+ * Analyze code against all enabled rules
256
+ */
257
+ async analyze(context, options) {
258
+ const mergedOptions = { ...this.engineOptions, ...options };
259
+ // Check exclusions
260
+ if (mergedOptions.excludeTestFiles && (0, utils_1.isTestFile)(context.filePath)) {
261
+ return [];
262
+ }
263
+ if (mergedOptions.excludeVendorCode && (0, utils_1.isVendorCode)(context.filePath)) {
264
+ return [];
265
+ }
266
+ // Normalize code
267
+ const normalizedCode = (0, utils_1.normalizeCode)(context.content, context.language);
268
+ const normalizedContext = { ...context, content: normalizedCode };
269
+ // Get applicable rules
270
+ const applicableRules = this.getApplicableRules(context.language);
271
+ const findings = [];
272
+ for (const rule of applicableRules) {
273
+ try {
274
+ const ruleFindings = await this.analyzeWithRule(normalizedContext, rule, mergedOptions);
275
+ findings.push(...ruleFindings);
276
+ if (findings.length >= mergedOptions.maxFindings) {
277
+ break;
278
+ }
279
+ }
280
+ catch (error) {
281
+ console.error(`Error analyzing with rule ${rule.id}:`, error);
282
+ }
283
+ }
284
+ // Sort by severity and score
285
+ findings.sort((a, b) => {
286
+ const severityOrder = {
287
+ [types_1.VulnerabilitySeverity.CRITICAL]: 0,
288
+ [types_1.VulnerabilitySeverity.HIGH]: 1,
289
+ [types_1.VulnerabilitySeverity.MEDIUM]: 2,
290
+ [types_1.VulnerabilitySeverity.LOW]: 3,
291
+ [types_1.VulnerabilitySeverity.INFO]: 4
292
+ };
293
+ const severityDiff = severityOrder[a.severity] - severityOrder[b.severity];
294
+ if (severityDiff !== 0)
295
+ return severityDiff;
296
+ return b.score.score - a.score.score;
297
+ });
298
+ // Deduplicate
299
+ return this.deduplicateFindings(findings);
300
+ }
301
+ /**
302
+ * Analyze code with a specific rule
303
+ */
304
+ async analyzeWithRule(context, rule, options) {
305
+ const findings = [];
306
+ // Pattern matching
307
+ const matches = await this.patternMatcher.matchWithTimeout(context.content, rule.patterns, context.language, options.timeoutMs);
308
+ if (matches.length === 0) {
309
+ return findings;
310
+ }
311
+ // Taint analysis if enabled
312
+ let taintFlows = [];
313
+ if (options.enableTaintAnalysis && (rule.taintSources || rule.taintSinks)) {
314
+ taintFlows = this.taintAnalyzer.analyze(context, rule);
315
+ }
316
+ // Group matches by location to avoid duplicate findings
317
+ const locationGroups = this.groupMatchesByLocation(matches);
318
+ for (const [locationKey, groupMatches] of locationGroups) {
319
+ // Find relevant taint flow for this location
320
+ const relevantFlow = taintFlows.find(flow => flow.path.some(node => this.locationsOverlap(node.location, groupMatches[0].location)));
321
+ // Calculate score
322
+ const score = this.scoreCalculator.calculateScore(rule, groupMatches, context, relevantFlow);
323
+ // Check minimum confidence
324
+ const confidence = relevantFlow
325
+ ? (0, utils_1.adjustConfidenceForTaintFlow)(rule.confidence, true)
326
+ : rule.confidence;
327
+ if (!this.meetsMinConfidence(confidence, options.minConfidence)) {
328
+ continue;
329
+ }
330
+ // Filter out INFO if not requested
331
+ if (!options.includeInfo && score.calculatedSeverity === types_1.VulnerabilitySeverity.INFO) {
332
+ continue;
333
+ }
334
+ // Create finding
335
+ const finding = this.createFinding(rule, groupMatches, context, score, relevantFlow);
336
+ findings.push(finding);
337
+ }
338
+ return findings;
339
+ }
340
+ /**
341
+ * Create a vulnerability finding
342
+ */
343
+ createFinding(rule, matches, context, score, taintFlow) {
344
+ const primaryMatch = matches[0];
345
+ const location = {
346
+ filePath: context.filePath,
347
+ startLine: primaryMatch.location.startLine,
348
+ endLine: primaryMatch.location.endLine,
349
+ startColumn: primaryMatch.location.startColumn,
350
+ endColumn: primaryMatch.location.endColumn
351
+ };
352
+ const { snippet } = (0, utils_1.extractSnippet)(context.content, location, 3);
353
+ // Build data flow trace if taint flow exists
354
+ let dataFlowTrace;
355
+ if (taintFlow) {
356
+ dataFlowTrace = this.taintAnalyzer.createDataFlowTrace(taintFlow, context.content);
357
+ }
358
+ // Determine final confidence
359
+ const confidence = taintFlow
360
+ ? (0, utils_1.adjustConfidenceForTaintFlow)(rule.confidence, true)
361
+ : rule.confidence;
362
+ return {
363
+ id: (0, utils_1.generateFindingId)(rule.id, context.filePath, location.startLine),
364
+ ruleId: rule.id,
365
+ ruleName: rule.name,
366
+ location,
367
+ codeSnippet: snippet,
368
+ highlightedCode: primaryMatch.matchedText,
369
+ vulnerabilityType: rule.vulnerabilityType,
370
+ category: rule.category,
371
+ severity: score.calculatedSeverity,
372
+ confidence,
373
+ score,
374
+ patternMatches: matches,
375
+ taintFlow,
376
+ dataFlowTrace,
377
+ message: this.generateMessage(rule, matches, taintFlow),
378
+ auditAnalysis: this.generateAuditAnalysis(rule, matches, taintFlow, score),
379
+ developerExplanation: this.generateDeveloperExplanation(rule, matches),
380
+ remediation: rule.remediation,
381
+ standards: rule.standards,
382
+ detectedAt: new Date().toISOString(),
383
+ language: context.language,
384
+ isTestCode: context.isTestFile,
385
+ isVendorCode: context.isVendorCode
386
+ };
387
+ }
388
+ /**
389
+ * Generate finding message
390
+ */
391
+ generateMessage(rule, matches, taintFlow) {
392
+ let message = `${rule.name}: ${rule.description}`;
393
+ if (taintFlow && taintFlow.isExploitable) {
394
+ message += ` Confirmed data flow from '${taintFlow.source.name}' to '${taintFlow.sink.name}'.`;
395
+ }
396
+ return message;
397
+ }
398
+ /**
399
+ * Generate detailed audit analysis
400
+ */
401
+ generateAuditAnalysis(rule, matches, taintFlow, score) {
402
+ const parts = [];
403
+ parts.push(`## Vulnerability Analysis: ${rule.name}`);
404
+ parts.push('');
405
+ parts.push(`**Vulnerability Type:** ${rule.vulnerabilityType}`);
406
+ parts.push(`**Category:** ${rule.category}`);
407
+ parts.push(`**Severity:** ${score.calculatedSeverity.toUpperCase()}`);
408
+ parts.push(`**Risk Score:** ${score.score}/100`);
409
+ parts.push('');
410
+ // Standards mapping
411
+ parts.push('### Security Standards');
412
+ if (rule.standards.owasp?.length) {
413
+ parts.push(`**OWASP:** ${rule.standards.owasp.map(o => o.id).join(', ')}`);
414
+ }
415
+ if (rule.standards.cwe?.length) {
416
+ parts.push(`**CWE:** ${rule.standards.cwe.map(c => c.id).join(', ')}`);
417
+ }
418
+ parts.push('');
419
+ // Detection details
420
+ parts.push('### Detection Details');
421
+ parts.push(`**Pattern Matches:** ${matches.length}`);
422
+ if (taintFlow) {
423
+ parts.push('');
424
+ parts.push('### Data Flow Analysis');
425
+ parts.push(`**Source:** ${taintFlow.source.name}`);
426
+ parts.push(`**Sink:** ${taintFlow.sink.name}`);
427
+ parts.push(`**Exploitable:** ${taintFlow.isExploitable ? 'Yes' : 'No'}`);
428
+ if (taintFlow.sanitizers.length > 0) {
429
+ parts.push(`**Sanitizers Applied:** ${taintFlow.sanitizers.map(s => s.name).join(', ')}`);
430
+ }
431
+ }
432
+ parts.push('');
433
+ parts.push('### Impact Assessment');
434
+ if (rule.impact) {
435
+ parts.push(`**Confidentiality:** ${rule.impact.confidentiality}`);
436
+ parts.push(`**Integrity:** ${rule.impact.integrity}`);
437
+ parts.push(`**Availability:** ${rule.impact.availability}`);
438
+ parts.push(`**Technical Impact:** ${rule.impact.technicalImpact}`);
439
+ parts.push(`**Business Impact:** ${rule.impact.businessImpact}`);
440
+ }
441
+ parts.push('');
442
+ parts.push('### Score Breakdown');
443
+ parts.push('```');
444
+ parts.push(score.explanation);
445
+ parts.push('```');
446
+ return parts.join('\n');
447
+ }
448
+ /**
449
+ * Generate developer-friendly explanation
450
+ */
451
+ generateDeveloperExplanation(rule, matches) {
452
+ const parts = [];
453
+ parts.push(`**What's the problem?**`);
454
+ parts.push(rule.description);
455
+ parts.push('');
456
+ parts.push(`**Why is this dangerous?**`);
457
+ if (rule.impact) {
458
+ parts.push(rule.impact.technicalImpact);
459
+ }
460
+ parts.push('');
461
+ parts.push(`**How to fix it:**`);
462
+ parts.push(rule.remediation.summary);
463
+ if (rule.remediation.steps?.length) {
464
+ rule.remediation.steps.forEach((step, i) => {
465
+ parts.push(`${i + 1}. ${step}`);
466
+ });
467
+ }
468
+ if (rule.remediation.secureCodeExample) {
469
+ parts.push('');
470
+ parts.push('**Secure code example:**');
471
+ parts.push('```');
472
+ parts.push(rule.remediation.secureCodeExample);
473
+ parts.push('```');
474
+ }
475
+ return parts.join('\n');
476
+ }
477
+ /**
478
+ * Get rules applicable to a language
479
+ */
480
+ getApplicableRules(language) {
481
+ return Array.from(this.rules.values()).filter(rule => rule.enabled && rule.languages.includes(language));
482
+ }
483
+ /**
484
+ * Get all registered rules
485
+ */
486
+ getRules() {
487
+ return Array.from(this.rules.values());
488
+ }
489
+ /**
490
+ * Get rule by ID
491
+ */
492
+ getRule(id) {
493
+ return this.rules.get(id);
494
+ }
495
+ /**
496
+ * Enable/disable a rule
497
+ */
498
+ setRuleEnabled(id, enabled) {
499
+ const rule = this.rules.get(id);
500
+ if (rule) {
501
+ rule.enabled = enabled;
502
+ }
503
+ }
504
+ /**
505
+ * Add a custom rule
506
+ */
507
+ addRule(rule) {
508
+ this.rules.set(rule.id, rule);
509
+ }
510
+ /**
511
+ * Group matches by location
512
+ */
513
+ groupMatchesByLocation(matches) {
514
+ const groups = new Map();
515
+ for (const match of matches) {
516
+ const key = `${match.location.startLine}:${match.location.startColumn}`;
517
+ const existing = groups.get(key) || [];
518
+ existing.push(match);
519
+ groups.set(key, existing);
520
+ }
521
+ return groups;
522
+ }
523
+ /**
524
+ * Check if two locations overlap
525
+ */
526
+ locationsOverlap(a, b) {
527
+ return a.startLine <= b.endLine && b.startLine <= a.endLine;
528
+ }
529
+ /**
530
+ * Check if confidence meets minimum
531
+ */
532
+ meetsMinConfidence(confidence, minConfidence) {
533
+ const levels = [
534
+ types_1.ConfidenceLevel.TENTATIVE,
535
+ types_1.ConfidenceLevel.LOW,
536
+ types_1.ConfidenceLevel.MEDIUM,
537
+ types_1.ConfidenceLevel.HIGH,
538
+ types_1.ConfidenceLevel.CONFIRMED
539
+ ];
540
+ return levels.indexOf(confidence) >= levels.indexOf(minConfidence);
541
+ }
542
+ /**
543
+ * Deduplicate findings
544
+ */
545
+ deduplicateFindings(findings) {
546
+ const seen = new Set();
547
+ return findings.filter(finding => {
548
+ const key = `${finding.ruleId}:${finding.location.filePath}:${finding.location.startLine}`;
549
+ if (seen.has(key)) {
550
+ return false;
551
+ }
552
+ seen.add(key);
553
+ return true;
554
+ });
555
+ }
556
+ }
557
+ exports.VulnerabilityRuleEngine = VulnerabilityRuleEngine;
558
+ // ============================================================================
559
+ // FACTORY FUNCTIONS
560
+ // ============================================================================
561
+ /**
562
+ * Create default vulnerability engine
563
+ */
564
+ function createDefaultEngine(rules, options) {
565
+ return new VulnerabilityRuleEngine(rules, options);
566
+ }
567
+ /**
568
+ * Quick scan function for simple usage
569
+ */
570
+ async function quickScan(code, filePath, language, rules, options) {
571
+ const engine = createDefaultEngine(rules, options);
572
+ const context = {
573
+ filePath,
574
+ content: code,
575
+ language,
576
+ isTestFile: (0, utils_1.isTestFile)(filePath),
577
+ isVendorCode: (0, utils_1.isVendorCode)(filePath)
578
+ };
579
+ return engine.analyze(context);
580
+ }
581
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rules/vulnerabilities/engine/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAuxBH,kDAKC;AAKD,8BAkBC;AAjzBD,oCAmBkB;AAElB,oCAekB;AAElB,wCAA0D;AAC1D,4CAAsC;AAEtC,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E;;GAEG;AACH,MAAa,cAAc;IACjB,SAAS,CAAS;IAClB,UAAU,CAAS;IAE3B,YAAY,OAAqD;QAC/D,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,kBAAM,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,kBAAM,CAAC,uBAAuB,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CACH,OAAe,EACf,QAAgC,EAChC,QAA2B;QAE3B,MAAM,UAAU,GAAmB,EAAE,CAAC;QAEtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,+BAA+B;YAC/B,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACpE,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YAE5B,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzC,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAAe,EACf,QAAgC,EAChC,QAA2B,EAC3B,OAAe;QAEf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACxD,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,OAA6B,EAC7B,IAAY,EACZ,QAA2B;QAE3B,IAAI,CAAC;YACH,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,mBAAW,CAAC,KAAK;oBACpB,OAAO,IAAA,sBAAc,EAAC,IAAI,EAAE,OAAuB,CAAC,CAAC;gBAEvD,KAAK,mBAAW,CAAC,OAAO;oBACtB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEjD,KAAK,mBAAW,CAAC,GAAG;oBAClB,2CAA2C;oBAC3C,OAAO,EAAE,CAAC;gBAEZ,KAAK,mBAAW,CAAC,KAAK;oBACpB,wCAAwC;oBACxC,OAAO,EAAE,CAAC;gBAEZ,KAAK,mBAAW,CAAC,QAAQ;oBACvB,4CAA4C;oBAC5C,OAAO,EAAE,CAAC;gBAEZ,KAAK,mBAAW,CAAC,GAAG;oBAClB,6CAA6C;oBAC7C,OAAO,EAAE,CAAC;gBAEZ;oBACE,OAAO,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YACzE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,OAA6B,EAC7B,IAAY;QAEZ,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAW,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC;QAEzD,MAAM,cAAc,GAAG,OAAgF,CAAC;QACxG,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAErG,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrE,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,MAAM;YAExB,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE5C,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO;gBACP,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;gBAC/D,QAAQ,EAAE;oBACR,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,MAAM;oBACnB,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM;iBACxC;aACF,CAAC,CAAC;YAEH,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAhJD,wCAgJC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAa,mBAAmB;IAC9B;;OAEG;IACH,OAAO,CACL,OAAwB,EACxB,IAAuB;QAEvB,MAAM,KAAK,GAAgB,EAAE,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAA,wBAAgB,EAC9B,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,YAAY,EACjB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,iBAAiB;QACjB,MAAM,KAAK,GAAG,IAAA,sBAAc,EAC1B,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,UAAU,EACf,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,+DAA+D;QAC/D,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC9B,mEAAmE;gBACnE,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnE,+CAA+C;oBAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;wBACrC,CAAC,CAAC,IAAA,sBAAc,EACZ,OAAO,CAAC,OAAO,EACf,WAAW,CAAC,QAAQ,EACpB,SAAS,CAAC,QAAQ,EAClB,IAAI,CAAC,eAAe,CACrB;wBACH,CAAC,CAAC,EAAE,CAAC;oBAEP,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;oBAE9C,KAAK,CAAC,IAAI,CAAC;wBACT,MAAM,EAAE,WAAW,CAAC,MAAM;wBAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,IAAI,EAAE;4BACJ;gCACE,IAAI,EAAE,WAAW,CAAC,WAAW;gCAC7B,QAAQ,EAAE,WAAW,CAAC,QAAQ;gCAC9B,SAAS,EAAE,QAAQ;6BACpB;4BACD;gCACE,IAAI,EAAE,SAAS,CAAC,WAAW;gCAC3B,QAAQ,EAAE,SAAS,CAAC,QAAQ;gCAC5B,SAAS,EAAE,MAAM;6BAClB;yBACF;wBACD,UAAU;wBACV,aAAa;wBACb,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,CAAC,MAAM;qBAC1E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,mBAAmB,CACjB,IAAe,EACf,IAAY;QAEZ,MAAM,aAAa,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEtF,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;gBAC/B,WAAW,EAAE,aAAa,CAAC,OAAO;aACnC;YACD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/C,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,WAAW;gBACxC,WAAW,EAAE,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO;aAC5D,CAAC,CAAC;YACH,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ;gBAClD,WAAW,EAAE,WAAW,CAAC,OAAO;aACjC;YACD,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACrC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChD,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;gBAClC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,cAAc;gBAC/C,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE;aACtD,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF;AA1GD,kDA0GC;AAmBD,MAAM,eAAe,GAAkB;IACrC,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,SAAS,EAAE,kBAAM,CAAC,YAAY;IAC9B,WAAW,EAAE,kBAAM,CAAC,qBAAqB;IACzC,aAAa,EAAE,uBAAe,CAAC,GAAG;IAClC,WAAW,EAAE,KAAK;IAClB,gBAAgB,EAAE,KAAK;IACvB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;GAEG;AACH,MAAa,uBAAuB;IAC1B,KAAK,CAAiC;IACtC,cAAc,CAAiB;IAC/B,aAAa,CAAsB;IACnC,eAAe,CAA+B;IAC9C,aAAa,CAAgB;IAErC,YACE,KAA0B,EAC1B,OAAgC;QAEhC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,sCAA4B,EAAE,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAwB,EACxB,OAAyB;QAEzB,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAE5D,mBAAmB;QACnB,IAAI,aAAa,CAAC,gBAAgB,IAAI,IAAA,kBAAU,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,aAAa,CAAC,iBAAiB,IAAI,IAAA,oBAAY,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,iBAAiB;QACjB,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAElE,uBAAuB;QACvB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElE,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAC7C,iBAAiB,EACjB,IAAI,EACJ,aAAa,CACd,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;gBAE/B,IAAI,QAAQ,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;oBACjD,MAAM;gBACR,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,aAAa,GAAG;gBACpB,CAAC,6BAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,CAAC,6BAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,CAAC,6BAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,CAAC,6BAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,CAAC,6BAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;aAChC,CAAC;YAEF,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3E,IAAI,YAAY,KAAK,CAAC;gBAAE,OAAO,YAAY,CAAC;YAE5C,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,OAAwB,EACxB,IAAuB,EACvB,OAAsB;QAEtB,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CACxD,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,SAAS,CAClB,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,4BAA4B;QAC5B,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1E,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,wDAAwD;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE5D,KAAK,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC;YACzD,6CAA6C;YAC7C,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC/D,CACF,CAAC;YAEF,kBAAkB;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAC/C,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,YAAY,CACb,CAAC;YAEF,2BAA2B;YAC3B,MAAM,UAAU,GAAG,YAAY;gBAC7B,CAAC,CAAC,IAAA,oCAA4B,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YAEpB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChE,SAAS;YACX,CAAC;YAED,mCAAmC;YACnC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,kBAAkB,KAAK,6BAAqB,CAAC,IAAI,EAAE,CAAC;gBACpF,SAAS;YACX,CAAC;YAED,iBAAiB;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAChC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,KAAK,EACL,YAAY,CACb,CAAC;YAEF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,IAAuB,EACvB,OAAuB,EACvB,OAAwB,EACxB,KAAyB,EACzB,SAAqB;QAErB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAmB;YAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS;YAC1C,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO;YACtC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW;YAC9C,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS;SAC3C,CAAC;QAEF,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,sBAAc,EAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEjE,6CAA6C;QAC7C,IAAI,aAAwC,CAAC;QAC7C,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACpD,SAAS,EACT,OAAO,CAAC,OAAO,CAChB,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,UAAU,GAAG,SAAS;YAC1B,CAAC,CAAC,IAAA,oCAA4B,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;YACrD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAEpB,OAAO;YACL,EAAE,EAAE,IAAA,yBAAiB,EAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC;YACpE,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ;YACR,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,YAAY,CAAC,WAAW;YACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,KAAK,CAAC,kBAAkB;YAClC,UAAU;YACV,KAAK;YACL,cAAc,EAAE,OAAO;YACvB,SAAS;YACT,aAAa;YACb,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;YACvD,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;YAC1E,oBAAoB,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC;YACtE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,IAAuB,EACvB,OAAuB,EACvB,SAAqB;QAErB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,SAAS,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,IAAI,8BAA8B,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjG,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,IAAuB,EACvB,OAAuB,EACvB,SAAgC,EAChC,KAAyB;QAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,oBAAoB;QACpB,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,oBAAoB;QACpB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAErD,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,2BAA2B,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,4BAA4B,CAClC,IAAuB,EACvB,OAAuB;QAEvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAA2B;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACnD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU,EAAE,OAAgB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAuB;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,OAAuB;QAEvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEjD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,CAAiB,EAAE,CAAiB;QAC3D,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,UAA2B,EAC3B,aAA8B;QAE9B,MAAM,MAAM,GAAG;YACb,uBAAe,CAAC,SAAS;YACzB,uBAAe,CAAC,GAAG;YACnB,uBAAe,CAAC,MAAM;YACtB,uBAAe,CAAC,IAAI;YACpB,uBAAe,CAAC,SAAS;SAC1B,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,QAAgC;QAEhC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC/B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnbD,0DAmbC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,mBAAmB,CACjC,KAA0B,EAC1B,OAAgC;IAEhC,OAAO,IAAI,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,QAAgB,EAChB,QAA2B,EAC3B,KAA0B,EAC1B,OAAgC;IAEhC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAoB;QAC/B,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,UAAU,EAAE,IAAA,kBAAU,EAAC,QAAQ,CAAC;QAChC,YAAY,EAAE,IAAA,oBAAY,EAAC,QAAQ,CAAC;KACrC,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}