sparkforensics-server 0.5.2 → 0.8.1

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 (445) hide show
  1. package/index.js +16 -7
  2. package/package.json +1 -1
  3. package/public/assets/AutoscalingChurn-DenWKTv-.js +1 -0
  4. package/public/assets/CacheUtilization-DLz7NdjV.js +1 -0
  5. package/public/assets/CachingOpportunity-zpQIqhzm.js +1 -0
  6. package/public/assets/ChartTheme-DAiARbLP.js +8 -0
  7. package/public/assets/ColdStart-C-9HjxWl.js +1 -0
  8. package/public/assets/ConfigAudit-D0V9tcrJ.js +1 -0
  9. package/public/assets/CoreUsageArea-yeerrljd.js +1 -0
  10. package/public/assets/Dashboard-DkUPrHKV.js +1 -0
  11. package/public/assets/DisclosureContext-DK1_iz6J.js +1 -0
  12. package/public/assets/DuplicatePlanSubtree-xDNDbCd3.js +1 -0
  13. package/public/assets/DurationHistogram-B6jsE0Ov.js +1 -0
  14. package/public/assets/EmptyState-C1uL40VU.js +1 -0
  15. package/public/assets/ExecutorUtilization-DXDZKmSc.js +1 -0
  16. package/public/assets/GcPressure-MRf7I4IG.js +1 -0
  17. package/public/assets/ImpactEstimate-Dm3xWbzV.js +1 -0
  18. package/public/assets/IncompleteRun-CaLOhMtf.js +1 -0
  19. package/public/assets/JobFailures-CzmzlvhO.js +1 -0
  20. package/public/assets/MemoryUtilization-AWUMUjCH.js +1 -0
  21. package/public/assets/NestedLoopJoin-C9sNr6Ss.js +1 -0
  22. package/public/assets/OverBroadcast-BOmRE6ca.js +1 -0
  23. package/public/assets/PartitionHint-BL2EmJfE.js +1 -0
  24. package/public/assets/PartitionSizing-BzBySvUq.js +1 -0
  25. package/public/assets/PlanExplorer-DdiQRcJU.js +1 -0
  26. package/public/assets/PlanGraphRoute-CIH9gBuR.js +1 -0
  27. package/public/assets/PlanView-B1hxzFRs.js +2 -0
  28. package/public/assets/PythonUdf-DvgCCueD.js +1 -0
  29. package/public/assets/RetryWaste-uXXu_CyM.js +1 -0
  30. package/public/assets/RowPagination-C-LzWkI5.js +1 -0
  31. package/public/assets/RowStatusCluster-Dbtmte7l.js +1 -0
  32. package/public/assets/ShuffleIO-nALwzC1_.js +1 -0
  33. package/public/assets/Skew-CHMEKgvk.js +1 -0
  34. package/public/assets/SlowHost-yyvjpHk6.js +1 -0
  35. package/public/assets/SmallFiles-y6odJ97n.js +1 -0
  36. package/public/assets/SpeculationWaste-C-SD2LOt.js +1 -0
  37. package/public/assets/Spill-DHTMmOup.js +1 -0
  38. package/public/assets/StageFailed-CQ3DxC9R.js +1 -0
  39. package/public/assets/StageFindingGroup-BgYLyj5q.js +1 -0
  40. package/public/assets/StageHeader-CIETkjVZ.js +1 -0
  41. package/public/assets/StagePill--P7PDd3s.js +1 -0
  42. package/public/assets/StageShape-BIv8vx_o.js +1 -0
  43. package/public/assets/StageSlowness-MMqzERxN.js +1 -0
  44. package/public/assets/Straggler-BgrY7AyW.js +1 -0
  45. package/public/assets/TaskFailures-BHHyKYTs.js +1 -0
  46. package/public/assets/TinyTask-DDScNhCl.js +1 -0
  47. package/public/assets/UnderBroadcast-CGIC04TI.js +1 -0
  48. package/public/assets/WidgetLeadSummary-CXFZP00C.js +1 -0
  49. package/public/assets/button-DbpTz2yk.js +1 -0
  50. package/public/assets/charts-vendor-CtTxwTeu.js +59 -0
  51. package/public/assets/composite-C9Nu2EI9.js +1 -0
  52. package/public/assets/d3-vendor-DNlD2-cz.js +1 -0
  53. package/public/assets/detector-registry-Bp8hrLua.js +2 -0
  54. package/public/assets/downsample-WmNM1qc9.js +1 -0
  55. package/public/assets/finding-anchor-Dr40LkS9.js +1 -0
  56. package/public/assets/findings-of-type-BL2u3RGZ.js +1 -0
  57. package/public/assets/impact-sort-mC5ISgX8.js +1 -0
  58. package/public/assets/inbox-KPU1Gppm.js +1 -0
  59. package/public/assets/index-CaRVPvAT.css +2 -0
  60. package/public/assets/index-fDiwfuoO.js +14 -0
  61. package/public/assets/inertValue-L9VxV0VE.js +1 -0
  62. package/public/assets/instrument-sans-latin-ext-wdth-normal-C5E2Gvlv.woff2 +0 -0
  63. package/public/assets/instrument-sans-latin-wdth-normal-BVScPF0l.woff2 +0 -0
  64. package/public/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  65. package/public/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  66. package/public/assets/layout.worker-CLcBHxVp.js +3 -0
  67. package/public/assets/{parser-worker-CA5RxqKc.js → parser-worker-CRIOPMOW.js} +8 -8
  68. package/public/assets/plan-graph-vendor-Ce6d4HU6.js +7 -0
  69. package/public/assets/react-vendor-C6KcUD36.js +9 -0
  70. package/public/assets/select-BHqOqun5.js +1 -0
  71. package/public/assets/toggle-DPeN6aNa.js +1 -0
  72. package/public/assets/toggle-group-Kl3uyHSr.js +1 -0
  73. package/public/assets/usePagedRows-BafD6bEN.js +1 -0
  74. package/public/assets/useRecentFiles-DzJZAoOT.js +3 -0
  75. package/public/assets/useRegisterFieldControl-pQv-ZDoU.js +1 -0
  76. package/public/assets/useScrollLock-BCxn_dMp.js +1 -0
  77. package/public/assets/useSortMode-DjrAN-z4.js +1 -0
  78. package/public/docs/404.html +3 -7
  79. package/public/docs/assets/{app.eYTPqTeq.js → app.1gvzd5Zb.js} +1 -1
  80. package/public/docs/assets/chunks/@localSearchIndexroot.DS2TQP5_.js +1 -0
  81. package/public/docs/assets/chunks/{VPLocalSearchBox.DsZrQKQR.js → VPLocalSearchBox.CNxT3s0I.js} +1 -1
  82. package/public/docs/assets/chunks/{theme.DsTNE2pE.js → theme.C5lLqUv7.js} +2 -2
  83. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.CqKM_jEG.js +1 -0
  84. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.CqKM_jEG.lean.js +1 -0
  85. package/public/docs/assets/{contributor-guide_architecture_board-widgets_caching-and-memory.md.8bH1HnZp.js → contributor-guide_architecture_board-widgets_caching-and-memory.md.BYDo3ClR.js} +1 -1
  86. package/public/docs/assets/contributor-guide_architecture_board-widgets_plan-advisor.md.ajUAVdbc.js +1 -0
  87. package/public/docs/assets/contributor-guide_architecture_board-widgets_visual-system-and-templating.md.WqY74T0T.js +1 -0
  88. package/public/docs/assets/contributor-guide_architecture_board-widgets_visual-system-and-templating.md.WqY74T0T.lean.js +1 -0
  89. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.CHHgywoP.js +1 -0
  90. package/public/docs/assets/{contributor-guide_architecture_detector-contract.md.wj6Et6UD.lean.js → contributor-guide_architecture_detector-contract.md.CHHgywoP.lean.js} +1 -1
  91. package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.DIz3_oz9.js +1 -0
  92. package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.DIz3_oz9.lean.js +1 -0
  93. package/public/docs/assets/contributor-guide_architecture_detector-contract_threshold-tables.md.WH4tRHPL.js +1 -0
  94. package/public/docs/assets/{contributor-guide_architecture_detector-contract_threshold-tables.md.CKjWG56Y.lean.js → contributor-guide_architecture_detector-contract_threshold-tables.md.WH4tRHPL.lean.js} +1 -1
  95. package/public/docs/assets/{contributor-guide_architecture_drill-down.md.CqZPrdo9.js → contributor-guide_architecture_drill-down.md.yB-Hz2XT.js} +1 -1
  96. package/public/docs/assets/{contributor-guide_architecture_drill-down.md.CqZPrdo9.lean.js → contributor-guide_architecture_drill-down.md.yB-Hz2XT.lean.js} +1 -1
  97. package/public/docs/assets/contributor-guide_architecture_drill-down_plan-graph.md.BQZE04sw.js +1 -0
  98. package/public/docs/assets/{contributor-guide_architecture_drill-down_plan-graph.md.DwOozIEs.lean.js → contributor-guide_architecture_drill-down_plan-graph.md.BQZE04sw.lean.js} +1 -1
  99. package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.K71YB-Rr.js +1 -0
  100. package/public/docs/assets/{contributor-guide_architecture_impact-estimation.md.CZv_ZGOp.lean.js → contributor-guide_architecture_impact-estimation.md.K71YB-Rr.lean.js} +1 -1
  101. package/public/docs/assets/contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.DLCAffwn.js +1 -0
  102. package/public/docs/assets/{contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.BUucRc0A.lean.js → contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.DLCAffwn.lean.js} +1 -1
  103. package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.JFrzDMwo.js +1 -0
  104. package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.JFrzDMwo.lean.js +1 -0
  105. package/public/docs/assets/contributor-guide_architecture_overview.md.nxkpOhgf.js +1 -0
  106. package/public/docs/assets/contributor-guide_architecture_state-and-history_run-comparison-internals.md.U-9KMDFK.js +1 -0
  107. package/public/docs/assets/{contributor-guide_architecture_state-and-history_run-comparison-internals.md.CZA0JLtV.lean.js → contributor-guide_architecture_state-and-history_run-comparison-internals.md.U-9KMDFK.lean.js} +1 -1
  108. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.BrSz8Ezh.js +1 -0
  109. package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.B7rjSF_h.js +1 -0
  110. package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.B7rjSF_h.lean.js +1 -0
  111. package/public/docs/assets/{contributor-guide_architecture_widget-rendering_list-sort-mode.md.BuHKgH0C.js → contributor-guide_architecture_widget-rendering_list-sort-mode.md.37hcZJ7q.js} +1 -1
  112. package/public/docs/assets/{contributor-guide_architecture_widget-rendering_row-expand-contract.md.ZT89u9f1.js → contributor-guide_architecture_widget-rendering_row-expand-contract.md.mK_VmAWk.js} +1 -1
  113. package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.BAnhi2-d.js → contributor-guide_architecture_worker-protocol.md.Br6OE7RW.js} +1 -1
  114. package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.Br6OE7RW.lean.js +1 -0
  115. package/public/docs/assets/contributor-guide_architecture_worker-protocol_cli-and-mcp.md.IVyaXrGe.js +1 -0
  116. package/public/docs/assets/{contributor-guide_architecture_worker-protocol_cli-and-mcp.md.DC1YqXBp.lean.js → contributor-guide_architecture_worker-protocol_cli-and-mcp.md.IVyaXrGe.lean.js} +1 -1
  117. package/public/docs/assets/{contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DSVFPpWb.js → contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DVSXn-bb.js} +1 -1
  118. package/public/docs/assets/{contributor-guide_architecture_worker-protocol_evidence-availability.md.CjimIDBY.js → contributor-guide_architecture_worker-protocol_evidence-availability.md.D3S5cyOW.js} +2 -2
  119. package/public/docs/assets/{contributor-guide_architecture_worker-protocol_evidence-availability.md.CjimIDBY.lean.js → contributor-guide_architecture_worker-protocol_evidence-availability.md.D3S5cyOW.lean.js} +1 -1
  120. package/public/docs/assets/contributor-guide_architecture_worker-protocol_evidence-report.md.CtmCU57I.js +1 -0
  121. package/public/docs/assets/{contributor-guide_architecture_worker-protocol_evidence-report.md.DVGZOWvW.lean.js → contributor-guide_architecture_worker-protocol_evidence-report.md.CtmCU57I.lean.js} +1 -1
  122. package/public/docs/assets/contributor-guide_contributing.md.DBW4drtZ.js +1 -0
  123. package/public/docs/assets/{contributor-guide_development-setup.md.D9bu4j_c.js → contributor-guide_development-setup.md.B21ZTDhn.js} +3 -3
  124. package/public/docs/assets/contributor-guide_development-setup.md.B21ZTDhn.lean.js +1 -0
  125. package/public/docs/assets/contributor-guide_testing.md.DpkozNoG.js +4 -0
  126. package/public/docs/assets/{contributor-guide_testing.md.By6XGR9a.lean.js → contributor-guide_testing.md.DpkozNoG.lean.js} +1 -1
  127. package/public/docs/assets/{index.md.CHJVslga.js → index.md.lMm7SUMz.js} +1 -1
  128. package/public/docs/assets/{index.md.CHJVslga.lean.js → index.md.lMm7SUMz.lean.js} +1 -1
  129. package/public/docs/assets/instrument-sans-latin-ext-wdth-normal.C5E2Gvlv.woff2 +0 -0
  130. package/public/docs/assets/instrument-sans-latin-wdth-normal.BVScPF0l.woff2 +0 -0
  131. package/public/docs/assets/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2 +0 -0
  132. package/public/docs/assets/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2 +0 -0
  133. package/public/docs/assets/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2 +0 -0
  134. package/public/docs/assets/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2 +0 -0
  135. package/public/docs/assets/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2 +0 -0
  136. package/public/docs/assets/style.Cfxqlj0y.css +1 -0
  137. package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.C0pcQoNc.js +29 -0
  138. package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.C0pcQoNc.lean.js +1 -0
  139. package/public/docs/assets/user-guide_getting-started_reading-the-dashboard.md.CGaxPX_1.js +1 -0
  140. package/public/docs/assets/{user-guide_getting-started_tuning-thresholds.md.B_MyjyZm.js → user-guide_getting-started_tuning-thresholds.md.BGVE-wrc.js} +2 -2
  141. package/public/docs/assets/{user-guide_getting-started_tuning-thresholds.md.B_MyjyZm.lean.js → user-guide_getting-started_tuning-thresholds.md.BGVE-wrc.lean.js} +1 -1
  142. package/public/docs/assets/{user-guide_mcp-tools.md.C65SjWUL.js → user-guide_mcp-tools.md.49r3L2YE.js} +1 -1
  143. package/public/docs/assets/{user-guide_mcp-tools_compare-runs.md.Cc_gLoix.js → user-guide_mcp-tools_compare-runs.md.BQ_kIptC.js} +11 -6
  144. package/public/docs/assets/user-guide_mcp-tools_compare-runs.md.BQ_kIptC.lean.js +1 -0
  145. package/public/docs/assets/user-guide_mcp-tools_diagnose-run.md.azCZXkH8.js +44 -0
  146. package/public/docs/assets/{user-guide_mcp-tools_diagnose-run.md.BP1vnHA5.lean.js → user-guide_mcp-tools_diagnose-run.md.azCZXkH8.lean.js} +1 -1
  147. package/public/docs/assets/{user-guide_mcp-tools_evaluate-budgets.md.BB0nDY3Z.js → user-guide_mcp-tools_evaluate-budgets.md.dpQpRQ7z.js} +2 -2
  148. package/public/docs/assets/{user-guide_mcp-tools_evaluate-budgets.md.BB0nDY3Z.lean.js → user-guide_mcp-tools_evaluate-budgets.md.dpQpRQ7z.lean.js} +1 -1
  149. package/public/docs/assets/{user-guide_mcp-tools_get-finding-evidence.md.rKyu4wts.js → user-guide_mcp-tools_get-finding-evidence.md.CH6FkNLX.js} +2 -1
  150. package/public/docs/assets/{user-guide_mcp-tools_get-finding-evidence.md.rKyu4wts.lean.js → user-guide_mcp-tools_get-finding-evidence.md.CH6FkNLX.lean.js} +1 -1
  151. package/public/docs/assets/{user-guide_mcp-tools_get-run-summary.md.DpxZ4ZNp.js → user-guide_mcp-tools_get-run-summary.md.EhaIsele.js} +1 -1
  152. package/public/docs/assets/user-guide_run-comparison.md.B_LOkdBf.js +1 -0
  153. package/public/docs/assets/user-guide_run-comparison.md.B_LOkdBf.lean.js +1 -0
  154. package/public/docs/assets/user-guide_understanding-findings.md.C4riKCKl.js +1 -0
  155. package/public/docs/assets/user-guide_understanding-findings.md.C4riKCKl.lean.js +1 -0
  156. package/public/docs/contributor-guide/architecture/board-widgets/caching-and-memory.html +6 -10
  157. package/public/docs/contributor-guide/architecture/board-widgets/plan-advisor.html +6 -10
  158. package/public/docs/contributor-guide/architecture/board-widgets/visual-system-and-templating.html +6 -10
  159. package/public/docs/contributor-guide/architecture/board-widgets.html +6 -10
  160. package/public/docs/contributor-guide/architecture/detector-contract/plan-attribution.html +6 -10
  161. package/public/docs/contributor-guide/architecture/detector-contract/threshold-tables.html +6 -10
  162. package/public/docs/contributor-guide/architecture/detector-contract.html +6 -10
  163. package/public/docs/contributor-guide/architecture/drill-down/plan-graph.html +6 -10
  164. package/public/docs/contributor-guide/architecture/drill-down.html +6 -10
  165. package/public/docs/contributor-guide/architecture/impact-estimation/caveats-tuning-and-coverage.html +6 -10
  166. package/public/docs/contributor-guide/architecture/impact-estimation/stage-union-rollup.html +6 -10
  167. package/public/docs/contributor-guide/architecture/impact-estimation.html +6 -10
  168. package/public/docs/contributor-guide/architecture/index.html +5 -9
  169. package/public/docs/contributor-guide/architecture/overview.html +6 -10
  170. package/public/docs/contributor-guide/architecture/state-and-history/history-server-intake.html +5 -9
  171. package/public/docs/contributor-guide/architecture/state-and-history/run-comparison-internals.html +6 -10
  172. package/public/docs/contributor-guide/architecture/state-and-history.html +5 -9
  173. package/public/docs/contributor-guide/architecture/widget-rendering/findings-tab.html +6 -10
  174. package/public/docs/contributor-guide/architecture/widget-rendering/investigation-routing.html +5 -9
  175. package/public/docs/contributor-guide/architecture/widget-rendering/list-sort-mode.html +6 -10
  176. package/public/docs/contributor-guide/architecture/widget-rendering/reference-section.html +5 -9
  177. package/public/docs/contributor-guide/architecture/widget-rendering/row-expand-contract.html +6 -10
  178. package/public/docs/contributor-guide/architecture/widget-rendering.html +6 -10
  179. package/public/docs/contributor-guide/architecture/worker-protocol/cli-and-mcp.html +6 -10
  180. package/public/docs/contributor-guide/architecture/worker-protocol/core-and-event-validation.html +6 -10
  181. package/public/docs/contributor-guide/architecture/worker-protocol/evidence-availability.html +7 -11
  182. package/public/docs/contributor-guide/architecture/worker-protocol/evidence-report.html +6 -10
  183. package/public/docs/contributor-guide/architecture/worker-protocol.html +6 -10
  184. package/public/docs/contributor-guide/contributing.html +6 -10
  185. package/public/docs/contributor-guide/development-setup.html +8 -12
  186. package/public/docs/contributor-guide/testing.html +9 -10
  187. package/public/docs/favicon.svg +2 -2
  188. package/public/docs/hashmap.json +1 -1
  189. package/public/docs/index.html +6 -10
  190. package/public/docs/logo-dark.svg +1 -0
  191. package/public/docs/logo-light.svg +1 -0
  192. package/public/docs/tuning-reference/anti-patterns.html +5 -9
  193. package/public/docs/tuning-reference/aqe.html +5 -9
  194. package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +5 -9
  195. package/public/docs/tuning-reference/bottleneck-cold-start.html +5 -9
  196. package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +5 -9
  197. package/public/docs/tuning-reference/bottleneck-failures.html +5 -9
  198. package/public/docs/tuning-reference/bottleneck-gc.html +5 -9
  199. package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +5 -9
  200. package/public/docs/tuning-reference/bottleneck-memory-utilization.html +5 -9
  201. package/public/docs/tuning-reference/bottleneck-retry-waste.html +5 -9
  202. package/public/docs/tuning-reference/bottleneck-shuffle.html +5 -9
  203. package/public/docs/tuning-reference/bottleneck-skew.html +5 -9
  204. package/public/docs/tuning-reference/bottleneck-slow-host.html +5 -9
  205. package/public/docs/tuning-reference/bottleneck-small-files.html +5 -9
  206. package/public/docs/tuning-reference/bottleneck-spill.html +5 -9
  207. package/public/docs/tuning-reference/bottleneck-straggler.html +5 -9
  208. package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +5 -9
  209. package/public/docs/tuning-reference/bottleneck-utilization.html +5 -9
  210. package/public/docs/tuning-reference/caching.html +5 -9
  211. package/public/docs/tuning-reference/cluster-config.html +5 -9
  212. package/public/docs/tuning-reference/config.html +5 -9
  213. package/public/docs/tuning-reference/data-formats.html +5 -9
  214. package/public/docs/tuning-reference/index.html +5 -9
  215. package/public/docs/tuning-reference/intro.html +5 -9
  216. package/public/docs/tuning-reference/joins.html +5 -9
  217. package/public/docs/tuning-reference/memory-model.html +5 -9
  218. package/public/docs/tuning-reference/metrics.html +5 -9
  219. package/public/docs/tuning-reference/partitioning.html +5 -9
  220. package/public/docs/tuning-reference/pyspark.html +5 -9
  221. package/public/docs/tuning-reference/shuffle.html +5 -9
  222. package/public/docs/tuning-reference/spark-architecture.html +5 -9
  223. package/public/docs/tuning-reference/table-formats.html +5 -9
  224. package/public/docs/user-guide/alternative-log-retrieval/managed-platforms.html +5 -9
  225. package/public/docs/user-guide/alternative-log-retrieval/ssh-bastion.html +5 -9
  226. package/public/docs/user-guide/alternative-log-retrieval.html +5 -9
  227. package/public/docs/user-guide/getting-started/ci-and-automation.html +17 -15
  228. package/public/docs/user-guide/getting-started/reading-the-dashboard.html +6 -10
  229. package/public/docs/user-guide/getting-started/regression-metric-keys.html +5 -9
  230. package/public/docs/user-guide/getting-started/tuning-thresholds.html +7 -11
  231. package/public/docs/user-guide/getting-started.html +5 -9
  232. package/public/docs/user-guide/mcp-tools/compare-runs.html +16 -15
  233. package/public/docs/user-guide/mcp-tools/diagnose-run.html +28 -11
  234. package/public/docs/user-guide/mcp-tools/evaluate-budgets.html +6 -10
  235. package/public/docs/user-guide/mcp-tools/get-finding-documentation.html +5 -9
  236. package/public/docs/user-guide/mcp-tools/get-finding-evidence.html +7 -10
  237. package/public/docs/user-guide/mcp-tools/get-reference-doc.html +5 -9
  238. package/public/docs/user-guide/mcp-tools/get-run-summary.html +6 -10
  239. package/public/docs/user-guide/mcp-tools/list-runs.html +5 -9
  240. package/public/docs/user-guide/mcp-tools.html +6 -10
  241. package/public/docs/user-guide/run-comparison/how-stages-are-matched.html +5 -9
  242. package/public/docs/user-guide/run-comparison.html +6 -10
  243. package/public/docs/user-guide/understanding-findings.html +6 -10
  244. package/public/export-template.html +46 -46
  245. package/public/favicon.svg +2 -2
  246. package/public/index.html +8 -10
  247. package/public/sample-runs/sample-run.ndjson.gz +0 -0
  248. package/vendor-core/allocation.js +126 -39
  249. package/vendor-core/analyzer.js +85 -58
  250. package/vendor-core/api-merge-writes.js +3 -0
  251. package/vendor-core/aqe-skew.js +347 -0
  252. package/vendor-core/cli/budgets.js +6 -4
  253. package/vendor-core/cli/collect-run-pair.js +89 -0
  254. package/vendor-core/cli/collect-run-worker.js +16 -0
  255. package/vendor-core/cli/collect-run.js +1 -2
  256. package/vendor-core/cli/native-zstd.js +12 -16
  257. package/vendor-core/comparability.js +234 -0
  258. package/vendor-core/comparison-output.js +15 -7
  259. package/vendor-core/comparison-verdict.js +105 -25
  260. package/vendor-core/core-source-hash.txt +1 -1
  261. package/vendor-core/core-time-series.js +0 -1
  262. package/vendor-core/core-usage-locality.js +1 -1
  263. package/vendor-core/delta-log-paths.js +10 -1
  264. package/vendor-core/detectors.js +1078 -416
  265. package/vendor-core/docs-config.js +0 -4
  266. package/vendor-core/docs-content/detection/cache.md +2 -1
  267. package/vendor-core/docs-content/detection/cfg.md +19 -11
  268. package/vendor-core/docs-content/detection/cold.md +2 -1
  269. package/vendor-core/docs-content/detection/gc.md +7 -3
  270. package/vendor-core/docs-content/detection/host.md +11 -1
  271. package/vendor-core/docs-content/detection/mem.md +17 -6
  272. package/vendor-core/docs-content/detection/part.md +3 -1
  273. package/vendor-core/docs-content/detection/plan.md +55 -13
  274. package/vendor-core/docs-content/detection/shfl.md +11 -5
  275. package/vendor-core/docs-content/detection/skew.md +48 -1
  276. package/vendor-core/docs-content/detection/slow.md +4 -2
  277. package/vendor-core/docs-content/detection/spec.md +6 -1
  278. package/vendor-core/docs-content/detection/spill.md +6 -3
  279. package/vendor-core/docs-content/detection/strag.md +19 -6
  280. package/vendor-core/docs-content/detection/tiny.md +9 -3
  281. package/vendor-core/docs-content/detection/util.md +6 -2
  282. package/vendor-core/effective-conf.js +7 -10
  283. package/vendor-core/efficiency-model.js +24 -16
  284. package/vendor-core/etl-phases.js +1 -2
  285. package/vendor-core/event-handlers.js +175 -57
  286. package/vendor-core/event-schemas.js +21 -16
  287. package/vendor-core/evidence-availability.js +9 -2
  288. package/vendor-core/evidence-report.js +118 -35
  289. package/vendor-core/executor-peaks.js +41 -0
  290. package/vendor-core/export-data.js +5 -5
  291. package/vendor-core/finding-identity.js +78 -0
  292. package/vendor-core/finding-presentation.js +129 -39
  293. package/vendor-core/finding-types.js +108 -30
  294. package/vendor-core/format-utils.js +14 -15
  295. package/vendor-core/html-export.js +1 -1
  296. package/vendor-core/impact-band.js +2 -2
  297. package/vendor-core/impact-format.js +47 -19
  298. package/vendor-core/impact-model.js +28 -17
  299. package/vendor-core/job-groups.js +4 -4
  300. package/vendor-core/mcp-server-factory.js +48 -12
  301. package/vendor-core/mcp-tools.js +179 -24
  302. package/vendor-core/median.js +2 -2
  303. package/vendor-core/nested-loop-join.js +73 -0
  304. package/vendor-core/occupancy.js +1 -2
  305. package/vendor-core/parser-worker.js +1 -1
  306. package/vendor-core/plan-graph-model.js +14 -22
  307. package/vendor-core/plan-node-detail.js +2 -3
  308. package/vendor-core/plan-summary.js +24 -19
  309. package/vendor-core/plan-tree-walk.js +6 -8
  310. package/vendor-core/python-stage.js +12 -1
  311. package/vendor-core/recommendation-rollup.js +13 -12
  312. package/vendor-core/redact.js +52 -46
  313. package/vendor-core/remediation.js +10 -5
  314. package/vendor-core/run-aggregates.js +6 -8
  315. package/vendor-core/run-comparison.js +226 -66
  316. package/vendor-core/run-identity.js +12 -0
  317. package/vendor-core/run-interpretation.js +21 -0
  318. package/vendor-core/run-metrics.js +2 -2
  319. package/vendor-core/run-output.js +44 -11
  320. package/vendor-core/run-totals.js +12 -0
  321. package/vendor-core/run-verdict.js +76 -3
  322. package/vendor-core/scaling-sim.js +3 -4
  323. package/vendor-core/snappy-block.js +2 -2
  324. package/vendor-core/spark-conf.js +168 -0
  325. package/vendor-core/sql-stages.js +2 -2
  326. package/vendor-core/stage-alignment.js +2 -12
  327. package/vendor-core/stage-identity.js +58 -3
  328. package/vendor-core/stage-label.js +14 -0
  329. package/vendor-core/stage-plan-nodes.js +17 -3
  330. package/vendor-core/stage-quantiles.js +141 -9
  331. package/vendor-core/stage-structure.js +17 -3
  332. package/vendor-core/threshold-overrides.js +9 -3
  333. package/vendor-core/types.js +70 -23
  334. package/vendor-core/wall-clock.js +8 -0
  335. package/vendor-core/wasted-core-hours.js +12 -12
  336. package/vendor-core/write-targets.js +146 -14
  337. package/vendor-core/zstd-worker-client.js +1 -1
  338. package/vendor-core/zstd-worker.js +1 -1
  339. package/public/assets/AutoscalingChurn-8t3U3isq.js +0 -1
  340. package/public/assets/CacheUtilization-CJs9tTum.js +0 -1
  341. package/public/assets/CachingOpportunity-D1NcHs0V.js +0 -1
  342. package/public/assets/ColdStart-CdRJ9gD8.js +0 -1
  343. package/public/assets/ConfigAudit-B5Gbe5js.js +0 -1
  344. package/public/assets/CoreUsageArea-a--NTRGY.js +0 -1
  345. package/public/assets/Dashboard-C1hNeX49.js +0 -2
  346. package/public/assets/DisclosureContext-ZpE6CkHx.js +0 -1
  347. package/public/assets/DuplicatePlanSubtree-dobXdz7E.js +0 -1
  348. package/public/assets/ExecutorUtilization-D9grwi7t.js +0 -1
  349. package/public/assets/GcPressure-8-G2ri10.js +0 -1
  350. package/public/assets/IncompleteRun-B91lky7a.js +0 -1
  351. package/public/assets/JobFailures-BsWvBMyJ.js +0 -1
  352. package/public/assets/MemoryUtilization-BM5schZI.js +0 -1
  353. package/public/assets/OverBroadcast-DdN8JIJH.js +0 -1
  354. package/public/assets/PartitionHint-CUvbnnxy.js +0 -1
  355. package/public/assets/PartitionSizing-CY5HDYtp.js +0 -1
  356. package/public/assets/PlanExplorer-DgHCDBD_.js +0 -1
  357. package/public/assets/PlanGraphRoute-DH3KJb8j.js +0 -1
  358. package/public/assets/RetryWaste-DOnE9vGF.js +0 -1
  359. package/public/assets/ShuffleIO-MMnDESkF.js +0 -1
  360. package/public/assets/Skew-BmZZJ5ms.js +0 -1
  361. package/public/assets/SlowHost-CsJzfEqo.js +0 -1
  362. package/public/assets/SmallFiles-BoK3R1Ex.js +0 -1
  363. package/public/assets/SpeculationWaste-CnVxB5AJ.js +0 -1
  364. package/public/assets/Spill-BhNicyBy.js +0 -1
  365. package/public/assets/StageFailed-mAhHU4l_.js +0 -1
  366. package/public/assets/StageFindingGroup-BEtPWcT0.js +0 -1
  367. package/public/assets/StageHeader-DJkYkrsU.js +0 -1
  368. package/public/assets/StageShape-BDxRknLp.js +0 -1
  369. package/public/assets/StageSlowness-BPRw-otN.js +0 -1
  370. package/public/assets/Straggler-CZCbnOWP.js +0 -1
  371. package/public/assets/TaskFailures-C57YcLFQ.js +0 -1
  372. package/public/assets/TinyTask-Bi84qU7n.js +0 -1
  373. package/public/assets/UnderBroadcast-DdQV7htE.js +0 -1
  374. package/public/assets/charts-vendor-0VMaLVLN.js +0 -59
  375. package/public/assets/finding-anchor-Cl6_5hfV.js +0 -1
  376. package/public/assets/impact-sort-CssZ6MT2.js +0 -1
  377. package/public/assets/index-2h_TgUAb.css +0 -2
  378. package/public/assets/index-B-03mG7K.js +0 -14
  379. package/public/assets/plan-graph-vendor-BYl-AzN5.js +0 -7
  380. package/public/assets/react-vendor-DEdfrRTJ.js +0 -9
  381. package/public/assets/select-CQjNhprm.js +0 -1
  382. package/public/assets/usePagedRows-Dyl6T8Ok.js +0 -1
  383. package/public/assets/useRecentFiles-XZEnLlal.js +0 -11
  384. package/public/assets/useSortMode-Dhvit8dt.js +0 -1
  385. package/public/docs/assets/chunks/@localSearchIndexroot.u_e5bQz4.js +0 -1
  386. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.YQcj5EI4.js +0 -1
  387. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.YQcj5EI4.lean.js +0 -1
  388. package/public/docs/assets/contributor-guide_architecture_board-widgets_plan-advisor.md.RlzvUmNm.js +0 -1
  389. package/public/docs/assets/contributor-guide_architecture_board-widgets_visual-system-and-templating.md.DYgUpIJB.js +0 -1
  390. package/public/docs/assets/contributor-guide_architecture_board-widgets_visual-system-and-templating.md.DYgUpIJB.lean.js +0 -1
  391. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.wj6Et6UD.js +0 -1
  392. package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.yNex4bys.js +0 -1
  393. package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.yNex4bys.lean.js +0 -1
  394. package/public/docs/assets/contributor-guide_architecture_detector-contract_threshold-tables.md.CKjWG56Y.js +0 -1
  395. package/public/docs/assets/contributor-guide_architecture_drill-down_plan-graph.md.DwOozIEs.js +0 -1
  396. package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.CZv_ZGOp.js +0 -1
  397. package/public/docs/assets/contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.BUucRc0A.js +0 -1
  398. package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.DdCGtAGu.js +0 -1
  399. package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.DdCGtAGu.lean.js +0 -1
  400. package/public/docs/assets/contributor-guide_architecture_overview.md.C1sSvm9i.js +0 -1
  401. package/public/docs/assets/contributor-guide_architecture_state-and-history_run-comparison-internals.md.CZA0JLtV.js +0 -1
  402. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.BOZ1azXG.js +0 -1
  403. package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.BQXycK6G.js +0 -1
  404. package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.BQXycK6G.lean.js +0 -1
  405. package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.BAnhi2-d.lean.js +0 -1
  406. package/public/docs/assets/contributor-guide_architecture_worker-protocol_cli-and-mcp.md.DC1YqXBp.js +0 -1
  407. package/public/docs/assets/contributor-guide_architecture_worker-protocol_evidence-report.md.DVGZOWvW.js +0 -1
  408. package/public/docs/assets/contributor-guide_contributing.md.CQMvGwFt.js +0 -1
  409. package/public/docs/assets/contributor-guide_development-setup.md.D9bu4j_c.lean.js +0 -1
  410. package/public/docs/assets/contributor-guide_testing.md.By6XGR9a.js +0 -1
  411. package/public/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  412. package/public/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  413. package/public/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  414. package/public/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  415. package/public/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  416. package/public/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  417. package/public/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  418. package/public/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  419. package/public/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  420. package/public/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  421. package/public/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  422. package/public/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  423. package/public/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  424. package/public/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  425. package/public/docs/assets/style.tmDhD3c8.css +0 -1
  426. package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.OUQqw3mI.js +0 -23
  427. package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.OUQqw3mI.lean.js +0 -1
  428. package/public/docs/assets/user-guide_getting-started_reading-the-dashboard.md.Obf3W3__.js +0 -1
  429. package/public/docs/assets/user-guide_mcp-tools_compare-runs.md.Cc_gLoix.lean.js +0 -1
  430. package/public/docs/assets/user-guide_mcp-tools_diagnose-run.md.BP1vnHA5.js +0 -23
  431. package/public/docs/assets/user-guide_run-comparison.md.BUALkohi.js +0 -1
  432. package/public/docs/assets/user-guide_run-comparison.md.BUALkohi.lean.js +0 -1
  433. package/public/docs/assets/user-guide_understanding-findings.md.C9YRruMT.js +0 -1
  434. package/public/docs/assets/user-guide_understanding-findings.md.C9YRruMT.lean.js +0 -1
  435. /package/public/docs/assets/{contributor-guide_architecture_board-widgets_caching-and-memory.md.8bH1HnZp.lean.js → contributor-guide_architecture_board-widgets_caching-and-memory.md.BYDo3ClR.lean.js} +0 -0
  436. /package/public/docs/assets/{contributor-guide_architecture_board-widgets_plan-advisor.md.RlzvUmNm.lean.js → contributor-guide_architecture_board-widgets_plan-advisor.md.ajUAVdbc.lean.js} +0 -0
  437. /package/public/docs/assets/{contributor-guide_architecture_overview.md.C1sSvm9i.lean.js → contributor-guide_architecture_overview.md.nxkpOhgf.lean.js} +0 -0
  438. /package/public/docs/assets/{contributor-guide_architecture_widget-rendering.md.BOZ1azXG.lean.js → contributor-guide_architecture_widget-rendering.md.BrSz8Ezh.lean.js} +0 -0
  439. /package/public/docs/assets/{contributor-guide_architecture_widget-rendering_list-sort-mode.md.BuHKgH0C.lean.js → contributor-guide_architecture_widget-rendering_list-sort-mode.md.37hcZJ7q.lean.js} +0 -0
  440. /package/public/docs/assets/{contributor-guide_architecture_widget-rendering_row-expand-contract.md.ZT89u9f1.lean.js → contributor-guide_architecture_widget-rendering_row-expand-contract.md.mK_VmAWk.lean.js} +0 -0
  441. /package/public/docs/assets/{contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DSVFPpWb.lean.js → contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DVSXn-bb.lean.js} +0 -0
  442. /package/public/docs/assets/{contributor-guide_contributing.md.CQMvGwFt.lean.js → contributor-guide_contributing.md.DBW4drtZ.lean.js} +0 -0
  443. /package/public/docs/assets/{user-guide_getting-started_reading-the-dashboard.md.Obf3W3__.lean.js → user-guide_getting-started_reading-the-dashboard.md.CGaxPX_1.lean.js} +0 -0
  444. /package/public/docs/assets/{user-guide_mcp-tools.md.C65SjWUL.lean.js → user-guide_mcp-tools.md.49r3L2YE.lean.js} +0 -0
  445. /package/public/docs/assets/{user-guide_mcp-tools_get-run-summary.md.DpxZ4ZNp.lean.js → user-guide_mcp-tools_get-run-summary.md.EhaIsele.lean.js} +0 -0
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Skew-BmZZJ5ms.js","./rolldown-runtime-hePW80VL.js","./charts-vendor-0VMaLVLN.js","./DisclosureContext-ZpE6CkHx.js","./react-vendor-DEdfrRTJ.js","./plan-graph-vendor-BYl-AzN5.js","./plan-graph-vendor-DLioOiRN.css","./StageFindingGroup-BEtPWcT0.js","./useRecentFiles-XZEnLlal.js","./index-B-03mG7K.js","./index-2h_TgUAb.css","./impact-sort-CssZ6MT2.js","./finding-anchor-Cl6_5hfV.js","./usePagedRows-Dyl6T8Ok.js","./useSortMode-Dhvit8dt.js","./StageHeader-DJkYkrsU.js","./PlanExplorer-DgHCDBD_.js","./StageShape-BDxRknLp.js","./TinyTask-Bi84qU7n.js","./ShuffleIO-MMnDESkF.js","./select-CQjNhprm.js","./PartitionHint-CUvbnnxy.js","./PartitionSizing-CY5HDYtp.js","./Spill-BhNicyBy.js","./GcPressure-8-G2ri10.js","./StageFailed-mAhHU4l_.js","./TaskFailures-C57YcLFQ.js","./RetryWaste-DOnE9vGF.js","./SlowHost-CsJzfEqo.js","./StageSlowness-BPRw-otN.js","./Straggler-CZCbnOWP.js","./SpeculationWaste-CnVxB5AJ.js","./ColdStart-CdRJ9gD8.js","./MemoryUtilization-BM5schZI.js","./ExecutorUtilization-D9grwi7t.js","./CachingOpportunity-D1NcHs0V.js","./JobFailures-BsWvBMyJ.js","./ConfigAudit-B5Gbe5js.js","./DuplicatePlanSubtree-dobXdz7E.js","./SmallFiles-BoK3R1Ex.js","./UnderBroadcast-DdQV7htE.js","./OverBroadcast-DdN8JIJH.js","./CacheUtilization-CJs9tTum.js","./CoreUsageArea-a--NTRGY.js","./AutoscalingChurn-8t3U3isq.js","./IncompleteRun-B91lky7a.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{D as t,M as n,O as r,T as i,_ as a,a as o,d as s,f as c,i as l,l as u,n as d,o as f,p,s as m,u as h,v as g}from"./charts-vendor-0VMaLVLN.js";import{A as _,D as v,E as y,M as b,O as x,P as S,j as C,k as ee}from"./react-vendor-DEdfrRTJ.js";import{B as te,E as w,G as ne,K as re,O as ie,P as T,S as ae,T as E,Tt as D,U as oe,Y as O,Z as k,_ as se,_t as ce,at as le,b as A,bt as j,d as ue,g as de,gt as fe,h as pe,ht as me,j as he,l as ge,lt as _e,m as ve,o as ye,p as M,q as be,s as xe,tt as Se,u as Ce,ut as we,v as Te,vt as Ee,wt as De,y as Oe,yt as N}from"./DisclosureContext-ZpE6CkHx.js";import{p as ke}from"./plan-graph-vendor-BYl-AzN5.js";import{A as Ae,C as je,D as Me,E as Ne,O as Pe,S as Fe,T as Ie,_ as Le,a as Re,b as ze,d as P,f as Be,g as Ve,h as He,i as Ue,k as We,l as Ge,m as F,n as Ke,o as qe,p as Je,r as Ye,s as Xe,t as Ze,u as Qe,v as $e,w as et,x as tt,y as nt}from"./useRecentFiles-XZEnLlal.js";import{A as rt,C as it,D as at,Dt as ot,H as st,L as ct,M as I,Mt as lt,N as ut,O as dt,Ot as ft,P as pt,R as mt,T as ht,U as gt,V as L,W as R,Y as _t,a as vt,b as z,c as yt,j as bt,jt as B,k as V,l as xt,lt as St,s as Ct,u as wt,w as Tt,x as Et,xt as Dt,z as Ot}from"./index-B-03mG7K.js";var kt={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};kt.node;var At=ce(kt),jt={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};jt.node;var Mt=ce(jt),Nt={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Nt.node;var Pt=ce(Nt),Ft={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};Ft.node;var It=ce(Ft),Lt={name:`list-filter`,size:24,node:[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]};Lt.node;var Rt=ce(Lt),zt={name:`search-x`,size:24,node:[[`path`,{d:`m13.5 8.5-5 5`,key:`1cs55j`}],[`path`,{d:`m8.5 8.5 5 5`,key:`a8mexj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]};zt.node;var Bt=ce(zt),H=e(n(),1),Vt=(0,H.lazy)(()=>z(()=>import(`./Skew-BmZZJ5ms.js`).then(e=>({default:e.Skew})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),import.meta.url)),Ht=(0,H.lazy)(()=>z(()=>import(`./StageShape-BDxRknLp.js`).then(e=>({default:e.StageShape})),__vite__mapDeps([17,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),import.meta.url)),Ut=(0,H.lazy)(()=>z(()=>import(`./TinyTask-Bi84qU7n.js`).then(e=>({default:e.TinyTask})),__vite__mapDeps([18,1,2,5,6,7,3,4,8,9,10,11,12,13,14,15,16]),import.meta.url)),Wt=(0,H.lazy)(()=>z(()=>import(`./ShuffleIO-MMnDESkF.js`).then(e=>({default:e.ShuffleIO})),__vite__mapDeps([19,1,2,3,4,5,6,8,9,10,11,12,13,14,15,20,16,21]),import.meta.url)),Gt=(0,H.lazy)(()=>z(()=>import(`./PartitionSizing-CY5HDYtp.js`).then(e=>({default:e.PartitionSizing})),__vite__mapDeps([22,1,2,3,4,5,6,8,9,10,11,12,13,14,15,20,16]),import.meta.url)),Kt=(0,H.lazy)(()=>z(()=>import(`./Spill-BhNicyBy.js`).then(e=>({default:e.Spill})),__vite__mapDeps([23,1,2,3,4,5,6,8,9,10,11,12,13,14,16,21]),import.meta.url)),qt=(0,H.lazy)(()=>z(()=>import(`./GcPressure-8-G2ri10.js`).then(e=>({default:e.GcPressure})),__vite__mapDeps([24,1,2,3,4,5,6,8,9,10,11,12,13,14,15]),import.meta.url)),Jt=(0,H.lazy)(()=>z(()=>import(`./StageFailed-mAhHU4l_.js`).then(e=>({default:e.StageFailed})),__vite__mapDeps([25,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),Yt=(0,H.lazy)(()=>z(()=>import(`./TaskFailures-C57YcLFQ.js`).then(e=>({default:e.TaskFailures})),__vite__mapDeps([26,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),Xt=(0,H.lazy)(()=>z(()=>import(`./RetryWaste-DOnE9vGF.js`).then(e=>({default:e.RetryWaste})),__vite__mapDeps([27,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),Zt=(0,H.lazy)(()=>z(()=>import(`./SlowHost-CsJzfEqo.js`).then(e=>({default:e.SlowHost})),__vite__mapDeps([28,1,2,3,4,5,6,8,9,10,11,12,13,14,15]),import.meta.url)),Qt=(0,H.lazy)(()=>z(()=>import(`./StageSlowness-BPRw-otN.js`).then(e=>({default:e.StageSlowness})),__vite__mapDeps([29,1,2,3,4,5,6,9,10,11,8,12,13,14,15]),import.meta.url)),$t=(0,H.lazy)(()=>z(()=>import(`./Straggler-CZCbnOWP.js`).then(e=>({default:e.Straggler})),__vite__mapDeps([30,1,2,3,4,5,6,8,9,10,11,12,13,14,15]),import.meta.url)),en=(0,H.lazy)(()=>z(()=>import(`./SpeculationWaste-CnVxB5AJ.js`).then(e=>({default:e.SpeculationWaste})),__vite__mapDeps([31,1,2,3,4,5,6,9,10,11,8,12,13,14,15]),import.meta.url)),tn=(0,H.lazy)(()=>z(()=>import(`./ColdStart-CdRJ9gD8.js`).then(e=>({default:e.ColdStart})),__vite__mapDeps([32,1,2,3,4,5,6,9,10,11,8,12,13,14]),import.meta.url)),nn=(0,H.lazy)(()=>z(()=>import(`./MemoryUtilization-BM5schZI.js`).then(e=>({default:e.MemoryUtilization})),__vite__mapDeps([33,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),rn=(0,H.lazy)(()=>z(()=>import(`./ExecutorUtilization-D9grwi7t.js`).then(e=>({default:e.ExecutorUtilization})),__vite__mapDeps([34,1,2,3,4,5,6,9,10,12,13]),import.meta.url)),an=(0,H.lazy)(()=>z(()=>import(`./CachingOpportunity-D1NcHs0V.js`).then(e=>({default:e.CachingOpportunity})),__vite__mapDeps([35,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),on=(0,H.lazy)(()=>z(()=>import(`./JobFailures-BsWvBMyJ.js`).then(e=>({default:e.JobFailures})),__vite__mapDeps([36,3,1,2,4,5,6,8,9,10]),import.meta.url)),sn=(0,H.lazy)(()=>z(()=>import(`./ConfigAudit-B5Gbe5js.js`).then(e=>({default:e.ConfigAudit})),__vite__mapDeps([37,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),cn=(0,H.lazy)(()=>z(()=>import(`./DuplicatePlanSubtree-dobXdz7E.js`).then(e=>({default:e.DuplicatePlanSubtree})),__vite__mapDeps([38,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),ln=(0,H.lazy)(()=>z(()=>import(`./SmallFiles-BoK3R1Ex.js`).then(e=>({default:e.SmallFiles})),__vite__mapDeps([39,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),un=(0,H.lazy)(()=>z(()=>import(`./UnderBroadcast-DdQV7htE.js`).then(e=>({default:e.UnderBroadcast})),__vite__mapDeps([40,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),dn=(0,H.lazy)(()=>z(()=>import(`./OverBroadcast-DdN8JIJH.js`).then(e=>({default:e.OverBroadcast})),__vite__mapDeps([41,1,2,3,4,5,6,8,9,10,11,12,13,14]),import.meta.url)),fn=(0,H.lazy)(()=>z(()=>import(`./CacheUtilization-CJs9tTum.js`).then(e=>({default:e.CacheUtilization})),__vite__mapDeps([42,1,2,3,4,5,6,8,9,10,12,13]),import.meta.url)),pn=(0,H.lazy)(()=>z(()=>import(`./CoreUsageArea-a--NTRGY.js`).then(e=>({default:e.CoreUsageArea})),__vite__mapDeps([43,1,2,3,4,5,6,8,9,10,13]),import.meta.url)),mn=(0,H.lazy)(()=>z(()=>import(`./AutoscalingChurn-8t3U3isq.js`).then(e=>({default:e.AutoscalingChurn})),__vite__mapDeps([44,1,2,3,4,5,6,8,9,10]),import.meta.url)),hn=(0,H.lazy)(()=>z(()=>import(`./IncompleteRun-B91lky7a.js`).then(e=>({default:e.IncompleteRun})),__vite__mapDeps([45,3,1,2,4,5,6,9,10]),import.meta.url));function U(e,t){e.displayName=t}U(Vt,`Skew`),U(Ht,`StageShape`),U(Ut,`TinyTask`),U(Wt,`ShuffleIO`),U(Gt,`PartitionSizing`),U(Kt,`Spill`),U(qt,`GcPressure`),U(Jt,`StageFailed`),U(Yt,`TaskFailures`),U(Xt,`RetryWaste`),U(Zt,`SlowHost`),U(Qt,`StageSlowness`),U($t,`Straggler`),U(en,`SpeculationWaste`),U(tn,`ColdStart`),U(nn,`MemoryUtilization`),U(rn,`ExecutorUtilization`),U(an,`CachingOpportunity`),U(on,`JobFailures`),U(sn,`ConfigAudit`),U(cn,`DuplicatePlanSubtree`),U(ln,`SmallFiles`),U(un,`UnderBroadcast`),U(dn,`OverBroadcast`),U(fn,`CacheUtilization`),U(pn,`CoreUsageArea`),U(mn,`AutoscalingChurn`),U(hn,`IncompleteRun`);var gn={incompleteRun:{component:hn,region:`action`,widgetId:`incomplete-run`,routeable:!0},skew:{component:Vt,region:`action`,widgetId:`skew`,routeable:!0},stageShape:{component:Ht,region:`action`,widgetId:`stage-shape`,routeable:!0},tinyTask:{component:Ut,region:`action`,widgetId:`tiny-task`,routeable:!0},shuffle:{component:Wt,region:`action`,widgetId:`shuffle-io`,routeable:!0},partitionSizing:{component:Gt,region:`action`,widgetId:`partition-sizing`,routeable:!0},spill:{component:Kt,region:`action`,widgetId:`spill`,routeable:!0},gc:{component:qt,region:`action`,widgetId:`gc-pressure`,routeable:!0},stageFailed:{component:Jt,region:`action`,widgetId:`stage-failed`,routeable:!0},failures:{component:Yt,region:`action`,widgetId:`task-failures`,routeable:!0},retryWaste:{component:Xt,region:`action`,widgetId:`retry-waste`,routeable:!0},slowHost:{component:Zt,region:`action`,widgetId:`slow-host`,routeable:!0},stageSlowness:{component:Qt,region:`action`,widgetId:`stage-slowness`,routeable:!0},straggler:{component:$t,region:`action`,widgetId:`straggler`,routeable:!0},speculationWaste:{component:en,region:`action`,widgetId:`speculation-waste`,routeable:!0},coldStart:{component:tn,region:`action`,widgetId:`cold-start`,routeable:!0},memoryUtilization:{component:nn,region:`reference`,widgetId:`memory-utilization`,routeable:!0},utilization:{component:rn,region:`reference`,widgetId:`executor-utilization`,routeable:!0},coreLocality:{component:pn,region:`reference`,widgetId:`core-usage-area`,routeable:!0},cachingOpportunity:{component:an,region:`action`,widgetId:`caching-opportunity`,routeable:!0},cacheUtilization:{component:fn,region:`reference`,widgetId:`cache-utilization`,routeable:!0},jobFailureRate:{component:on,region:`action`,widgetId:`job-failures`,routeable:!0},autoscalingChurn:{component:mn,region:`action`,widgetId:`autoscaling-churn`,routeable:!0},configAudit:{component:sn,region:`action`,widgetId:`config-audit`,routeable:!0},duplicatePlanSubtree:{component:cn,region:`action`,widgetId:`duplicate-plan-subtree`,routeable:!0},smallFiles:{component:ln,region:`action`,widgetId:`small-files`,routeable:!0},underBroadcast:{component:un,region:`action`,widgetId:`under-broadcast`,routeable:!0},overBroadcast:{component:dn,region:`action`,widgetId:`over-broadcast`,routeable:!0}},_n={action:0,reference:1};function vn(e){return Object.entries(e).filter(([e])=>gn[e]!==void 0).map(([e,{order:t}])=>({entry:gn[e],type:e,order:t})).sort((e,t)=>_n[e.entry.region]-_n[t.entry.region]||e.order-t.order).map(({entry:e,type:t})=>({component:e.component,region:e.region,widgetId:e.widgetId,type:t}))}var yn=new Set([`cacheUtilization`,`memoryUtilization`,`utilization`]);function bn(e){let t=gn[e];return t!==void 0&&t.region===`reference`&&!yn.has(e)}function xn(){return Object.entries(gn).filter(([e])=>bn(e)).map(([,e])=>({component:e.component,widgetId:e.widgetId}))}var W=ke(),Sn={clean:{box:`border-clean/40 bg-clean/10`,icon:`text-clean`,title:`text-clean`},neutral:{box:`border-border/60 bg-muted/40`,icon:`text-muted-foreground`,title:`text-foreground`}};function Cn({icon:e,tone:t=`neutral`,title:n,description:r,action:i,className:a}){let o=Sn[t];return(0,W.jsxs)(`div`,{className:D(`flex items-start gap-3 rounded-xl border p-4`,o.box,a),children:[(0,W.jsx)(e,{"aria-hidden":`true`,className:D(`mt-0.5 size-4 shrink-0`,o.icon)}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:D(`text-sm font-medium`,o.title),children:n}),r?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r}):null]}),i]})}var wn=[`critical`,`warning`,`info`];function Tn(){return{impactBands:new Set,types:new Set,stages:new Set}}function En(e){return e.impactBands.size===0&&e.types.size===0&&e.stages.size===0}function Dn(e,t){return vt(e,{impactBand:t.impactBands,type:t.types,stageId:t.stages})}function On(e,t){return e.filter(e=>Dn(e,t))}function kn(e,t){return[`impactBands`,`types`,`stages`].filter(n=>!Dn(e,{...Tn(),[n]:t[n]}))}function An(e,t){let n=new Set,r=new Set,i=new Set;for(let a of[...e,...t])n.add(a.impactBand),r.add(a.type),a.stageId!=null&&i.add(a.stageId);return{impactBands:wn.filter(e=>n.has(e)),types:[...r].sort(),stages:[...i].sort((e,t)=>e-t)}}function jn(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}function Mn(e,t){let n=new URLSearchParams(e),r=Tn();for(let e of jn(n.get(`impact`)))wn.includes(e)&&r.impactBands.add(e);let i=new Set(t.types);for(let e of jn(n.get(`type`)))i.has(e)&&r.types.add(e);for(let e of jn(n.get(`stage`))){let t=Number(e);Number.isInteger(t)&&r.stages.add(t)}return r}function Nn(e){let t=[];return e.impactBands.size&&t.push(`impact=${wn.filter(t=>e.impactBands.has(t)).join(`,`)}`),e.types.size&&t.push(`type=${[...e.types].sort().join(`,`)}`),e.stages.size&&t.push(`stage=${[...e.stages].sort((e,t)=>e-t).join(`,`)}`),t.length?`?${t.join(`&`)}`:``}var Pn=(0,H.createContext)(null);function Fn(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function In({options:e,fileId:t,children:n}){let[r,i]=(0,H.useState)(()=>Mn(typeof window>`u`?``:window.location.search,e));(0,H.useEffect)(()=>{if(typeof window>`u`)return;let e=Nn(r),t=`${window.location.pathname}${e}${window.location.hash}`;window.history.replaceState(window.history.state,``,t)},[r]);let a=(0,H.useRef)(t);(0,H.useEffect)(()=>{a.current!==t&&(a.current=t,i(Tn()))},[t]),(0,H.useEffect)(()=>()=>{if(typeof window>`u`)return;let e=`${window.location.pathname}${window.location.hash}`;window.history.replaceState(window.history.state,``,e)},[]),(0,H.useEffect)(()=>{if(typeof window>`u`)return;let t=()=>i(Mn(window.location.search,e));return window.addEventListener(`popstate`,t),()=>window.removeEventListener(`popstate`,t)},[e]);let o=(0,H.useCallback)(e=>i(t=>({...t,impactBands:Fn(t.impactBands,e)})),[]),s=(0,H.useCallback)(e=>i(t=>({...t,types:Fn(t.types,e)})),[]),c=(0,H.useCallback)(e=>i(t=>({...t,stages:Fn(t.stages,e)})),[]),l=(0,H.useCallback)(()=>i(Tn()),[]),u=(0,H.useMemo)(()=>({selection:r,toggleImpactBand:o,toggleType:s,toggleStage:c,clearAll:l,replaceSelection:i}),[r,o,s,c,l]);return(0,W.jsx)(Pn.Provider,{value:u,children:n})}function Ln(){let e=(0,H.useContext)(Pn);if(!e)throw Error(`useFindingFilter outside FindingFilterProvider`);return e}function Rn(){let{clearAll:e}=Ln();return(0,W.jsx)(Cn,{icon:Bt,title:`No findings match the active filters`,description:`Adjust or clear the filters to see findings.`,action:(0,W.jsx)(`button`,{type:`button`,onClick:e,className:`cursor-pointer text-sm underline`,children:`Clear all filters`})})}function zn({className:e,orientation:t=`horizontal`,...n}){return(0,W.jsx)(S,{"data-slot":`separator`,orientation:t,className:D(`shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch`,e),...n})}var Bn=H.createContext({size:`default`,variant:`default`,spacing:2,orientation:`horizontal`});function Vn({className:e,variant:t,size:n,spacing:r=2,orientation:i=`horizontal`,children:a,...o}){return(0,W.jsx)(C,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":i,style:{"--gap":r},className:D(`group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch`,e),...o,children:(0,W.jsx)(Bn.Provider,{value:{variant:t,size:n,spacing:r,orientation:i},children:a})})}function Hn({className:e,children:t,variant:n=`default`,size:r=`default`,...i}){let a=H.useContext(Bn);return(0,W.jsx)(b,{"data-slot":`toggle-group-item`,"data-variant":a.variant||n,"data-size":a.size||r,"data-spacing":a.spacing,className:D(`shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t`,Ve({variant:a.variant||n,size:a.size||r}),e),...i,children:t})}var Un={critical:`aria-pressed:bg-critical/10 aria-pressed:text-critical`,warning:`aria-pressed:bg-warning/10 aria-pressed:text-warning`,info:`aria-pressed:bg-info/10 aria-pressed:text-info`};function Wn(e,t,n){let r=new Set(e);for(let e of r)t.has(e)||n(e);for(let e of t)r.has(e)||n(e)}function Gn({label:e,count:t,children:n}){return(0,W.jsxs)($e,{children:[(0,W.jsxs)(tt,{className:D(lt({variant:`outline`,size:`sm`}),`gap-1.5`),"aria-label":`Filter by ${e.toLowerCase()}`,children:[e,t>0&&(0,W.jsx)(`span`,{className:`rounded-full bg-primary px-1.5 text-xs font-medium text-primary-foreground`,children:t}),(0,W.jsx)(fe,{"aria-hidden":`true`,className:`opacity-60`})]}),(0,W.jsx)(ze,{align:`start`,className:`max-h-72 w-56 overflow-y-auto`,children:n})]})}function Kn({options:e,resultCount:t}){let{selection:n,toggleImpactBand:r,toggleType:i,toggleStage:a,clearAll:o}=Ln(),[s,c]=(0,H.useState)(``),[l,u]=(0,H.useState)(``),d=(0,H.useMemo)(()=>{let t=s.trim();return t?e.stages.filter(e=>String(e).includes(t)):e.stages},[e.stages,s]),f=(0,H.useMemo)(()=>{let t=l.trim().toLowerCase();return t?e.types.filter(e=>e.toLowerCase().includes(t)||_e(e).toLowerCase().includes(t)):e.types},[e.types,l]);if(e.impactBands.length===0&&e.types.length===0&&e.stages.length===0)return null;let p=!En(n),m=[...[...n.impactBands].map(e=>({key:`impact-${e}`,label:`impact ${e}`,onRemove:()=>r(e)})),...[...n.types].map(e=>({key:`type-${e}`,label:`type ${e}`,onRemove:()=>i(e)})),...[...n.stages].map(e=>({key:`stage-${e}`,label:`stage ${e}`,onRemove:()=>a(e)}))];return(0,W.jsxs)(`section`,{"aria-label":`Filter findings`,className:`flex flex-wrap items-center gap-x-3 gap-y-2 rounded-xl border border-border/60 p-2`,children:[(0,W.jsxs)(`span`,{title:`Narrow the whole dashboard to findings matching the chosen impact bands, types, or stages`,className:`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,children:[(0,W.jsx)(Rt,{"aria-hidden":`true`,className:`size-3.5`}),`Filter findings`]}),(0,W.jsx)(`span`,{role:`status`,"aria-live":`polite`,className:`text-xs text-muted-foreground`,children:p?`${t} finding${t===1?``:`s`} match${t===1?`es`:``} the active filters`:`Showing all ${t} finding${t===1?``:`s`}`}),(0,W.jsx)(zn,{orientation:`vertical`,className:`h-6`}),e.impactBands.length>0&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Impact`}),(0,W.jsx)(Vn,{multiple:!0,"aria-label":`Filter by impact`,value:[...n.impactBands],onValueChange:e=>Wn(e,n.impactBands,r),children:e.impactBands.map(e=>(0,W.jsxs)(Hn,{value:e,variant:`outline`,size:`sm`,"aria-label":`Filter by impact: ${e}`,className:D(`tap-target-comfortable gap-1.5`,Un[e]),children:[(0,W.jsx)(Ce,{impactBand:e}),e]},e))})]}),e.types.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(zn,{orientation:`vertical`,className:`h-6`}),(0,W.jsxs)(Gn,{label:`Type`,count:n.types.size,children:[(0,W.jsx)(`div`,{className:`p-1`,children:(0,W.jsx)(Le,{type:`text`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>e.stopPropagation(),placeholder:`Search type…`,"aria-label":`Search types`,autoComplete:`off`,className:`h-8`})}),f.map(e=>(0,W.jsxs)(nt,{checked:n.types.has(e),onCheckedChange:()=>i(e),"aria-label":`Filter by type: ${e}`,children:[(0,W.jsx)(`span`,{className:`rounded bg-muted px-1 text-xs font-medium text-foreground!`,children:_e(e)}),` `,e]},e)),f.length===0&&(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matching type`})]})]}),e.stages.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(zn,{orientation:`vertical`,className:`h-6`}),(0,W.jsxs)(Gn,{label:`Stage`,count:n.stages.size,children:[(0,W.jsx)(`div`,{className:`p-1`,children:(0,W.jsx)(Le,{type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.stopPropagation(),placeholder:`Search stage id…`,"aria-label":`Search stages`,autoComplete:`off`,className:`h-8`})}),d.map(e=>(0,W.jsxs)(nt,{checked:n.stages.has(e),onCheckedChange:()=>a(e),"aria-label":`Filter by stage: ${e}`,children:[`Stage `,e]},e)),d.length===0&&(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matching stage`})]})]}),p&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(zn,{orientation:`vertical`,className:`h-6`}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[m.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:e.onRemove,"aria-label":`Remove filter: ${e.label}`,className:`tap-target-comfortable inline-flex cursor-pointer items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-xs hover:bg-muted/70`,children:[e.label,` `,(0,W.jsx)(Dt,{"aria-hidden":`true`,className:`size-3`})]},e.key)),(0,W.jsx)(`button`,{type:`button`,onClick:o,className:`tap-target-comfortable cursor-pointer text-xs underline`,children:`Clear all filters`})]})]})]})}function qn(e,t){let n=[];for(let{launch:t,finish:r}of e)r>t&&(n.push({t,delta:1}),n.push({t:r,delta:-1}));n.sort((e,t)=>e.t-t.t||e.delta-t.delta);let r=[],i=0;for(let e=0;e<n.length;e++){let a=n[e];i+=a.delta;let o=n[e+1];if(!o||o.t===a.t)continue;let s=t==null?i:Math.min(i,t);r.push({tStart:a.t,tEnd:o.t,busy:s})}return r}function Jn(e,{bucketBy:t=`time`,bucketWidthMs:n=1e3,hypotheticalCores:r=null}={}){let i=qn(e,r);if(t===`coreCount`){let e=[];for(let t of i)e[t.busy]=(e[t.busy]??0)+(t.tEnd-t.tStart);for(let t=0;t<e.length;t++)e[t]===void 0&&(e[t]=0);return{mode:`coreCount`,histogram:e}}if(i.length===0)return{mode:`time`,bucketWidthMs:n,startTime:null,endTime:null,buckets:[]};let a=i[0].tStart,o=i[i.length-1].tEnd,s=[];for(let e=a;e<o;e+=n){let t=e+n,r=0;for(let n of i){let i=Math.max(n.tStart,e),a=Math.min(n.tEnd,t);a>i&&(r+=n.busy*(a-i))}s.push({tStart:e,tEnd:t,busyCoreMs:r,avgBusyCores:r/n})}return{mode:`time`,bucketWidthMs:n,startTime:a,endTime:o,buckets:s}}async function Yn(e,t){let n=[...e.stages.keys()],r=await Promise.all(n.map(e=>t(e).catch(()=>null))),i=[],a=!1;for(let e of r){if(!e){a=!0;continue}let{metrics:t,fieldNames:n}=e,r=n.length,o=n.indexOf(`launchTime`),s=n.indexOf(`finishTime`);if(o!==-1&&s!==-1)for(let e=0;e<t.length;e+=r)i.push({launch:t[e+o],finish:t[e+s]})}return{intervals:i,incomplete:a}}async function Xn(e,t){let{intervals:n,incomplete:r}=await Yn(e,t),{histogram:i}=Jn(n,{bucketBy:`coreCount`});return{histogram:i??[],incomplete:r}}function Zn(e){let t=N(e=>e.exportMode);return{exportMode:t,getTaskData:t?void 0:e}}function Qn(e,t=2e3){if(e.length<=t)return e;if(t<=1)return e.length?[e[0]]:[];let n=e.length-1,r=n/(t-1),i=Array(t);for(let a=0;a<t;a++)i[a]=e[Math.min(n,Math.round(a*r))];return i}function $n(e){return`${e} finding${e===1?``:`s`}`}function G({value:e,context:t}){return(0,W.jsx)(`div`,{className:`space-y-2`,children:(0,W.jsxs)(`p`,{className:`flex min-h-[4rem] flex-wrap content-start items-baseline gap-x-2`,children:[(0,W.jsx)(`span`,{className:`line-clamp-2 text-2xl font-semibold tracking-tight`,title:typeof e==`string`?e:void 0,children:e}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t})]})})}var er=220;function tr({appModel:e,getTaskData:t}){let{exportMode:n,getTaskData:r}=Zn(t),[i,a]=(0,H.useState)(null),[o,s]=(0,H.useState)(!1),[d,p]=(0,H.useState)(!1),h=e.stages.size>0;if((0,H.useEffect)(()=>{if(!h||!d||i!==null||!r)return;let t=!1;return Xn(e,r).then(({histogram:e,incomplete:n})=>{t||(a(e),s(n))}),()=>{t=!0}},[e,r,h,d,i]),!h)return null;let g=(i??[]).map((e,t)=>({cores:String(t),coreCount:t,ms:e})),_=Qn(g),v=g.reduce((e,t)=>t.ms>e.ms?t:e,g[0]);return(0,W.jsx)(V,{title:`Core-Usage Distribution`,id:`core-usage-histogram`,open:d,onOpenChange:p,summary:i!==null&&v?(0,W.jsx)(G,{value:k(v.ms),context:`at ${v.coreCount} concurrent core${v.coreCount===1?``:`s`}`}):void 0,children:i===null?n?(0,W.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Core-usage detail isn’t included in exported reports.`}):(0,W.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Loading core usage…`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(F,{ariaLabel:`Wall-clock time spent at each concurrent-core count across the run. See the table below for exact values.`,height:er,table:{caption:`Wall-clock time by concurrent-core count`,columns:[`Concurrent cores`,`Time`],rows:i.map((e,t)=>[t,k(e)]),align:[`right`,`right`]},children:(0,W.jsxs)(l,{data:_,children:[(0,W.jsx)(c,{vertical:!1,stroke:P.muted,strokeOpacity:.2}),(0,W.jsx)(m,{dataKey:`cores`,tick:{fontSize:10},label:{value:`Concurrent busy cores`,position:`insideBottom`,offset:-5,fontSize:10}}),(0,W.jsx)(f,{tick:{fontSize:10},width:48,tickFormatter:e=>k(e)}),(0,W.jsx)(u,{dataKey:`ms`,name:`Time`,fill:P.accent})]})}),o?(0,W.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Reopen this file to compute full core usage because some task data was released.`}):null,(0,W.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`See `,(0,W.jsx)(ae,{anchor:`#bottleneck-utilization`,children:`how to read concurrent-core utilization`}),`.`]})]})})}var nr=`This estimate is derived from a simplified compute model; compare it against wall-clock data before acting on it.`,K=e=>`${Math.round(e*100)/100} core-h`;function rr(){let e=A()?.data,t=e?.efficiency;if(!e||!t||t.availableComputeHours<=0)return null;let{usefulCoreHours:n,totalCores:r,topStages:i}=e.wastedCoreHours,a=null;return t.dominantWaste===`driver`?a=(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`Most of it is driver waste:`}),` review spark.driver.memory and spark.driver.cores before scaling executors.`]}):t.dominantWaste===`executor`&&(a=(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`Most of it is executor waste:`}),` reduce cluster size or enable dynamic allocation.`]})),(0,W.jsx)(V,{title:`Compute Efficiency`,statusBadge:(0,W.jsx)(M,{children:(0,W.jsx)(Ge,{confidence:`low`,validationRequired:nr})}),defaultCollapsed:!0,summary:(0,W.jsx)(G,{value:t.wastagePct==null?K(t.availableComputeHours):`${t.wastagePct}% wasted`,context:`of ${K(t.availableComputeHours)} available`}),children:(0,W.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[!e.wallClockReliable&&(0,W.jsx)(M,{children:(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`This run used concurrent job groups: the driver/executor split below is approximate, not precise.`})}),(0,W.jsxs)(`p`,{children:[`Available: `,(0,W.jsx)(`strong`,{children:K(t.availableComputeHours)}),n!=null&&(0,W.jsxs)(W.Fragment,{children:[` `,`· Used: `,(0,W.jsx)(`strong`,{children:K(n)})]}),t.wastagePct!=null&&(0,W.jsxs)(W.Fragment,{children:[` `,`· wasted `,(0,W.jsxs)(`strong`,{children:[t.wastagePct,`%`]})]})]}),r!=null&&(0,W.jsx)(M,{children:(0,W.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Available = `,r,` cores over the run (peak concurrent cores × run time); used = core-time that actually ran tasks.`]})}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(Ce,{impactBand:`info`}),` Driver-bound waste: `,(0,W.jsx)(`strong`,{children:K(t.driverWasteHours)})]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(Ce,{impactBand:`info`}),` Executor-bound waste: `,(0,W.jsx)(`strong`,{children:K(t.executorWasteHours)})]}),(0,W.jsxs)(`p`,{className:`text-muted-foreground`,children:[`Floor (same executors, zero skew): `,k(t.floorZeroSkewMs)]}),a,i.length>0&&(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Top stages by task core-time`}),(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:i.map(e=>(0,W.jsxs)(`li`,{className:`flex justify-between gap-2`,children:[(0,W.jsxs)(`span`,{children:[`Stage `,e.stageId]}),(0,W.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:K(e.coreMs/36e5)})]},e.stageId))})]})]})})}var ir=[{label:`Extract`,key:`extract`},{label:`Transform`,key:`transform`},{label:`Load`,key:`load`}];function ar(){let e=A()?.data.etlPhases;if(!e||e.extract+e.transform+e.load===0)return null;let t=ir.reduce((t,n)=>e[n.key]>e[t.key]?n:t);return(0,W.jsx)(V,{title:`ETL Phase Attribution`,defaultCollapsed:!0,summary:(0,W.jsx)(G,{value:`${t.label} ${k(e[t.key])}`,context:`largest phase`}),children:(0,W.jsxs)(`div`,{className:`space-y-1`,children:[ir.map(({label:t,key:n})=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:t}),`: `,k(e[n])]},n)),(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Sums the run time of each phase's stages, so overlapping stages count twice and a phase can exceed the wall-clock.`}),(0,W.jsx)(M,{children:(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Heuristic: a stage that both shuffles and writes counts in Transform and Load.`})})]})})}var or=220;function sr(e){let t=e.app,n=e.executors.added,r=e.executors.removed;if(t?.startTime==null||t?.endTime==null)return{times:[],counts:[]};let i=t.endTime-t.startTime,a=Math.max(5e3,Math.floor(i/100)),o=[],s=[],c=new Map(r.map(e=>[e.executorId,e.timestamp]));for(let e=t.startTime;e<=t.endTime;e+=a){let r=n.filter(t=>{let n=c.get(t.executorId)??1/0;return t.timestamp<=e&&e<n}).length;o.push(((e-t.startTime)/1e3).toFixed(0)+`s`),s.push(r)}return{times:o,counts:s}}function cr({active:e,payload:t,label:n}){return!e||!t||t.length===0?null:(0,W.jsxs)(`div`,{style:Be,"data-testid":`executor-count-tooltip`,children:[`At `,String(n),`: Active executors `,String(t[0].value)]})}var lr=(0,H.memo)(function({appModel:e,activeFileId:t}){let{chartData:n,sampled:r,hasSeries:i,peak:a}=(0,H.useMemo)(()=>{let{times:t,counts:n}=sr(e),r=t.map((e,t)=>({label:e,count:n[t]})),i=Qn(r),a=n.length>0;return{chartData:r,sampled:i,hasSeries:a,peak:a?Math.max(...n):0}},[e,t]);return i?(0,W.jsx)(V,{title:`Executor Count Over Time`,summary:(0,W.jsx)(G,{value:`${a} peak`,context:`concurrent executors`}),children:(0,W.jsx)(F,{ariaLabel:`Executor count over time. See the table below for exact values.`,height:or,table:{caption:`Executor timeline: active executor count over time`,columns:[`Time`,`Active executors`],rows:n.map(e=>[e.label,e.count]),align:[`left`,`right`]},children:(0,W.jsxs)(d,{data:r,children:[(0,W.jsx)(c,{vertical:!1,stroke:P.muted,strokeOpacity:.2}),(0,W.jsx)(m,{dataKey:`label`,tick:{fontSize:10},minTickGap:24}),(0,W.jsx)(f,{allowDecimals:!1,tick:{fontSize:10},width:32}),(0,W.jsx)(g,{content:cr}),(0,W.jsx)(h,{type:`stepAfter`,dataKey:`count`,name:`Active executors`,stroke:P.clean,fill:P.clean,fillOpacity:.15})]})})}):(0,W.jsx)(V,{title:`Executor Count Over Time`,summary:(0,W.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Timeline unavailable: no end time recorded.`}),children:(0,W.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`This run has no ApplicationEnd event, so the executor timeline can't be plotted without fabricating an end time. See the Incomplete Run finding for what's still reliable.`})})}),ur=[10,20,50,80,100,110,120,150,200,300,400,500];function dr(e,t,n){return t<=0||n<=0?0:e/Math.min(n,t)}function fr(e,t){let n=0;for(let r of Object.keys(e)){let{totalTaskDurationSum:i,taskCount:a}=e[r];n+=dr(i,a,t)}return n}function pr({app:e,observedActiveMs:t,runAggregates:n,executorsAdded:r}){let i=n?.perStage??{},a=St(e??{},r),o=a>0?fr(i,a):0,s=t>0?Math.round(Math.abs(o-t)/t*100):null,c=o>0?t/o:1;return{baselineCores:a,testPercentages:ur,predictions:ur.map(e=>{let t=Math.max(1,Math.round(a*e/100));return{pct:e,cores:t,estMakespanMs:Math.round(fr(i,t)*c)}}),modelErrorPct:s}}var mr=`What-If Executor Scaling`,hr=220,gr=20;function _r([e,t]){let n=(t-e)*.1;return[Math.max(0,e-n),t+n]}function vr(e){return[...e.stages.values()].some(e=>{let t=e.submittedAt,n=e.completedAt;return typeof t==`number`&&Number.isFinite(t)&&typeof n==`number`&&Number.isFinite(n)&&n>t})}function yr(e){return e.evidenceAvailability?.entries.find(e=>e.key===`taskCoreTime`)}function br({reason:e,evidence:t}){return(0,W.jsx)(V,{title:mr,summary:(0,W.jsxs)(`span`,{className:`text-muted-foreground text-xs`,children:[`Not available: `,e]}),children:(0,W.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Not available: `,e,` `,(0,W.jsx)(Ge,{evidenceKey:t})]})})}function xr(e){if(e===100)return`with the current executors`;if(e<100)return`with ${e}% of the executors`;let t=e/100;return`with ${Number.isInteger(t)?t:t.toFixed(1)}× the executors`}function Sr({appModel:e}){let t=A()?.data,n=yr(e);if(!De(e.runAggregates)||n!=null&&n.state!==`present`)return(0,W.jsx)(br,{reason:n?.summary??`No usable task and core-time evidence in this log.`,evidence:`taskCoreTime`});if(!t)return null;let r=pr({app:e.app,observedActiveMs:t.wallClock.stagesActive,runAggregates:e.runAggregates,executorsAdded:e.executors.added});if(r.baselineCores<=0)return(0,W.jsx)(br,{reason:`Baseline executor/core capacity is unavailable in this log.`});if(!vr(e))return(0,W.jsx)(br,{reason:`Usable stage timing is unavailable in this log.`});let i=r.modelErrorPct!=null&&r.modelErrorPct>=gr,a=Qn(r.predictions),l=r.predictions.reduce((e,t)=>t.estMakespanMs<e.estMakespanMs?t:e);return(0,W.jsx)(V,{title:mr,defaultCollapsed:!0,summary:(0,W.jsx)(G,{value:k(l.estMakespanMs),context:`best case, ${xr(l.pct)}`}),children:(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(M,{children:(0,W.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Model Error:`,` `,(0,W.jsx)(`strong`,{className:i?`text-warning`:void 0,children:r.modelErrorPct==null?`—`:`${r.modelErrorPct}%`}),` `,`(idealized makespan vs. observed); higher means all estimates below carry more error, since a single log only observes one scale.`]})}),(0,W.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Move along this curve by changing `,(0,W.jsx)(`code`,{children:`spark.dynamicAllocation`}),`’s executor bounds, see the `,(0,W.jsx)(ae,{anchor:`#config-autoscale-bounds`,children:`autoscaling config guide`}),`.`]}),t.wallClockReliable?null:(0,W.jsx)(M,{children:(0,W.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`This run used concurrent job groups, so the wall-clock-based estimates below may be unreliable.`})}),(0,W.jsx)(M,{children:(0,W.jsx)(`p`,{className:`text-xs`,children:(0,W.jsx)(Ge,{evidenceKey:`taskCoreTime`})})}),(0,W.jsx)(F,{ariaLabel:`Estimated makespan by executor percentage: diminishing-returns curve.`,height:hr,table:{caption:`Estimated makespan by executor percentage`,columns:[`% Executors`,`Cores`,`Est. makespan`],rows:r.predictions.map(e=>[`${e.pct}%`,e.cores,k(e.estMakespanMs)]),align:[`right`,`right`,`right`]},children:(0,W.jsxs)(o,{data:a,children:[(0,W.jsx)(c,{stroke:P.muted,strokeOpacity:.2}),(0,W.jsx)(m,{dataKey:`pct`,tickFormatter:e=>`${e}%`,tick:{fontSize:10}}),(0,W.jsx)(f,{domain:_r,tickFormatter:e=>k(e),tick:{fontSize:10},width:56}),(0,W.jsx)(g,{formatter:e=>[k(Number(e)),`Est. makespan`],labelFormatter:e=>`${e}% executors`}),(0,W.jsx)(s,{type:`monotone`,dataKey:`estMakespanMs`,name:`Est. makespan`,stroke:P.accent,dot:{r:3}})]})})]})})}function Cr(e){let t=gn[e.type],n=typeof e.recommendation==`string`?e.recommendation.trim():``;return!t?.routeable||!n?null:{finding:e,widgetId:t.widgetId,region:t.region,findingLabel:yt(e.type),stageId:typeof e.stageId==`number`?e.stageId:null,recommendation:n}}function wr(e,t){return t.includes(e)?Cr(e):null}function Tr(e,t){return Er(e,t)[0]??null}function Er(e,t){return se(e,t).map(Cr).filter(e=>e!==null)}function Dr(e,t){return`${e} ${t}${e===1?``:`s`}`}function Or({text:e,label:t,testId:n}){let[r,i]=(0,H.useState)(!1);return(0,W.jsxs)(B,{variant:`outline`,size:`sm`,"data-testid":n,onClick:()=>{He(e).then(()=>{i(!0),setTimeout(()=>i(!1),1500)}).catch(()=>{})},children:[r?(0,W.jsx)(Ae,{"aria-hidden":`true`}):(0,W.jsx)(Pt,{"aria-hidden":`true`}),r?`Copied`:t]})}function kr({text:e}){let[t,n]=(0,H.useState)(!1),r=async()=>{try{await He(e),n(!0),setTimeout(()=>n(!1),1500)}catch{}};return(0,W.jsxs)(B,{variant:`ghost`,size:`sm`,"data-testid":`copy-finding-button`,onClick:()=>void r(),children:[t?(0,W.jsx)(Ae,{"aria-hidden":`true`}):(0,W.jsx)(Pt,{"aria-hidden":`true`}),t?`Copied`:`Copy`]})}function Ar({step:e,finding:t,interpretation:n,index:r,onRoute:i}){let{openStage:a}=Et(),{measured:o,fix:s}=xt(e.recommendation),c=Te(n,t),l=c?.figure??null,u=c?.meaning??null,d=`next-step-${r}-title`,f=j()===`advanced`,p=f?c?.provenance??null:null,m=f&&t.confidence&&t.confidence!==`high`?t.confidence:null;return(0,W.jsxs)(`li`,{className:`flex gap-3`,"data-testid":`next-step`,"aria-labelledby":d,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:D(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full text-xs font-semibold tabular-nums`,r===0?`bg-primary text-primary-foreground`:`bg-muted text-foreground`),children:r+1}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1.5 [overflow-wrap:anywhere]`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,W.jsx)(ue,{type:t.type,impactBand:t.impactBand,docAnchor:t.docAnchor}),(0,W.jsxs)(`h3`,{id:d,className:`text-sm font-semibold`,children:[Ct(t),e.stageId==null?null:(0,W.jsxs)(`span`,{className:`font-normal text-muted-foreground`,children:[` in Stage `,e.stageId]})]}),l?(0,W.jsxs)(`span`,{className:`font-mono text-xs text-muted-foreground tabular-nums sm:ml-auto`,children:[(0,W.jsx)(`span`,{className:`font-sans`,children:`Potential savings `}),(0,W.jsx)(`span`,{className:`font-semibold text-foreground`,children:l}),u?(0,W.jsxs)(`span`,{className:`font-sans`,children:[` `,u]}):null]}):null]}),o?(0,W.jsxs)(`p`,{className:`text-sm`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`What's happening: `}),o]}):null,(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`What to try: `}),s]}),p||m?(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`next-step-provenance`,children:[p?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Estimate: `}),p]}):null,m?(0,W.jsxs)(`span`,{title:typeof t.validationRequired==`string`?t.validationRequired:void 0,children:[p?` `:``,`${m[0].toUpperCase()}${m.slice(1)} confidence: verify before acting.`]}):null]}):null,e.relatedTypes.length>0?(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Also flagged here, likely the same cause: `,e.relatedTypes.map(yt).join(`, `),`.`]}):null,(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1`,children:[(0,W.jsxs)(B,{size:`sm`,variant:r===0?`default`:`outline`,"data-shortcut-target":!0,onClick:()=>{let e=Cr(t);e&&i(e)},children:[`Show evidence`,(0,W.jsx)(ft,{"aria-hidden":`true`})]}),e.stageId==null?null:(0,W.jsxs)(B,{size:`sm`,variant:`ghost`,onClick:()=>a(e.stageId),children:[`Stage `,e.stageId,` details`]}),(0,W.jsx)(kr,{text:e.copyText})]})]})]})}var jr=`docs/user-guide/understanding-findings.html`;function Mr(){let[e,t]=(0,H.useState)(!1),n=E(),r=N(e=>e.exportMode);return(0,W.jsxs)(`div`,{className:`text-sm`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`tap-target-comfortable inline-flex cursor-pointer items-center gap-1 rounded-sm text-left font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,"aria-expanded":e,"aria-controls":`newcomer-primer`,onClick:()=>t(e=>!e),children:[`New to Spark tuning? How to read this report`,e?(0,W.jsx)(me,{"aria-hidden":`true`,className:`size-4`}):(0,W.jsx)(fe,{"aria-hidden":`true`,className:`size-4`})]}),e?(0,W.jsxs)(`div`,{id:`newcomer-primer`,className:`mt-2 max-w-prose space-y-2 rounded-md border border-border bg-muted/40 p-3 text-muted-foreground`,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Stages and tasks.`}),` Spark splits each job into stages. A stage runs the same code as many tasks, one per slice (partition) of the data, and it finishes only when its slowest task does. Stage numbers match the Spark UI.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Executors and cores.`}),` Tasks run on executors, the worker processes of your cluster, one task per core at a time. Idle capacity is how much of those cores ran nothing.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Shuffle.`}),` Moving data between stages, for example for a join or a group-by. It is often the most expensive part of a job.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Potential savings and colors.`}),` A time figure, such as 58.6s of run time, estimates how much sooner the run could finish; it is not a guarantee. A resource figure in core-hours (core-h) or gigabyte-hours of memory (GB-h) is cluster time a fix would free up: it cuts cost, but may not shorten the run. Red (critical), amber (warning) and blue (info) show how serious each finding is. When a finding shows a time-savings figure, its color usually follows that figure.`]}),r?null:(0,W.jsx)(`a`,{href:jr,target:`_blank`,rel:`noopener noreferrer`,className:`inline-block text-primary underline-offset-4 hover:underline`,onClick:e=>{!n||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),n.openSite(jr))},children:`What every finding means`})]}):null]})}function Nr({interpretation:e,onRoute:t}){let{title:n,summary:r,failed:i,clean:a,failureReason:o,remaining:s,copyText:c}=e.data.verdict,l=e.data.verdict.steps.map(t=>({step:t,finding:de(e,t.leadIndex)})).filter(e=>e.finding!=null),u=j();return(0,W.jsxs)(`section`,{id:`run-verdict`,tabIndex:-1,"aria-labelledby":`run-verdict-title`,"data-testid":`run-verdict`,className:D(`scroll-mt-20 space-y-4 rounded-xl border bg-card p-4 outline-none focus-visible:ring-2 focus-visible:ring-ring sm:p-5`,a?`border-clean/40`:i?`border-critical/40`:`border-border`),children:[(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsxs)(`h2`,{id:`run-verdict-title`,className:D(`flex items-center gap-2 font-heading text-lg font-semibold`,a&&`text-clean`,i&&`text-critical`),children:[a?(0,W.jsx)(ot,{"aria-hidden":`true`,className:`size-5 shrink-0`}):null,i?(0,W.jsx)(Mt,{"aria-hidden":`true`,className:`size-5 shrink-0`}):null,n]}),(0,W.jsx)(`p`,{className:`max-w-prose text-sm text-muted-foreground`,children:r.join(` `)}),o?(0,W.jsxs)(`p`,{"data-testid":`run-failure-reason`,className:`max-w-prose pt-1 text-sm`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`Spark's recorded reason: `}),(0,W.jsx)(`code`,{className:`font-mono text-xs [overflow-wrap:anywhere]`,children:o})]}):null]}),u===`advanced`?null:(0,W.jsx)(Mr,{}),l.length>0?(0,W.jsx)(`ol`,{"aria-label":`Next steps`,className:`space-y-4`,children:l.map(({step:n,finding:r},i)=>(0,W.jsx)(Ar,{step:n,finding:r,interpretation:e,index:i,onRoute:t},n.key))}):null,l.length>0?(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s>0?(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[Dr(s,`more place`),` under Findings.`]}):(0,W.jsx)(`span`,{}),(0,W.jsx)(Or,{label:`Copy next steps`,testId:`copy-plan-button`,text:c??``})]}):null,u===`advanced`&&l.length>1?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i?`Order: failures first, then highest potential savings; impact band breaks ties.`:`Order: highest potential savings first, unestimated last; impact band breaks ties.`}):null]})}function Pr(){let e=N(e=>e.activeFileId),t=N(e=>e.exportMode),{resetToDropZone:n}=_t(),r=E();return t||e!==`sample-run`?null:(0,W.jsxs)(`section`,{"aria-label":`Sample run`,"data-testid":`sample-run-notice`,className:`flex flex-col gap-3 rounded-xl border border-primary/30 bg-primary/5 p-4 text-sm sm:flex-row sm:items-center sm:justify-between`,children:[(0,W.jsxs)(`p`,{className:`max-w-prose`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`This is the sample run`}),`, a real Spark job from a public example corpus, picked because it shows several common problems. Everything below works the same on your own event log.`]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:[(0,W.jsxs)(B,{size:`sm`,variant:`outline`,onClick:n,children:[`Load my event log`,(0,W.jsx)(ft,{"aria-hidden":`true`})]}),(0,W.jsx)(`a`,{href:ie,target:`_blank`,rel:`noopener noreferrer`,className:`tap-target-comfortable inline-flex items-center rounded-sm px-2 text-primary underline-offset-4 hover:underline`,onClick:e=>{!r||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),r.openSite(ie))},children:`Where do I find my log?`})]})]})}var Fr={critical:`inset 4px 0 0 var(--color-critical)`,warning:`inset 4px 0 0 var(--color-warning)`};function Ir({eyebrow:e,value:t,meta:n,flag:r=null,bar:i,dataTestid:a}){return(0,W.jsxs)(`div`,{"data-testid":a,className:`flex flex-col gap-1 p-3`,style:r?{boxShadow:Fr[r]}:void 0,children:[(0,W.jsxs)(`span`,{className:D(`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,r&&ge[r]),children:[r&&(0,W.jsx)(Ce,{impactBand:r}),e]}),(0,W.jsx)(`div`,{className:D(`font-heading text-2xl font-semibold`,r&&ge[r]),children:t}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n}),i]})}function Lr({pct:e,flag:t,label:n}){let r=Math.max(0,Math.min(100,e));return(0,W.jsx)(`div`,{role:`img`,"aria-label":n,className:`mt-0.5 h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:(0,W.jsx)(`div`,{className:D(`h-full rounded-full`,t?xe[t]:`bg-clean`),style:{width:`${r}%`}})})}function Rr({active:e,total:t}){let n=t>0?Math.max(0,Math.min(100,e/t*100)):0;return(0,W.jsxs)(`div`,{role:`img`,"aria-label":`Active ${k(e)} of ${k(t)} total`,className:`mt-0.5 flex h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:[(0,W.jsx)(`div`,{className:`h-full bg-clean`,style:{width:`${n}%`}}),(0,W.jsx)(`div`,{className:`h-full flex-1 bg-muted-foreground/60`})]})}function zr(e){return e>0?`Ran ${k(e)}`:`No stage activity recorded`}function Br(){return(0,W.jsxs)(`div`,{className:`flex items-start gap-2 rounded-xl border border-warning/40 bg-warning/10 p-4`,children:[(0,W.jsx)(Ce,{impactBand:`warning`,className:`mt-1.5`}),(0,W.jsxs)(`p`,{className:`text-sm text-warning`,children:[(0,W.jsx)(`span`,{className:`font-semibold tracking-wide uppercase`,children:`Timing unavailable`}),`. This run has no complete application timing interval, so wall-clock, efficiency, and unused core time can’t be measured.`]})]})}function Vr({interpretation:e,catalog:t}){let n=j(),{runShape:r,coverage:i,wallClock:a}=e;if(r.wallClockMs==null)return(0,W.jsx)(Br,{});let o=r.wallClockMs,s=a.stagesActive,c=!i.noFinishedStages,l=r.efficiencyPct,u=r.efficiencyFlag,d=t.find(e=>e.type===`coldStart`),f=r.unusedCoreTimePct,p=r.unusedCoreTimeFlag;return(0,W.jsx)(ct,{className:`overflow-hidden py-0`,children:(0,W.jsxs)(`div`,{className:`grid grid-cols-1 divide-y divide-border sm:grid-cols-3 sm:divide-x sm:divide-y-0`,children:[(0,W.jsx)(Ir,{eyebrow:`Wall-clock`,dataTestid:`kpi-wall-clock`,value:o>0?k(o):`—`,meta:n===`advanced`||s<=0?(0,W.jsxs)(W.Fragment,{children:[zr(s),d?` · ${d.value}s cold start`:``]}):`Total run time.`,bar:(0,W.jsx)(Rr,{active:s,total:o})}),(0,W.jsx)(Ir,{eyebrow:`Efficiency`,dataTestid:`kpi-efficiency`,value:c?l==null?`Unavailable`:(0,W.jsxs)(W.Fragment,{children:[l,(0,W.jsx)(`small`,{children:`%`})]}):`Not measured`,flag:u,meta:c?l==null?`This run has no complete application timing interval.`:n===`advanced`?o>s?`${zr(s)} · ${k(o-s)} idle/gap time`:`executors active the whole run`:`Share of the run with a stage running (${k(s)}). Higher is better.`:`No stage in this log recorded an end, so there is no stage time to measure.`,bar:l==null?void 0:(0,W.jsx)(Lr,{pct:l,flag:u,label:`Efficiency ${l}%`})}),(0,W.jsx)(Ir,{eyebrow:`Unused core time`,dataTestid:`kpi-wastage`,value:f==null?`Unavailable`:(0,W.jsxs)(W.Fragment,{children:[f,(0,W.jsx)(`small`,{children:`%`})]}),flag:p,meta:r.unusedCoreTimeUnavailableReason===`application-timing`?`Unused core time needs complete application timing.`:r.unusedCoreTimeUnavailableReason===`core-usage-summary`?`Unused core time needs the core-usage summary.`:r.unusedCoreTimeUnavailableReason===`executor-capacity`?`Unused core time needs usable executor-capacity data.`:n===`advanced`?`Driver-idle + executor-slack core-hours as a share of available capacity. Directional, not a cost figure.`:`Share of executor core time that ran no task. Lower is better. Not a cost figure.`,bar:f==null?void 0:(0,W.jsx)(Lr,{pct:f,flag:p,label:`Unused core time ${f}%`})})]})})}function Hr({className:e,...t}){return(0,W.jsx)(_,{"data-slot":`accordion`,className:D(`flex w-full flex-col`,e),...t})}function Ur({className:e,...t}){return(0,W.jsx)(ee,{"data-slot":`accordion-item`,className:D(`not-last:border-b`,e),...t})}function Wr({className:e,children:t,headingLevel:n=3,...r}){let i=`h${n}`;return(0,W.jsx)(x,{className:`flex`,render:(0,W.jsx)(i,{}),children:(0,W.jsxs)(v,{"data-slot":`accordion-trigger`,className:D(`group/accordion-trigger relative flex flex-1 cursor-pointer items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:cursor-default aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground`,e),...r,children:[t,(0,W.jsx)(fe,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden`}),(0,W.jsx)(me,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline`})]})})}function Gr({className:e,children:t,...n}){return(0,W.jsx)(y,{"data-slot":`accordion-content`,className:`h-(--accordion-panel-height) overflow-hidden text-sm transition-[height] duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none`,...n,children:(0,W.jsx)(`div`,{className:D(`pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,e),children:t})})}function Kr(e){return e.length===0?e:e[0].toUpperCase()+e.slice(1)}function qr({type:e,label:t,thresholdSummary:n,status:r=`passed`}){let i=r===`notRun`;return(0,W.jsxs)(R,{"data-testid":`clean-check-row`,"data-clean-check-type":e,"data-clean-check-status":r,children:[(0,W.jsx)(L,{className:`w-px`,children:(0,W.jsxs)(`span`,{className:i?`inline-flex h-6 items-center gap-1 rounded-full bg-muted px-2 font-mono text-xs font-medium whitespace-nowrap text-muted-foreground`:`inline-flex h-6 items-center gap-1 rounded-full bg-clean/10 px-2 font-mono text-xs font-medium whitespace-nowrap text-clean`,children:[(0,W.jsx)(i?At:ot,{"aria-hidden":`true`,className:`size-3.5 shrink-0`}),_e(e)]})}),(0,W.jsxs)(L,{className:`whitespace-normal`,children:[(0,W.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:Kr(t)}),(0,W.jsx)(M,{children:(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:Kr(`${n}.`)})})]})]})}var Jr=`suggested-improvements`,Yr={stage:`per-stage`,app:`app-level`,sql:`sql-scope`,config:`config-scope`},Xr=[`per-stage`,`app-level`,`sql-scope`,`config-scope`],Zr={"per-stage":`Per-stage checks`,"app-level":`App-level checks`,"sql-scope":`SQL plan checks`,"config-scope":`Config checks`};function Qr(e,t,n){let r=[...e,...t].filter(T);return vn(n).filter(({type:e})=>!bn(e)).map(({component:e,widgetId:t,type:n},i)=>{let a=r.filter(e=>e.type===n);return{component:e,widgetId:t,index:i,findings:a,impactBand:we(a)}}).filter(e=>e.impactBand!==void 0).sort((e,t)=>oe[e.impactBand]-oe[t.impactBand]||e.index-t.index)}function $r({catalog:e,configFindings:t=[],coverage:n,detectors:r}){let i=[...e,...t].filter(T),a=e=>e in n.notRunReasons,o=Object.keys(gn).filter(e=>!bn(e)).filter(e=>!i.some(t=>t.type===e)).map(e=>({type:e,findingLabel:yt(e)})),s=o.filter(({type:e})=>!a(e)),c=o.filter(({type:e})=>a(e)),l=c.length>0?n.gaps:[],u=new Map;for(let e of s){let t=r[e.type]?.scope,n=t?Yr[t]:`app-level`;u.has(n)||u.set(n,[]),u.get(n).push(e)}return(0,W.jsx)(Hr,{children:(0,W.jsxs)(Ur,{value:`clean-checks`,children:[(0,W.jsx)(Wr,{children:`Clean checks`}),(0,W.jsxs)(Gr,{children:[c.length>0?(0,W.jsxs)(`div`,{"data-testid":`clean-checks-not-run`,className:`pb-4`,children:[(0,W.jsx)(`p`,{className:`pb-1 text-xs font-medium text-muted-foreground`,children:`Not checked on this log`}),(0,W.jsx)(`p`,{className:`pb-2 text-xs text-muted-foreground`,children:`The log lacked the data these checks need, so they neither passed nor failed.`}),l.length>0?(0,W.jsx)(`ul`,{"data-testid":`clean-checks-not-run-reasons`,className:`list-disc space-y-0.5 pb-2 pl-5 text-xs text-muted-foreground [overflow-wrap:anywhere]`,children:l.map(e=>(0,W.jsx)(`li`,{children:e},e))}):null,(0,W.jsx)(mt,{children:(0,W.jsx)(Ot,{children:c.map(({type:e,findingLabel:t})=>(0,W.jsx)(qr,{type:e,label:t,thresholdSummary:r[e]?.thresholdSummary??``,status:`notRun`},e))})})]}):null,(0,W.jsxs)(`p`,{className:`pb-2 text-xs text-muted-foreground`,children:[s.length===0?`No check could run on this log.`:`Every check below passed.`,(0,W.jsx)(M,{children:` Each caption gives the threshold it was held to.`})]}),Xr.map(e=>{let t=u.get(e);return!t||t.length===0?null:(0,W.jsxs)(`div`,{className:`pt-3 first:pt-0`,children:[(0,W.jsx)(`p`,{className:`pb-1 text-xs font-medium text-muted-foreground`,children:Zr[e]}),(0,W.jsx)(mt,{children:(0,W.jsx)(Ot,{children:t.map(({type:e,findingLabel:t})=>(0,W.jsx)(qr,{type:e,label:t,thresholdSummary:r[e]?.thresholdSummary??``},e))})})]},e)})]})]})})}var ei=`inline-flex h-7 shrink-0 cursor-pointer items-center gap-1 rounded-full border border-border bg-background px-2.5 text-xs font-medium whitespace-nowrap outline-none transition-colors hover:bg-muted focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`;function ti({stageId:e,className:t}){let{openStage:n}=Et();return(0,W.jsxs)(`button`,{type:`button`,className:D(ei,t),title:`Open details for Stage ${e}`,"aria-label":`Open details for Stage ${e}`,onClick:()=>n(e),children:[`Stage `,(0,W.jsx)(`b`,{children:e})]})}var ni=30;function ri(e,{limit:t=6,chunk:n=ni,dataset:r=e}={}){let[i,a]=(0,H.useState)({dataset:r,revealed:0}),o=!Object.is(i.dataset,r);o&&a({dataset:r,revealed:0});let s=t+(o?0:i.revealed);return{visible:e.slice(0,s),remaining:Math.max(0,e.length-s),revealMore:()=>a(e=>({dataset:r,revealed:(Object.is(e.dataset,r)?e.revealed:0)+n})),revealThrough:e=>a(n=>{let i=Object.is(n.dataset,r)?n.revealed:0,a=Math.max(i,e-t+1);return a>i?{dataset:r,revealed:a}:n})}}function ii({pills:e}){let t=new Set,n=e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0)),{visible:r,remaining:i,revealMore:a}=ri(n,{limit:6,dataset:JSON.stringify(n.map(({id:e})=>e))}),o=n.slice(r.length);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[r.map(e=>(0,W.jsx)(ti,{stageId:e.id},e.id)),i>0&&(0,W.jsxs)(`button`,{type:`button`,className:D(ei,`bg-muted`),title:`Also flagged: Stage ${o.map(e=>e.id).join(`, Stage `)}`,"aria-label":`Show ${i} more stage${i===1?``:`s`}`,onClick:a,children:[`+`,i]})]})}function ai({page:e,totalPages:t,onPrev:n,onNext:r,renderJumpControl:i}){return t<=1?null:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs ${i?`justify-between`:`justify-end`}`,children:[i?.(),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable tap-target-comfortable--sm`,onClick:n,disabled:e===0,children:`Previous`}),(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Page `,e+1,` of `,t]}),(0,W.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable tap-target-comfortable--sm`,onClick:r,disabled:e===t-1,children:`Next`})]})]})}var oi=10,si=`max-sm:flex max-sm:flex-wrap max-sm:items-start`,ci=`max-sm:w-auto max-sm:shrink-0`,li=`max-sm:min-w-0 max-sm:flex-1 max-sm:whitespace-normal max-sm:[overflow-wrap:anywhere]`,ui=`max-sm:w-full max-sm:basis-full max-sm:pt-0 max-sm:text-left`;function di(e){let t=Xe(e),n=e.stageId==null?t&&t.length>0?`St.${Se(t)}`:null:`St.${e.stageId}`;if(e.type===`duplicatePlanSubtree`&&e.rootName!=null){let t=fi(e);return n&&t?`${n} · ${t}`:t??n}return n||(e.type===`configAudit`?e.property:null)}function fi(e){if(e.type!==`duplicatePlanSubtree`||e.rootName==null)return null;let t=le(e.rootName),n=e.groupIndex==null?t:`${t} #${Number(e.groupIndex)+1}`;return e.executionId==null?n:`${n} (SQL ${e.executionId})`}function pi({finding:e,textClassName:t}){let{stageId:n}=e,r=Xe(e);if(n!=null)return(0,W.jsx)(ti,{stageId:n});if(r&&r.length>0){let n=fi(e);return(0,W.jsxs)(`span`,{className:`inline-flex min-w-0 flex-wrap items-center gap-1.5`,children:[(0,W.jsx)(ii,{pills:r.map(e=>({id:e}))}),n?(0,W.jsx)(`span`,{className:D(`truncate`,t),title:n,children:n}):null]})}let i=di(e);return i?(0,W.jsx)(`span`,{className:D(`min-w-0 truncate`,t),title:i,children:i}):null}function mi({finding:e,allFindings:t,onRoute:n}){let r=wr(e,t),i=di(e),a=Oe(e)?.figure??null,o=wt(e),s=Ct(e);return(0,W.jsxs)(R,{"data-testid":`fix-these-first-row`,"data-finding-type":e.type,className:si,children:[(0,W.jsx)(L,{className:D(`w-px`,ci),children:(0,W.jsx)(ue,{type:e.type,impactBand:e.impactBand,docAnchor:e.docAnchor})}),(0,W.jsx)(L,{className:D(`whitespace-normal`,li),children:(0,W.jsxs)(`button`,{type:`button`,"data-shortcut-target":!0,className:`cursor-pointer rounded-sm text-left focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:()=>r&&n(r),children:[(0,W.jsx)(`span`,{className:`block text-sm font-medium`,children:s}),(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:o})]})}),(0,W.jsx)(L,{className:D(`w-px text-right font-mono text-xs text-muted-foreground`,ui),title:[i,a].filter(Boolean).join(` · `),children:(0,W.jsxs)(`span`,{className:`flex items-center justify-end gap-1.5 max-sm:justify-start`,children:[(0,W.jsx)(pi,{finding:e}),a?(0,W.jsx)(`span`,{className:`shrink-0`,children:a}):null]})})]})}function hi({finding:e,allFindings:t,onRoute:n,id:r}){let i=wr(e,t),a=di(e),o=Oe(e)?.figure??null,s=wt(e),c=Ct(e),l=e.stageId!=null||a!=null;return(0,W.jsxs)(R,{id:r,"data-testid":`fix-these-first-row`,"data-finding-type":e.type,className:`bg-muted/50`,children:[(0,W.jsxs)(L,{colSpan:2,className:`whitespace-normal`,children:[l?(0,W.jsx)(`div`,{className:`mb-1`,children:(0,W.jsx)(pi,{finding:e,textClassName:`line-clamp-1 break-words text-xs font-medium font-mono`})}):null,(0,W.jsxs)(`button`,{type:`button`,"data-shortcut-target":!0,className:`block w-full cursor-pointer rounded-sm text-left focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:()=>i&&n(i),children:[l?null:(0,W.jsx)(`span`,{className:`line-clamp-1 break-words text-xs font-medium`,children:c}),(0,W.jsx)(`span`,{className:`line-clamp-1 break-words text-xs text-muted-foreground`,children:s})]})]}),(0,W.jsx)(L,{className:`w-px text-right font-mono text-xs text-muted-foreground`,children:o})]})}function gi({group:e,allFindings:t,expanded:n,onToggle:r,onRoute:i}){let[a,o]=(0,H.useState)(0),s=e.findings,c=s[0],l=te(c),u=Ct(c),d=Math.ceil(s.length/oi),f=Math.min(a,Math.max(0,d-1)),p=s.slice(f*oi,f*oi+oi),m=`fix-these-first-group-content-${e.kind}-${e.type}${e.unit?`-${e.unit}`:``}`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(R,{"data-testid":`fix-these-first-group-row`,"data-finding-type":e.type,className:si,children:[(0,W.jsx)(L,{className:D(`w-px`,ci),children:(0,W.jsx)(ue,{type:e.type,impactBand:c.impactBand,docAnchor:he(e.findings)})}),(0,W.jsx)(L,{className:D(`whitespace-normal`,li),children:(0,W.jsxs)(`button`,{type:`button`,"aria-expanded":n,"aria-controls":m,"data-shortcut-target":!0,className:`cursor-pointer rounded-sm text-left focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:r,children:[(0,W.jsx)(`span`,{className:`block text-sm font-medium`,children:u}),l?(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:l}):null]})}),(0,W.jsx)(L,{className:D(`w-px text-right font-mono text-xs text-muted-foreground`,ui),children:(0,W.jsxs)(`span`,{className:`inline-flex items-center justify-end gap-1.5`,title:e.statTitle,children:[e.stat,n?(0,W.jsx)(me,{"aria-hidden":`true`,className:`size-4 shrink-0 text-muted-foreground`}):(0,W.jsx)(fe,{"aria-hidden":`true`,className:`size-4 shrink-0 text-muted-foreground`})]})})]}),n&&p.map((e,n)=>(0,W.jsx)(hi,{finding:e,allFindings:t,onRoute:i,id:n===0?m:void 0},e.id)),n&&d>1&&(0,W.jsx)(R,{className:`bg-muted/50`,children:(0,W.jsx)(L,{colSpan:3,children:(0,W.jsx)(ai,{page:f,totalPages:d,onPrev:()=>o(e=>e-1),onNext:()=>o(e=>e+1)})})})]})}function _i(e,t,n,r){let{eligible:i,groups:a}=ve(r,[...e,...t],n);return{eligible:i,groups:a,triageTarget:Tr(r,i)}}var vi={critical:`Critical`,warning:`Warning`,info:`Info`},yi=[`critical`,`warning`,`info`];function bi({impactBand:e,groups:t,widgets:n,allFindings:r,expandedGroupKey:i,onToggleGroup:a,onRoute:o,appModel:s,catalog:c,configFindings:l,getTaskData:u,activeFileId:d}){let f=j(),[p,m]=(0,H.useState)(!1),h=pt(),g=h!=null&&n.some(e=>e.widgetId===h.widgetId);if((0,H.useLayoutEffect)(()=>{g&&m(!0)},[g]),t.length===0&&n.length===0)return null;let _=`impact-band-${e}-heading`,v=`impact-band-${e}-evidence`,y=f===`basic`&&t.length>0&&n.length>0,b=!y||p||g;return(0,W.jsxs)(`section`,{"aria-labelledby":_,className:`space-y-3`,children:[(0,W.jsx)(`h2`,{id:_,tabIndex:-1,className:`scroll-mt-20 rounded-sm font-heading text-base font-semibold outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:vi[e]}),t.length>0&&(0,W.jsx)(mt,{children:(0,W.jsx)(Ot,{children:t.map(e=>{if(e.findings.length===1)return(0,W.jsx)(mi,{finding:e.findings[0],allFindings:r,onRoute:o},e.findings[0].id);let{key:t}=e;return(0,W.jsx)(gi,{group:e,allFindings:r,expanded:i===t,onToggle:()=>a(t),onRoute:o},t)})})}),y?(0,W.jsxs)(B,{variant:`ghost`,size:`sm`,"aria-expanded":b,"aria-controls":v,onClick:()=>m(!b),children:[b?`Hide the evidence`:`Show the evidence (${n.length} ${n.length===1?`card`:`cards`})`,b?(0,W.jsx)(me,{"aria-hidden":`true`}):(0,W.jsx)(fe,{"aria-hidden":`true`})]}):null,n.length>0&&b&&(0,W.jsx)(`div`,{id:v,children:(0,W.jsx)(bt,{children:n.map(({component:e,widgetId:t,index:n})=>(0,W.jsx)(I,{cardId:`alert-${n}`,widgetId:t,children:(0,W.jsx)(H.Suspense,{fallback:(0,W.jsx)(rt,{}),children:(0,W.jsx)(e,{appModel:s,catalog:c,configFindings:l,getTaskData:u,activeFileId:d,defaultCollapsed:!0})})},t))})})]})}function xi({appModel:e,catalog:t,configFindings:n=[],stages:r,getTaskData:i,activeFileId:a,onRoute:o}){let s=A(),{groups:c}=(0,H.useMemo)(()=>_i(t,n,r,s),[t,n,r,s]),l=[...t,...n],u=s?.data.detectors,d=(0,H.useMemo)(()=>u?Qr(t,n,u):[],[t,n,u]),[f,p]=(0,H.useState)(null),{groupsByImpactBand:m,widgetsByImpactBand:h}=(0,H.useMemo)(()=>{let e=new Map;for(let t of c){let n=t.band;e.has(n)||e.set(n,[]),e.get(n).push(t)}let t=new Map;for(let e of d)t.has(e.impactBand)||t.set(e.impactBand,[]),t.get(e.impactBand).push(e);return{groupsByImpactBand:e,widgetsByImpactBand:t}},[c,d]);return(0,W.jsxs)(`div`,{id:Jr,className:`space-y-6 scroll-mt-20`,children:[yi.map(r=>(0,W.jsx)(bi,{impactBand:r,groups:m.get(r)??[],widgets:h.get(r)??[],allFindings:l,expandedGroupKey:f,onToggleGroup:e=>p(t=>t===e?null:e),onRoute:o,appModel:e,catalog:t,configFindings:n,getTaskData:i,activeFileId:a},r)),s?(0,W.jsx)($r,{catalog:t,configFindings:n,coverage:s.data.coverage,detectors:s.data.detectors}):null]})}var Si=5,Ci=30,wi=220;function Ti(e,t){if(e.length<2)return e[0]??null;let n=e[1]-e[0],r=Math.round((t-e[0])/n);return e[Math.min(e.length-1,Math.max(0,r))]}function Ei({metrics:e,fieldNames:t,markers:n={}}){let r=t.indexOf(`duration`);if(r===-1)return null;let i=t.length,a=e.length/i,o=[];for(let t=0;t<a;t++)o.push(e[t*i+r]);if(o.length<Si)return(0,W.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Too few tasks (`,o.length,`) for a distribution.`]});let{labels:s,data:d}=be(o,Ci),h=s[1]-s[0],_=s.map((e,t)=>({bin:`${(e/1e3).toFixed(1)}s`,range:`${(e/1e3).toFixed(1)}s – ${((e+h)/1e3).toFixed(1)}s`,ms:e,count:d[t]})),v=n.p50==null?null:Ti(s,n.p50),y=n.p95==null?null:Ti(s,n.p95),b=v==null?void 0:_.find(e=>e.ms===v)?.bin,x=y==null?void 0:_.find(e=>e.ms===y)?.bin;return(0,W.jsx)(F,{title:`Task duration`,ariaLabel:`Task duration histogram`,height:wi,table:{caption:`Task duration histogram`,columns:[`Duration bin`,`Task count`],rows:_.map(e=>[e.range,e.count]),align:[`right`,`right`]},children:(0,W.jsxs)(l,{data:_,children:[(0,W.jsx)(c,{vertical:!1,stroke:P.muted,strokeOpacity:.2}),(0,W.jsx)(m,{dataKey:`bin`,tick:{fontSize:10}}),(0,W.jsx)(f,{allowDecimals:!1,tick:{fontSize:10},width:32}),(0,W.jsx)(g,{...Je,formatter:e=>[`${Number(e)} task${Number(e)===1?``:`s`}`,`Count`],labelFormatter:(e,t)=>t?.[0]?.payload?.range??e}),(0,W.jsx)(u,{dataKey:`count`,name:`Tasks`,fill:P.accent}),b?(0,W.jsx)(p,{x:b,stroke:P.accent,label:`P50`}):null,x?(0,W.jsx)(p,{x,stroke:P.warning,label:`P95`}):null]})})}function Di({finding:e}){let t=(0,H.useId)(),n=Oe(e),r=e.impactEstimate;if(!r)return null;let i=n?.board;if(!i)return null;let a=`Estimate method: ${r.estimateMethod}`;return(0,W.jsxs)(`span`,{className:`impact-estimate text-xs text-muted-foreground`,title:a,tabIndex:0,"aria-describedby":t,children:[`Potential savings: `,(0,W.jsx)(`strong`,{children:i}),(0,W.jsx)(`span`,{id:t,className:`sr-only`,children:a})]})}var Oi=[`PROCESS_LOCAL`,`NODE_LOCAL`,`RACK_LOCAL`,`NO_PREF`,`ANY`],ki=[P.clean,P.accent,P.warning,P.muted,P.critical];function Ai(e){return e?new Date(e).toLocaleString():`—`}function ji({stats:e}){let t=new Map(e.map(e=>[e.locality,e.count])),n=Oi.filter(e=>t.has(e));for(let t of e)Oi.includes(t.locality)||n.push(t.locality);let r=n.map((e,n)=>({locality:e,count:t.get(e)??0,color:ki[Math.min(n,ki.length-1)]}));return(0,W.jsx)(F,{ariaLabel:`Task locality distribution`,height:140,table:{caption:`Task locality distribution`,columns:[`Locality tier`,`Task count`],rows:r.map(e=>[e.locality,e.count]),align:[`left`,`right`]},children:(0,W.jsxs)(l,{data:r,children:[(0,W.jsx)(c,{vertical:!1,stroke:P.muted,strokeOpacity:.2}),(0,W.jsx)(m,{dataKey:`locality`,tick:{fontSize:10}}),(0,W.jsx)(f,{allowDecimals:!1,tick:{fontSize:10},width:32}),(0,W.jsx)(g,{formatter:e=>[`${Number(e)} task${Number(e)===1?``:`s`}`,`Tasks`]}),(0,W.jsx)(u,{dataKey:`count`,name:`Tasks`,children:r.map(e=>(0,W.jsx)(a,{fill:e.color},e.locality))})]})})}function Mi(e,t){let n=new Map;for(let t of e){n.has(t.type)||n.set(t.type,{impactBand:t.impactBand,finding:t,recs:new Map});let e=n.get(t.type);oe[t.impactBand]<oe[e.impactBand]&&(e.impactBand=t.impactBand,e.finding=t),t.recommendation&&!e.recs.has(t.recommendation)&&e.recs.set(t.recommendation,{extended:t.type===`retryWaste`?t.extended??null:null})}let r=e=>t.includes(e)?t.indexOf(e):t.length;return[...n.entries()].sort(([e],[t])=>r(e)-r(t))}function Ni({rec:e,extended:t,finding:n,showImpactEstimate:r}){let{measured:i,fix:a}=xt(e);return(0,W.jsxs)(`div`,{className:`space-y-1 text-sm`,children:[i?(0,W.jsxs)(`p`,{className:`max-w-full leading-normal break-words`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`What's happening: `}),i]}):null,(0,W.jsxs)(`p`,{className:`max-w-full leading-normal break-words`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`What to try: `}),a]}),t?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t}):null,r?(0,W.jsx)(Di,{finding:n}):null]})}function Pi(e,t){return`${e} ${t}${e===1?``:`s`}`}function Fi(e,t,n){let r=(e.completedAt??0)-(e.submittedAt??0),i=[];if(r>0){let e=t!=null&&t>0?Math.round(r/t*100):null;i.push(`Ran for ${k(r)}${e==null?``:`, ${e}% of this ${k(t)} run`}`)}return(e.taskCount??0)>0&&i.push(`split into ${Pi(e.taskCount,`task`)}`),[i.length>0?`${i.join(`, `)}.`:``,n===0?`Nothing was flagged on this stage.`:n===1?`1 finding here.`:`${n} findings here. They often share one cause, so start with the first.`].filter(Boolean).join(` `)}function Ii({stage:e,findings:t,typeOrder:n,catalog:r,runMs:i,onShowEvidence:a}){let o=A(),s=Mi(t,n);return(0,W.jsxs)(`section`,{"aria-label":`Why this stage was flagged`,className:`space-y-3`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:Fi(e,i,s.length)}),s.length>0?(0,W.jsx)(`ol`,{className:`space-y-4 rounded-md border p-3`,children:s.map(([e,{impactBand:t,finding:n,recs:i}])=>{let s=Te(o,n)?.compact!=null,c=a?wr(n,r):null;return(0,W.jsxs)(`li`,{className:`space-y-1.5`,"data-testid":`stage-finding`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(ue,{type:e,impactBand:t}),(0,W.jsx)(`h3`,{className:`text-sm font-semibold`,children:Ct(n)})]}),[...i.entries()].map(([e,{extended:t}],r)=>(0,W.jsx)(Ni,{rec:e,extended:t,finding:n,showImpactEstimate:r===0&&s},r)),c&&a?(0,W.jsxs)(B,{size:`sm`,variant:`outline`,onClick:()=>a(c),children:[`Show evidence`,(0,W.jsx)(ft,{"aria-hidden":`true`})]}):null]},e)})}):null]})}function Li({stage:e,appModel:t}){return Ue(e.id,t)?(0,W.jsx)(qe,{title:`Query Plan`,children:(0,W.jsx)(Ye,{stageId:e.id,appModel:t})}):null}function Ri({stage:e,appModel:t,catalog:n,getTaskData:r,onShowEvidence:i}){let{exportMode:a,getTaskData:o}=Zn(r),[s,c]=(0,H.useState)(null),[l,u]=(0,H.useState)(!1),[d,f]=(0,H.useState)(0),p=(e.taskCount??0)>0,m=A(),h=m?.data.stages[String(e.id)],g=m&&h?h.findingIndexes.map(e=>de(m,e)).filter(e=>e!=null):[];(0,H.useEffect)(()=>{if(!p||!o)return;let t=!1;return u(!1),o(e.id).catch(()=>null).then(e=>{t||(e?c(e):u(!0))}),()=>{t=!0}},[d]);let _=(e.completedAt??0)-(e.submittedAt??0),v=(e.memoryBytesSpilled??0)>0||(e.diskBytesSpilled??0)>0,y=(e.jvmGCTime??0)>0||(e.gcPct??0)>0,b=e.fetchWaitTime??0,x=b>0&&_>0?Math.round(b/_*100):null,S=(e.inputBytes??0)>0?((e.outputBytes??0)/(e.inputBytes??0)).toFixed(2):null,C=e.localityStats??[];return(0,W.jsxs)(`div`,{className:`space-y-6`,children:[(0,W.jsx)(Ii,{stage:e,findings:g,typeOrder:h?.typeOrder??[],catalog:n,runMs:m?.data.runShape.wallClockMs??null,onShowEvidence:i}),(0,W.jsx)(Re,{title:`Overview`,collapsible:!0,defaultOpen:!0,rows:[[`Duration`,k(_)],[`Submitted`,Ai(e.submittedAt)],[`Completed`,Ai(e.completedAt)],e.sqlExecutionId!=null&&[`SQL Execution`,`#${e.sqlExecutionId}`],e.stageType?[`Stage type`,e.stageType]:!1]}),(0,W.jsx)(Re,{title:`Tasks`,collapsible:!0,rows:[[`Total`,String(e.taskCount)],[`Failed`,String(e.failedTasks)],[`P50 duration`,(e.taskDurationP50??0)>0?k(e.taskDurationP50):`—`],[`P95 duration`,(e.taskDurationP95??0)>0?k(e.taskDurationP95):`—`],[`Max duration`,(e.taskDurationMax??0)>0?k(e.taskDurationMax):`—`],(e.peakExecutionMemoryMax??0)>0&&[`Peak execution memory`,O(e.peakExecutionMemoryMax)]],children:p?a?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Per-task duration data isn’t included in exported reports.`}):s?(0,W.jsx)(Ei,{metrics:s.metrics,fieldNames:s.fieldNames,markers:{p50:e.taskDurationP50,p95:e.taskDurationP95}}):l?(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Couldn’t load task data for this stage.`}),(0,W.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>f(e=>e+1),children:`Retry`})]}):(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading task data…`}):null}),(0,W.jsx)(Re,{title:`Locality`,collapsible:!0,rows:[],children:C.length>0?(0,W.jsx)(ji,{stats:C}):null}),(0,W.jsx)(Re,{title:`I/O`,collapsible:!0,rows:[[`Input`,O(e.inputBytes)],[`Output`,O(e.outputBytes)],[`Shuffle read`,O(e.shuffleReadBytes)],[`Shuffle write`,O(e.shuffleWriteBytes)],b>0&&[`Fetch wait`,`${k(b)}${x==null?``:` (${x}%)`}`],S!=null&&[`I/O ratio`,S]]}),v?(0,W.jsx)(Re,{title:`Spill`,collapsible:!0,rows:[[`Memory spilled`,O(e.memoryBytesSpilled)],[`Disk spilled`,O(e.diskBytesSpilled)],(e.memoryBytesSpilled??0)>0&&[`Classification`,e.spillClassification??`unclassified`]]}):null,y?(0,W.jsx)(Re,{title:`GC`,collapsible:!0,rows:[[`JVM GC time`,k(e.jvmGCTime)],[`Executor run time`,k(e.executorRunTime)],[`GC %`,`${(e.gcPct??0).toFixed(1)}%`]]}):null,e.details?(0,W.jsx)(M,{children:(0,W.jsx)(qe,{title:`Call Stack`,children:(0,W.jsx)(`pre`,{className:`overflow-x-auto rounded-md bg-muted p-2 text-xs whitespace-pre-wrap`,children:e.details})})}):null,(0,W.jsx)(Li,{stage:e,appModel:t})]})}function zi({appModel:e,catalog:t,getTaskData:n,onRoute:r}){let{stageId:i,close:a}=Et(),o=i==null?void 0:e.stages.get(i),s=o!=null,c=(0,H.useRef)(!1),l=r?e=>{c.current=!0,a(),r(e)}:void 0;return(0,W.jsx)(it,{open:s,onOpenChange:e=>{e||a()},children:(0,W.jsx)(Tt,{className:`max-h-[85vh] overflow-y-auto sm:max-w-4xl`,finalFocus:()=>{let e=c.current;return c.current=!1,!e},children:o?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(at,{children:[(0,W.jsxs)(dt,{children:[`Stage `,o.id]}),o.name?(0,W.jsxs)(ht,{className:`font-mono text-xs [overflow-wrap:anywhere]`,children:[(0,W.jsx)(`span`,{className:`font-sans`,children:`Code location: `}),o.name]}):null]}),(0,W.jsx)(Ri,{stage:o,appModel:e,catalog:t,getTaskData:n,onShowEvidence:l},o.id)]}):null})})}function Bi(e){return Vi(e)||typeof e==`function`||Hi(e)}function Vi(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function Hi(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function Ui(e,t){return e==null?null:Bi(e)?H.createElement(e,t):e}function Wi(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?Ui(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:Ui(n.cell,t.getContext())}return`header`in e&&e.header?Ui(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?Ui(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Gi({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function Ki(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var qi=[],Ji=0,{link:Yi,unlink:Xi,propagate:Zi,checkDirty:Qi,shallowPropagate:$i}=Gi({update(e){return e._update()},notify(e){qi[ta++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,ia(e))}}),ea=0,ta=0,q,na=0;function ra(e){try{++na,e()}finally{--na||aa()}}function ia(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Xi(n,e)}function aa(){if(!(na>0)){for(;ea<ta;){let e=qi[ea];qi[ea++]=void 0,e.notify()}ea=0,ta=0}}function oa(e,t){let n=typeof e==`function`,r=e,i={_snapshot:n?void 0:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:+!n,get(){return q!==void 0&&Yi(i,q,Ji),i._snapshot},subscribe(e){let t=Ki(e),n={current:!1},r=sa(()=>{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=q,o=t?.compare??Object.is;if(n)q=i,++Ji,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{q=a,n&&(i.flags&=-5),ia(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Qi(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&$i(e)}}else e&32&&(i.flags=e&-33);return q!==void 0&&Yi(i,q,Ji),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Zi(e),$i(e),aa())}},i}function sa(e){let t=()=>{let t=q;q=n,++Ji,n.depsTail=void 0,n.flags=6;try{return e()}finally{q=t,n.flags&=-5,ia(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&Qi(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,ia(this)}};return t(),n}function ca(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=la(e);if(n.length!==la(t).length)return!1;for(let r=0;r<n.length;r++)if(!Object.prototype.hasOwnProperty.call(t,n[r])||!Object.is(e[n[r]],t[n[r]]))return!1;return!0}function la(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}var ua=e(r(),1);function da(e,t){return e===t}function fa(e,t=e=>e,n){let r=n?.compare??da,i=(0,H.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,H.useCallback)(()=>e.get(),[e]);return(0,ua.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function pa(e){let t=fa(e.source,e.selector,{compare:ca});return typeof e.children==`function`?e.children(t):e.children}function ma(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function ha(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function ga(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function _a(){return ha({createAtom:oa,batch:ra})}function va(e,t){return typeof e==`function`?e(t):e}function J(e){if(Array.isArray(e))return e.map(J);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?Y():{},r=Object.keys(e);for(let t=0;t<r.length;t++){let i=r[t];Object.defineProperty(n,i,{configurable:!0,enumerable:!0,value:J(e[i]),writable:!0})}return n}return e}function ya(e,t){let n=Object.keys(t),r=e;for(let e=0;e<n.length;e++){let i=n[e];!i.startsWith(`_memo_`)&&i!==`_cellsCache`&&(r[i]=t[i])}return e}function Y(){return Object.create(null)}function ba(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function xa(e,t){return n=>{(t.options.atoms?.[e]??t.baseAtoms[e]).set(e=>va(n,e))}}function Sa(e){if(typeof e!=`object`||!e)return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Ca(e){return Reflect.ownKeys(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var wa=3;function Ta(e,t){return Ea(e,t,wa)}function Ea(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!Sa(e)||!Sa(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=Ca(e),i=Ca(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e<r.length;e++){let i=r[e];if(!Object.prototype.propertyIsEnumerable.call(t,i)||!Ea(a[i],o[i],n-1))return!1}return!0}function Da(e,t,n,r=Ta){let i=`on${t.charAt(0).toUpperCase()}${t.slice(1)}Change`,a=e.options[i];a&&a(e=>{let t=va(n,e);return r(e,t)?e:t})}function Oa(e){return e instanceof Function}function ka(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var Aa=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e<l.length;e++)if(l[e]!==o[e]){u=!0;break}}return n?.(u),u?(o=l,a?.(),s=e(...l??[]),r?.(s),s):s}};function ja(e){let t=!1;return()=>{if(!t){t=!0;return}e()}}function Ma({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return Aa({...a,...s})}function Na(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function X(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=Na(r);t[n]=a?Ma({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function Z(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=Na(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=Ma({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function Q(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function Pa(e){return e.row.getValue(e.column.id)}function Fa(e){return e.getValue()??e.table.options.renderFallbackValue}function Ia(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var La={assignCellPrototype:(e,t)=>{Z(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>Pa(e)},cell_renderValue:{fn:e=>Fa(e)},cell_getContext:{fn:e=>Ia(e),memoDeps:e=>[e]}})}};function Ra(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignHeaderPrototype?.(e._headerPrototype,e)}return e._headerPrototype}function za(e,t,n){let r=Ra(e),i=Object.create(r);i.colSpan=0,i.column=t,i.depth=n.depth,i.headerGroup=null,i.id=n.id??t.id,i.index=n.index,i.isPlaceholder=!!n.isPlaceholder,i.placeholderId=n.placeholderId,i.rowSpan=0,i.subHeaders=[];let a=e._headerInstanceInitFns;for(let e=0;e<a.length;e++)a[e](i);return i}function Ba(){return{start:[],end:[]}}function Va(){return Y()}function Ha(e,t){Ua(e)&&Ya(e.table,n=>{let r=Object.assign(Y(),n),i=t??!Q(e,`getIsVisible`,$),a=e.getLeafColumns();for(let e=0;e<a.length;e++){let t=a[e];Ua(t)&&(r[t.id]=i)}return r})}function $(e){let t=e.table.atoms.columnVisibility?.get();if(!t)return!0;let n=e.columns;return n.length?n.some(e=>Q(e,`getIsVisible`,$)):(ba(t,e.id)?t[e.id]:void 0)??!0}function Ua(e){return(e.columnDef.enableHiding??!0)&&(e.table.options.enableHiding??!0)}function Wa(e){return t=>{Ha(e,t.target.checked)}}function Ga(e){let t=e.getAllCells(),n=[];for(let e=0;e<t.length;e++){let r=t[e];Q(r.column,`getIsVisible`,$)&&n.push(r)}let{start:r,end:i}=e.table.atoms.columnPinning?.get()??Ba();if(!r.length&&!i.length)return n;let a=Q(e,`getVisibleCellsByColumnId`,Ka),o=[];for(let e=0;e<r.length;e++){let t=a[r[e]];t&&o.push(t)}let s=[];for(let e=0;e<i.length;e++){let t=a[i[e]];t&&s.push(t)}let c=[];for(let e=0;e<n.length;e++){let t=n[e],a=t.column.id;!r.includes(a)&&!i.includes(a)&&c.push(t)}return[...o,...c,...s]}function Ka(e){let t=Y(),n=e.getAllCells();for(let e=0;e<n.length;e++){let r=n[e];Q(r.column,`getIsVisible`,$)&&(t[r.column.id]=r)}return t}function qa(e){return e.getAllFlatColumns().filter(e=>Q(e,`getIsVisible`,$))}function Ja(e){return e.getAllLeafColumns().filter(e=>Q(e,`getIsVisible`,$))}function Ya(e,t){Da(e,`columnVisibility`,t)}function Xa(e,t){Ya(e,t?Y():Object.assign(Y(),J(e.initialState.columnVisibility??{})))}function Za(e,t){t??=!Qa(e);let n=Y(),r=e.getAllLeafColumns();for(let e=0;e<r.length;e++){let i=r[e];n[i.id]=t||!Ua(i)}Ya(e,n)}function Qa(e){return!e.getAllLeafColumns().some(e=>!Q(e,`getIsVisible`,$))}function $a(e){return e.getAllLeafColumns().some(e=>Q(e,`getIsVisible`,$))}function eo(e){return t=>{Za(e,t.target.checked)}}function to(e,t=1){let n=t;for(let r=0;r<e.length;r++){let i=e[r];Q(i,`getIsVisible`,$)&&i.columns.length&&(n=Math.max(n,to(i.columns,t+1)))}return n}function no(e,t){return e?`${e}_${t}`:String(t)}function ro(e,t,n,r){let i=e??``;return t&&(i=i?`${i}_${t}`:String(t)),n&&(i=i?`${i}_${n}`:n),r&&(i=i?`${i}_${r}`:r),i}function io(e,t){let n=0;for(let r=0;r<e.length;r++)e[r].column===t&&n++;return n}function ao(e,t,n,r,i,a){let o={depth:t,id:no(r,t),headers:[]},s=[];for(let i=0;i<e.length;i++){if(!(i in e))continue;let a=e[i],c=s[s.length-1],l=a.column.depth===o.depth,u,d=!1;if(l&&a.column.parent?u=a.column.parent:(u=a.column,d=!0),c&&c.column===u)c.subHeaders.push(a);else{let e=za(n,u,{id:ro(r,t,u.id,a.id),isPlaceholder:d,placeholderId:d?String(io(s,u)):void 0,depth:t,index:s.length});e.subHeaders.push(a),s.push(e)}o.headers.push(a),a.headerGroup=o}for(let e=0;e<a.length;e++)a[e](o);i.push(o),t>0&&ao(s,t-1,n,r,i,a)}function oo(e){for(let t=0;t<e.length;t++){let n=e[t];if(!Q(n.column,`getIsVisible`,$))continue;let r=0;if(n.subHeaders.length){oo(n.subHeaders);for(let e=0;e<n.subHeaders.length;e++){let t=n.subHeaders[e];Q(t.column,`getIsVisible`,$)&&(r+=t.colSpan)}}else r=1;if(n.colSpan=r,n.isPlaceholder&&n.subHeaders.length===1&&n.subHeaders[0].column===n.column){let e=1,t=n.subHeaders[0];for(;t;)t.rowSpan=0,e++,t=t.subHeaders.length===1&&t.subHeaders[0].column===n.column?t.subHeaders[0]:void 0;n.rowSpan=e}else n.rowSpan=1}}function so(e,t,n,r){let i=to(e),a=[],o=n._headerGroupInstanceInitFns,s=Array(t.length);for(let e=0;e<t.length;e++)e in t&&(s[e]=za(n,t[e],{depth:i,index:e}));return ao(s,i-1,n,r,a,o),a.reverse(),oo(a[0]?.headers??[]),a}function co(e){if(!e._columnPrototype){e._columnPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignColumnPrototype?.(e._columnPrototype,e)}return e._columnPrototype}function lo(e,t,n,r){let i={...e.getDefaultColumnDef(),...t},a=i.accessorKey,o=a===void 0?void 0:String(a),s=i.id??o?.replaceAll(`.`,`_`)??(typeof i.header==`string`?i.header:void 0),c;if(i.accessorFn)c=i.accessorFn;else if(a!==void 0){if(typeof a==`string`&&a.includes(`.`)){let e=a.split(`.`);c=t=>{let n=t;for(let t=0;t<e.length;t++){let r=e[t];n=n?.[r]}return n}}else c=e=>e[i.accessorKey]}if(!s)throw Error();let l=co(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e<d.length;e++)d[e](u);return u}function uo(e){let t=e.atoms.columnOrder?.get();return n=>{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t<n.length;t++){let r=n[t];e.set(r.id,r)}for(let n=0;n<t.length;n++){let i=t[n],a=e.get(i);a&&(r.push(a),e.delete(i))}for(let t=0;t<n.length;t++){let i=n[t];e.has(i.id)&&r.push(i)}}return fo(e,r)}}function fo(e,t){let n=e.atoms.grouping?.get()??[],{groupedColumnMode:r}=e.options;if(!n.length||!r)return t;let i=t.filter(e=>!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;e<t.length;e++){let n=t[e];a.set(n.id,n)}let o=[];for(let e=0;e<n.length;e++){let t=a.get(n[e]);t&&o.push(t)}return[...o,...i]}function po(e){return[e,...e.columns.flatMap(e=>e.getFlatColumns())]}function mo(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return Q(e.table,`getOrderColumns`,uo)(t)}return[e]}function ho(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function go(e,t,n,r=0){let i=Array(t.length);for(let a=0;a<t.length;a++){if(!(a in t))continue;let o=t[a],s=lo(e,o,r,n),c=o;s.columns=c.columns?go(e,c.columns,s,r+1):[],i[a]=s}return i}function _o(e){return go(e,e.options.columns)}function vo(e){return e.getAllColumns().flatMap(e=>e.getFlatColumns())}function yo(e){let t=Y(),n=e.getAllFlatColumns();for(let e=0;e<n.length;e++){let r=n[e];t[r.id]=r}return t}function bo(e){let t=e.getAllColumns().flatMap(e=>e.getLeafColumns());return Q(e,`getOrderColumns`,uo)(t)}function xo(e){let t=Y(),n=e.getAllLeafColumns();for(let e=0;e<n.length;e++){let r=n[e];t[r.id]=r}return t}function So(e,t){return e.getAllFlatColumnsById()[t]}var Co={assignColumnPrototype:(e,t)=>{Z(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>po(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>mo(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{X(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>ho(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>_o(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>vo(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>yo(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>bo(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>xo(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>So(e,t)}})}};function wo(e,t){for(let n=0;n<e.subHeaders.length;n++)wo(e.subHeaders[n],t);t.push(e)}function To(e){let t=[];return wo(e,t),t}function Eo(e){return{column:e.column,header:e,table:e.column.table}}function Do(e){let{start:t,end:n}=e.atoms.columnPinning?.get()??Ba(),r=e.getAllColumns(),i=Q(e,`getVisibleLeafColumns`,Ja);if(!t.length&&!n.length)return so(r,i,e);let a=e.getAllLeafColumnsById(),o=[];for(let e=0;e<t.length;e++){let n=a[t[e]];n&&Q(n,`getIsVisible`,$)&&o.push(n)}let s=[];for(let e=0;e<n.length;e++){let t=a[n[e]];t&&Q(t,`getIsVisible`,$)&&s.push(t)}let c=i.filter(e=>!t.includes(e.id)&&!n.includes(e.id));return so(r,[...o,...c,...s],e)}function Oo(e){return[...e.getHeaderGroups()].reverse()}function ko(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e<t.length;e++){let r=t[e].headers;for(let e=0;e<r.length;e++)n.push(r[e])}return n}function Ao(e){let t=e.getHeaderGroups()[0]?.headers??[],n=[];for(let e=0;e<t.length;e++){let r=t[e].getLeafHeaders();for(let e=0;e<r.length;e++)n.push(r[e])}return n}var jo={assignHeaderPrototype:(e,t)=>{Z(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>To(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>Eo(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{X(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>Do(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>Oo(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>ko(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>Ao(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function Mo(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignRowPrototype?.(e._rowPrototype,e)}return e._rowPrototype}var No=(e,t,n,r,i,a,o)=>{let s=Mo(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=Y(),c._valuesCache=Y(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;e<l.length;e++)l[e](c);return c},Po=/([0-9]+)/gm;function Fo(e){let t=Object.assign((e,n,r)=>{let i=e.getValue(r),a=n.getValue(r),o=t.resolveDataValue;return o&&(i=o(i),a=o(a)),t.sort(i,a,e,n,r)},e);return t}Fo({resolveDataValue:e=>zo(e).toLowerCase(),sort:(e,t)=>Bo(e,t)}),Fo({resolveDataValue:e=>zo(e),sort:(e,t)=>Bo(e,t)}),Fo({resolveDataValue:e=>zo(e).toLowerCase(),sort:(e,t)=>Lo(e,t)}),Fo({resolveDataValue:e=>zo(e),sort:(e,t)=>Lo(e,t)}),Fo({resolveDataValue:e=>Ro(e),sort:(e,t)=>e>t?1:e<t?-1:0});var Io=Fo({sort:(e,t)=>Lo(e,t)});function Lo(e,t){return e===t?0:e>t?1:-1}function Ro(e){return e instanceof Date?e.getTime():e}function zo(e){return typeof e==`number`?isNaN(e)||e===1/0||e===-1/0?``:String(e):typeof e==`string`?e:``}function Bo(e,t){let n=0,r=0,i=e.length,a=t.length;for(;n<i&&r<a;){let i=Vo(e.charCodeAt(n)),a=Vo(t.charCodeAt(r)),o=Ho(e,n,i),s=Ho(t,r,a);if(!i&&!a){let i=Uo(e,n,o,t,r,s);if(i)return i;n=o,r=s;continue}if(i!==a)return i?1:-1;let c=Wo(e,n,o,t,r,s);if(c)return c;n=o,r=s}return Ko(e,n)-Ko(t,r)}function Vo(e){return e>=48&&e<=57}function Ho(e,t,n){let r=t+1;for(;r<e.length&&Vo(e.charCodeAt(r))===n;)r++;return r}function Uo(e,t,n,r,i,a){let o=n-t,s=a-i,c=o<s?o:s;for(let n=0;n<c;n++){let a=e.charCodeAt(t+n),o=r.charCodeAt(i+n);if(a>o)return 1;if(o>a)return-1}return o>s?1:s>o?-1:0}function Wo(e,t,n,r,i,a){let o=t;for(;o<n&&e.charCodeAt(o)===48;)o++;let s=i;for(;s<a&&r.charCodeAt(s)===48;)s++;let c=n-o,l=a-s;if(c===0&&l===0)return 0;if(c<=15&&l<=15){let t=Go(e,o,n),i=Go(r,s,a);return t>i?1:i>t?-1:0}let u=parseInt(e.slice(t,n),10),d=parseInt(r.slice(i,a),10);return u>d?1:d>u?-1:0}function Go(e,t,n){let r=0;for(let i=t;i<n;i++)r=r*10+e.charCodeAt(i)-48;return r}function Ko(e,t){let n=0,r=t;for(;r<e.length;)n++,r=Ho(e,r,Vo(e.charCodeAt(r)));return n}function qo(){return[]}function Jo(e,t){Da(e,`cellSelection`,t?qo():J(e.initialState.cellSelection)??qo())}function Yo(e){e.atoms.cellSelection&&(e.options.autoResetAll??e.options.autoResetCellSelection??!0)&&e._reactivity.schedule(()=>Jo(e))}function Xo(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>Zo(e))}function Zo(e,t){let n=e.initialState.expanded;Da(e,`expanded`,t?Y():n===!0||Object.assign(Y(),J(n??{})))}function Qo(e){let t=e.table.atoms.expanded?.get()??{};return!!(e.table.options.getIsRowExpanded?.(e)??(t===!0||$o(t,e.id)))}function $o(e,t){return!!(e&&e!==!0&&ba(e,t)&&e[t])}var es=0,ts=10;function ns(){return{pageIndex:es,pageSize:ts}}function rs(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??es)===es)return;ss(e,!0)}}function is(e,t){Da(e,`pagination`,t)}function as(e,t){is(e,t?ns():J(e.initialState.pagination??ns()))}function os(e,t){is(e,n=>{let r=va(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function ss(e,t){os(e,t?es:e.initialState.pagination?.pageIndex??es)}function cs(e,t){ls(e,t?ts:e.initialState.pagination?.pageSize??ts)}function ls(e,t){is(e,e=>{let n=Math.max(1,va(t,e.pageSize)),r=e.pageSize===1/0?0:e.pageSize*e.pageIndex,i=n===1/0?0:Math.floor(r/n);return{...e,pageIndex:i,pageSize:n}})}function us(e){let t=vs(e),n=[];return t&&t>0&&(n=[...Array(t)].fill(null).map((e,t)=>t)),n}function ds(e){return(e.atoms.pagination?.get()?.pageIndex??0)>0}function fs(e){let t=e.atoms.pagination?.get()?.pageIndex??es,n=vs(e);return n===-1||n!==0&&t<n-1}function ps(e){let t=e.atoms.pagination?.get()?.pageIndex??es,n=vs(e);return Number.isFinite(n)&&n>0&&t<n-1}function ms(e){return os(e,e=>e-1)}function hs(e){return os(e,e=>e+1)}function gs(e){return os(e,0)}function _s(e){let t=vs(e);if(!(!Number.isFinite(t)||t<=0))return os(e,t-1)}function vs(e){let t=e.options.pageCount;if(t!=null)return t;let n=ys(e),r=e.atoms.pagination?.get()?.pageSize??ts;return r===1/0&&Number.isFinite(n)&&n>0?1:Math.ceil(n/r)}function ys(e){return e.options.rowCount??e.getPrePaginatedRowModel().rows.length}function bs(){return[]}function xs(e,t){Da(e,`sorting`,t)}function Ss(e,t){xs(e,t?[]:J(e.initialState.sorting??[]))}function Cs(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&Ss(e)}function ws(e){let t=e.table._rowModelFns.sortFns,n=e.table.getFilteredRowModel().flatRows.slice(0,10),r,i=!1;for(let t=0;t<n.length;t++){let a=n[t].getValue(e.id);if(Object.prototype.toString.call(a)===`[object Date]`){r=`datetime`;break}if(typeof a==`string`&&(i=!0,a.split(Po).length>1)){r=`alphanumeric`;break}}if(!r&&i&&(r=`text`),r){let e=t?.[r];if(e||r===`alphanumeric`&&(e=t?.text),e)return e}return Io}function Ts(e){let t=e.table.getFilteredRowModel().flatRows.slice(0,10);for(let n=0;n<t.length;n++){let r=t[n].getValue(e.id);if(r!=null)return typeof r==`string`?`asc`:`desc`}return`desc`}function Es(e){let t=e.table._rowModelFns.sortFns;return Oa(e.columnDef.sortFn)?e.columnDef.sortFn:e.columnDef.sortFn===`auto`?ws(e):t?.[e.columnDef.sortFn]??Io}function Ds(e,t,n){let r=ks(e,n&&js(e)),i=t!==void 0;xs(e.table,a=>{let o=a.findIndex(t=>t.id===e.id),s=o===-1?void 0:a[o],c=[],l,u=i?t:r===`desc`,d=!!(a.length&&js(e)&&n);return l=d?s?`toggle`:`add`:s?`toggle`:`replace`,l===`toggle`&&(i||r||(l=`remove`)),l===`add`?(c=[...a,{id:e.id,desc:u}],c.splice(0,c.length-(e.table.options.maxMultiSortColCount??2**53-1))):c=l===`toggle`?d?a.map(t=>t.id===e.id?{...t,desc:u}:t):[{id:e.id,desc:u}]:l===`remove`?d?a.filter(t=>t.id!==e.id):[]:[{id:e.id,desc:u}],c})}function Os(e){return e.columnDef.sortDescFirst??e.table.options.sortDescFirst??Ts(e)===`desc`?`desc`:`asc`}function ks(e,t){let n=Os(e),r=Ms(e);return r?r!==n&&(e.table.options.enableSortingRemoval??!0)&&(!t||(e.table.options.enableMultiRemove??!0))?!1:r===`desc`?`asc`:`desc`:n}function As(e){return(e.columnDef.enableSorting??!0)&&(e.table.options.enableSorting??!0)&&!!e.accessorFn}function js(e){return e.columnDef.enableMultiSort??e.table.options.enableMultiSort??!!e.accessorFn}function Ms(e){let t=e.table.atoms.sorting?.get()?.find(t=>t.id===e.id);return t?t.desc?`desc`:`asc`:!1}function Ns(e){return e.table.atoms.sorting?.get()?.findIndex(t=>t.id===e.id)??-1}function Ps(e){xs(e.table,t=>t.length?t.filter(t=>t.id!==e.id):[])}function Fs(e){let t=As(e);return n=>{t&&Ds(e,void 0,js(e)?e.table.options.isMultiSortEvent?.(n):!1)}}function Is(){return e=>Ma({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>Rs(e,e.options.data),onAfterUpdate:ja(()=>{Xo(e),rs(e),Cs(e),Yo(e)})})}function Ls(e,t,n,r=0,i){let a=[];for(let o=0;o<n.length;o++){let s=n[o],c=No(e,e.getRowId(s,o,i),s,o,r,void 0,i?.id);t.flatRows.push(c),t.rowsById[c.id]=c,a.push(c),e.options.getSubRows&&(c.originalSubRows=e.options.getSubRows(s,o),c.originalSubRows?.length&&(c.subRows=Ls(e,t,c.originalSubRows,r+1,c)))}return a}function Rs(e,t){let n={rows:[],flatRows:[],rowsById:Y()};return n.rows=Ls(e,n,t),n}function zs(e){return e._rowModels.coreRowModel||(e._rowModels.coreRowModel=e.options.features.coreRowModel?.(e)??Is()(e)),e._rowModels.coreRowModel()}function Bs(e){return e.getCoreRowModel()}function Vs(e){return e._rowModels.filteredRowModel||(e._rowModels.filteredRowModel=e.options.features.filteredRowModel?.(e)),e.options.manualFiltering||!e._rowModels.filteredRowModel?e.getPreFilteredRowModel():e._rowModels.filteredRowModel()}function Hs(e){return e.getFilteredRowModel()}function Us(e){return e._rowModels.groupedRowModel||(e._rowModels.groupedRowModel=e.options.features.groupedRowModel?.(e)),e.options.manualGrouping||!e._rowModels.groupedRowModel?e.getPreGroupedRowModel():e._rowModels.groupedRowModel()}function Ws(e){return e.getGroupedRowModel()}function Gs(e){return e._rowModels.sortedRowModel||(e._rowModels.sortedRowModel=e.options.features.sortedRowModel?.(e)),e.options.manualSorting||!e._rowModels.sortedRowModel?e.getPreSortedRowModel():e._rowModels.sortedRowModel()}function Ks(e){return e.getSortedRowModel()}function qs(e){return e._rowModels.expandedRowModel||(e._rowModels.expandedRowModel=e.options.features.expandedRowModel?.(e)),e.options.manualExpanding||!e._rowModels.expandedRowModel?e.getPreExpandedRowModel():e._rowModels.expandedRowModel()}function Js(e){return e.getExpandedRowModel()}function Ys(e){return e._rowModels.paginatedRowModel||(e._rowModels.paginatedRowModel=e.options.features.paginatedRowModel?.(e)),e.options.manualPagination||!e._rowModels.paginatedRowModel?e.getPrePaginatedRowModel():e._rowModels.paginatedRowModel()}function Xs(e){return e.getPaginatedRowModel()}var Zs={constructTableAPIs:e=>{X(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>zs(e)},table_getPreFilteredRowModel:{fn:()=>Bs(e)},table_getFilteredRowModel:{fn:()=>Vs(e)},table_getPreGroupedRowModel:{fn:()=>Hs(e)},table_getGroupedRowModel:{fn:()=>Us(e)},table_getPreSortedRowModel:{fn:()=>Ws(e)},table_getSortedRowModel:{fn:()=>Gs(e)},table_getPreExpandedRowModel:{fn:()=>Ks(e)},table_getExpandedRowModel:{fn:()=>qs(e)},table_getPrePaginatedRowModel:{fn:()=>Js(e)},table_getPaginatedRowModel:{fn:()=>Ys(e)},table_getRowModel:{fn:()=>Xs(e)}})}};function Qs(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignCellPrototype?.(e._cellPrototype,e)}return e._cellPrototype}function $s(e,t,n){let r=Qs(n),i=Object.create(r);i.column=e,i.id=`${t.id}_${e.id}`,i.row=t;let a=n._cellInstanceInitFns;for(let e=0;e<a.length;e++)a[e](i);return i}function ec(e){let t=e.table.getRowsInDisplayOrder(),n=e._displayIndexCache;return t[n]===e?n:-1}function tc(e){let t=e.getPrePaginatedRowModel().rows;if(e.options.paginateExpandedRows===!1){let e=[],n=t=>{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;e<t.length;e++)t[e]._displayIndexCache=e;return t}function nc(e,t){if(ba(e._valuesCache,t))return e._valuesCache[t];let n=e.table.getColumn(t);if(n?.accessorFn)return e._valuesCache[t]=n.accessorFn(e.original,e.index),e._valuesCache[t]}function rc(e,t){if(ba(e._uniqueValuesCache,t))return e._uniqueValuesCache[t];let n=e.table.getColumn(t);if(n?.accessorFn)return n.columnDef.getUniqueValues?(e._uniqueValuesCache[t]=n.columnDef.getUniqueValues(e.original,e.index),e._uniqueValuesCache[t]):(e._uniqueValuesCache[t]=[e.getValue(t)],e._uniqueValuesCache[t])}function ic(e,t){return e.getValue(t)??e.table.options.renderFallbackValue}function ac(e){return ka(e.subRows,e=>e.subRows)}function oc(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e<t.length;e++)n=Math.max(n,t[e].depth);return n}function sc(e){if(e.parentId)return e.table.getCoreRowModel().rowsById[e.parentId]??e.table.getRow(e.parentId,!0)}function cc(e){let t=[],n=e;for(;;){let e=n.getParentRow();if(!e)break;t.push(e),n=e}return t.reverse()}function lc(e){let t=e.table.getAllLeafColumns(),n=e._cellsCache;n||=e._cellsCache=new WeakMap;let r=Array(t.length);for(let i=0;i<t.length;i++){let a=t[i],o=n.get(a);o||(o=$s(a,e,e.table),n.set(a,o)),r[i]=o}return r}function uc(e){let t=Y(),n=e.getAllCells();for(let e=0;e<n.length;e++){let r=n[e];t[r.column.id]=r}return t}function dc(e,t,n,r){return t.options.getRowId?.(e,n,r)??(r?`${r.id}.${n}`:String(n))}function fc(e,t,n){let r=(n?e.getPrePaginatedRowModel():e.getRowModel()).rowsById[t];if(!r&&(r=e.getCoreRowModel().rowsById[t],!r))throw Error();return r}var pc={assignRowPrototype:(e,t)=>{Z(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>ec(e)},row_getAllCellsByColumnId:{fn:e=>uc(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>lc(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>ac(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>sc(e)},row_getParentRows:{fn:e=>cc(e)},row_getUniqueValues:{fn:(e,t)=>rc(e,t)},row_getValue:{fn:(e,t)=>nc(e,t)},row_renderValue:{fn:(e,t)=>ic(e,t)}})},constructTableAPIs:e=>{X(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>tc(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>dc(t,e,n,r)},table_getRow:{fn:(t,n)=>fc(e,t,n)},table_getMaxSubRowDepth:{fn:()=>oc(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function mc(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function hc(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{mc(e,t,n),e._reactivity.commit?.()})}function gc(e){let t=J(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;r<n.length;r++){let i=n[r];e.baseAtoms[i].set(t[i])}});let n=Object.values(e._features);for(let t=0;t<n.length;t++)n[t].resetTableInstanceData?.(e)}function _c(e,t){let{features:n,atoms:r,initialState:i}=e.options;if(!e.options.mergeOptions)return{...e.options,...t,features:n,atoms:r,initialState:i};let a=e.options.mergeOptions(e.options,t),o={...Object.getOwnPropertyDescriptors(a)};return Object.defineProperties(Object.create(Object.getPrototypeOf(a)),{...o,features:{value:n,enumerable:!0,configurable:!0,writable:!0},atoms:{value:r,enumerable:!0,configurable:!0,writable:!0},initialState:{value:i,enumerable:!0,configurable:!0,writable:!0}})}function vc(e,t,n){let r=_c(e,va(t,e.options));e.optionsStore?e.optionsStore.set(()=>r):e.options=r,n?.syncExternalState!==!1&&hc(e,r.state??null)}var yc={coreCellsFeature:La,coreColumnsFeature:Co,coreHeadersFeature:jo,coreRowModelsFeature:Zs,coreRowsFeature:pc,coreTablesFeature:{constructTableAPIs:e=>{X(`coreTablesFeature`,e,{table_reset:{fn:()=>gc(e)},table_setOptions:{fn:t=>vc(e,t)}})}}};function bc(e){return e}function xc(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),J(t)}function Sc(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...yc,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=xc(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e<x.length;e++){let n=x[e];v.baseAtoms[n]=t.createWritableAtom(v.initialState[n],{debugName:`table/baseAtoms/${n}`}),v.atoms[n]=t.createReadonlyAtom(()=>{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&ba(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}mc(v),v.store=ma(t.createReadonlyAtom(()=>{let e={};for(let t=0;t<x.length;t++){let n=x[t];e[n]=v.atoms[n].get()}return e},{compare:ca,debugName:`table/store`}));for(let e=0;e<y.length;e++){let t=y[e];t.initTableInstanceData?.(v),t.initCellInstanceData&&v._cellInstanceInitFns.push(t.initCellInstanceData.bind(t)),t.initColumnInstanceData&&v._columnInstanceInitFns.push(t.initColumnInstanceData.bind(t)),t.initHeaderGroupInstanceData&&v._headerGroupInstanceInitFns.push(t.initHeaderGroupInstanceData.bind(t)),t.initHeaderInstanceData&&v._headerInstanceInitFns.push(t.initHeaderInstanceData.bind(t)),t.initRowInstanceData&&v._rowInstanceInitFns.push(t.initRowInstanceData.bind(t)),t.constructTableAPIs?.(v)}return v}var Cc={getInitialState:e=>({columnVisibility:Va(),...e}),getDefaultTableOptions:e=>({onColumnVisibilityChange:xa(`columnVisibility`,e)}),assignColumnPrototype:(e,t)=>{Z(`columnVisibilityFeature`,e,t,{column_getIsVisible:{fn:e=>$(e),memoDeps:e=>[t.options.columns,t.atoms.columnVisibility?.get(),e.columns]},column_getCanHide:{fn:e=>Ua(e)},column_getToggleVisibilityHandler:{fn:e=>Wa(e)},column_toggleVisibility:{fn:(e,t)=>Ha(e,t)}})},assignRowPrototype:(e,t)=>{Z(`columnVisibilityFeature`,e,t,{row_getVisibleCells:{fn:e=>Ga(e),memoDeps:e=>[e.getAllCells(),t.atoms.columnPinning?.get(),t.atoms.columnVisibility?.get()]},row_getVisibleCellsByColumnId:{fn:e=>Ka(e),memoDeps:e=>[e.getAllCells(),t.atoms.columnVisibility?.get()]}})},constructTableAPIs:e=>{X(`columnVisibilityFeature`,e,{table_getVisibleFlatColumns:{fn:()=>qa(e),memoDeps:()=>[e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getVisibleLeafColumns:{fn:()=>Ja(e),memoDeps:()=>[e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_setColumnVisibility:{fn:t=>Ya(e,t)},table_resetColumnVisibility:{fn:t=>Xa(e,t)},table_toggleAllColumnsVisible:{fn:t=>Za(e,t)},table_getIsAllColumnsVisible:{fn:()=>Qa(e)},table_getIsSomeColumnsVisible:{fn:()=>$a(e)},table_getToggleAllColumnsVisibilityHandler:{fn:()=>eo(e)}})}},wc={getInitialState:e=>({...e,pagination:{...ns(),...e.pagination}}),getDefaultTableOptions:e=>({onPaginationChange:xa(`pagination`,e)}),constructTableAPIs:e=>{X(`rowPaginationFeature`,e,{table_autoResetPageIndex:{fn:()=>rs(e)},table_setPagination:{fn:t=>is(e,t)},table_resetPagination:{fn:t=>as(e,t)},table_setPageIndex:{fn:t=>os(e,t)},table_resetPageIndex:{fn:t=>ss(e,t)},table_setPageSize:{fn:t=>ls(e,t)},table_getPageCount:{fn:()=>vs(e)},table_resetPageSize:{fn:t=>cs(e,t)},table_getPageOptions:{fn:()=>us(e)},table_getCanPreviousPage:{fn:()=>ds(e)},table_getCanNextPage:{fn:()=>fs(e)},table_getCanLastPage:{fn:()=>ps(e)},table_previousPage:{fn:()=>ms(e)},table_nextPage:{fn:()=>hs(e)},table_firstPage:{fn:()=>gs(e)},table_lastPage:{fn:()=>_s(e)},table_getRowCount:{fn:()=>ys(e)}})}},Tc={getInitialState(e){return{sorting:bs(),...e}},getDefaultColumnDef(){return{sortFn:`auto`,sortUndefined:1}},getDefaultTableOptions(e){return{autoResetSorting:!1,onSortingChange:xa(`sorting`,e),isMultiSortEvent:e=>e.shiftKey}},assignColumnPrototype(e,t){Z(`rowSortingFeature`,e,t,{column_getAutoSortFn:{fn:e=>ws(e)},column_getAutoSortDir:{fn:e=>Ts(e)},column_getSortFn:{fn:e=>Es(e)},column_toggleSorting:{fn:(e,t,n)=>Ds(e,t,n)},column_getFirstSortDir:{fn:e=>Os(e)},column_getNextSortingOrder:{fn:(e,t)=>ks(e,t)},column_getCanSort:{fn:e=>As(e)},column_getCanMultiSort:{fn:e=>js(e)},column_getIsSorted:{fn:e=>Ms(e)},column_getSortIndex:{fn:e=>Ns(e)},column_clearSorting:{fn:e=>Ps(e)},column_getToggleSortingHandler:{fn:e=>Fs(e)}})},constructTableAPIs(e){X(`rowSortingFeature`,e,{table_setSorting:{fn:t=>xs(e,t)},table_resetSorting:{fn:t=>Ss(e,t)}})}};function Ec(e){let t=[],n=e=>{t.push(e),e.subRows.length&&Qo(e)&&e.subRows.forEach(n)};return e.rows.forEach(n),{rows:t,flatRows:e.flatRows,rowsById:e.rowsById}}function Dc(){return e=>{let t=e;return Ma({feature:`rowPaginationFeature`,table:t,fnName:`table.getPaginatedRowModel`,memoDeps:()=>[t.getPrePaginatedRowModel(),t.atoms.pagination?.get(),t.options.paginateExpandedRows?void 0:t.atoms.expanded?.get()],fn:()=>Oc(t)})}}function Oc(e){let t=e.getPrePaginatedRowModel(),n=e.atoms.pagination?.get();if(!t.rows.length)return t;let{pageSize:r,pageIndex:i}=n??ns(),{rows:a,flatRows:o,rowsById:s}=t,c=a;if(r!==1/0||i!==0){let e=r*i,t=e+r;c=a.slice(e,t)}let l;l=e.options.paginateExpandedRows?{rows:c,flatRows:o,rowsById:s}:Ec({rows:c,flatRows:o,rowsById:s}),l.flatRows=[];let u=new Set,d=e=>{u.has(e.id)||(u.add(e.id),l.flatRows.push(e),e.subRows.length&&e.subRows.forEach(d))};return l.rows.forEach(d),l}function kc(){return e=>{let t=e;return Ma({feature:`rowSortingFeature`,table:t,fnName:`table.getSortedRowModel`,memoDeps:()=>[t.atoms.sorting?.get(),t.getPreSortedRowModel()],fn:()=>Ac(t),onAfterUpdate:ja(()=>rs(t))})}}function Ac(e){let t=e.getPreSortedRowModel(),n=e.atoms.sorting?.get();if(!t.rows.length||!n?.length)return t;let r=[],i=n.filter(t=>{let n=e.getColumn(t.id);return n?As(n):!1});if(!i.length)return t;let a=[];for(let t=0;t<i.length;t++){let n=i[t],r=e.getColumn(n.id);r&&a.push({id:n.id,desc:n.desc,sortUndefined:r.columnDef.sortUndefined,invertSorting:r.columnDef.invertSorting,sortFn:Es(r)})}let o=(e,t)=>{for(let n=0;n<a.length;n++){let r=a[n],i=r.sortUndefined,o=r.desc,s=0;if(i){let n=e.getValue(r.id),a=t.getValue(r.id),o=n===void 0,c=a===void 0;if(o&&c)continue;if(o||c){if(i===`first`)return o?-1:1;if(i===`last`)return o?1:-1;s=o?i:-i}}if(s===0&&(s=r.sortFn(e,t,r.id)),s!==0)return o&&(s*=-1),r.invertSorting&&(s*=-1),s}return e.index-t.index},s=e=>{let t=e.slice();t.sort(o);let n=!1;for(let i=0;i<t.length;i++){let a=t[i];a!==e[i]&&(n=!0);let o=r.length;if(r.push(a),a.subRows.length){let e=s(a.subRows);if(e.changed){let s=Object.create(Object.getPrototypeOf(a));ya(s,a),s.subRows=e.rows,t[i]=s,r[o]=s,n=!0}}}return{rows:t,changed:n}};return{rows:s(t.rows).rows,flatRows:r,rowsById:t.rowsById}}var jc=typeof window>`u`?H.useEffect:H.useLayoutEffect;function Mc(e,t){let[{table:n,rootSource:r}]=(0,H.useState)(()=>{let t=Sc({...e,features:{coreReactivityFeature:_a(),...e.features}});return t.Subscribe=(e=>pa({...e,source:e.source??t.store})),t.FlexRender=Wi,{table:t,rootSource:ga(t.store,ca)}}),i=n;vc(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),s=fa(r,t,{compare:ca});return jc(()=>{r.markCommitted(o),hc(i,a??null,ca)}),(0,H.useMemo)(()=>({...n,options:e,state:s}),[n,e,s])}var Nc=bc({columnVisibilityFeature:Cc,rowSortingFeature:Tc,rowPaginationFeature:wc,sortedRowModel:kc(),paginatedRowModel:Dc()}),Pc=10,Fc=10,Ic=new Set([`duration`,`taskCount`,`shuffleRead`,`fetchWait`,`gcPct`,`skew`,`spill`,`findingCount`]);function Lc(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function Rc(e){return e<=0?(0,W.jsx)(W.Fragment,{children:`0`}):(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[e,` `,(0,W.jsx)(ye,{label:`RETRY`,impactBand:`critical`})]})}function zc(e,t,n){if(e<=0)return(0,W.jsx)(W.Fragment,{children:`—`});let r=k(e);if(t<=0)return(0,W.jsx)(W.Fragment,{children:r});let i=e/t;return i>.3?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[r,` `,(0,W.jsx)(ye,{label:n===`advanced`?`${Math.round(i*100)}%`:`High`,impactBand:`critical`})]}):i>.15?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[r,` `,(0,W.jsx)(ye,{label:n===`advanced`?`${Math.round(i*100)}%`:`Elevated`,impactBand:`info`})]}):(0,W.jsx)(W.Fragment,{children:r})}function Bc(e,t){if(!e||e<=0||!t||t<=0)return(0,W.jsx)(W.Fragment,{children:`—`});let n=t/e,r=n<.01?`${n.toExponential(1)}×`:`${n.toFixed(2)}×`;return n>2||n<.1?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[r,` `,(0,W.jsx)(ye,{label:`extreme`,impactBand:`info`})]}):(0,W.jsx)(W.Fragment,{children:r})}function Vc(e,t){if(e<=0)return(0,W.jsx)(W.Fragment,{children:`—`});let n=t??`unclassified`;return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[O(e),` `,(0,W.jsx)(ye,{label:ne[n],impactBand:`warning`,title:re[n]})]})}function Hc(e,t){return!e||e<=0?0:(t??0)/e}function Uc(e){let t=new Map;for(let n of e)t.has(n.type)||t.set(n.type,[]),t.get(n.type).push(n);return[...t.values()].map(e=>{let t=we(e);return e.find(e=>e.impactBand===t)??e[0]})}function Wc({appModel:e,catalog:t,getTaskData:n,onRoute:r}){let{openStage:i}=Et(),a=j(),[o,s]=(0,H.useState)(!1),[c,l]=(0,H.useState)(``),[u,d]=(0,H.useState)([]),[f,p]=(0,H.useState)({pageIndex:0,pageSize:Pc}),{catalogByStage:m,flaggedStageIds:h}=(0,H.useMemo)(()=>{let e=new Map,n=new Set;for(let r of t)r.stageId!=null&&(n.add(r.stageId),e.has(r.stageId)||e.set(r.stageId,[]),e.get(r.stageId).push(r));return{catalogByStage:e,flaggedStageIds:n}},[t]),g=(0,H.useMemo)(()=>{let t=[...e.stages.values()],n=o?t.filter(e=>h.has(e.id)):[...t].sort((e,t)=>(t.completedAt??0)-(t.submittedAt??0)-((e.completedAt??0)-(e.submittedAt??0))).slice(0,Fc),r=c.trim().toLowerCase();return(r?n.filter(e=>(e.name??``).toLowerCase().includes(r)||String(e.id).includes(r)):n).map(e=>({stage:e,tags:Uc(m.get(e.id)??[])}))},[e.stages,o,h,m,c]),_=A(),v=(0,H.useMemo)(()=>{if(!r)return null;let e=new Map;for(let n of t){let r=wr(n,t);r&&e.set(n,r)}return e},[t,r]),y=(0,H.useMemo)(()=>[{id:`id`,header:`Stage`,accessorFn:e=>e.stage.id,cell:({getValue:e})=>{let t=e();return(0,W.jsx)(`button`,{type:`button`,"aria-label":`Open Stage ${t} details`,className:`inline-flex cursor-pointer items-center rounded-sm hover:underline underline-offset-2 focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:e=>{e.stopPropagation(),i(t)},children:(0,W.jsx)(`strong`,{children:t})})}},{id:`name`,header:`Operation`,accessorFn:e=>e.stage.name??``,cell:({row:e})=>{let t=e.original.stage.id;return(0,W.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-1.5`,children:[Lc(e.original.stage.name??``,40),e.original.tags.map((e,n)=>{let i=v?v.get(e)??null:null,a=i&&r?{target:i,onRoute:r}:null,o=Te(_,e)?.compact??null;return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[a?(0,W.jsx)(`button`,{type:`button`,"aria-label":`Investigate ${a.target.findingLabel} in Stage ${t}`,title:`Investigate ${a.target.findingLabel} in Stage ${t}`,className:`inline-flex cursor-pointer items-center rounded-full hover:underline underline-offset-2 focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,onClick:e=>{e.stopPropagation(),a.onRoute(a.target)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&e.stopPropagation()},children:(0,W.jsx)(ue,{type:e.type,impactBand:e.impactBand,plainBadge:!0})}):(0,W.jsx)(ue,{type:e.type,impactBand:e.impactBand}),o?(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:o}):null]},n)})]})}},{id:`type`,header:`Type`,accessorFn:e=>e.stage.stageType??``,cell:({row:e})=>(0,W.jsx)(w,{variant:`outline`,children:e.original.stage.stageType??`—`})},{id:`duration`,header:`Duration`,accessorFn:e=>(e.stage.completedAt??0)-(e.stage.submittedAt??0),cell:({getValue:e})=>(0,W.jsx)(W.Fragment,{children:k(e())})},{id:`taskCount`,header:`Tasks`,accessorFn:e=>e.stage.taskCount},{id:`retried`,header:`Retried`,accessorFn:e=>e.stage.failedTasks??0,cell:({getValue:e})=>Rc(e())},{id:`shuffleRead`,header:`Shuffle Read`,accessorFn:e=>e.stage.shuffleReadBytes??0,cell:({getValue:e})=>(0,W.jsx)(W.Fragment,{children:O(e())})},{id:`fetchWait`,header:`Fetch Wait`,accessorFn:e=>e.stage.fetchWaitTime??0,cell:({row:e})=>zc(e.original.stage.fetchWaitTime??0,e.original.stage.executorRunTime??0,a)},...a===`advanced`?[{id:`ioRatio`,header:`I/O Ratio`,accessorFn:e=>e.stage.inputBytes?(e.stage.outputBytes??0)/e.stage.inputBytes:0,cell:({row:e})=>Bc(e.original.stage.inputBytes??0,e.original.stage.outputBytes??0)}]:[],{id:`spill`,header:`Spill (mem)`,accessorFn:e=>e.stage.memoryBytesSpilled??0,cell:({row:e})=>Vc(e.original.stage.memoryBytesSpilled??0,e.original.stage.spillClassification)},...a===`advanced`?[{id:`gcPct`,header:`GC%`,accessorFn:e=>e.stage.gcPct??0,cell:({getValue:e})=>(0,W.jsxs)(W.Fragment,{children:[e().toFixed(1),`%`]})},{id:`skew`,header:`Skew P95/median`,accessorFn:e=>Hc(e.stage.taskDurationP50,e.stage.taskDurationP95),cell:({getValue:e})=>{let t=e();return(0,W.jsx)(W.Fragment,{children:t>0?`${t.toFixed(1)}×`:`—`})}}]:[],{id:`findingCount`,header:`Findings`,accessorFn:e=>e.tags.length,cell:({getValue:e})=>{let t=e();return(0,W.jsx)(W.Fragment,{children:t>0?t:`—`})}}],[t,r,v,i,a,_]),b=Mc({features:Nc,data:g,columns:y,state:{sorting:u,pagination:f},sortDescFirst:!1,onSortingChange:d,onPaginationChange:p});function x(){s(e=>!e),d([]),p({pageIndex:0,pageSize:Pc})}let S=(0,H.useRef)(null),[C,ee]=(0,H.useState)(!0);(0,H.useLayoutEffect)(()=>{let e=S.current?.querySelector(`[data-slot="table-container"]`);if(!e?.firstElementChild||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(()=>ee(e.scrollWidth>e.clientWidth));return t.observe(e),t.observe(e.firstElementChild),()=>t.disconnect()},[]);let te=e=>e===`asc`?` ▲`:e===`desc`?` ▼`:``,ne=e=>e===`asc`?`ascending`:e===`desc`?`descending`:`none`;return(0,W.jsx)(V,{title:`Stage Summary`,children:(0,W.jsxs)(`div`,{ref:S,className:`space-y-3`,children:[(0,W.jsx)(Le,{type:`text`,value:c,onChange:e=>{l(e.target.value),p(e=>({...e,pageIndex:0}))},placeholder:`Filter by stage name or ID…`,"aria-label":`Filter by stage name or ID`,className:`max-w-xs`}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:D(`text-muted-foreground text-xs`,!C&&`invisible`),children:`Scroll sideways to see all columns →`}),(0,W.jsx)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:x,children:o?`Top ${Fc} by duration`:`Problems only`})]}),(0,W.jsxs)(`p`,{className:`sr-only`,role:`status`,"aria-live":`polite`,children:[`Showing `,g.length,` stage`,g.length===1?``:`s`,`: `,` `,o?`problems only`:`top ${Fc} by duration`,`.`]}),(0,W.jsxs)(mt,{children:[(0,W.jsx)(gt,{children:b.getHeaderGroups().map(e=>(0,W.jsx)(R,{children:e.headers.map(e=>{let t=e.column.getIsSorted(),n=e.column.getToggleSortingHandler();return(0,W.jsxs)(st,{scope:`col`,tabIndex:e.column.getCanSort()?0:void 0,"aria-sort":ne(t),className:D(e.column.getCanSort()&&`tap-target-comfortable cursor-pointer select-none`,Ic.has(e.column.id)&&`text-right`),onClick:n,onKeyDown:e=>{n&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n(e))},children:[Ui(e.column.columnDef.header,e.getContext()),te(t)]},e.id)})},e.id))}),(0,W.jsx)(Ot,{children:b.getRowModel().rows.length===0?(0,W.jsx)(R,{children:(0,W.jsx)(L,{colSpan:y.length,className:`text-muted-foreground`,children:(0,W.jsxs)(`span`,{className:`flex items-center justify-center gap-2 py-2`,children:[(0,W.jsx)(It,{"aria-hidden":`true`,className:`size-4 shrink-0`}),`No stages to show.`]})})}):b.getRowModel().rows.map(e=>(0,W.jsx)(R,{className:`cursor-pointer`,onClick:()=>i(e.original.stage.id),children:e.getVisibleCells().map(e=>(0,W.jsx)(L,{className:Ic.has(e.column.id)?`text-right`:void 0,children:Ui(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})]}),b.getPageCount()>1?(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 text-xs`,children:[(0,W.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,onClick:()=>b.previousPage(),disabled:!b.getCanPreviousPage(),children:`Previous`}),(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Page `,f.pageIndex+1,` of `,b.getPageCount()]}),(0,W.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,onClick:()=>b.nextPage(),disabled:!b.getCanNextPage(),children:`Next`})]}):null]})})}var Gc=20,Kc=24,qc=40,Jc=200,Yc=640;function Xc(e,t=Gc){let n=[...e].filter(e=>e.submittedAt&&e.completedAt),r=n.length;return r<=t?{stages:n.sort((e,t)=>e.submittedAt-t.submittedAt),total:r,capped:!1}:{stages:[...n].sort((e,t)=>t.completedAt-t.submittedAt-(e.completedAt-e.submittedAt)).slice(0,t).sort((e,t)=>e.submittedAt-t.submittedAt),total:r,capped:!0}}function Zc({appModel:e,catalog:t}){let{openStage:n}=Et(),r=[...e.stages.values()].filter(e=>e.submittedAt&&e.completedAt),i=r.length,o=r.reduce((e,t)=>Math.min(e,t.submittedAt),1/0),s=e.app?.startTime??(Number.isFinite(o)?o:0),d=new Set(t.filter(e=>e.stageId!=null).map(e=>e.stageId)),p=j(),[h,_]=(0,H.useState)(()=>p===`advanced`?i:Gc),{stages:v}=Xc(r,h),y=Qn(v).map(e=>({stageId:e.id,label:`Stage ${e.id}`,wait:e.submittedAt-s,duration:e.completedAt-e.submittedAt,flagged:d.has(e.id)})),b=Math.min(Yc,Math.max(Jc,y.length*Kc+qc)),x=b-qc,S=Math.max(1,Math.floor(x/Kc)),C=Math.max(1,Math.ceil(y.length/S));return(0,W.jsx)(V,{title:`Job Timeline`,summary:i>0?(0,W.jsx)(G,{value:`${i} stage${i===1?``:`s`}`,context:`${d.size} flagged`}):void 0,children:i===0?(0,W.jsx)(Cn,{tone:`neutral`,icon:It,title:`No stages in this run.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(`label`,{htmlFor:`timeline-topn`,children:`showing top`}),(0,W.jsx)(`input`,{id:`timeline-topn`,type:`number`,min:1,max:i,value:Math.min(h,i),onChange:e=>{let t=parseInt(e.target.value,10);Number.isFinite(t)||(t=h),_(Math.max(1,Math.min(i,t)))},className:`w-16 rounded border border-input bg-transparent px-1 py-0.5`,"aria-label":`Number of stages to show`}),(0,W.jsxs)(`span`,{children:[`of `,i,` by duration · flagged in red`]})]}),(0,W.jsx)(F,{ariaLabel:`Job timeline: stage durations by time from app start.`,height:b,table:{caption:`Job timeline: stage durations by time from app start`,columns:[`Stage`,`Start`,`Duration`],rows:y.map(e=>[e.label,k(e.wait),k(e.duration)]),align:[`left`,`right`,`right`]},children:(0,W.jsxs)(l,{data:y,layout:`vertical`,children:[(0,W.jsx)(c,{stroke:P.muted,strokeOpacity:.2,horizontal:!1}),(0,W.jsx)(m,{type:`number`,tickFormatter:e=>`${Math.round(e/1e3)}s`,tick:{fontSize:10},tickCount:10}),(0,W.jsx)(f,{type:`category`,dataKey:`label`,tick:{fontSize:10},width:64,interval:0,tickFormatter:(e,t)=>t%C===0?e:``}),(0,W.jsx)(g,{formatter:(e,t)=>t===`Duration`?k(Number(e)):[null,null]}),(0,W.jsx)(u,{dataKey:`wait`,stackId:`timeline`,fill:`transparent`,name:`Wait`}),(0,W.jsx)(u,{dataKey:`duration`,stackId:`timeline`,name:`Duration`,cursor:`pointer`,onClick:e=>n(e.payload.stageId),children:y.map(e=>(0,W.jsx)(a,{fill:e.flagged?P.critical:P.accent,stroke:e.flagged?P.critical:`none`,strokeWidth:e.flagged?2:0},e.stageId))})]})})]})})}var Qc={present:`present`,disabled:`disabled`,notEmitted:`not emitted`,notApplicable:`not applicable`,outsideEventLog:`outside event log`,unknown:`unknown`},$c={present:`info`,disabled:`warning`,notEmitted:`warning`,notApplicable:`muted`,outsideEventLog:`muted`,unknown:`muted`},el=new Set([`noRddStorageSnapshot`,`noUsableCoreTimeAggregate`,`parseIncomplete`]);function tl({entry:e}){let t=e.evidence?.count,n=Ie(),r=`${e.summary}${t==null?``:` · ${t} observed`}`,i=el.has(e.reasonCode)?r:t==null?null:`${t} observed`,{tooltipProps:a,srOnlyTooltip:o}=Qe(r);return(0,W.jsxs)(`li`,{id:`evidence-availability-${e.key}`,tabIndex:-1,ref:t=>n(e.key,t),className:`flex flex-col gap-0.5 rounded-md px-2 py-1 outline-none focus:ring-2 focus:ring-ring`,...a,children:[(0,W.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(Ce,{impactBand:$c[e.state]}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:je(e.key)})]}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:Qc[e.state]}),o]}),i?(0,W.jsx)(M,{children:(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:i})}):null]})}function nl(e){return Object.keys(Qc).map(t=>[t,e.filter(e=>e.state===t).length]).filter(([,e])=>e>0).map(([e,t])=>`${t} ${Qc[e]}`).join(` · `)}function rl({ledger:e}){let{evidenceCardOpen:t,setEvidenceCardOpen:n}=et();return(0,W.jsx)(V,{title:`Evidence availability`,open:t,onOpenChange:n,summary:(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e?nl(e.entries):`Unavailable for this restored run`}),children:e?(0,W.jsx)(`ul`,{className:`grid grid-cols-1 gap-x-4 gap-y-0.5 sm:grid-cols-2`,"aria-label":`Evidence availability ledger`,children:e.entries.map(e=>(0,W.jsx)(tl,{entry:e},e.key))}):(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Evidence availability is unavailable for this restored run.`})})}var il=64;function al(e,t){return t>=1?e:`color-mix(in srgb, ${e} ${t*100}%, transparent)`}function ol(e){return[{key:`startup`,label:`Startup`,value:e.startup,color:P.info,fillOpacity:1},{key:`stagesActive`,label:`Stages active`,value:e.stagesActive,color:P.clean,fillOpacity:1},{key:`gaps`,label:`Scheduler gaps`,value:e.gaps,color:P.warning,fillOpacity:1},{key:`idle`,label:`Idle`,value:e.idle,color:P.muted,fillOpacity:.6}].filter(e=>e.value>0).map(e=>({...e,legendColor:al(e.color,e.fillOpacity)}))}var sl=(0,H.memo)(function(){let e=A()?.data.wallClock;if(!e||e.total<=0)return null;let n=ol(e),r=t=>e.total>0?t/e.total*100:0,a=n.reduce((e,t)=>t.value>e.value?t:e,n[0]),o=[n.reduce((e,t)=>({...e,[t.key]:t.value}),{name:`total`})];return(0,W.jsxs)(V,{title:`Wall-Clock Breakdown`,badges:(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[k(e.total),` total`]}),summary:(0,W.jsx)(G,{value:`${a.label} ${Math.round(r(a.value))}%`,context:`of ${k(e.total)} total`}),children:[(0,W.jsx)(F,{ariaLabel:`Wall-clock breakdown: ${k(e.total)} total, split across startup, active stages, scheduler gaps and idle time. See the table below for exact values.`,height:il,table:{caption:`Wall-clock time breakdown`,columns:[`Segment`,`Duration`,`% of total`],rows:n.map(e=>[e.label,k(e.value),`${Math.round(r(e.value))}%`]),align:[`left`,`right`,`right`]},children:(0,W.jsxs)(l,{data:o,layout:`vertical`,stackOffset:`expand`,margin:{top:0,right:0,bottom:0,left:0},children:[(0,W.jsx)(m,{type:`number`,hide:!0,domain:[0,1]}),(0,W.jsx)(f,{type:`category`,dataKey:`name`,hide:!0}),(0,W.jsx)(g,{shared:!1,labelFormatter:()=>``,formatter:(e,t)=>[k(Number(e)),t]}),(0,W.jsx)(i,{wrapperStyle:{fontSize:12},itemSorter:e=>n.findIndex(t=>t.key===e.dataKey),formatter:(e,t)=>{let r=n.find(e=>e.key===t.dataKey);return(0,W.jsx)(`span`,{style:{color:r?.color},children:e})},content:e=>(0,W.jsx)(t,{...e,payload:e.payload?.map(e=>{let t=n.find(t=>t.key===e.dataKey);return t?{...e,color:t.legendColor}:e})})}),n.map(e=>(0,W.jsx)(u,{dataKey:e.key,name:e.label,stackId:`wallclock`,fill:e.color,fillOpacity:e.fillOpacity},e.key))]})}),(0,W.jsx)(M,{children:(0,W.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-3 text-xs text-muted-foreground`,children:n.map(e=>(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`inline-block size-2.5 rounded-sm`,style:{backgroundColor:e.color,opacity:e.fillOpacity}}),e.label,` (`,k(e.value),`)`]},e.key))})})]})}),cl=[`[data-testid="next-step"] [data-shortcut-target]`,`[data-testid="fix-these-first-row"] button[data-shortcut-target]`,`[data-testid="fix-these-first-group-row"] button[data-shortcut-target]`].join(`, `);function ll(e){if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey)return!0;let t=e.target,n=t?.tagName;return n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||t?.closest?.(`[role="listbox"], [role="combobox"]`)?!0:[...document.querySelectorAll(`[role="dialog"], [role="menu"], [role="alertdialog"], [role="listbox"]`)].some(e=>!e.closest(`[hidden]`)&&e.getClientRects().length>0)}function ul(){return[...document.querySelectorAll(cl)].filter(e=>e.offsetParent!==null||e.getClientRects().length>0)}function dl(e){let t=ul();if(t.length===0)return null;let n=t.indexOf(document.activeElement),r=t[n===-1?e===1?0:t.length-1:Math.min(t.length-1,Math.max(0,n+e))],i=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1;return r.focus({preventScroll:!0}),r.scrollIntoView?.({block:`nearest`,behavior:i?`auto`:`smooth`}),r}function fl({enabled:e,showFindings:t,showFullReport:n}){(0,H.useEffect)(()=>{if(!e)return;function r(e){if(!ll(e))switch(e.key){case`j`:case`k`:{let n=e.key===`j`?1:-1;e.preventDefault(),t(),requestAnimationFrame(()=>dl(n));return}case`f`:{let t=document.querySelector(`[aria-label="Filter findings"] button`);if(!t)return;e.preventDefault(),t.focus();return}case`1`:t(),e.preventDefault();return;case`2`:n(),e.preventDefault();return}}return window.addEventListener(`keydown`,r),()=>window.removeEventListener(`keydown`,r)},[e,t,n])}function pl({appModel:e,catalog:t,configFindings:n,getTaskData:r,activeFileId:i,onRoute:a}){return(0,W.jsxs)(`div`,{className:`space-y-6`,children:[(0,W.jsx)(`h2`,{className:`sr-only`,children:`Full app report`}),(0,W.jsx)(sl,{}),(0,W.jsx)(Zc,{appModel:e,catalog:t}),(0,W.jsx)(lr,{appModel:e,activeFileId:i}),(0,W.jsx)(Wc,{appModel:e,catalog:t,getTaskData:r,onRoute:a}),(0,W.jsxs)(bt,{children:[xn().map(({component:a,widgetId:o})=>(0,W.jsx)(I,{cardId:`reference-${o}`,widgetId:o,collapsedTile:!0,children:(0,W.jsx)(H.Suspense,{fallback:(0,W.jsx)(rt,{}),children:(0,W.jsx)(a,{appModel:e,catalog:t,configFindings:n,getTaskData:r,activeFileId:i,defaultCollapsed:!0})})},o)),(0,W.jsx)(I,{cardId:`reference-evidence-availability`,collapsedTile:!0,children:(0,W.jsx)(rl,{ledger:e.evidenceAvailability})}),(0,W.jsx)(I,{cardId:`reference-etl-phases`,collapsedTile:!0,children:(0,W.jsx)(ar,{})}),(0,W.jsx)(I,{cardId:`reference-scaling-sim`,collapsedTile:!0,children:(0,W.jsx)(Sr,{appModel:e})}),(0,W.jsx)(I,{cardId:`reference-efficiency-model`,collapsedTile:!0,children:(0,W.jsx)(rr,{})}),(0,W.jsx)(I,{cardId:`reference-core-usage-histogram`,collapsedTile:!0,children:(0,W.jsx)(tr,{appModel:e,getTaskData:r})})]})]})}function ml(e,t,n){let r=e.map(e=>e===`impactBands`?`${[...t.impactBands].join(`, `)} impact`:e===`types`?[...t.types].map(e=>yt(e)).join(`, `):[...t.stages].map(e=>`Stage ${e}`).join(`, `));return`Cleared the ${r.join(` and `)} filter${r.length===1?``:`s`} to show ${n}.`}function hl({appModel:e,catalog:t,configFindings:n,getTaskData:r,activeFileId:i,options:a,onRoute:o,activeTab:s,onActiveTabChange:c,renderTopbar:l}){let{selection:u,replaceSelection:d}=Ln(),f=j(),p=A(),[m,h]=(0,H.useState)(null),g=(0,H.useCallback)((e,t)=>{let n=kn(e,u);if(n.length===0)return;let r={...u};for(let e of n)Object.assign(r,{[e]:Tn()[e]});d(r),h({text:ml(n,u,t),selection:r})},[u,d]),_=(0,H.useCallback)(e=>{bn(e.finding.type)||g(e.finding,`this finding`),o(e)},[g,o]),v=(0,H.useCallback)(e=>{let t=pe(p).filter(t=>t.impactBand===e).reduce((e,t)=>!e||kn(t,u).length<kn(e,u).length?t:e,null);t&&g(t,`the ${e} findings`),c(`findings`),requestAnimationFrame(()=>{let t=document.getElementById(`impact-band-${e}-heading`);if(!t)return;let n=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1;t.scrollIntoView?.({block:`start`,behavior:n?`auto`:`smooth`}),t.focus({preventScroll:!0})})},[p,u,g,c]),y=(0,H.useMemo)(()=>On(t,u),[t,u]),b=(0,H.useMemo)(()=>On(n??[],u),[n,u]),x=y.length+b.length,S=t.length+(n??[]).length>0&&x===0,C=f===`advanced`||!En(u);return(0,W.jsxs)(W.Fragment,{children:[l(v),(0,W.jsxs)(`main`,{className:`flex-1 space-y-6 p-4`,children:[(0,W.jsx)(Pr,{}),p?(0,W.jsx)(Nr,{interpretation:p,onRoute:_}):null,p?(0,W.jsx)(Vr,{interpretation:p.data,catalog:y}):null,C&&(0,W.jsx)(Kn,{options:a,resultCount:x}),C&&m?.selection===u?(0,W.jsx)(`p`,{role:`status`,className:`text-sm text-muted-foreground`,children:m.text}):null,S&&(0,W.jsx)(Rn,{}),!S&&(0,W.jsxs)(Ne,{value:s,onValueChange:e=>c(e),children:[(0,W.jsxs)(Pe,{variant:`chrome`,"aria-label":`Report view`,children:[(0,W.jsx)(We,{value:`findings`,className:`tap-target-comfortable`,children:`Findings`}),(0,W.jsx)(We,{value:`full-report`,className:`tap-target-comfortable`,children:`Full app report`})]}),(0,W.jsxs)(Me,{value:`findings`,keepMounted:!0,children:[(0,W.jsx)(`h2`,{className:`sr-only`,children:`Findings`}),(0,W.jsx)(xi,{appModel:e,catalog:y,configFindings:b,stages:e.stages,getTaskData:r,activeFileId:i,onRoute:o})]}),(0,W.jsx)(Me,{value:`full-report`,keepMounted:!0,children:(0,W.jsx)(pl,{appModel:e,catalog:y,getTaskData:r,configFindings:b,activeFileId:i,onRoute:o})})]}),(0,W.jsx)(zi,{appModel:e,catalog:t,getTaskData:r,onRoute:_})]})]})}function gl(){let{resetToDropZone:e,startLoad:t,getTaskData:n,compareWithAnotherRun:r}=_t(),i=N(e=>e.appModel),a=N(e=>e.catalog),o=N(e=>e.activeFileId),s=N(e=>e.exportMode),{recentEntries:c,onPickRecent:l,onRemoveRecent:u}=Ze(o),[d,f]=(0,H.useState)(!1),[p,m]=(0,H.useState)(`findings`),h=j(),g=(0,H.useCallback)(()=>m(`findings`),[]),_=(0,H.useCallback)(()=>m(`full-report`),[]);fl({enabled:h===`advanced`,showFindings:g,showFullReport:_});let{revealRequest:v}=et(),[y,b]=(0,H.useState)(null),[x,S]=(0,H.useState)(null),[C,ee]=(0,H.useState)(null),te=(0,H.useRef)(0),w=(0,H.useRef)(null),ne=(0,H.useRef)(null),re=(0,H.useRef)(new Map),ie=(0,H.useRef)(new Map),T=(0,H.useRef)(null),ae=y?.target??null;(0,H.useEffect)(()=>()=>{T.current&&clearTimeout(T.current)},[]),(0,H.useLayoutEffect)(()=>{v>0&&m(`full-report`)},[v]);let E=(0,H.useCallback)(e=>{w.current?.token===e&&(w.current=null,ne.current=null,b(t=>t?.token===e?null:t))},[]),D=(0,H.useCallback)(e=>{if(w.current?.token!==e.token)return null;let{catalog:t,configFindings:n,activeFileId:r}=Ee.getState();if(ne.current!==r)return null;let i=wr(e.target.finding,[...t,...n]);return!i||i.widgetId!==e.target.widgetId||i.region!==e.target.region?null:i},[]),oe=(0,H.useCallback)(e=>{m(bn(e.finding.type)?`full-report`:`findings`);let t=te.current+1;te.current=t;let{catalog:n,configFindings:r,activeFileId:i}=Ee.getState(),a=wr(e.finding,[...n,...r]);if(!a||a.widgetId!==e.widgetId||a.region!==e.region){w.current=null,ne.current=null,b(null);return}let o={target:a,token:t};w.current=o,ne.current=i,b(o)},[]),O=(0,H.useCallback)((e,t)=>{re.current.set(e,t);let n=w.current;return n?.target.widgetId===e&&D(n)&&t.open(),()=>{re.current.get(e)===t&&re.current.delete(e)}},[D]),k=(0,H.useCallback)((e,t)=>(ie.current.set(e,t),()=>{ie.current.get(e)===t&&ie.current.delete(e)}),[]),se=(0,H.useCallback)((e,t)=>{if(!t)return;let n=w.current;if(!n||n.target.widgetId!==e)return;let r=D(n);if(!r){E(n.token);return}let i=re.current.get(e);if(!i)return;let a=i.getDisclosureButton();if(!a){E(n.token);return}let o=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,s=ie.current.get(r.finding);s?(s.scrollIntoView({behavior:o?`auto`:`smooth`,block:`center`,inline:`nearest`}),s.focus({preventScroll:!0}),T.current&&clearTimeout(T.current),ee(r.finding),T.current=setTimeout(()=>{T.current=null,ee(null)},2e3)):(i.wrapperElement.scrollIntoView({behavior:o?`auto`:`smooth`,block:`start`,inline:`nearest`}),a.focus({preventScroll:!0}),S(e)),E(n.token)},[E,D]),ce=(0,H.useCallback)(e=>{S(t=>t===e?null:t)},[]);(0,H.useLayoutEffect)(()=>{if(!y)return;let e=D(y);if(!e){E(y.token);return}re.current.get(e.widgetId)?.open()},[E,D,y]),(0,H.useLayoutEffect)(()=>{let e=w.current;e&&!D(e)&&E(e.token)},[o,a,E,D]);let le=N(e=>e.configFindings),A=(0,H.useMemo)(()=>An(a,le),[a,le]);return(0,W.jsxs)(`div`,{"data-testid":`dashboard`,className:`relative flex min-h-screen flex-col`,style:{paddingRight:`var(--docs-inset, 0px)`},onDragOver:e=>{s||(e.preventDefault(),f(!0))},onDragLeave:()=>f(!1),onDrop:e=>{if(s)return;e.preventDefault(),f(!1);let n=e.dataTransfer.files[0];n&&t(n)},children:[(0,W.jsx)(`button`,{type:`button`,className:`sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-50 focus:rounded-md focus:bg-background focus:px-3 focus:py-2 focus:text-sm focus:font-medium focus:shadow focus:ring-2 focus:ring-ring`,onClick:()=>{let e=document.getElementById(`run-verdict`);e?.scrollIntoView?.({block:`start`}),e?.focus({preventScroll:!0})},children:`Skip to the verdict`}),(0,W.jsx)(In,{options:A,fileId:o,children:(0,W.jsx)(ut,{registerWidget:O,registerFindingAnchor:k,reportWidgetOpen:se,clearRouteFocus:ce,focusedWidgetId:x,activeRouteTarget:ae,flashedFinding:C,children:(0,W.jsx)(hl,{appModel:i,catalog:a,configFindings:le,getTaskData:n,activeFileId:o,options:A,onRoute:oe,activeTab:p,onActiveTabChange:m,renderTopbar:t=>(0,W.jsx)(Ke,{onJumpToFindings:t,onLoadNew:e,onCompare:r,recentEntries:c,activeFileId:o,onPickRecent:l,onRemoveRecent:u})})})}),d&&(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none fixed inset-0 z-50 flex items-center justify-center bg-background/80`,children:(0,W.jsx)(`p`,{className:`rounded-lg border-2 border-dashed border-primary px-6 py-4 text-lg font-medium`,children:`Drop to load a new event log`})})]})}function _l(){return(0,W.jsx)(Fe,{children:(0,W.jsx)(gl,{})})}export{_l as Dashboard,ii as a,Qn as c,Hn as d,Cn as f,ti as i,Zn as l,Ei as n,G as o,It as p,ai as r,$n as s,Di as t,Vn as u};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,M as n}from"./charts-vendor-0VMaLVLN.js";import{ct as r,et as i,nt as a,rt as o,tt as s}from"./react-vendor-DEdfrRTJ.js";import{p as c}from"./plan-graph-vendor-BYl-AzN5.js";var l=e(n(),1),u=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,d=t,f=(e,t)=>n=>{if(t?.variants==null)return d(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=u(t)||u(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return d(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},p=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},m=(e,t)=>({classGroupId:e,validator:t}),h=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),g=`-`,_=[],ee=`arbitrary..`,v=e=>{let t=te(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return b(e);let n=e.split(g);return y(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?p(i,t):t:i||_}return n[e]||_}}},y=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=y(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(g):e.slice(t).join(g),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},b=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?ee+r:void 0})(),te=e=>{let{theme:t,classGroups:n}=e;return x(n,t)},x=(e,t)=>{let n=h();for(let r in e){let i=e[r];S(i,n,r,t)}return n},S=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];C(i,t,n,r)}},C=(e,t,n,r)=>{if(typeof e==`string`){ne(e,t,n);return}if(typeof e==`function`){re(e,t,n,r);return}ie(e,t,n,r)},ne=(e,t,n)=>{let r=e===``?t:ae(t,e);r.classGroupId=n},re=(e,t,n,r)=>{if(oe(e)){S(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(m(n,e))},ie=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];S(o,ae(t,a),n,r)}},ae=(e,t)=>{let n=e,r=t.split(g),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=h(),n.nextPart.set(t,i)),n=i}return n},oe=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,w=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},T=`!`,E=`:`,se=[],ce=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),D=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===E){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(T)?(c=s.slice(0,-1),l=!0):s.startsWith(T)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return ce(t,l,c,u)};if(t){let e=t+E,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):ce(se,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},le=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},ue=e=>({cache:w(e.cacheSize),parseClassName:D(e),sortModifiers:le(e),postfixLookupClassGroupIds:de(e),...v(e)}),de=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},fe=/\s+/,O=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(fe),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),ee=f?_+T:_,v=ee+g;if(s.indexOf(v)>-1)continue;s.push(v);let y=i(g,h);for(let e=0;e<y.length;++e){let t=y[e];s.push(ee+t)}l=t+(l.length>0?` `+l:l)}return l},k=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=A(n))&&(i&&(i+=` `),i+=r);return i},A=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=A(e[r]))&&(n&&(n+=` `),n+=t);return n},pe=(e,...t)=>{let n,r,i,a,o=o=>(n=ue(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=O(e,n);return i(e,a),a};return a=o,(...e)=>a(k(...e))},j=[],M=e=>{let t=t=>t[e]||j;return t.isThemeGetter=!0,t.themeKey=e,t},me=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,N=/^\((?:(\w[\w-]*):)?(.+)\)$/i,P=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,he=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,F=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ge=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,_e=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ve=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,I=e=>P.test(e),L=e=>!!e&&!Number.isNaN(Number(e)),R=e=>!!e&&Number.isInteger(Number(e)),ye=e=>e.endsWith(`%`)&&L(e.slice(0,-1)),z=e=>he.test(e),be=()=>!0,xe=e=>F.test(e)&&!ge.test(e),Se=()=>!1,Ce=e=>_e.test(e),we=e=>ve.test(e),Te=e=>!B(e)&&!H(e),Ee=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),De=e=>U(e,Ue,Se),B=e=>me.test(e),V=e=>U(e,We,xe),Oe=e=>U(e,Ge,L),ke=e=>U(e,qe,be),Ae=e=>U(e,Ke,Se),je=e=>U(e,Ve,Se),Me=e=>U(e,He,we),Ne=e=>U(e,Je,Ce),H=e=>N.test(e),Pe=e=>W(e,We),Fe=e=>W(e,Ke),Ie=e=>W(e,Ve),Le=e=>W(e,Ue),Re=e=>W(e,He),ze=e=>W(e,Je,!0),Be=e=>W(e,qe,!0),U=(e,t,n)=>{let r=me.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},W=(e,t,n=!1)=>{let r=N.exec(e);return r?r[1]?t(r[1]):n:!1},Ve=e=>e===`position`||e===`percentage`,He=e=>e===`image`||e===`url`,Ue=e=>e===`length`||e===`size`||e===`bg-size`,We=e=>e===`length`,Ge=e=>e===`number`,Ke=e=>e===`family-name`,qe=e=>e===`number`||e===`weight`,Je=e=>e===`shadow`,Ye=pe(()=>{let e=M(`color`),t=M(`font`),n=M(`text`),r=M(`font-weight`),i=M(`tracking`),a=M(`leading`),o=M(`breakpoint`),s=M(`container`),c=M(`spacing`),l=M(`radius`),u=M(`shadow`),d=M(`inset-shadow`),f=M(`text-shadow`),p=M(`drop-shadow`),m=M(`blur`),h=M(`perspective`),g=M(`aspect`),_=M(`ease`),ee=M(`animate`),v=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],y=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],b=()=>[...y(),H,B],te=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],x=()=>[`auto`,`contain`,`none`],S=()=>[H,B,c],C=()=>[I,`full`,`auto`,...S()],ne=()=>[R,`none`,`subgrid`,H,B],re=()=>[`auto`,{span:[`full`,R,H,B]},R,H,B],ie=()=>[R,`auto`,H,B],ae=()=>[`auto`,`min`,`max`,`fr`,H,B],oe=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],w=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],T=()=>[`auto`,...S()],E=()=>[I,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],se=()=>[s,I,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...S()],ce=()=>[I,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...S()],D=()=>[e,H,B],le=()=>[...y(),Ie,je,{position:[H,B]}],ue=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],de=()=>[`auto`,`cover`,`contain`,Le,De,{size:[H,B]}],fe=()=>[ye,Pe,V],O=()=>[``,`none`,`full`,l,H,B],k=()=>[``,L,Pe,V],A=()=>[`solid`,`dashed`,`dotted`,`double`],pe=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],j=()=>[L,ye,Ie,je],me=()=>[``,`none`,m,H,B],N=()=>[`none`,L,H,B],P=()=>[`none`,L,H,B],he=()=>[L,H,B],F=()=>[I,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[z],breakpoint:[z],color:[be],container:[z],"drop-shadow":[z],ease:[`in`,`out`,`in-out`],font:[Te],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[z],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[z],shadow:[z],spacing:[`px`,L],text:[z],"text-shadow":[z],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,I,B,H,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,H,B]}],"container-named":[Ee],columns:[{columns:[L,`auto`,B,H,s]}],"break-after":[{"break-after":v()}],"break-before":[{"break-before":v()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:b()}],overflow:[{overflow:te()}],"overflow-x":[{"overflow-x":te()}],"overflow-y":[{"overflow-y":te()}],overscroll:[{overscroll:x()}],"overscroll-x":[{"overscroll-x":x()}],"overscroll-y":[{"overscroll-y":x()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{"inset-s":C(),start:C()}],end:[{"inset-e":C(),end:C()}],"inset-bs":[{"inset-bs":C()}],"inset-be":[{"inset-be":C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[R,`auto`,H,B]}],basis:[{basis:[I,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[L,I,`auto`,`initial`,`none`,B]}],grow:[{grow:[``,L,H,B]}],shrink:[{shrink:[``,L,H,B]}],order:[{order:[R,`first`,`last`,`none`,H,B]}],"grid-cols":[{"grid-cols":ne()}],"col-start-end":[{col:re()}],"col-start":[{"col-start":ie()}],"col-end":[{"col-end":ie()}],"grid-rows":[{"grid-rows":ne()}],"row-start-end":[{row:re()}],"row-start":[{"row-start":ie()}],"row-end":[{"row-end":ie()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ae()}],"auto-rows":[{"auto-rows":ae()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...oe(),`normal`]}],"justify-items":[{"justify-items":[...w(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...w()]}],"align-content":[{content:[`normal`,...oe()]}],"align-items":[{items:[...w(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...w(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...w(),`baseline`]}],"place-self":[{"place-self":[`auto`,...w()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:T()}],mx:[{mx:T()}],my:[{my:T()}],ms:[{ms:T()}],me:[{me:T()}],mbs:[{mbs:T()}],mbe:[{mbe:T()}],mt:[{mt:T()}],mr:[{mr:T()}],mb:[{mb:T()}],ml:[{ml:T()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:E()}],"inline-size":[{inline:[`auto`,...se()]}],"min-inline-size":[{"min-inline":[`auto`,...se()]}],"max-inline-size":[{"max-inline":[`none`,...se()]}],"block-size":[{block:[`auto`,...ce()]}],"min-block-size":[{"min-block":[`auto`,...ce()]}],"max-block-size":[{"max-block":[`none`,...ce()]}],w:[{w:[s,`screen`,...E()]}],"min-w":[{"min-w":[s,`screen`,`none`,...E()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...E()]}],h:[{h:[`screen`,`lh`,...E()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...E()]}],"max-h":[{"max-h":[`screen`,`lh`,`none`,...E()]}],"font-size":[{text:[`base`,n,Pe,V]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Be,ke]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,ye,B]}],"font-family":[{font:[Fe,Ae,t]}],"font-features":[{"font-features":[B]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,H,B]}],"line-clamp":[{"line-clamp":[L,`none`,H,Oe]}],leading:[{leading:[`none`,a,...S()]}],"list-image":[{"list-image":[`none`,H,B]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,H,B]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:D()}],"text-color":[{text:D()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...A(),`wavy`]}],"text-decoration-thickness":[{decoration:[L,`from-font`,`auto`,H,V]}],"text-decoration-color":[{decoration:D()}],"underline-offset":[{"underline-offset":[L,`auto`,H,B]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"tab-size":[{tab:[R,H,B]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,H,B]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,H,B]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:le()}],"bg-repeat":[{bg:ue()}],"bg-size":[{bg:de()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},R,H,B],radial:[``,H,B],conic:[``,R,H,B]},Re,Me]}],"bg-color":[{bg:D()}],"gradient-from-pos":[{from:fe()}],"gradient-via-pos":[{via:fe()}],"gradient-to-pos":[{to:fe()}],"gradient-from":[{from:D()}],"gradient-via":[{via:D()}],"gradient-to":[{to:D()}],rounded:[{rounded:O()}],"rounded-s":[{"rounded-s":O()}],"rounded-e":[{"rounded-e":O()}],"rounded-t":[{"rounded-t":O()}],"rounded-r":[{"rounded-r":O()}],"rounded-b":[{"rounded-b":O()}],"rounded-l":[{"rounded-l":O()}],"rounded-ss":[{"rounded-ss":O()}],"rounded-se":[{"rounded-se":O()}],"rounded-ee":[{"rounded-ee":O()}],"rounded-es":[{"rounded-es":O()}],"rounded-tl":[{"rounded-tl":O()}],"rounded-tr":[{"rounded-tr":O()}],"rounded-br":[{"rounded-br":O()}],"rounded-bl":[{"rounded-bl":O()}],"border-w":[{border:k()}],"border-w-x":[{"border-x":k()}],"border-w-y":[{"border-y":k()}],"border-w-s":[{"border-s":k()}],"border-w-e":[{"border-e":k()}],"border-w-bs":[{"border-bs":k()}],"border-w-be":[{"border-be":k()}],"border-w-t":[{"border-t":k()}],"border-w-r":[{"border-r":k()}],"border-w-b":[{"border-b":k()}],"border-w-l":[{"border-l":k()}],"divide-x":[{"divide-x":k()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":k()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...A(),`hidden`,`none`]}],"divide-style":[{divide:[...A(),`hidden`,`none`]}],"border-color":[{border:D()}],"border-color-x":[{"border-x":D()}],"border-color-y":[{"border-y":D()}],"border-color-s":[{"border-s":D()}],"border-color-e":[{"border-e":D()}],"border-color-bs":[{"border-bs":D()}],"border-color-be":[{"border-be":D()}],"border-color-t":[{"border-t":D()}],"border-color-r":[{"border-r":D()}],"border-color-b":[{"border-b":D()}],"border-color-l":[{"border-l":D()}],"divide-color":[{divide:D()}],"outline-style":[{outline:[...A(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[L,H,B]}],"outline-w":[{outline:[``,L,Pe,V]}],"outline-color":[{outline:D()}],shadow:[{shadow:[``,`inner`,`none`,u,ze,Ne]}],"shadow-color":[{shadow:D()}],"inset-shadow":[{"inset-shadow":[`none`,d,ze,Ne]}],"inset-shadow-color":[{"inset-shadow":D()}],"ring-w":[{ring:k()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:D()}],"ring-offset-w":[{"ring-offset":[L,V]}],"ring-offset-color":[{"ring-offset":D()}],"inset-ring-w":[{"inset-ring":k()}],"inset-ring-color":[{"inset-ring":D()}],"text-shadow":[{"text-shadow":[`none`,f,ze,Ne]}],"text-shadow-color":[{"text-shadow":D()}],opacity:[{opacity:[L,H,B]}],"mix-blend":[{"mix-blend":[...pe(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":pe()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[L]}],"mask-image-linear-from-pos":[{"mask-linear-from":j()}],"mask-image-linear-to-pos":[{"mask-linear-to":j()}],"mask-image-linear-from-color":[{"mask-linear-from":D()}],"mask-image-linear-to-color":[{"mask-linear-to":D()}],"mask-image-t-from-pos":[{"mask-t-from":j()}],"mask-image-t-to-pos":[{"mask-t-to":j()}],"mask-image-t-from-color":[{"mask-t-from":D()}],"mask-image-t-to-color":[{"mask-t-to":D()}],"mask-image-r-from-pos":[{"mask-r-from":j()}],"mask-image-r-to-pos":[{"mask-r-to":j()}],"mask-image-r-from-color":[{"mask-r-from":D()}],"mask-image-r-to-color":[{"mask-r-to":D()}],"mask-image-b-from-pos":[{"mask-b-from":j()}],"mask-image-b-to-pos":[{"mask-b-to":j()}],"mask-image-b-from-color":[{"mask-b-from":D()}],"mask-image-b-to-color":[{"mask-b-to":D()}],"mask-image-l-from-pos":[{"mask-l-from":j()}],"mask-image-l-to-pos":[{"mask-l-to":j()}],"mask-image-l-from-color":[{"mask-l-from":D()}],"mask-image-l-to-color":[{"mask-l-to":D()}],"mask-image-x-from-pos":[{"mask-x-from":j()}],"mask-image-x-to-pos":[{"mask-x-to":j()}],"mask-image-x-from-color":[{"mask-x-from":D()}],"mask-image-x-to-color":[{"mask-x-to":D()}],"mask-image-y-from-pos":[{"mask-y-from":j()}],"mask-image-y-to-pos":[{"mask-y-to":j()}],"mask-image-y-from-color":[{"mask-y-from":D()}],"mask-image-y-to-color":[{"mask-y-to":D()}],"mask-image-radial":[{"mask-radial":[H,B]}],"mask-image-radial-from-pos":[{"mask-radial-from":j()}],"mask-image-radial-to-pos":[{"mask-radial-to":j()}],"mask-image-radial-from-color":[{"mask-radial-from":D()}],"mask-image-radial-to-color":[{"mask-radial-to":D()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":y()}],"mask-image-conic-pos":[{"mask-conic":[L]}],"mask-image-conic-from-pos":[{"mask-conic-from":j()}],"mask-image-conic-to-pos":[{"mask-conic-to":j()}],"mask-image-conic-from-color":[{"mask-conic-from":D()}],"mask-image-conic-to-color":[{"mask-conic-to":D()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:le()}],"mask-repeat":[{mask:ue()}],"mask-size":[{mask:de()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,H,B]}],filter:[{filter:[``,`none`,H,B]}],blur:[{blur:me()}],brightness:[{brightness:[L,H,B]}],contrast:[{contrast:[L,H,B]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,ze,Ne]}],"drop-shadow-color":[{"drop-shadow":D()}],grayscale:[{grayscale:[``,L,H,B]}],"hue-rotate":[{"hue-rotate":[L,H,B]}],invert:[{invert:[``,L,H,B]}],saturate:[{saturate:[L,H,B]}],sepia:[{sepia:[``,L,H,B]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,H,B]}],"backdrop-blur":[{"backdrop-blur":me()}],"backdrop-brightness":[{"backdrop-brightness":[L,H,B]}],"backdrop-contrast":[{"backdrop-contrast":[L,H,B]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,L,H,B]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[L,H,B]}],"backdrop-invert":[{"backdrop-invert":[``,L,H,B]}],"backdrop-opacity":[{"backdrop-opacity":[L,H,B]}],"backdrop-saturate":[{"backdrop-saturate":[L,H,B]}],"backdrop-sepia":[{"backdrop-sepia":[``,L,H,B]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,H,B]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[L,`initial`,H,B]}],ease:[{ease:[`linear`,`initial`,_,H,B]}],delay:[{delay:[L,H,B]}],animate:[{animate:[`none`,ee,H,B]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,H,B]}],"perspective-origin":[{"perspective-origin":b()}],rotate:[{rotate:N()}],"rotate-x":[{"rotate-x":N()}],"rotate-y":[{"rotate-y":N()}],"rotate-z":[{"rotate-z":N()}],scale:[{scale:P()}],"scale-x":[{"scale-x":P()}],"scale-y":[{"scale-y":P()}],"scale-z":[{"scale-z":P()}],"scale-3d":[`scale-3d`],skew:[{skew:he()}],"skew-x":[{"skew-x":he()}],"skew-y":[{"skew-y":he()}],transform:[{transform:[H,B,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:b()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:F()}],"translate-x":[{"translate-x":F()}],"translate-y":[{"translate-y":F()}],"translate-z":[{"translate-z":F()}],"translate-none":[`translate-none`],zoom:[{zoom:[R,H,B]}],accent:[{accent:D()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:D()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,H,B]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":D()}],"scrollbar-track-color":[{"scrollbar-track":D()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,H,B]}],fill:[{fill:[`none`,...D()]}],"stroke-w":[{stroke:[L,Pe,V,Oe]}],stroke:[{stroke:[`none`,...D()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`start`,`end`,`right`,`left`],"inset-y":[`inset-bs`,`inset-be`,`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`ps`,`pe`,`pr`,`pl`],py:[`pbs`,`pbe`,`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`ms`,`me`,`mr`,`ml`],my:[`mbs`,`mbe`,`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-s`,`border-w-e`,`border-w-r`,`border-w-l`],"border-w-y":[`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-s`,`border-color-e`,`border-color-r`,`border-color-l`],"border-color-y":[`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-ms`,`scroll-me`,`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-ps`,`scroll-pe`,`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function G(...e){return Ye(t(e))}var Xe=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Ze=(e=>e?Xe(e):Xe),Qe=e=>e;function $e(e,t=Qe){let n=l.useSyncExternalStore(e.subscribe,l.useCallback(()=>t(e.getState()),[e,t]),l.useCallback(()=>t(e.getInitialState()),[e,t]));return l.useDebugValue(n),n}var et={observed:`Observed in this event log.`,explicitlyDisabled:`Explicitly disabled in this event log.`,noObservedExecutorMetrics:`Not emitted by this event log.`,noObservedStageSubmission:`Not emitted by this event log.`,noRddStorageSnapshot:`Stages were submitted without RDD storage snapshots.`,noResolvedSqlPlan:`Not emitted by this event log.`,noSqlExecution:`Not applicable to this event log.`,noEnvironmentUpdate:`Not emitted by this event log.`,noTaskRecords:`Not emitted by this event log.`,noUsableCoreTimeAggregate:`No usable aggregate was emitted.`,outsideEventLogScope:`Available outside local event-log scope.`,parseIncomplete:`Cannot determine from an incomplete parse.`};function tt(e,t,n){return{key:e,state:`present`,reasonCode:`observed`,summary:et.observed,evidence:{eventType:t,count:n}}}function K(e,t,n){return{key:e,state:t,reasonCode:n,summary:et[n]}}function q(e,t){let n=e[t];return typeof n==`number`&&Number.isFinite(n)&&n>0?n:0}function nt(e){return e!=null&&e.schemaVersion===1}function rt(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function it(e){let t=e?.perStage;return typeof t==`object`&&!!t&&!Array.isArray(t)&&Object.values(t).some(e=>rt(e?.taskCount)&&rt(e?.totalTaskDurationSum))}function at(e,t){return e!=null&&String(e).toLowerCase()===t}function J(e,t,n){return n?K(e,t===`noSqlExecution`?`notApplicable`:`notEmitted`,t):K(e,`unknown`,`parseIncomplete`)}function ot(e,{skippedLines:t=0}={}){let n=e?.app,r=n?.evidenceInputs??{},i=t===0&&q(r,`applicationEnds`)>0,a=q(r,`executorMetricRows`),o=q(r,`stageSubmissions`),s=q(r,`rddStorageSnapshots`),c=q(r,`resolvedSqlPlans`),l=q(r,`sqlExecutions`),u=q(r,`environmentUpdates`),d=q(r,`taskRecords`);return{schemaVersion:1,entries:[a>0?tt(`executorMetrics`,`executorMetricRows`,a):at(n?.config?.[`spark.eventLog.logStageExecutorMetrics`],`false`)?K(`executorMetrics`,`disabled`,`explicitlyDisabled`):J(`executorMetrics`,`noObservedExecutorMetrics`,i),s>0?tt(`rddStorageSnapshots`,`rddStorageSnapshots`,s):J(`rddStorageSnapshots`,o===0?`noObservedStageSubmission`:`noRddStorageSnapshot`,i),c>0?tt(`sqlPlan`,`resolvedSqlPlans`,c):l>0&&i?K(`sqlPlan`,`notEmitted`,`noResolvedSqlPlan`):J(`sqlPlan`,`noSqlExecution`,i),u>0?tt(`sparkConfiguration`,`environmentUpdates`,u):J(`sparkConfiguration`,`noEnvironmentUpdate`,i),d===0?J(`taskCoreTime`,`noTaskRecords`,i):it(e?.runAggregates)?tt(`taskCoreTime`,`taskRecords`,d):J(`taskCoreTime`,`noUsableCoreTimeAggregate`,i),K(`infrastructureContext`,`outsideEventLog`,`outsideEventLogScope`),K(`sourceContext`,`outsideEventLog`,`outsideEventLogScope`),K(`costContext`,`outsideEventLog`,`outsideEventLogScope`)]}}function st(e,t,n){return{app:e.app,stages:new Map(e.stages),executors:{added:[...e.executors.added],removed:[...e.executors.removed]},sql:new Map(e.sql),jobs:new Map(e.jobs),runAggregates:e.runAggregates,evidenceAvailability:e.evidenceAvailability,skippedLines:e.skippedLines,unreadableSqlExecutions:e.unreadableSqlExecutions&&[...e.unreadableSqlExecutions],catalog:[...t],taskData:new Map(n)}}function ct(e,t,n){e.app=n.app,e.stages=new Map(n.stages),e.executors={added:[...n.executors.added],removed:[...n.executors.removed]},e.sql=new Map(n.sql),e.jobs=new Map(n.jobs),e.runAggregates=n.runAggregates??null,e.evidenceAvailability=nt(n.evidenceAvailability)?n.evidenceAvailability:null,e.skippedLines=n.skippedLines,n.unreadableSqlExecutions?e.unreadableSqlExecutions=[...n.unreadableSqlExecutions]:delete e.unreadableSqlExecutions,t.clear();for(let[e,r]of n.taskData)t.set(e,r);return[...n.catalog]}function lt(){return{app:null,stages:new Map,executors:{added:[],removed:[]},sql:new Map,jobs:new Map,runAggregates:null,evidenceAvailability:null}}function ut(){if(typeof window>`u`)return`dark`;try{let e=window.localStorage.getItem(`shuffle-works-theme`);if(e===`light`||e===`dark`)return e}catch{}return window.matchMedia?.(`(prefers-color-scheme: light)`).matches?`light`:`dark`}var dt=`shuffle-works-widget-density`;function ft(){if(typeof window>`u`)return`basic`;try{let e=window.localStorage.getItem(dt);if(e===`basic`||e===`advanced`)return e}catch{}return`basic`}var pt=Ze(e=>({appModel:lt(),catalog:[],configFindings:[],interpretation:null,exportProvenance:null,activeFileId:null,sessionCache:new Map,taskDataCache:new Map,parse:{pct:0,lines:0,etaMs:null},status:`idle`,shsParsing:!1,errorMessage:null,errorNonce:0,theme:ut(),widgetDensity:ft(),exportMode:!1,skippedLines:0,comparison:{active:!1,baselineId:null,candidateId:null},compareLoad:null,compareSeed:null,planGraph:{active:!1,stageId:null,initialScope:`segment`},modelResetCount:0,setCompareSeed:t=>e({compareSeed:t}),openComparison:(t,n)=>e(e=>(e.activeFileId!=null&&e.appModel.app&&e.sessionCache.set(e.activeFileId,st(e.appModel,e.catalog,e.taskDataCache)),{comparison:{active:!0,baselineId:t,candidateId:n}})),setComparisonActive:t=>e(e=>({comparison:{...e.comparison,active:t}})),setCompareLoad:t=>e({compareLoad:t}),closeComparison:()=>e({comparison:{active:!1,baselineId:null,candidateId:null}}),openPlanGraph:(t,n)=>e({planGraph:{active:!0,stageId:t,initialScope:n?.initialScope??`segment`}}),closePlanGraph:()=>e({planGraph:{active:!1,stageId:null,initialScope:`segment`}}),resetModel:()=>e(e=>({appModel:lt(),catalog:[],configFindings:[],interpretation:null,taskDataCache:new Map,status:`idle`,shsParsing:!1,errorMessage:null,skippedLines:0,comparison:{active:!1,baselineId:null,candidateId:null},compareLoad:null,planGraph:{active:!1,stageId:null,initialScope:`segment`},modelResetCount:e.modelResetCount+1})),setStatus:t=>e({status:t}),setShsParsing:t=>e({shsParsing:t}),setParse:t=>e({parse:t}),setCatalog:t=>e({catalog:t}),setConfigFindings:t=>e({configFindings:t}),setFindings:(t,n,r)=>e(e=>({catalog:t,configFindings:n,...r===void 0?{}:{appModel:{...e.appModel,evidenceAvailability:r}}})),setInterpretation:t=>e({interpretation:t}),setTaskData:(t,n)=>e(e=>{let r=new Map(e.taskDataCache);return r.set(t,n),{taskDataCache:r}}),setActiveFile:t=>e({activeFileId:t}),setError:t=>e(e=>({errorMessage:t,errorNonce:t?e.errorNonce+1:e.errorNonce,status:t?`error`:e.status})),setTheme:t=>e({theme:t}),setWidgetDensity:t=>{try{window.localStorage.setItem(dt,t)}catch{}e({widgetDensity:t})},setSkippedLines:t=>e({skippedLines:t}),setEvidenceAvailability:t=>e(e=>({appModel:{...e.appModel,evidenceAvailability:t}}))}));function mt(e){return $e(pt,e)}function ht(){return mt(e=>e.widgetDensity)}var gt=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function _t(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:gt(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var vt=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},yt=e=>{let t=vt(e);return t.charAt(0).toUpperCase()+t.slice(1)},bt=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Y={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function xt(e){return e!=null}function St(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Y.width,a=e.size??e.height??Y.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?bt(...c):bt(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Y[`stroke-width`])*Number(e.size??e.width??Y.width)/Number(t.size??t.width??Y.width):t.strokeWidth??Y[`stroke-width`];return[`svg`,{...Object.entries(Y).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&xt(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&xt(t.width)&&{[r(`width`)]:t.width},...`height`in t&&xt(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function Ct(e,t={}){return St(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var wt=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Tt=(0,l.createContext)({}),Et=()=>(0,l.useContext)(Tt),Dt=(0,l.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:u=[],icon:d={node:u,aliases:[],size:24},...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,nonScalingStroke:_=!1,color:ee=`currentColor`,className:v=``}=Et()??{},y=!!c||wt(f),[b,te,x=[]]=Ct(d,{color:e??ee,width:n??t??m,height:r??t??m,strokeWidth:i??h,absoluteStrokeWidth:a??g,nonScalingStroke:o??_,className:bt(v,s),hasA11yProp:y,attributes:f});return(0,l.createElement)(b,{ref:p,...te},[...x.map(([e,t])=>(0,l.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function Ot(e,t=[],n=[]){let r=typeof e==`string`?_t(e,t,n):e,i=(0,l.forwardRef)(({className:e,...t},n)=>(0,l.createElement)(Dt,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=yt(r.name)),i}var kt={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};kt.node;var At=Ot(kt),jt={name:`chevron-up`,size:24,node:[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]};jt.node;var Mt=Ot(jt),Nt={name:`file-text`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]};Nt.node;var Pt=Ot(Nt),Ft=e=>`${Math.round(e*1e6)/1e4}%`;function X(e,t){return e.remediation!=null&&!e.remediation.some(e=>e.key===t)}var It=`spark.sql.adaptive.skewJoin.enabled`,Lt=`AQE skew-join handling is already on, so salt the key or repartition on a better key.`,Rt=`AQE is off, so enable it (spark.sql.adaptive.enabled) for skew-join handling to apply; otherwise salt the key or repartition on a better key.`;function zt(e,t){return e.origin===`inputScan`?`Uneven input files: compact small files or split large ones (lower spark.sql.files.maxPartitionBytes).`:e.origin===`other`?`Work is uneven across tasks: salt the key or repartition on a better key.`:e.remediation?.some(e=>e.key===`spark.sql.adaptive.enabled`)?Rt:X(e,It)?Lt:t}var Bt=`spark.dynamicAllocation.enabled`,Vt={incompleteRun:{name:`incomplete run`,tag:`INCMP`,thresholdSummary:()=>`an event log missing its terminal ApplicationEnd event`,actionLabel:()=>void 0,genericRecommendation:()=>void 0},skew:{name:`task skew`,tag:`SKEW`,thresholdSummary:e=>`P95 task time over ${e.ratioWarn}× the median (the longest task on stages under ${e.minTasksForP95} tasks)`,actionLabel:()=>`Fix task skew`,genericRecommendation:e=>zt(e,`For join-driven skew, enable AQE skew-join handling (spark.sql.adaptive.skewJoin.enabled); otherwise salt the key or repartition on a better key.`)},stageShape:{name:`stage shape`,tag:`SHAPE`,thresholdSummary:e=>`under ${e.pRatioMax} tasks per core, output over ${e.oiRatioMax}× input, or one task spanning over ${Math.round(e.stageShareMin*100)}% of the stage's wall-clock at over ${e.skewWarn}× the median task`,actionLabel(e){switch(e.rule){case`lowParallelism`:return`Increase parallelism`;case`dataExplosion`:return`Check for exploding join`;case`taskStageSkew`:return`Fix straggler task`}},genericRecommendation(e){switch(e.rule){case`lowParallelism`:return`Too few tasks run relative to the cores available, leaving cluster capacity idle: repartition to use more of it.`;case`dataExplosion`:return`Output volume far exceeds input volume: check for an exploding join or a cross product.`;case`taskStageSkew`:return`A single straggler task gates the whole stage's wall-clock duration.`}}},tinyTask:{name:`tiny tasks`,tag:`TINY`,thresholdSummary:e=>`${e.minTasks}+ tasks with a median of ${e.maxP50}ms or less and a P95 of ${e.maxP95}ms or less`,actionLabel:()=>`Coalesce small tasks`,genericRecommendation:e=>e.reads!=null&&e.reads!==`shuffle`?`Scheduler overhead may dominate: coalesce down to fewer, larger tasks.`:`Scheduler overhead may dominate: lower spark.sql.shuffle.partitions, or coalesce down to fewer, larger tasks.`},shuffle:{name:`shuffle I/O`,tag:`SHFL`,thresholdSummary:e=>`stage shuffle read above ${e.minBytes/1048576} MiB`,actionLabel:()=>`Reduce shuffle size`,genericRecommendation:e=>{switch(e.partitions){case`sufficient`:return`The tasks are already a good size, so more partitions will not help: use a broadcast join for the smaller side.`;case`aqeCoalesced`:return`AQE coalesced the shuffle: lower spark.sql.adaptive.advisoryPartitionSizeInBytes, or use a broadcast join for the smaller side.`;case`ownPartitioning`:return`spark.sql.shuffle.partitions is already high enough, so raise this stage's own partition count (its repartition(n) or RDD parallelism), or use a broadcast join for the smaller side.`;default:return`Raise spark.sql.shuffle.partitions, or use a broadcast join for the smaller side.`}}},partitionSizing:{name:`partition sizing`,tag:`PART`,thresholdSummary:e=>`a shuffle partition over ${e.skewRatio}× the median or over ${e.maxPartBytes/1073741824} GiB, or ${e.lowParTotalBytes/1073741824} GiB of shuffle on ${e.lowParMaxTasks} tasks or fewer`,actionLabel(e){switch(e.rule){case`shufflePartitionSkew`:return`Fix skewed partition`;case`lowShuffleParallelism`:return`Add shuffle partitions`;case`maxPartitionTooBig`:return`Repartition oversized data`}},genericRecommendation(e){switch(e.rule){case`shufflePartitionSkew`:return zt(e,`For join skew, enable AQE skew-join handling (spark.sql.adaptive.skewJoin.enabled); otherwise salt the key or repartition on a better key.`);case`lowShuffleParallelism`:return e.partitions===`aqeCoalesced`?`AQE coalesced the shuffle into few tasks: lower spark.sql.adaptive.advisoryPartitionSizeInBytes so each partition is smaller.`:X(e,`spark.sql.shuffle.partitions`)?`spark.sql.shuffle.partitions is already high enough, so raise this stage's own partition count (its repartition(n) or RDD parallelism) so each partition is smaller.`:`Raise spark.sql.shuffle.partitions so each partition is smaller.`;case`maxPartitionTooBig`:return`Repartition to break up the oversized partition before this stage.`}}},spill:{name:`spill`,tag:`SPILL`,thresholdSummary:e=>`single-task disk spill above ${e.singleTaskDiskGiB} GiB`,actionLabel:()=>`Reduce spill`,genericRecommendation:e=>e.reads!=null&&e.reads!==`shuffle`?`If the spill is skew-driven, fix task skew first: adding memory will not help. Otherwise increase executor memory or process less data per task.`:`If the spill is skew-driven, fix task skew first: adding memory will not help. Otherwise raise spark.sql.shuffle.partitions or increase executor memory.`},gc:{name:`GC pressure`,tag:`GC`,thresholdSummary:e=>`GC above ${e.warnPct100}% (or below ${e.lowInfoPct100}%) of executor run time`,actionLabel:e=>e.direction===`low`?`Right-size executor memory`:`Reduce GC pressure`,genericRecommendation:e=>e.direction===`low`?`Memory may be over-provisioned here: consider reducing spark.executor.memory for cost savings.`:`Reduce object creation, use primitive types, avoid UDFs, or increase executor memory to cut GC time.`},stageFailed:{name:`failed stage`,tag:`SFAIL`,thresholdSummary:()=>`a stage that failed outright`,actionLabel:()=>`Inspect stage failure`,genericRecommendation:()=>`Inspect the driver log for the failure reason and the job that triggered it.`},failures:{name:`failed tasks`,tag:`FAIL`,thresholdSummary:e=>`over ${Ft(e.warnRate)} of a stage's tasks failing`,actionLabel:()=>`Investigate task failures`,genericRecommendation:()=>`Investigate driver logs for executor instability or data-driven errors.`},retryWaste:{name:`retry waste`,tag:`RETRY`,thresholdSummary:e=>`${e.minWasted}+ retried attempts wasting at least ${e.minWasteMs/1e3}s`,actionLabel:()=>`Investigate retry cause`,genericRecommendation:()=>`Investigate executor loss or fetch failures behind the retried attempts.`},slowHost:{name:`slow executor host`,tag:`HOST`,thresholdSummary:e=>`a host ${e.ratioWarn}× slower than its peers by mean task time (per-executor figures from ${e.ratioTiers[0]}×)`,actionLabel(e){return e.variant===`durationShare`?`Fix data locality`:e.variant===`multiDim`?`Investigate degraded executor`:`Check slow host`},genericRecommendation(e){if(e.variant===`durationShare`)return`Check for data locality or partition assignment skewing work onto one node.`;if(e.variant===`multiDim`)return`Investigate uneven partition assignment or a degraded executor.`;let t=`Check what this host was running: it may just hold data locality for its tasks or carry one heavy stage, rather than a hardware fault.`;return X(e,`spark.speculation`)?`${t} Speculation is already on, so a lagging task there is already relaunched.`:`${t} Enable spark.speculation to relaunch a lagging task automatically.`}},stageSlowness:{name:`slow stage`,tag:`SLOW`,thresholdSummary:()=>`a stage running far longer than its peers, not attributable to a single slow host`,actionLabel:()=>`Profile slow stage`,genericRecommendation:e=>e.reads===`input`?`Often too few or too uneven input partitions: check input file sizes and lower spark.sql.files.maxPartitionBytes, or look for a large per-task data volume driving heavy spill.`:e.reads===`other`?`Check what the stage computes and for a large per-task data volume driving heavy spill.`:`Often a partition-count problem: raise parallelism via spark.sql.shuffle.partitions or spark.default.parallelism, or check for a large per-task data volume driving heavy shuffle and spill.`},straggler:{name:`straggling task`,tag:`STRAG`,thresholdSummary:()=>`one or more tasks finishing far after the rest of their stage`,actionLabel:()=>`Fix stragglers`,genericRecommendation:e=>`Rule out a GC pause or a slow shuffle fetch before assuming a hardware issue. If uneven data is the cause: ${zt(e,`for join-driven skew, enable AQE skew-join handling (spark.sql.adaptive.skewJoin.enabled); otherwise salt the key or repartition on a better key.`)}`},speculationWaste:{name:`speculation waste`,tag:`SPEC`,thresholdSummary:e=>`${e.minWasted}+ discarded speculative attempts wasting at least ${e.minWasteMs/1e3}s`,actionLabel:()=>`Tune speculation settings`,genericRecommendation:()=>`If task durations are naturally variable rather than genuine stragglers, consider tuning spark.speculation.multiplier/quantile.`},coldStart:{name:`cold start`,tag:`COLD`,thresholdSummary:e=>`the first stage waiting over ${e.gapSeconds}s for an executor`,actionLabel:()=>`Pre-warm cluster`,genericRecommendation:e=>e.dynamicAllocation===`off`?`Keep a warm pool of idle executors: dynamic allocation is off, so no executor-count property applies.`:`Keep a warm pool of idle executors, or if using dynamic allocation, raise the minimum/initial executor count so it does not scale up from zero.`},memoryUtilization:{name:`memory utilization`,tag:`MEM`,thresholdSummary:()=>`executor heap usage outside the configured band`,actionLabel(e){switch(e.variant){case`idleCores`:return`Reduce idle cores`;case`wasteModel`:return`Right-size executor memory`;case`memoryBand`:return e.dataUnavailable?`Enable memory metrics`:e.rule===`heapNearCapacity`?`Increase executor memory`:`Reduce executor memory`}},genericRecommendation(e){switch(e.variant){case`idleCores`:return X(e,Bt)?`Dynamic allocation is already on, so reduce cluster size.`:`Reduce cluster size or enable dynamic allocation.`;case`wasteModel`:return`Review spark.executor.memory and executor count.`;case`memoryBand`:return e.dataUnavailable?void 0:e.rule===`heapNearCapacity`?`Memory may be too small: raise spark.executor.memory to avoid OOM/spill.`:`Memory may be over-provisioned: consider reducing spark.executor.memory for cost savings.`}}},utilization:{name:`executor utilization`,tag:`UTIL`,thresholdSummary:e=>`average executor utilization below ${Ft(e.minUtil)}`,actionLabel:()=>`Reduce cluster size`,genericRecommendation:e=>X(e,Bt)?`Dynamic allocation is already on, so consider reducing cluster size.`:`Consider reducing cluster size or enabling dynamic allocation.`},coreLocality:{name:`core locality`,tag:`LOCAL`,thresholdSummary:()=>`task placement missing data-local core assignment`,actionLabel:()=>`Fix data locality`,genericRecommendation:()=>`Check executor/data colocation.`},cachingOpportunity:{name:`caching opportunity`,tag:`CACHE`,thresholdSummary:()=>`a dataset re-read from source multiple times with no cache/persist`,actionLabel:e=>e.variant===`composite`?`Cache repeated result`:`Cache shared table`,genericRecommendation:e=>e.variant===`composite`?`Cache or persist the repeated join/union result so it is computed once instead of recomputed per query.`:`Cache the shared DataFrame, or broadcast it if it is a small join lookup.`},cacheUtilization:{name:`cache utilization`,tag:`CSTOR`,thresholdSummary:()=>`cached partitions evicted or spilled to disk`,actionLabel:e=>e.dataUnavailable?`Enable block-update logging`:`Increase cache memory`,genericRecommendation(e){switch(e.variant){case`partialCache`:return`Increase executor memory or reduce the cached dataset size so more of it stays cached.`;case`diskSpillover`:return`Executor memory may be too small for this cached dataset: increase executor memory or reduce its size.`}}},jobFailureRate:{name:`job failure rate`,tag:`JOBS`,thresholdSummary:e=>`at least ${Ft(e.infoRate)} of jobs failing`,actionLabel:()=>`Investigate failed jobs`,genericRecommendation:()=>`Inspect the driver log for the failed job(s) and the stage failures that triggered them.`},autoscalingChurn:{name:`autoscaling churn`,tag:`CHRN`,thresholdSummary:e=>`over ${Ft(e.warningPct)} of executors living under ${e.shortLivedMs/6e4} minutes`,actionLabel:()=>`Reduce autoscaling churn`,genericRecommendation:e=>e.dynamicAllocation===`off`?`Dynamic allocation is off, so the churn comes from executors lost or preempted: check the cluster manager's preemption and executor-loss logs.`:`This looks like wasteful re-provisioning rather than normal scale-down: consider raising spark.dynamicAllocation.executorIdleTimeout or widening the minExecutors/maxExecutors bounds to reduce flapping.`},configAudit:{name:`config audit`,tag:`CFG`,thresholdSummary:()=>`a Spark conf value outside the recommended range`,actionLabel(e){switch(e.property){case`spark.shuffle.service.enabled`:return`Enable shuffle service`;case`spark.dynamicAllocation.minExecutors`:return`Fix autoscaling bounds`;case`spark.dynamicAllocation.maxExecutors`:return`Set max executors`;case`spark.serializer`:return`Switch to Kryo`;case`spark.executor.memoryOverhead`:return`Raise memory overhead`}},genericRecommendation(e){switch(e.property){case`spark.shuffle.service.enabled`:return`Set spark.shuffle.service.enabled=true so shuffle data survives executor removal.`;case`spark.dynamicAllocation.minExecutors`:return`Set the minimum executor bound at or below the maximum.`;case`spark.dynamicAllocation.maxExecutors`:return`Set spark.dynamicAllocation.maxExecutors to cap cluster growth.`;case`spark.serializer`:return`Consider spark.serializer=org.apache.spark.serializer.KryoSerializer for faster, smaller buffers.`;case`spark.executor.memoryOverhead`:return`Raise executor memoryOverhead above Spark's default floor to avoid off-heap OOM-kills.`}}},duplicatePlanSubtree:{name:`duplicate plan subtree`,tag:`PLAN`,thresholdSummary:()=>`the same physical plan subtree executed more than once`,actionLabel:()=>`Dedupe repeated subtree`,genericRecommendation:()=>`Check whether the repeated subtree could be computed once and reused, or cache/persist the shared computation.`},smallFiles:{name:`small files`,tag:`PLAN`,thresholdSummary:e=>`over ${e.minFiles} files averaging under ${e.maxAvgFileSizeMB} MiB`,actionLabel:e=>e.direction===`write`?`Coalesce output files`:`Compact small files`,genericRecommendation:e=>e.direction===`write`?`Repartition or coalesce before writing to raise the average file size.`:`Compact the upstream output so fewer, larger files are produced.`},underBroadcast:{name:`missed broadcast join`,tag:`PLAN`,thresholdSummary:()=>`a join below the configured size floor that skipped broadcast`,actionLabel:()=>`Use broadcast join`,genericRecommendation:e=>e.broadcastThreshold===`notLimiting`?`The threshold already admits the smaller side, so it is not what stopped the broadcast: consider a broadcast() hint or collecting table statistics.`:`This could have been a broadcast join: consider a broadcast() hint or raising spark.sql.autoBroadcastJoinThreshold.`},overBroadcast:{name:`oversized broadcast join`,tag:`PLAN`,thresholdSummary:e=>`a broadcast over ${e.overBroadcastBytes/1073741824} GiB`,actionLabel:()=>`Fix oversized broadcast`,genericRecommendation:e=>e.broadcastThreshold===`notLimiting`?`The configured threshold is below this broadcast, so remove the broadcast() hint that forced it.`:X(e,`spark.sql.autoBroadcastJoinThreshold`)?`Automatic broadcast is already disabled, so remove the broadcast() hint that forced it.`:`Check for a misapplied broadcast hint or a misconfigured spark.sql.autoBroadcastJoinThreshold.`}};function Ht(e){return Vt[e]}var Ut=134217728,Wt=8e3,Gt=1.5,Z={critical:0,warning:1,info:2},Kt=Object.fromEntries(Object.keys(Vt).map(e=>[e,Vt[e].tag]));function qt(e){return Kt[e]??e.toUpperCase()}var Jt={skew:`Skew spill: a few heavy tasks spill while most do not; rebalance partitioning`,volume:`Volume spill: most tasks spill because data exceeds memory; add partitions`,unclassified:`Spill cause could not be classified`},Yt={skew:`skew`,volume:`vol`,unclassified:`?`},Xt=8;function Zt(e,t=Xt){return e.length<=t?e.join(`, `):`${e.slice(0,t).join(`, `)}, +${e.length-t} more`}function Qt(e){let t;for(let n of e)(t===void 0||Z[n.impactBand]<Z[t])&&(t=n.impactBand);return t}function $t(e){let t=String(e),n=t.match(/((?:hdfs?|s3[an]?):\/\/\S+|\/[^\s,)]+)/i);if(!n)return t;let r=n[1].replace(/[/,]+$/,``).split(`/`).filter(Boolean);return r[r.length-1]||t}function en(e){return e.split(`::`)[0]||e}function tn(e){return!e||e<=0?`—`:e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${(e/1e6).toFixed(0)} MB`:`${(e/1e3).toFixed(0)} KB`}function nn(e){return e/1e6}function rn(e){return e.value??0}function Q(e,t){switch(e){case`pct`:return`${t}%`;case`pctFraction`:return`${Math.round(t*100)}%`;case`ratio`:return`${t}×`;case`ms`:return ln(t);case`count`:return`${t}`}}var an={shuffleReadBytes:`bytes`,memoryBytesSpilled:`bytes`,shuffleReadMax:`bytes`,avgFileSizeBytes:`bytes`,smallerSideBytes:`bytes`,broadcastBytes:`bytes`,speculationWasteMs:`ms`,retryWasteMs:`ms`,taskDurationP50:`ms`,stageDurationMinutes:`minutes`,"P95/median":`ratio`,"max/median":`ratio`,pRatio:`ratio`,oiRatio:`ratio`,hostMeanRatio:`ratio`,execMaxMedianRatio:`ratio`,gcPct:`pct`,failureRate:`pct`,stragglerShare:`pct`,hostDurationShare:`pctFraction`,taskStageSkew:`pctFraction`,taskCount:`count`,speculativeTasks:`count`,subtreeOccurrences:`count`};function on(e){return e>0&&e<1e3?`${Math.round(e)} B`:tn(e)}function sn(e){let t=e.metric?an[e.metric]:void 0;if(!t||e.value==null)return null;switch(t){case`bytes`:return on(e.value);case`minutes`:return ln(e.value*6e4);case`ms`:return Q(`ms`,e.value);case`ratio`:return Q(`ratio`,e.value);case`pct`:return Q(`pct`,e.value);case`pctFraction`:return Q(`pctFraction`,e.value);case`count`:return Q(`count`,e.value)}}function cn(e){let t=sn(e),n=e.impactEstimate?.wallClock,r=[t,n?`~${ln(n.high)}`:null].filter(Boolean);return r.length>0?r.join(` · `):null}function ln(e){return!e||e<=0?`—`:e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:e<36e5?`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`:`${Math.floor(e/36e5)}h ${Math.floor(e%36e5/6e4)}m`}function un(e){let t=e.shuffleReadBytes??0;if(t<=0)return null;let n=Math.min(Wt,Math.ceil(t/Ut)),r=e.taskCount??0;return n<=r*Gt?null:{recommended:n,current:r}}function dn(e,t){if(e.length===0)return{labels:[],data:[]};let n=e[0],r=e[0];for(let t=1;t<e.length;t++)e[t]<n&&(n=e[t]),e[t]>r&&(r=e[t]);let i=(r-n)/t||1,a=Array(t).fill(0);for(let r of e)a[Math.min(Math.floor((r-n)/i),t-1)]++;return{labels:a.map((e,t)=>Math.round(n+t*i)),data:a}}function fn(e){return e===0?`0s`:ln(e)}function pn(e,t){let n=fn(e),r=fn(t);return n===r?r:`${n}-${r}`}var mn=36e5,hn=3686400,gn=.1,_n=e=>(Math.round(e*10)/10).toLocaleString(`en-US`,{minimumFractionDigits:1,maximumFractionDigits:1});function vn(e){let t=Math.round(e.value*10)/10;switch(e.unit){case`bytes`:return tn(e.value);case`ms`:return fn(e.value);case`mbSeconds`:{let n=e.value/hn;return n>=gn?`${_n(n)} GB-h`:`${t.toLocaleString(`en-US`)} MB-s`}case`coreHours`:return`${t.toFixed(1)} core-h`;case`coreMs`:{let t=e.value/mn;return t>=gn?`${_n(t)} core-h`:`${_n(e.value/1e3)} core-s`}default:return String(e.value)}}function yn(e){return/^0(\.0+)?(?:[^0-9.]|$)/.test(e)}function bn(e){return e>=10?String(Math.round(e)):e.toFixed(1).replace(/\.0$/,``)}var xn=36e5,$=c();function Sn(e){if(e.length===0)return[];let t=[...e].sort((e,t)=>e[0]-t[0]),n=[[t[0][0],t[0][1]]];for(let e=1;e<t.length;e++){let r=n[n.length-1],i=t[e];i[0]<=r[1]?r[1]=Math.max(r[1],i[1]):n.push([i[0],i[1]])}return n}function Cn(e){return Ht(e.type)?.genericRecommendation(e)}function wn(e){let t=e.sampleRelation?` (touching ${e.sampleRelation})`:``;return`A ${e.subtreeSize}-node subtree rooted at ${$t(e.rootName)} repeats ${e.value}x in this plan${t}`}var Tn=`Their filters, columns or scanned tables differ, so the repeats may compute different data.`,En={taskTime:`task time`,inputBytes:`input read`,shuffleBytes:`shuffle read and write`,storageMemory:`storage memory`};function Dn(e,t){let n=[];for(let r of e){let e=t.get(r);e&&e.submittedAt!=null&&e.completedAt!=null&&n.push([e.submittedAt,e.completedAt])}return Sn(n).reduce((e,[t,n])=>e+(n-t),0)}function On(e){let t=new Map;for(let n of e){let e=t.get(n.type)??[];e.push(n),t.set(n.type,e)}return t}function kn(e){return`stageIds`in e?e.stageIds:e.stageId==null?[]:[e.stageId]}function An(e,t,n){let r=[...new Set(t.flatMap(kn))],i=t.reduce((e,t)=>e+(t.impactEstimate?.wallClock?.high??0),0),a=r.length>0?Math.min(i,Dn(r,n)):i;return{kind:`time`,type:e,findingCount:t.length,stageCount:r.length,recoverableMsHigh:a,findings:t}}function jn(e,t){let n=t[0].impactEstimate.rawWaste.unit,r=t.reduce((e,t)=>e+(t.impactEstimate?.rawWaste?.value??0),0);return{kind:`resource`,type:e,findingCount:t.length,unit:n,total:r,findings:t}}function Mn(e,t){let n={};for(let e of t)n[e.impactBand]=(n[e.impactBand]??0)+1;return{kind:`count`,type:e,findingCount:t.length,byImpactBand:n,findings:t}}var Nn={time:0,resource:1,count:2};function Pn(e,t){let n=[];for(let[r,i]of On(e)){let e=i.filter(e=>e.impactEstimate?.wallClock!=null),a=i.filter(e=>e.impactEstimate?.wallClock==null&&e.impactEstimate?.rawWaste!=null),o=i.filter(e=>e.impactEstimate?.wallClock==null&&e.impactEstimate?.rawWaste==null);if(e.length>0&&n.push(An(r,e,t)),a.length>0){let e=new Map;for(let t of a){let n=t.impactEstimate.rawWaste.unit,r=e.get(n)??[];r.push(t),e.set(n,r)}for(let t of e.values())n.push(jn(r,t))}o.length>0&&n.push(Mn(r,o))}return n.sort((e,t)=>{let n=Nn[e.kind]-Nn[t.kind];return n===0?e.kind===`time`&&t.kind===`time`?t.recoverableMsHigh-e.recoverableMsHigh:(Z[Qt(e.findings)??`info`]??9)-(Z[Qt(t.findings)??`info`]??9):n})}function Fn(e){let t=vn({value:e.total,unit:e.unit});return yn(t)?null:t}function In(e){if(e.kind===`time`){let t=pn(e.recoverableMsHigh,e.recoverableMsHigh);return{stat:`×${e.findingCount} · ${t} recoverable`,statTitle:`${e.findingCount} findings of this type; up to ${t} of run time could be recovered by fixing them`}}if(e.kind===`resource`){let t=Fn(e);return{stat:t?`×${e.findingCount} · ${t}`:`×${e.findingCount}`,statTitle:`${e.findingCount} findings of this type${t?`; ${t} in total, a resource cost, not run time`:``}`}}let t=Object.entries(e.byImpactBand);return{stat:t.length===1?`×${e.findingCount}`:`×${e.findingCount} · ${t.map(([e,t])=>`${t} ${e}`).join(`, `)}`,statTitle:`${e.findingCount} findings of this type, by impact`}}function Ln(e){return!(e.type===`memoryUtilization`&&e.variant===`memoryBand`&&e.dataUnavailable)}function Rn(e){return e.type===`incompleteRun`||`dataUnavailable`in e&&e.dataUnavailable?!1:Ln(e)}var zn=0,Bn=1,Vn=2;function Hn(e){let t=e.impactEstimate;return t?.wallClock?zn:t?.rawWaste?Bn:Vn}function Un(e){return[...e].sort((e,t)=>{let n=Hn(e)-Hn(t);return n===0?Hn(e)===zn?t.impactEstimate.wallClock.high-e.impactEstimate.wallClock.high:(Z[e.impactBand]??9)-(Z[t.impactBand]??9):n})}function Wn(e,t){return Pn(e,t).map(e=>{let t=Un(e.findings);return{kind:e.kind,type:e.type,unit:e.kind===`resource`?e.unit:null,band:t[0].impactBand,members:t,...In(e)}})}var Gn=`docs/tuning-reference`,Kn={"bottleneck-stage-shape":`bottleneck-skew`,"bottleneck-stage-slowness":`bottleneck-slow-host`,"bottleneck-partition-sizing":`bottleneck-shuffle`,"bottleneck-speculation-waste":`bottleneck-straggler`,"bottleneck-core-locality":`bottleneck-utilization`,"bottleneck-caching-opportunity":`bottleneck-utilization`,"bottleneck-autoscaling-churn":`cluster-config`,"bottleneck-cache-utilization":`memory-model`};function qn(e){return e.startsWith(`metric-`)?`metrics`:e.startsWith(`config-`)?`config`:Kn[e]??e}function Jn(e){let t=String(e).replace(/^#/,``);return`${Gn}/${qn(t)}.html#${encodeURIComponent(t)}`}var Yn=new Set([`#intro`,`#spark-architecture`,`#memory-model`,`#partitioning`,`#joins`,`#shuffle`,`#data-formats`,`#table-formats`,`#caching`,`#pyspark`,`#aqe`,`#cluster-config`,`#anti-patterns`,`#metrics`,`#config`,`#bottleneck-cold-start`,`#bottleneck-failures`,`#bottleneck-gc`,`#bottleneck-job-failure-rate`,`#bottleneck-retry-waste`,`#bottleneck-shuffle`,`#bottleneck-skew`,`#bottleneck-slow-host`,`#bottleneck-spill`,`#bottleneck-straggler`,`#bottleneck-tiny-tasks`,`#bottleneck-utilization`,`#bottleneck-memory-utilization`,`#bottleneck-broadcast-sizing`,`#bottleneck-duplicate-plan-subtree`,`#bottleneck-small-files`,`#bottleneck-stage-shape`,`#bottleneck-stage-slowness`,`#bottleneck-partition-sizing`,`#bottleneck-speculation-waste`,`#bottleneck-core-locality`,`#bottleneck-caching-opportunity`,`#bottleneck-autoscaling-churn`,`#bottleneck-cache-utilization`,`#config-autoscale-bounds`,`#config-memory-overhead`,`#config-serializer`,`#config-shuffle-service`,...Object.values({"task-duration":`#metric-task-duration`,"shuffle-read-bytes":`#metric-shuffle-read-bytes`,"shuffle-write-bytes":`#metric-shuffle-write-bytes`,"memory-bytes-spilled":`#metric-memory-bytes-spilled`,"disk-bytes-spilled":`#metric-disk-bytes-spilled`,"jvm-gc-time":`#metric-jvm-gc-time`,gcpct:`#metric-gcpct`,"executor-run-time":`#metric-executor-run-time`,"fetch-wait-time-ratio":`#metric-fetch-wait-time-ratio`,"input-bytes":`#metric-input-bytes`,"output-bytes":`#metric-output-bytes`,"io-ratio":`#metric-io-ratio`,"peak-execution-memory":`#metric-peak-execution-memory`,"failed-tasks":`#metric-failed-tasks`,"speculative-tasks":`#metric-speculative-tasks`,"first-stage-submitted-at":`#metric-first-stage-submitted-at`,"executor-count":`#metric-executor-count`,"stage-duration":`#metric-stage-duration`})]);function Xn(e){return Yn.has(String(e))}function Zn(e){let t=new Set(e.map(e=>e.docAnchor));if(t.size!==1)return;let[n]=t;return n}function Qn(e){return`docs/user-guide/understanding-findings.html#${qt(e).toLowerCase()}`}var $n=`docs/user-guide/alternative-log-retrieval.html`,er=f(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function tr({className:e,variant:t=`default`,render:n,...i}){return o({defaultTagName:`span`,props:r({className:G(er({variant:t}),e)},i),render:n,state:{slot:`badge`,variant:t}})}var nr=`#intro`,rr=(0,l.createContext)(null);function ir({children:e}){let[t,n]=(0,l.useState)(!1),[r,i]=(0,l.useState)({kind:`site`,source:`reference`,path:Jn(nr)}),a=(0,l.useCallback)((e=nr)=>{i({kind:`site`,source:`reference`,path:Jn(e)}),n(!0)},[]),o=(0,l.useCallback)(e=>{i({kind:`site`,source:`guide`,path:e}),n(!0)},[]),s=(0,l.useCallback)(()=>n(!1),[]),c=(0,l.useMemo)(()=>({open:a,openSite:o,close:s,isOpen:t,target:r}),[a,o,s,t,r]);return(0,$.jsx)(rr.Provider,{value:c,children:e})}function ar(){let e=(0,l.useContext)(rr);if(!e)throw Error(`useDocs outside DocsProvider`);return e}function or(){return(0,l.useContext)(rr)}function sr({anchor:e,children:t}){let{open:n}=ar(),r=mt(e=>e.exportMode);return Xn(e)?r?(0,$.jsx)($.Fragment,{children:t}):(0,$.jsx)(`a`,{href:Jn(e),className:`text-primary underline-offset-4 hover:underline`,onClick:t=>{t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.button!==0||(t.preventDefault(),n(e))},children:t}):null}var cr={INCMP:{expansion:`Incomplete run`,description:`This event log never recorded an application-end event, so other findings and metrics reflect only what was captured.`},SKEW:{expansion:`Task skew`,description:`A small number of tasks take much longer than their peers.`},SHFL:{expansion:`Shuffle I/O`,description:`Tasks are moving a large amount of intermediate data between stages.`},SPILL:{expansion:`Memory and disk spill`,description:`Tasks are writing data out of memory, which slows execution.`},GC:{expansion:`Garbage collection pressure`,description:`Tasks are spending an unusually large share of time reclaiming memory.`},COLD:{expansion:`Executor cold start`,description:`New executors are taking time to become available for work.`},UTIL:{expansion:`Low utilization`,description:`Allocated executors are idle for a large share of the application run.`},MEM:{expansion:`Memory utilization`,description:`Executor memory or core capacity may be over- or under-provisioned.`},LOCAL:{expansion:`Core usage locality`,description:`Tasks are running without process- or node-local data placement more than expected.`},HOST:{expansion:`Slow host`,description:`One executor is substantially slower than its peers.`},FAIL:{expansion:`Failed tasks`,description:`Tasks are failing often enough to affect the stage.`},STRAG:{expansion:`Straggler tasks`,description:`A few tasks are much slower than the rest of their stage.`},SPEC:{expansion:`Speculation waste`,description:`Speculative task attempts used a lot of executor time without confirming a genuine straggler.`},RETRY:{expansion:`Retry waste`,description:`Repeated task attempts are consuming avoidable execution time.`},TINY:{expansion:`Tiny tasks`,description:`Many very short tasks are adding scheduling overhead.`},SFAIL:{expansion:`Failed stage`,description:`A stage attempt failed outright.`},PART:{expansion:`Partition sizing`,description:`Shuffle partitions are too large, too uneven, or too few for the work.`},SLOW:{expansion:`Stage slowness`,description:`A stage is slow overall without a more specific diagnosed cause.`},SHAPE:{expansion:`Stage shape`,description:`The stage has an inefficient task count, output shape, or task-to-stage balance.`},CACHE:{expansion:`Caching opportunity`,description:`A reusable dataset may benefit from being persisted between stages.`},CSTOR:{expansion:`Cache storage`,description:`A persisted dataset is not fully cached in memory or is spilling to disk.`},CHRN:{expansion:`Autoscaling churn`,description:`Executors are being stood up and torn down again before they can do useful work.`},JOBS:{expansion:`Job failure rate`,description:`A large share of completed jobs did not succeed.`},CFG:{expansion:`Configuration audit`,description:`Configuration settings may cause reliability or efficiency problems.`},PLAN:{expansion:`Plan advisor`,description:`The SQL execution plan has a pattern worth reviewing.`}};function lr(){return mt(e=>e.interpretation)}function ur(e,t){return e.findings[t]}var dr=new WeakMap;function fr(e,t){if(!e)return null;let n=dr.get(e);return n||(n=new Map(e.findings.map((t,n)=>[t,e.data.savings[n]])),dr.set(e,n)),n.get(t)??null}function pr(e){return fr(lr(),e)}function mr(e,t){if(!e)return[];let n=new Set(t);return e.data.savingsRank.map(t=>e.findings[t]).filter(e=>e!=null&&n.has(e))}function hr(e){return e?e.data.rollup.eligibleIndexes.map(t=>e.findings[t]).filter(e=>e!=null):[]}function gr({members:e,...t}){return{...t,key:`${t.kind}-${t.type}-${t.unit??``}`,findings:e}}function _r(e,t,n){if(!e)return{eligible:[],groups:[]};let r=new Set(t),i=hr(e).filter(e=>r.has(e));return{eligible:i,groups:e.findings.every(e=>r.has(e))?e.data.rollup.groups.map(({memberIndexes:t,...n})=>gr({...n,members:t.map(t=>e.findings[t]).filter(e=>e!=null)})):Wn(i,n).map(gr)}}function vr({children:e}){return ht()===`advanced`?(0,$.jsx)($.Fragment,{children:e}):null}var yr={critical:`bg-critical`,warning:`bg-warning`,info:`bg-info`},br={critical:`text-critical`,warning:`text-warning`,info:`text-info`},xr={critical:`border-critical`,warning:`border-warning`,info:`border-info`},Sr=f(`inline-block size-2 shrink-0 rounded-full`,{variants:{impactBand:{...yr,muted:`bg-muted-foreground`}},defaultVariants:{impactBand:`info`}}),Cr=f(`gap-1.5 border-transparent`,{variants:{impactBand:{critical:`bg-critical/10 text-critical`,warning:`bg-warning/10 text-warning`,info:`bg-info/10 text-info`}},defaultVariants:{impactBand:`info`}});function wr({impactBand:e,className:t}){return(0,$.jsx)(`span`,{"aria-hidden":`true`,className:G(Sr({impactBand:e}),t)})}function Tr({type:e,impactBand:t,className:n,plainBadge:r,docAnchor:i}){let a=or(),o=ht(),s=mt(e=>e.exportMode),c=lr()?.data.detectors[e]?.docAnchor??void 0,l=qt(e),u=cr[l],d=r?void 0:u?`${u.expansion}: ${u.description}`:void 0,f=r?void 0:i&&Xn(i)?i:c,p=u?.expansion??l,m=Qn(e),h=s?void 0:f?Jn(f):r?void 0:m,g=!r&&!s&&o===`advanced`&&!!f,_=(0,$.jsxs)(tr,{title:d,className:G(Cr({impactBand:t}),`h-6`,h&&`underline decoration-dotted underline-offset-2`,g?G(`rounded-r-none`,n):n),render:h?(0,$.jsx)(`a`,{href:h,onClick:e=>{!a||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),f?a.open(f):a.openSite(m))}}):void 0,children:[(0,$.jsx)(wr,{impactBand:t}),l]});return r?_:(0,$.jsxs)(`span`,{className:`inline-flex items-center`,children:[_,g?(0,$.jsx)(vr,{children:(0,$.jsx)(`a`,{href:m,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`SparkForensics guide: ${p}`,title:`SparkForensics guide: ${p}`,onClick:e=>{!a||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),a.openSite(m))},className:G(`tap-target-comfortable tap-target-comfortable--sm inline-flex h-6 shrink-0 items-center rounded-r-4xl border border-transparent py-0.5 pr-2 pl-1 text-xs font-medium whitespace-nowrap transition-colors`,Cr({impactBand:t}),n,`text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`),children:(0,$.jsx)(Pt,{"aria-hidden":`true`,className:`size-3`})})}):null]})}function Er({label:e,impactBand:t,title:n,className:r}){return(0,$.jsx)(tr,{title:n,className:G(Cr({impactBand:t}),`font-mono`,r),children:e})}function Dr({...e}){return(0,$.jsx)(a,{"data-slot":`collapsible`,...e})}function Or({...e}){return(0,$.jsx)(s,{"data-slot":`collapsible-trigger`,...e})}function kr({className:e,...t}){return(0,$.jsx)(i,{"data-slot":`collapsible-content`,className:G(`h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none`,e),...t})}var Ar=(0,l.createContext)(!0),jr=()=>(0,l.useContext)(Ar);export{Q as $,Xn as A,Cn as B,ir as C,ot as Ct,er as D,tr as E,f as Et,Un as F,Yt as G,Sn as H,Wn as I,fn as J,Jt as K,Fn as L,Pn as M,Rn as N,$n as O,Ln as P,cn as Q,Tn as R,sr as S,st as St,or as T,G as Tt,Z as U,wn as V,xn as W,bn as X,tn as Y,ln as Z,mr as _,Ot as _t,Or as a,$t as at,lr as b,ht as bt,xr as c,en as ct,Tr as d,Vt as dt,vn as et,Cr as f,Ht as ft,ur as g,At as gt,hr as h,Mt as ht,kr as i,rn as it,Zn as j,Gn as k,br as l,qt as lt,_r as m,Pt as mt,jr as n,pn as nt,Er as o,yn as ot,vr as p,Ft as pt,dn as q,Dr as r,nn as rt,yr as s,un as st,Ar as t,Zt as tt,wr as u,Qt as ut,fr as v,pt as vt,ar as w,it as wt,cr as x,ct as xt,pr as y,mt as yt,En as z};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{R as n,U as r,V as i,d as a,p as o,ut as s}from"./DisclosureContext-ZpE6CkHx.js";import{p as c}from"./plan-graph-vendor-BYl-AzN5.js";import{c as l,l as u}from"./useRecentFiles-XZEnLlal.js";import{P as d,S as f,k as p}from"./index-B-03mG7K.js";import{a as m,o as h,r as g,s as _,t as v}from"./Dashboard-C1hNeX49.js";import{i as y,r as b}from"./impact-sort-CssZ6MT2.js";import{n as x,t as S}from"./finding-anchor-Cl6_5hfV.js";import{t as C}from"./usePagedRows-Dyl6T8Ok.js";import{n as w,t as T}from"./useSortMode-Dhvit8dt.js";var E=e(t(),1),D=c();function O({finding:e}){let t=x([e]);return(0,D.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-2 ${S} transition-colors ${t.flashClassName}`,children:[e.stageIds.length>0?(0,D.jsx)(m,{pills:e.stageIds.map(e=>({id:e}))}):null,(0,D.jsxs)(`p`,{children:[`${i(e)}.${e.occurrencesIdentical?``:` ${n}`}`,` `,(0,D.jsx)(v,{finding:e})]})]})}var k=(0,E.memo)(function({catalog:e,defaultCollapsed:t=!0}){let{sortMode:n,setSortMode:i,orderBy:c}=T(),[m,v]=(0,E.useState)(!t),[x,S]=(0,E.useState)(0),{findings:k,pills:A,groupConfidence:j}=(0,E.useMemo)(()=>{let t=l(e,`duplicatePlanSubtree`).sort((e,t)=>r[e.impactBand]-r[t.impactBand]);return{findings:t,pills:[...new Set(t.flatMap(e=>e.stageIds))].map(e=>({id:e})),groupConfidence:t.every(e=>e.confidence===t[0]?.confidence)?t[0]:void 0}},[e]),M=c(k,e=>[e],y),N=d(),P=N?M.findIndex(e=>e===N.finding):null,{totalPages:F,effectivePage:I,visible:L}=C(M,x,S,P);return k.length===0?null:(0,D.jsxs)(p,{title:`Redundant Plan Subtree`,fixFor:k,impactBand:s(k),open:m,onOpenChange:v,badges:(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(a,{type:`duplicatePlanSubtree`,impactBand:s(k)??`info`,className:f}),b(k,k.length,m)?(0,D.jsx)(w,{mode:n,onChange:i}):null]}),statusBadge:(0,D.jsx)(o,{children:(0,D.jsx)(u,{confidence:j?.confidence,validationRequired:j?.validationRequired,evidenceKey:`sqlPlan`})}),summary:(0,D.jsx)(h,{value:`${A.length} stage${A.length===1?``:`s`}`,context:_(k.length)}),children:[(0,D.jsx)(`ul`,{className:`space-y-3 text-sm`,children:L.map(e=>(0,D.jsx)(O,{finding:e},e.id))}),(0,D.jsx)(g,{page:I,totalPages:F,onPrev:()=>S(e=>e-1),onNext:()=>S(e=>e+1)})]})});export{k as DuplicatePlanSubtree};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{$ as n,U as r,d as i,it as a,u as o,ut as s}from"./DisclosureContext-ZpE6CkHx.js";import{p as c}from"./plan-graph-vendor-BYl-AzN5.js";import{P as l,k as u}from"./index-B-03mG7K.js";import{o as d,r as f,s as p,t as m}from"./Dashboard-C1hNeX49.js";import{n as h}from"./finding-anchor-Cl6_5hfV.js";import{t as g}from"./usePagedRows-Dyl6T8Ok.js";var _=e(t(),1),v=c();function y({finding:e}){let t=h([e]);return(0,v.jsxs)(`div`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`transition-colors ${t.flashClassName}`,children:[(0,v.jsxs)(`p`,{className:`flex flex-wrap items-start gap-2`,children:[(0,v.jsx)(o,{impactBand:e.impactBand,className:`mt-1.5`}),(0,v.jsx)(`strong`,{children:n(`pct`,a(e))}),` average executor utilization`]}),(0,v.jsx)(m,{finding:e})]})}var b=(0,_.memo)(function({catalog:e,defaultCollapsed:t=!0}){let[o,c]=(0,_.useState)(0),m=(0,_.useMemo)(()=>e.filter(e=>e.type===`utilization`).slice().sort((e,t)=>r[e.impactBand]-r[t.impactBand]),[e]),h=l(),b=h?m.findIndex(e=>e===h.finding):null,{totalPages:x,effectivePage:S,visible:C}=g(m,o,c,b);return m.length===0?null:(0,v.jsxs)(u,{title:`Executor Utilization`,fixFor:m,impactBand:s(m),badges:(0,v.jsx)(i,{type:`utilization`,impactBand:s(m)??`info`}),defaultCollapsed:t,summary:(0,v.jsx)(d,{value:`${n(`pct`,a(m[0]))} average`,context:p(m.length)}),children:[(0,v.jsx)(`div`,{className:`space-y-2 text-sm`,children:C.map(e=>(0,v.jsx)(y,{finding:e},e.id))}),(0,v.jsx)(f,{page:S,totalPages:x,onPrev:()=>c(e=>e-1),onNext:()=>c(e=>e+1)})]})});export{b as ExecutorUtilization};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{Z as n,d as r,p as i,ut as a}from"./DisclosureContext-ZpE6CkHx.js";import{p as o}from"./plan-graph-vendor-BYl-AzN5.js";import{l as s}from"./useRecentFiles-XZEnLlal.js";import{P as c,k as l}from"./index-B-03mG7K.js";import{o as u,r as d,s as f,t as p}from"./Dashboard-C1hNeX49.js";import{r as m}from"./impact-sort-CssZ6MT2.js";import{n as h,t as g}from"./finding-anchor-Cl6_5hfV.js";import{t as _}from"./usePagedRows-Dyl6T8Ok.js";import{n as v,t as y}from"./useSortMode-Dhvit8dt.js";import{t as b}from"./StageHeader-DJkYkrsU.js";var x=e(t(),1),S=o(),C=`GC % = total JVM GC time ÷ total executor run time; it can exceed 100% when GC pauses overlap many concurrent task threads.`;function w(e){return[...e].sort((e,t)=>(typeof t.value==`number`?t.value:0)-(typeof e.value==`number`?e.value:0))}function T({finding:e,appModel:t}){let r=h([e]),a=(e.stageId==null?void 0:t.stages.get(e.stageId))?.executorRunTime;return(0,S.jsxs)(`li`,{ref:r.ref,tabIndex:r.tabIndex,"data-flashed":r.dataFlashed,className:`space-y-2 ${g} transition-colors ${r.flashClassName}`,children:[(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,S.jsx)(b,{stageId:e.stageId,appModel:t}),(0,S.jsx)(i,{children:(0,S.jsx)(s,{confidence:e.confidence,validationRequired:e.validationRequired})})]}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`GC: `,(0,S.jsxs)(`strong`,{children:[e.value,`%`]}),` · Executor run time:`,` `,(0,S.jsx)(`strong`,{children:n(a??0)})]}),(0,S.jsx)(p,{finding:e})]})}function E({title:e,findings:t,appModel:n,page:r,setPage:i,routeTarget:a,orderBy:o}){let s=o(w(t),e=>[e],e=>e.stageId),c=a?s.findIndex(e=>e===a.finding):null,{totalPages:l,effectivePage:u,visible:f}=_(s,r,i,c);return(0,S.jsxs)(`section`,{className:`space-y-2`,children:[(0,S.jsxs)(`h4`,{className:`font-heading text-sm font-medium`,children:[e,` · `,t.length,` stage`,t.length===1?``:`s`]}),(0,S.jsx)(`ul`,{className:`space-y-3`,children:f.map(e=>(0,S.jsx)(T,{finding:e,appModel:n},e.stageId))}),(0,S.jsx)(d,{page:u,totalPages:l,onPrev:()=>i(e=>e-1),onNext:()=>i(e=>e+1)})]})}function D({catalog:e,appModel:t,defaultCollapsed:n=!0}){let[o,s]=(0,x.useState)(0),[d,p]=(0,x.useState)(0),{sortMode:h,setSortMode:g,orderBy:_}=y(),[b,w]=(0,x.useState)(!n),T=c(),D=(0,x.useRef)(!1);(0,x.useEffect)(()=>{if(!D.current){D.current=!0;return}s(0),p(0)},[t]);let O=e.filter(e=>e.type===`gc`);if(O.length===0)return null;let k=O.filter(e=>e.direction!==`low`),A=O.filter(e=>e.direction===`low`),j=a(O),M=[...O].sort((e,t)=>(typeof t.value==`number`?t.value:0)-(typeof e.value==`number`?e.value:0))[0];return(0,S.jsx)(l,{title:`GC Pressure`,impactBand:j,fixFor:O,badges:(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(r,{type:`gc`,impactBand:j??`info`}),m(O,O.length,b)?(0,S.jsx)(v,{mode:h,onChange:e=>{g(e),s(0),p(0)}}):null]}),defaultCollapsed:n,open:b,onOpenChange:w,summary:(0,S.jsx)(u,{value:`${M.value}%`,context:f(O.length)}),children:(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsx)(i,{children:(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:C})}),k.length>0&&(0,S.jsx)(E,{title:`GC overhead`,findings:k,appModel:t,page:o,setPage:s,routeTarget:T,orderBy:_}),A.length>0&&(0,S.jsx)(E,{title:`Low GC (cost)`,findings:A,appModel:t,page:d,setPage:p,routeTarget:T,orderBy:_})]})})}export{D as GcPressure};
@@ -1 +0,0 @@
1
- import{d as e}from"./DisclosureContext-ZpE6CkHx.js";import{p as t}from"./plan-graph-vendor-BYl-AzN5.js";import{k as n}from"./index-B-03mG7K.js";import{t as r}from"./Dashboard-C1hNeX49.js";var i=t();function a({finding:e}){let{recommendation:t}=e;return(0,i.jsxs)(`div`,{className:`flex flex-col gap-1 transition-colors`,children:[(0,i.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`ApplicationEnd event: `,(0,i.jsx)(`strong`,{children:`missing`})]}),(0,i.jsx)(r,{finding:e}),t?(0,i.jsx)(`p`,{className:`pt-1`,children:t}):null]})}function o({catalog:t,defaultCollapsed:r=!0}){let o=t.find(e=>e.type===`incompleteRun`);if(!o)return null;let{impactBand:s}=o;return(0,i.jsx)(n,{title:`Incomplete Run`,impactBand:s,badges:(0,i.jsx)(e,{type:`incompleteRun`,impactBand:s}),defaultCollapsed:r,children:(0,i.jsx)(a,{finding:o})})}export{o as IncompleteRun};
@@ -1 +0,0 @@
1
- import{d as e,p as t}from"./DisclosureContext-ZpE6CkHx.js";import{p as n}from"./plan-graph-vendor-BYl-AzN5.js";import{c as r}from"./useRecentFiles-XZEnLlal.js";import{k as i}from"./index-B-03mG7K.js";import{o as a,t as o}from"./Dashboard-C1hNeX49.js";var s=n();function c({finding:e}){let{failedJobs:n,totalJobs:r,failedTasks:i,totalTasks:a,taskFailureRate:c,value:l}=e;return(0,s.jsxs)(`div`,{className:`flex flex-col gap-1 transition-colors`,children:[(0,s.jsxs)(`p`,{children:[`Failure rate: `,(0,s.jsxs)(`strong`,{children:[l,`%`]}),` (`,n,` of `,r,` completed jobs)`]}),(0,s.jsx)(t,{children:(0,s.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Task-failure context: `,i,` of `,a,` tasks failed (`,c,`%).`]})}),(0,s.jsx)(o,{finding:e})]})}function l({catalog:t,defaultCollapsed:n=!0}){let[o]=r(t,`jobFailureRate`);if(!o)return null;let{impactBand:l,value:u,failedJobs:d,totalJobs:f}=o;return(0,s.jsx)(i,{title:`Job Failures`,fixFor:[o],impactBand:l,badges:(0,s.jsx)(e,{type:`jobFailureRate`,impactBand:l}),defaultCollapsed:n,summary:(0,s.jsx)(a,{value:`${u}%`,context:`${d} of ${f} completed jobs failed`}),children:(0,s.jsx)(c,{finding:o})})}export{l as JobFailures};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t}from"./charts-vendor-0VMaLVLN.js";import{$ as n,P as r,U as i,d as a,et as o,it as s,p as c,u as l,ut as u}from"./DisclosureContext-ZpE6CkHx.js";import{p as d}from"./plan-graph-vendor-BYl-AzN5.js";import{c as f,l as p}from"./useRecentFiles-XZEnLlal.js";import{P as m,k as h}from"./index-B-03mG7K.js";import{o as g,r as _,s as v,t as y}from"./Dashboard-C1hNeX49.js";import{n as b}from"./finding-anchor-Cl6_5hfV.js";import{t as x}from"./usePagedRows-Dyl6T8Ok.js";var S=e(t(),1),C=d();function w(e){let t=s(e),r=n(`pct`,t);return e.variant===`idleCores`?`${r} of available core-time idle`:e.variant===`memoryBand`?e.rule===`heapNearCapacity`?`${r} of allocated heap used: near capacity`:`${r} of allocated heap used: over-provisioned`:`~${o({value:t,unit:`mbSeconds`})} wasted`}function T(e){if(e.rule==null)return null;let t=e.recommendation??``,n=t.indexOf(`: `);return n===-1?null:` ${t.slice(0,n)}.`}function E(e){return`executorId`in e&&e.executorId!=null?`Executor ${e.executorId}`:e.variant===`idleCores`?`Idle cores`:`Memory waste`}function D({finding:e}){let t=b([e]);return e.dataUnavailable?(0,C.jsx)(`div`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-1 transition-colors ${t.flashClassName}`,children:(0,C.jsx)(c,{children:(0,C.jsx)(`p`,{className:`text-muted-foreground`,children:e.recommendation})})}):(0,C.jsxs)(`div`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`transition-colors ${t.flashClassName}`,children:[(0,C.jsxs)(`p`,{className:`flex flex-wrap items-start gap-2`,children:[(0,C.jsx)(l,{impactBand:e.impactBand,className:`mt-1.5`}),(0,C.jsx)(`strong`,{children:E(e)})]}),(0,C.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[w(e),T(e)==null?null:(0,C.jsx)(c,{children:T(e)})]}),(0,C.jsx)(y,{finding:e})]})}var O=(0,S.memo)(function({catalog:e,defaultCollapsed:t=!0}){let[n,o]=(0,S.useState)(0),{findings:s,groupConfidence:l}=(0,S.useMemo)(()=>{let t=f(e,`memoryUtilization`).sort((e,t)=>i[e.impactBand]-i[t.impactBand]),n=t.filter(r);return{findings:t,groupConfidence:n.every(e=>e.confidence===n[0]?.confidence)?n[0]:void 0}},[e]),d=m(),y=d?s.findIndex(e=>e===d.finding):null,{totalPages:b,effectivePage:w,visible:T}=x(s,n,o,y);if(!s.some(r))return null;let O=s.find(e=>!e.dataUnavailable)??s[0];return(0,C.jsxs)(h,{title:`Memory Utilization`,fixFor:s,impactBand:u(s),badges:(0,C.jsx)(a,{type:`memoryUtilization`,impactBand:u(s)??`info`}),statusBadge:(0,C.jsx)(c,{children:(0,C.jsx)(p,{confidence:l?.confidence,validationRequired:l?.validationRequired,evidenceKey:`executorMetrics`})}),defaultCollapsed:t,summary:(0,C.jsx)(g,{value:E(O),context:v(s.length)}),children:[(0,C.jsx)(`div`,{className:`space-y-2 text-sm`,children:T.map(e=>(0,C.jsx)(D,{finding:e},e.id))}),(0,C.jsx)(_,{page:w,totalPages:b,onPrev:()=>o(e=>e-1),onNext:()=>o(e=>e+1)})]})});export{O as MemoryUtilization};