@zenfg/inspector 0.1.0-beta.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/GUIDE.md +182 -0
  2. package/README.md +61 -89
  3. package/THEMING.md +124 -0
  4. package/dist/FrameGraphInspector.d.ts +23 -4
  5. package/dist/FrameGraphInspector.d.ts.map +1 -1
  6. package/dist/FrameGraphInspector.js +137 -29
  7. package/dist/FrameGraphInspector.js.map +1 -1
  8. package/dist/capture.d.ts +5 -0
  9. package/dist/capture.d.ts.map +1 -0
  10. package/dist/capture.js +2 -0
  11. package/dist/capture.js.map +1 -0
  12. package/dist/debugCaptureModel.d.ts +19 -0
  13. package/dist/debugCaptureModel.d.ts.map +1 -1
  14. package/dist/debugCaptureModel.js +36 -2
  15. package/dist/debugCaptureModel.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/panelAliasAnalysis.d.ts +1 -0
  20. package/dist/panelAliasAnalysis.d.ts.map +1 -1
  21. package/dist/panelAliasAnalysis.js +23 -54
  22. package/dist/panelAliasAnalysis.js.map +1 -1
  23. package/dist/panelCytoscapeGraphRenderer.d.ts +15 -2
  24. package/dist/panelCytoscapeGraphRenderer.d.ts.map +1 -1
  25. package/dist/panelCytoscapeGraphRenderer.js +145 -23
  26. package/dist/panelCytoscapeGraphRenderer.js.map +1 -1
  27. package/dist/panelDetailLayout.d.ts +27 -0
  28. package/dist/panelDetailLayout.d.ts.map +1 -0
  29. package/dist/panelDetailLayout.js +174 -0
  30. package/dist/panelDetailLayout.js.map +1 -0
  31. package/dist/panelDetailStyles.d.ts +2 -0
  32. package/dist/panelDetailStyles.d.ts.map +1 -0
  33. package/dist/panelDetailStyles.js +57 -0
  34. package/dist/panelDetailStyles.js.map +1 -0
  35. package/dist/panelDiagnosticsView.d.ts +10 -1
  36. package/dist/panelDiagnosticsView.d.ts.map +1 -1
  37. package/dist/panelDiagnosticsView.js +166 -57
  38. package/dist/panelDiagnosticsView.js.map +1 -1
  39. package/dist/panelDomHelpers.d.ts.map +1 -1
  40. package/dist/panelDomHelpers.js +6 -5
  41. package/dist/panelDomHelpers.js.map +1 -1
  42. package/dist/panelGraphLayout.d.ts +3 -2
  43. package/dist/panelGraphLayout.d.ts.map +1 -1
  44. package/dist/panelGraphLayout.js +6 -5
  45. package/dist/panelGraphLayout.js.map +1 -1
  46. package/dist/panelGraphRenderer.d.ts +10 -0
  47. package/dist/panelGraphRenderer.d.ts.map +1 -1
  48. package/dist/panelGraphRenderer.js.map +1 -1
  49. package/dist/panelGraphScene.d.ts +1 -0
  50. package/dist/panelGraphScene.d.ts.map +1 -1
  51. package/dist/panelGraphScene.js +69 -32
  52. package/dist/panelGraphScene.js.map +1 -1
  53. package/dist/panelGraphSearch.d.ts +16 -0
  54. package/dist/panelGraphSearch.d.ts.map +1 -0
  55. package/dist/panelGraphSearch.js +93 -0
  56. package/dist/panelGraphSearch.js.map +1 -0
  57. package/dist/panelGraphView.d.ts +82 -0
  58. package/dist/panelGraphView.d.ts.map +1 -1
  59. package/dist/panelGraphView.js +15 -4
  60. package/dist/panelGraphView.js.map +1 -1
  61. package/dist/panelGraphVisuals.d.ts +14 -6
  62. package/dist/panelGraphVisuals.d.ts.map +1 -1
  63. package/dist/panelGraphVisuals.js +126 -51
  64. package/dist/panelGraphVisuals.js.map +1 -1
  65. package/dist/panelInspectorView.d.ts +8 -0
  66. package/dist/panelInspectorView.d.ts.map +1 -1
  67. package/dist/panelInspectorView.js +242 -48
  68. package/dist/panelInspectorView.js.map +1 -1
  69. package/dist/panelListStyles.d.ts +3 -0
  70. package/dist/panelListStyles.d.ts.map +1 -0
  71. package/dist/panelListStyles.js +155 -0
  72. package/dist/panelListStyles.js.map +1 -0
  73. package/dist/panelMemoryStyles.d.ts +3 -0
  74. package/dist/panelMemoryStyles.d.ts.map +1 -0
  75. package/dist/panelMemoryStyles.js +42 -0
  76. package/dist/panelMemoryStyles.js.map +1 -0
  77. package/dist/panelMemoryView.d.ts +13 -1
  78. package/dist/panelMemoryView.d.ts.map +1 -1
  79. package/dist/panelMemoryView.js +161 -41
  80. package/dist/panelMemoryView.js.map +1 -1
  81. package/dist/panelPassesView.d.ts +15 -0
  82. package/dist/panelPassesView.d.ts.map +1 -1
  83. package/dist/panelPassesView.js +202 -72
  84. package/dist/panelPassesView.js.map +1 -1
  85. package/dist/panelRawView.d.ts +15 -0
  86. package/dist/panelRawView.d.ts.map +1 -0
  87. package/dist/panelRawView.js +105 -0
  88. package/dist/panelRawView.js.map +1 -0
  89. package/dist/panelResourcesView.d.ts +8 -0
  90. package/dist/panelResourcesView.d.ts.map +1 -1
  91. package/dist/panelResourcesView.js +62 -31
  92. package/dist/panelResourcesView.js.map +1 -1
  93. package/dist/panelSelection.d.ts +9 -1
  94. package/dist/panelSelection.d.ts.map +1 -1
  95. package/dist/panelSelection.js +34 -4
  96. package/dist/panelSelection.js.map +1 -1
  97. package/dist/panelTheme.d.ts +13 -0
  98. package/dist/panelTheme.d.ts.map +1 -0
  99. package/dist/panelTheme.js +104 -0
  100. package/dist/panelTheme.js.map +1 -0
  101. package/dist/panelTypes.d.ts +10 -1
  102. package/dist/panelTypes.d.ts.map +1 -1
  103. package/dist/panelTypes.js.map +1 -1
  104. package/dist/panelVisualTheme.d.ts +147 -50
  105. package/dist/panelVisualTheme.d.ts.map +1 -1
  106. package/dist/panelVisualTheme.js +34 -44
  107. package/dist/panelVisualTheme.js.map +1 -1
  108. package/dist/panelWorkbenchHelpers.d.ts +12 -1
  109. package/dist/panelWorkbenchHelpers.d.ts.map +1 -1
  110. package/dist/panelWorkbenchHelpers.js +62 -1
  111. package/dist/panelWorkbenchHelpers.js.map +1 -1
  112. package/dist/panelWorkbenchStyles.d.ts +2 -0
  113. package/dist/panelWorkbenchStyles.d.ts.map +1 -0
  114. package/dist/panelWorkbenchStyles.js +101 -0
  115. package/dist/panelWorkbenchStyles.js.map +1 -0
  116. package/dist/panelWorkbenchView.d.ts +16 -0
  117. package/dist/panelWorkbenchView.d.ts.map +1 -1
  118. package/dist/panelWorkbenchView.js +228 -50
  119. package/dist/panelWorkbenchView.js.map +1 -1
  120. package/dist/query.js.map +1 -1
  121. package/dist/styles.d.ts.map +1 -1
  122. package/dist/styles.js +147 -195
  123. package/dist/styles.js.map +1 -1
  124. package/dist/theme.d.ts +22 -0
  125. package/dist/theme.d.ts.map +1 -0
  126. package/dist/theme.js +10 -0
  127. package/dist/theme.js.map +1 -0
  128. package/dist/themeDefinitions.d.ts +251 -0
  129. package/dist/themeDefinitions.d.ts.map +1 -0
  130. package/dist/themeDefinitions.js +96 -0
  131. package/dist/themeDefinitions.js.map +1 -0
  132. package/dist/themePalette.d.ts +66 -0
  133. package/dist/themePalette.d.ts.map +1 -0
  134. package/dist/themePalette.js +37 -0
  135. package/dist/themePalette.js.map +1 -0
  136. package/dist/themes.css +165 -0
  137. package/package.json +44 -10
  138. package/src/FrameGraphInspector.ts +130 -31
  139. package/src/capture.ts +4 -0
  140. package/src/debugCaptureModel.ts +53 -2
  141. package/src/index.ts +6 -2
  142. package/src/panelAliasAnalysis.ts +24 -70
  143. package/src/panelCytoscapeGraphRenderer.ts +140 -23
  144. package/src/panelDetailLayout.ts +155 -0
  145. package/src/panelDetailStyles.ts +56 -0
  146. package/src/panelDiagnosticsView.ts +166 -85
  147. package/src/panelDomHelpers.ts +4 -5
  148. package/src/panelGraphLayout.ts +6 -5
  149. package/src/panelGraphRenderer.ts +7 -0
  150. package/src/panelGraphScene.ts +68 -30
  151. package/src/panelGraphSearch.ts +96 -0
  152. package/src/panelGraphView.ts +14 -4
  153. package/src/panelGraphVisuals.ts +122 -52
  154. package/src/panelInspectorView.ts +227 -48
  155. package/src/panelListStyles.ts +154 -0
  156. package/src/panelMemoryStyles.ts +41 -0
  157. package/src/panelMemoryView.ts +178 -53
  158. package/src/panelPassesView.ts +190 -137
  159. package/src/panelRawView.ts +99 -0
  160. package/src/panelResourcesView.ts +69 -56
  161. package/src/panelSelection.ts +37 -5
  162. package/src/panelTheme.ts +85 -0
  163. package/src/panelTypes.ts +7 -1
  164. package/src/panelVisualTheme.ts +38 -49
  165. package/src/panelWorkbenchHelpers.ts +60 -2
  166. package/src/panelWorkbenchStyles.ts +100 -0
  167. package/src/panelWorkbenchView.ts +201 -52
  168. package/src/query.ts +11 -11
  169. package/src/styles.ts +148 -195
  170. package/src/theme.ts +24 -0
  171. package/src/themeDefinitions.ts +103 -0
  172. package/src/themePalette.ts +44 -0
