agent-web-interface 4.3.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/dist/src/browser/browser-session-config.d.ts +33 -0
  2. package/dist/src/browser/browser-session-config.d.ts.map +1 -0
  3. package/dist/src/browser/browser-session-config.js +24 -0
  4. package/dist/src/browser/browser-session-config.js.map +1 -0
  5. package/dist/src/browser/connection-utils.d.ts +48 -0
  6. package/dist/src/browser/connection-utils.d.ts.map +1 -0
  7. package/dist/src/browser/connection-utils.js +129 -0
  8. package/dist/src/browser/connection-utils.js.map +1 -0
  9. package/dist/src/browser/ensure-browser.d.ts +12 -27
  10. package/dist/src/browser/ensure-browser.d.ts.map +1 -1
  11. package/dist/src/browser/ensure-browser.js +104 -37
  12. package/dist/src/browser/ensure-browser.js.map +1 -1
  13. package/dist/src/browser/index.d.ts +4 -1
  14. package/dist/src/browser/index.d.ts.map +1 -1
  15. package/dist/src/browser/index.js +3 -1
  16. package/dist/src/browser/index.js.map +1 -1
  17. package/dist/src/browser/session-manager.d.ts +21 -89
  18. package/dist/src/browser/session-manager.d.ts.map +1 -1
  19. package/dist/src/browser/session-manager.js +122 -132
  20. package/dist/src/browser/session-manager.js.map +1 -1
  21. package/dist/src/browser/session-manager.types.d.ts +102 -0
  22. package/dist/src/browser/session-manager.types.d.ts.map +1 -0
  23. package/dist/src/browser/session-manager.types.js +11 -0
  24. package/dist/src/browser/session-manager.types.js.map +1 -0
  25. package/dist/src/cli/args.d.ts +12 -18
  26. package/dist/src/cli/args.d.ts.map +1 -1
  27. package/dist/src/cli/args.js +35 -40
  28. package/dist/src/cli/args.js.map +1 -1
  29. package/dist/src/form/constraint-extraction.d.ts +36 -0
  30. package/dist/src/form/constraint-extraction.d.ts.map +1 -0
  31. package/dist/src/form/constraint-extraction.js +117 -0
  32. package/dist/src/form/constraint-extraction.js.map +1 -0
  33. package/dist/src/form/field-extractor.d.ts.map +1 -1
  34. package/dist/src/form/field-extractor.js +16 -450
  35. package/dist/src/form/field-extractor.js.map +1 -1
  36. package/dist/src/form/field-state-extractor.d.ts +22 -0
  37. package/dist/src/form/field-state-extractor.d.ts.map +1 -0
  38. package/dist/src/form/field-state-extractor.js +55 -0
  39. package/dist/src/form/field-state-extractor.js.map +1 -0
  40. package/dist/src/form/form-actions.d.ts +45 -0
  41. package/dist/src/form/form-actions.d.ts.map +1 -0
  42. package/dist/src/form/form-actions.js +108 -0
  43. package/dist/src/form/form-actions.js.map +1 -0
  44. package/dist/src/form/form-detector.d.ts +0 -36
  45. package/dist/src/form/form-detector.d.ts.map +1 -1
  46. package/dist/src/form/form-detector.js +11 -376
  47. package/dist/src/form/form-detector.js.map +1 -1
  48. package/dist/src/form/form-state.d.ts.map +1 -1
  49. package/dist/src/form/form-state.js +16 -4
  50. package/dist/src/form/form-state.js.map +1 -1
  51. package/dist/src/form/input-clustering.d.ts +15 -0
  52. package/dist/src/form/input-clustering.d.ts.map +1 -0
  53. package/dist/src/form/input-clustering.js +61 -0
  54. package/dist/src/form/input-clustering.js.map +1 -0
  55. package/dist/src/form/intent-inference.d.ts +28 -0
  56. package/dist/src/form/intent-inference.d.ts.map +1 -0
  57. package/dist/src/form/intent-inference.js +137 -0
  58. package/dist/src/form/intent-inference.js.map +1 -0
  59. package/dist/src/form/purpose-inference.d.ts +50 -0
  60. package/dist/src/form/purpose-inference.d.ts.map +1 -0
  61. package/dist/src/form/purpose-inference.js +313 -0
  62. package/dist/src/form/purpose-inference.js.map +1 -0
  63. package/dist/src/form/submit-detection.d.ts +36 -0
  64. package/dist/src/form/submit-detection.d.ts.map +1 -0
  65. package/dist/src/form/submit-detection.js +101 -0
  66. package/dist/src/form/submit-detection.js.map +1 -0
  67. package/dist/src/form/types.d.ts +2 -2
  68. package/dist/src/gateway/http-gateway.d.ts +56 -0
  69. package/dist/src/gateway/http-gateway.d.ts.map +1 -0
  70. package/dist/src/gateway/http-gateway.js +229 -0
  71. package/dist/src/gateway/http-gateway.js.map +1 -0
  72. package/dist/src/gateway/json-rpc-errors.d.ts +6 -0
  73. package/dist/src/gateway/json-rpc-errors.d.ts.map +1 -0
  74. package/dist/src/gateway/json-rpc-errors.js +11 -0
  75. package/dist/src/gateway/json-rpc-errors.js.map +1 -0
  76. package/dist/src/gateway/session-router.d.ts +80 -0
  77. package/dist/src/gateway/session-router.d.ts.map +1 -0
  78. package/dist/src/gateway/session-router.js +177 -0
  79. package/dist/src/gateway/session-router.js.map +1 -0
  80. package/dist/src/http-entry.d.ts +20 -0
  81. package/dist/src/http-entry.d.ts.map +1 -0
  82. package/dist/src/http-entry.js +112 -0
  83. package/dist/src/http-entry.js.map +1 -0
  84. package/dist/src/index.d.ts +1 -10
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/index.js +25 -227
  87. package/dist/src/index.js.map +1 -1
  88. package/dist/src/lib/text-utils.d.ts +0 -24
  89. package/dist/src/lib/text-utils.d.ts.map +1 -1
  90. package/dist/src/lib/text-utils.js +2 -38
  91. package/dist/src/lib/text-utils.js.map +1 -1
  92. package/dist/src/observation/eid-linker.d.ts.map +1 -1
  93. package/dist/src/observation/eid-linker.js +1 -21
  94. package/dist/src/observation/eid-linker.js.map +1 -1
  95. package/dist/src/observation/observation-accumulator.d.ts +1 -1
  96. package/dist/src/observation/observation-accumulator.js +1 -1
  97. package/dist/src/observation/observer-script.d.ts +1 -1
  98. package/dist/src/observation/observer-script.d.ts.map +1 -1
  99. package/dist/src/observation/observer-script.js +129 -7
  100. package/dist/src/observation/observer-script.js.map +1 -1
  101. package/dist/src/query/disambiguation.d.ts +18 -0
  102. package/dist/src/query/disambiguation.d.ts.map +1 -0
  103. package/dist/src/query/disambiguation.js +123 -0
  104. package/dist/src/query/disambiguation.js.map +1 -0
  105. package/dist/src/query/fuzzy-match.d.ts +17 -0
  106. package/dist/src/query/fuzzy-match.d.ts.map +1 -0
  107. package/dist/src/query/fuzzy-match.js +34 -0
  108. package/dist/src/query/fuzzy-match.js.map +1 -0
  109. package/dist/src/query/index.d.ts +3 -0
  110. package/dist/src/query/index.d.ts.map +1 -1
  111. package/dist/src/query/index.js +6 -0
  112. package/dist/src/query/index.js.map +1 -1
  113. package/dist/src/query/query-engine.d.ts +0 -35
  114. package/dist/src/query/query-engine.d.ts.map +1 -1
  115. package/dist/src/query/query-engine.js +9 -309
  116. package/dist/src/query/query-engine.js.map +1 -1
  117. package/dist/src/query/scoring.d.ts +52 -0
  118. package/dist/src/query/scoring.d.ts.map +1 -0
  119. package/dist/src/query/scoring.js +162 -0
  120. package/dist/src/query/scoring.js.map +1 -0
  121. package/dist/src/server/index.d.ts +0 -1
  122. package/dist/src/server/index.d.ts.map +1 -1
  123. package/dist/src/server/index.js +0 -1
  124. package/dist/src/server/index.js.map +1 -1
  125. package/dist/src/server/mcp-server.d.ts +6 -2
  126. package/dist/src/server/mcp-server.d.ts.map +1 -1
  127. package/dist/src/server/mcp-server.js +3 -91
  128. package/dist/src/server/mcp-server.js.map +1 -1
  129. package/dist/src/server/server-config.d.ts +4 -20
  130. package/dist/src/server/server-config.d.ts.map +1 -1
  131. package/dist/src/server/server-config.js +6 -50
  132. package/dist/src/server/server-config.js.map +1 -1
  133. package/dist/src/server/tool-registrar.types.d.ts +25 -0
  134. package/dist/src/server/tool-registrar.types.d.ts.map +1 -0
  135. package/dist/src/server/tool-registrar.types.js +10 -0
  136. package/dist/src/server/tool-registrar.types.js.map +1 -0
  137. package/dist/src/server/tool-result-handler.d.ts +61 -0
  138. package/dist/src/server/tool-result-handler.d.ts.map +1 -0
  139. package/dist/src/server/tool-result-handler.js +137 -0
  140. package/dist/src/server/tool-result-handler.js.map +1 -0
  141. package/dist/src/session/session-controller.d.ts +123 -0
  142. package/dist/src/session/session-controller.d.ts.map +1 -0
  143. package/dist/src/session/session-controller.js +273 -0
  144. package/dist/src/session/session-controller.js.map +1 -0
  145. package/dist/src/shared/services/index.d.ts +0 -2
  146. package/dist/src/shared/services/index.d.ts.map +1 -1
  147. package/dist/src/shared/services/index.js +0 -2
  148. package/dist/src/shared/services/index.js.map +1 -1
  149. package/dist/src/shared/version.d.ts +10 -0
  150. package/dist/src/shared/version.d.ts.map +1 -0
  151. package/dist/src/shared/version.js +32 -0
  152. package/dist/src/shared/version.js.map +1 -0
  153. package/dist/src/snapshot/element-resolver.d.ts +27 -15
  154. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  155. package/dist/src/snapshot/element-resolver.js +196 -91
  156. package/dist/src/snapshot/element-resolver.js.map +1 -1
  157. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -1
  158. package/dist/src/snapshot/extractors/attribute-extractor.js +4 -0
  159. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -1
  160. package/dist/src/snapshot/extractors/ax-extractor.d.ts +1 -1
  161. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -1
  162. package/dist/src/snapshot/extractors/ax-extractor.js +4 -1
  163. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -1
  164. package/dist/src/snapshot/extractors/index.d.ts +1 -1
  165. package/dist/src/snapshot/extractors/index.d.ts.map +1 -1
  166. package/dist/src/snapshot/extractors/index.js +1 -1
  167. package/dist/src/snapshot/extractors/index.js.map +1 -1
  168. package/dist/src/snapshot/extractors/layout-extractor.d.ts +9 -7
  169. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -1
  170. package/dist/src/snapshot/extractors/layout-extractor.js +34 -19
  171. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -1
  172. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -1
  173. package/dist/src/snapshot/extractors/region-resolver.js +8 -0
  174. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -1
  175. package/dist/src/snapshot/extractors/state-extractor.d.ts +2 -2
  176. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -1
  177. package/dist/src/snapshot/extractors/state-extractor.js +22 -2
  178. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -1
  179. package/dist/src/snapshot/extractors/types.d.ts +14 -0
  180. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  181. package/dist/src/snapshot/extractors/types.js +16 -0
  182. package/dist/src/snapshot/extractors/types.js.map +1 -1
  183. package/dist/src/snapshot/frame-context.d.ts +68 -0
  184. package/dist/src/snapshot/frame-context.d.ts.map +1 -0
  185. package/dist/src/snapshot/frame-context.js +131 -0
  186. package/dist/src/snapshot/frame-context.js.map +1 -0
  187. package/dist/src/snapshot/heading-index.d.ts +28 -0
  188. package/dist/src/snapshot/heading-index.d.ts.map +1 -0
  189. package/dist/src/snapshot/heading-index.js +108 -0
  190. package/dist/src/snapshot/heading-index.js.map +1 -0
  191. package/dist/src/snapshot/index.d.ts +5 -3
  192. package/dist/src/snapshot/index.d.ts.map +1 -1
  193. package/dist/src/snapshot/index.js +3 -2
  194. package/dist/src/snapshot/index.js.map +1 -1
  195. package/dist/src/snapshot/kind-mapping.d.ts +30 -0
  196. package/dist/src/snapshot/kind-mapping.d.ts.map +1 -0
  197. package/dist/src/snapshot/kind-mapping.js +114 -0
  198. package/dist/src/snapshot/kind-mapping.js.map +1 -0
  199. package/dist/src/snapshot/node-filter.d.ts +31 -0
  200. package/dist/src/snapshot/node-filter.d.ts.map +1 -0
  201. package/dist/src/snapshot/node-filter.js +137 -0
  202. package/dist/src/snapshot/node-filter.js.map +1 -0
  203. package/dist/src/snapshot/node-synthesizer.d.ts +62 -0
  204. package/dist/src/snapshot/node-synthesizer.d.ts.map +1 -0
  205. package/dist/src/snapshot/node-synthesizer.js +185 -0
  206. package/dist/src/snapshot/node-synthesizer.js.map +1 -0
  207. package/dist/src/snapshot/snapshot-compiler.d.ts +2 -36
  208. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  209. package/dist/src/snapshot/snapshot-compiler.js +40 -549
  210. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  211. package/dist/src/snapshot/snapshot.types.d.ts +17 -3
  212. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  213. package/dist/src/snapshot/snapshot.types.js +8 -0
  214. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  215. package/dist/src/state/actionables-filter.d.ts +5 -0
  216. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  217. package/dist/src/state/actionables-filter.js +28 -6
  218. package/dist/src/state/actionables-filter.js.map +1 -1
  219. package/dist/src/state/atoms-extractor.d.ts.map +1 -1
  220. package/dist/src/state/atoms-extractor.js +3 -23
  221. package/dist/src/state/atoms-extractor.js.map +1 -1
  222. package/dist/src/state/diff-engine.d.ts.map +1 -1
  223. package/dist/src/state/diff-engine.js +9 -36
  224. package/dist/src/state/diff-engine.js.map +1 -1
  225. package/dist/src/state/element-identity.d.ts +3 -6
  226. package/dist/src/state/element-identity.d.ts.map +1 -1
  227. package/dist/src/state/element-identity.js +10 -7
  228. package/dist/src/state/element-identity.js.map +1 -1
  229. package/dist/src/state/element-ref.types.d.ts +5 -27
  230. package/dist/src/state/element-ref.types.d.ts.map +1 -1
  231. package/dist/src/state/element-registry.d.ts.map +1 -1
  232. package/dist/src/state/element-registry.js +6 -4
  233. package/dist/src/state/element-registry.js.map +1 -1
  234. package/dist/src/state/hash-utils.d.ts +24 -0
  235. package/dist/src/state/hash-utils.d.ts.map +1 -0
  236. package/dist/src/state/hash-utils.js +41 -0
  237. package/dist/src/state/hash-utils.js.map +1 -0
  238. package/dist/src/state/layer-detector.d.ts.map +1 -1
  239. package/dist/src/state/layer-detector.js +15 -286
  240. package/dist/src/state/layer-detector.js.map +1 -1
  241. package/dist/src/state/layer-detectors/drawer-detector.d.ts +32 -0
  242. package/dist/src/state/layer-detectors/drawer-detector.d.ts.map +1 -0
  243. package/dist/src/state/layer-detectors/drawer-detector.js +96 -0
  244. package/dist/src/state/layer-detectors/drawer-detector.js.map +1 -0
  245. package/dist/src/state/layer-detectors/index.d.ts +10 -0
  246. package/dist/src/state/layer-detectors/index.d.ts.map +1 -0
  247. package/dist/src/state/layer-detectors/index.js +10 -0
  248. package/dist/src/state/layer-detectors/index.js.map +1 -0
  249. package/dist/src/state/layer-detectors/modal-detector.d.ts +30 -0
  250. package/dist/src/state/layer-detectors/modal-detector.d.ts.map +1 -0
  251. package/dist/src/state/layer-detectors/modal-detector.js +127 -0
  252. package/dist/src/state/layer-detectors/modal-detector.js.map +1 -0
  253. package/dist/src/state/layer-detectors/popover-detector.d.ts +20 -0
  254. package/dist/src/state/layer-detectors/popover-detector.d.ts.map +1 -0
  255. package/dist/src/state/layer-detectors/popover-detector.js +76 -0
  256. package/dist/src/state/layer-detectors/popover-detector.js.map +1 -0
  257. package/dist/src/state/layer-detectors/toast-detector.d.ts +24 -0
  258. package/dist/src/state/layer-detectors/toast-detector.d.ts.map +1 -0
  259. package/dist/src/state/layer-detectors/toast-detector.js +48 -0
  260. package/dist/src/state/layer-detectors/toast-detector.js.map +1 -0
  261. package/dist/src/state/region-mapping.d.ts +13 -0
  262. package/dist/src/state/region-mapping.d.ts.map +1 -0
  263. package/dist/src/state/region-mapping.js +25 -0
  264. package/dist/src/state/region-mapping.js.map +1 -0
  265. package/dist/src/state/state-manager.d.ts.map +1 -1
  266. package/dist/src/state/state-manager.js +11 -193
  267. package/dist/src/state/state-manager.js.map +1 -1
  268. package/dist/src/state/state-renderer.d.ts.map +1 -1
  269. package/dist/src/state/state-renderer.js +17 -3
  270. package/dist/src/state/state-renderer.js.map +1 -1
  271. package/dist/src/state/types.d.ts +10 -5
  272. package/dist/src/state/types.d.ts.map +1 -1
  273. package/dist/src/state/url-sanitization.d.ts +22 -0
  274. package/dist/src/state/url-sanitization.d.ts.map +1 -0
  275. package/dist/src/state/url-sanitization.js +76 -0
  276. package/dist/src/state/url-sanitization.js.map +1 -0
  277. package/dist/src/state/value-masking.d.ts +36 -0
  278. package/dist/src/state/value-masking.d.ts.map +1 -0
  279. package/dist/src/state/value-masking.js +86 -0
  280. package/dist/src/state/value-masking.js.map +1 -0
  281. package/dist/src/tools/action-context.d.ts +55 -0
  282. package/dist/src/tools/action-context.d.ts.map +1 -0
  283. package/dist/src/tools/action-context.js +69 -0
  284. package/dist/src/tools/action-context.js.map +1 -0
  285. package/dist/src/tools/action-stabilization.d.ts +48 -0
  286. package/dist/src/tools/action-stabilization.d.ts.map +1 -0
  287. package/dist/src/tools/action-stabilization.js +93 -0
  288. package/dist/src/tools/action-stabilization.js.map +1 -0
  289. package/dist/src/tools/browser-tools.d.ts +9 -167
  290. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  291. package/dist/src/tools/browser-tools.js +15 -651
  292. package/dist/src/tools/browser-tools.js.map +1 -1
  293. package/dist/src/tools/canvas-tools.d.ts +2 -1
  294. package/dist/src/tools/canvas-tools.d.ts.map +1 -1
  295. package/dist/src/tools/canvas-tools.js +5 -7
  296. package/dist/src/tools/canvas-tools.js.map +1 -1
  297. package/dist/src/tools/effect-tracker.d.ts +25 -0
  298. package/dist/src/tools/effect-tracker.d.ts.map +1 -0
  299. package/dist/src/tools/effect-tracker.js +69 -0
  300. package/dist/src/tools/effect-tracker.js.map +1 -0
  301. package/dist/src/tools/errors.d.ts +2 -34
  302. package/dist/src/tools/errors.d.ts.map +1 -1
  303. package/dist/src/tools/errors.js +1 -44
  304. package/dist/src/tools/errors.js.map +1 -1
  305. package/dist/src/tools/execute-action.d.ts +5 -34
  306. package/dist/src/tools/execute-action.d.ts.map +1 -1
  307. package/dist/src/tools/execute-action.js +37 -297
  308. package/dist/src/tools/execute-action.js.map +1 -1
  309. package/dist/src/tools/form-tools.d.ts +5 -10
  310. package/dist/src/tools/form-tools.d.ts.map +1 -1
  311. package/dist/src/tools/form-tools.js +42 -22
  312. package/dist/src/tools/form-tools.js.map +1 -1
  313. package/dist/src/tools/index.d.ts +6 -6
  314. package/dist/src/tools/index.d.ts.map +1 -1
  315. package/dist/src/tools/index.js +16 -17
  316. package/dist/src/tools/index.js.map +1 -1
  317. package/dist/src/tools/interaction-tools.d.ts +47 -0
  318. package/dist/src/tools/interaction-tools.d.ts.map +1 -0
  319. package/dist/src/tools/interaction-tools.js +135 -0
  320. package/dist/src/tools/interaction-tools.js.map +1 -0
  321. package/dist/src/tools/navigation-detection.d.ts +31 -0
  322. package/dist/src/tools/navigation-detection.d.ts.map +1 -0
  323. package/dist/src/tools/navigation-detection.js +46 -0
  324. package/dist/src/tools/navigation-detection.js.map +1 -0
  325. package/dist/src/tools/navigation-tools.d.ts +51 -0
  326. package/dist/src/tools/navigation-tools.d.ts.map +1 -0
  327. package/dist/src/tools/navigation-tools.js +171 -0
  328. package/dist/src/tools/navigation-tools.js.map +1 -0
  329. package/dist/src/tools/observation-tools.d.ts +54 -0
  330. package/dist/src/tools/observation-tools.d.ts.map +1 -0
  331. package/dist/src/tools/observation-tools.js +243 -0
  332. package/dist/src/tools/observation-tools.js.map +1 -0
  333. package/dist/src/tools/readability-tools.d.ts +16 -0
  334. package/dist/src/tools/readability-tools.d.ts.map +1 -0
  335. package/dist/src/tools/readability-tools.js +45 -0
  336. package/dist/src/tools/readability-tools.js.map +1 -0
  337. package/dist/src/tools/response-builder.d.ts +20 -32
  338. package/dist/src/tools/response-builder.d.ts.map +1 -1
  339. package/dist/src/tools/response-builder.js +32 -48
  340. package/dist/src/tools/response-builder.js.map +1 -1
  341. package/dist/src/tools/stale-element-retry.d.ts +37 -0
  342. package/dist/src/tools/stale-element-retry.d.ts.map +1 -0
  343. package/dist/src/tools/stale-element-retry.js +103 -0
  344. package/dist/src/tools/stale-element-retry.js.map +1 -0
  345. package/dist/src/tools/tool-context.d.ts +4 -36
  346. package/dist/src/tools/tool-context.d.ts.map +1 -1
  347. package/dist/src/tools/tool-context.js +6 -75
  348. package/dist/src/tools/tool-context.js.map +1 -1
  349. package/dist/src/tools/tool-context.types.d.ts +141 -0
  350. package/dist/src/tools/tool-context.types.d.ts.map +1 -0
  351. package/dist/src/tools/tool-context.types.js +11 -0
  352. package/dist/src/tools/tool-context.types.js.map +1 -0
  353. package/dist/src/tools/tool-registration.d.ts +25 -0
  354. package/dist/src/tools/tool-registration.d.ts.map +1 -0
  355. package/dist/src/tools/tool-registration.js +180 -0
  356. package/dist/src/tools/tool-registration.js.map +1 -0
  357. package/dist/src/tools/tool-schemas.d.ts +176 -1950
  358. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  359. package/dist/src/tools/tool-schemas.js +80 -320
  360. package/dist/src/tools/tool-schemas.js.map +1 -1
  361. package/dist/src/tools/viewport-tools.d.ts +37 -0
  362. package/dist/src/tools/viewport-tools.d.ts.map +1 -0
  363. package/dist/src/tools/viewport-tools.js +101 -0
  364. package/dist/src/tools/viewport-tools.js.map +1 -0
  365. package/dist/src/worker/chrome-worker-process.d.ts +4 -0
  366. package/dist/src/worker/chrome-worker-process.d.ts.map +1 -1
  367. package/dist/src/worker/chrome-worker-process.js +1 -1
  368. package/dist/src/worker/chrome-worker-process.js.map +1 -1
  369. package/package.json +7 -3
  370. package/dist/src/factpack/action-selector.d.ts +0 -36
  371. package/dist/src/factpack/action-selector.d.ts.map +0 -1
  372. package/dist/src/factpack/action-selector.js +0 -367
  373. package/dist/src/factpack/action-selector.js.map +0 -1
  374. package/dist/src/factpack/dialog-detector.d.ts +0 -19
  375. package/dist/src/factpack/dialog-detector.d.ts.map +0 -1
  376. package/dist/src/factpack/dialog-detector.js +0 -354
  377. package/dist/src/factpack/dialog-detector.js.map +0 -1
  378. package/dist/src/factpack/form-detector.d.ts +0 -28
  379. package/dist/src/factpack/form-detector.d.ts.map +0 -1
  380. package/dist/src/factpack/form-detector.js +0 -555
  381. package/dist/src/factpack/form-detector.js.map +0 -1
  382. package/dist/src/factpack/index.d.ts +0 -32
  383. package/dist/src/factpack/index.d.ts.map +0 -1
  384. package/dist/src/factpack/index.js +0 -73
  385. package/dist/src/factpack/index.js.map +0 -1
  386. package/dist/src/factpack/page-classifier.d.ts +0 -22
  387. package/dist/src/factpack/page-classifier.d.ts.map +0 -1
  388. package/dist/src/factpack/page-classifier.js +0 -526
  389. package/dist/src/factpack/page-classifier.js.map +0 -1
  390. package/dist/src/factpack/types.d.ts +0 -307
  391. package/dist/src/factpack/types.d.ts.map +0 -1
  392. package/dist/src/factpack/types.js +0 -12
  393. package/dist/src/factpack/types.js.map +0 -1
  394. package/dist/src/lib/constants.d.ts +0 -27
  395. package/dist/src/lib/constants.d.ts.map +0 -1
  396. package/dist/src/lib/constants.js +0 -63
  397. package/dist/src/lib/constants.js.map +0 -1
  398. package/dist/src/lib/index.d.ts +0 -12
  399. package/dist/src/lib/index.d.ts.map +0 -1
  400. package/dist/src/lib/index.js +0 -17
  401. package/dist/src/lib/index.js.map +0 -1
  402. package/dist/src/lib/regions.d.ts +0 -29
  403. package/dist/src/lib/regions.d.ts.map +0 -1
  404. package/dist/src/lib/regions.js +0 -93
  405. package/dist/src/lib/regions.js.map +0 -1
  406. package/dist/src/lib/scoring.d.ts +0 -47
  407. package/dist/src/lib/scoring.d.ts.map +0 -1
  408. package/dist/src/lib/scoring.js +0 -79
  409. package/dist/src/lib/scoring.js.map +0 -1
  410. package/dist/src/lib/selectors.d.ts +0 -42
  411. package/dist/src/lib/selectors.d.ts.map +0 -1
  412. package/dist/src/lib/selectors.js +0 -138
  413. package/dist/src/lib/selectors.js.map +0 -1
  414. package/dist/src/renderer/budget-manager.d.ts +0 -46
  415. package/dist/src/renderer/budget-manager.d.ts.map +0 -1
  416. package/dist/src/renderer/budget-manager.js +0 -133
  417. package/dist/src/renderer/budget-manager.js.map +0 -1
  418. package/dist/src/renderer/constants.d.ts +0 -38
  419. package/dist/src/renderer/constants.d.ts.map +0 -1
  420. package/dist/src/renderer/constants.js +0 -29
  421. package/dist/src/renderer/constants.js.map +0 -1
  422. package/dist/src/renderer/index.d.ts +0 -12
  423. package/dist/src/renderer/index.d.ts.map +0 -1
  424. package/dist/src/renderer/index.js +0 -16
  425. package/dist/src/renderer/index.js.map +0 -1
  426. package/dist/src/renderer/section-renderers.d.ts +0 -42
  427. package/dist/src/renderer/section-renderers.d.ts.map +0 -1
  428. package/dist/src/renderer/section-renderers.js +0 -252
  429. package/dist/src/renderer/section-renderers.js.map +0 -1
  430. package/dist/src/renderer/token-counter.d.ts +0 -45
  431. package/dist/src/renderer/token-counter.d.ts.map +0 -1
  432. package/dist/src/renderer/token-counter.js +0 -65
  433. package/dist/src/renderer/token-counter.js.map +0 -1
  434. package/dist/src/renderer/types.d.ts +0 -71
  435. package/dist/src/renderer/types.d.ts.map +0 -1
  436. package/dist/src/renderer/types.js +0 -7
  437. package/dist/src/renderer/types.js.map +0 -1
  438. package/dist/src/renderer/xml-renderer.d.ts +0 -42
  439. package/dist/src/renderer/xml-renderer.d.ts.map +0 -1
  440. package/dist/src/renderer/xml-renderer.js +0 -103
  441. package/dist/src/renderer/xml-renderer.js.map +0 -1
  442. package/dist/src/server/session-store.d.ts +0 -163
  443. package/dist/src/server/session-store.d.ts.map +0 -1
  444. package/dist/src/server/session-store.js +0 -248
  445. package/dist/src/server/session-store.js.map +0 -1
  446. package/dist/src/session/session-worker-binding.d.ts +0 -57
  447. package/dist/src/session/session-worker-binding.d.ts.map +0 -1
  448. package/dist/src/session/session-worker-binding.js +0 -109
  449. package/dist/src/session/session-worker-binding.js.map +0 -1
  450. package/dist/src/shared/services/dom-transformer.service.d.ts +0 -71
  451. package/dist/src/shared/services/dom-transformer.service.d.ts.map +0 -1
  452. package/dist/src/shared/services/dom-transformer.service.js +0 -190
  453. package/dist/src/shared/services/dom-transformer.service.js.map +0 -1
  454. package/dist/src/shared/services/selector-builder.service.d.ts +0 -53
  455. package/dist/src/shared/services/selector-builder.service.d.ts.map +0 -1
  456. package/dist/src/shared/services/selector-builder.service.js +0 -240
  457. package/dist/src/shared/services/selector-builder.service.js.map +0 -1
  458. package/dist/src/state/constants.d.ts +0 -125
  459. package/dist/src/state/constants.d.ts.map +0 -1
  460. package/dist/src/state/constants.js +0 -131
  461. package/dist/src/state/constants.js.map +0 -1