@@ -1 +1 @@
1
- {"version":3,"file":"panelWorkbenchView.js","sourceRoot":"","sources":["../src/panelWorkbenchView.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraphDebugViewModel } from './debugCaptureModel.ts';\nimport {\n\tformatBytes,\n\tformatGpuFrameDuration,\n\tformatPoolHitRate,\n\tlabelNode,\n} from './panelDomHelpers.ts';\nimport { createPanelIcon, setPanelButtonContent } from './panelIcons.ts';\nimport { DiagnosticsView } from './panelDiagnosticsView.ts';\nimport { InspectorView } from './panelInspectorView.ts';\nimport { MemoryView } from './panelMemoryView.ts';\nimport { PassesView } from './panelPassesView.ts';\nimport { ResourcesView } from './panelResourcesView.ts';\nimport { renderGraphView, resizeGraph } from './panelGraphView.ts';\nimport type { GraphViewState, Selection, WorkbenchTab } from './panelTypes.ts';\nimport { formatEstimatedBytes, type WorkbenchCallbacks } from './panelWorkbenchHelpers.ts';\n\nexport type FrameGraphDebugWorkbenchActions = {\n\tonCapture(): void;\n\tonImport(file: File): void;\n\tonDownload(): void;\n\tonCopyJson(): void;\n};\nexport type FrameGraphDebugWorkbenchOptions = {\n\tbranding: string | false;\n\tidPrefix: string;\n};\nexport type FrameGraphDebugEmptyStateKind = 'waiting' | 'capturing' | 'empty' | 'error';\n\n\nexport type FrameGraphDebugSnapshotActionState = {\n\tproviderAvailable: boolean;\n\thasCapture: boolean;\n\tcapturing: boolean;\n\timporting: boolean;\n\tcopying: boolean;\n\tcopied: boolean;\n\tmessage?: string;\n\tmessageTone?: 'neutral' | 'error';\n};\n\nexport class FrameGraphDebugWorkbench {\n\treadonly root = document.createElement('div');\n\tprivate readonly summary = document.createElement('div');\n\tprivate readonly commandBar = document.createElement('div');\n\tprivate readonly brand = document.createElement('div');\n\tprivate readonly tabList = document.createElement('div');\n\tprivate readonly commandActions = document.createElement('div');\n\tprivate readonly commandStatus = document.createElement('span');\n\tprivate readonly workspace = document.createElement('div');\n\tprivate readonly main = document.createElement('main');\n\tprivate readonly emptyHost = document.createElement('div');\n\tprivate readonly overviewRoot = document.createElement('section');\n\tprivate readonly graphRoot = document.createElement('section');\n\tprivate readonly passes: PassesView;\n\tprivate readonly resources: ResourcesView;\n\tprivate readonly memory: MemoryView;\n\tprivate readonly diagnostics: DiagnosticsView;\n\tprivate readonly inspector: InspectorView;\n\tprivate readonly inspectorOpenButton = document.createElement('button');\n\tprivate readonly captureButton = document.createElement('button');\n\tprivate readonly importButton = document.createElement('button');\n\tprivate readonly importInput = document.createElement('input');\n\tprivate readonly exportButton = document.createElement('button');\n\tprivate readonly exportMenu = document.createElement('div');\n\tprivate readonly downloadButton = document.createElement('button');\n\tprivate readonly copyButton = document.createElement('button');\n\tprivate readonly tabButtons = new Map<WorkbenchTab, HTMLButtonElement>();\n\tprivate readonly views = new Map<WorkbenchTab, HTMLElement>();\n\tprivate activeTab: WorkbenchTab = 'graph';\n\tprivate hasSnapshot = false;\n\tprivate snapshot: FrameGraphDebugViewModel | undefined;\n\tprivate selected: Selection | undefined;\n\tprivate hovered: Selection | undefined;\n\n\tconstructor(\n\t\tprivate readonly graphView: GraphViewState,\n\t\tprivate readonly callbacks: WorkbenchCallbacks,\n\t\tactions: FrameGraphDebugWorkbenchActions,\n\t\toptions: FrameGraphDebugWorkbenchOptions,\n\t) {\n\t\tthis.root.className = 'zenfg-inspector-workbench';\n\t\tthis.summary.className = 'zenfg-inspector-capture-summary';\n\t\tthis.commandBar.className = 'zenfg-inspector-workbench-command-bar';\n\t\tthis.brand.className = 'zenfg-inspector-brand';\n\t\tif (options.branding === false) this.commandBar.classList.add('branding-hidden');\n\t\telse this.brand.textContent = options.branding;\n\t\tthis.tabList.className = 'zenfg-inspector-workbench-tabs';\n\t\tthis.tabList.setAttribute('role', 'tablist');\n\t\tthis.tabList.setAttribute('aria-label', 'FrameGraph debug views');\n\t\tthis.commandActions.className = 'zenfg-inspector-workbench-actions';\n\t\tthis.commandActions.setAttribute('role', 'toolbar');\n\t\tthis.commandActions.setAttribute('aria-label', 'FrameGraph commands');\n\t\tthis.commandStatus.className = 'zenfg-inspector-command-status';\n\t\tthis.commandStatus.setAttribute('role', 'status');\n\t\tthis.commandStatus.setAttribute('aria-live', 'polite');\n\t\tthis.workspace.className = 'zenfg-inspector-workspace inspector-open';\n\t\tthis.main.className = 'zenfg-inspector-main';\n\t\tthis.emptyHost.className = 'zenfg-inspector-workbench-empty';\n\t\tthis.emptyHost.setAttribute('role', 'status');\n\t\tthis.emptyHost.setAttribute('aria-live', 'polite');\n\n\t\tthis.overviewRoot.className = 'zenfg-inspector-view zenfg-inspector-overview-view';\n\t\tthis.overviewRoot.id = `${options.idPrefix}-view-overview`;\n\t\tthis.overviewRoot.setAttribute('role', 'tabpanel');\n\t\tthis.overviewRoot.append(this.summary);\n\t\tthis.graphRoot.className = 'zenfg-inspector-view zenfg-inspector-graph-view';\n\t\tthis.graphRoot.id = `${options.idPrefix}-view-graph`;\n\t\tthis.graphRoot.setAttribute('role', 'tabpanel');\n\t\tthis.graphRoot.append(this.graphView.toolbar, this.graphView.host);\n\t\tthis.passes = new PassesView(callbacks, options.idPrefix);\n\t\tthis.resources = new ResourcesView(callbacks, options.idPrefix);\n\t\tthis.memory = new MemoryView(callbacks, options.idPrefix);\n\t\tthis.diagnostics = new DiagnosticsView(callbacks, options.idPrefix);\n\t\tthis.inspector = new InspectorView(callbacks, (open) => this.handleInspectorOpenChange(open), options.idPrefix);\n\n\t\tthis.views.set('overview', this.overviewRoot);\n\t\tthis.views.set('graph', this.graphRoot);\n\t\tthis.views.set('passes', this.passes.root);\n\t\tthis.views.set('resources', this.resources.root);\n\t\tthis.views.set('memory', this.memory.root);\n\t\tthis.views.set('diagnostics', this.diagnostics.root);\n\t\tfor (const [tab, label] of [\n\t\t\t['overview', 'Overview'],\n\t\t\t['graph', 'Graph'],\n\t\t\t['passes', 'Passes'],\n\t\t\t['resources', 'Resources'],\n\t\t\t['memory', 'Memory'],\n\t\t\t['diagnostics', 'Diagnostics'],\n\t\t] as const) {\n\t\t\tconst button = document.createElement('button');\n\t\t\tbutton.type = 'button';\n\t\t\tbutton.id = `${options.idPrefix}-tab-${tab}`;\n\t\t\tbutton.textContent = label;\n\t\t\tbutton.setAttribute('role', 'tab');\n\t\t\tbutton.setAttribute('aria-controls', `${options.idPrefix}-view-${tab}`);\n\t\t\tbutton.addEventListener('click', () => this.setActiveTab(tab));\n\t\t\tthis.tabButtons.set(tab, button);\n\t\t\tthis.tabList.appendChild(button);\n\t\t}\n\n\t\tthis.inspectorOpenButton.type = 'button';\n\t\tthis.inspectorOpenButton.hidden = true;\n\t\tthis.inspectorOpenButton.className = 'zenfg-inspector-open-inspector';\n\t\tsetPanelButtonContent(this.inspectorOpenButton, 'inspector', 'Inspector');\n\t\tthis.inspectorOpenButton.title = 'Open selection inspector';\n\t\tthis.inspectorOpenButton.addEventListener('click', () => this.inspector.setOpen(true));\n\n\t\tthis.captureButton.type = 'button';\n\t\tthis.captureButton.className = 'zenfg-inspector-capture-action';\n\t\tthis.captureButton.addEventListener('click', actions.onCapture);\n\t\tthis.importButton.type = 'button';\n\t\tthis.importButton.textContent = 'Import';\n\t\tthis.importButton.addEventListener('click', () => this.importInput.click());\n\t\tthis.importInput.type = 'file';\n\t\tthis.importInput.accept = '.fgsnapshot.json,.json,application/json';\n\t\tthis.importInput.hidden = true;\n\t\tthis.importInput.addEventListener('change', () => {\n\t\t\tconst file = this.importInput.files?.[0];\n\t\t\tthis.importInput.value = '';\n\t\t\tif (file) actions.onImport(file);\n\t\t});\n\t\tthis.exportButton.type = 'button';\n\t\tthis.exportButton.textContent = 'Export';\n\t\tthis.exportButton.setAttribute('aria-haspopup', 'menu');\n\t\tthis.exportButton.setAttribute('aria-expanded', 'false');\n\t\tthis.exportButton.setAttribute('aria-controls', `${options.idPrefix}-export-menu`);\n\t\tthis.exportButton.addEventListener('click', () => {\n\t\t\tthis.setExportMenuOpen(this.exportMenu.hidden !== false);\n\t\t});\n\t\tthis.exportMenu.className = 'zenfg-inspector-export-menu';\n\t\tthis.exportMenu.id = `${options.idPrefix}-export-menu`;\n\t\tthis.exportMenu.setAttribute('role', 'menu');\n\t\tthis.exportMenu.hidden = true;\n\t\tthis.downloadButton.type = 'button';\n\t\tthis.downloadButton.className = 'zenfg-inspector-download-action';\n\t\tsetPanelButtonContent(this.downloadButton, 'download', 'Download JSON');\n\t\tthis.downloadButton.setAttribute('role', 'menuitem');\n\t\tthis.downloadButton.addEventListener('click', () => {\n\t\t\tthis.setExportMenuOpen(false);\n\t\t\tactions.onDownload();\n\t\t});\n\t\tthis.copyButton.type = 'button';\n\t\tthis.copyButton.className = 'zenfg-inspector-copy-action';\n\t\tthis.copyButton.textContent = 'Copy JSON';\n\t\tthis.copyButton.setAttribute('role', 'menuitem');\n\t\tthis.copyButton.addEventListener('click', () => {\n\t\t\tthis.setExportMenuOpen(false);\n\t\t\tactions.onCopyJson();\n\t\t});\n\t\tthis.exportMenu.append(this.downloadButton, this.copyButton);\n\n\t\tthis.commandActions.append(\n\t\t\tthis.commandStatus,\n\t\t\tthis.inspectorOpenButton,\n\t\t\tthis.captureButton,\n\t\t\tthis.importButton,\n\t\t\tthis.exportButton,\n\t\t\tthis.importInput,\n\t\t);\n\t\tif (options.branding === false) this.commandBar.append(this.tabList, this.commandActions, this.exportMenu);\n\t\telse this.commandBar.append(this.brand, this.tabList, this.commandActions, this.exportMenu);\n\t\tthis.root.addEventListener('click', (event) => {\n\t\t\tconst target = event.target;\n\t\t\tif (!target || typeof (target as Node).nodeType !== 'number' || this.exportMenu.hidden) return;\n\t\t\tconst targetNode = target as Node;\n\t\t\tif (!this.exportButton.contains(targetNode) && !this.exportMenu.contains(targetNode)) this.setExportMenuOpen(false);\n\t\t});\n\t\tthis.root.addEventListener('keydown', (event) => {\n\t\t\tif (event.key !== 'Escape' || this.exportMenu.hidden) return;\n\t\t\tthis.setExportMenuOpen(false);\n\t\t\tthis.exportButton.focus();\n\t\t});\n\t\tthis.main.append(this.emptyHost, ...this.views.values());\n\t\tthis.workspace.append(this.main, this.inspector.root);\n\t\tthis.root.append(this.commandBar, this.workspace);\n\t\tthis.showEmptyState('empty', 'Drop a ZenFG Snapshot here or choose Import.', 'Files are processed locally in your browser.');\n\t\tthis.setSnapshotActionState({\n\t\t\tproviderAvailable: false,\n\t\t\thasCapture: false,\n\t\t\tcapturing: false,\n\t\t\timporting: false,\n\t\t\tcopying: false,\n\t\t\tcopied: false,\n\t\t});\n\t}\n\n\tsetSnapshot(snapshot: FrameGraphDebugViewModel, selected: Selection | undefined): void {\n\t\tthis.hasSnapshot = true;\n\t\tthis.snapshot = snapshot;\n\t\tthis.selected = selected;\n\t\tthis.hovered = undefined;\n\t\tthis.renderSummary(snapshot);\n\t\tthis.passes.setSnapshot(snapshot);\n\t\tthis.resources.setSnapshot(snapshot);\n\t\tthis.memory.setSnapshot(snapshot);\n\t\tthis.diagnostics.setSnapshot(snapshot);\n\t\tthis.inspector.setSnapshot(snapshot);\n\t\tthis.passes.setSelection(selected);\n\t\tthis.resources.setSelection(selected);\n\t\tthis.memory.setSelection(selected);\n\t\tthis.diagnostics.setSelection(selected);\n\t\tthis.inspector.setSelection(selected, false);\n\t\tthis.emptyHost.hidden = true;\n\t\tthis.updateActiveTab();\n\t\tthis.updateWorkspaceState();\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tshowEmptyState(kind: FrameGraphDebugEmptyStateKind, message: string, detail?: string): void {\n\t\tthis.hasSnapshot = false;\n\t\tthis.snapshot = undefined;\n\t\tthis.selected = undefined;\n\t\tthis.hovered = undefined;\n\t\tthis.emptyHost.hidden = false;\n\t\tthis.emptyHost.dataset.state = kind;\n\t\tconst icon = createPanelIcon(kind === 'capturing' ? 'spinner' : kind === 'error' ? 'error' : kind === 'waiting' ? 'waiting' : 'empty');\n\t\tconst label = document.createElement('span');\n\t\tlabel.className = 'zenfg-inspector-empty-message';\n\t\tlabel.textContent = message;\n\t\tconst detailLabel = document.createElement('span');\n\t\tdetailLabel.className = 'zenfg-inspector-empty-detail';\n\t\tdetailLabel.textContent = detail ?? '';\n\t\tthis.emptyHost.replaceChildren(icon, label, ...(detail ? [detailLabel] : []));\n\t\tthis.updateActiveTab();\n\t\tthis.updateWorkspaceState();\n\t}\n\n\tsetSnapshotActionState(state: FrameGraphDebugSnapshotActionState): void {\n\t\tconst captureLabel = state.capturing ? 'Capturing…' : 'Capture';\n\t\tsetPanelButtonContent(this.captureButton, state.capturing ? 'spinner' : 'capture', captureLabel);\n\t\tthis.captureButton.disabled = state.capturing || !state.providerAvailable;\n\t\tthis.captureButton.hidden = !state.providerAvailable;\n\t\tthis.captureButton.classList.toggle('active', state.capturing);\n\t\tthis.captureButton.setAttribute('aria-busy', state.capturing ? 'true' : 'false');\n\t\tthis.captureButton.dataset.tone = state.capturing ? 'pending' : 'accent';\n\t\tthis.captureButton.title = !state.providerAvailable\n\t\t\t? 'Waiting for a FrameGraph capture source.'\n\t\t\t: state.capturing\n\t\t\t\t? 'Capturing the next rendered frame.'\n\t\t\t\t: 'Capture and display the next rendered frame.';\n\n\t\tthis.importButton.textContent = state.importing ? 'Importing…' : 'Import';\n\t\tthis.importButton.disabled = state.importing;\n\t\tthis.importButton.setAttribute('aria-busy', state.importing ? 'true' : 'false');\n\t\tthis.exportButton.disabled = !state.hasCapture;\n\t\tthis.downloadButton.disabled = !state.hasCapture;\n\t\tif (!state.hasCapture) this.setExportMenuOpen(false);\n\n\t\tconst copyLabel = state.copying ? 'Copying…' : state.copied ? 'Copied' : 'Copy JSON';\n\t\tconst copyIcon = state.copying ? 'spinner' : state.copied ? 'check' : 'copy';\n\t\tsetPanelButtonContent(this.copyButton, copyIcon, copyLabel);\n\t\tthis.copyButton.disabled = !state.hasCapture || state.copying;\n\t\tthis.copyButton.classList.toggle('active', state.copying || state.copied);\n\t\tthis.copyButton.setAttribute('aria-busy', state.copying ? 'true' : 'false');\n\t\tthis.copyButton.dataset.tone = state.copied ? 'success' : state.copying ? 'pending' : 'neutral';\n\t\tthis.copyButton.title = state.hasCapture\n\t\t\t? 'Copy the current canonical FrameGraph Snapshot JSON.'\n\t\t\t: 'Load a snapshot before exporting.';\n\n\t\tthis.commandStatus.textContent = state.message ?? '';\n\t\tthis.commandStatus.hidden = !state.message;\n\t\tthis.commandStatus.dataset.tone = state.message ? state.messageTone ?? 'error' : 'neutral';\n\t\tif (state.message) this.commandStatus.title = state.message;\n\t\telse this.commandStatus.removeAttribute('title');\n\t}\r\n\n\tsetSelection(selected: Selection | undefined): void {\n\t\tthis.selected = selected;\n\t\tthis.passes.setSelection(selected);\n\t\tthis.resources.setSelection(selected);\n\t\tthis.memory.setSelection(selected);\n\t\tthis.diagnostics.setSelection(selected);\n\t\tthis.inspector.setSelection(selected);\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tsetHovered(hovered: Selection | undefined): void {\n\t\tthis.hovered = hovered;\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tsetActiveTab(tab: WorkbenchTab): void {\n\t\tif (this.activeTab === tab) return;\n\t\tthis.activeTab = tab;\n\t\tthis.updateActiveTab();\n\t\tif (tab === 'graph') {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\tresizeGraph(this.graphView);\n\t\t\t\tthis.renderGraph();\n\t\t\t});\n\t\t}\n\t}\n\n\trefreshGraphStructure(): void {\n\t\tif (!this.snapshot) return;\n\t\tthis.passes.setSnapshot(this.snapshot);\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tresizeGraph(fit = false): void {\n\t\tif (fit) this.graphView.fitOnNextRender = true;\n\t\twindow.requestAnimationFrame(() => {\n\t\t\tresizeGraph(this.graphView);\n\t\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t\t});\n\t}\n\n\tprivate updateActiveTab(): void {\n\t\tfor (const [tab, button] of this.tabButtons) {\n\t\t\tconst active = tab === this.activeTab;\n\t\t\tbutton.disabled = !this.hasSnapshot;\n\t\t\tbutton.classList.toggle('active', active);\n\t\t\tbutton.setAttribute('aria-selected', active ? 'true' : 'false');\n\t\t\tconst view = this.views.get(tab)!;\n\t\t\tview.hidden = !this.hasSnapshot || !active;\n\t\t\tview.setAttribute('aria-labelledby', button.id);\n\t\t}\n\t}\n\n\tprivate renderGraph(): void {\n\t\tif (!this.snapshot) return;\n\t\trenderGraphView(\n\t\t\tthis.graphView,\n\t\t\tthis.snapshot,\n\t\t\tthis.selected,\n\t\t\tthis.hovered,\n\t\t\tthis.callbacks.onSelect,\n\t\t\tthis.callbacks.onHover,\n\t\t\tthis.callbacks.onGroupToggle,\n\t\t);\n\t}\n\n\tprivate renderSummary(snapshot: FrameGraphDebugViewModel): void {\n\t\tconst frameGraphSegments = snapshot.executionSegments.filter((segment) => segment.kind === 'frame-graph').length;\n\t\tconst opaqueIntervals = snapshot.executionSegments.length - frameGraphSegments;\n\t\tconst metrics = snapshot.metrics;\n\t\tconst coverage = metrics.timingEligibleNodeCount === 0\n\t\t\t? 'No eligible passes'\n\t\t\t: `${metrics.timedNodeCount}/${metrics.timingEligibleNodeCount} timed`;\n\t\tconst slowest = metrics.slowestNode\n\t\t\t? `${labelNode(metrics.slowestNode)} · ${(metrics.slowestNode.gpuDurationMicros! / 1000).toFixed(3)} ms`\n\t\t\t: 'Unknown';\n\t\tconst protocol = snapshot.protocol;\n\t\tconst runtime = protocol.producer.runtime;\n\t\tconst producer = [\n\t\t\tprotocol.producer.name,\n\t\t\tprotocol.producer.version,\n\t\t\tprotocol.producer.language,\n\t\t].filter(Boolean).join(' · ');\n\t\tconst runtimeLabel = runtime\n\t\t\t? [runtime.implementation, runtime.graphicsApi, runtime.backend].filter(Boolean).join(' · ') || 'Unknown'\n\t\t\t: 'Unknown';\n\t\tconst poolRetained = snapshot.resourcePool.status === 'available'\n\t\t\t? `${snapshot.resourcePool.estimatedRetainedBytes === undefined ? 'Unknown' : formatBytes(snapshot.resourcePool.estimatedRetainedBytes)} · ${snapshot.resourcePool.retainedCount} allocations`\n\t\t\t: 'Unavailable';\n\t\tthis.summary.replaceChildren(\n\t\t\tthis.createSummaryGroup('Capture', [\n\t\t\t\t['Source', snapshot.source.label],\n\t\t\t\t['Schema', `${protocol.format} v${protocol.version.major}.${protocol.version.minor}`],\n\t\t\t\t['Producer', producer],\n\t\t\t\t['Runtime', runtimeLabel],\n\t\t\t\t['Frame', String(snapshot.frameIndex)],\n\t\t\t\t...(snapshot.source.migratedFromLegacy ? [['Migration', 'Legacy V0 → V1'] as const] : []),\n\t\t\t\t['Timing', snapshot.profiling.status === 'available' ? 'Available' : snapshot.profiling.reason],\n\t\t\t]),\n\t\t\tthis.createSummaryGroup('GPU', [\n\t\t\t\t['GPU Span', snapshot.profiling.status === 'available' ? `${formatGpuFrameDuration(snapshot)} ms` : 'Unknown'],\n\t\t\t\t['Coverage', coverage],\n\t\t\t\t['Slowest', slowest],\n\t\t\t]),\n\t\t\tthis.createSummaryGroup('Work', [\n\t\t\t\t['Nodes', `${snapshot.nodes.length} retained · ${snapshot.culledNodes.length} culled`],\n\t\t\t\t['Segments', `${frameGraphSegments} FG · ${opaqueIntervals} opaque`],\n\t\t\t\t['Groups', snapshot.availability.groups ? String(snapshot.debugGroups.length) : 'Unknown'],\n\t\t\t\t['Recording order', snapshot.availability.recordingOrder ? 'Available' : 'Unknown'],\n\t\t\t]),\n\t\t\tthis.createSummaryGroup('Resources', [\n\t\t\t\t['Logical / physical', `${snapshot.resources.length} / ${snapshot.physicalAllocations.length}`],\n\t\t\t\t['Texture views', snapshot.availability.textureViews ? String(snapshot.textureViewById.size) : 'Unknown'],\n\t\t\t\t['Access regions', snapshot.availability.accessRegions ? 'Available' : 'Unknown'],\n\t\t\t\t['Transient estimate', formatEstimatedBytes(metrics.transientEstimatedByteSize)],\n\t\t\t]),\n\t\t\tthis.createSummaryGroup('Pool', [\n\t\t\t\t['Retained', poolRetained],\n\t\t\t\t['Reuse', formatPoolHitRate(snapshot)],\n\t\t\t]),\n\t\t);\n\t}\n\n\tprivate createSummaryGroup(title: string, rows: readonly (readonly [string, string])[]): HTMLElement {\n\t\tconst group = document.createElement('section');\n\t\tconst heading = document.createElement('h2');\n\t\theading.textContent = title;\n\t\tgroup.appendChild(heading);\n\t\tfor (const [label, value] of rows) {\n\t\t\tconst row = document.createElement('div');\n\t\t\tconst term = document.createElement('span');\n\t\t\tterm.textContent = label;\n\t\t\tconst description = document.createElement('strong');\n\t\t\tdescription.textContent = value;\n\t\t\tdescription.title = value;\n\t\t\trow.append(term, description);\n\t\t\tgroup.appendChild(row);\n\t\t}\n\t\treturn group;\n\t}\n\n\tprivate setExportMenuOpen(open: boolean): void {\n\t\tthis.exportMenu.hidden = !open;\n\t\tthis.exportButton.setAttribute('aria-expanded', open ? 'true' : 'false');\n\t}\n\n\tprivate handleInspectorOpenChange(_open: boolean): void {\n\t\tthis.updateWorkspaceState();\n\t\tif (this.activeTab === 'graph') this.resizeGraph(false);\n\t}\n\n\tprivate updateWorkspaceState(): void {\n\t\tconst inspectorOpen = this.hasSnapshot && this.inspector.isOpen;\n\t\tthis.workspace.classList.toggle('has-capture', this.hasSnapshot);\n\t\tthis.workspace.classList.toggle('inspector-open', inspectorOpen);\n\t\tthis.inspector.root.classList.toggle('unavailable', !this.hasSnapshot);\n\t\tthis.inspectorOpenButton.hidden = !this.hasSnapshot || inspectorOpen;\n\t}\n}\n"]}
1
+ {"version":3,"file":"panelWorkbenchView.js","sourceRoot":"","sources":["../src/panelWorkbenchView.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,SAAS,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAA2B,MAAM,4BAA4B,CAAC;AA0B5J,MAAM,OAAO,wBAAwB;IA0ClB;IACA;IA1CT,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAa;IACnB,SAAS,CAAgB;IACzB,MAAM,CAAa;IACnB,WAAW,CAAkB;IAC7B,SAAS,CAAgB;IACzB,YAAY,CAAe;IAC3B,WAAW,CAAc;IACzB,UAAU,GAAG,IAAI,GAAG,EAAgB,CAAC;IACrC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACnD,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvD,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC9C,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;IACxD,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IACtD,SAAS,GAAiB,OAAO,CAAC;IAClC,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAuC;IAC/C,QAAQ,CAAwB;IAChC,OAAO,CAAwB;IAC/B,SAAS,GAAG,KAAK,CAAC;IAE1B,YACkB,SAAyB,EACzB,SAA6B,EAC9C,OAAwC,EACxC,OAAwC;QAHvB,cAAS,GAAT,SAAS,CAAgB;QACzB,cAAS,GAAT,SAAS,CAAoB;QAI9C,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,2BAA2B,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,iCAAiC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,uCAAuC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,uBAAuB,CAAC;QAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;;YAC5E,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gCAAgC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;QAClE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,mCAAmC,CAAC;QACpE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,gCAAgC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,iCAAiC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,oDAAoD,CAAC;QACnF,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,gBAAgB,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,iDAAiD,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,aAAa,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,aAAa,CAAC,SAAS,GAAG,gCAAgC,CAAC;QAC3D,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,CAAC,SAAS,GAAG,gCAAgC,CAAC;YACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAChD,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChH,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,eAAe,CAAC,CAAC;QAChI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI;YAC1B,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACpB,CAAC,WAAW,EAAE,WAAW,CAAC;YAC1B,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACpB,CAAC,aAAa,EAAE,aAAa,CAAC;SACrB,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,QAAQ,GAAG,EAAE,CAAC;YAC7C,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3B,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,QAAQ,SAAS,GAAG,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,QAAQ,CAAC;QACzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,gCAAgC,CAAC;QACtE,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,0BAA0B,CAAC;QAC5D,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,gCAAgC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,QAAQ,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,yCAAyC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,IAAI,IAAI;gBAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,QAAQ,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,QAAQ,cAAc,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAChD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,6BAA6B,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,cAAc,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,iCAAiC,CAAC;QAClE,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACxE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAClD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,6BAA6B,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,CAAC,cAAc,CAAC,MAAM,CACzB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,CAChB,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;YACtG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5F,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,MAAM,IAAI,OAAQ,MAAe,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,OAAO;YAC/F,MAAM,UAAU,GAAG,MAAc,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACrH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,0BAA0B,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,8CAA8C,EAAE,8CAA8C,CAAC,CAAC;QAC7H,IAAI,CAAC,sBAAsB,CAAC;YAC3B,iBAAiB,EAAE,KAAK;YACxB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACb,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAAkC,EAAE,QAA+B;QAC9E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,IAAmC,EAAE,OAAe,EAAE,MAAe;QACnF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvI,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,SAAS,GAAG,+BAA+B,CAAC;QAClD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;QAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,WAAW,CAAC,SAAS,GAAG,8BAA8B,CAAC;QACvD,WAAW,CAAC,WAAW,GAAG,MAAM,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,KAAyC;QAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC1E,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACzE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,iBAAiB;YAClD,CAAC,CAAC,0CAA0C;YAC5C,CAAC,CAAC,KAAK,CAAC,SAAS;gBAChB,CAAC,CAAC,oCAAoC;gBACtC,CAAC,CAAC,8CAA8C,CAAC;QAEnD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAErD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;QACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7E,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU;YACvC,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,mCAAmC,CAAC;QAEvC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,IAAI,KAAK,CAAC,OAAO;YAAE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;;YACvD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/J,CAAC;IAED,YAAY,CAAC,QAA+B;QAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,OAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,YAAY,CAAC,GAAiB;QAC7B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG;YAAE,OAAO;QACnC,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;gBACjC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;oBAAE,OAAO;gBACzD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,qBAAqB;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,WAAW,CAAC,GAAG,GAAG,KAAK;QACtB,IAAI,GAAG;YAAE,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;QAC/C,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;YACjC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC3B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;gBAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,eAAe;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC;YACtC,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,eAAe,CACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5B,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,QAAkC;QACvD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;QACjH,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,kBAAkB,CAAC;QAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC/F,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW;YAClC,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAkB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACxG,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1C,MAAM,QAAQ,GAAG;YAChB,QAAQ,CAAC,QAAQ,CAAC,IAAI;YACtB,QAAQ,CAAC,QAAQ,CAAC,OAAO;YACzB,QAAQ,CAAC,QAAQ,CAAC,QAAQ;SAC1B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,OAAO;YAC3B,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS;YACzG,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,WAAW;YAChE,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,aAAa,cAAc;YAC9L,CAAC,CAAC,aAAa,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,eAAe,CAC3B,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;YACtC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5G,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,EAC1C,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;YAC3C,CAAC,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;YAC3J,CAAC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;YAC3I,CAAC,cAAc,EAAE,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjG,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;YACpH,CAAC,cAAc,EAAE,QAAQ,CAAC;YAC1B,CAAC,kBAAkB,EAAE,OAAO,CAAC;SAC7B,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAC/I,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;YAC/B,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,eAAe,QAAQ,CAAC,WAAW,CAAC,MAAM,SAAS,CAAC;YACtF,CAAC,UAAU,EAAE,GAAG,kBAAkB,SAAS,eAAe,SAAS,CAAC;YACpE,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1F,CAAC,iBAAiB,EAAE,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;SACnF,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EACrC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;YACpC,CAAC,oBAAoB,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,MAAM,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YACzK,CAAC,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,OAAO,CAAC,0BAA0B,EAAE,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;SACvH,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EACxC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;YAC3C,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9L,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;SACxI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EACrC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;YAC/B,CAAC,UAAU,EAAE,YAAY,CAAC;YAC1B,CAAC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;SACtC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CACrC,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAChD,KAAK,CAAC,WAAW,GAAG,qBAAqB,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,iCAAiC,CAAC;QAClE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAC7E,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzE,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;YACzD,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrF,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;YACjD,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,iBAAiB,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9K,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;SAC5F,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAEO,kBAAkB,CAAC,KAAa,EAAE,IAA4C,EAAE,UAAuB;QAC9G,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACrD,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC;YAChC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC9B,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,SAAS,GAAG,iCAAiC,CAAC;YACrD,MAAM,CAAC,WAAW,GAAG,WAAW,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACtD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,IAAa;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,IAAI;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IAEO,yBAAyB,CAAC,KAAc;QAC/C,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;YAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEO,oBAAoB;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC;QACjG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC;QACxH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,SAAoB,EAAE,GAAiB;QAC7C,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,4BAA4B,EAAE,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAC/C,IAAI,GAAG,KAAK,WAAW;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAC1D,IAAI,GAAG,KAAK,QAAQ;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACpD,IAAI,GAAG,KAAK,aAAa;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,GAAG,KAAK,OAAO;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,GAAiB,EAAE,MAAiB;QAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;YAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,mBAAmB,CAAC,OAAe,EAAE,SAAoB;QACxD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,4BAA4B,CAAC;QAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,SAAS,GAAG,iCAAiC,CAAC;QACrD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ;YACnG,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxF,MAAM,CAAC,WAAW,GAAG,WAAW,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,KAAW,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAE/D,gBAAgB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxB,KAAK,UAAU;oBAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAAC,MAAM;gBACrD,KAAK,QAAQ;oBAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAAC,MAAM;gBACxD,KAAK,WAAW;oBAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAAC,MAAM;gBAC9D,KAAK,QAAQ;oBAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAAC,MAAM;gBACxD,KAAK,aAAa;oBAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAAC,MAAM;YACnE,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAEO,qBAAqB;QAC5B,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,WAAW;gBAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM;YACpE,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,aAAa;gBAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM;QACzE,CAAC;IACF,CAAC;IAEO,gBAAgB,CAAC,QAAkC;QAC1D,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW;YAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,qBAAqB,CAAC,QAAkC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,WAAW,GAAG,aAAa,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,SAAS,GAAG,kCAAkC,CAAC;QACrD,KAAK,CAAC,WAAW,GAAG,GAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1D,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,OAAO,WAAW,CAAC;QACnE,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1C,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACzB,CAAC;IAEO,aAAa,CAAC,KAAoB;QACzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QAC7D,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;YAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1D,CAAC;aAAM,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACxE,KAAK,CAAC,cAAc,EAAE,CAAC;YAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAkC,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC7E,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QACtB,CAAC;IACF,CAAC;CACD","sourcesContent":["import type { FrameGraphDebugViewModel } from './debugCaptureModel.ts';\nimport {\n\tformatBytes,\n\tformatGpuFrameDuration,\n\tformatPoolHitRate,\n\tlabelNode,\n} from './panelDomHelpers.ts';\nimport { createPanelIcon, setPanelButtonContent } from './panelIcons.ts';\nimport { DiagnosticsView } from './panelDiagnosticsView.ts';\nimport { InspectorView } from './panelInspectorView.ts';\nimport { MemoryView } from './panelMemoryView.ts';\nimport { PassesView } from './panelPassesView.ts';\nimport { ResourcesView } from './panelResourcesView.ts';\nimport { renderGraphView, resizeGraph } from './panelGraphView.ts';\nimport { DetailLayout } from './panelDetailLayout.ts';\nimport { GraphSearch } from './panelGraphSearch.ts';\nimport type { GraphViewState, Selection, WorkbenchTab } from './panelTypes.ts';\nimport { enableTabKeyboard, formatEstimatedBytes, formatEstimateCoverage, formatTimingCoverage, type WorkbenchCallbacks } from './panelWorkbenchHelpers.ts';\n\nexport type FrameGraphDebugWorkbenchActions = {\n\tonCapture(): void;\n\tonImport(file: File): void;\n\tonDownload(): void;\n\tonCopyJson(): void;\n};\nexport type FrameGraphDebugWorkbenchOptions = {\n\tbranding: string | false;\n\tidPrefix: string;\n};\nexport type FrameGraphDebugEmptyStateKind = 'waiting' | 'capturing' | 'empty' | 'error';\n\n\nexport type FrameGraphDebugSnapshotActionState = {\n\tproviderAvailable: boolean;\n\thasCapture: boolean;\n\tcapturing: boolean;\n\timporting: boolean;\n\tcopying: boolean;\n\tcopied: boolean;\n\tmessage?: string;\n\tmessageTone?: 'neutral' | 'error';\n};\n\nexport class FrameGraphDebugWorkbench {\n\treadonly root = document.createElement('div');\n\tprivate readonly summary = document.createElement('div');\n\tprivate readonly commandBar = document.createElement('div');\n\tprivate readonly brand = document.createElement('div');\n\tprivate readonly tabList = document.createElement('div');\n\tprivate readonly commandActions = document.createElement('div');\n\tprivate readonly commandStatus = document.createElement('span');\n\tprivate readonly feedback = document.createElement('details');\n\tprivate readonly feedbackTitle = document.createElement('summary');\n\tprivate readonly workspace = document.createElement('div');\n\tprivate readonly main = document.createElement('main');\n\tprivate readonly emptyHost = document.createElement('div');\n\tprivate readonly overviewRoot = document.createElement('section');\n\tprivate readonly graphRoot = document.createElement('section');\n\tprivate readonly passes: PassesView;\n\tprivate readonly resources: ResourcesView;\n\tprivate readonly memory: MemoryView;\n\tprivate readonly diagnostics: DiagnosticsView;\n\tprivate readonly inspector: InspectorView;\n\tprivate readonly detailLayout: DetailLayout;\n\tprivate readonly graphSearch: GraphSearch;\n\tprivate readonly dirtyViews = new Set<WorkbenchTab>();\n\tprivate readonly captureDetails = document.createElement('details');\n\tprivate readonly inspectorOpenButton = document.createElement('button');\n\tprivate readonly captureButton = document.createElement('button');\n\tprivate readonly importButton = document.createElement('button');\n\tprivate readonly importInput = document.createElement('input');\n\tprivate readonly exportButton = document.createElement('button');\n\tprivate readonly exportMenu = document.createElement('div');\n\tprivate readonly downloadButton = document.createElement('button');\n\tprivate readonly copyButton = document.createElement('button');\n\tprivate readonly tabButtons = new Map<WorkbenchTab, HTMLButtonElement>();\n\tprivate readonly views = new Map<WorkbenchTab, HTMLElement>();\n\tprivate activeTab: WorkbenchTab = 'graph';\n\tprivate hasSnapshot = false;\n\tprivate snapshot: FrameGraphDebugViewModel | undefined;\n\tprivate selected: Selection | undefined;\n\tprivate hovered: Selection | undefined;\n\tprivate destroyed = false;\n\n\tconstructor(\n\t\tprivate readonly graphView: GraphViewState,\n\t\tprivate readonly callbacks: WorkbenchCallbacks,\n\t\tactions: FrameGraphDebugWorkbenchActions,\n\t\toptions: FrameGraphDebugWorkbenchOptions,\n\t) {\n\t\tthis.root.className = 'zenfg-inspector-workbench';\n\t\tthis.summary.className = 'zenfg-inspector-capture-summary';\n\t\tthis.commandBar.className = 'zenfg-inspector-workbench-command-bar';\n\t\tthis.brand.className = 'zenfg-inspector-brand';\n\t\tif (options.branding === false) this.commandBar.classList.add('branding-hidden');\n\t\telse this.brand.textContent = options.branding;\n\t\tthis.tabList.className = 'zenfg-inspector-workbench-tabs';\n\t\tthis.tabList.setAttribute('role', 'tablist');\n\t\tthis.tabList.setAttribute('aria-label', 'FrameGraph debug views');\n\t\tthis.commandActions.className = 'zenfg-inspector-workbench-actions';\n\t\tthis.commandActions.setAttribute('role', 'toolbar');\n\t\tthis.commandActions.setAttribute('aria-label', 'FrameGraph commands');\n\t\tthis.commandStatus.className = 'zenfg-inspector-command-status';\n\t\tthis.commandStatus.setAttribute('role', 'status');\n\t\tthis.commandStatus.setAttribute('aria-live', 'polite');\n\t\tthis.workspace.className = 'zenfg-inspector-workspace';\n\t\tthis.main.className = 'zenfg-inspector-main';\n\t\tthis.emptyHost.className = 'zenfg-inspector-workbench-empty';\n\t\tthis.emptyHost.setAttribute('role', 'status');\n\t\tthis.emptyHost.setAttribute('aria-live', 'polite');\n\n\t\tthis.overviewRoot.className = 'zenfg-inspector-view zenfg-inspector-overview-view';\n\t\tthis.overviewRoot.id = `${options.idPrefix}-view-overview`;\n\t\tthis.overviewRoot.setAttribute('role', 'tabpanel');\n\t\tthis.overviewRoot.append(this.summary);\n\t\tthis.graphRoot.className = 'zenfg-inspector-view zenfg-inspector-graph-view';\n\t\tthis.graphRoot.id = `${options.idPrefix}-view-graph`;\n\t\tthis.graphRoot.setAttribute('role', 'tabpanel');\n\t\tconst graphViewport = document.createElement('div');\n\t\tgraphViewport.className = 'zenfg-inspector-graph-viewport';\n\t\tgraphViewport.append(this.graphView.host, this.graphView.toolbar);\n\t\tif (this.graphView.legend) {\n\t\t\tconst legend = document.createElement('details');\n\t\t\tlegend.className = 'zenfg-inspector-legend-details';\n\t\t\tconst title = document.createElement('summary');\n\t\t\ttitle.textContent = 'Legend';\n\t\t\tlegend.append(title, this.graphView.legend);\n\t\t\tgraphViewport.append(legend);\n\t\t}\n\t\tthis.graphRoot.append(graphViewport);\n\t\tthis.passes = new PassesView(callbacks, options.idPrefix);\n\t\tthis.resources = new ResourcesView(callbacks, options.idPrefix);\n\t\tthis.memory = new MemoryView(callbacks, options.idPrefix);\n\t\tthis.diagnostics = new DiagnosticsView(callbacks, options.idPrefix);\n\t\tthis.inspector = new InspectorView(callbacks, (open) => this.handleInspectorOpenChange(open), options.idPrefix);\n\t\tthis.graphSearch = new GraphSearch((selection) => callbacks.onReveal?.(selection, 'graph'), `${options.idPrefix}-graph-search`);\n\t\tthis.graphView.toolbar.prepend(this.graphSearch.root);\n\n\t\tthis.views.set('overview', this.overviewRoot);\n\t\tthis.views.set('graph', this.graphRoot);\n\t\tthis.views.set('passes', this.passes.root);\n\t\tthis.views.set('resources', this.resources.root);\n\t\tthis.views.set('memory', this.memory.root);\n\t\tthis.views.set('diagnostics', this.diagnostics.root);\n\t\tfor (const [tab, label] of [\n\t\t\t['overview', 'Overview'],\n\t\t\t['graph', 'Graph'],\n\t\t\t['passes', 'Passes'],\n\t\t\t['resources', 'Resources'],\n\t\t\t['memory', 'Memory'],\n\t\t\t['diagnostics', 'Diagnostics'],\n\t\t] as const) {\n\t\t\tconst button = document.createElement('button');\n\t\t\tbutton.type = 'button';\n\t\t\tbutton.id = `${options.idPrefix}-tab-${tab}`;\n\t\t\tbutton.textContent = label;\n\t\t\tbutton.setAttribute('role', 'tab');\n\t\t\tbutton.setAttribute('aria-controls', `${options.idPrefix}-view-${tab}`);\n\t\t\tbutton.addEventListener('click', () => this.setActiveTab(tab));\n\t\t\tthis.tabButtons.set(tab, button);\n\t\t\tthis.tabList.appendChild(button);\n\t\t}\n\t\tenableTabKeyboard(this.tabList);\n\n\t\tthis.inspectorOpenButton.type = 'button';\n\t\tthis.inspectorOpenButton.hidden = true;\n\t\tthis.inspectorOpenButton.className = 'zenfg-inspector-open-inspector';\n\t\tsetPanelButtonContent(this.inspectorOpenButton, 'inspector', 'Inspector');\n\t\tthis.inspectorOpenButton.title = 'Open selection inspector';\n\t\tthis.inspectorOpenButton.addEventListener('click', () => this.inspector.setOpen(true));\n\n\t\tthis.captureButton.type = 'button';\n\t\tthis.captureButton.className = 'zenfg-inspector-capture-action';\n\t\tthis.captureButton.addEventListener('click', actions.onCapture);\n\t\tthis.importButton.type = 'button';\n\t\tthis.importButton.textContent = 'Import';\n\t\tthis.importButton.addEventListener('click', () => this.importInput.click());\n\t\tthis.importInput.type = 'file';\n\t\tthis.importInput.accept = '.fgsnapshot.json,.json,application/json';\n\t\tthis.importInput.hidden = true;\n\t\tthis.importInput.addEventListener('change', () => {\n\t\t\tconst file = this.importInput.files?.[0];\n\t\t\tthis.importInput.value = '';\n\t\t\tif (file) actions.onImport(file);\n\t\t});\n\t\tthis.exportButton.type = 'button';\n\t\tthis.exportButton.textContent = 'Export';\n\t\tthis.exportButton.setAttribute('aria-haspopup', 'menu');\n\t\tthis.exportButton.setAttribute('aria-expanded', 'false');\n\t\tthis.exportButton.setAttribute('aria-controls', `${options.idPrefix}-export-menu`);\n\t\tthis.exportButton.addEventListener('click', () => {\n\t\t\tthis.setExportMenuOpen(this.exportMenu.hidden !== false);\n\t\t});\n\t\tthis.exportMenu.className = 'zenfg-inspector-export-menu';\n\t\tthis.exportMenu.id = `${options.idPrefix}-export-menu`;\n\t\tthis.exportMenu.setAttribute('role', 'menu');\n\t\tthis.exportMenu.hidden = true;\n\t\tthis.downloadButton.type = 'button';\n\t\tthis.downloadButton.className = 'zenfg-inspector-download-action';\n\t\tsetPanelButtonContent(this.downloadButton, 'download', 'Download JSON');\n\t\tthis.downloadButton.setAttribute('role', 'menuitem');\n\t\tthis.downloadButton.addEventListener('click', () => {\n\t\t\tthis.setExportMenuOpen(false);\n\t\t\tactions.onDownload();\n\t\t});\n\t\tthis.copyButton.type = 'button';\n\t\tthis.copyButton.className = 'zenfg-inspector-copy-action';\n\t\tthis.copyButton.textContent = 'Copy JSON';\n\t\tthis.copyButton.setAttribute('role', 'menuitem');\n\t\tthis.copyButton.addEventListener('click', () => {\n\t\t\tthis.setExportMenuOpen(false);\n\t\t\tactions.onCopyJson();\n\t\t});\n\t\tthis.exportMenu.append(this.downloadButton, this.copyButton);\n\n\t\tthis.commandActions.append(\n\t\t\tthis.inspectorOpenButton,\n\t\t\tthis.captureButton,\n\t\t\tthis.importButton,\n\t\t\tthis.exportButton,\n\t\t\tthis.importInput,\n\t\t);\n\t\tif (options.branding === false) this.commandBar.append(this.tabList, this.commandActions, this.exportMenu);\n\t\telse this.commandBar.append(this.brand, this.tabList, this.commandActions, this.exportMenu);\n\t\tthis.root.addEventListener('click', (event) => {\n\t\t\tconst target = event.target;\n\t\t\tif (!target || typeof (target as Node).nodeType !== 'number' || this.exportMenu.hidden) return;\n\t\t\tconst targetNode = target as Node;\n\t\t\tif (!this.exportButton.contains(targetNode) && !this.exportMenu.contains(targetNode)) this.setExportMenuOpen(false);\n\t\t});\n\t\tthis.root.addEventListener('keydown', (event) => this.handleMenuKey(event));\n\t\tthis.main.append(this.emptyHost, ...this.views.values());\n\t\tthis.workspace.append(this.main, this.inspector.root);\n\t\tthis.feedback.className = 'zenfg-inspector-feedback';\n\t\tthis.feedback.hidden = true;\n\t\tthis.feedback.append(this.feedbackTitle, this.commandStatus);\n\t\tthis.root.append(this.commandBar, this.feedback, this.workspace);\n\t\tthis.detailLayout = new DetailLayout(this.workspace, this.main, this.inspector.root, this.commandBar, () => this.inspector.setOpen(false));\n\t\tthis.workspace.addEventListener('detail-layout-change', () => this.resizeGraph());\n\t\tthis.showEmptyState('empty', 'Drop a ZenFG Snapshot here or choose Import.', 'Files are processed locally in your browser.');\n\t\tthis.setSnapshotActionState({\n\t\t\tproviderAvailable: false,\n\t\t\thasCapture: false,\n\t\t\tcapturing: false,\n\t\t\timporting: false,\n\t\t\tcopying: false,\n\t\t\tcopied: false,\n\t\t});\n\t}\n\n\tsetSnapshot(snapshot: FrameGraphDebugViewModel, selected: Selection | undefined): void {\n\t\tthis.hasSnapshot = true;\n\t\tthis.snapshot = snapshot;\n\t\tthis.selected = selected;\n\t\tthis.hovered = undefined;\n\t\tfor (const tab of this.views.keys()) this.dirtyViews.add(tab);\n\t\tthis.renderDiagnosticBadge(snapshot);\n\t\tthis.graphSearch.setSnapshot(snapshot);\n\t\tthis.inspector.setSnapshot(snapshot);\n\t\tthis.inspector.setSelection(selected, false);\n\t\tthis.emptyHost.hidden = true;\n\t\tthis.ensureActiveView();\n\t\tthis.updateActiveTab();\n\t\tthis.updateWorkspaceState();\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tshowEmptyState(kind: FrameGraphDebugEmptyStateKind, message: string, detail?: string): void {\n\t\tthis.hasSnapshot = false;\n\t\tthis.snapshot = undefined;\n\t\tthis.selected = undefined;\n\t\tthis.hovered = undefined;\n\t\tthis.emptyHost.hidden = false;\n\t\tthis.emptyHost.dataset.state = kind;\n\t\tconst icon = createPanelIcon(kind === 'capturing' ? 'spinner' : kind === 'error' ? 'error' : kind === 'waiting' ? 'waiting' : 'empty');\n\t\tconst label = document.createElement('span');\n\t\tlabel.className = 'zenfg-inspector-empty-message';\n\t\tlabel.textContent = message;\n\t\tconst detailLabel = document.createElement('span');\n\t\tdetailLabel.className = 'zenfg-inspector-empty-detail';\n\t\tdetailLabel.textContent = detail ?? '';\n\t\tthis.emptyHost.replaceChildren(icon, label, ...(detail ? [detailLabel] : []));\n\t\tthis.updateActiveTab();\n\t\tthis.updateWorkspaceState();\n\t}\n\n\tsetSnapshotActionState(state: FrameGraphDebugSnapshotActionState): void {\n\t\tconst captureLabel = state.capturing ? 'Capturing…' : 'Capture';\n\t\tsetPanelButtonContent(this.captureButton, state.capturing ? 'spinner' : 'capture', captureLabel);\n\t\tthis.captureButton.disabled = state.capturing || !state.providerAvailable;\n\t\tthis.captureButton.hidden = !state.providerAvailable;\n\t\tthis.captureButton.classList.toggle('active', state.capturing);\n\t\tthis.captureButton.setAttribute('aria-busy', state.capturing ? 'true' : 'false');\n\t\tthis.captureButton.dataset.tone = state.capturing ? 'pending' : 'accent';\n\t\tthis.captureButton.title = !state.providerAvailable\n\t\t\t? 'Waiting for a FrameGraph capture source.'\n\t\t\t: state.capturing\n\t\t\t\t? 'Capturing the next rendered frame.'\n\t\t\t\t: 'Capture and display the next rendered frame.';\n\n\t\tthis.importButton.textContent = state.importing ? 'Importing…' : 'Import';\n\t\tthis.importButton.disabled = state.importing;\n\t\tthis.importButton.setAttribute('aria-busy', state.importing ? 'true' : 'false');\n\t\tthis.exportButton.disabled = !state.hasCapture;\n\t\tthis.downloadButton.disabled = !state.hasCapture;\n\t\tif (!state.hasCapture) this.setExportMenuOpen(false);\n\n\t\tconst copyLabel = state.copying ? 'Copying…' : state.copied ? 'Copied' : 'Copy JSON';\n\t\tconst copyIcon = state.copying ? 'spinner' : state.copied ? 'check' : 'copy';\n\t\tsetPanelButtonContent(this.copyButton, copyIcon, copyLabel);\n\t\tthis.copyButton.disabled = !state.hasCapture || state.copying;\n\t\tthis.copyButton.classList.toggle('active', state.copying || state.copied);\n\t\tthis.copyButton.setAttribute('aria-busy', state.copying ? 'true' : 'false');\n\t\tthis.copyButton.dataset.tone = state.copied ? 'success' : state.copying ? 'pending' : 'neutral';\n\t\tthis.copyButton.title = state.hasCapture\n\t\t\t? 'Copy the current canonical FrameGraph Snapshot JSON.'\n\t\t\t: 'Load a snapshot before exporting.';\n\n\t\tthis.commandStatus.textContent = state.message ?? '';\n\t\tthis.commandStatus.hidden = !state.message;\n\t\tthis.commandStatus.dataset.tone = state.message ? state.messageTone ?? 'error' : 'neutral';\n\t\tif (state.message) this.commandStatus.title = state.message;\n\t\telse this.commandStatus.removeAttribute('title');\n\t\tthis.feedback.hidden = !state.message;\n\t\tthis.feedback.dataset.tone = state.messageTone ?? 'neutral';\n\t\tthis.feedbackTitle.textContent = state.message ? state.messageTone === 'error' ? 'Operation failed · show details' : 'Operation feedback · show details' : '';\n\t}\n\n\tsetSelection(selected: Selection | undefined): void {\n\t\tthis.selected = selected;\n\t\tthis.updateActiveSelection();\n\t\tthis.inspector.setSelection(selected);\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tsetHovered(hovered: Selection | undefined): void {\n\t\tthis.hovered = hovered;\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tsetActiveTab(tab: WorkbenchTab): void {\n\t\tif (this.destroyed) return;\n\t\tif (this.activeTab === tab) return;\n\t\tif (this.activeTab === 'graph') {\n\t\t\tthis.graphView.revealOnNextRender = undefined;\n\t\t\tthis.graphView.renderer?.cancelReveal?.();\n\t\t}\n\t\tthis.activeTab = tab;\n\t\tthis.updateActiveTab();\n\t\tthis.ensureActiveView();\n\t\tthis.updateWorkspaceState();\n\t\tif (tab === 'graph') {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\tif (this.destroyed || this.activeTab !== 'graph') return;\n\t\t\t\tresizeGraph(this.graphView);\n\t\t\t\tthis.renderGraph();\n\t\t\t});\n\t\t}\n\t}\n\n\trefreshGraphStructure(): void {\n\t\tif (!this.snapshot) return;\n\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t}\n\n\tresizeGraph(fit = false): void {\n\t\tif (fit) this.graphView.fitOnNextRender = true;\n\t\twindow.requestAnimationFrame(() => {\n\t\t\tif (this.destroyed) return;\n\t\t\tresizeGraph(this.graphView);\n\t\t\tif (this.activeTab === 'graph') this.renderGraph();\n\t\t});\n\t}\n\n\tprivate updateActiveTab(): void {\n\t\tfor (const [tab, button] of this.tabButtons) {\n\t\t\tconst active = tab === this.activeTab;\n\t\t\tbutton.disabled = !this.hasSnapshot;\n\t\t\tbutton.classList.toggle('active', active);\n\t\t\tbutton.setAttribute('aria-selected', active ? 'true' : 'false');\n\t\t\tbutton.tabIndex = active ? 0 : -1;\n\t\t\tconst view = this.views.get(tab)!;\n\t\t\tview.hidden = !this.hasSnapshot || !active;\n\t\t\tview.setAttribute('aria-labelledby', button.id);\n\t\t}\n\t}\n\n\tprivate renderGraph(): void {\n\t\tif (!this.snapshot) return;\n\t\trenderGraphView(\n\t\t\tthis.graphView,\n\t\t\tthis.snapshot,\n\t\t\tthis.selected,\n\t\t\tthis.hovered,\n\t\t\tthis.callbacks.onSelect,\n\t\t\tthis.callbacks.onHover,\n\t\t\tthis.callbacks.onGroupToggle,\n\t\t);\n\t}\n\n\tprivate renderSummary(snapshot: FrameGraphDebugViewModel): void {\n\t\tconst frameGraphSegments = snapshot.executionSegments.filter((segment) => segment.kind === 'frame-graph').length;\n\t\tconst opaqueIntervals = snapshot.executionSegments.length - frameGraphSegments;\n\t\tconst metrics = snapshot.metrics;\n\t\tconst coverage = formatTimingCoverage(metrics.timedNodeCount, metrics.timingEligibleNodeCount);\n\t\tconst slowest = metrics.slowestNode\n\t\t\t? `${labelNode(metrics.slowestNode)} · ${(metrics.slowestNode.gpuDurationMicros! / 1000).toFixed(3)} ms`\n\t\t\t: 'Unknown';\n\t\tconst protocol = snapshot.protocol;\n\t\tconst runtime = protocol.producer.runtime;\n\t\tconst producer = [\n\t\t\tprotocol.producer.name,\n\t\t\tprotocol.producer.version,\n\t\t\tprotocol.producer.language,\n\t\t].filter(Boolean).join(' · ');\n\t\tconst runtimeLabel = runtime\n\t\t\t? [runtime.implementation, runtime.graphicsApi, runtime.backend].filter(Boolean).join(' · ') || 'Unknown'\n\t\t\t: 'Unknown';\n\t\tconst poolRetained = snapshot.resourcePool.status === 'available'\n\t\t\t? `${snapshot.resourcePool.estimatedRetainedBytes === undefined ? 'Unknown' : formatBytes(snapshot.resourcePool.estimatedRetainedBytes)} · ${snapshot.resourcePool.retainedCount} allocations`\n\t\t\t: 'Unavailable';\n\t\tconst counts = this.diagnosticCounts(snapshot);\n\t\tthis.summary.replaceChildren(\n\t\t\tthis.createSummaryGroup('Diagnostics', [\n\t\t\t\t['Errors', String(counts.error)], ['Warnings', String(counts.warning)], ['Information', String(counts.info)],\n\t\t\t], () => this.setActiveTab('diagnostics')),\n\t\t\tthis.createSummaryGroup('Execution timing', [\n\t\t\t\t['CPU execute', snapshot.cpuProfiling.status === 'available' ? (snapshot.cpuProfiling.executionDurationMicros / 1000).toFixed(3) + ' ms' : 'Not collected'],\n\t\t\t\t['CPU pass sum', snapshot.metrics.cpuTimedNodeCount ? (snapshot.metrics.cpuWorkDurationMicros / 1000).toFixed(3) + ' ms' : 'Not collected'],\n\t\t\t\t['CPU coverage', formatTimingCoverage(snapshot.metrics.cpuTimedNodeCount, snapshot.nodes.length)],\n\t\t\t\t['GPU span', snapshot.profiling.status === 'available' ? `${formatGpuFrameDuration(snapshot)} ms` : 'Not collected'],\n\t\t\t\t['GPU coverage', coverage],\n\t\t\t\t['Slowest GPU pass', slowest],\n\t\t\t], () => metrics.slowestNode ? this.callbacks.onReveal?.({ kind: 'node', id: metrics.slowestNode.id }, 'passes') : this.setActiveTab('passes')),\n\t\t\tthis.createSummaryGroup('Work', [\n\t\t\t\t['Nodes', `${snapshot.nodes.length} retained · ${snapshot.culledNodes.length} culled`],\n\t\t\t\t['Segments', `${frameGraphSegments} FG · ${opaqueIntervals} opaque`],\n\t\t\t\t['Groups', snapshot.availability.groups ? String(snapshot.debugGroups.length) : 'Unknown'],\n\t\t\t\t['Recording order', snapshot.availability.recordingOrder ? 'Available' : 'Unknown'],\n\t\t\t], () => this.setActiveTab('passes')),\n\t\t\tthis.createSummaryGroup('Resources', [\n\t\t\t\t['Logical / physical', `${snapshot.resources.length} / ${protocol.memory.allocationReport.status === 'available' ? snapshot.physicalAllocations.length : 'Unavailable'}`],\n\t\t\t\t['Texture views', snapshot.availability.textureViews ? String(snapshot.textureViewById.size) : 'Unknown'],\n\t\t\t\t['Access regions', snapshot.availability.accessRegions ? 'Available' : 'Unknown'],\n\t\t\t\t['Transient estimate', formatEstimateCoverage(metrics.transientEstimatedByteSize, metrics.estimatedCoverage.transient)],\n\t\t\t], () => this.setActiveTab('resources')),\n\t\t\tthis.createSummaryGroup('Memory estimates', [\n\t\t\t\t['Physical allocations', protocol.memory.allocationReport.status === 'available' ? formatEstimateCoverage(metrics.physicalEstimatedBytes, metrics.estimatedCoverage.physical) : 'Unavailable'],\n\t\t\t\t['Alias reuse', protocol.memory.allocationReport.status === 'available' ? formatEstimatedBytes(metrics.aliasReuseBytes) : 'Unavailable'],\n\t\t\t], () => this.setActiveTab('memory')),\n\t\t\tthis.createSummaryGroup('Pool', [\n\t\t\t\t['Retained', poolRetained],\n\t\t\t\t['Reuse', formatPoolHitRate(snapshot)],\n\t\t\t], () => this.setActiveTab('memory')),\n\t\t);\n\t\tconst title = document.createElement('summary');\n\t\ttitle.textContent = 'Capture information';\n\t\tthis.captureDetails.className = 'zenfg-inspector-capture-details';\n\t\tthis.captureDetails.replaceChildren(title, this.createSummaryGroup('Capture', [\n\t\t\t['Source', snapshot.source.label], ['Frame', String(snapshot.frameIndex)],\n\t\t\t['Captured at', protocol.capture.capturedAt ?? 'Unknown'],\n\t\t\t['Schema', `${protocol.format} v${protocol.version.major}.${protocol.version.minor}`],\n\t\t\t['Producer', producer], ['Runtime', runtimeLabel],\n\t\t\t...(protocol.capture.migration ? [['Migration', `${protocol.capture.migration.sourceFormat} → canonical v${protocol.version.major}.${protocol.version.minor}`] as const] : []),\n\t\t\t['Timing', snapshot.profiling.status === 'available' ? coverage : snapshot.profiling.reason],\n\t\t]));\n\t\tthis.summary.append(this.captureDetails);\n\t}\n\n\tprivate createSummaryGroup(title: string, rows: readonly (readonly [string, string])[], onNavigate?: () => void): HTMLElement {\n\t\tconst group = document.createElement('section');\n\t\tconst heading = document.createElement('h2');\n\t\theading.textContent = title;\n\t\tgroup.appendChild(heading);\n\t\tfor (const [label, value] of rows) {\n\t\t\tconst row = document.createElement('div');\n\t\t\tconst term = document.createElement('span');\n\t\t\tterm.textContent = label;\n\t\t\tconst description = document.createElement('strong');\n\t\t\tdescription.textContent = value;\n\t\t\tdescription.title = value;\n\t\t\trow.append(term, description);\n\t\t\tgroup.appendChild(row);\n\t\t}\n\t\tif (onNavigate) {\n\t\t\tconst action = document.createElement('button');\n\t\t\taction.type = 'button';\n\t\t\taction.className = 'zenfg-inspector-relation-button';\n\t\t\taction.textContent = `Explore ${title.toLowerCase()}`;\n\t\t\taction.addEventListener('click', onNavigate);\n\t\t\tgroup.append(action);\n\t\t}\n\t\treturn group;\n\t}\n\n\tprivate setExportMenuOpen(open: boolean): void {\n\t\tthis.exportMenu.hidden = !open;\n\t\tthis.exportButton.setAttribute('aria-expanded', open ? 'true' : 'false');\n\t\tif (open) this.downloadButton.focus();\n\t}\n\n\tprivate handleInspectorOpenChange(_open: boolean): void {\n\t\tthis.updateWorkspaceState();\n\t\tif (this.activeTab === 'graph') this.resizeGraph(false);\n\t}\n\n\tprivate updateWorkspaceState(): void {\n\t\tconst inspectorOpen = this.hasSnapshot && this.inspector.isOpen && this.activeTab !== 'overview';\n\t\tthis.workspace.classList.toggle('has-capture', this.hasSnapshot);\n\t\tthis.inspector.root.classList.toggle('unavailable', !inspectorOpen);\n\t\tthis.inspectorOpenButton.hidden = !this.hasSnapshot || !this.selected || inspectorOpen || this.activeTab === 'overview';\n\t\tthis.detailLayout.update(inspectorOpen);\n\t}\n\n\treveal(selection: Selection, tab: WorkbenchTab): void {\n\t\tif (this.feedbackTitle.textContent === 'Graph location unavailable') {\n\t\t\tthis.feedback.hidden = true;\n\t\t\tthis.commandStatus.replaceChildren();\n\t\t\tthis.commandStatus.hidden = true;\n\t\t}\n\t\tthis.setActiveTab(tab);\n\t\tif (tab === 'passes') this.passes.reveal(selection);\n\t\telse if (tab === 'resources') this.resources.reveal(selection);\n\t\telse if (tab === 'memory') this.memory.reveal(selection);\n\t\telse if (tab === 'diagnostics') this.diagnostics.reveal(selection);\n\t\tif (this.detailLayout.isDrawer) this.inspector.setOpen(false);\n\t\tif (tab === 'graph') this.renderGraph();\n\t}\n\n\tnavigate(tab: WorkbenchTab, filter?: 'culled'): void {\n\t\tthis.setActiveTab(tab);\n\t\tif (tab === 'passes' && filter === 'culled') this.passes.showCulled();\n\t\tif (this.detailLayout.isDrawer) this.inspector.setOpen(false);\n\t}\n\n\tshowNavigationIssue(message: string, selection: Selection): void {\n\t\tif (this.detailLayout.isDrawer) this.inspector.setOpen(false);\n\t\tthis.feedback.hidden = false;\n\t\tthis.feedback.open = true;\n\t\tthis.feedback.dataset.tone = 'neutral';\n\t\tthis.feedbackTitle.textContent = 'Graph location unavailable';\n\t\tconst action = document.createElement('button');\n\t\taction.type = 'button';\n\t\taction.className = 'zenfg-inspector-relation-button';\n\t\tconst tab = selection.kind === 'resource' ? 'resources' : selection.kind === 'allocation' ? 'memory'\n\t\t\t: selection.kind === 'root' || selection.kind === 'segment' ? 'diagnostics' : 'passes';\n\t\taction.textContent = `Show in ${tab}`;\n\t\taction.addEventListener('click', () => this.callbacks.onReveal?.(selection, tab));\n\t\tthis.commandStatus.hidden = false;\n\t\tthis.commandStatus.replaceChildren(document.createTextNode(`${message} `), action);\n\t\taction.focus();\n\t}\n\n\tdestroy(): void { this.destroyed = true; this.detailLayout.destroy(); }\n\n\tprivate ensureActiveView(): void {\n\t\tconst snapshot = this.snapshot;\n\t\tif (!snapshot) return;\n\t\tif (this.dirtyViews.has(this.activeTab)) {\n\t\t\tswitch (this.activeTab) {\n\t\t\t\tcase 'overview': this.renderSummary(snapshot); break;\n\t\t\t\tcase 'passes': this.passes.setSnapshot(snapshot); break;\n\t\t\t\tcase 'resources': this.resources.setSnapshot(snapshot); break;\n\t\t\t\tcase 'memory': this.memory.setSnapshot(snapshot); break;\n\t\t\t\tcase 'diagnostics': this.diagnostics.setSnapshot(snapshot); break;\n\t\t\t}\n\t\t\tthis.dirtyViews.delete(this.activeTab);\n\t\t}\n\t\tthis.updateActiveSelection();\n\t}\n\n\tprivate updateActiveSelection(): void {\n\t\tswitch (this.activeTab) {\n\t\t\tcase 'passes': this.passes.setSelection(this.selected); break;\n\t\t\tcase 'resources': this.resources.setSelection(this.selected); break;\n\t\t\tcase 'memory': this.memory.setSelection(this.selected); break;\n\t\t\tcase 'diagnostics': this.diagnostics.setSelection(this.selected); break;\n\t\t}\n\t}\n\n\tprivate diagnosticCounts(snapshot: FrameGraphDebugViewModel): Record<'error' | 'warning' | 'info', number> {\n\t\tconst counts = { error: 0, warning: 0, info: 0 };\n\t\tfor (const entry of snapshot.protocol.diagnostics) counts[entry.severity]++;\n\t\treturn counts;\n\t}\n\n\tprivate renderDiagnosticBadge(snapshot: FrameGraphDebugViewModel): void {\n\t\tconst counts = this.diagnosticCounts(snapshot);\n\t\tconst tab = this.tabButtons.get('diagnostics')!;\n\t\tconst label = document.createElement('span');\n\t\tlabel.textContent = 'Diagnostics';\n\t\tconst badge = document.createElement('span');\n\t\tbadge.className = 'zenfg-inspector-diagnostic-badge';\n\t\tbadge.textContent = `${counts.error} / ${counts.warning}`;\n\t\tbadge.title = `${counts.error} errors, ${counts.warning} warnings`;\n\t\tbadge.setAttribute('aria-hidden', 'true');\n\t\ttab.replaceChildren(label, ...(counts.error + counts.warning ? [badge] : []));\n\t\ttab.title = badge.title;\n\t}\n\n\tprivate handleMenuKey(event: KeyboardEvent): void {\n\t\tif (this.exportMenu.hidden || event.defaultPrevented) return;\n\t\tif (event.key === 'Escape') {\n\t\t\tevent.preventDefault(); event.stopPropagation();\n\t\t\tthis.setExportMenuOpen(false); this.exportButton.focus();\n\t\t} else if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n\t\t\tevent.preventDefault(); event.stopPropagation();\n\t\t\tconst items = [this.downloadButton, this.copyButton].filter((button) => !button.disabled);\n\t\t\tconst index = items.indexOf(document.activeElement as HTMLButtonElement);\n\t\t\tconst next = event.key === 'Home' ? 0 : event.key === 'End' ? items.length - 1\n\t\t\t\t: (index + (event.key === 'ArrowDown' ? 1 : -1) + items.length) % items.length;\n\t\t\titems[next]?.focus();\n\t\t}\n\t}\n}\n"]}
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI;IACtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC","sourcesContent":["/** Query-string flag recognized by {@link isZenFGInspectorRequested}. */\nexport const ZENFG_INSPECTOR_QUERY_PARAM = 'fg';\n\n/**\n * Reports whether a URL contains the `fg` inspector opt-in parameter.\n *\n * @param href - Absolute URL accepted by `URL`; defaults to the current page\n * URL when a browser location is available.\n * @returns `false` when no URL is available or the supplied URL is invalid.\n */\nexport function isZenFGInspectorRequested(href = globalThis.location?.href): boolean {\n if (!href) {\r\n return false;\r\n }\r\n\r\n try {\r\n return new URL(href).searchParams.has(ZENFG_INSPECTOR_QUERY_PARAM);\r\n }\r\n catch {\r\n return false;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI;IACtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC","sourcesContent":["/** Query-string flag recognized by {@link isZenFGInspectorRequested}. */\nexport const ZENFG_INSPECTOR_QUERY_PARAM = 'fg';\n\n/**\n * Reports whether a URL contains the `fg` inspector opt-in parameter.\n *\n * @param href - Absolute URL accepted by `URL`; defaults to the current page\n * URL when a browser location is available.\n * @returns `false` when no URL is available or the supplied URL is invalid.\n */\nexport function isZenFGInspectorRequested(href = globalThis.location?.href): boolean {\n if (!href) {\n return false;\n }\n\n try {\n return new URL(href).searchParams.has(ZENFG_INSPECTOR_QUERY_PARAM);\n }\n catch {\n return false;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AA4iCA;;;;;GAKG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAStD"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AA6/BA;;;;;GAKG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAStD"}