@@ -1,73 +0,0 @@
1
- /**
2
- * FactPack Module
3
- *
4
- * Extracts higher-level semantic facts from compiled BaseSnapshot.
5
- *
6
- * Design: Generic First, Specific Second
7
- * - All extractors return useful data even when specific patterns aren't matched
8
- * - 'unknown'/'generic' are valid results, not failures
9
- * - Confidence scores allow consumers to decide thresholds
10
- */
11
- import { detectDialogs } from './dialog-detector.js';
12
- import { detectForms } from './form-detector.js';
13
- import { classifyPage } from './page-classifier.js';
14
- import { selectKeyActions } from './action-selector.js';
15
- // ============================================================================
16
- // Orchestration
17
- // ============================================================================
18
- /**
19
- * Extract a complete FactPack from a BaseSnapshot.
20
- *
21
- * Executes all extractors and combines results:
22
- * 1. Dialog detection (independent)
23
- * 2. Form detection (may use dialog context)
24
- * 3. Page classification (uses form results)
25
- * 4. Action selection (uses all context)
26
- *
27
- * @param snapshot - The compiled snapshot to analyze
28
- * @param options - Extraction options
29
- * @returns Complete FactPack with all extracted facts
30
- */
31
- export function extractFactPack(snapshot, options = {}) {
32
- const startTime = performance.now();
33
- // Step 1: Detect dialogs (independent)
34
- const dialogs = detectDialogs(snapshot);
35
- // Step 2: Detect forms (may use dialog context in future)
36
- const formOptions = {
37
- include_disabled_fields: options.include_disabled_fields ?? true,
38
- };
39
- const forms = detectForms(snapshot, formOptions);
40
- // Step 3: Classify page (uses form results)
41
- const pageType = classifyPage(snapshot, forms);
42
- // Step 4: Select actions (uses all context)
43
- const actionOptions = {
44
- max_actions: options.max_actions ?? 12,
45
- min_action_score: options.min_action_score ?? 0.2,
46
- forms,
47
- dialogs,
48
- pageType: pageType.classification,
49
- };
50
- const actions = selectKeyActions(snapshot, actionOptions);
51
- const extractionTimeMs = performance.now() - startTime;
52
- return {
53
- page_type: pageType,
54
- dialogs,
55
- forms,
56
- actions,
57
- meta: {
58
- snapshot_id: snapshot.snapshot_id,
59
- extraction_time_ms: extractionTimeMs,
60
- },
61
- };
62
- }
63
- // ============================================================================
64
- // Re-exports
65
- // ============================================================================
66
- // Types
67
- export * from './types.js';
68
- // Individual extractors
69
- export { detectDialogs } from './dialog-detector.js';
70
- export { detectForms } from './form-detector.js';
71
- export { classifyPage } from './page-classifier.js';
72
- export { selectKeyActions } from './action-selector.js';
73
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factpack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAA6B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAA+B,MAAM,sBAAsB,CAAC;AAGrF,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,QAAsB,EAAE,UAA2B,EAAE;IACnF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,uCAAuC;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExC,0DAA0D;IAC1D,MAAM,WAAW,GAAyB;QACxC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,IAAI,IAAI;KACjE,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE/C,4CAA4C;IAC5C,MAAM,aAAa,GAA2B;QAC5C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,GAAG;QACjD,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,QAAQ,CAAC,cAAc;KAClC,CAAC;IACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAE1D,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAEvD,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,OAAO;QACP,KAAK;QACL,OAAO;QACP,IAAI,EAAE;YACJ,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,kBAAkB,EAAE,gBAAgB;SACrC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAA6B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAA+B,MAAM,sBAAsB,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Page Classifier
3
- *
4
- * Classifies page type based on URL, title, and content analysis.
5
- *
6
- * Design: Generic First, Specific Second
7
- * 1. Collect signals from URL, title, and content (always useful)
8
- * 2. Calculate type scores (may result in 'unknown')
9
- * 3. Extract entities where possible
10
- * 4. Always return useful summary info (has_forms, has_navigation, etc.)
11
- */
12
- import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
13
- import type { PageClassificationResult, FormDetectionResult } from './types.js';
14
- /**
15
- * Classify a page based on URL, title, and content analysis.
16
- *
17
- * @param snapshot - The snapshot to analyze
18
- * @param formResult - Optional form detection result for context
19
- * @returns Classification result with type, confidence, signals, and entities
20
- */
21
- export declare function classifyPage(snapshot: BaseSnapshot, formResult?: FormDetectionResult): PageClassificationResult;
22
- //# sourceMappingURL=page-classifier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-classifier.d.ts","sourceRoot":"","sources":["../../../src/factpack/page-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,KAAK,EACV,wBAAwB,EAKxB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AA6iBpB;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,mBAAmB,GAC/B,wBAAwB,CA0C1B"}
@@ -1,526 +0,0 @@
1
- /**
2
- * Page Classifier
3
- *
4
- * Classifies page type based on URL, title, and content analysis.
5
- *
6
- * Design: Generic First, Specific Second
7
- * 1. Collect signals from URL, title, and content (always useful)
8
- * 2. Calculate type scores (may result in 'unknown')
9
- * 3. Extract entities where possible
10
- * 4. Always return useful summary info (has_forms, has_navigation, etc.)
11
- */
12
- import { QueryEngine } from '../query/query-engine.js';
13
- import { normalizeText } from '../lib/text-utils.js';
14
- // ============================================================================
15
- // URL Pattern Mappings
16
- // ============================================================================
17
- /** URL path patterns that indicate page types */
18
- const URL_PATTERNS = [
19
- // High confidence patterns
20
- { pattern: /\/cart\/?$/i, type: 'cart', weight: 0.9 },
21
- { pattern: /\/basket\/?$/i, type: 'cart', weight: 0.9 },
22
- { pattern: /\/checkout/i, type: 'checkout', weight: 0.9 },
23
- { pattern: /\/login\/?$/i, type: 'login', weight: 0.85 },
24
- { pattern: /\/signin\/?$/i, type: 'login', weight: 0.85 },
25
- { pattern: /\/sign-in\/?$/i, type: 'login', weight: 0.85 },
26
- { pattern: /\/auth\/?$/i, type: 'login', weight: 0.7 },
27
- { pattern: /\/signup\/?$/i, type: 'signup', weight: 0.85 },
28
- { pattern: /\/sign-up\/?$/i, type: 'signup', weight: 0.85 },
29
- { pattern: /\/register\/?$/i, type: 'signup', weight: 0.85 },
30
- // Product patterns
31
- { pattern: /\/product\//i, type: 'product', weight: 0.8 },
32
- { pattern: /\/item\//i, type: 'product', weight: 0.8 },
33
- { pattern: /\/p\//i, type: 'product', weight: 0.7 },
34
- { pattern: /\/dp\//i, type: 'product', weight: 0.8 }, // Amazon style
35
- { pattern: /\/products\/?$/i, type: 'product-listing', weight: 0.75 },
36
- { pattern: /\/shop\/?$/i, type: 'product-listing', weight: 0.6 },
37
- // Category/listing patterns
38
- { pattern: /\/category\//i, type: 'category', weight: 0.75 },
39
- { pattern: /\/c\//i, type: 'category', weight: 0.6 },
40
- { pattern: /\/collections?\//i, type: 'category', weight: 0.7 },
41
- // Search patterns
42
- { pattern: /\/search/i, type: 'search-results', weight: 0.8 },
43
- { pattern: /[?&]q=/i, type: 'search-results', weight: 0.75 },
44
- { pattern: /[?&]query=/i, type: 'search-results', weight: 0.75 },
45
- { pattern: /[?&]search=/i, type: 'search-results', weight: 0.75 },
46
- // Content patterns
47
- { pattern: /\/blog\//i, type: 'article', weight: 0.75 },
48
- { pattern: /\/article\//i, type: 'article', weight: 0.8 },
49
- { pattern: /\/post\//i, type: 'article', weight: 0.75 },
50
- { pattern: /\/news\//i, type: 'article', weight: 0.7 },
51
- // Account patterns
52
- { pattern: /\/account\/?$/i, type: 'account', weight: 0.8 },
53
- { pattern: /\/profile\/?$/i, type: 'account', weight: 0.8 },
54
- { pattern: /\/settings\/?$/i, type: 'account', weight: 0.7 },
55
- { pattern: /\/my-account/i, type: 'account', weight: 0.8 },
56
- // Info pages
57
- { pattern: /\/about\/?$/i, type: 'about', weight: 0.8 },
58
- { pattern: /\/about-us\/?$/i, type: 'about', weight: 0.8 },
59
- { pattern: /\/contact\/?$/i, type: 'contact', weight: 0.8 },
60
- { pattern: /\/contact-us\/?$/i, type: 'contact', weight: 0.8 },
61
- { pattern: /\/help\/?$/i, type: 'documentation', weight: 0.7 },
62
- { pattern: /\/docs?\/?$/i, type: 'documentation', weight: 0.8 },
63
- { pattern: /\/documentation\//i, type: 'documentation', weight: 0.85 },
64
- { pattern: /\/faq\/?$/i, type: 'documentation', weight: 0.7 },
65
- // Error pages
66
- { pattern: /\/404\/?$/i, type: 'error', weight: 0.9 },
67
- { pattern: /\/error\/?$/i, type: 'error', weight: 0.8 },
68
- { pattern: /\/not-found\/?$/i, type: 'error', weight: 0.85 },
69
- // Homepage (low weight - needs corroboration)
70
- { pattern: /^\/?$/, type: 'homepage', weight: 0.5 },
71
- ];
72
- // ============================================================================
73
- // Title Pattern Mappings
74
- // ============================================================================
75
- /** Title patterns that indicate page types */
76
- const TITLE_PATTERNS = [
77
- // Auth
78
- { pattern: /\bsign in\b/i, type: 'login', weight: 0.7 },
79
- { pattern: /\blog in\b/i, type: 'login', weight: 0.7 },
80
- { pattern: /\blogin\b/i, type: 'login', weight: 0.7 },
81
- { pattern: /\bsign up\b/i, type: 'signup', weight: 0.7 },
82
- { pattern: /\bregister\b/i, type: 'signup', weight: 0.65 },
83
- { pattern: /\bcreate account\b/i, type: 'signup', weight: 0.7 },
84
- // Commerce
85
- { pattern: /\bshopping cart\b/i, type: 'cart', weight: 0.85 },
86
- { pattern: /\byour cart\b/i, type: 'cart', weight: 0.85 },
87
- { pattern: /\bcheckout\b/i, type: 'checkout', weight: 0.8 },
88
- { pattern: /\bpayment\b/i, type: 'checkout', weight: 0.6 },
89
- // Content
90
- { pattern: /\b(blog|article|post)\b/i, type: 'article', weight: 0.5 },
91
- // Error
92
- { pattern: /\b404\b/i, type: 'error', weight: 0.9 },
93
- { pattern: /\bpage not found\b/i, type: 'error', weight: 0.9 },
94
- { pattern: /\berror\b/i, type: 'error', weight: 0.5 },
95
- { pattern: /\b500\b/i, type: 'error', weight: 0.85 },
96
- { pattern: /\bserver error\b/i, type: 'error', weight: 0.85 },
97
- // Info
98
- { pattern: /\babout us\b/i, type: 'about', weight: 0.8 },
99
- { pattern: /\bcontact us\b/i, type: 'contact', weight: 0.8 },
100
- { pattern: /\bhelp\b/i, type: 'documentation', weight: 0.5 },
101
- { pattern: /\bdocumentation\b/i, type: 'documentation', weight: 0.7 },
102
- // Search
103
- { pattern: /\bsearch results\b/i, type: 'search-results', weight: 0.85 },
104
- ];
105
- // ============================================================================
106
- // Content Patterns
107
- // ============================================================================
108
- /** Button/link labels indicating cart functionality */
109
- const CART_ACTION_PATTERNS = [
110
- /\badd to cart\b/i,
111
- /\badd to bag\b/i,
112
- /\badd to basket\b/i,
113
- /\bbuy now\b/i,
114
- /\bpurchase\b/i,
115
- ];
116
- /** Patterns for auth-related actions */
117
- const AUTH_ACTION_PATTERNS = [/\bsign in\b/i, /\blog in\b/i, /\bsign up\b/i, /\bregister\b/i];
118
- /** Patterns for price display */
119
- const PRICE_PATTERNS = [
120
- /\$\d+(\.\d{2})?/, // $XX.XX
121
- /€\d+([.,]\d{2})?/, // €XX,XX
122
- /£\d+(\.\d{2})?/, // £XX.XX
123
- /\d+([.,]\d{2})?\s*(USD|EUR|GBP)/i,
124
- ];
125
- // ============================================================================
126
- // Helper Functions
127
- // ============================================================================
128
- /**
129
- * Analyze URL for page type signals.
130
- */
131
- function analyzeUrl(url) {
132
- const signals = [];
133
- try {
134
- const parsed = new URL(url);
135
- const pathname = parsed.pathname;
136
- for (const { pattern, type, weight } of URL_PATTERNS) {
137
- if (pattern.test(pathname) || pattern.test(url)) {
138
- signals.push({
139
- source: 'url',
140
- signal: `url-pattern-${type}`,
141
- evidence: `URL matches pattern: ${pattern.source}`,
142
- weight,
143
- });
144
- }
145
- }
146
- }
147
- catch {
148
- // Invalid URL - no signals
149
- }
150
- return signals;
151
- }
152
- /**
153
- * Analyze title for page type signals.
154
- */
155
- function analyzeTitle(title) {
156
- const signals = [];
157
- const normalized = normalizeText(title);
158
- for (const { pattern, type, weight } of TITLE_PATTERNS) {
159
- if (pattern.test(normalized)) {
160
- signals.push({
161
- source: 'title',
162
- signal: `title-pattern-${type}`,
163
- evidence: `Title contains: ${pattern.source}`,
164
- weight,
165
- });
166
- }
167
- }
168
- return signals;
169
- }
170
- /**
171
- * Analyze content for page type signals.
172
- */
173
- function analyzeContent(snapshot, engine, formResult) {
174
- const signals = [];
175
- // Check for forms with specific purposes
176
- if (formResult) {
177
- for (const form of formResult.forms) {
178
- if (form.purpose === 'login') {
179
- signals.push({
180
- source: 'form',
181
- signal: 'form-purpose-login',
182
- evidence: 'Login form detected',
183
- weight: 0.85,
184
- });
185
- }
186
- else if (form.purpose === 'signup') {
187
- signals.push({
188
- source: 'form',
189
- signal: 'form-purpose-signup',
190
- evidence: 'Signup form detected',
191
- weight: 0.85,
192
- });
193
- }
194
- else if (form.purpose === 'checkout') {
195
- signals.push({
196
- source: 'form',
197
- signal: 'form-purpose-checkout',
198
- evidence: 'Checkout form detected',
199
- weight: 0.9,
200
- });
201
- }
202
- else if (form.purpose === 'contact') {
203
- signals.push({
204
- source: 'form',
205
- signal: 'form-purpose-contact',
206
- evidence: 'Contact form detected',
207
- weight: 0.8,
208
- });
209
- }
210
- else if (form.purpose === 'search') {
211
- signals.push({
212
- source: 'form',
213
- signal: 'form-purpose-search',
214
- evidence: 'Search form detected',
215
- weight: 0.5, // Low weight - many pages have search
216
- });
217
- }
218
- }
219
- }
220
- // Check for cart action buttons
221
- const buttons = engine.find({ kind: 'button', limit: 50 });
222
- for (const match of buttons.matches) {
223
- const label = normalizeText(match.node.label);
224
- if (CART_ACTION_PATTERNS.some((p) => p.test(label))) {
225
- signals.push({
226
- source: 'element',
227
- signal: 'cart-action-button',
228
- evidence: `Add to cart button: "${match.node.label}"`,
229
- weight: 0.75,
230
- });
231
- break; // Only count once
232
- }
233
- }
234
- // Check for auth action buttons
235
- for (const match of buttons.matches) {
236
- const label = normalizeText(match.node.label);
237
- if (AUTH_ACTION_PATTERNS.some((p) => p.test(label))) {
238
- // Context matters - in header vs main content
239
- if (match.node.where.region === 'main') {
240
- signals.push({
241
- source: 'element',
242
- signal: 'auth-action-main',
243
- evidence: `Auth action in main: "${match.node.label}"`,
244
- weight: 0.5,
245
- });
246
- }
247
- break;
248
- }
249
- }
250
- // Check for price elements (indicates product page)
251
- const texts = engine.find({ kind: 'text', limit: 100 });
252
- for (const match of texts.matches) {
253
- const label = match.node.label;
254
- if (PRICE_PATTERNS.some((p) => p.test(label))) {
255
- signals.push({
256
- source: 'element',
257
- signal: 'price-element',
258
- evidence: `Price found: "${label.substring(0, 30)}"`,
259
- weight: 0.5,
260
- });
261
- break; // Only count once
262
- }
263
- }
264
- // Check for long paragraphs (indicates article)
265
- const paragraphs = engine.find({ kind: 'paragraph', limit: 20 });
266
- const longParagraphs = paragraphs.matches.filter((m) => m.node.label.length > 200);
267
- if (longParagraphs.length >= 3) {
268
- signals.push({
269
- source: 'content',
270
- signal: 'long-paragraphs',
271
- evidence: `${longParagraphs.length} long paragraphs found`,
272
- weight: 0.6,
273
- });
274
- }
275
- // Check for error indicators
276
- const headings = engine.find({ kind: 'heading', limit: 10 });
277
- for (const match of headings.matches) {
278
- const label = normalizeText(match.node.label);
279
- if (/\b404\b/.test(label) || /\bnot found\b/i.test(label)) {
280
- signals.push({
281
- source: 'element',
282
- signal: 'error-heading-404',
283
- evidence: `Error heading: "${match.node.label}"`,
284
- weight: 0.95,
285
- });
286
- break;
287
- }
288
- if (/\b500\b/.test(label) || /\bserver error\b/i.test(label)) {
289
- signals.push({
290
- source: 'element',
291
- signal: 'error-heading-500',
292
- evidence: `Error heading: "${match.node.label}"`,
293
- weight: 0.95,
294
- });
295
- break;
296
- }
297
- }
298
- return signals;
299
- }
300
- /**
301
- * Calculate page summary info.
302
- */
303
- function calculateSummaryInfo(snapshot, engine, formResult) {
304
- // Has forms
305
- const has_forms = (formResult?.forms.length ?? 0) > 0;
306
- // Has navigation
307
- const navNodes = engine.find({ kind: 'navigation', limit: 1 });
308
- const navRegion = engine.find({ region: 'nav', limit: 1 });
309
- const has_navigation = navNodes.matches.length > 0 || navRegion.matches.length > 0;
310
- // Has main content
311
- const mainRegion = engine.find({ region: 'main', limit: 1 });
312
- const has_main_content = mainRegion.matches.length > 0;
313
- // Has search
314
- const searchForms = formResult?.forms.filter((f) => f.purpose === 'search').length ?? 0;
315
- const searchInputs = engine
316
- .find({ kind: 'input', limit: 50 })
317
- .matches.filter((m) => m.node.attributes?.input_type === 'search' ||
318
- m.node.attributes?.autocomplete === 'search' ||
319
- /search/i.test(m.node.label));
320
- const has_search = searchForms > 0 || searchInputs.length > 0;
321
- return { has_forms, has_navigation, has_main_content, has_search };
322
- }
323
- /**
324
- * Calculate type scores from signals.
325
- */
326
- function calculateTypeScores(signals) {
327
- const scores = new Map();
328
- // All possible types
329
- const allTypes = [
330
- 'homepage',
331
- 'product',
332
- 'product-listing',
333
- 'category',
334
- 'search-results',
335
- 'article',
336
- 'login',
337
- 'signup',
338
- 'checkout',
339
- 'cart',
340
- 'account',
341
- 'contact',
342
- 'about',
343
- 'documentation',
344
- 'error',
345
- ];
346
- // Initialize all to 0
347
- for (const type of allTypes) {
348
- scores.set(type, 0);
349
- }
350
- // Accumulate signal weights
351
- for (const signal of signals) {
352
- // Extract type from signal name if it follows pattern
353
- const match = /-(login|signup|checkout|cart|product|article|error|contact|about|documentation|search-results|homepage|product-listing|category|account)/.exec(signal.signal);
354
- if (match) {
355
- const type = match[1];
356
- const current = scores.get(type) ?? 0;
357
- scores.set(type, current + signal.weight);
358
- }
359
- }
360
- return scores;
361
- }
362
- /**
363
- * Select primary and secondary types from scores.
364
- */
365
- function selectTypes(scores) {
366
- const sorted = [...scores.entries()].filter(([, score]) => score > 0).sort((a, b) => b[1] - a[1]);
367
- if (sorted.length === 0) {
368
- return { primary: { type: 'unknown', score: 0.2 } };
369
- }
370
- const [primaryType, primaryScore] = sorted[0];
371
- // Normalize score to 0-1 range (cap at 1.0)
372
- const normalizedPrimary = Math.min(primaryScore, 1.0);
373
- // If score is too low, return unknown
374
- if (normalizedPrimary < 0.4) {
375
- return { primary: { type: 'unknown', score: normalizedPrimary } };
376
- }
377
- const result = {
378
- primary: { type: primaryType, score: normalizedPrimary },
379
- };
380
- // Add secondary if close to primary
381
- if (sorted.length > 1) {
382
- const [secondaryType, secondaryScore] = sorted[1];
383
- const normalizedSecondary = Math.min(secondaryScore, 1.0);
384
- // Only include if secondary is at least 60% of primary
385
- if (normalizedSecondary >= normalizedPrimary * 0.6) {
386
- result.secondary = { type: secondaryType, score: normalizedSecondary };
387
- }
388
- }
389
- return result;
390
- }
391
- /**
392
- * Extract entities from the page.
393
- */
394
- function extractEntities(snapshot, engine, pageType) {
395
- const entities = [];
396
- // Extract based on page type
397
- if (pageType === 'product') {
398
- // Try to find product name from main heading
399
- const mainHeadings = engine.find({ kind: 'heading', region: 'main', limit: 3 });
400
- if (mainHeadings.matches.length > 0) {
401
- const heading = mainHeadings.matches[0].node;
402
- if (heading.attributes?.heading_level === 1 || heading.label.length > 5) {
403
- entities.push({
404
- type: 'product-name',
405
- value: heading.label,
406
- node_id: heading.node_id,
407
- confidence: 0.7,
408
- });
409
- }
410
- }
411
- // Try to find price
412
- const texts = engine.find({ kind: 'text', limit: 100 });
413
- for (const match of texts.matches) {
414
- for (const pattern of PRICE_PATTERNS) {
415
- const priceMatch = match.node.label.match(pattern);
416
- if (priceMatch) {
417
- entities.push({
418
- type: 'price',
419
- value: priceMatch[0],
420
- node_id: match.node.node_id,
421
- confidence: 0.8,
422
- });
423
- break;
424
- }
425
- }
426
- if (entities.some((e) => e.type === 'price'))
427
- break;
428
- }
429
- }
430
- if (pageType === 'article') {
431
- // Article title from main H1
432
- const h1s = engine
433
- .find({ kind: 'heading', limit: 10 })
434
- .matches.filter((m) => m.node.attributes?.heading_level === 1);
435
- if (h1s.length > 0) {
436
- entities.push({
437
- type: 'article-title',
438
- value: h1s[0].node.label,
439
- node_id: h1s[0].node.node_id,
440
- confidence: 0.8,
441
- });
442
- }
443
- }
444
- if (pageType === 'error') {
445
- // Error code
446
- const headings = engine.find({ kind: 'heading', limit: 5 });
447
- for (const match of headings.matches) {
448
- const codeMatch = /\b(404|500|403|401|503)\b/.exec(match.node.label);
449
- if (codeMatch) {
450
- entities.push({
451
- type: 'error-code',
452
- value: codeMatch[1],
453
- node_id: match.node.node_id,
454
- confidence: 0.95,
455
- });
456
- break;
457
- }
458
- }
459
- }
460
- if (pageType === 'search-results') {
461
- // Try to extract search query from URL or title
462
- try {
463
- const url = new URL(snapshot.url);
464
- const query = url.searchParams.get('q') ??
465
- url.searchParams.get('query') ??
466
- url.searchParams.get('search');
467
- if (query) {
468
- entities.push({
469
- type: 'search-query',
470
- value: query,
471
- confidence: 0.9,
472
- });
473
- }
474
- }
475
- catch {
476
- // Invalid URL
477
- }
478
- }
479
- return entities;
480
- }
481
- // ============================================================================
482
- // Main Classification Function
483
- // ============================================================================
484
- /**
485
- * Classify a page based on URL, title, and content analysis.
486
- *
487
- * @param snapshot - The snapshot to analyze
488
- * @param formResult - Optional form detection result for context
489
- * @returns Classification result with type, confidence, signals, and entities
490
- */
491
- export function classifyPage(snapshot, formResult) {
492
- const startTime = performance.now();
493
- const engine = new QueryEngine(snapshot);
494
- // Step 1: Collect signals from all sources
495
- const signals = [
496
- ...analyzeUrl(snapshot.url),
497
- ...analyzeTitle(snapshot.title),
498
- ...analyzeContent(snapshot, engine, formResult),
499
- ];
500
- // Step 2: Calculate type scores
501
- const scores = calculateTypeScores(signals);
502
- // Step 3: Select primary/secondary types
503
- const { primary, secondary } = selectTypes(scores);
504
- // Step 4: Calculate summary info (always useful even for unknown)
505
- const summaryInfo = calculateSummaryInfo(snapshot, engine, formResult);
506
- // Step 5: Extract entities
507
- const entities = extractEntities(snapshot, engine, primary.type);
508
- const classificationTimeMs = performance.now() - startTime;
509
- const classification = {
510
- type: primary.type,
511
- confidence: primary.score,
512
- secondary_type: secondary?.type,
513
- secondary_confidence: secondary?.score,
514
- signals,
515
- entities,
516
- ...summaryInfo,
517
- };
518
- return {
519
- classification,
520
- meta: {
521
- signals_evaluated: signals.length,
522
- classification_time_ms: classificationTimeMs,
523
- },
524
- };
525
- }
526
- //# sourceMappingURL=page-classifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-classifier.js","sourceRoot":"","sources":["../../../src/factpack/page-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAUrD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,YAAY,GAA0D;IAC1E,2BAA2B;IAC3B,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IACrD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IACvD,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE;IACzD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IAC1D,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACtD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAC1D,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAC3D,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAE5D,mBAAmB;IACnB,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IACzD,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IACtD,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IACnD,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe;IACrE,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE;IAEhE,4BAA4B;IAC5B,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5D,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE;IACpD,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE;IAE/D,kBAAkB;IAClB,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE;IAC7D,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5D,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;IAChE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;IAEjE,mBAAmB;IACnB,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IACzD,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAEtD,mBAAmB;IACnB,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3D,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3D,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5D,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAE1D,aAAa;IACb,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACvD,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IAC1D,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3D,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9D,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9D,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/D,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE;IACtE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE;IAE7D,cAAc;IACd,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACrD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACvD,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IAE5D,8CAA8C;IAC9C,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE;CACpD,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,8CAA8C;AAC9C,MAAM,cAAc,GAA0D;IAC5E,OAAO;IACP,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACvD,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACtD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACrD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;IACxD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAC1D,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;IAE/D,WAAW;IACX,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAC7D,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3D,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE;IAE1D,UAAU;IACV,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAErE,QAAQ;IACR,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACnD,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9D,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACrD,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IACpD,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IAE7D,OAAO;IACP,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IACxD,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5D,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5D,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE;IAErE,SAAS;IACT,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;CACzE,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,uDAAuD;AACvD,MAAM,oBAAoB,GAAG;IAC3B,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,cAAc;IACd,eAAe;CAChB,CAAC;AAEF,wCAAwC;AACxC,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;AAE9F,iCAAiC;AACjC,MAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,SAAS;IAC5B,kBAAkB,EAAE,SAAS;IAC7B,gBAAgB,EAAE,SAAS;IAC3B,kCAAkC;CACnC,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEjC,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,eAAe,IAAI,EAAE;oBAC7B,QAAQ,EAAE,wBAAwB,OAAO,CAAC,MAAM,EAAE;oBAClD,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExC,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QACvD,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,iBAAiB,IAAI,EAAE;gBAC/B,QAAQ,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE;gBAC7C,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,QAAsB,EACtB,MAAmB,EACnB,UAAgC;IAEhC,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,yCAAyC;IACzC,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,oBAAoB;oBAC5B,QAAQ,EAAE,qBAAqB;oBAC/B,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,qBAAqB;oBAC7B,QAAQ,EAAE,sBAAsB;oBAChC,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ,EAAE,wBAAwB;oBAClC,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,uBAAuB;oBACjC,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,qBAAqB;oBAC7B,QAAQ,EAAE,sBAAsB;oBAChC,MAAM,EAAE,GAAG,EAAE,sCAAsC;iBACpD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,oBAAoB;gBAC5B,QAAQ,EAAE,wBAAwB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG;gBACrD,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB;QAC3B,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACpD,8CAA8C;YAC9C,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,kBAAkB;oBAC1B,QAAQ,EAAE,yBAAyB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG;oBACtD,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE,iBAAiB,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;gBACpD,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB;QAC3B,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACnF,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE,GAAG,cAAc,CAAC,MAAM,wBAAwB;YAC1D,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,mBAAmB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG;gBAChD,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,mBAAmB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG;gBAChD,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,QAAsB,EACtB,MAAmB,EACnB,UAAgC;IAOhC,YAAY;IACZ,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtD,iBAAiB;IACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnF,mBAAmB;IACnB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvD,aAAa;IACb,MAAM,WAAW,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IACxF,MAAM,YAAY,GAAG,MAAM;SACxB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SAClC,OAAO,CAAC,MAAM,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,KAAK,QAAQ;QAC1C,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,KAAK,QAAQ;QAC5C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAC/B,CAAC;IACJ,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAqB;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,qBAAqB;IACrB,MAAM,QAAQ,GAAe;QAC3B,UAAU;QACV,SAAS;QACT,iBAAiB;QACjB,UAAU;QACV,gBAAgB;QAChB,SAAS;QACT,OAAO;QACP,QAAQ;QACR,UAAU;QACV,MAAM;QACN,SAAS;QACT,SAAS;QACT,OAAO;QACP,eAAe;QACf,OAAO;KACR,CAAC;IAEF,sBAAsB;IACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,4BAA4B;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,sDAAsD;QACtD,MAAM,KAAK,GACT,0IAA0I,CAAC,IAAI,CAC7I,MAAM,CAAC,MAAM,CACd,CAAC;QACJ,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAa,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAA6B;IAIhD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9C,4CAA4C;IAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAEtD,sCAAsC;IACtC,IAAI,iBAAiB,GAAG,GAAG,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,MAAM,GAAmC;QAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;KACzD,CAAC;IAEF,oCAAoC;IACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAE1D,uDAAuD;QACvD,IAAI,mBAAmB,IAAI,iBAAiB,GAAG,GAAG,EAAE,CAAC;YACnD,MAAM,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,QAAsB,EACtB,MAAmB,EACnB,QAAkB;IAElB,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,6BAA6B;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,6CAA6C;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,IAAI,OAAO,CAAC,UAAU,EAAE,aAAa,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxE,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;gBACrC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,UAAU,EAAE,CAAC;oBACf,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;wBACpB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;wBAC3B,UAAU,EAAE,GAAG;qBAChB,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;gBAAE,MAAM;QACtD,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,6BAA6B;QAC7B,MAAM,GAAG,GAAG,MAAM;aACf,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;aACpC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC;QAEjE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;gBACxB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;gBAC5B,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,aAAa;QACb,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;oBACnB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;oBAC3B,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GACT,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAsB,EACtB,UAAgC;IAEhC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,MAAM,OAAO,GAAiB;QAC5B,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3B,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;KAChD,CAAC;IAEF,gCAAgC;IAChC,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE5C,yCAAyC;IACzC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAEnD,kEAAkE;IAClE,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAEvE,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE3D,MAAM,cAAc,GAAuB;QACzC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,KAAK;QACzB,cAAc,EAAE,SAAS,EAAE,IAAI;QAC/B,oBAAoB,EAAE,SAAS,EAAE,KAAK;QACtC,OAAO;QACP,QAAQ;QACR,GAAG,WAAW;KACf,CAAC;IAEF,OAAO;QACL,cAAc;QACd,IAAI,EAAE;YACJ,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,sBAAsB,EAAE,oBAAoB;SAC7C;KACF,CAAC;AACJ,CAAC"}