From 5d1bdf7d3e6c59ed56aabb455d54b1a7c9c3f7fa Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 15 Apr 2026 19:21:13 -0700 Subject: [PATCH 01/42] fix: add random suffix to log filenames to prevent collision When multiple workflow runs start in the same second (common when orchestrating parallel runs), time.strftime('%Y%m%d-%H%M%S') produces identical timestamps, causing all runs to write to the same file. This corrupts event logs, checkpoint files, and CLI log files by interleaving events from different runs. Append a random 8-character hex suffix (via secrets.token_hex(4)) to filenames across all three affected locations: - EventLogSubscriber (event_log.py) - CheckpointManager.save_checkpoint (checkpoint.py) - generate_log_path (cli/run.py) Filenames change from: conductor-workflow-20260416-014816.events.jsonl to: conductor-workflow-20260416-014816-a3b7c9f1.events.jsonl Backward compatible: existing tools that glob *.events.jsonl, *.json, or *.log continue to work. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/cli/run.py | 6 ++++++ src/conductor/engine/checkpoint.py | 6 ++++++ src/conductor/engine/event_log.py | 6 ++++++ tests/test_engine/test_event_log.py | 20 ++++++++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/src/conductor/cli/run.py b/src/conductor/cli/run.py index 452c8a1..32ac61e 100644 --- a/src/conductor/cli/run.py +++ b/src/conductor/cli/run.py @@ -52,7 +52,13 @@ def generate_log_path(workflow_name: str) -> Path: Returns: Path to the auto-generated log file. """ + import secrets + timestamp = time.strftime("%Y%m%d-%H%M%S") + # Append random suffix to avoid filename collisions + # when multiple runs start in the same second + suffix = secrets.token_hex(4) + timestamp = f"{timestamp}-{suffix}" path = Path(tempfile.gettempdir()) / "conductor" / f"conductor-{workflow_name}-{timestamp}.log" path.parent.mkdir(parents=True, exist_ok=True) return path diff --git a/src/conductor/engine/checkpoint.py b/src/conductor/engine/checkpoint.py index 26ef8b4..27dc2fa 100644 --- a/src/conductor/engine/checkpoint.py +++ b/src/conductor/engine/checkpoint.py @@ -167,7 +167,13 @@ def save_checkpoint( workflow_hash = "sha256:unknown" # Build checkpoint dict + import secrets + timestamp = time.strftime("%Y%m%d-%H%M%S") + # Append random suffix to avoid filename collisions + # when multiple runs start in the same second + suffix = secrets.token_hex(4) + timestamp = f"{timestamp}-{suffix}" created_at = datetime.now(UTC).isoformat() workflow_name = workflow_path.stem diff --git a/src/conductor/engine/event_log.py b/src/conductor/engine/event_log.py index 718d538..0b5432d 100644 --- a/src/conductor/engine/event_log.py +++ b/src/conductor/engine/event_log.py @@ -56,7 +56,13 @@ class EventLogSubscriber: """ def __init__(self, workflow_name: str) -> None: + import secrets + ts = time.strftime("%Y%m%d-%H%M%S") + # Append random suffix to avoid filename collisions + # when multiple runs start in the same second + suffix = secrets.token_hex(4) + ts = f"{ts}-{suffix}" self._path = ( Path(tempfile.gettempdir()) / "conductor" diff --git a/tests/test_engine/test_event_log.py b/tests/test_engine/test_event_log.py index fcf881c..aa02694 100644 --- a/tests/test_engine/test_event_log.py +++ b/tests/test_engine/test_event_log.py @@ -76,6 +76,26 @@ def test_safe_after_close(self, tmp_path, monkeypatch): sub.on_event(WorkflowEvent(type="late", timestamp=time.time(), data={})) sub.close() # Double close should be safe + def test_filenames_unique_for_simultaneous_starts(self, tmp_path, monkeypatch): + monkeypatch.setenv("TMPDIR", str(tmp_path)) + subs = [EventLogSubscriber("same-workflow") for _ in range(3)] + paths = [s.path for s in subs] + # All paths must be distinct even when created in rapid succession + assert len(set(paths)) == len(paths), f"Expected unique paths, got {paths}" + for s in subs: + s.close() + + def test_filename_contains_random_suffix(self, tmp_path, monkeypatch): + monkeypatch.setenv("TMPDIR", str(tmp_path)) + sub = EventLogSubscriber("ts-test") + # Filename should match pattern: conductor--YYYYMMDD-HHMMSS-<8 hex chars>.events.jsonl + import re + + assert re.search(r"\d{8}-\d{6}-[0-9a-f]{8}\.events\.jsonl$", sub.path.name), ( + f"Filename lacks random suffix: {sub.path.name}" + ) + sub.close() + def test_integrates_with_emitter(self, tmp_path, monkeypatch): from conductor.events import WorkflowEventEmitter From 513fdfeaf90ecdb053164559cf1c97481b380c94 Mon Sep 17 00:00:00 2001 From: Dan Green Date: Fri, 17 Apr 2026 13:05:18 -0700 Subject: [PATCH 02/42] fix(gates): race web task unconditionally when web dashboard exists When a human gate is presented and a web dashboard has been started (e.g. via --web-bg), _handle_gate_with_web previously checked `self._web_dashboard.has_connections()` and fell back to the CLI-only path if no WebSocket client was currently connected. In practice users almost always open the per-run dashboard *after* seeing the gate-waiting notification, so `has_connections()` is typically False at the moment the gate is presented. Under --web-bg there is no attached stdin, so the CLI task blocks forever on `input()`, and when the user later connects and clicks approve, the `gate_response` WebSocket message is enqueued to `_gate_response_queue` with no coroutine awaiting it. The workflow hangs indefinitely. Fix: only bail to CLI-only when there is no web dashboard at all. Always start both the CLI task and the web-wait task in parallel when a dashboard exists; `wait_for_gate_response` happily awaits an empty queue until the user eventually connects and clicks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 1592f5a..484192b 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -746,11 +746,16 @@ async def _handle_gate_with_web( Returns: GateResult from whichever input source responded first. """ - # If no web dashboard or no connections, use CLI only - if self._web_dashboard is None or not self._web_dashboard.has_connections(): + # If no web dashboard at all, use CLI only. + if self._web_dashboard is None: return await self.gate_handler.handle_gate(agent, agent_context) - # Race CLI vs web input + # Race CLI vs web input. We start the web task unconditionally (not only + # when a client is currently connected), because the human often opens + # the per-run dashboard AFTER seeing the gate-waiting notification. + # If we bail early when ``has_connections()`` is False, a later click + # in the dashboard pushes a message to ``_gate_response_queue`` that + # nobody is awaiting, and the workflow hangs forever. cli_task = asyncio.create_task( self.gate_handler.handle_gate(agent, agent_context), name="gate_cli", From 051000808efaa0a54325540d3fe18ae931891962 Mon Sep 17 00:00:00 2001 From: Dan Green Date: Fri, 17 Apr 2026 13:05:18 -0700 Subject: [PATCH 03/42] fix(gates): race web task unconditionally when web dashboard exists When a human gate is presented and a web dashboard has been started (e.g. via --web-bg), _handle_gate_with_web previously checked `self._web_dashboard.has_connections()` and fell back to the CLI-only path if no WebSocket client was currently connected. In practice users almost always open the per-run dashboard *after* seeing the gate-waiting notification, so `has_connections()` is typically False at the moment the gate is presented. Under --web-bg there is no attached stdin, so the CLI task blocks forever on `input()`, and when the user later connects and clicks approve, the `gate_response` WebSocket message is enqueued to `_gate_response_queue` with no coroutine awaiting it. The workflow hangs indefinitely. Fix: only bail to CLI-only when there is no web dashboard at all. Always start both the CLI task and the web-wait task in parallel when a dashboard exists; `wait_for_gate_response` happily awaits an empty queue until the user eventually connects and clicks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 2adb60d..9fc12a2 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -647,11 +647,16 @@ async def _handle_gate_with_web( Returns: GateResult from whichever input source responded first. """ - # If no web dashboard or no connections, use CLI only - if self._web_dashboard is None or not self._web_dashboard.has_connections(): + # If no web dashboard at all, use CLI only. + if self._web_dashboard is None: return await self.gate_handler.handle_gate(agent, agent_context) - # Race CLI vs web input + # Race CLI vs web input. We start the web task unconditionally (not only + # when a client is currently connected), because the human often opens + # the per-run dashboard AFTER seeing the gate-waiting notification. + # If we bail early when ``has_connections()`` is False, a later click + # in the dashboard pushes a message to ``_gate_response_queue`` that + # nobody is awaiting, and the workflow hangs forever. cli_task = asyncio.create_task( self.gate_handler.handle_gate(agent, agent_context), name="gate_cli", From 9ece7a62df9fc170a12194a0926da041d67f7389 Mon Sep 17 00:00:00 2001 From: Dan Green Date: Fri, 17 Apr 2026 13:06:59 -0700 Subject: [PATCH 04/42] fix(web): stop busy-looping on stale gate_response messages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `wait_for_gate_response` previously re-queued any message whose `agent_name` did not match the expected agent, then slept 10ms and retried. Because `asyncio.Queue` has no deduplication, the same stale message would immediately be dequeued again on the next iteration — producing a tight loop that re-enqueues and re-inspects the same dict forever (cpu-bound, 100 iter/sec per stale message). In practice this never triggered during normal flow because conductor presents one gate at a time and the `has_connections()` short-circuit used to hide the issue. With that short-circuit now gone (PR to always race both tasks), and with any client ever producing a duplicate click, the spin becomes reachable. Fix: since conductor only ever awaits one gate at a time, any non-matching `gate_response` is definitionally stale (a duplicate click from a dashboard that missed the first resolution, or a message for a gate that already completed). Re-queueing can never deliver it — the matching `wait_for_gate_response` call is already gone. Discard stale messages with a warning log so the queue drains cleanly and the next `await .get()` blocks properly on an empty queue. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/web/server.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index a7d39bf..892166a 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -286,8 +286,14 @@ async def wait_for_gate_response(self, agent_name: str) -> dict[str, Any]: """Wait for a gate response from a web client. Blocks until a ``gate_response`` message is received via WebSocket - that matches the given agent name. Non-matching messages are - re-queued so they are not lost. + that matches the given agent name. + + Non-matching messages are discarded with a warning. Because + conductor only presents one gate at a time, any ``gate_response`` + addressed to a different agent is stale (e.g. a duplicate click + from a dashboard that missed the first resolution) and cannot be + delivered — re-queueing would only cause it to be re-examined on + every subsequent gate with no chance of ever matching. Args: agent_name: The name of the human_gate agent to wait for. @@ -300,10 +306,11 @@ async def wait_for_gate_response(self, agent_name: str) -> dict[str, Any]: msg = await self._gate_response_queue.get() if msg.get("agent_name") == agent_name: return msg - # Not for this agent — put it back - self._gate_response_queue.put_nowait(msg) - # Yield to avoid busy-loop - await asyncio.sleep(0.01) + logger.warning( + "Discarding stale gate_response for agent %r while waiting on %r", + msg.get("agent_name"), + agent_name, + ) # ------------------------------------------------------------------ # Auto-shutdown (--web-bg) From 6f91d01707c99e6857f604c65879501b2b3c42db Mon Sep 17 00:00:00 2001 From: Dan Green Date: Fri, 17 Apr 2026 13:06:59 -0700 Subject: [PATCH 05/42] fix(web): stop busy-looping on stale gate_response messages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `wait_for_gate_response` previously re-queued any message whose `agent_name` did not match the expected agent, then slept 10ms and retried. Because `asyncio.Queue` has no deduplication, the same stale message would immediately be dequeued again on the next iteration — producing a tight loop that re-enqueues and re-inspects the same dict forever (cpu-bound, 100 iter/sec per stale message). In practice this never triggered during normal flow because conductor presents one gate at a time and the `has_connections()` short-circuit used to hide the issue. With that short-circuit now gone (PR to always race both tasks), and with any client ever producing a duplicate click, the spin becomes reachable. Fix: since conductor only ever awaits one gate at a time, any non-matching `gate_response` is definitionally stale (a duplicate click from a dashboard that missed the first resolution, or a message for a gate that already completed). Re-queueing can never deliver it — the matching `wait_for_gate_response` call is already gone. Discard stale messages with a warning log so the queue drains cleanly and the next `await .get()` blocks properly on an empty queue. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/web/server.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index a7d39bf..892166a 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -286,8 +286,14 @@ async def wait_for_gate_response(self, agent_name: str) -> dict[str, Any]: """Wait for a gate response from a web client. Blocks until a ``gate_response`` message is received via WebSocket - that matches the given agent name. Non-matching messages are - re-queued so they are not lost. + that matches the given agent name. + + Non-matching messages are discarded with a warning. Because + conductor only presents one gate at a time, any ``gate_response`` + addressed to a different agent is stale (e.g. a duplicate click + from a dashboard that missed the first resolution) and cannot be + delivered — re-queueing would only cause it to be re-examined on + every subsequent gate with no chance of ever matching. Args: agent_name: The name of the human_gate agent to wait for. @@ -300,10 +306,11 @@ async def wait_for_gate_response(self, agent_name: str) -> dict[str, Any]: msg = await self._gate_response_queue.get() if msg.get("agent_name") == agent_name: return msg - # Not for this agent — put it back - self._gate_response_queue.put_nowait(msg) - # Yield to avoid busy-loop - await asyncio.sleep(0.01) + logger.warning( + "Discarding stale gate_response for agent %r while waiting on %r", + msg.get("agent_name"), + agent_name, + ) # ------------------------------------------------------------------ # Auto-shutdown (--web-bg) From d68f2ea5159928f2b96727bab155d7ece3d02abe Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Fri, 17 Apr 2026 13:23:22 -0700 Subject: [PATCH 06/42] test(web): cover stale gate_response discard path Adds TestWaitForGateResponse with two cases: - Returns the matching message. - Discards stale (non-matching) messages without re-queueing, regression-covering the busy-loop bug fixed in this PR. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/test_web/test_server.py | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/test_web/test_server.py b/tests/test_web/test_server.py index e8484c7..98d84ac 100644 --- a/tests/test_web/test_server.py +++ b/tests/test_web/test_server.py @@ -499,6 +499,50 @@ async def _cancel_serve(self: object) -> None: await dashboard.start() +class TestWaitForGateResponse: + """Tests for WebDashboard.wait_for_gate_response stale-message handling.""" + + @pytest.mark.asyncio + async def test_returns_matching_response(self) -> None: + """Returns the message whose agent_name matches the awaited agent.""" + _, dashboard = _make_dashboard() + await dashboard._gate_response_queue.put( + {"agent_name": "plan_approval", "selected_value": "approved"} + ) + + msg = await asyncio.wait_for( + dashboard.wait_for_gate_response("plan_approval"), timeout=1.0 + ) + + assert msg["selected_value"] == "approved" + + @pytest.mark.asyncio + async def test_discards_stale_non_matching_messages(self) -> None: + """Non-matching gate_response messages are discarded, not re-queued. + + Regression test for the busy-loop bug where stale messages (e.g. a + duplicate click for a previously-resolved gate) were re-queued with + a 10ms sleep, spinning at ~100Hz forever because ``asyncio.Queue`` + has no dedup. + """ + _, dashboard = _make_dashboard() + # Enqueue a stale message followed by the matching one. + await dashboard._gate_response_queue.put( + {"agent_name": "old_gate", "selected_value": "approved"} + ) + await dashboard._gate_response_queue.put( + {"agent_name": "current_gate", "selected_value": "rejected"} + ) + + msg = await asyncio.wait_for( + dashboard.wait_for_gate_response("current_gate"), timeout=1.0 + ) + + assert msg["agent_name"] == "current_gate" + assert msg["selected_value"] == "rejected" + assert dashboard._gate_response_queue.empty() + + async def _short_grace(event: asyncio.Event, delay: float) -> None: """Helper for testing: short grace period.""" await asyncio.sleep(delay) From c588c171198bef55721b8363c688f40c63f49222 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Fri, 17 Apr 2026 13:23:22 -0700 Subject: [PATCH 07/42] test(web): cover stale gate_response discard path Adds TestWaitForGateResponse with two cases: - Returns the matching message. - Discards stale (non-matching) messages without re-queueing, regression-covering the busy-loop bug fixed in this PR. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/test_web/test_server.py | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/test_web/test_server.py b/tests/test_web/test_server.py index e8484c7..98d84ac 100644 --- a/tests/test_web/test_server.py +++ b/tests/test_web/test_server.py @@ -499,6 +499,50 @@ async def _cancel_serve(self: object) -> None: await dashboard.start() +class TestWaitForGateResponse: + """Tests for WebDashboard.wait_for_gate_response stale-message handling.""" + + @pytest.mark.asyncio + async def test_returns_matching_response(self) -> None: + """Returns the message whose agent_name matches the awaited agent.""" + _, dashboard = _make_dashboard() + await dashboard._gate_response_queue.put( + {"agent_name": "plan_approval", "selected_value": "approved"} + ) + + msg = await asyncio.wait_for( + dashboard.wait_for_gate_response("plan_approval"), timeout=1.0 + ) + + assert msg["selected_value"] == "approved" + + @pytest.mark.asyncio + async def test_discards_stale_non_matching_messages(self) -> None: + """Non-matching gate_response messages are discarded, not re-queued. + + Regression test for the busy-loop bug where stale messages (e.g. a + duplicate click for a previously-resolved gate) were re-queued with + a 10ms sleep, spinning at ~100Hz forever because ``asyncio.Queue`` + has no dedup. + """ + _, dashboard = _make_dashboard() + # Enqueue a stale message followed by the matching one. + await dashboard._gate_response_queue.put( + {"agent_name": "old_gate", "selected_value": "approved"} + ) + await dashboard._gate_response_queue.put( + {"agent_name": "current_gate", "selected_value": "rejected"} + ) + + msg = await asyncio.wait_for( + dashboard.wait_for_gate_response("current_gate"), timeout=1.0 + ) + + assert msg["agent_name"] == "current_gate" + assert msg["selected_value"] == "rejected" + assert dashboard._gate_response_queue.empty() + + async def _short_grace(event: asyncio.Event, delay: float) -> None: """Helper for testing: short grace period.""" await asyncio.sleep(delay) From 6f9d8d9c50c218a59ea9df89c9f19dd5981b842d Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Fri, 17 Apr 2026 13:59:21 -0700 Subject: [PATCH 08/42] style: ruff format test_server.py Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/test_web/test_server.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/test_web/test_server.py b/tests/test_web/test_server.py index 98d84ac..31db239 100644 --- a/tests/test_web/test_server.py +++ b/tests/test_web/test_server.py @@ -510,9 +510,7 @@ async def test_returns_matching_response(self) -> None: {"agent_name": "plan_approval", "selected_value": "approved"} ) - msg = await asyncio.wait_for( - dashboard.wait_for_gate_response("plan_approval"), timeout=1.0 - ) + msg = await asyncio.wait_for(dashboard.wait_for_gate_response("plan_approval"), timeout=1.0) assert msg["selected_value"] == "approved" @@ -534,9 +532,7 @@ async def test_discards_stale_non_matching_messages(self) -> None: {"agent_name": "current_gate", "selected_value": "rejected"} ) - msg = await asyncio.wait_for( - dashboard.wait_for_gate_response("current_gate"), timeout=1.0 - ) + msg = await asyncio.wait_for(dashboard.wait_for_gate_response("current_gate"), timeout=1.0) assert msg["agent_name"] == "current_gate" assert msg["selected_value"] == "rejected" From 834afe00cddd8ccc99401529d0426d2598e647f4 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Fri, 17 Apr 2026 13:59:21 -0700 Subject: [PATCH 09/42] style: ruff format test_server.py Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/test_web/test_server.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/test_web/test_server.py b/tests/test_web/test_server.py index 98d84ac..31db239 100644 --- a/tests/test_web/test_server.py +++ b/tests/test_web/test_server.py @@ -510,9 +510,7 @@ async def test_returns_matching_response(self) -> None: {"agent_name": "plan_approval", "selected_value": "approved"} ) - msg = await asyncio.wait_for( - dashboard.wait_for_gate_response("plan_approval"), timeout=1.0 - ) + msg = await asyncio.wait_for(dashboard.wait_for_gate_response("plan_approval"), timeout=1.0) assert msg["selected_value"] == "approved" @@ -534,9 +532,7 @@ async def test_discards_stale_non_matching_messages(self) -> None: {"agent_name": "current_gate", "selected_value": "rejected"} ) - msg = await asyncio.wait_for( - dashboard.wait_for_gate_response("current_gate"), timeout=1.0 - ) + msg = await asyncio.wait_for(dashboard.wait_for_gate_response("current_gate"), timeout=1.0) assert msg["agent_name"] == "current_gate" assert msg["selected_value"] == "rejected" From 4fb799865525b0701aabf07d438e4031d5a9bac3 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Mon, 20 Apr 2026 14:39:30 -0700 Subject: [PATCH 10/42] feat(composition): dynamic sub-workflow inputs via input_mapping (#101) Add input_mapping field to AgentDef for type='workflow' agents. When present, each value is a Jinja2 expression rendered against the parent context to build sub-workflow inputs. When absent, existing behavior (forwarding parent's workflow.input.*) is preserved. - Schema: Add input_mapping to AgentDef with validation for workflow-only - Engine: Render input_mapping templates in _execute_subworkflow() - Tests: Schema validation for all agent types - Experimental workflows: test-input-mapping parent/child pair Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/config/schema.py | 29 ++++++++++ src/conductor/engine/workflow.py | 23 ++++++-- .../test_config/test_workflow_type_schema.py | 55 +++++++++++++++++++ uv.lock | 2 +- 4 files changed, 103 insertions(+), 6 deletions(-) diff --git a/src/conductor/config/schema.py b/src/conductor/config/schema.py index 527c50b..da05b48 100644 --- a/src/conductor/config/schema.py +++ b/src/conductor/config/schema.py @@ -475,6 +475,24 @@ class AgentDef(BaseModel): workflow: ./research-pipeline.yaml """ + input_mapping: dict[str, str] | None = None + """Optional mapping of sub-workflow input names to Jinja2 expressions. + + Each key is a sub-workflow input parameter name. Each value is a Jinja2 + template expression evaluated against the parent workflow's context. + + When present, the rendered values are passed as the sub-workflow's inputs + instead of forwarding the parent's workflow.input.* values. + + Only valid for type='workflow' agents. + + Example:: + + input_mapping: + work_item_id: "{{ task_manager.output.current_issue_id }}" + title: "{{ task_manager.output.current_issue_title }}" + """ + max_session_seconds: float | None = Field(None, ge=1.0) """Maximum wall-clock duration for this agent's session in seconds. @@ -529,6 +547,8 @@ def validate_agent_type(self) -> AgentDef: raise ValueError("human_gate agents require 'options'") if not self.prompt: raise ValueError("human_gate agents require 'prompt'") + if self.input_mapping: + raise ValueError("human_gate agents cannot have 'input_mapping'") elif self.type == "script": if not self.command: raise ValueError("script agents require 'command'") @@ -555,6 +575,8 @@ def validate_agent_type(self) -> AgentDef: raise ValueError("script agents cannot have 'max_agent_iterations'") if self.retry is not None: raise ValueError("script agents cannot have 'retry'") + if self.input_mapping: + raise ValueError("script agents cannot have 'input_mapping'") elif self.type == "workflow": if not self.workflow: raise ValueError("workflow agents require 'workflow' path") @@ -578,6 +600,13 @@ def validate_agent_type(self) -> AgentDef: raise ValueError("workflow agents cannot have 'max_agent_iterations'") if self.retry is not None: raise ValueError("workflow agents cannot have 'retry'") + else: + # Regular agent or human_gate — input_mapping is not valid + if self.input_mapping: + raise ValueError( + f"'{self.type or 'agent'}' agents cannot have 'input_mapping' " + "(only workflow agents support input_mapping)" + ) return self diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 484192b..9dd9bc9 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -545,11 +545,24 @@ async def _execute_subworkflow( ) from exc # Build sub-workflow inputs from the parent context - # Extract workflow.input.* values from the parent context - workflow_ctx = context.get("workflow", {}) - sub_inputs: dict[str, Any] = ( - dict(workflow_ctx.get("input", {})) if isinstance(workflow_ctx, dict) else {} - ) + sub_inputs: dict[str, Any] + if agent.input_mapping: + # Dynamic inputs: render each Jinja2 expression against parent context + renderer = TemplateRenderer() + sub_inputs = {} + for key, template_expr in agent.input_mapping.items(): + rendered = renderer.render(template_expr, context) + # Attempt to parse rendered values as JSON for non-string types + try: + sub_inputs[key] = json.loads(rendered) + except (json.JSONDecodeError, ValueError): + sub_inputs[key] = rendered + else: + # Default: forward parent's workflow.input.* values + workflow_ctx = context.get("workflow", {}) + sub_inputs = ( + dict(workflow_ctx.get("input", {})) if isinstance(workflow_ctx, dict) else {} + ) # Create child engine inheriting provider/registry but with deeper depth child_engine = WorkflowEngine( diff --git a/tests/test_config/test_workflow_type_schema.py b/tests/test_config/test_workflow_type_schema.py index 995c21c..e5036fb 100644 --- a/tests/test_config/test_workflow_type_schema.py +++ b/tests/test_config/test_workflow_type_schema.py @@ -284,3 +284,58 @@ def test_workflow_with_routes_to_agents(self) -> None: # Should not raise warnings = validate_workflow_config(config) assert isinstance(warnings, list) + + +class TestInputMapping: + """Tests for input_mapping on workflow agents.""" + + def test_valid_input_mapping(self) -> None: + """Test that input_mapping is accepted on workflow agents.""" + agent = AgentDef( + name="sub_wf", + type="workflow", + workflow="./sub.yaml", + input_mapping={ + "work_item_id": "{{ intake.output.epic_id }}", + "title": "{{ intake.output.epic_title }}", + }, + ) + assert agent.input_mapping is not None + assert len(agent.input_mapping) == 2 + + def test_workflow_without_input_mapping(self) -> None: + """Test that workflow agents work without input_mapping (backward compat).""" + agent = AgentDef(name="sub_wf", type="workflow", workflow="./sub.yaml") + assert agent.input_mapping is None + + def test_input_mapping_on_regular_agent_raises(self) -> None: + """Test that input_mapping on a regular agent raises ValidationError.""" + with pytest.raises(ValidationError, match="input_mapping"): + AgentDef( + name="regular", + prompt="do something", + input_mapping={"key": "{{ value }}"}, + ) + + def test_input_mapping_on_human_gate_raises(self) -> None: + """Test that input_mapping on a human_gate raises ValidationError.""" + with pytest.raises(ValidationError, match="input_mapping"): + AgentDef( + name="gate", + type="human_gate", + prompt="Choose", + options=[ + GateOption(label="Yes", value="yes", route="next"), + ], + input_mapping={"key": "{{ value }}"}, + ) + + def test_input_mapping_on_script_raises(self) -> None: + """Test that input_mapping on a script agent raises ValidationError.""" + with pytest.raises(ValidationError, match="input_mapping"): + AgentDef( + name="script", + type="script", + command="echo hi", + input_mapping={"key": "{{ value }}"}, + ) diff --git a/uv.lock b/uv.lock index ac918e3..44d02b6 100644 --- a/uv.lock +++ b/uv.lock @@ -150,7 +150,7 @@ wheels = [ [[package]] name = "conductor-cli" -version = "0.1.8" +version = "0.1.9" source = { editable = "." } dependencies = [ { name = "anthropic" }, From 793e55a94a6c7b5bca6b00feec03eabd92d46783 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Mon, 20 Apr 2026 14:42:13 -0700 Subject: [PATCH 11/42] feat(composition): allow sub-workflows in for_each groups (#102) Remove validator restriction blocking type='workflow' in for_each groups. Wire execute_single_item() to call _execute_subworkflow_with_inputs() for workflow agents, rendering input_mapping with loop variables in scope. - Validator: Remove workflow rejection in for_each validation - Engine: Add workflow branch in execute_single_item(), new helper _execute_subworkflow_with_inputs() for pre-built inputs - Tests: Update test_workflow_in_for_each to validate (not reject) - Experimental workflows: test-for-each-workflow parent/child pair Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/config/validator.py | 7 +- src/conductor/engine/workflow.py | 124 +++++++++++++++++- .../test_config/test_workflow_type_schema.py | 9 +- 3 files changed, 129 insertions(+), 11 deletions(-) diff --git a/src/conductor/config/validator.py b/src/conductor/config/validator.py index 4581064..f4a0c94 100644 --- a/src/conductor/config/validator.py +++ b/src/conductor/config/validator.py @@ -111,18 +111,13 @@ def validate_workflow_config(config: WorkflowConfig) -> list[str]: parallel_errors = _validate_parallel_groups(config) errors.extend(parallel_errors) - # Validate for_each groups: reject script and workflow steps as inline agents + # Validate for_each groups: reject script steps as inline agents for for_each_group in config.for_each: if for_each_group.agent.type == "script": errors.append( f"For-each group '{for_each_group.name}' uses a script step as its " "inline agent. Script steps cannot be used in for_each groups." ) - if for_each_group.agent.type == "workflow": - errors.append( - f"For-each group '{for_each_group.name}' uses a workflow step as its " - "inline agent. Workflow steps cannot be used in for_each groups." - ) # Validate workflow output references output_errors = _validate_output_references( diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 9dd9bc9..a6d79f3 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -580,6 +580,81 @@ async def _execute_subworkflow( return await child_engine.run(sub_inputs) + async def _execute_subworkflow_with_inputs( + self, + agent: AgentDef, + sub_inputs: dict[str, Any], + ) -> dict[str, Any]: + """Execute a sub-workflow with pre-built inputs. + + Like _execute_subworkflow but accepts explicit inputs instead of + extracting them from context. Used by for_each groups where + input_mapping has already been rendered with loop variables. + + Args: + agent: Workflow agent definition with ``workflow`` path. + sub_inputs: Pre-built input dict for the sub-workflow. + + Returns: + The sub-workflow's final output dict. + """ + from conductor.config.loader import load_config + + if self._subworkflow_depth >= MAX_SUBWORKFLOW_DEPTH: + raise ExecutionError( + f"Sub-workflow depth limit exceeded ({MAX_SUBWORKFLOW_DEPTH}). " + f"Agent '{agent.name}' cannot invoke sub-workflow '{agent.workflow}'.", + suggestion="Check for circular sub-workflow references or reduce nesting depth.", + ) + + assert agent.workflow is not None # noqa: S101 + + if self.workflow_path is not None: + base_dir = Path(self.workflow_path).resolve().parent + else: + base_dir = Path.cwd() + + sub_path = (base_dir / agent.workflow).resolve() + + if not sub_path.exists(): + raise ExecutionError( + f"Sub-workflow file not found: {sub_path} (referenced by agent '{agent.name}')", + suggestion="Check that the 'workflow' path is correct and the file exists.", + ) + + # Detect circular references via file path + current_path = Path(self.workflow_path).resolve() if self.workflow_path else None + if current_path is not None and sub_path == current_path: + raise ExecutionError( + f"Circular sub-workflow reference: agent '{agent.name}' " + f"references its own workflow file '{agent.workflow}'.", + suggestion="A workflow cannot reference itself as a sub-workflow.", + ) + + try: + sub_config = load_config(sub_path) + except Exception as exc: + raise ExecutionError( + f"Failed to load sub-workflow '{sub_path}' " + f"(referenced by agent '{agent.name}'): {exc}", + suggestion="Check the sub-workflow YAML for syntax or validation errors.", + ) from exc + + child_engine = WorkflowEngine( + config=sub_config, + provider=self._single_provider, + registry=self._registry, + skip_gates=self.skip_gates, + workflow_path=sub_path, + interrupt_event=self._interrupt_event, + event_emitter=self._event_emitter, + keyboard_listener=self._keyboard_listener, + web_dashboard=self._web_dashboard, + _subworkflow_depth=self._subworkflow_depth + 1, + ) + + return await child_engine.run(sub_inputs) + def _get_context_window_for_agent(self, agent: AgentDef) -> int | None: """Return the context window size for an agent's model.""" from conductor.engine.pricing import get_pricing @@ -2600,7 +2675,54 @@ async def execute_single_item(item: Any, index: int, key: str) -> tuple[str, Any key if for_each_group.key_by else None, ) - # Execute agent with injected context (get executor for multi-provider) + # Execute agent — sub-workflow or regular + if for_each_group.agent.type == "workflow": + # Build sub-workflow inputs from input_mapping with loop vars + if for_each_group.agent.input_mapping: + renderer = TemplateRenderer() + sub_inputs: dict[str, Any] = {} + for k, tmpl in for_each_group.agent.input_mapping.items(): + rendered = renderer.render(tmpl, agent_context) + try: + sub_inputs[k] = json.loads(rendered) + except (json.JSONDecodeError, ValueError): + sub_inputs[k] = rendered + else: + wf_ctx = agent_context.get("workflow", {}) + sub_inputs = ( + dict(wf_ctx.get("input", {})) + if isinstance(wf_ctx, dict) + else {} + ) + + # Execute sub-workflow + self._emit( + "subworkflow_started", + { + "agent_name": for_each_group.name, + "item_key": key, + "workflow": for_each_group.agent.workflow, + }, + ) + output_content = await self._execute_subworkflow_with_inputs( + for_each_group.agent, sub_inputs + ) + _item_elapsed = _time.time() - _item_start + + self._emit( + "for_each_item_completed", + { + "group_name": for_each_group.name, + "item_key": key, + "elapsed": _item_elapsed, + "tokens": 0, + "cost_usd": 0.0, + "output": output_content, + }, + ) + return (key, output_content) + + # Regular agent execution executor = await self._get_executor_for_agent(for_each_group.agent) # Item-scoped event callback that tags all streaming events with item_key diff --git a/tests/test_config/test_workflow_type_schema.py b/tests/test_config/test_workflow_type_schema.py index e5036fb..a1ad66d 100644 --- a/tests/test_config/test_workflow_type_schema.py +++ b/tests/test_config/test_workflow_type_schema.py @@ -201,8 +201,8 @@ def test_workflow_in_parallel_group_raises(self) -> None: class TestWorkflowInForEach: """Tests for workflow agents in for_each groups.""" - def test_workflow_in_for_each_raises(self) -> None: - """Test that workflow step in for_each inline agent raises ConfigurationError.""" + def test_workflow_in_for_each_validates(self) -> None: + """Test that workflow step in for_each inline agent validates successfully.""" config = WorkflowConfig( workflow=WorkflowDef( name="test", @@ -227,8 +227,9 @@ def test_workflow_in_for_each_raises(self) -> None: ), ], ) - with pytest.raises(ConfigurationError, match="Workflow steps cannot be used in for_each"): - validate_workflow_config(config) + # Should not raise — workflow agents are now allowed in for_each + warnings = validate_workflow_config(config) + assert isinstance(warnings, list) class TestWorkflowWorkflowConfig: From 0e3e6a0ce9f2eb91e8a2c94a9ee826fcc1a5f4b4 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Mon, 20 Apr 2026 14:45:36 -0700 Subject: [PATCH 12/42] feat(composition): allow self-referential sub-workflows with depth tracking (#103) Remove the circular reference path check that blocked workflows from referencing themselves. The existing MAX_SUBWORKFLOW_DEPTH=10 already prevents infinite recursion. Add optional per-agent max_depth field for tighter author-controlled bounds. - Engine: Remove self-reference path equality check in both _execute_subworkflow() and _execute_subworkflow_with_inputs() - Engine: Add per-agent max_depth enforcement alongside global limit - Schema: Add max_depth field to AgentDef with validation - Tests: Replace circular reference test with depth-limit tests - Experimental: test-recursive.yaml self-referential countdown Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/config/schema.py | 21 ++++++++ src/conductor/engine/workflow.py | 34 ++++++------ tests/test_engine/test_subworkflow.py | 78 +++++++++++++++++++++++++-- 3 files changed, 111 insertions(+), 22 deletions(-) diff --git a/src/conductor/config/schema.py b/src/conductor/config/schema.py index da05b48..fdb3a67 100644 --- a/src/conductor/config/schema.py +++ b/src/conductor/config/schema.py @@ -493,6 +493,18 @@ class AgentDef(BaseModel): title: "{{ task_manager.output.current_issue_title }}" """ + max_depth: int | None = Field(None, ge=1, le=10) + """Per-agent sub-workflow depth limit. + + Overrides the global MAX_SUBWORKFLOW_DEPTH (10) with a tighter bound. + Only valid for type='workflow' agents. Useful for self-referential + workflows to set an explicit recursion limit. + + Example:: + + max_depth: 3 # Allow at most 3 levels of recursion + """ + max_session_seconds: float | None = Field(None, ge=1.0) """Maximum wall-clock duration for this agent's session in seconds. @@ -549,6 +561,8 @@ def validate_agent_type(self) -> AgentDef: raise ValueError("human_gate agents require 'prompt'") if self.input_mapping: raise ValueError("human_gate agents cannot have 'input_mapping'") + if self.max_depth is not None: + raise ValueError("human_gate agents cannot have 'max_depth'") elif self.type == "script": if not self.command: raise ValueError("script agents require 'command'") @@ -577,6 +591,8 @@ def validate_agent_type(self) -> AgentDef: raise ValueError("script agents cannot have 'retry'") if self.input_mapping: raise ValueError("script agents cannot have 'input_mapping'") + if self.max_depth is not None: + raise ValueError("script agents cannot have 'max_depth'") elif self.type == "workflow": if not self.workflow: raise ValueError("workflow agents require 'workflow' path") @@ -607,6 +623,11 @@ def validate_agent_type(self) -> AgentDef: f"'{self.type or 'agent'}' agents cannot have 'input_mapping' " "(only workflow agents support input_mapping)" ) + if self.max_depth is not None: + raise ValueError( + f"'{self.type or 'agent'}' agents cannot have 'max_depth' " + "(only workflow agents support max_depth)" + ) return self diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index a6d79f3..a6e34cb 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -510,6 +510,14 @@ async def _execute_subworkflow( suggestion=("Check for circular sub-workflow references or reduce nesting depth."), ) + # Per-agent depth limit (stricter than global MAX_SUBWORKFLOW_DEPTH) + if agent.max_depth is not None and self._subworkflow_depth >= agent.max_depth: + raise ExecutionError( + f"Agent '{agent.name}' max_depth ({agent.max_depth}) exceeded " + f"at depth {self._subworkflow_depth}.", + suggestion="Increase max_depth or restructure to reduce nesting.", + ) + assert agent.workflow is not None # noqa: S101 # Resolve sub-workflow path relative to parent workflow file @@ -526,15 +534,6 @@ async def _execute_subworkflow( suggestion="Check that the 'workflow' path is correct and the file exists.", ) - # Detect circular references via file path - current_path = Path(self.workflow_path).resolve() if self.workflow_path else None - if current_path is not None and sub_path == current_path: - raise ExecutionError( - f"Circular sub-workflow reference: agent '{agent.name}' " - f"references its own workflow file '{agent.workflow}'.", - suggestion="A workflow cannot reference itself as a sub-workflow.", - ) - try: sub_config = load_config(sub_path) except Exception as exc: @@ -607,6 +606,14 @@ async def _execute_subworkflow_with_inputs( suggestion="Check for circular sub-workflow references or reduce nesting depth.", ) + # Per-agent depth limit (stricter than global MAX_SUBWORKFLOW_DEPTH) + if agent.max_depth is not None and self._subworkflow_depth >= agent.max_depth: + raise ExecutionError( + f"Agent '{agent.name}' max_depth ({agent.max_depth}) exceeded " + f"at depth {self._subworkflow_depth}.", + suggestion="Increase max_depth or restructure to reduce nesting.", + ) + assert agent.workflow is not None # noqa: S101 if self.workflow_path is not None: @@ -622,15 +629,6 @@ async def _execute_subworkflow_with_inputs( suggestion="Check that the 'workflow' path is correct and the file exists.", ) - # Detect circular references via file path - current_path = Path(self.workflow_path).resolve() if self.workflow_path else None - if current_path is not None and sub_path == current_path: - raise ExecutionError( - f"Circular sub-workflow reference: agent '{agent.name}' " - f"references its own workflow file '{agent.workflow}'.", - suggestion="A workflow cannot reference itself as a sub-workflow.", - ) - try: sub_config = load_config(sub_path) except Exception as exc: diff --git a/tests/test_engine/test_subworkflow.py b/tests/test_engine/test_subworkflow.py index 6ae8c13..51625e6 100644 --- a/tests/test_engine/test_subworkflow.py +++ b/tests/test_engine/test_subworkflow.py @@ -268,10 +268,79 @@ async def test_subworkflow_file_not_found(self, tmp_workflow_dir: Path) -> None: await engine.run({}) @pytest.mark.asyncio - async def test_self_referencing_workflow(self, tmp_workflow_dir: Path) -> None: - """Test that a workflow referencing itself raises ExecutionError.""" + async def test_self_referencing_workflow_hits_depth_limit(self, tmp_workflow_dir: Path) -> None: + """Test that a self-referencing workflow is allowed but bounded by depth limit.""" + # Write a real self-referencing workflow YAML parent_path = tmp_workflow_dir / "parent.yaml" - parent_path.write_text("dummy", encoding="utf-8") + _write_yaml( + parent_path, + """\ + workflow: + name: self-ref + entry_point: sub_wf + runtime: + provider: copilot + limits: + max_iterations: 50 + agents: + - name: sub_wf + type: workflow + workflow: parent.yaml + routes: + - to: "$end" + output: {} + """, + ) + + config = WorkflowConfig( + workflow=WorkflowDef( + name="parent", + entry_point="sub_wf", + runtime=RuntimeConfig(provider="copilot"), + context=ContextConfig(mode="accumulate"), + limits=LimitsConfig(max_iterations=10), + ), + agents=[ + AgentDef( + name="sub_wf", + type="workflow", + workflow="parent.yaml", + routes=[RouteDef(to="$end")], + ), + ], + ) + + mock_provider = MagicMock() + engine = WorkflowEngine(config, mock_provider, workflow_path=parent_path) + + # Self-reference is now allowed but will hit depth limit + with pytest.raises(ExecutionError, match="depth limit exceeded"): + await engine.run({}) + + @pytest.mark.asyncio + async def test_max_depth_per_agent(self, tmp_workflow_dir: Path) -> None: + """Test that per-agent max_depth is enforced before global limit.""" + parent_path = tmp_workflow_dir / "parent.yaml" + _write_yaml( + parent_path, + """\ + workflow: + name: self-ref + entry_point: sub_wf + runtime: + provider: copilot + limits: + max_iterations: 50 + agents: + - name: sub_wf + type: workflow + workflow: parent.yaml + max_depth: 2 + routes: + - to: "$end" + output: {} + """, + ) config = WorkflowConfig( workflow=WorkflowDef( @@ -286,6 +355,7 @@ async def test_self_referencing_workflow(self, tmp_workflow_dir: Path) -> None: name="sub_wf", type="workflow", workflow="parent.yaml", + max_depth=2, routes=[RouteDef(to="$end")], ), ], @@ -294,7 +364,7 @@ async def test_self_referencing_workflow(self, tmp_workflow_dir: Path) -> None: mock_provider = MagicMock() engine = WorkflowEngine(config, mock_provider, workflow_path=parent_path) - with pytest.raises(ExecutionError, match="Circular sub-workflow reference"): + with pytest.raises(ExecutionError, match="max_depth.*exceeded"): await engine.run({}) From 1353d89574ae0255ed709ae6acc9db0950b15d06 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 21 Apr 2026 12:10:49 -0700 Subject: [PATCH 13/42] feat(config): add optional metadata dict to workflow definition Add a metadata field to WorkflowDef that allows workflow authors to attach arbitrary key-value pairs for external tooling. The metadata is included verbatim in the workflow_started event, enabling downstream consumers (dashboards, trackers, enrichers) to adapt behavior without parsing the YAML source. Example usage in workflow YAML: workflow: name: twig-sdlc metadata: tracker: ado project_url: https://dev.azure.com/org/Project work_item_id_agent: intake work_item_id_field: epic_id The field defaults to an empty dict, so existing workflows are unaffected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/config/schema.py | 7 +++++++ src/conductor/engine/workflow.py | 1 + 2 files changed, 8 insertions(+) diff --git a/src/conductor/config/schema.py b/src/conductor/config/schema.py index 527c50b..7594d49 100644 --- a/src/conductor/config/schema.py +++ b/src/conductor/config/schema.py @@ -738,6 +738,13 @@ class WorkflowDef(BaseModel): hooks: HooksConfig | None = None """Lifecycle event hooks.""" + metadata: dict[str, Any] = Field(default_factory=dict) + """Arbitrary key-value metadata for external tooling (dashboards, trackers, etc.). + + Included verbatim in the ``workflow_started`` event so downstream + consumers can use it for enrichment without parsing the YAML source. + """ + class WorkflowConfig(BaseModel): """Complete workflow configuration file.""" diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 484192b..f7992cd 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -1134,6 +1134,7 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: for r in f.routes ], **self._yaml_source_field(), + "metadata": self.config.workflow.metadata, }, ) From 7f6bc16c32cfddd0a55c41c0b306f561844eecd7 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 21 Apr 2026 12:23:36 -0700 Subject: [PATCH 14/42] feat(cli): add --metadata flag for runtime metadata injection Add --metadata / -m flag to 'conductor run' that accepts key=value pairs, merged on top of YAML-declared metadata. This enables callers to inject dynamic values at invocation time: conductor run twig-sdlc.yaml --metadata work_item_id=1814 CLI metadata is: - Parsed separately from --input (different binding path) - Merged on top of YAML metadata (CLI wins on conflicts) - Forwarded through --web-bg background process spawning - Included in the workflow_started event alongside YAML metadata Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/cli/app.py | 17 +++++++++++++++++ src/conductor/cli/bg_runner.py | 7 +++++++ src/conductor/cli/run.py | 6 ++++++ 3 files changed, 30 insertions(+) diff --git a/src/conductor/cli/app.py b/src/conductor/cli/app.py index 31c2d23..cadb3aa 100644 --- a/src/conductor/cli/app.py +++ b/src/conductor/cli/app.py @@ -238,6 +238,14 @@ def run( help="Workflow inputs in name=value format. Can be repeated.", ), ] = None, + raw_metadata: Annotated[ + list[str] | None, + typer.Option( + "--metadata", + "-m", + help="Workflow metadata in key=value format. Merged on top of YAML metadata. Can be repeated.", + ), + ] = None, dry_run: Annotated[ bool, typer.Option( @@ -300,12 +308,14 @@ def run( Execute a multi-agent workflow defined in the specified YAML file. Workflow inputs can be provided using --input flags. + Metadata can be provided using --metadata flags (merged on top of YAML metadata). \b Examples: conductor run workflow.yaml conductor run workflow.yaml --input question="What is Python?" conductor run workflow.yaml -i question="Hello" -i context="Programming" + conductor run workflow.yaml --metadata tracker=ado -m work_item_id=1814 conductor run workflow.yaml --provider copilot conductor run workflow.yaml --dry-run conductor run workflow.yaml --skip-gates @@ -377,6 +387,11 @@ def run( # Also parse --input.name=value style from sys.argv inputs.update(InputCollector.extract_from_args()) + # Parse --metadata key=value flags (separate from inputs) + cli_metadata: dict[str, str] = {} + if raw_metadata: + cli_metadata.update(parse_input_flags(raw_metadata)) + # Resolve log file path resolved_log_file: Path | None = None if log_file is not None: @@ -398,6 +413,7 @@ def run( log_file=resolved_log_file, no_interactive=True, # Always non-interactive in background web_port=web_port, + metadata=cli_metadata, ) console.print(f"[bold cyan]Dashboard:[/bold cyan] {url}") console.print( @@ -422,6 +438,7 @@ def run( web=web, web_port=web_port, web_bg=web_bg, + metadata=cli_metadata, ) ) diff --git a/src/conductor/cli/bg_runner.py b/src/conductor/cli/bg_runner.py index e193ae0..9037e56 100644 --- a/src/conductor/cli/bg_runner.py +++ b/src/conductor/cli/bg_runner.py @@ -62,6 +62,7 @@ def launch_background( log_file: Path | None = None, no_interactive: bool = True, web_port: int = 0, + metadata: dict[str, str] | None = None, ) -> str: """Fork a detached child process running the workflow with a web dashboard. @@ -77,6 +78,7 @@ def launch_background( log_file: Optional log file path. no_interactive: Whether to disable interactive mode (always True for bg). web_port: Desired port (0 = auto-select). + metadata: Optional CLI metadata key=value pairs. Returns: The dashboard URL (e.g. ``http://127.0.0.1:8080``). @@ -107,6 +109,11 @@ def launch_background( for key, value in inputs.items(): cmd.extend(["--input", f"{key}={_serialize_value(value)}"]) + # Forward metadata + if metadata: + for key, value in metadata.items(): + cmd.extend(["--metadata", f"{key}={value}"]) + if provider_override: cmd.extend(["--provider", provider_override]) diff --git a/src/conductor/cli/run.py b/src/conductor/cli/run.py index 32ac61e..05291f9 100644 --- a/src/conductor/cli/run.py +++ b/src/conductor/cli/run.py @@ -990,6 +990,7 @@ async def run_workflow_async( web: bool = False, web_port: int = 0, web_bg: bool = False, + metadata: dict[str, str] | None = None, ) -> dict[str, Any]: """Execute a workflow asynchronously. @@ -1003,6 +1004,7 @@ async def run_workflow_async( web: If True, start a real-time web dashboard. web_port: Port for the web dashboard (0 = auto-select). web_bg: If True, auto-shutdown dashboard after workflow + client disconnect. + metadata: Optional CLI metadata to merge on top of YAML-declared metadata. Returns: The workflow output as a dictionary. @@ -1054,6 +1056,10 @@ async def run_workflow_async( config = load_config(workflow_path) verbose_log_timing("Configuration loaded", time.time() - load_start) + # Merge CLI metadata on top of YAML-declared metadata + if metadata: + config.workflow.metadata.update(metadata) + # Log workflow details verbose_log(f"Workflow: {config.workflow.name}") verbose_log(f"Entry point: {config.workflow.entry_point}") From 22a82bd406c22f8b40cb7d7f32959fbc11fc6825 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 21 Apr 2026 12:27:40 -0700 Subject: [PATCH 15/42] test: add metadata schema and loader tests 7 new tests verifying: - Schema: metadata defaults to empty dict, accepts arbitrary keys, independent from input/context fields - Loader: metadata round-trips through YAML, omission gives empty dict, nested values preserved, metadata and input are separate namespaces All 140 config tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/test_config/test_loader.py | 102 +++++++++++++++++++++++++++++++ tests/test_config/test_schema.py | 38 ++++++++++++ 2 files changed, 140 insertions(+) diff --git a/tests/test_config/test_loader.py b/tests/test_config/test_loader.py index e4d25dd..7247255 100644 --- a/tests/test_config/test_loader.py +++ b/tests/test_config/test_loader.py @@ -480,3 +480,105 @@ def test_route_to_parallel_group(self) -> None: """ config = load_config_string(yaml_content) assert config.agents[0].routes[0].to == "pg" + + +class TestMetadataLoading: + """Tests for workflow metadata loading from YAML.""" + + def test_metadata_from_yaml(self) -> None: + """Test that metadata is loaded from YAML workflow section.""" + yaml_content = """ +workflow: + name: test-wf + entry_point: agent1 + metadata: + tracker: ado + project_url: https://dev.azure.com/org/Project + work_item_id_agent: intake + work_item_id_field: epic_id + +agents: + - name: agent1 + model: gpt-4 + prompt: "Hello" + routes: + - to: $end +""" + config = load_config_string(yaml_content) + assert config.workflow.metadata == { + "tracker": "ado", + "project_url": "https://dev.azure.com/org/Project", + "work_item_id_agent": "intake", + "work_item_id_field": "epic_id", + } + + def test_no_metadata_in_yaml(self) -> None: + """Test that omitting metadata from YAML gives empty dict.""" + yaml_content = """ +workflow: + name: test-wf + entry_point: agent1 + +agents: + - name: agent1 + model: gpt-4 + prompt: "Hello" + routes: + - to: $end +""" + config = load_config_string(yaml_content) + assert config.workflow.metadata == {} + + def test_metadata_with_nested_values(self) -> None: + """Test that metadata supports nested dicts and lists.""" + yaml_content = """ +workflow: + name: test-wf + entry_point: agent1 + metadata: + tracker: jira + config: + base_url: https://jira.example.com + project_key: PROJ + labels: + - backend + - infra + +agents: + - name: agent1 + model: gpt-4 + prompt: "Hello" + routes: + - to: $end +""" + config = load_config_string(yaml_content) + assert config.workflow.metadata["tracker"] == "jira" + assert config.workflow.metadata["config"]["base_url"] == "https://jira.example.com" + assert config.workflow.metadata["labels"] == ["backend", "infra"] + + def test_metadata_independent_from_input(self) -> None: + """Test that metadata and input are completely separate namespaces.""" + yaml_content = """ +workflow: + name: test-wf + entry_point: agent1 + input: + question: + type: string + description: User question + metadata: + tracker: github + repo: owner/repo + +agents: + - name: agent1 + model: gpt-4 + prompt: "{{ workflow.input.question }}" + routes: + - to: $end +""" + config = load_config_string(yaml_content) + assert "question" in config.workflow.input + assert "question" not in config.workflow.metadata + assert "tracker" in config.workflow.metadata + assert "tracker" not in config.workflow.input diff --git a/tests/test_config/test_schema.py b/tests/test_config/test_schema.py index dc8960e..e2cbba8 100644 --- a/tests/test_config/test_schema.py +++ b/tests/test_config/test_schema.py @@ -606,6 +606,44 @@ def test_full_workflow(self) -> None: assert workflow.context.mode == "explicit" assert workflow.limits.max_iterations == 20 + def test_metadata_defaults_to_empty_dict(self) -> None: + """Test that metadata defaults to empty dict when not specified.""" + workflow = WorkflowDef(name="test", entry_point="agent1") + assert workflow.metadata == {} + + def test_metadata_accepts_arbitrary_keys(self) -> None: + """Test that metadata accepts any key-value pairs.""" + workflow = WorkflowDef( + name="test", + entry_point="agent1", + metadata={ + "tracker": "ado", + "project_url": "https://dev.azure.com/org/Project", + "work_item_id": "1814", + "nested": {"key": "value"}, + "count": 42, + }, + ) + assert workflow.metadata["tracker"] == "ado" + assert workflow.metadata["project_url"] == "https://dev.azure.com/org/Project" + assert workflow.metadata["work_item_id"] == "1814" + assert workflow.metadata["nested"] == {"key": "value"} + assert workflow.metadata["count"] == 42 + + def test_metadata_does_not_affect_other_fields(self) -> None: + """Test that metadata is independent from input, context, etc.""" + workflow = WorkflowDef( + name="test", + entry_point="agent1", + input={"goal": InputDef(type="string")}, + metadata={"tracker": "ado"}, + ) + assert workflow.metadata == {"tracker": "ado"} + assert "goal" in workflow.input + # Metadata and input are completely separate + assert "tracker" not in workflow.input + assert "goal" not in workflow.metadata + class TestWorkflowConfig: """Tests for WorkflowConfig model.""" From ebdcb8aea1cee10e040c61fb64becabcf580e7e1 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 21 Apr 2026 13:51:37 -0700 Subject: [PATCH 16/42] fix: wrap long help string to satisfy E501 line-length lint Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/cli/app.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/conductor/cli/app.py b/src/conductor/cli/app.py index cadb3aa..ecc3847 100644 --- a/src/conductor/cli/app.py +++ b/src/conductor/cli/app.py @@ -243,7 +243,10 @@ def run( typer.Option( "--metadata", "-m", - help="Workflow metadata in key=value format. Merged on top of YAML metadata. Can be repeated.", + help=( + "Workflow metadata in key=value format. " + "Merged on top of YAML metadata. Can be repeated." + ), ), ] = None, dry_run: Annotated[ From 81e5720fed6fecfc77c610a9474fbeb571f69335 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 21 Apr 2026 14:15:39 -0700 Subject: [PATCH 17/42] style: ruff format workflow.py Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index a6d79f3..5c4891b 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -2690,9 +2690,7 @@ async def execute_single_item(item: Any, index: int, key: str) -> tuple[str, Any else: wf_ctx = agent_context.get("workflow", {}) sub_inputs = ( - dict(wf_ctx.get("input", {})) - if isinstance(wf_ctx, dict) - else {} + dict(wf_ctx.get("input", {})) if isinstance(wf_ctx, dict) else {} ) # Execute sub-workflow From c96a05f27994b159788d35bf516e03910754ac37 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 21 Apr 2026 14:15:51 -0700 Subject: [PATCH 18/42] style: ruff format workflow.py Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index a6e34cb..16444e8 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -2688,9 +2688,7 @@ async def execute_single_item(item: Any, index: int, key: str) -> tuple[str, Any else: wf_ctx = agent_context.get("workflow", {}) sub_inputs = ( - dict(wf_ctx.get("input", {})) - if isinstance(wf_ctx, dict) - else {} + dict(wf_ctx.get("input", {})) if isinstance(wf_ctx, dict) else {} ) # Execute sub-workflow From 0d45c4a1d9d65413ff651436596710e17c390737 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 09:56:00 -0700 Subject: [PATCH 19/42] feat: add run_id and log_file for deterministic run linking Propagate the event log's random hex suffix as a run_id across all systems: - EventLogSubscriber: expose run_id property (was already generated) - WorkflowEngine: accept run_id + log_file params, include in workflow_started event - PID files: include run_id + log_file fields - Web dashboard: add /api/info endpoint returning run_id, log_file, workflow_name, started_at, metadata This enables the central dashboard to match per-run dashboards to event logs by exact run_id instead of fragile name/timestamp heuristics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/cli/pid.py | 12 +++++++++++- src/conductor/cli/run.py | 2 ++ src/conductor/engine/event_log.py | 9 +++++++-- src/conductor/engine/workflow.py | 6 ++++++ src/conductor/web/server.py | 18 ++++++++++++++++++ 5 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/conductor/cli/pid.py b/src/conductor/cli/pid.py index 420bbcf..540337a 100644 --- a/src/conductor/cli/pid.py +++ b/src/conductor/cli/pid.py @@ -38,13 +38,21 @@ def pid_dir() -> Path: return d -def write_pid_file(pid: int, port: int, workflow_path: str | Path) -> Path: +def write_pid_file( + pid: int, + port: int, + workflow_path: str | Path, + run_id: str = "", + log_file: str = "", +) -> Path: """Write a PID file for a background workflow process. Args: pid: Process ID of the background child. port: TCP port the web dashboard is listening on. workflow_path: Path to the workflow YAML file. + run_id: Unique run identifier (from event log subscriber). + log_file: Path to the JSONL event log file. Returns: Path to the created PID file. @@ -58,6 +66,8 @@ def write_pid_file(pid: int, port: int, workflow_path: str | Path) -> Path: "port": port, "workflow": str(workflow_path), "started_at": datetime.now(UTC).isoformat(), + "run_id": run_id, + "log_file": log_file, } filepath.write_text(json.dumps(data, indent=2)) diff --git a/src/conductor/cli/run.py b/src/conductor/cli/run.py index 05291f9..bac9eba 100644 --- a/src/conductor/cli/run.py +++ b/src/conductor/cli/run.py @@ -1122,6 +1122,8 @@ async def run_workflow_async( event_emitter=emitter, keyboard_listener=listener, web_dashboard=dashboard, + run_id=event_log_subscriber.run_id if event_log_subscriber else "", + log_file=str(event_log_subscriber.path) if event_log_subscriber else "", ) # Share interrupt_event with dashboard so POST /api/stop can abort agents diff --git a/src/conductor/engine/event_log.py b/src/conductor/engine/event_log.py index 0b5432d..ff06208 100644 --- a/src/conductor/engine/event_log.py +++ b/src/conductor/engine/event_log.py @@ -61,8 +61,8 @@ def __init__(self, workflow_name: str) -> None: ts = time.strftime("%Y%m%d-%H%M%S") # Append random suffix to avoid filename collisions # when multiple runs start in the same second - suffix = secrets.token_hex(4) - ts = f"{ts}-{suffix}" + self._run_id = secrets.token_hex(4) + ts = f"{ts}-{self._run_id}" self._path = ( Path(tempfile.gettempdir()) / "conductor" @@ -71,6 +71,11 @@ def __init__(self, workflow_name: str) -> None: self._path.parent.mkdir(parents=True, exist_ok=True) self._handle = open(self._path, "w", encoding="utf-8") # noqa: SIM115 + @property + def run_id(self) -> str: + """Unique run identifier (8-char hex).""" + return self._run_id + @property def path(self) -> Path: """Path to the JSONL log file.""" diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index f7992cd..0dfd198 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -270,6 +270,8 @@ def __init__( keyboard_listener: KeyboardListener | None = None, web_dashboard: WebDashboard | None = None, _subworkflow_depth: int = 0, + run_id: str = "", + log_file: str = "", ) -> None: """Initialize the WorkflowEngine. @@ -308,6 +310,8 @@ def __init__( self.config = config self.skip_gates = skip_gates self.workflow_path = workflow_path + self._run_id = run_id + self._log_file = log_file self.context = WorkflowContext() self.renderer = TemplateRenderer() self.router = Router() @@ -1135,6 +1139,8 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: ], **self._yaml_source_field(), "metadata": self.config.workflow.metadata, + "run_id": self._run_id, + "log_file": self._log_file, }, ) diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index 892166a..e5e2e43 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -156,6 +156,24 @@ async def favicon() -> FileResponse: async def get_state() -> JSONResponse: return JSONResponse(content=self._event_history) + @app.get("/api/info") + async def get_info() -> JSONResponse: + """Return run identity for dashboard linking.""" + # Extract from first workflow_started event + info: dict[str, Any] = {} + for event in self._event_history: + if event.get("type") == "workflow_started": + data = event.get("data", {}) + info = { + "run_id": data.get("run_id", ""), + "log_file": data.get("log_file", ""), + "workflow_name": data.get("name", ""), + "started_at": event.get("timestamp", 0), + "metadata": data.get("metadata", {}), + } + break + return JSONResponse(content=info) + @app.get("/api/logs") async def download_logs() -> JSONResponse: """Download the full event history as a JSON file.""" From 7768dc49b616aecd9c425ab7e384696d5bba42db Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 12:58:03 -0700 Subject: [PATCH 20/42] fix(composition): forward parent agent outputs to sub-workflow context When a parent workflow calls a sub-workflow via type: workflow, the child engine now inherits the parent's agent outputs in its context. This allows sub-workflow agents to access parent agent state (e.g., task_manager.output, pr_group_manager.output) by declaring them in their input: list, even when input_mapping doesn't cover all fields. Previously, sub-workflow agents could only access workflow.input.* (populated via input_mapping) and their own sibling agents' outputs. Parent agent outputs were lost at the sub-workflow boundary, causing nested sub-workflows to see default values (0, '') instead of the actual parent state. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 9dd9bc9..987cc1b 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -578,6 +578,14 @@ async def _execute_subworkflow( _subworkflow_depth=self._subworkflow_depth + 1, ) + # Inject parent agent outputs into the child workflow's context. + # This allows sub-workflow agents that declare parent agents in their + # input: list (e.g., task_manager.output?) to access parent state + # even when input_mapping doesn't cover all fields. + for key, value in context.items(): + if key not in ("workflow", "context") and isinstance(value, dict): + child_engine.context.agent_outputs[key] = value.get("output", value) + return await child_engine.run(sub_inputs) def _get_context_window_for_agent(self, agent: AgentDef) -> int | None: From 9bb21dd14509ee8c69ae393e27493108a5c653a1 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 13:54:39 -0700 Subject: [PATCH 21/42] feat: breadcrumb navigation and depth-isolated subworkflow rendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds full subworkflow awareness to the per-run web dashboard: State pollution fix: - Added wf_depth counter to workflow store — only depth-0 workflow_started initializes root context. Inner workflow events are routed to isolated SubworkflowContext objects. - Each subworkflow invocation gets its own nodes/routes/agents maps, keyed by (parentAgent, iteration). Repeated runs of the same subworkflow no longer share state. Subworkflow event handling: - Added TypeScript types for subworkflow_started, subworkflow_completed, subworkflow_failed events (mirrors engine emit). - Event handlers create/update child contexts and track the active context path for routing subsequent events. Breadcrumb navigation: - New BreadcrumbBar component shows the context stack above the graph (e.g., Root > twig-sdlc-planning > plan-issue). - Click any breadcrumb to navigate to that context level. - Double-click a workflow agent node in the graph to dive into its subworkflow context. - Graph rebuilds automatically when context changes. Context stack architecture: - SubworkflowContext[] tree structure mirrors workflow nesting. - activeContextPath tracks where live events are routed. - viewContextPath tracks what the user is viewing (independent). - getViewedContext() returns the correct nodes/routes for rendering. - All event handlers use activeTarget() helper to route to the correct context's nodes/groupProgress. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/web/frontend/src/App.tsx | 2 + .../src/components/graph/WorkflowGraph.tsx | 49 +- .../src/components/layout/BreadcrumbBar.tsx | 44 + .../web/frontend/src/lib/constants.ts | 2 +- .../web/frontend/src/stores/workflow-store.ts | 810 +++++++++++++----- .../web/frontend/src/types/events.ts | 24 + 6 files changed, 703 insertions(+), 228 deletions(-) create mode 100644 src/conductor/web/frontend/src/components/layout/BreadcrumbBar.tsx diff --git a/src/conductor/web/frontend/src/App.tsx b/src/conductor/web/frontend/src/App.tsx index 111e823..9cde4f9 100644 --- a/src/conductor/web/frontend/src/App.tsx +++ b/src/conductor/web/frontend/src/App.tsx @@ -1,5 +1,6 @@ import { useState, useEffect } from 'react'; import { Header } from '@/components/layout/Header'; +import { BreadcrumbBar } from '@/components/layout/BreadcrumbBar'; import { StatusBar } from '@/components/layout/StatusBar'; import { ReplayBar } from '@/components/layout/ReplayBar'; import { ResizableLayout } from '@/components/layout/ResizableLayout'; @@ -55,6 +56,7 @@ export default function App() {
{isReplayMode ? : }
+ {replayMode ? : }
diff --git a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx index 3db847d..e11d051 100644 --- a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx +++ b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx @@ -69,27 +69,43 @@ function EdgeMarkers() { } export function WorkflowGraph() { - const agents = useWorkflowStore((s) => s.agents); - const routes = useWorkflowStore((s) => s.routes); - const parallelGroups = useWorkflowStore((s) => s.parallelGroups); - const forEachGroups = useWorkflowStore((s) => s.forEachGroups); - const storeNodes = useWorkflowStore((s) => s.nodes); - const groupProgress = useWorkflowStore((s) => s.groupProgress); + const getViewedContext = useWorkflowStore((s) => s.getViewedContext); + const viewContextPath = useWorkflowStore((s) => s.viewContextPath); const selectNode = useWorkflowStore((s) => s.selectNode); const selectedNode = useWorkflowStore((s) => s.selectedNode); const workflowStatus = useWorkflowStore((s) => s.workflowStatus); - const entryPoint = useWorkflowStore((s) => s.entryPoint); const wsStatus = useWorkflowStore((s) => s.wsStatus); const workflowFailedAgent = useWorkflowStore((s) => s.workflowFailedAgent); + const navigateIntoSubworkflow = useWorkflowStore((s) => s.navigateIntoSubworkflow); + + // Get the data for the currently viewed context + const viewCtx = getViewedContext(); + const { agents, routes, parallelGroups, forEachGroups, nodes: storeNodes, groupProgress, entryPoint, subworkflowContexts } = viewCtx; const [flowNodes, setFlowNodes, onNodesChange] = useNodesState>([]); const [flowEdges, setFlowEdges, onEdgesChange] = useEdgesState([]); const graphBuilt = useRef(false); + const prevViewPath = useRef(''); - // Build graph when agents first appear + // Rebuild graph when context changes (breadcrumb navigation) or when agents first appear + const viewPathKey = JSON.stringify(viewContextPath); useEffect(() => { - if (agents.length === 0) return; + if (agents.length === 0) { + // Reset if navigated to empty context + if (prevViewPath.current !== viewPathKey) { + graphBuilt.current = false; + prevViewPath.current = viewPathKey; + } + return; + } + + // Force rebuild on context switch + if (prevViewPath.current !== viewPathKey) { + graphBuilt.current = false; + prevViewPath.current = viewPathKey; + } + if (graphBuilt.current) return; graphBuilt.current = true; @@ -98,7 +114,7 @@ export function WorkflowGraph() { ); setFlowNodes(nodes); setFlowEdges(edges); - }, [agents, routes, parallelGroups, forEachGroups, storeNodes, groupProgress, entryPoint, setFlowNodes, setFlowEdges]); + }, [agents, routes, parallelGroups, forEachGroups, storeNodes, groupProgress, entryPoint, setFlowNodes, setFlowEdges, viewPathKey]); // Update node data when store nodes change (status, progress, etc.) useEffect(() => { @@ -154,6 +170,18 @@ export function WorkflowGraph() { [selectNode], ); + // Double-click on workflow agent nodes to navigate into subworkflow + const onNodeDoubleClick = useCallback( + (_: React.MouseEvent, node: Node) => { + // Check if this node has a subworkflow context + const hasSubworkflow = subworkflowContexts.some((c) => c.parentAgent === node.id); + if (hasSubworkflow) { + navigateIntoSubworkflow(node.id); + } + }, + [subworkflowContexts, navigateIntoSubworkflow], + ); + const onPaneClick = useCallback(() => { selectNode(null); }, [selectNode]); @@ -220,6 +248,7 @@ export function WorkflowGraph() { onNodesChange={onNodesChange} onEdgesChange={onEdgesChange} onNodeClick={onNodeClick} + onNodeDoubleClick={onNodeDoubleClick} onPaneClick={onPaneClick} nodeTypes={nodeTypes} edgeTypes={edgeTypes} diff --git a/src/conductor/web/frontend/src/components/layout/BreadcrumbBar.tsx b/src/conductor/web/frontend/src/components/layout/BreadcrumbBar.tsx new file mode 100644 index 0000000..f85d24f --- /dev/null +++ b/src/conductor/web/frontend/src/components/layout/BreadcrumbBar.tsx @@ -0,0 +1,44 @@ +import { ChevronRight, Layers } from 'lucide-react'; +import { useWorkflowStore } from '@/stores/workflow-store'; +import type { BreadcrumbEntry } from '@/stores/workflow-store'; + +export function BreadcrumbBar() { + const getBreadcrumbs = useWorkflowStore((s) => s.getBreadcrumbs); + const navigateToContext = useWorkflowStore((s) => s.navigateToContext); + const viewContextPath = useWorkflowStore((s) => s.viewContextPath); + const subworkflowContexts = useWorkflowStore((s) => s.subworkflowContexts); + + // Only show if there are subworkflows + if (subworkflowContexts.length === 0 && viewContextPath.length === 0) return null; + + const crumbs: BreadcrumbEntry[] = getBreadcrumbs(); + + return ( +
+ + {crumbs.map((crumb, idx) => { + const isLast = idx === crumbs.length - 1; + const isActive = JSON.stringify(crumb.path) === JSON.stringify(viewContextPath); + return ( + + {idx > 0 && } + {isLast ? ( + + {crumb.label} + + ) : ( + + )} + + ); + })} +
+ ); +} diff --git a/src/conductor/web/frontend/src/lib/constants.ts b/src/conductor/web/frontend/src/lib/constants.ts index 37ed592..05ba6b8 100644 --- a/src/conductor/web/frontend/src/lib/constants.ts +++ b/src/conductor/web/frontend/src/lib/constants.ts @@ -1,5 +1,5 @@ export type NodeStatus = 'pending' | 'running' | 'completed' | 'failed' | 'paused' | 'idle' | 'waiting'; -export type NodeType = 'agent' | 'script' | 'human_gate' | 'parallel_group' | 'for_each_group' | 'start' | 'end'; +export type NodeType = 'agent' | 'script' | 'human_gate' | 'parallel_group' | 'for_each_group' | 'workflow' | 'start' | 'end'; export const NODE_STATUS_HEX: Record = { pending: '#6b7280', diff --git a/src/conductor/web/frontend/src/stores/workflow-store.ts b/src/conductor/web/frontend/src/stores/workflow-store.ts index efa4d3e..c0d06cc 100644 --- a/src/conductor/web/frontend/src/stores/workflow-store.ts +++ b/src/conductor/web/frontend/src/stores/workflow-store.ts @@ -29,6 +29,9 @@ import type { ForEachCompletedData, AgentPausedData, AgentResumedData, + SubworkflowStartedData, + SubworkflowCompletedData, + SubworkflowFailedData, } from '@/types/events'; export interface ActivityEntry { @@ -143,6 +146,47 @@ export interface ForEachGroup { export type WorkflowStatus = 'pending' | 'running' | 'completed' | 'failed'; export type WsStatus = 'connecting' | 'connected' | 'disconnected' | 'reconnecting'; +/** A single subworkflow execution context — isolated state for one invocation. */ +export interface SubworkflowContext { + /** Agent in the parent that triggered this subworkflow */ + parentAgent: string; + /** Iteration number (for repeated subworkflow calls) */ + iteration: number; + /** The .yaml file reference */ + workflowFile: string; + /** Resolved workflow name (from inner workflow_started) */ + workflowName: string; + status: WorkflowStatus; + /** Graph structure — isolated from parent */ + agents: WorkflowAgent[]; + routes: RouteEdge[]; + parallelGroups: ParallelGroup[]; + forEachGroups: ForEachGroup[]; + nodes: Record; + groupProgress: Record; + highlightedEdges: HighlightedEdge[]; + entryPoint: string | null; + /** Nested child contexts (subworkflows within this subworkflow) */ + children: SubworkflowContext[]; + /** Counters */ + agentsCompleted: number; + agentsTotal: number; + totalCost: number; + totalTokens: number; + /** Event/activity log scoped to this context */ + eventLog: LogEntry[]; + activityLog: ActivityLogEntry[]; + workflowOutput: unknown | null; + workflowFailure: { error_type?: string; message?: string } | null; +} + +/** Breadcrumb entry for navigation */ +export interface BreadcrumbEntry { + label: string; + /** Index path to reach this context: [] = root, [0] = first child, [0, 2] = grandchild */ + path: number[]; +} + export interface HighlightedEdge { from: string; to: string; @@ -210,6 +254,18 @@ interface WorkflowState { lastEventTime: number | null; isPaused: boolean; + // --- Subworkflow depth tracking --- + /** Current nesting depth: 0 = root workflow events are active */ + wfDepth: number; + /** Subworkflow contexts — each child workflow gets isolated state */ + subworkflowContexts: SubworkflowContext[]; + /** The context currently being populated by child events (stack of indices into children arrays) */ + activeContextPath: number[]; + + // --- Breadcrumb navigation --- + /** Path to the currently *viewed* context ([] = root) */ + viewContextPath: number[]; + // Replay mode state replayMode: boolean; replayEvents: WorkflowEvent[]; @@ -226,6 +282,26 @@ interface WorkflowState { setEdgeHighlight: (from: string, to: string, state: 'highlighted' | 'taken' | 'failed') => void; clearEdgeHighlight: (from: string, to: string) => void; + // Breadcrumb navigation actions + navigateToContext: (path: number[]) => void; + navigateUp: () => void; + navigateIntoSubworkflow: (agentName: string, iteration?: number) => void; + + // Computed: get the currently viewed context's data + getViewedContext: () => { + workflowName: string; + agents: WorkflowAgent[]; + routes: RouteEdge[]; + parallelGroups: ParallelGroup[]; + forEachGroups: ForEachGroup[]; + nodes: Record; + groupProgress: Record; + highlightedEdges: HighlightedEdge[]; + entryPoint: string | null; + subworkflowContexts: SubworkflowContext[]; + }; + getBreadcrumbs: () => BreadcrumbEntry[]; + // Replay actions setReplayMode: (events: WorkflowEvent[]) => void; setReplayPosition: (position: number) => void; @@ -270,7 +346,68 @@ function addForEachItemActivity(nodes: Record, groupName: stri } } -export const useWorkflowStore = create((set) => ({ +// --------------------------------------------------------------------------- +// Subworkflow context helpers +// --------------------------------------------------------------------------- + +function createSubworkflowContext(parentAgent: string, iteration: number, workflowFile: string): SubworkflowContext { + return { + parentAgent, + iteration, + workflowFile, + workflowName: '', + status: 'pending', + agents: [], + routes: [], + parallelGroups: [], + forEachGroups: [], + nodes: {}, + groupProgress: {}, + highlightedEdges: [], + entryPoint: null, + children: [], + agentsCompleted: 0, + agentsTotal: 0, + totalCost: 0, + totalTokens: 0, + eventLog: [], + activityLog: [], + workflowOutput: null, + workflowFailure: null, + }; +} + +/** Resolve a SubworkflowContext from a path of indices (e.g. [0, 2] = first child's third child). */ +function resolveContext(contexts: SubworkflowContext[], path: number[]): SubworkflowContext | null { + if (path.length === 0) return null; + let ctx: SubworkflowContext | undefined = contexts[path[0]!]; + for (let i = 1; i < path.length && ctx; i++) { + ctx = ctx.children[path[i]!]; + } + return ctx ?? null; +} + +/** Find a child context by parent agent name and iteration within a context's children. */ +function findChildContext(contexts: SubworkflowContext[], agentName: string, iteration?: number): { ctx: SubworkflowContext; index: number } | null { + for (let i = contexts.length - 1; i >= 0; i--) { + const c = contexts[i]!; + if (c.parentAgent === agentName && (iteration == null || c.iteration === iteration)) { + return { ctx: c, index: i }; + } + } + return null; +} + +/** Get the nodes/routes/etc. for the currently active child context (where events should be routed). */ +function _getActiveChildState(state: WorkflowState): { nodes: Record; groupProgress: Record; eventLog: LogEntry[]; activityLog: ActivityLogEntry[] } | null { + if (state.activeContextPath.length === 0) return null; + const ctx = resolveContext(state.subworkflowContexts, state.activeContextPath); + if (!ctx) return null; + return { nodes: ctx.nodes, groupProgress: ctx.groupProgress, eventLog: ctx.eventLog, activityLog: ctx.activityLog }; +} +void _getActiveChildState; // suppress unused warning + +export const useWorkflowStore = create((set, get) => ({ workflowName: '', workflowStatus: 'pending', workflowStartTime: null, @@ -297,6 +434,10 @@ export const useWorkflowStore = create((set) => ({ workflowOutput: null, lastEventTime: null, isPaused: false, + wfDepth: 0, + subworkflowContexts: [], + activeContextPath: [], + viewContextPath: [], replayMode: false, replayEvents: [], replayPosition: 0, @@ -354,6 +495,9 @@ export const useWorkflowStore = create((set) => ({ activityLog: [], workflowOutput: null, workflowFailedAgent: null, + wfDepth: 0, + subworkflowContexts: [], + activeContextPath: [], }; for (const event of events) { const handler = eventHandlers[event.type]; @@ -368,7 +512,6 @@ export const useWorkflowStore = create((set) => ({ if (activityEntry) { newState.activityLog.push(activityEntry); } - // Track timestamp of the last replayed event newState.lastEventTime = event.timestamp; } return newState; @@ -399,6 +542,10 @@ export const useWorkflowStore = create((set) => ({ activityLog: [], workflowOutput: null, workflowFailedAgent: null, + wfDepth: 0, + subworkflowContexts: [], + activeContextPath: [], + viewContextPath: [], }; for (const event of events) { const handler = eventHandlers[event.type]; @@ -440,6 +587,10 @@ export const useWorkflowStore = create((set) => ({ forEachGroups: [], isPaused: false, lastEventTime: null, + wfDepth: 0, + subworkflowContexts: [], + activeContextPath: [], + viewContextPath: [], }; for (const event of events) { const handler = eventHandlers[event.type]; @@ -480,70 +631,231 @@ export const useWorkflowStore = create((set) => ({ highlightedEdges: prev.highlightedEdges.filter((e) => !(e.from === from && e.to === to)), })); }, + + // --- Breadcrumb navigation --- + + navigateToContext: (path: number[]) => { + set({ viewContextPath: path, selectedNode: null }); + }, + + navigateUp: () => { + set((prev) => ({ + viewContextPath: prev.viewContextPath.slice(0, -1), + selectedNode: null, + })); + }, + + navigateIntoSubworkflow: (agentName: string, iteration?: number) => { + const state = get(); + // Determine which context list to search in + const viewPath = state.viewContextPath; + let contexts: SubworkflowContext[]; + if (viewPath.length === 0) { + contexts = state.subworkflowContexts; + } else { + const parent = resolveContext(state.subworkflowContexts, viewPath); + if (!parent) return; + contexts = parent.children; + } + const found = findChildContext(contexts, agentName, iteration); + if (found) { + set({ viewContextPath: [...viewPath, found.index], selectedNode: null }); + } + }, + + getViewedContext: () => { + const state = get(); + if (state.viewContextPath.length === 0) { + return { + workflowName: state.workflowName, + agents: state.agents, + routes: state.routes, + parallelGroups: state.parallelGroups, + forEachGroups: state.forEachGroups, + nodes: state.nodes, + groupProgress: state.groupProgress, + highlightedEdges: state.highlightedEdges, + entryPoint: state.entryPoint, + subworkflowContexts: state.subworkflowContexts, + }; + } + const ctx = resolveContext(state.subworkflowContexts, state.viewContextPath); + if (!ctx) { + // Stale path — reset to root + return { + workflowName: state.workflowName, + agents: state.agents, + routes: state.routes, + parallelGroups: state.parallelGroups, + forEachGroups: state.forEachGroups, + nodes: state.nodes, + groupProgress: state.groupProgress, + highlightedEdges: state.highlightedEdges, + entryPoint: state.entryPoint, + subworkflowContexts: state.subworkflowContexts, + }; + } + return { + workflowName: ctx.workflowName, + agents: ctx.agents, + routes: ctx.routes, + parallelGroups: ctx.parallelGroups, + forEachGroups: ctx.forEachGroups, + nodes: ctx.nodes, + groupProgress: ctx.groupProgress, + highlightedEdges: ctx.highlightedEdges, + entryPoint: ctx.entryPoint, + subworkflowContexts: ctx.children, + }; + }, + + getBreadcrumbs: () => { + const state = get(); + const crumbs: BreadcrumbEntry[] = [{ label: state.workflowName || 'Root', path: [] }]; + let contexts = state.subworkflowContexts; + for (let i = 0; i < state.viewContextPath.length; i++) { + const idx = state.viewContextPath[i]!; + const ctx = contexts[idx]; + if (!ctx) break; + crumbs.push({ label: ctx.workflowName || ctx.workflowFile || ctx.parentAgent, path: state.viewContextPath.slice(0, i + 1) }); + contexts = ctx.children; + } + return crumbs; + }, })); // --- Event handlers (mutate the passed state directly) --- type MutableState = WorkflowState; +/** Get the nodes/groupProgress/routes/highlightedEdges for the context that should receive the event. */ +function activeTarget(state: MutableState): { + nodes: Record; + groupProgress: Record; + routes: RouteEdge[]; + highlightedEdges: HighlightedEdge[]; + addCost: (cost: number) => void; + addTokens: (tokens: number) => void; + incrCompleted: () => void; +} { + if (state.activeContextPath.length > 0) { + const ctx = resolveContext(state.subworkflowContexts, state.activeContextPath); + if (ctx) { + return { + nodes: ctx.nodes, + groupProgress: ctx.groupProgress, + routes: ctx.routes, + highlightedEdges: ctx.highlightedEdges, + addCost: (cost: number) => { ctx.totalCost += cost; state.totalCost += cost; }, + addTokens: (tokens: number) => { ctx.totalTokens += tokens; state.totalTokens += tokens; }, + incrCompleted: () => { ctx.agentsCompleted++; state.agentsCompleted++; }, + }; + } + } + return { + nodes: state.nodes, + groupProgress: state.groupProgress, + routes: state.routes, + highlightedEdges: state.highlightedEdges, + addCost: (cost: number) => { state.totalCost += cost; }, + addTokens: (tokens: number) => { state.totalTokens += tokens; }, + incrCompleted: () => { state.agentsCompleted++; }, + }; +} + const eventHandlers: Record, timestamp?: number) => void> = { workflow_started: (state, _data, timestamp) => { const data = _data as unknown as WorkflowStartedData; - state.workflowStatus = 'running'; - state.workflowStartTime = timestamp ?? Date.now() / 1000; - state.workflowName = data.name || ''; - state.workflowYaml = (data as Record).yaml_source as string ?? null; - state.conductorVersion = (data as Record).version as string ?? null; - state.entryPoint = data.entry_point || null; - state.agents = data.agents || []; - state.routes = data.routes || []; - state.parallelGroups = data.parallel_groups || []; - state.forEachGroups = data.for_each_groups || []; - - // Set $start node to running - ensureNode(state.nodes, '$start', 'start'); - state.nodes['$start']!.status = 'running'; - replaceNode(state.nodes, '$start'); - - const groupAgents = new Set(); - const agentNames = new Set(); - - // Register parallel group agents - for (const pg of state.parallelGroups) { - for (const a of pg.agents) { - groupAgents.add(a); - } - agentNames.add(pg.name); - ensureNode(state.nodes, pg.name, 'parallel_group'); - state.groupProgress[pg.name] = { total: pg.agents.length, completed: 0, failed: 0 }; - for (const agentName of pg.agents) { - ensureNode(state.nodes, agentName, 'agent'); - } - } - // Register for-each groups - for (const fg of state.forEachGroups) { - agentNames.add(fg.name); - ensureNode(state.nodes, fg.name, 'for_each_group'); - state.groupProgress[fg.name] = { total: 0, completed: 0, failed: 0 }; - } + if (state.wfDepth === 0) { + // Root workflow — initialize as before + state.workflowStatus = 'running'; + state.workflowStartTime = timestamp ?? Date.now() / 1000; + state.workflowName = data.name || ''; + state.workflowYaml = (_data as Record).yaml_source as string ?? null; + state.conductorVersion = (_data as Record).version as string ?? null; + state.entryPoint = data.entry_point || null; + state.agents = data.agents || []; + state.routes = data.routes || []; + state.parallelGroups = data.parallel_groups || []; + state.forEachGroups = data.for_each_groups || []; + + ensureNode(state.nodes, '$start', 'start'); + state.nodes['$start']!.status = 'running'; + replaceNode(state.nodes, '$start'); - // Register standalone agents - for (const a of state.agents) { - if (!agentNames.has(a.name) && !groupAgents.has(a.name)) { - const nodeType = (a.type || 'agent') as NodeType; - ensureNode(state.nodes, a.name, nodeType); - if (a.model) state.nodes[a.name]!.model = a.model; - agentNames.add(a.name); + const groupAgents = new Set(); + const agentNames = new Set(); + + for (const pg of state.parallelGroups) { + for (const a of pg.agents) groupAgents.add(a); + agentNames.add(pg.name); + ensureNode(state.nodes, pg.name, 'parallel_group'); + state.groupProgress[pg.name] = { total: pg.agents.length, completed: 0, failed: 0 }; + for (const agentName of pg.agents) ensureNode(state.nodes, agentName, 'agent'); + } + for (const fg of state.forEachGroups) { + agentNames.add(fg.name); + ensureNode(state.nodes, fg.name, 'for_each_group'); + state.groupProgress[fg.name] = { total: 0, completed: 0, failed: 0 }; + } + for (const a of state.agents) { + if (!agentNames.has(a.name) && !groupAgents.has(a.name)) { + const nodeType = (a.type || 'agent') as NodeType; + ensureNode(state.nodes, a.name, nodeType); + if (a.model) state.nodes[a.name]!.model = a.model; + agentNames.add(a.name); + } + } + state.agentsTotal = agentNames.size; + } else { + // Child workflow — populate the active child context + const ctx = resolveContext(state.subworkflowContexts, state.activeContextPath); + if (ctx) { + ctx.workflowName = data.name || ''; + ctx.status = 'running'; + ctx.entryPoint = data.entry_point || null; + ctx.agents = data.agents || []; + ctx.routes = data.routes || []; + ctx.parallelGroups = data.parallel_groups || []; + ctx.forEachGroups = data.for_each_groups || []; + + ensureNode(ctx.nodes, '$start', 'start'); + ctx.nodes['$start']!.status = 'running'; + + const groupAgents = new Set(); + const agentNames = new Set(); + + for (const pg of ctx.parallelGroups) { + for (const a of pg.agents) groupAgents.add(a); + agentNames.add(pg.name); + ensureNode(ctx.nodes, pg.name, 'parallel_group'); + ctx.groupProgress[pg.name] = { total: pg.agents.length, completed: 0, failed: 0 }; + for (const agentName of pg.agents) ensureNode(ctx.nodes, agentName, 'agent'); + } + for (const fg of ctx.forEachGroups) { + agentNames.add(fg.name); + ensureNode(ctx.nodes, fg.name, 'for_each_group'); + ctx.groupProgress[fg.name] = { total: 0, completed: 0, failed: 0 }; + } + for (const a of ctx.agents) { + if (!agentNames.has(a.name) && !groupAgents.has(a.name)) { + const nodeType = (a.type || 'agent') as NodeType; + ensureNode(ctx.nodes, a.name, nodeType); + if (a.model) ctx.nodes[a.name]!.model = a.model; + agentNames.add(a.name); + } + } + ctx.agentsTotal = agentNames.size; } } - - state.agentsTotal = agentNames.size; + state.wfDepth++; }, agent_started: (state, _data, timestamp) => { const data = _data as unknown as AgentStartedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); // Snapshot previous iteration before clearing if (nd.iteration != null && (nd.output != null || nd.error_type != null)) { @@ -568,23 +880,22 @@ const eventHandlers: Record { const data = _data as unknown as AgentCompletedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'completed'; - state.agentsCompleted++; + t.incrCompleted(); nd.elapsed = data.elapsed; nd.model = data.model; nd.tokens = data.tokens; @@ -593,270 +904,241 @@ const eventHandlers: Record 0) { nd.context_pct = Math.round((data.context_window_used / data.context_window_max) * 100); } - if (data.cost_usd) state.totalCost += data.cost_usd; - if (data.tokens) state.totalTokens += data.tokens; - replaceNode(state.nodes, data.agent_name); + if (data.cost_usd) t.addCost(data.cost_usd); + if (data.tokens) t.addTokens(data.tokens); + replaceNode(t.nodes, data.agent_name); }, agent_failed: (state, _data) => { const data = _data as unknown as AgentFailedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'failed'; nd.elapsed = data.elapsed; nd.error_type = data.error_type; nd.error_message = data.message; - // Highlight edges leading to the failed agent in red - for (const route of state.routes) { + for (const route of t.routes) { if (route.to === data.agent_name) { - state.highlightedEdges = [ - ...state.highlightedEdges.filter( - (e) => !(e.from === route.from && e.to === route.to) - ), - { from: route.from, to: route.to, state: 'failed' }, - ]; + t.highlightedEdges.push({ from: route.from, to: route.to, state: 'failed' }); } } - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, agent_prompt_rendered: (state, _data) => { const data = _data as unknown as AgentPromptRenderedData; const itemKey = (_data as Record).item_key as string | undefined; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.prompt = data.rendered_prompt; nd.context_keys = data.context_keys; - // Route to per-item data when item_key is present (for-each) if (itemKey) { - addForEachItemActivity(state.nodes, data.agent_name, itemKey, { - type: 'prompt', - icon: '📝', - label: 'prompt', - text: 'Prompt rendered', + addForEachItemActivity(t.nodes, data.agent_name, itemKey, { + type: 'prompt', icon: '📝', label: 'prompt', text: 'Prompt rendered', detail: data.rendered_prompt?.slice(0, 500) || null, }); - const itemNd = state.nodes[data.agent_name]; + const itemNd = t.nodes[data.agent_name]; if (itemNd?.for_each_items) { const item = itemNd.for_each_items.find((i) => i.key === itemKey); if (item) item.prompt = data.rendered_prompt; } } - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, agent_reasoning: (state, _data) => { const data = _data as unknown as AgentReasoningData; const itemKey = (_data as Record).item_key as string | undefined; - const entry: ActivityEntry = { - type: 'reasoning', - icon: '💭', - label: 'thinking', - text: data.content, - }; - addActivity(state.nodes, data.agent_name, entry); - if (itemKey) { - addForEachItemActivity(state.nodes, data.agent_name, itemKey, entry); - } - replaceNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const entry: ActivityEntry = { type: 'reasoning', icon: '💭', label: 'thinking', text: data.content }; + addActivity(t.nodes, data.agent_name, entry); + if (itemKey) addForEachItemActivity(t.nodes, data.agent_name, itemKey, entry); + replaceNode(t.nodes, data.agent_name); }, agent_tool_start: (state, _data) => { const data = _data as unknown as AgentToolStartData; const itemKey = (_data as Record).item_key as string | undefined; - const entry: ActivityEntry = { - type: 'tool-start', - icon: '🔧', - label: 'tool', - text: data.tool_name, - detail: data.arguments || null, - }; - addActivity(state.nodes, data.agent_name, entry); - if (itemKey) { - addForEachItemActivity(state.nodes, data.agent_name, itemKey, entry); - } - replaceNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const entry: ActivityEntry = { type: 'tool-start', icon: '🔧', label: 'tool', text: data.tool_name, detail: data.arguments || null }; + addActivity(t.nodes, data.agent_name, entry); + if (itemKey) addForEachItemActivity(t.nodes, data.agent_name, itemKey, entry); + replaceNode(t.nodes, data.agent_name); }, agent_tool_complete: (state, _data) => { const data = _data as unknown as AgentToolCompleteData; const itemKey = (_data as Record).item_key as string | undefined; - const entry: ActivityEntry = { - type: 'tool-complete', - icon: '✓', - label: 'result', - text: data.tool_name || 'done', - detail: data.result || null, - }; - addActivity(state.nodes, data.agent_name, entry); - if (itemKey) { - addForEachItemActivity(state.nodes, data.agent_name, itemKey, entry); - } - replaceNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const entry: ActivityEntry = { type: 'tool-complete', icon: '✓', label: 'result', text: data.tool_name || 'done', detail: data.result || null }; + addActivity(t.nodes, data.agent_name, entry); + if (itemKey) addForEachItemActivity(t.nodes, data.agent_name, itemKey, entry); + replaceNode(t.nodes, data.agent_name); }, agent_turn_start: (state, _data) => { const data = _data as unknown as AgentTurnStartData; const itemKey = (_data as Record).item_key as string | undefined; - const entry: ActivityEntry = { - type: 'turn', - icon: '⏳', - label: 'turn', - text: `Turn ${data.turn ?? '?'}`, - }; - addActivity(state.nodes, data.agent_name, entry); - if (itemKey) { - addForEachItemActivity(state.nodes, data.agent_name, itemKey, entry); - } - replaceNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const entry: ActivityEntry = { type: 'turn', icon: '⏳', label: 'turn', text: `Turn ${data.turn ?? '?'}` }; + addActivity(t.nodes, data.agent_name, entry); + if (itemKey) addForEachItemActivity(t.nodes, data.agent_name, itemKey, entry); + replaceNode(t.nodes, data.agent_name); }, agent_message: (state, _data) => { const data = _data as unknown as AgentMessageData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.latest_message = data.content; - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, script_started: (state, _data, timestamp) => { const data = _data as { agent_name: string }; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'running'; nd.startedAt = timestamp ?? Date.now() / 1000; - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, script_completed: (state, _data) => { const data = _data as unknown as ScriptCompletedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'completed'; - state.agentsCompleted++; + t.incrCompleted(); nd.elapsed = data.elapsed; nd.stdout = data.stdout; nd.stderr = data.stderr; nd.exit_code = data.exit_code; - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, script_failed: (state, _data) => { const data = _data as unknown as ScriptFailedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'failed'; nd.elapsed = data.elapsed; nd.error_type = data.error_type; nd.error_message = data.message; - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, gate_presented: (state, _data) => { const data = _data as unknown as GatePresentedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'waiting'; nd.options = data.options; nd.option_details = data.option_details; nd.prompt = data.prompt; - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, gate_resolved: (state, _data) => { const data = _data as unknown as GateResolvedData; - const nd = ensureNode(state.nodes, data.agent_name); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'completed'; - state.agentsCompleted++; + t.incrCompleted(); nd.selected_option = data.selected_option; nd.route = data.route; nd.additional_input = data.additional_input; - replaceNode(state.nodes, data.agent_name); + replaceNode(t.nodes, data.agent_name); }, route_taken: (state, _data) => { const data = _data as unknown as RouteTakenData; - // Set edge highlight — the component will handle animation timing - state.highlightedEdges = [ - ...state.highlightedEdges.filter( - (e) => !(e.from === data.from_agent && e.to === data.to_agent) - ), - { from: data.from_agent, to: data.to_agent, state: 'taken' }, - ]; + const t = activeTarget(state); + t.highlightedEdges.push({ from: data.from_agent, to: data.to_agent, state: 'taken' }); }, parallel_started: (state, _data) => { const data = _data as unknown as ParallelStartedData; - const nd = ensureNode(state.nodes, data.group_name, 'parallel_group'); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.group_name, 'parallel_group'); nd.status = 'running'; - if (state.groupProgress[data.group_name]) { - state.groupProgress[data.group_name]!.total = data.agents.length; - state.groupProgress[data.group_name]!.completed = 0; - state.groupProgress[data.group_name]!.failed = 0; + if (t.groupProgress[data.group_name]) { + t.groupProgress[data.group_name]!.total = data.agents.length; + t.groupProgress[data.group_name]!.completed = 0; + t.groupProgress[data.group_name]!.failed = 0; } - replaceNode(state.nodes, data.group_name); + replaceNode(t.nodes, data.group_name); }, parallel_agent_completed: (state, _data) => { const data = _data as unknown as ParallelAgentCompletedData; - if (state.groupProgress[data.group_name]) { - state.groupProgress[data.group_name]!.completed++; + const t = activeTarget(state); + if (t.groupProgress[data.group_name]) { + t.groupProgress[data.group_name]!.completed++; } - const nd = ensureNode(state.nodes, data.agent_name); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'completed'; nd.elapsed = data.elapsed; nd.model = data.model; nd.tokens = data.tokens; nd.cost_usd = data.cost_usd; - // Context window tracking nd.context_window_used = data.context_window_used; nd.context_window_max = data.context_window_max; if (data.context_window_used != null && data.context_window_max != null && data.context_window_max > 0) { nd.context_pct = Math.round((data.context_window_used / data.context_window_max) * 100); } - if (data.cost_usd) state.totalCost += data.cost_usd; - if (data.tokens) state.totalTokens += data.tokens; - replaceNode(state.nodes, data.agent_name); - replaceNode(state.nodes, data.group_name); + if (data.cost_usd) t.addCost(data.cost_usd); + if (data.tokens) t.addTokens(data.tokens); + replaceNode(t.nodes, data.agent_name); + replaceNode(t.nodes, data.group_name); }, parallel_agent_failed: (state, _data) => { const data = _data as unknown as ParallelAgentFailedData; - if (state.groupProgress[data.group_name]) { - state.groupProgress[data.group_name]!.failed++; + const t = activeTarget(state); + if (t.groupProgress[data.group_name]) { + t.groupProgress[data.group_name]!.failed++; } - const nd = ensureNode(state.nodes, data.agent_name); + const nd = ensureNode(t.nodes, data.agent_name); nd.status = 'failed'; nd.elapsed = data.elapsed; nd.error_type = data.error_type; nd.error_message = data.message; - replaceNode(state.nodes, data.agent_name); - replaceNode(state.nodes, data.group_name); + replaceNode(t.nodes, data.agent_name); + replaceNode(t.nodes, data.group_name); }, parallel_completed: (state, _data) => { const data = _data as unknown as ParallelCompletedData; - state.agentsCompleted++; - const nd = ensureNode(state.nodes, data.group_name, 'parallel_group'); + const t = activeTarget(state); + t.incrCompleted(); + const nd = ensureNode(t.nodes, data.group_name, 'parallel_group'); nd.status = data.failure_count === 0 ? 'completed' : 'failed'; - replaceNode(state.nodes, data.group_name); + replaceNode(t.nodes, data.group_name); }, for_each_started: (state, _data) => { const data = _data as unknown as ForEachStartedData; - const nd = ensureNode(state.nodes, data.group_name, 'for_each_group'); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.group_name, 'for_each_group'); nd.status = 'running'; nd.for_each_items = []; - if (state.groupProgress[data.group_name]) { - state.groupProgress[data.group_name]!.total = data.item_count; - state.groupProgress[data.group_name]!.completed = 0; - state.groupProgress[data.group_name]!.failed = 0; + if (t.groupProgress[data.group_name]) { + t.groupProgress[data.group_name]!.total = data.item_count; + t.groupProgress[data.group_name]!.completed = 0; + t.groupProgress[data.group_name]!.failed = 0; } - replaceNode(state.nodes, data.group_name); + replaceNode(t.nodes, data.group_name); }, for_each_item_started: (state, _data) => { const data = _data as unknown as ForEachItemStartedData; - const nd = ensureNode(state.nodes, data.group_name, 'for_each_group'); + const t = activeTarget(state); + const nd = ensureNode(t.nodes, data.group_name, 'for_each_group'); if (!nd.for_each_items) nd.for_each_items = []; nd.for_each_items.push({ key: data.item_key ?? String(data.index), @@ -864,15 +1146,16 @@ const eventHandlers: Record { const data = _data as unknown as ForEachItemCompletedData; - if (state.groupProgress[data.group_name]) { - state.groupProgress[data.group_name]!.completed++; + const t = activeTarget(state); + if (t.groupProgress[data.group_name]) { + t.groupProgress[data.group_name]!.completed++; } - const nd = ensureNode(state.nodes, data.group_name, 'for_each_group'); + const nd = ensureNode(t.nodes, data.group_name, 'for_each_group'); if (nd.for_each_items) { const itemKey = data.item_key ?? String(data.index); const item = nd.for_each_items.find((i) => i.key === itemKey); @@ -884,15 +1167,16 @@ const eventHandlers: Record { const data = _data as unknown as ForEachItemFailedData; - if (state.groupProgress[data.group_name]) { - state.groupProgress[data.group_name]!.failed++; + const t = activeTarget(state); + if (t.groupProgress[data.group_name]) { + t.groupProgress[data.group_name]!.failed++; } - const nd = ensureNode(state.nodes, data.group_name, 'for_each_group'); + const nd = ensureNode(t.nodes, data.group_name, 'for_each_group'); if (nd.for_each_items) { const itemKey = data.item_key ?? String(data.index); const item = nd.for_each_items.find((i) => i.key === itemKey); @@ -903,61 +1187,153 @@ const eventHandlers: Record { const data = _data as unknown as ForEachCompletedData; - state.agentsCompleted++; - const nd = ensureNode(state.nodes, data.group_name, 'for_each_group'); + const t = activeTarget(state); + t.incrCompleted(); + const nd = ensureNode(t.nodes, data.group_name, 'for_each_group'); nd.status = (data.failure_count ?? 0) === 0 ? 'completed' : 'failed'; nd.elapsed = data.elapsed; nd.success_count = data.success_count; nd.failure_count = data.failure_count; - replaceNode(state.nodes, data.group_name); + replaceNode(t.nodes, data.group_name); }, workflow_completed: (state, _data) => { - const data = _data as { output?: unknown }; - state.workflowStatus = 'completed'; - state.isPaused = false; - state.workflowOutput = data.output ?? null; - if (state.nodes['$end']) { - state.nodes['$end']!.status = 'completed'; - replaceNode(state.nodes, '$end'); - } - if (state.nodes['$start']) { - state.nodes['$start']!.status = 'completed'; - replaceNode(state.nodes, '$start'); + state.wfDepth = Math.max(0, state.wfDepth - 1); + if (state.wfDepth === 0) { + // Root workflow completed + const data = _data as { output?: unknown }; + state.workflowStatus = 'completed'; + state.isPaused = false; + state.workflowOutput = data.output ?? null; + if (state.nodes['$end']) { + state.nodes['$end']!.status = 'completed'; + replaceNode(state.nodes, '$end'); + } + if (state.nodes['$start']) { + state.nodes['$start']!.status = 'completed'; + replaceNode(state.nodes, '$start'); + } + state.highlightedEdges = []; + } else { + // Child workflow completed — update its context + const ctx = resolveContext(state.subworkflowContexts, state.activeContextPath); + if (ctx) { + const data = _data as { output?: unknown }; + ctx.status = 'completed'; + ctx.workflowOutput = data.output ?? null; + if (ctx.nodes['$end']) ctx.nodes['$end']!.status = 'completed'; + if (ctx.nodes['$start']) ctx.nodes['$start']!.status = 'completed'; + ctx.highlightedEdges = []; + } + // Pop the active context path back to parent + state.activeContextPath = state.activeContextPath.slice(0, -1); } - // Clear flowing-dot edge animations now that workflow is done - state.highlightedEdges = []; }, workflow_failed: (state, _data) => { + state.wfDepth = Math.max(0, state.wfDepth - 1); const data = _data as { agent_name?: string; error_type?: string; message?: string; elapsed_seconds?: number; timeout_seconds?: number; current_agent?: string }; - state.workflowStatus = 'failed'; - state.isPaused = false; - state.workflowFailedAgent = data.agent_name || null; - if (data.agent_name && state.nodes[data.agent_name]) { - state.nodes[data.agent_name]!.status = 'failed'; - replaceNode(state.nodes, data.agent_name); - // Highlight edges leading to the failed agent in red - for (const route of state.routes) { - if (route.to === data.agent_name) { - state.highlightedEdges = [ - ...state.highlightedEdges.filter( - (e) => !(e.from === route.from && e.to === route.to) - ), - { from: route.from, to: route.to, state: 'failed' }, - ]; + if (state.wfDepth === 0) { + // Root workflow failed + state.workflowStatus = 'failed'; + state.isPaused = false; + state.workflowFailedAgent = data.agent_name || null; + if (data.agent_name && state.nodes[data.agent_name]) { + state.nodes[data.agent_name]!.status = 'failed'; + replaceNode(state.nodes, data.agent_name); + for (const route of state.routes) { + if (route.to === data.agent_name) { + state.highlightedEdges.push({ from: route.from, to: route.to, state: 'failed' }); + } } } + state.workflowFailure = { error_type: data.error_type, message: data.message, elapsed_seconds: data.elapsed_seconds, timeout_seconds: data.timeout_seconds, current_agent: data.current_agent }; + if (state.nodes['$start']) { + state.nodes['$start']!.status = 'completed'; + replaceNode(state.nodes, '$start'); + } + } else { + // Child workflow failed — update its context + const ctx = resolveContext(state.subworkflowContexts, state.activeContextPath); + if (ctx) { + ctx.status = 'failed'; + ctx.workflowFailure = { error_type: data.error_type, message: data.message }; + } + state.activeContextPath = state.activeContextPath.slice(0, -1); } - state.workflowFailure = { error_type: data.error_type, message: data.message, elapsed_seconds: data.elapsed_seconds, timeout_seconds: data.timeout_seconds, current_agent: data.current_agent }; - if (state.nodes['$start']) { - state.nodes['$start']!.status = 'completed'; - replaceNode(state.nodes, '$start'); + }, + + // --- Subworkflow lifecycle --- + + subworkflow_started: (state, _data) => { + const data = _data as unknown as SubworkflowStartedData; + // Create a new child context and push it onto the active path + const ctx = createSubworkflowContext(data.agent_name, data.iteration ?? 1, data.workflow); + + // Determine where to insert the child context + if (state.activeContextPath.length === 0) { + // Child of root + state.subworkflowContexts.push(ctx); + state.activeContextPath = [state.subworkflowContexts.length - 1]; + } else { + // Child of another subworkflow + const parent = resolveContext(state.subworkflowContexts, state.activeContextPath); + if (parent) { + parent.children.push(ctx); + state.activeContextPath = [...state.activeContextPath, parent.children.length - 1]; + } + } + + // Mark the parent agent node as running (in the parent's context) + // The parent context is one level up from activeContextPath + const parentPath = state.activeContextPath.slice(0, -1); + if (parentPath.length === 0) { + // Parent is root + const nd = state.nodes[data.agent_name]; + if (nd) { + nd.status = 'running'; + replaceNode(state.nodes, data.agent_name); + } + } else { + const parentCtx = resolveContext(state.subworkflowContexts, parentPath); + if (parentCtx) { + const nd = parentCtx.nodes[data.agent_name]; + if (nd) { + nd.status = 'running'; + replaceNode(parentCtx.nodes, data.agent_name); + } + } + } + }, + + subworkflow_completed: (state, _data) => { + const data = _data as unknown as SubworkflowCompletedData; + // Update the parent agent node status in the parent context + const t = activeTarget(state); + const nd = t.nodes[data.agent_name]; + if (nd) { + nd.status = 'completed'; + nd.elapsed = data.elapsed; + t.incrCompleted(); + replaceNode(t.nodes, data.agent_name); + } + }, + + subworkflow_failed: (state, _data) => { + const data = _data as unknown as SubworkflowFailedData; + const t = activeTarget(state); + const nd = t.nodes[data.agent_name]; + if (nd) { + nd.status = 'failed'; + nd.elapsed = data.elapsed; + nd.error_type = data.error_type; + nd.error_message = data.message; + replaceNode(t.nodes, data.agent_name); } }, diff --git a/src/conductor/web/frontend/src/types/events.ts b/src/conductor/web/frontend/src/types/events.ts index 85da622..27d0486 100644 --- a/src/conductor/web/frontend/src/types/events.ts +++ b/src/conductor/web/frontend/src/types/events.ts @@ -32,6 +32,9 @@ export type EventType = | 'for_each_item_completed' | 'for_each_item_failed' | 'for_each_completed' + | 'subworkflow_started' + | 'subworkflow_completed' + | 'subworkflow_failed' | 'workflow_completed' | 'workflow_failed' | 'checkpoint_saved' @@ -256,3 +259,24 @@ export interface AgentPausedData { export interface AgentResumedData { agent_name: string; } + +// --- Subworkflow lifecycle --- + +export interface SubworkflowStartedData { + agent_name: string; + iteration?: number; + workflow: string; +} + +export interface SubworkflowCompletedData { + agent_name: string; + elapsed?: number; + output?: unknown; +} + +export interface SubworkflowFailedData { + agent_name: string; + elapsed?: number; + error_type?: string; + message?: string; +} From b8850b325f83191d3037bacd56801bf4082dad51 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 14:13:11 -0700 Subject: [PATCH 22/42] feat: subworkflow node visual, detail panel, and context-aware rendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 4-5 of breadcrumb navigation feature: WorkflowNode component: - New node type for type:'workflow' agents with dashed border and Layers icon (visually distinct from regular agent nodes). - Shows child workflow name, elapsed time, and a chevron indicator when a SubworkflowContext exists. - Double-click to navigate into the subworkflow graph. SubworkflowDetail panel: - New detail component shown when a workflow agent is selected. - Lists all subworkflow runs for that agent with status, agent count, and cost summary. - Click any run to navigate into its context. Context-aware rendering: - All graph node components (AgentNode, ScriptNode, GateNode, GroupNode, AnimatedEdge) now read from getViewedContext().nodes instead of root state.nodes — ensures correct status display when viewing child contexts. - DetailPanel reads from viewed context for node lookup. - GroupDetail reads groupProgress from viewed context. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../src/components/detail/DetailPanel.tsx | 7 +- .../src/components/detail/GroupDetail.tsx | 4 +- .../components/detail/SubworkflowDetail.tsx | 112 ++++++++++++++++++ .../src/components/graph/AgentNode.tsx | 26 ++-- .../src/components/graph/AnimatedEdge.tsx | 2 +- .../src/components/graph/GateNode.tsx | 5 +- .../src/components/graph/GroupNode.tsx | 2 +- .../src/components/graph/ScriptNode.tsx | 14 ++- .../src/components/graph/WorkflowGraph.tsx | 2 + .../src/components/graph/WorkflowNode.tsx | 104 ++++++++++++++++ .../src/components/graph/graph-layout.ts | 1 + 11 files changed, 253 insertions(+), 26 deletions(-) create mode 100644 src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx create mode 100644 src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx diff --git a/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx b/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx index 161b193..d36d2be 100644 --- a/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx +++ b/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx @@ -5,11 +5,12 @@ import { AgentDetail } from './AgentDetail'; import { ScriptDetail } from './ScriptDetail'; import { GateDetail } from './GateDetail'; import { GroupDetail } from './GroupDetail'; +import { SubworkflowDetail } from './SubworkflowDetail'; import { cn } from '@/lib/utils'; export function DetailPanel() { const selectedNode = useWorkflowStore((s) => s.selectedNode); - const nodes = useWorkflowStore((s) => s.nodes); + const viewedCtx = useWorkflowStore((s) => s.getViewedContext()); const selectNode = useWorkflowStore((s) => s.selectNode); // Slide-in animation state @@ -20,7 +21,7 @@ export function DetailPanel() { return () => setMounted(false); }, [selectedNode]); - const node = selectedNode ? nodes[selectedNode] : null; + const node = selectedNode ? viewedCtx.nodes[selectedNode] : null; if (!selectedNode || !node) { return ( @@ -44,6 +45,8 @@ export function DetailPanel() { case 'parallel_group': case 'for_each_group': return GroupDetail; + case 'workflow': + return SubworkflowDetail; default: return AgentDetail; } diff --git a/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx b/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx index 241543e..9e4a527 100644 --- a/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx +++ b/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx @@ -16,8 +16,8 @@ interface GroupDetailProps { export function GroupDetail({ node }: GroupDetailProps) { const status = node.status as NodeStatus; const statusColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; - const groupProgress = useWorkflowStore((s) => s.groupProgress); - const progress = groupProgress[node.name]; + const viewedCtx = useWorkflowStore((s) => s.getViewedContext()); + const progress = viewedCtx.groupProgress[node.name]; const isForEach = node.type === 'for_each_group'; const [showItems, setShowItems] = useState(true); diff --git a/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx b/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx new file mode 100644 index 0000000..fc9e07b --- /dev/null +++ b/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx @@ -0,0 +1,112 @@ +import { Layers, ChevronRight, Coins, Hash } from 'lucide-react'; +import { MetadataGrid } from './MetadataGrid'; +import { useWorkflowStore } from '@/stores/workflow-store'; +import type { NodeData, SubworkflowContext } from '@/stores/workflow-store'; +import { NODE_STATUS_HEX } from '@/lib/constants'; +import { formatElapsed, formatCost, formatTokens } from '@/lib/utils'; +import type { NodeStatus } from '@/lib/constants'; + +interface SubworkflowDetailProps { + node: NodeData; +} + +export function SubworkflowDetail({ node }: SubworkflowDetailProps) { + const status = node.status as NodeStatus; + const statusColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; + const navigateIntoSubworkflow = useWorkflowStore((s) => s.navigateIntoSubworkflow); + const viewedCtx = useWorkflowStore((s) => s.getViewedContext()); + const subContexts = viewedCtx.subworkflowContexts.filter((c) => c.parentAgent === node.name); + + const items: Array<{ label: string; value: string | number | null | undefined }> = []; + if (node.elapsed != null) items.push({ label: 'Elapsed', value: formatElapsed(node.elapsed) }); + if (node.cost_usd != null) items.push({ label: 'Cost', value: formatCost(node.cost_usd) }); + if (node.tokens != null) items.push({ label: 'Tokens', value: formatTokens(node.tokens) }); + if (node.iteration != null && node.iteration > 1) items.push({ label: 'Iteration', value: node.iteration }); + + return ( +
+
+ + {status} + + Subworkflow Agent +
+ + + + {/* List subworkflow runs */} + {subContexts.length > 0 && ( +
+
+ Subworkflow Runs ({subContexts.length}) +
+
+ {subContexts.map((ctx, idx) => ( + navigateIntoSubworkflow(node.name, ctx.iteration)} + /> + ))} +
+
+ )} + + {/* Error info */} + {status === 'failed' && (node.error_type || node.error_message) && ( +
+ {node.error_type && {node.error_type}} + {node.error_message && — {node.error_message}} +
+ )} + + {subContexts.length === 0 && status === 'pending' && ( +
+ Subworkflow has not started yet. +
+ )} +
+ ); +} + +function SubworkflowRunRow({ ctx, onClick }: { ctx: SubworkflowContext; onClick: () => void }) { + const statusColor = NODE_STATUS_HEX[ctx.status] || NODE_STATUS_HEX.pending; + + return ( + + ); +} diff --git a/src/conductor/web/frontend/src/components/graph/AgentNode.tsx b/src/conductor/web/frontend/src/components/graph/AgentNode.tsx index c356259..c433f80 100644 --- a/src/conductor/web/frontend/src/components/graph/AgentNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/AgentNode.tsx @@ -10,20 +10,22 @@ import type { NodeStatus } from '@/lib/constants'; export const AgentNode = memo(function AgentNode({ data, id, selected }: NodeProps) { const nodeData = data as unknown as GraphNodeData; - const storeStatus = useWorkflowStore((s) => s.nodes[id]?.status); + const viewedNodes = useWorkflowStore((s) => s.getViewedContext().nodes); + const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; - const elapsed = useWorkflowStore((s) => s.nodes[id]?.elapsed); - const model = useWorkflowStore((s) => s.nodes[id]?.model); - const tokens = useWorkflowStore((s) => s.nodes[id]?.tokens); - const inputTokens = useWorkflowStore((s) => s.nodes[id]?.input_tokens); - const outputTokens = useWorkflowStore((s) => s.nodes[id]?.output_tokens); - const costUsd = useWorkflowStore((s) => s.nodes[id]?.cost_usd); - const iteration = useWorkflowStore((s) => s.nodes[id]?.iteration); - const errorType = useWorkflowStore((s) => s.nodes[id]?.error_type); - const errorMessage = useWorkflowStore((s) => s.nodes[id]?.error_message); - const contextPct = useWorkflowStore((s) => s.nodes[id]?.context_pct); + const nd = viewedNodes[id]; + const elapsed = nd?.elapsed; + const model = nd?.model; + const tokens = nd?.tokens; + const inputTokens = nd?.input_tokens; + const outputTokens = nd?.output_tokens; + const costUsd = nd?.cost_usd; + const iteration = nd?.iteration; + const errorType = nd?.error_type; + const errorMessage = nd?.error_message; + const contextPct = nd?.context_pct; // Live elapsed timer for running nodes const liveElapsed = useLiveElapsed(id, status); @@ -132,7 +134,7 @@ export const AgentNode = memo(function AgentNode({ data, id, selected }: NodePro /** Hook that returns a live-ticking elapsed string while status is 'running'. */ function useLiveElapsed(id: string, status: NodeStatus): string { - const startedAt = useWorkflowStore((s) => s.nodes[id]?.startedAt); + const startedAt = useWorkflowStore((s) => s.getViewedContext().nodes[id]?.startedAt); const replayMode = useWorkflowStore((s) => s.replayMode); const lastEventTime = useWorkflowStore((s) => s.lastEventTime); const [display, setDisplay] = useState('0.0s'); diff --git a/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx b/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx index 2374434..a7932f2 100644 --- a/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx +++ b/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx @@ -19,7 +19,7 @@ export const AnimatedEdge = memo(function AnimatedEdge({ target, data, }: EdgeProps) { - const highlightedEdges = useWorkflowStore((s) => s.highlightedEdges); + const highlightedEdges = useWorkflowStore((s) => s.getViewedContext().highlightedEdges); const edgeHighlight = useMemo(() => { return highlightedEdges.find((e) => e.from === source && e.to === target); diff --git a/src/conductor/web/frontend/src/components/graph/GateNode.tsx b/src/conductor/web/frontend/src/components/graph/GateNode.tsx index e6468b3..dcb4554 100644 --- a/src/conductor/web/frontend/src/components/graph/GateNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/GateNode.tsx @@ -10,11 +10,12 @@ import type { NodeStatus } from '@/lib/constants'; export const GateNode = memo(function GateNode({ data, id, selected }: NodeProps) { const nodeData = data as unknown as GraphNodeData; - const storeStatus = useWorkflowStore((s) => s.nodes[id]?.status); + const viewedNodes = useWorkflowStore((s) => s.getViewedContext().nodes); + const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; - const selectedOption = useWorkflowStore((s) => s.nodes[id]?.selected_option); + const selectedOption = viewedNodes[id]?.selected_option; // Status transition animation const transitionClass = useStatusTransition(status); diff --git a/src/conductor/web/frontend/src/components/graph/GroupNode.tsx b/src/conductor/web/frontend/src/components/graph/GroupNode.tsx index cf5e234..81cc51b 100644 --- a/src/conductor/web/frontend/src/components/graph/GroupNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/GroupNode.tsx @@ -13,7 +13,7 @@ export const GroupNode = memo(function GroupNode({ data, id, selected }: NodePro const Icon = isForEach ? Repeat : GitBranch; const progress = nodeData.progress; - const storeStatus = useWorkflowStore((s) => s.nodes[id]?.status); + const storeStatus = useWorkflowStore((s) => s.getViewedContext().nodes[id]?.status); const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; diff --git a/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx b/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx index 1fbc3af..7a7fdbe 100644 --- a/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx @@ -10,14 +10,16 @@ import type { NodeStatus } from '@/lib/constants'; export const ScriptNode = memo(function ScriptNode({ data, id, selected }: NodeProps) { const nodeData = data as unknown as GraphNodeData; - const storeStatus = useWorkflowStore((s) => s.nodes[id]?.status); + const viewedNodes = useWorkflowStore((s) => s.getViewedContext().nodes); + const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; - const elapsed = useWorkflowStore((s) => s.nodes[id]?.elapsed); - const exitCode = useWorkflowStore((s) => s.nodes[id]?.exit_code); - const errorType = useWorkflowStore((s) => s.nodes[id]?.error_type); - const errorMessage = useWorkflowStore((s) => s.nodes[id]?.error_message); + const nd = viewedNodes[id]; + const elapsed = nd?.elapsed; + const exitCode = nd?.exit_code; + const errorType = nd?.error_type; + const errorMessage = nd?.error_message; // Live elapsed timer const liveElapsed = useLiveElapsed(id, status); @@ -89,7 +91,7 @@ export const ScriptNode = memo(function ScriptNode({ data, id, selected }: NodeP }); function useLiveElapsed(id: string, status: NodeStatus): string { - const startedAt = useWorkflowStore((s) => s.nodes[id]?.startedAt); + const startedAt = useWorkflowStore((s) => s.getViewedContext().nodes[id]?.startedAt); const replayMode = useWorkflowStore((s) => s.replayMode); const lastEventTime = useWorkflowStore((s) => s.lastEventTime); const [display, setDisplay] = useState('0.0s'); diff --git a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx index e11d051..d6f214f 100644 --- a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx +++ b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx @@ -21,6 +21,7 @@ import { AgentNode } from './AgentNode'; import { ScriptNode } from './ScriptNode'; import { GateNode } from './GateNode'; import { GroupNode } from './GroupNode'; +import { WorkflowNode } from './WorkflowNode'; import { EndNode } from './EndNode'; import { StartNode } from './StartNode'; import { AnimatedEdge } from './AnimatedEdge'; @@ -34,6 +35,7 @@ const nodeTypes: NodeTypes = { scriptNode: ScriptNode, gateNode: GateNode, groupNode: GroupNode, + workflowNode: WorkflowNode, endNode: EndNode, startNode: StartNode, }; diff --git a/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx b/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx new file mode 100644 index 0000000..e9d7703 --- /dev/null +++ b/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx @@ -0,0 +1,104 @@ +import { memo } from 'react'; +import { Handle, Position, type NodeProps } from '@xyflow/react'; +import { Layers, ChevronRight } from 'lucide-react'; +import { cn } from '@/lib/utils'; +import { NODE_STATUS_HEX } from '@/lib/constants'; +import { useWorkflowStore } from '@/stores/workflow-store'; +import { NodeTooltip } from './NodeTooltip'; +import type { GraphNodeData } from './graph-layout'; +import type { NodeStatus } from '@/lib/constants'; + +/** + * Graph node for workflow-type agents (subworkflows). + * Shows a stacked-cards icon and a "Dive In" affordance when a + * SubworkflowContext exists for this agent. + */ +export const WorkflowNode = memo(function WorkflowNode({ data, id, selected }: NodeProps) { + const nodeData = data as unknown as GraphNodeData; + const storeStatus = useWorkflowStore((s) => s.nodes[id]?.status); + const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; + const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; + + const elapsed = useWorkflowStore((s) => s.nodes[id]?.elapsed); + const errorMessage = useWorkflowStore((s) => s.nodes[id]?.error_message); + const navigateIntoSubworkflow = useWorkflowStore((s) => s.navigateIntoSubworkflow); + const subworkflowContexts = useWorkflowStore((s) => s.getViewedContext().subworkflowContexts); + + const hasContext = subworkflowContexts.some((c) => c.parentAgent === id); + const ctx = subworkflowContexts.find((c) => c.parentAgent === id); + const childName = ctx?.workflowName; + + const statsText = (() => { + if (status === 'failed' && errorMessage) { + const msg = errorMessage.length > 35 ? errorMessage.slice(0, 32) + '...' : errorMessage; + return { text: msg, className: 'text-red-400' }; + } + if (status === 'running') { + return { text: childName || 'Running subworkflow…', className: 'text-[var(--text-muted)]' }; + } + if (status === 'completed') { + const parts: string[] = []; + if (childName) parts.push(childName); + if (elapsed != null) parts.push(`${elapsed.toFixed(1)}s`); + return { text: parts.join(' · ') || 'Done', className: 'text-[var(--text-muted)]' }; + } + return { text: childName || null, className: 'text-[var(--text-muted)]' }; + })(); + + return ( + <> + + +
{ + if (hasContext) { + e.stopPropagation(); + navigateIntoSubworkflow(id); + } + }} + > + {/* Stacked layers icon */} +
+ +
+ +
+
+ {nodeData.label} +
+ {statsText.text && ( + + {statsText.text} + + )} +
+ + {/* "Dive in" indicator */} + {hasContext && ( + + )} +
+
+ + + ); +}); diff --git a/src/conductor/web/frontend/src/components/graph/graph-layout.ts b/src/conductor/web/frontend/src/components/graph/graph-layout.ts index 3f2b606..fa63322 100644 --- a/src/conductor/web/frontend/src/components/graph/graph-layout.ts +++ b/src/conductor/web/frontend/src/components/graph/graph-layout.ts @@ -116,6 +116,7 @@ export function buildGraphElements( let flowNodeType = 'agentNode'; if (nodeType === 'script') flowNodeType = 'scriptNode'; else if (nodeType === 'human_gate') flowNodeType = 'gateNode'; + else if (nodeType === 'workflow') flowNodeType = 'workflowNode'; flowNodes.push({ id: a.name, From bc9ce81bd8579958a132101df5b6c9fe471603a8 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 14:38:36 -0700 Subject: [PATCH 23/42] build: rebuild frontend assets with breadcrumb navigation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../web/static/assets/index-Cd7LhUP_.css | 1 + .../web/static/assets/index-EthNg1L-.js | 311 ++++++++++++++++++ src/conductor/web/static/index.html | 28 +- 3 files changed, 326 insertions(+), 14 deletions(-) create mode 100644 src/conductor/web/static/assets/index-Cd7LhUP_.css create mode 100644 src/conductor/web/static/assets/index-EthNg1L-.js diff --git a/src/conductor/web/static/assets/index-Cd7LhUP_.css b/src/conductor/web/static/assets/index-Cd7LhUP_.css new file mode 100644 index 0000000..2c6ce8c --- /dev/null +++ b/src/conductor/web/static/assets/index-Cd7LhUP_.css @@ -0,0 +1 @@ +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-950:oklch(25.8% .092 26.042);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-\[4\.25rem\]{margin-left:4.25rem}.ml-\[calc\(7ch\+5ch\+8ch\+1rem\)\]{margin-left:calc(20ch + 1rem)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.\!h-2{height:calc(var(--spacing) * 2)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[90\%\]{height:90%}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-\[400px\]{max-height:400px}.\!w-2{width:calc(var(--spacing) * 2)!important}.w-0{width:calc(var(--spacing) * 0)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-\[3px\]{width:3px}.w-\[5ch\]{width:5ch}.w-\[80\%\]{width:80%}.w-full{width:100%}.max-w-\[16ch\]{max-width:16ch}.max-w-\[140px\]{max-width:140px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[560px\]{max-width:560px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8ch\]{min-width:8ch}.min-w-\[14px\]{min-width:14px}.min-w-\[140px\]{min-width:140px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[banner-in_200ms_ease-out\]{animation:.2s ease-out banner-in}.animate-\[context-pulse_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite context-pulse}.animate-\[tooltip-in_150ms_ease-out\]{animation:.15s ease-out tooltip-in}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-\[6px\]{border-inline-style:var(--tw-border-style);border-inline-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-green-500\/60{border-color:#00c75899}@supports (color:color-mix(in lab,red,red)){.border-green-500\/60{border-color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.border-transparent{border-color:#0000}.border-x-transparent{border-inline-color:#0000}.border-t-\[var\(--border\)\]{border-top-color:var(--border)}.\!bg-\[var\(--border\)\]{background-color:var(--border)!important}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--completed\)\]{background-color:var(--completed)}.bg-\[var\(--failed\)\]{background-color:var(--failed)}.bg-\[var\(--node-bg\)\]{background-color:var(--node-bg)}.bg-\[var\(--pending\)\]{background-color:var(--pending)}.bg-\[var\(--running\)\]{background-color:var(--running)}.bg-\[var\(--surface\)\],.bg-\[var\(--surface\)\]\/80{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface\)\]\/80{background-color:color-mix(in oklab,var(--surface) 80%,transparent)}}.bg-\[var\(--surface-hover\)\]{background-color:var(--surface-hover)}.bg-\[var\(--surface-raised\)\]{background-color:var(--surface-raised)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-950\/90{background-color:#032e15e6}@supports (color:color-mix(in lab,red,red)){.bg-green-950\/90{background-color:color-mix(in oklab,var(--color-green-950) 90%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-950\/50{background-color:#46080980}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/50{background-color:color-mix(in oklab,var(--color-red-950) 50%,transparent)}}.bg-red-950\/90{background-color:#460809e6}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/90{background-color:color-mix(in oklab,var(--color-red-950) 90%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-px{padding-top:1px}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--completed\)\]{color:var(--completed)}.text-\[var\(--failed\)\]{color:var(--failed)}.text-\[var\(--running\)\]{color:var(--running)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--waiting\)\]{color:var(--waiting)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-400\/70{color:#00d2efb3}@supports (color:color-mix(in lab,red,red)){.text-cyan-400\/70{color:color-mix(in oklab,var(--color-cyan-400) 70%,transparent)}}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400) 80%,transparent)}}.text-green-500\/60{color:#00c75899}@supports (color:color-mix(in lab,red,red)){.text-green-500\/60{color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-indigo-400\/70{color:#7d87ffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/70{color:color-mix(in oklab,var(--color-indigo-400) 70%,transparent)}}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400) 80%,transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--completed-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--running-glow\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--waiting-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--waiting-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--completed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--failed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--failed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--running-glow\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-500\/10{--tw-shadow-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-500\/10{--tw-shadow-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.shadow-red-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent\)\]{--tw-ring-color:var(--accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--bg\)\]{--tw-ring-offset-color:var(--bg)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}}.placeholder\:text-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-amber-400\/60:hover{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-400\/60:hover{border-color:color-mix(in oklab,var(--color-amber-400) 60%,transparent)}}.hover\:border-emerald-500\/30:hover{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-emerald-500\/30:hover{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:bg-\[var\(--node-bg\)\]:hover{background-color:var(--node-bg)}.hover\:bg-\[var\(--surface\)\]:hover{background-color:var(--surface)}.hover\:bg-\[var\(--surface-hover\)\]:hover{background-color:var(--surface-hover)}.hover\:bg-\[var\(--text-muted\)\]:hover{background-color:var(--text-muted)}.hover\:bg-amber-500\/5:hover{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/5:hover{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--running\)\]:hover{color:var(--running)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-\[var\(--text-secondary\)\]:hover{color:var(--text-secondary)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-amber-400:focus{border-color:var(--color-amber-400)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}}:root{--bg:#0a0a0f;--bg-subtle:#111118;--surface:#16161e;--surface-hover:#1c1c26;--surface-raised:#1e1e28;--border:#2a2a3a;--border-subtle:#223;--text:#e4e4ef;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--pending:#52525b;--running:#3b82f6;--running-glow:#3b82f680;--completed:#22c55e;--completed-muted:#22c55e40;--failed:#ef4444;--failed-muted:#ef444440;--waiting:#f59e0b;--waiting-muted:#f59e0b40;--skipped:#6b7280;--accent:#6366f1;--accent-muted:#6366f140;--node-bg:#1e1e2a;--node-border:#2e2e42;--edge-color:#2e2e42;--edge-active:#3b82f6;--edge-taken:#22c55e;--minimap-bg:#0d0d14;--minimap-mask:#ffffff10;--minimap-node:#3b82f680;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.react-flow__background{background:var(--bg)!important}.react-flow__minimap{background:var(--minimap-bg)!important;border:1px solid var(--border)!important;border-radius:8px!important}.react-flow__controls{overflow:hidden;border:1px solid var(--border)!important;border-radius:8px!important;box-shadow:0 4px 12px #0006!important}.react-flow__controls-button{background:var(--surface)!important;border:none!important;border-bottom:1px solid var(--border)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important;width:32px!important;height:32px!important}.react-flow__controls-button:hover{background:var(--surface-hover)!important;color:var(--text)!important;fill:var(--text)!important}.react-flow__controls-button:last-child{border-bottom:none!important}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 var(--running-glow)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes context-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes dash-flow{to{stroke-dashoffset:-20px}}@keyframes node-activate{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes node-complete-glow{0%{box-shadow:0 0 0 0 var(--completed-muted)}50%{box-shadow:0 0 16px 4px var(--completed-muted)}to{box-shadow:0 0 #0000}}@keyframes node-fail-glow{0%{box-shadow:0 0 0 0 var(--failed-muted)}50%{box-shadow:0 0 16px 4px var(--failed-muted)}to{box-shadow:0 0 #0000}}.node-activate{animation:.3s ease-out node-activate}.node-complete{animation:.4s ease-out node-complete-glow}.node-fail{animation:.4s ease-out node-fail-glow}@keyframes tooltip-in{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}[data-panel-group-direction=horizontal]>[data-resize-handle-active],[data-panel-group-direction=vertical]>[data-resize-handle-active]{background-color:var(--accent)!important}[data-resize-handle]{transition:background-color .15s;background-color:var(--border)!important}[data-resize-handle]:hover{background-color:var(--text-muted)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))} diff --git a/src/conductor/web/static/assets/index-EthNg1L-.js b/src/conductor/web/static/assets/index-EthNg1L-.js new file mode 100644 index 0000000..92a73b1 --- /dev/null +++ b/src/conductor/web/static/assets/index-EthNg1L-.js @@ -0,0 +1,311 @@ +var O2=Object.defineProperty;var D2=(e,n,r)=>n in e?O2(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;var kt=(e,n,r)=>D2(e,typeof n!="symbol"?n+"":n,r);function R2(e,n){for(var r=0;rl[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();function Bo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ud={exports:{}},ro={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hx;function L2(){if(hx)return ro;hx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(l,a,s){var u=null;if(s!==void 0&&(u=""+s),a.key!==void 0&&(u=""+a.key),"key"in a){s={};for(var f in a)f!=="key"&&(s[f]=a[f])}else s=a;return a=s.ref,{$$typeof:e,type:l,key:u,ref:a!==void 0?a:null,props:s}}return ro.Fragment=n,ro.jsx=r,ro.jsxs=r,ro}var px;function H2(){return px||(px=1,Ud.exports=L2()),Ud.exports}var b=H2(),Id={exports:{}},ze={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var mx;function B2(){if(mx)return ze;mx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),y=Symbol.iterator;function v(H){return H===null||typeof H!="object"?null:(H=y&&H[y]||H["@@iterator"],typeof H=="function"?H:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,S={};function _(H,P,N){this.props=H,this.context=P,this.refs=S,this.updater=N||w}_.prototype.isReactComponent={},_.prototype.setState=function(H,P){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,P,"setState")},_.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function T(){}T.prototype=_.prototype;function E(H,P,N){this.props=H,this.context=P,this.refs=S,this.updater=N||w}var z=E.prototype=new T;z.constructor=E,k(z,_.prototype),z.isPureReactComponent=!0;var I=Array.isArray;function A(){}var R={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function U(H,P,N){var G=N.ref;return{$$typeof:e,type:H,key:P,ref:G!==void 0?G:null,props:N}}function X(H,P){return U(H.type,P,H.props)}function B(H){return typeof H=="object"&&H!==null&&H.$$typeof===e}function q(H){var P={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(N){return P[N]})}var ee=/\/+/g;function L(H,P){return typeof H=="object"&&H!==null&&H.key!=null?q(""+H.key):P.toString(36)}function $(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(A,A):(H.status="pending",H.then(function(P){H.status==="pending"&&(H.status="fulfilled",H.value=P)},function(P){H.status==="pending"&&(H.status="rejected",H.reason=P)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function M(H,P,N,G,F){var J=typeof H;(J==="undefined"||J==="boolean")&&(H=null);var ne=!1;if(H===null)ne=!0;else switch(J){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(H.$$typeof){case e:case n:ne=!0;break;case m:return ne=H._init,M(ne(H._payload),P,N,G,F)}}if(ne)return F=F(H),ne=G===""?"."+L(H,0):G,I(F)?(N="",ne!=null&&(N=ne.replace(ee,"$&/")+"/"),M(F,P,N,"",function(ye){return ye})):F!=null&&(B(F)&&(F=X(F,N+(F.key==null||H&&H.key===F.key?"":(""+F.key).replace(ee,"$&/")+"/")+ne)),P.push(F)),1;ne=0;var re=G===""?".":G+":";if(I(H))for(var se=0;se>>1,j=M[K];if(0>>1;Ka(N,Q))Ga(F,N)?(M[K]=F,M[G]=Q,K=G):(M[K]=N,M[P]=Q,K=P);else if(Ga(F,Q))M[K]=F,M[G]=Q,K=G;else break e}}return Y}function a(M,Y){var Q=M.sortIndex-Y.sortIndex;return Q!==0?Q:M.id-Y.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var u=Date,f=u.now();e.unstable_now=function(){return u.now()-f}}var d=[],h=[],m=1,p=null,y=3,v=!1,w=!1,k=!1,S=!1,_=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function z(M){for(var Y=r(h);Y!==null;){if(Y.callback===null)l(h);else if(Y.startTime<=M)l(h),Y.sortIndex=Y.expirationTime,n(d,Y);else break;Y=r(h)}}function I(M){if(k=!1,z(M),!w)if(r(d)!==null)w=!0,A||(A=!0,q());else{var Y=r(h);Y!==null&&$(I,Y.startTime-M)}}var A=!1,R=-1,D=5,U=-1;function X(){return S?!0:!(e.unstable_now()-UM&&X());){var K=p.callback;if(typeof K=="function"){p.callback=null,y=p.priorityLevel;var j=K(p.expirationTime<=M);if(M=e.unstable_now(),typeof j=="function"){p.callback=j,z(M),Y=!0;break t}p===r(d)&&l(d),z(M)}else l(d);p=r(d)}if(p!==null)Y=!0;else{var H=r(h);H!==null&&$(I,H.startTime-M),Y=!1}}break e}finally{p=null,y=Q,v=!1}Y=void 0}}finally{Y?q():A=!1}}}var q;if(typeof E=="function")q=function(){E(B)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,L=ee.port2;ee.port1.onmessage=B,q=function(){L.postMessage(null)}}else q=function(){_(B,0)};function $(M,Y){R=_(function(){M(e.unstable_now())},Y)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_forceFrameRate=function(M){0>M||125K?(M.sortIndex=Q,n(h,M),r(d)===null&&M===r(h)&&(k?(T(R),R=-1):k=!0,$(I,Q-K))):(M.sortIndex=j,n(d,M),w||v||(w=!0,A||(A=!0,q()))),M},e.unstable_shouldYield=X,e.unstable_wrapCallback=function(M){var Y=y;return function(){var Q=y;y=Y;try{return M.apply(this,arguments)}finally{y=Q}}}})(Yd)),Yd}var xx;function I2(){return xx||(xx=1,Gd.exports=U2()),Gd.exports}var $d={exports:{}},Yt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vx;function V2(){if(vx)return Yt;vx=1;var e=qo();function n(d){var h="https://react.dev/errors/"+d;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),$d.exports=V2(),$d.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wx;function G2(){if(wx)return io;wx=1;var e=I2(),n=qo(),r=Cb();function l(t){var i="https://react.dev/errors/"+t;if(1j||(t.current=K[j],K[j]=null,j--)}function N(t,i){j++,K[j]=t.current,t.current=i}var G=H(null),F=H(null),J=H(null),ne=H(null);function re(t,i){switch(N(J,i),N(F,t),N(G,null),i.nodeType){case 9:case 11:t=(t=i.documentElement)&&(t=t.namespaceURI)?Ly(t):0;break;default:if(t=i.tagName,i=i.namespaceURI)i=Ly(i),t=Hy(i,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}P(G),N(G,t)}function se(){P(G),P(F),P(J)}function ye(t){t.memoizedState!==null&&N(ne,t);var i=G.current,o=Hy(i,t.type);i!==o&&(N(F,t),N(G,o))}function ve(t){F.current===t&&(P(G),P(F)),ne.current===t&&(P(ne),Wa._currentValue=Q)}var xe,pe;function _e(t){if(xe===void 0)try{throw Error()}catch(o){var i=o.stack.trim().match(/\n( *(at )?)/);xe=i&&i[1]||"",pe=-1)":-1g||Z[c]!==le[g]){var ce=` +`+Z[c].replace(" at new "," at ");return t.displayName&&ce.includes("")&&(ce=ce.replace("",t.displayName)),ce}while(1<=c&&0<=g);break}}}finally{Me=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?_e(o):""}function ut(t,i){switch(t.tag){case 26:case 27:case 5:return _e(t.type);case 16:return _e("Lazy");case 13:return t.child!==i&&i!==null?_e("Suspense Fallback"):_e("Suspense");case 19:return _e("SuspenseList");case 0:case 15:return Ce(t.type,!1);case 11:return Ce(t.type.render,!1);case 1:return Ce(t.type,!0);case 31:return _e("Activity");default:return""}}function tt(t){try{var i="",o=null;do i+=ut(t,o),o=t,t=t.return;while(t);return i}catch(c){return` +Error generating stack: `+c.message+` +`+c.stack}}var At=Object.prototype.hasOwnProperty,It=e.unstable_scheduleCallback,Rt=e.unstable_cancelCallback,Sn=e.unstable_shouldYield,jn=e.unstable_requestPaint,Mt=e.unstable_now,Or=e.unstable_getCurrentPriorityLevel,ue=e.unstable_ImmediatePriority,ge=e.unstable_UserBlockingPriority,Ne=e.unstable_NormalPriority,Re=e.unstable_LowPriority,Ye=e.unstable_IdlePriority,Xt=e.log,On=e.unstable_setDisableYieldValue,Lt=null,xt=null;function Vt(t){if(typeof Xt=="function"&&On(t),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(Lt,t)}catch{}}var Je=Math.clz32?Math.clz32:Cc,Pn=Math.log,un=Math.LN2;function Cc(t){return t>>>=0,t===0?32:31-(Pn(t)/un|0)|0}var tl=256,nl=262144,rl=4194304;function lr(t){var i=t&42;if(i!==0)return i;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function il(t,i,o){var c=t.pendingLanes;if(c===0)return 0;var g=0,x=t.suspendedLanes,C=t.pingedLanes;t=t.warmLanes;var O=c&134217727;return O!==0?(c=O&~x,c!==0?g=lr(c):(C&=O,C!==0?g=lr(C):o||(o=O&~t,o!==0&&(g=lr(o))))):(O=c&~x,O!==0?g=lr(O):C!==0?g=lr(C):o||(o=c&~t,o!==0&&(g=lr(o)))),g===0?0:i!==0&&i!==g&&(i&x)===0&&(x=g&-g,o=i&-i,x>=o||x===32&&(o&4194048)!==0)?i:g}function yi(t,i){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&i)===0}function Tc(t,i){switch(t){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ko(){var t=rl;return rl<<=1,(rl&62914560)===0&&(rl=4194304),t}function ca(t){for(var i=[],o=0;31>o;o++)i.push(t);return i}function xi(t,i){t.pendingLanes|=i,i!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function zc(t,i,o,c,g,x){var C=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var O=t.entanglements,Z=t.expirationTimes,le=t.hiddenUpdates;for(o=C&~o;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Dc=/[\n"\\]/g;function Kt(t){return t.replace(Dc,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function wi(t,i,o,c,g,x,C,O){t.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?t.type=C:t.removeAttribute("type"),i!=null?C==="number"?(i===0&&t.value===""||t.value!=i)&&(t.value=""+Zt(i)):t.value!==""+Zt(i)&&(t.value=""+Zt(i)):C!=="submit"&&C!=="reset"||t.removeAttribute("value"),i!=null?ma(t,C,Zt(i)):o!=null?ma(t,C,Zt(o)):c!=null&&t.removeAttribute("value"),g==null&&x!=null&&(t.defaultChecked=!!x),g!=null&&(t.checked=g&&typeof g!="function"&&typeof g!="symbol"),O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"?t.name=""+Zt(O):t.removeAttribute("name")}function cs(t,i,o,c,g,x,C,O){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(t.type=x),i!=null||o!=null){if(!(x!=="submit"&&x!=="reset"||i!=null)){qr(t);return}o=o!=null?""+Zt(o):"",i=i!=null?""+Zt(i):o,O||i===t.value||(t.value=i),t.defaultValue=i}c=c??g,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=O?t.checked:!!c,t.defaultChecked=!!c,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(t.name=C),qr(t)}function ma(t,i,o){i==="number"&&bi(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function sr(t,i,o,c){if(t=t.options,i){i={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),qc=!1;if(cr)try{var ya={};Object.defineProperty(ya,"passive",{get:function(){qc=!0}}),window.addEventListener("test",ya,ya),window.removeEventListener("test",ya,ya)}catch{qc=!1}var Ur=null,Uc=null,ds=null;function Hm(){if(ds)return ds;var t,i=Uc,o=i.length,c,g="value"in Ur?Ur.value:Ur.textContent,x=g.length;for(t=0;t=ba),Gm=" ",Ym=!1;function $m(t,i){switch(t){case"keyup":return tE.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Pm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var fl=!1;function rE(t,i){switch(t){case"compositionend":return Pm(i);case"keypress":return i.which!==32?null:(Ym=!0,Gm);case"textInput":return t=i.data,t===Gm&&Ym?null:t;default:return null}}function iE(t,i){if(fl)return t==="compositionend"||!$c&&$m(t,i)?(t=Hm(),ds=Uc=Ur=null,fl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:o,offset:i-t};t=c}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=eg(o)}}function ng(t,i){return t&&i?t===i?!0:t&&t.nodeType===3?!1:i&&i.nodeType===3?ng(t,i.parentNode):"contains"in t?t.contains(i):t.compareDocumentPosition?!!(t.compareDocumentPosition(i)&16):!1:!1}function rg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var i=bi(t.document);i instanceof t.HTMLIFrameElement;){try{var o=typeof i.contentWindow.location.href=="string"}catch{o=!1}if(o)t=i.contentWindow;else break;i=bi(t.document)}return i}function Fc(t){var i=t&&t.nodeName&&t.nodeName.toLowerCase();return i&&(i==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||i==="textarea"||t.contentEditable==="true")}var dE=cr&&"documentMode"in document&&11>=document.documentMode,dl=null,Qc=null,Ea=null,Zc=!1;function ig(t,i,o){var c=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Zc||dl==null||dl!==bi(c)||(c=dl,"selectionStart"in c&&Fc(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Ea&&_a(Ea,c)||(Ea=c,c=lu(Qc,"onSelect"),0>=C,g-=C,Fn=1<<32-Je(i)+g|o<je?(Ue=Se,Se=null):Ue=Se.sibling;var Fe=ae(te,Se,ie[je],fe);if(Fe===null){Se===null&&(Se=Ue);break}t&&Se&&Fe.alternate===null&&i(te,Se),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe,Se=Ue}if(je===ie.length)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;jeje?(Ue=Se,Se=null):Ue=Se.sibling;var si=ae(te,Se,Fe.value,fe);if(si===null){Se===null&&(Se=Ue);break}t&&Se&&si.alternate===null&&i(te,Se),W=x(si,W,je),Xe===null?Ee=si:Xe.sibling=si,Xe=si,Se=Ue}if(Fe.done)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;!Fe.done;je++,Fe=ie.next())Fe=de(te,Fe.value,fe),Fe!==null&&(W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return Ve&&dr(te,je),Ee}for(Se=c(Se);!Fe.done;je++,Fe=ie.next())Fe=oe(Se,te,je,Fe.value,fe),Fe!==null&&(t&&Fe.alternate!==null&&Se.delete(Fe.key===null?je:Fe.key),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return t&&Se.forEach(function(j2){return i(te,j2)}),Ve&&dr(te,je),Ee}function it(te,W,ie,fe){if(typeof ie=="object"&&ie!==null&&ie.type===k&&ie.key===null&&(ie=ie.props.children),typeof ie=="object"&&ie!==null){switch(ie.$$typeof){case v:e:{for(var Ee=ie.key;W!==null;){if(W.key===Ee){if(Ee=ie.type,Ee===k){if(W.tag===7){o(te,W.sibling),fe=g(W,ie.props.children),fe.return=te,te=fe;break e}}else if(W.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&Mi(Ee)===W.type){o(te,W.sibling),fe=g(W,ie.props),Aa(fe,ie),fe.return=te,te=fe;break e}o(te,W);break}else i(te,W);W=W.sibling}ie.type===k?(fe=ki(ie.props.children,te.mode,fe,ie.key),fe.return=te,te=fe):(fe=Ss(ie.type,ie.key,ie.props,null,te.mode,fe),Aa(fe,ie),fe.return=te,te=fe)}return C(te);case w:e:{for(Ee=ie.key;W!==null;){if(W.key===Ee)if(W.tag===4&&W.stateNode.containerInfo===ie.containerInfo&&W.stateNode.implementation===ie.implementation){o(te,W.sibling),fe=g(W,ie.children||[]),fe.return=te,te=fe;break e}else{o(te,W);break}else i(te,W);W=W.sibling}fe=rf(ie,te.mode,fe),fe.return=te,te=fe}return C(te);case D:return ie=Mi(ie),it(te,W,ie,fe)}if($(ie))return we(te,W,ie,fe);if(q(ie)){if(Ee=q(ie),typeof Ee!="function")throw Error(l(150));return ie=Ee.call(ie),ke(te,W,ie,fe)}if(typeof ie.then=="function")return it(te,W,zs(ie),fe);if(ie.$$typeof===E)return it(te,W,Ns(te,ie),fe);As(te,ie)}return typeof ie=="string"&&ie!==""||typeof ie=="number"||typeof ie=="bigint"?(ie=""+ie,W!==null&&W.tag===6?(o(te,W.sibling),fe=g(W,ie),fe.return=te,te=fe):(o(te,W),fe=nf(ie,te.mode,fe),fe.return=te,te=fe),C(te)):o(te,W)}return function(te,W,ie,fe){try{za=0;var Ee=it(te,W,ie,fe);return _l=null,Ee}catch(Se){if(Se===Sl||Se===Cs)throw Se;var Xe=fn(29,Se,null,te.mode);return Xe.lanes=fe,Xe.return=te,Xe}finally{}}}var Oi=Cg(!0),Tg=Cg(!1),$r=!1;function gf(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function yf(t,i){t=t.updateQueue,i.updateQueue===t&&(i.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Pr(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Xr(t,i,o){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(Ze&2)!==0){var g=c.pending;return g===null?i.next=i:(i.next=g.next,g.next=i),c.pending=i,i=ws(t),fg(t,null,o),i}return bs(t,c,i,o),ws(t)}function Ma(t,i,o){if(i=i.updateQueue,i!==null&&(i=i.shared,(o&4194048)!==0)){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,Wo(t,o)}}function xf(t,i){var o=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,o===c)){var g=null,x=null;if(o=o.firstBaseUpdate,o!==null){do{var C={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};x===null?g=x=C:x=x.next=C,o=o.next}while(o!==null);x===null?g=x=i:x=x.next=i}else g=x=i;o={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:x,shared:c.shared,callbacks:c.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=i:t.next=i,o.lastBaseUpdate=i}var vf=!1;function ja(){if(vf){var t=wl;if(t!==null)throw t}}function Oa(t,i,o,c){vf=!1;var g=t.updateQueue;$r=!1;var x=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var Z=O,le=Z.next;Z.next=null,C===null?x=le:C.next=le,C=Z;var ce=t.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=le:O.next=le,ce.lastBaseUpdate=Z))}if(x!==null){var de=g.baseState;C=0,ce=le=Z=null,O=x;do{var ae=O.lane&-536870913,oe=ae!==O.lane;if(oe?(qe&ae)===ae:(c&ae)===ae){ae!==0&&ae===bl&&(vf=!0),ce!==null&&(ce=ce.next={lane:0,tag:O.tag,payload:O.payload,callback:null,next:null});e:{var we=t,ke=O;ae=i;var it=o;switch(ke.tag){case 1:if(we=ke.payload,typeof we=="function"){de=we.call(it,de,ae);break e}de=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=ke.payload,ae=typeof we=="function"?we.call(it,de,ae):we,ae==null)break e;de=p({},de,ae);break e;case 2:$r=!0}}ae=O.callback,ae!==null&&(t.flags|=64,oe&&(t.flags|=8192),oe=g.callbacks,oe===null?g.callbacks=[ae]:oe.push(ae))}else oe={lane:ae,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(le=ce=oe,Z=de):ce=ce.next=oe,C|=ae;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);ce===null&&(Z=de),g.baseState=Z,g.firstBaseUpdate=le,g.lastBaseUpdate=ce,x===null&&(g.shared.lanes=0),Jr|=C,t.lanes=C,t.memoizedState=de}}function zg(t,i){if(typeof t!="function")throw Error(l(191,t));t.call(i)}function Ag(t,i){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;tx?x:8;var C=M.T,O={};M.T=O,Bf(t,!1,i,o);try{var Z=g(),le=M.S;if(le!==null&&le(O,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var ce=wE(Z,c);La(t,i,ce,gn(t))}else La(t,i,c,gn(t))}catch(de){La(t,i,{then:function(){},status:"rejected",reason:de},gn())}finally{Y.p=x,C!==null&&O.types!==null&&(C.types=O.types),M.T=C}}function CE(){}function Lf(t,i,o,c){if(t.tag!==5)throw Error(l(476));var g=s0(t).queue;o0(t,g,i,Q,o===null?CE:function(){return u0(t),o(c)})}function s0(t){var i=t.memoizedState;if(i!==null)return i;i={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:Q},next:null};var o={};return i.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:o},next:null},t.memoizedState=i,t=t.alternate,t!==null&&(t.memoizedState=i),i}function u0(t){var i=s0(t);i.next===null&&(i=t.alternate.memoizedState),La(t,i.next.queue,{},gn())}function Hf(){return Bt(Wa)}function c0(){return bt().memoizedState}function f0(){return bt().memoizedState}function TE(t){for(var i=t.return;i!==null;){switch(i.tag){case 24:case 3:var o=gn();t=Pr(o);var c=Xr(i,t,o);c!==null&&(rn(c,i,o),Ma(c,i,o)),i={cache:df()},t.payload=i;return}i=i.return}}function zE(t,i,o){var c=gn();o={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Us(t)?h0(i,o):(o=ef(t,i,o,c),o!==null&&(rn(o,t,c),p0(o,i,c)))}function d0(t,i,o){var c=gn();La(t,i,o,c)}function La(t,i,o,c){var g={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Us(t))h0(i,g);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=i.lastRenderedReducer,x!==null))try{var C=i.lastRenderedState,O=x(C,o);if(g.hasEagerState=!0,g.eagerState=O,cn(O,C))return bs(t,i,g,0),lt===null&&vs(),!1}catch{}finally{}if(o=ef(t,i,g,c),o!==null)return rn(o,t,c),p0(o,i,c),!0}return!1}function Bf(t,i,o,c){if(c={lane:2,revertLane:gd(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Us(t)){if(i)throw Error(l(479))}else i=ef(t,o,c,2),i!==null&&rn(i,t,2)}function Us(t){var i=t.alternate;return t===Ae||i!==null&&i===Ae}function h0(t,i){Nl=Os=!0;var o=t.pending;o===null?i.next=i:(i.next=o.next,o.next=i),t.pending=i}function p0(t,i,o){if((o&4194048)!==0){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,Wo(t,o)}}var Ha={readContext:Bt,use:Ls,useCallback:mt,useContext:mt,useEffect:mt,useImperativeHandle:mt,useLayoutEffect:mt,useInsertionEffect:mt,useMemo:mt,useReducer:mt,useRef:mt,useState:mt,useDebugValue:mt,useDeferredValue:mt,useTransition:mt,useSyncExternalStore:mt,useId:mt,useHostTransitionStatus:mt,useFormState:mt,useActionState:mt,useOptimistic:mt,useMemoCache:mt,useCacheRefresh:mt};Ha.useEffectEvent=mt;var m0={readContext:Bt,use:Ls,useCallback:function(t,i){return Ft().memoizedState=[t,i===void 0?null:i],t},useContext:Bt,useEffect:Jg,useImperativeHandle:function(t,i,o){o=o!=null?o.concat([t]):null,Bs(4194308,4,n0.bind(null,i,t),o)},useLayoutEffect:function(t,i){return Bs(4194308,4,t,i)},useInsertionEffect:function(t,i){Bs(4,2,t,i)},useMemo:function(t,i){var o=Ft();i=i===void 0?null:i;var c=t();if(Di){Vt(!0);try{t()}finally{Vt(!1)}}return o.memoizedState=[c,i],c},useReducer:function(t,i,o){var c=Ft();if(o!==void 0){var g=o(i);if(Di){Vt(!0);try{o(i)}finally{Vt(!1)}}}else g=i;return c.memoizedState=c.baseState=g,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:g},c.queue=t,t=t.dispatch=zE.bind(null,Ae,t),[c.memoizedState,t]},useRef:function(t){var i=Ft();return t={current:t},i.memoizedState=t},useState:function(t){t=Mf(t);var i=t.queue,o=d0.bind(null,Ae,i);return i.dispatch=o,[t.memoizedState,o]},useDebugValue:Df,useDeferredValue:function(t,i){var o=Ft();return Rf(o,t,i)},useTransition:function(){var t=Mf(!1);return t=o0.bind(null,Ae,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,i,o){var c=Ae,g=Ft();if(Ve){if(o===void 0)throw Error(l(407));o=o()}else{if(o=i(),lt===null)throw Error(l(349));(qe&127)!==0||Lg(c,i,o)}g.memoizedState=o;var x={value:o,getSnapshot:i};return g.queue=x,Jg(Bg.bind(null,c,x,t),[t]),c.flags|=2048,Cl(9,{destroy:void 0},Hg.bind(null,c,x,o,i),null),o},useId:function(){var t=Ft(),i=lt.identifierPrefix;if(Ve){var o=Qn,c=Fn;o=(c&~(1<<32-Je(c)-1)).toString(32)+o,i="_"+i+"R_"+o,o=Ds++,0<\/script>",x=x.removeChild(x.firstChild);break;case"select":x=typeof c.is=="string"?C.createElement("select",{is:c.is}):C.createElement("select"),c.multiple?x.multiple=!0:c.size&&(x.size=c.size);break;default:x=typeof c.is=="string"?C.createElement(g,{is:c.is}):C.createElement(g)}}x[jt]=i,x[Gt]=c;e:for(C=i.child;C!==null;){if(C.tag===5||C.tag===6)x.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===i)break e;for(;C.sibling===null;){if(C.return===null||C.return===i)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}i.stateNode=x;e:switch(Ut(x,g,c),g){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&xr(i)}}return ft(i),Jf(i,i.type,t===null?null:t.memoizedProps,i.pendingProps,o),null;case 6:if(t&&i.stateNode!=null)t.memoizedProps!==c&&xr(i);else{if(typeof c!="string"&&i.stateNode===null)throw Error(l(166));if(t=J.current,xl(i)){if(t=i.stateNode,o=i.memoizedProps,c=null,g=Ht,g!==null)switch(g.tag){case 27:case 5:c=g.memoizedProps}t[jt]=i,t=!!(t.nodeValue===o||c!==null&&c.suppressHydrationWarning===!0||Dy(t.nodeValue,o)),t||Gr(i,!0)}else t=au(t).createTextNode(c),t[jt]=i,i.stateNode=t}return ft(i),null;case 31:if(o=i.memoizedState,t===null||t.memoizedState!==null){if(c=xl(i),o!==null){if(t===null){if(!c)throw Error(l(318));if(t=i.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(l(557));t[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),t=!1}else o=sf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return i.flags&256?(hn(i),i):(hn(i),null);if((i.flags&128)!==0)throw Error(l(558))}return ft(i),null;case 13:if(c=i.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(g=xl(i),c!==null&&c.dehydrated!==null){if(t===null){if(!g)throw Error(l(318));if(g=i.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(l(317));g[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),g=!1}else g=sf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=g),g=!0;if(!g)return i.flags&256?(hn(i),i):(hn(i),null)}return hn(i),(i.flags&128)!==0?(i.lanes=o,i):(o=c!==null,t=t!==null&&t.memoizedState!==null,o&&(c=i.child,g=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(g=c.alternate.memoizedState.cachePool.pool),x=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),x!==g&&(c.flags|=2048)),o!==t&&o&&(i.child.flags|=8192),$s(i,i.updateQueue),ft(i),null);case 4:return se(),t===null&&bd(i.stateNode.containerInfo),ft(i),null;case 10:return pr(i.type),ft(i),null;case 19:if(P(vt),c=i.memoizedState,c===null)return ft(i),null;if(g=(i.flags&128)!==0,x=c.rendering,x===null)if(g)qa(c,!1);else{if(gt!==0||t!==null&&(t.flags&128)!==0)for(t=i.child;t!==null;){if(x=js(t),x!==null){for(i.flags|=128,qa(c,!1),t=x.updateQueue,i.updateQueue=t,$s(i,t),i.subtreeFlags=0,t=o,o=i.child;o!==null;)dg(o,t),o=o.sibling;return N(vt,vt.current&1|2),Ve&&dr(i,c.treeForkCount),i.child}t=t.sibling}c.tail!==null&&Mt()>Zs&&(i.flags|=128,g=!0,qa(c,!1),i.lanes=4194304)}else{if(!g)if(t=js(x),t!==null){if(i.flags|=128,g=!0,t=t.updateQueue,i.updateQueue=t,$s(i,t),qa(c,!0),c.tail===null&&c.tailMode==="hidden"&&!x.alternate&&!Ve)return ft(i),null}else 2*Mt()-c.renderingStartTime>Zs&&o!==536870912&&(i.flags|=128,g=!0,qa(c,!1),i.lanes=4194304);c.isBackwards?(x.sibling=i.child,i.child=x):(t=c.last,t!==null?t.sibling=x:i.child=x,c.last=x)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=Mt(),t.sibling=null,o=vt.current,N(vt,g?o&1|2:o&1),Ve&&dr(i,c.treeForkCount),t):(ft(i),null);case 22:case 23:return hn(i),wf(),c=i.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(i.flags|=8192):c&&(i.flags|=8192),c?(o&536870912)!==0&&(i.flags&128)===0&&(ft(i),i.subtreeFlags&6&&(i.flags|=8192)):ft(i),o=i.updateQueue,o!==null&&$s(i,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==o&&(i.flags|=2048),t!==null&&P(Ai),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),i.memoizedState.cache!==o&&(i.flags|=2048),pr(St),ft(i),null;case 25:return null;case 30:return null}throw Error(l(156,i.tag))}function DE(t,i){switch(af(i),i.tag){case 1:return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 3:return pr(St),se(),t=i.flags,(t&65536)!==0&&(t&128)===0?(i.flags=t&-65537|128,i):null;case 26:case 27:case 5:return ve(i),null;case 31:if(i.memoizedState!==null){if(hn(i),i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 13:if(hn(i),t=i.memoizedState,t!==null&&t.dehydrated!==null){if(i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 19:return P(vt),null;case 4:return se(),null;case 10:return pr(i.type),null;case 22:case 23:return hn(i),wf(),t!==null&&P(Ai),t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 24:return pr(St),null;case 25:return null;default:return null}}function q0(t,i){switch(af(i),i.tag){case 3:pr(St),se();break;case 26:case 27:case 5:ve(i);break;case 4:se();break;case 31:i.memoizedState!==null&&hn(i);break;case 13:hn(i);break;case 19:P(vt);break;case 10:pr(i.type);break;case 22:case 23:hn(i),wf(),t!==null&&P(Ai);break;case 24:pr(St)}}function Ua(t,i){try{var o=i.updateQueue,c=o!==null?o.lastEffect:null;if(c!==null){var g=c.next;o=g;do{if((o.tag&t)===t){c=void 0;var x=o.create,C=o.inst;c=x(),C.destroy=c}o=o.next}while(o!==g)}}catch(O){et(i,i.return,O)}}function Zr(t,i,o){try{var c=i.updateQueue,g=c!==null?c.lastEffect:null;if(g!==null){var x=g.next;c=x;do{if((c.tag&t)===t){var C=c.inst,O=C.destroy;if(O!==void 0){C.destroy=void 0,g=i;var Z=o,le=O;try{le()}catch(ce){et(g,Z,ce)}}}c=c.next}while(c!==x)}}catch(ce){et(i,i.return,ce)}}function U0(t){var i=t.updateQueue;if(i!==null){var o=t.stateNode;try{Ag(i,o)}catch(c){et(t,t.return,c)}}}function I0(t,i,o){o.props=Ri(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(c){et(t,i,c)}}function Ia(t,i){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof o=="function"?t.refCleanup=o(c):o.current=c}}catch(g){et(t,i,g)}}function Zn(t,i){var o=t.ref,c=t.refCleanup;if(o!==null)if(typeof c=="function")try{c()}catch(g){et(t,i,g)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(g){et(t,i,g)}else o.current=null}function V0(t){var i=t.type,o=t.memoizedProps,c=t.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":o.autoFocus&&c.focus();break e;case"img":o.src?c.src=o.src:o.srcSet&&(c.srcset=o.srcSet)}}catch(g){et(t,t.return,g)}}function Wf(t,i,o){try{var c=t.stateNode;n2(c,t.type,o,i),c[Gt]=i}catch(g){et(t,t.return,g)}}function G0(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ri(t.type)||t.tag===4}function ed(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||G0(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ri(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function td(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,i):(i=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,i.appendChild(t),o=o._reactRootContainer,o!=null||i.onclick!==null||(i.onclick=ur));else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode,i=null),t=t.child,t!==null))for(td(t,i,o),t=t.sibling;t!==null;)td(t,i,o),t=t.sibling}function Ps(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?o.insertBefore(t,i):o.appendChild(t);else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Ps(t,i,o),t=t.sibling;t!==null;)Ps(t,i,o),t=t.sibling}function Y0(t){var i=t.stateNode,o=t.memoizedProps;try{for(var c=t.type,g=i.attributes;g.length;)i.removeAttributeNode(g[0]);Ut(i,c,o),i[jt]=t,i[Gt]=o}catch(x){et(t,t.return,x)}}var vr=!1,Nt=!1,nd=!1,$0=typeof WeakSet=="function"?WeakSet:Set,Dt=null;function RE(t,i){if(t=t.containerInfo,_d=hu,t=rg(t),Fc(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var c=o.getSelection&&o.getSelection();if(c&&c.rangeCount!==0){o=c.anchorNode;var g=c.anchorOffset,x=c.focusNode;c=c.focusOffset;try{o.nodeType,x.nodeType}catch{o=null;break e}var C=0,O=-1,Z=-1,le=0,ce=0,de=t,ae=null;t:for(;;){for(var oe;de!==o||g!==0&&de.nodeType!==3||(O=C+g),de!==x||c!==0&&de.nodeType!==3||(Z=C+c),de.nodeType===3&&(C+=de.nodeValue.length),(oe=de.firstChild)!==null;)ae=de,de=oe;for(;;){if(de===t)break t;if(ae===o&&++le===g&&(O=C),ae===x&&++ce===c&&(Z=C),(oe=de.nextSibling)!==null)break;de=ae,ae=de.parentNode}de=oe}o=O===-1||Z===-1?null:{start:O,end:Z}}else o=null}o=o||{start:0,end:0}}else o=null;for(Ed={focusedElem:t,selectionRange:o},hu=!1,Dt=i;Dt!==null;)if(i=Dt,t=i.child,(i.subtreeFlags&1028)!==0&&t!==null)t.return=i,Dt=t;else for(;Dt!==null;){switch(i=Dt,x=i.alternate,t=i.flags,i.tag){case 0:if((t&4)!==0&&(t=i.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o title"))),Ut(x,c,o),x[jt]=t,wt(x),c=x;break e;case"link":var C=Ky("link","href",g).get(c+(o.href||""));if(C){for(var O=0;Oit&&(C=it,it=ke,ke=C);var te=tg(O,ke),W=tg(O,it);if(te&&W&&(oe.rangeCount!==1||oe.anchorNode!==te.node||oe.anchorOffset!==te.offset||oe.focusNode!==W.node||oe.focusOffset!==W.offset)){var ie=de.createRange();ie.setStart(te.node,te.offset),oe.removeAllRanges(),ke>it?(oe.addRange(ie),oe.extend(W.node,W.offset)):(ie.setEnd(W.node,W.offset),oe.addRange(ie))}}}}for(de=[],oe=O;oe=oe.parentNode;)oe.nodeType===1&&de.push({element:oe,left:oe.scrollLeft,top:oe.scrollTop});for(typeof O.focus=="function"&&O.focus(),O=0;Oo?32:o,M.T=null,o=ud,ud=null;var x=ei,C=Er;if(Ot=0,jl=ei=null,Er=0,(Ze&6)!==0)throw Error(l(331));var O=Ze;if(Ze|=4,ny(x.current),W0(x,x.current,C,o),Ze=O,Xa(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(Lt,x)}catch{}return!0}finally{Y.p=g,M.T=c,by(t,i)}}function Sy(t,i,o){i=En(o,i),i=Vf(t.stateNode,i,2),t=Xr(t,i,2),t!==null&&(xi(t,2),Kn(t))}function et(t,i,o){if(t.tag===3)Sy(t,t,o);else for(;i!==null;){if(i.tag===3){Sy(i,t,o);break}else if(i.tag===1){var c=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(Wr===null||!Wr.has(c))){t=En(o,t),o=_0(2),c=Xr(i,o,2),c!==null&&(E0(o,c,i,t),xi(c,2),Kn(c));break}}i=i.return}}function hd(t,i,o){var c=t.pingCache;if(c===null){c=t.pingCache=new BE;var g=new Set;c.set(i,g)}else g=c.get(i),g===void 0&&(g=new Set,c.set(i,g));g.has(o)||(ld=!0,g.add(o),t=GE.bind(null,t,i,o),i.then(t,t))}function GE(t,i,o){var c=t.pingCache;c!==null&&c.delete(i),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,lt===t&&(qe&o)===o&&(gt===4||gt===3&&(qe&62914560)===qe&&300>Mt()-Qs?(Ze&2)===0&&Ol(t,0):ad|=o,Ml===qe&&(Ml=0)),Kn(t)}function _y(t,i){i===0&&(i=Ko()),t=Ni(t,i),t!==null&&(xi(t,i),Kn(t))}function YE(t){var i=t.memoizedState,o=0;i!==null&&(o=i.retryLane),_y(t,o)}function $E(t,i){var o=0;switch(t.tag){case 31:case 13:var c=t.stateNode,g=t.memoizedState;g!==null&&(o=g.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(l(314))}c!==null&&c.delete(i),_y(t,o)}function PE(t,i){return It(t,i)}var nu=null,Rl=null,pd=!1,ru=!1,md=!1,ni=0;function Kn(t){t!==Rl&&t.next===null&&(Rl===null?nu=Rl=t:Rl=Rl.next=t),ru=!0,pd||(pd=!0,FE())}function Xa(t,i){if(!md&&ru){md=!0;do for(var o=!1,c=nu;c!==null;){if(t!==0){var g=c.pendingLanes;if(g===0)var x=0;else{var C=c.suspendedLanes,O=c.pingedLanes;x=(1<<31-Je(42|t)+1)-1,x&=g&~(C&~O),x=x&201326741?x&201326741|1:x?x|2:0}x!==0&&(o=!0,Cy(c,x))}else x=qe,x=il(c,c===lt?x:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(x&3)===0||yi(c,x)||(o=!0,Cy(c,x));c=c.next}while(o);md=!1}}function XE(){Ey()}function Ey(){ru=pd=!1;var t=0;ni!==0&&i2()&&(t=ni);for(var i=Mt(),o=null,c=nu;c!==null;){var g=c.next,x=Ny(c,i);x===0?(c.next=null,o===null?nu=g:o.next=g,g===null&&(Rl=o)):(o=c,(t!==0||(x&3)!==0)&&(ru=!0)),c=g}Ot!==0&&Ot!==5||Xa(t),ni!==0&&(ni=0)}function Ny(t,i){for(var o=t.suspendedLanes,c=t.pingedLanes,g=t.expirationTimes,x=t.pendingLanes&-62914561;0O)break;var ce=Z.transferSize,de=Z.initiatorType;ce&&Ry(de)&&(Z=Z.responseEnd,C+=ce*(Z"u"?null:document;function Xy(t,i,o){var c=Ll;if(c&&typeof i=="string"&&i){var g=Kt(i);g='link[rel="'+t+'"][href="'+g+'"]',typeof o=="string"&&(g+='[crossorigin="'+o+'"]'),Py.has(g)||(Py.add(g),t={rel:t,crossOrigin:o,href:i},c.querySelector(g)===null&&(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function h2(t){Nr.D(t),Xy("dns-prefetch",t,null)}function p2(t,i){Nr.C(t,i),Xy("preconnect",t,i)}function m2(t,i,o){Nr.L(t,i,o);var c=Ll;if(c&&t&&i){var g='link[rel="preload"][as="'+Kt(i)+'"]';i==="image"&&o&&o.imageSrcSet?(g+='[imagesrcset="'+Kt(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(g+='[imagesizes="'+Kt(o.imageSizes)+'"]')):g+='[href="'+Kt(t)+'"]';var x=g;switch(i){case"style":x=Hl(t);break;case"script":x=Bl(t)}An.has(x)||(t=p({rel:"preload",href:i==="image"&&o&&o.imageSrcSet?void 0:t,as:i},o),An.set(x,t),c.querySelector(g)!==null||i==="style"&&c.querySelector(Ka(x))||i==="script"&&c.querySelector(Ja(x))||(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function g2(t,i){Nr.m(t,i);var o=Ll;if(o&&t){var c=i&&typeof i.as=="string"?i.as:"script",g='link[rel="modulepreload"][as="'+Kt(c)+'"][href="'+Kt(t)+'"]',x=g;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":x=Bl(t)}if(!An.has(x)&&(t=p({rel:"modulepreload",href:t},i),An.set(x,t),o.querySelector(g)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Ja(x)))return}c=o.createElement("link"),Ut(c,"link",t),wt(c),o.head.appendChild(c)}}}function y2(t,i,o){Nr.S(t,i,o);var c=Ll;if(c&&t){var g=Hr(c).hoistableStyles,x=Hl(t);i=i||"default";var C=g.get(x);if(!C){var O={loading:0,preload:null};if(C=c.querySelector(Ka(x)))O.loading=5;else{t=p({rel:"stylesheet",href:t,"data-precedence":i},o),(o=An.get(x))&&Md(t,o);var Z=C=c.createElement("link");wt(Z),Ut(Z,"link",t),Z._p=new Promise(function(le,ce){Z.onload=le,Z.onerror=ce}),Z.addEventListener("load",function(){O.loading|=1}),Z.addEventListener("error",function(){O.loading|=2}),O.loading|=4,su(C,i,c)}C={type:"stylesheet",instance:C,count:1,state:O},g.set(x,C)}}}function x2(t,i){Nr.X(t,i);var o=Ll;if(o&&t){var c=Hr(o).hoistableScripts,g=Bl(t),x=c.get(g);x||(x=o.querySelector(Ja(g)),x||(t=p({src:t,async:!0},i),(i=An.get(g))&&jd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function v2(t,i){Nr.M(t,i);var o=Ll;if(o&&t){var c=Hr(o).hoistableScripts,g=Bl(t),x=c.get(g);x||(x=o.querySelector(Ja(g)),x||(t=p({src:t,async:!0,type:"module"},i),(i=An.get(g))&&jd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function Fy(t,i,o,c){var g=(g=J.current)?ou(g):null;if(!g)throw Error(l(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(i=Hl(o.href),o=Hr(g).hoistableStyles,c=o.get(i),c||(c={type:"style",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=Hl(o.href);var x=Hr(g).hoistableStyles,C=x.get(t);if(C||(g=g.ownerDocument||g,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},x.set(t,C),(x=g.querySelector(Ka(t)))&&!x._p&&(C.instance=x,C.state.loading=5),An.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},An.set(t,o),x||b2(g,t,o,C.state))),i&&c===null)throw Error(l(528,""));return C}if(i&&c!==null)throw Error(l(529,""));return null;case"script":return i=o.async,o=o.src,typeof o=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=Bl(o),o=Hr(g).hoistableScripts,c=o.get(i),c||(c={type:"script",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,t))}}function Hl(t){return'href="'+Kt(t)+'"'}function Ka(t){return'link[rel="stylesheet"]['+t+"]"}function Qy(t){return p({},t,{"data-precedence":t.precedence,precedence:null})}function b2(t,i,o,c){t.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(i=t.createElement("link"),c.preload=i,i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),Ut(i,"link",o),wt(i),t.head.appendChild(i))}function Bl(t){return'[src="'+Kt(t)+'"]'}function Ja(t){return"script[async]"+t}function Zy(t,i,o){if(i.count++,i.instance===null)switch(i.type){case"style":var c=t.querySelector('style[data-href~="'+Kt(o.href)+'"]');if(c)return i.instance=c,wt(c),c;var g=p({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),wt(c),Ut(c,"style",g),su(c,o.precedence,t),i.instance=c;case"stylesheet":g=Hl(o.href);var x=t.querySelector(Ka(g));if(x)return i.state.loading|=4,i.instance=x,wt(x),x;c=Qy(o),(g=An.get(g))&&Md(c,g),x=(t.ownerDocument||t).createElement("link"),wt(x);var C=x;return C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),i.state.loading|=4,su(x,o.precedence,t),i.instance=x;case"script":return x=Bl(o.src),(g=t.querySelector(Ja(x)))?(i.instance=g,wt(g),g):(c=o,(g=An.get(x))&&(c=p({},o),jd(c,g)),t=t.ownerDocument||t,g=t.createElement("script"),wt(g),Ut(g,"link",c),t.head.appendChild(g),i.instance=g);case"void":return null;default:throw Error(l(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(c=i.instance,i.state.loading|=4,su(c,o.precedence,t));return i.instance}function su(t,i,o){for(var c=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),g=c.length?c[c.length-1]:null,x=g,C=0;C title"):null)}function w2(t,i,o){if(o===1||i.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return t=i.disabled,typeof i.precedence=="string"&&t==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function Wy(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function S2(t,i,o,c){if(o.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var g=Hl(c.href),x=i.querySelector(Ka(g));if(x){i=x._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(t.count++,t=cu.bind(t),i.then(t,t)),o.state.loading|=4,o.instance=x,wt(x);return}x=i.ownerDocument||i,c=Qy(c),(g=An.get(g))&&Md(c,g),x=x.createElement("link"),wt(x);var C=x;C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),o.instance=x}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,i),(i=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=cu.bind(t),i.addEventListener("load",o),i.addEventListener("error",o))}}var Od=0;function _2(t,i){return t.stylesheets&&t.count===0&&du(t,t.stylesheets),0Od?50:800)+i);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(g)}}:null}function cu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)du(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var fu=null;function du(t,i){t.stylesheets=null,t.unsuspend!==null&&(t.count++,fu=new Map,i.forEach(E2,t),fu=null,cu.call(t))}function E2(t,i){if(!(i.state.loading&4)){var o=fu.get(t);if(o)var c=o.get(null);else{o=new Map,fu.set(t,o);for(var g=t.querySelectorAll("link[data-precedence],style[data-precedence]"),x=0;x"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Vd.exports=G2(),Vd.exports}var $2=Y2();/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P2=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Tb=(...e)=>e.filter((n,r,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===r).join(" ").trim();/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var X2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F2=V.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:a="",children:s,iconNode:u,...f},d)=>V.createElement("svg",{ref:d,...X2,width:n,height:n,stroke:e,strokeWidth:l?Number(r)*24/Number(n):r,className:Tb("lucide",a),...f},[...u.map(([h,m])=>V.createElement(h,m)),...Array.isArray(s)?s:[s]]));/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pe=(e,n)=>{const r=V.forwardRef(({className:l,...a},s)=>V.createElement(F2,{ref:s,iconNode:n,className:Tb(`lucide-${P2(e)}`,l),...a}));return r.displayName=`${e}`,r};/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zb=Pe("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q2=Pe("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vi=Pe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ji=Pe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mr=Pe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z2=Pe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K2=Pe("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J2=Pe("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ab=Pe("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mb=Pe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W2=Pe("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eN=Pe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tN=Pe("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nN=Pe("FileOutput",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rN=Pe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jb=Pe("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $p=Pe("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const No=Pe("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iN=Pe("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lN=Pe("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pp=Pe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aN=Pe("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oN=Pe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sN=Pe("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uN=Pe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _x=Pe("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ob=Pe("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cN=Pe("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fN=Pe("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dN=Pe("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hN=Pe("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uo=Pe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pN=Pe("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),Ex=e=>{let n;const r=new Set,l=(h,m)=>{const p=typeof h=="function"?h(n):h;if(!Object.is(p,n)){const y=n;n=m??(typeof p!="object"||p===null)?p:Object.assign({},n,p),r.forEach(v=>v(n,y))}},a=()=>n,f={setState:l,getState:a,getInitialState:()=>d,subscribe:h=>(r.add(h),()=>r.delete(h))},d=n=e(l,a,f);return f},mN=(e=>e?Ex(e):Ex),gN=e=>e;function yN(e,n=gN){const r=$l.useSyncExternalStore(e.subscribe,$l.useCallback(()=>n(e.getState()),[e,n]),$l.useCallback(()=>n(e.getInitialState()),[e,n]));return $l.useDebugValue(r),r}const Nx=e=>{const n=mN(e),r=l=>yN(n,l);return Object.assign(r,n),r},xN=(e=>e?Nx(e):Nx);function Qe(e,n,r="agent"){return e[n]||(e[n]={name:n,status:"pending",type:r,activity:[]}),e[n].activity||(e[n].activity=[]),e[n]}function bu(e,n,r){Qe(e,n).activity.push(r)}function Ie(e,n){e[n]&&(e[n]={...e[n]})}function lo(e,n,r,l){const a=e[n];if(!(a!=null&&a.for_each_items))return;const s=a.for_each_items.find(u=>u.key===r);s&&s.activity.push(l)}function vN(e,n,r){return{parentAgent:e,iteration:n,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function di(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;l=0;l--){const a=e[l];if(a.parentAgent===n&&(r==null||a.iteration===r))return{ctx:a,index:l}}return null}const he=xN((e,n)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const s=he.getState()._wsSend;s&&s({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},processEvent:r=>{const l=wu[r.type];e(a=>{const s={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(s,r.data,r.timestamp);const u=Su(r);u&&s.eventLog.push(u);const f=_u(r);return f&&s.activityLog.push(f),s})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const s of r){const u=wu[s.type];u&&u(a,s.data,s.timestamp);const f=Su(s);f&&a.eventLog.push(f);const d=_u(s);d&&a.activityLog.push(d),a.lastEventTime=s.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const s of r){const u=wu[s.type];u&&u(a,s.data,s.timestamp);const f=Su(s);f&&a.eventLog.push(f);const d=_u(s);d&&a.activityLog.push(d),a.lastEventTime=s.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),s={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,lastEventTime:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const f=wu[u.type];f&&f(s,u.data,u.timestamp);const d=Su(u);d&&s.eventLog.push(d);const h=_u(u);h&&s.activityLog.push(h),s.lastEventTime=u.timestamp}return s})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(s=>({highlightedEdges:[...s.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(s=>!(s.from===r&&s.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:(r,l)=>{const a=n(),s=a.viewContextPath;let u;if(s.length===0)u=a.subworkflowContexts;else{const d=di(a.subworkflowContexts,s);if(!d)return;u=d.children}const f=bN(u,r,l);f&&e({viewContextPath:[...s,f.index],selectedNode:null})},getViewedContext:()=>{const r=n();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=di(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=n(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let s=0;s0){const n=di(e.subworkflowContexts,e.activeContextPath);if(n)return{nodes:n.nodes,groupProgress:n.groupProgress,routes:n.routes,highlightedEdges:n.highlightedEdges,addCost:r=>{n.totalCost+=r,e.totalCost+=r},addTokens:r=>{n.totalTokens+=r,e.totalTokens+=r},incrCompleted:()=>{n.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:n=>{e.totalCost+=n},addTokens:n=>{e.totalTokens+=n},incrCompleted:()=>{e.agentsCompleted++}}}const wu={workflow_started:(e,n,r)=>{const l=n;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=n.yaml_source??null,e.conductorVersion=n.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],Qe(e.nodes,"$start","start"),e.nodes.$start.status="running",Ie(e.nodes,"$start");const a=new Set,s=new Set;for(const u of e.parallelGroups){for(const f of u.agents)a.add(f);s.add(u.name),Qe(e.nodes,u.name,"parallel_group"),e.groupProgress[u.name]={total:u.agents.length,completed:0,failed:0};for(const f of u.agents)Qe(e.nodes,f,"agent")}for(const u of e.forEachGroups)s.add(u.name),Qe(e.nodes,u.name,"for_each_group"),e.groupProgress[u.name]={total:0,completed:0,failed:0};for(const u of e.agents)if(!s.has(u.name)&&!a.has(u.name)){const f=u.type||"agent";Qe(e.nodes,u.name,f),u.model&&(e.nodes[u.name].model=u.model),s.add(u.name)}e.agentsTotal=s.size}else{const a=di(e.subworkflowContexts,e.activeContextPath);if(a){a.workflowName=l.name||"",a.status="running",a.entryPoint=l.entry_point||null,a.agents=l.agents||[],a.routes=l.routes||[],a.parallelGroups=l.parallel_groups||[],a.forEachGroups=l.for_each_groups||[],Qe(a.nodes,"$start","start"),a.nodes.$start.status="running";const s=new Set,u=new Set;for(const f of a.parallelGroups){for(const d of f.agents)s.add(d);u.add(f.name),Qe(a.nodes,f.name,"parallel_group"),a.groupProgress[f.name]={total:f.agents.length,completed:0,failed:0};for(const d of f.agents)Qe(a.nodes,d,"agent")}for(const f of a.forEachGroups)u.add(f.name),Qe(a.nodes,f.name,"for_each_group"),a.groupProgress[f.name]={total:0,completed:0,failed:0};for(const f of a.agents)if(!u.has(f.name)&&!s.has(f.name)){const d=f.type||"agent";Qe(a.nodes,f.name,d),f.model&&(a.nodes[f.name].model=f.model),u.add(f.name)}a.agentsTotal=u.size}}e.wfDepth++},agent_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.iteration!=null&&(s.output!=null||s.error_type!=null)&&(s.iterationHistory||(s.iterationHistory=[]),s.iterationHistory.push({iteration:s.iteration,prompt:s.prompt,output:s.output,elapsed:s.elapsed,model:s.model,tokens:s.tokens,input_tokens:s.input_tokens,output_tokens:s.output_tokens,cost_usd:s.cost_usd,activity:s.activity,error_type:s.error_type,error_message:s.error_message})),s.status="running",s.iteration=l.iteration,s.startedAt=r??Date.now()/1e3,s.activity=[],l.context_window_max!=null&&(s.context_window_max=l.context_window_max),s.prompt=void 0,s.output=void 0,s.error_type=void 0,s.error_message=void 0,Ie(a.nodes,l.agent_name)},agent_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name)},agent_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const s of l.routes)s.to===r.agent_name&&l.highlightedEdges.push({from:s.from,to:s.to,state:"failed"});Ie(l.nodes,r.agent_name)},agent_prompt_rendered:(e,n)=>{var u;const r=n,l=n.item_key,a=at(e),s=Qe(a.nodes,r.agent_name);if(s.prompt=r.rendered_prompt,s.context_keys=r.context_keys,l){lo(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const f=a.nodes[r.agent_name];if(f!=null&&f.for_each_items){const d=f.for_each_items.find(h=>h.key===l);d&&(d.prompt=r.rendered_prompt)}}Ie(a.nodes,r.agent_name)},agent_reasoning:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"reasoning",icon:"💭",label:"thinking",text:r.content};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_complete:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_turn_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_message:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.latest_message=r.content,Ie(l.nodes,r.agent_name)},script_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.status="running",s.startedAt=r??Date.now()/1e3,Ie(a.nodes,l.agent_name)},script_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,Ie(l.nodes,r.agent_name)},script_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name)},gate_presented:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,Ie(l.nodes,r.agent_name)},gate_resolved:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,Ie(l.nodes,r.agent_name)},route_taken:(e,n)=>{const r=n;at(e).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},parallel_agent_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_agent_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",Ie(l.nodes,r.group_name)},for_each_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},for_each_item_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),Ie(l.nodes,r.group_name)},for_each_item_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}Ie(l.nodes,r.group_name)},for_each_item_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}Ie(l.nodes,r.group_name)},for_each_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,Ie(l.nodes,r.group_name)},workflow_completed:(e,n)=>{if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const r=n;e.workflowStatus="completed",e.isPaused=!1,e.workflowOutput=r.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",Ie(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start")),e.highlightedEdges=[]}else{const r=di(e.subworkflowContexts,e.activeContextPath);if(r){const l=n;r.status="completed",r.workflowOutput=l.output??null,r.nodes.$end&&(r.nodes.$end.status="completed"),r.nodes.$start&&(r.nodes.$start.status="completed"),r.highlightedEdges=[]}e.activeContextPath=e.activeContextPath.slice(0,-1)}},workflow_failed:(e,n)=>{e.wfDepth=Math.max(0,e.wfDepth-1);const r=n;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",Ie(e.nodes,r.agent_name);for(const l of e.routes)l.to===r.agent_name&&e.highlightedEdges.push({from:l.from,to:l.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start"))}else{const l=di(e.subworkflowContexts,e.activeContextPath);l&&(l.status="failed",l.workflowFailure={error_type:r.error_type,message:r.message}),e.activeContextPath=e.activeContextPath.slice(0,-1)}},subworkflow_started:(e,n)=>{const r=n,l=vN(r.agent_name,r.iteration??1,r.workflow);if(e.activeContextPath.length===0)e.subworkflowContexts.push(l),e.activeContextPath=[e.subworkflowContexts.length-1];else{const s=di(e.subworkflowContexts,e.activeContextPath);s&&(s.children.push(l),e.activeContextPath=[...e.activeContextPath,s.children.length-1])}const a=e.activeContextPath.slice(0,-1);if(a.length===0){const s=e.nodes[r.agent_name];s&&(s.status="running",Ie(e.nodes,r.agent_name))}else{const s=di(e.subworkflowContexts,a);if(s){const u=s.nodes[r.agent_name];u&&(u.status="running",Ie(s.nodes,r.agent_name))}}},subworkflow_completed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="completed",a.elapsed=r.elapsed,l.incrCompleted(),Ie(l.nodes,r.agent_name))},subworkflow_failed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name))},checkpoint_saved:(e,n)=>{const r=n;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),Ie(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),Ie(e.nodes,r.agent_name),e.isPaused=!1}};function Su(e){var l,a;const n=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:n,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:n,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:n,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:n,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:n,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:n,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:n,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};default:return null}}function Hu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function _u(e){const n=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:n,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:ao(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:n,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:n,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?ao(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?ao(String(r.result),300):null};case"agent_turn_start":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:n,source:String(r.agent_name),type:"message",message:ao(String(r.content||""),500)};case"agent_completed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?ao(String(r.stdout),300):null};case"script_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function ao(e,n){return e.length<=n?e:e.slice(0,n)+"…"}function kx(e){const n=e.match(/^(\s*)/);return n?n[1].length:0}function wN(e){const n=new Map;for(let r=0;ra)s=u;else break}s>r&&n.set(r,s)}return n}function SN(e){if(/^\s*#/.test(e))return b.jsx("span",{className:"text-emerald-500/70",children:e});const n=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(n){const[,l,a,s,u,f]=n;return b.jsxs("span",{children:[l,a??"",b.jsx("span",{className:"text-sky-400",children:s}),b.jsx("span",{className:"text-[var(--text-muted)]",children:u}),Cx(f)]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,s]=r;return b.jsxs("span",{children:[l,b.jsx("span",{className:"text-[var(--text-muted)]",children:a}),Cx(s)]})}return b.jsx("span",{children:e})}function Cx(e){if(!e)return"";const n=e.indexOf(" #"),r=n>=0?e.slice(0,n):e,l=n>=0?e.slice(n):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=b.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=b.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),b.jsxs(b.Fragment,{children:[a,l&&b.jsx("span",{className:"text-emerald-500/70",children:l})]})}function _N({yaml:e,onClose:n}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const d=h=>{h.key==="Escape"&&n()};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[n]);const a=V.useMemo(()=>e.split(` +`),[e]),s=V.useMemo(()=>wN(a),[a]),u=V.useCallback(d=>{l(h=>{const m=new Set(h);return m.has(d)?m.delete(d):m.add(d),m})},[]),f=V.useMemo(()=>{const d=[];let h=-1;for(let m=0;mb.jsxs("div",{className:"flex",children:[b.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?b.jsx("button",{onClick:()=>u(d),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?b.jsx(Mr,{className:"w-3 h-3"}):b.jsx(Ji,{className:"w-3 h-3"})}):null}),b.jsxs("span",{className:"flex-1",children:[SN(h),p&&b.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(d),children:"···"})]})]},d))})})]})]})}function EN(){const e=he(_=>_.workflowName),n=he(_=>_.workflowStatus),r=he(_=>_.isPaused),l=he(_=>_.workflowYaml),a=he(_=>_.conductorVersion),[s,u]=V.useState(!1),[f,d]=V.useState(!1),[h,m]=V.useState(!1),[p,y]=V.useState(!1),v=n==="running"||n==="pending";V.useEffect(()=>{r||(u(!1),d(!1),m(!1))},[r]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(_){console.error("Failed to stop agent:",_),u(!1)}},k=async()=>{d(!0);try{await fetch("/api/resume",{method:"POST"})}catch(_){console.error("Failed to resume agent:",_),d(!1)}},S=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(_){console.error("Failed to kill workflow:",_),m(!1)}};return b.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(zb,{className:"w-4 h-4 text-[var(--running)]"}),b.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&b.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),b.jsxs("div",{className:"flex items-center gap-3",children:[r?b.jsxs(b.Fragment,{children:[b.jsxs("button",{onClick:k,disabled:f,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\r + hover:bg-emerald-500/20 hover:border-emerald-500/30\r + disabled:opacity-50 disabled:cursor-not-allowed\r + transition-colors`,title:"Re-execute the paused agent",children:[b.jsx(Pp,{className:"w-3 h-3"}),f?"Resuming...":"Resume"]}),b.jsxs("button",{onClick:S,disabled:h,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-red-500/10 text-red-400 border border-red-500/20\r + hover:bg-red-500/20 hover:border-red-500/30\r + disabled:opacity-50 disabled:cursor-not-allowed\r + transition-colors`,title:"Stop workflow entirely (checkpoint saved for CLI resume)",children:[b.jsx(Uo,{className:"w-3 h-3"}),h?"Killing...":"Kill"]})]}):v?b.jsxs("button",{onClick:w,disabled:s,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-red-500/10 text-red-400 border border-red-500/20\r + hover:bg-red-500/20 hover:border-red-500/30\r + disabled:opacity-50 disabled:cursor-not-allowed\r + transition-colors`,children:[b.jsx(Ob,{className:"w-3 h-3"}),s?"Stopping...":"Stop"]}):null,l&&b.jsxs("button",{onClick:()=>y(!0),className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r + hover:text-[var(--text)] hover:bg-[var(--surface)]\r + transition-colors`,title:"View workflow YAML configuration",children:[b.jsx(tN,{className:"w-3 h-3"}),"YAML"]}),b.jsxs("a",{href:"/api/logs",download:"conductor-logs.json",className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r + hover:text-[var(--text)] hover:bg-[var(--surface)]\r + transition-colors`,title:"Download full event log as JSON",children:[b.jsx(W2,{className:"w-3 h-3"}),"Logs"]}),b.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["v",a??"—"]})]}),p&&l&&b.jsx(_N,{yaml:l,onClose:()=>y(!1)})]})}function NN(){const e=he(s=>s.getBreadcrumbs),n=he(s=>s.navigateToContext),r=he(s=>s.viewContextPath);if(he(s=>s.subworkflowContexts).length===0&&r.length===0)return null;const a=e();return b.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5 bg-[var(--surface)] border-b border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx($p,{className:"w-3 h-3 text-[var(--text-muted)] mr-1"}),a.map((s,u)=>{const f=u===a.length-1,d=JSON.stringify(s.path)===JSON.stringify(r);return b.jsxs("span",{className:"flex items-center gap-1",children:[u>0&&b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)]"}),f?b.jsx("span",{className:"font-semibold text-[var(--text)]",children:s.label}):b.jsx("button",{onClick:()=>n(s.path),className:`hover:text-[var(--running)] transition-colors ${d?"text-[var(--text)] font-medium":"text-[var(--text-muted)]"}`,children:s.label})]},u)})]})}function Be(...e){return e.filter(Boolean).join(" ")}function Qt(e){if(e==null)return"";if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Vn(e){return e==null?"":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function mi(e){return e==null?"":`$${e.toFixed(4)}`}function Db(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)}function kN(e,n){if(n<=0)return`${e.toLocaleString()} tokens (limit unknown)`;const r=a=>a.toLocaleString(),l=(e/n*100).toFixed(1);return`${r(e)} / ${r(n)} (${l}%)`}function Rb(){const e=he(f=>f.workflowStatus),n=he(f=>f.workflowStartTime),r=he(f=>f.replayMode),l=he(f=>f.lastEventTime),[a,s]=V.useState("—"),u=V.useRef(null);return V.useEffect(()=>{if(n!=null){if(r){u.current&&(clearInterval(u.current),u.current=null),s(Qt((l??n)-n));return}if(e==="running"){const f=()=>{const d=Date.now()/1e3-n;s(Qt(d))};return f(),u.current=setInterval(f,500),()=>{u.current&&clearInterval(u.current)}}else(e==="completed"||e==="failed")&&u.current&&(clearInterval(u.current),u.current=null)}},[e,n,r,l]),a}function CN(){const e=he(k=>k.workflowStatus),n=he(k=>k.agentsCompleted),r=he(k=>k.agentsTotal),l=he(k=>k.totalCost),a=he(k=>k.totalTokens),s=he(k=>k.wsStatus),u=he(k=>k.workflowFailure),f=he(k=>k.lastEventTime),d=Rb(),[h,m]=V.useState(null);V.useEffect(()=>{if(e!=="running"||f==null){m(null);return}const k=()=>{m(Math.floor(Date.now()/1e3-f))};k();const S=setInterval(k,1e3);return()=>clearInterval(S)},[e,f]);const p=e==="failed",y=(()=>{switch(e){case"pending":return"Waiting for workflow…";case"running":return"Running";case"completed":return"Completed";case"failed":{if(!u)return"Failed";const k=u.error_type||"";return k==="MaxIterationsError"?"Failed: exceeded maximum iterations":k==="TimeoutError"?"Failed: workflow timed out":u.message?`Failed: ${u.message.length>60?u.message.slice(0,57)+"...":u.message}`:`Failed: ${k}`}}})(),v={pending:"bg-[var(--pending)]",running:"bg-[var(--running)] animate-pulse",completed:"bg-[var(--completed)]",failed:"bg-[var(--failed)]"}[e],w=(()=>{switch(s){case"connected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--completed)]",children:[b.jsx(hN,{className:"w-3 h-3"}),b.jsx("span",{children:"Connected"})]});case"disconnected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--failed)]",children:[b.jsx(dN,{className:"w-3 h-3"}),b.jsx("span",{children:"Disconnected"})]});case"reconnecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--waiting)]",children:[b.jsx(No,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Reconnecting\\u2026"})]});case"connecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-muted)]",children:[b.jsx(No,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Connecting\\u2026"})]})}})();return b.jsxs("footer",{className:Be("flex items-center gap-4 px-4 py-1.5 border-t text-xs flex-shrink-0 transition-colors duration-300",p?"bg-red-950/50 border-red-500/30":"bg-[var(--surface)] border-[var(--border)]"),children:[b.jsx("span",{className:Be("w-2 h-2 rounded-full flex-shrink-0",v)}),b.jsx("span",{className:Be(p?"text-red-300":"text-[var(--text)]"),children:y}),r>0&&b.jsxs("span",{className:Be(p?"text-red-400/60":"text-[var(--text-muted)]"),children:[n,"/",r," agents"]}),e!=="pending"&&b.jsx("span",{className:Be("font-mono",p?"text-red-400/60":"text-[var(--text-muted)]"),children:d}),a>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total tokens used",children:[b.jsx(jb,{className:"w-3 h-3"}),b.jsx("span",{className:"font-mono",children:a.toLocaleString()})]}),l>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total cost",children:[b.jsx(Ab,{className:"w-3 h-3"}),b.jsxs("span",{className:"font-mono",children:["$",l.toFixed(4)]})]}),h!=null&&h>=5&&b.jsxs("span",{className:Be("flex items-center gap-1 font-mono",h>=60?"text-amber-400":"text-[var(--text-muted)]"),title:"Time since last event from the provider",children:[b.jsx(J2,{className:"w-3 h-3"}),b.jsx("span",{children:h>=60?`${Math.floor(h/60)}m ${h%60}s idle`:`${h}s idle`})]}),b.jsx("span",{className:"flex-1"}),w]})}const TN=[1,5,10,20,50];function zN(e,n){if(n===0||e.length===0)return"+0.0s";const r=e[0].timestamp,a=e[Math.min(n,e.length)-1].timestamp-r;if(a<60)return`+${a.toFixed(1)}s`;const s=Math.floor(a/60),u=a%60;return`+${s}m${u.toFixed(0)}s`}function AN(){const e=he(p=>p.replayPosition),n=he(p=>p.replayTotalEvents),r=he(p=>p.replayPlaying),l=he(p=>p.replaySpeed),a=he(p=>p.replayEvents),s=he(p=>p.setReplayPosition),u=he(p=>p.setReplayPlaying),f=he(p=>p.setReplaySpeed),d=p=>{const y=parseInt(p.target.value,10);s(y),r&&u(!1)},h=()=>{!r&&e>=n&&s(0),u(!r)},m=n>0?e/n*100:0;return b.jsxs("footer",{className:"flex items-center gap-3 px-4 py-1.5 border-t bg-[var(--surface)] border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx("button",{onClick:h,className:"flex items-center justify-center w-6 h-6 rounded hover:bg-[var(--surface-hover)] text-[var(--text-secondary)] hover:text-[var(--text)] transition-colors",title:r?"Pause":"Play",children:r?b.jsx(lN,{className:"w-3.5 h-3.5"}):b.jsx(Pp,{className:"w-3.5 h-3.5"})}),b.jsxs("div",{className:"flex-1 relative flex items-center",children:[b.jsx("input",{type:"range",min:0,max:n,value:e,onChange:d,className:"w-full h-1 appearance-none rounded-full cursor-pointer",style:{background:`linear-gradient(to right, var(--accent) 0%, var(--accent) ${m}%, var(--border) ${m}%, var(--border) 100%)`,WebkitAppearance:"none"}}),b.jsx("style",{children:` + footer input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--accent); + border: 2px solid var(--surface); + cursor: pointer; + box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); + } + footer input[type="range"]::-moz-range-thumb { + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--accent); + border: 2px solid var(--surface); + cursor: pointer; + box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); + } + `})]}),b.jsx("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:zN(a,e)}),b.jsxs("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:["Event ",e,"/",n]}),b.jsx("div",{className:"flex items-center gap-0.5",children:TN.map(p=>b.jsxs("button",{onClick:()=>f(p),className:Be("px-1.5 py-0.5 rounded text-xs font-mono transition-colors",l===p?"bg-[var(--accent)] text-white":"text-[var(--text-muted)] hover:text-[var(--text-secondary)] hover:bg-[var(--surface-hover)]"),children:[p,"×"]},p))})]})}const sc=V.createContext(null);sc.displayName="PanelGroupContext";const yt={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Xp=10,Gi=V.useLayoutEffect,Tx=q2.useId,MN=typeof Tx=="function"?Tx:()=>null;let jN=0;function Fp(e=null){const n=MN(),r=V.useRef(e||n||null);return r.current===null&&(r.current=""+jN++),e??r.current}function Lb({children:e,className:n="",collapsedSize:r,collapsible:l,defaultSize:a,forwardedRef:s,id:u,maxSize:f,minSize:d,onCollapse:h,onExpand:m,onResize:p,order:y,style:v,tagName:w="div",...k}){const S=V.useContext(sc);if(S===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:_,expandPanel:T,getPanelSize:E,getPanelStyle:z,groupId:I,isPanelCollapsed:A,reevaluatePanelConstraints:R,registerPanel:D,resizePanel:U,unregisterPanel:X}=S,B=Fp(u),q=V.useRef({callbacks:{onCollapse:h,onExpand:m,onResize:p},constraints:{collapsedSize:r,collapsible:l,defaultSize:a,maxSize:f,minSize:d},id:B,idIsFromProps:u!==void 0,order:y});V.useRef({didLogMissingDefaultSizeWarning:!1}),Gi(()=>{const{callbacks:L,constraints:$}=q.current,M={...$};q.current.id=B,q.current.idIsFromProps=u!==void 0,q.current.order=y,L.onCollapse=h,L.onExpand=m,L.onResize=p,$.collapsedSize=r,$.collapsible=l,$.defaultSize=a,$.maxSize=f,$.minSize=d,(M.collapsedSize!==$.collapsedSize||M.collapsible!==$.collapsible||M.maxSize!==$.maxSize||M.minSize!==$.minSize)&&R(q.current,M)}),Gi(()=>{const L=q.current;return D(L),()=>{X(L)}},[y,B,D,X]),V.useImperativeHandle(s,()=>({collapse:()=>{_(q.current)},expand:L=>{T(q.current,L)},getId(){return B},getSize(){return E(q.current)},isCollapsed(){return A(q.current)},isExpanded(){return!A(q.current)},resize:L=>{U(q.current,L)}}),[_,T,E,A,B,U]);const ee=z(q.current,a);return V.createElement(w,{...k,children:e,className:n,id:B,style:{...ee,...v},[yt.groupId]:I,[yt.panel]:"",[yt.panelCollapsible]:l||void 0,[yt.panelId]:B,[yt.panelSize]:parseFloat(""+ee.flexGrow).toFixed(1)})}const po=V.forwardRef((e,n)=>V.createElement(Lb,{...e,forwardedRef:n}));Lb.displayName="Panel";po.displayName="forwardRef(Panel)";let xp=null,Bu=-1,hi=null;function ON(e,n){if(n){const r=(n&Ib)!==0,l=(n&Vb)!==0,a=(n&Gb)!==0,s=(n&Yb)!==0;if(r)return a?"se-resize":s?"ne-resize":"e-resize";if(l)return a?"sw-resize":s?"nw-resize":"w-resize";if(a)return"s-resize";if(s)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function DN(){hi!==null&&(document.head.removeChild(hi),xp=null,hi=null,Bu=-1)}function Pd(e,n){var r,l;const a=ON(e,n);if(xp!==a){if(xp=a,hi===null&&(hi=document.createElement("style"),document.head.appendChild(hi)),Bu>=0){var s;(s=hi.sheet)===null||s===void 0||s.removeRule(Bu)}Bu=(r=(l=hi.sheet)===null||l===void 0?void 0:l.insertRule(`*{cursor: ${a} !important;}`))!==null&&r!==void 0?r:-1}}function Hb(e){return e.type==="keydown"}function Bb(e){return e.type.startsWith("pointer")}function qb(e){return e.type.startsWith("mouse")}function uc(e){if(Bb(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(qb(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function RN(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function LN(e,n,r){return e.xn.x&&e.yn.y}function HN(e,n){if(e===n)throw new Error("Cannot compare node with itself");const r={a:Mx(e),b:Mx(n)};let l;for(;r.a.at(-1)===r.b.at(-1);)e=r.a.pop(),n=r.b.pop(),l=e;De(l,"Stacking order can only be calculated for elements with a common ancestor");const a={a:Ax(zx(r.a)),b:Ax(zx(r.b))};if(a.a===a.b){const s=l.childNodes,u={a:r.a.at(-1),b:r.b.at(-1)};let f=s.length;for(;f--;){const d=s[f];if(d===u.a)return 1;if(d===u.b)return-1}}return Math.sign(a.a-a.b)}const BN=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function qN(e){var n;const r=getComputedStyle((n=Ub(e))!==null&&n!==void 0?n:e).display;return r==="flex"||r==="inline-flex"}function UN(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||qN(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||BN.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function zx(e){let n=e.length;for(;n--;){const r=e[n];if(De(r,"Missing node"),UN(r))return r}return null}function Ax(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Mx(e){const n=[];for(;e;)n.push(e),e=Ub(e);return n}function Ub(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const Ib=1,Vb=2,Gb=4,Yb=8,IN=RN()==="coarse";let Gn=[],Zl=!1,Ui=new Map,cc=new Map;const ko=new Set;function VN(e,n,r,l,a){var s;const{ownerDocument:u}=n,f={direction:r,element:n,hitAreaMargins:l,setResizeHandlerState:a},d=(s=Ui.get(u))!==null&&s!==void 0?s:0;return Ui.set(u,d+1),ko.add(f),Pu(),function(){var m;cc.delete(e),ko.delete(f);const p=(m=Ui.get(u))!==null&&m!==void 0?m:1;if(Ui.set(u,p-1),Pu(),p===1&&Ui.delete(u),Gn.includes(f)){const y=Gn.indexOf(f);y>=0&&Gn.splice(y,1),Zp(),a("up",!0,null)}}}function GN(e){const{target:n}=e,{x:r,y:l}=uc(e);Zl=!0,Qp({target:n,x:r,y:l}),Pu(),Gn.length>0&&(Xu("down",e),e.preventDefault(),$b(n)||e.stopImmediatePropagation())}function Xd(e){const{x:n,y:r}=uc(e);if(Zl&&e.buttons===0&&(Zl=!1,Xu("up",e)),!Zl){const{target:l}=e;Qp({target:l,x:n,y:r})}Xu("move",e),Zp(),Gn.length>0&&e.preventDefault()}function Fd(e){const{target:n}=e,{x:r,y:l}=uc(e);cc.clear(),Zl=!1,Gn.length>0&&(e.preventDefault(),$b(n)||e.stopImmediatePropagation()),Xu("up",e),Qp({target:n,x:r,y:l}),Zp(),Pu()}function $b(e){let n=e;for(;n;){if(n.hasAttribute(yt.resizeHandle))return!0;n=n.parentElement}return!1}function Qp({target:e,x:n,y:r}){Gn.splice(0);let l=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(l=e),ko.forEach(a=>{const{element:s,hitAreaMargins:u}=a,f=s.getBoundingClientRect(),{bottom:d,left:h,right:m,top:p}=f,y=IN?u.coarse:u.fine;if(n>=h-y&&n<=m+y&&r>=p-y&&r<=d+y){if(l!==null&&document.contains(l)&&s!==l&&!s.contains(l)&&!l.contains(s)&&HN(l,s)>0){let w=l,k=!1;for(;w&&!w.contains(s);){if(LN(w.getBoundingClientRect(),f)){k=!0;break}w=w.parentElement}if(k)return}Gn.push(a)}})}function Qd(e,n){cc.set(e,n)}function Zp(){let e=!1,n=!1;Gn.forEach(l=>{const{direction:a}=l;a==="horizontal"?e=!0:n=!0});let r=0;cc.forEach(l=>{r|=l}),e&&n?Pd("intersection",r):e?Pd("horizontal",r):n?Pd("vertical",r):DN()}let Zd=new AbortController;function Pu(){Zd.abort(),Zd=new AbortController;const e={capture:!0,signal:Zd.signal};ko.size&&(Zl?(Gn.length>0&&Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("contextmenu",Fd,e),l.addEventListener("pointerleave",Xd,e),l.addEventListener("pointermove",Xd,e))}),window.addEventListener("pointerup",Fd,e),window.addEventListener("pointercancel",Fd,e)):Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("pointerdown",GN,e),l.addEventListener("pointermove",Xd,e))}))}function Xu(e,n){ko.forEach(r=>{const{setResizeHandlerState:l}=r,a=Gn.includes(r);l(e,a,n)})}function YN(){const[e,n]=V.useState(0);return V.useCallback(()=>n(r=>r+1),[])}function De(e,n){if(!e)throw console.error(n),Error(n)}function Pi(e,n,r=Xp){return e.toFixed(r)===n.toFixed(r)?0:e>n?1:-1}function Cr(e,n,r=Xp){return Pi(e,n,r)===0}function xn(e,n,r){return Pi(e,n,r)===0}function $N(e,n,r){if(e.length!==n.length)return!1;for(let l=0;l0&&(e=e<0?0-_:_)}}}{const p=e<0?f:d,y=r[p];De(y,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:w,minSize:k=0}=y;if(w){const S=n[p];if(De(S!=null,`Previous layout not found for panel index ${p}`),xn(S,k)){const _=S-v;Pi(_,Math.abs(e))>0&&(e=e<0?0-_:_)}}}}{const p=e<0?1:-1;let y=e<0?d:f,v=0;for(;;){const k=n[y];De(k!=null,`Previous layout not found for panel index ${y}`);const _=Pl({panelConstraints:r,panelIndex:y,size:100})-k;if(v+=_,y+=p,y<0||y>=r.length)break}const w=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-w:w}{let y=e<0?f:d;for(;y>=0&&y=0))break;e<0?y--:y++}}if($N(a,u))return a;{const p=e<0?d:f,y=n[p];De(y!=null,`Previous layout not found for panel index ${p}`);const v=y+h,w=Pl({panelConstraints:r,panelIndex:p,size:v});if(u[p]=w,!xn(w,v)){let k=v-w,_=e<0?d:f;for(;_>=0&&_0?_--:_++}}}const m=u.reduce((p,y)=>y+p,0);return xn(m,100)?u:a}function PN({layout:e,panelsArray:n,pivotIndices:r}){let l=0,a=100,s=0,u=0;const f=r[0];De(f!=null,"No pivot index found"),n.forEach((p,y)=>{const{constraints:v}=p,{maxSize:w=100,minSize:k=0}=v;y===f?(l=k,a=w):(s+=k,u+=w)});const d=Math.min(a,100-s),h=Math.max(l,100-u),m=e[f];return{valueMax:d,valueMin:h,valueNow:m}}function Co(e,n=document){return Array.from(n.querySelectorAll(`[${yt.resizeHandleId}][data-panel-group-id="${e}"]`))}function Pb(e,n,r=document){const a=Co(e,r).findIndex(s=>s.getAttribute(yt.resizeHandleId)===n);return a??null}function Xb(e,n,r){const l=Pb(e,n,r);return l!=null?[l,l+1]:[-1,-1]}function Fb(e,n=document){var r;if(n instanceof HTMLElement&&(n==null||(r=n.dataset)===null||r===void 0?void 0:r.panelGroupId)==e)return n;const l=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return l||null}function fc(e,n=document){const r=n.querySelector(`[${yt.resizeHandleId}="${e}"]`);return r||null}function XN(e,n,r,l=document){var a,s,u,f;const d=fc(n,l),h=Co(e,l),m=d?h.indexOf(d):-1,p=(a=(s=r[m])===null||s===void 0?void 0:s.id)!==null&&a!==void 0?a:null,y=(u=(f=r[m+1])===null||f===void 0?void 0:f.id)!==null&&u!==void 0?u:null;return[p,y]}function FN({committedValuesRef:e,eagerValuesRef:n,groupId:r,layout:l,panelDataArray:a,panelGroupElement:s,setLayout:u}){V.useRef({didWarnAboutMissingResizeHandle:!1}),Gi(()=>{if(!s)return;const f=Co(r,s);for(let d=0;d{f.forEach((d,h)=>{d.removeAttribute("aria-controls"),d.removeAttribute("aria-valuemax"),d.removeAttribute("aria-valuemin"),d.removeAttribute("aria-valuenow")})}},[r,l,a,s]),V.useEffect(()=>{if(!s)return;const f=n.current;De(f,"Eager values not found");const{panelDataArray:d}=f,h=Fb(r,s);De(h!=null,`No group found for id "${r}"`);const m=Co(r,s);De(m,`No resize handles found for group id "${r}"`);const p=m.map(y=>{const v=y.getAttribute(yt.resizeHandleId);De(v,"Resize handle element has no handle id attribute");const[w,k]=XN(r,v,d,s);if(w==null||k==null)return()=>{};const S=_=>{if(!_.defaultPrevented)switch(_.key){case"Enter":{_.preventDefault();const T=d.findIndex(E=>E.id===w);if(T>=0){const E=d[T];De(E,`No panel data found for index ${T}`);const z=l[T],{collapsedSize:I=0,collapsible:A,minSize:R=0}=E.constraints;if(z!=null&&A){const D=mo({delta:xn(z,I)?R-I:I-z,initialLayout:l,panelConstraints:d.map(U=>U.constraints),pivotIndices:Xb(r,v,s),prevLayout:l,trigger:"keyboard"});l!==D&&u(D)}}break}}};return y.addEventListener("keydown",S),()=>{y.removeEventListener("keydown",S)}});return()=>{p.forEach(y=>y())}},[s,e,n,r,l,a,u])}function jx(e,n){if(e.length!==n.length)return!1;for(let r=0;rs.constraints);let l=0,a=100;for(let s=0;s{const s=e[a];De(s,`Panel data not found for index ${a}`);const{callbacks:u,constraints:f,id:d}=s,{collapsedSize:h=0,collapsible:m}=f,p=r[d];if(p==null||l!==p){r[d]=l;const{onCollapse:y,onExpand:v,onResize:w}=u;w&&w(l,p),m&&(y||v)&&(v&&(p==null||Cr(p,h))&&!Cr(l,h)&&v(),y&&(p==null||!Cr(p,h))&&Cr(l,h)&&y())}})}function Eu(e,n){if(e.length!==n.length)return!1;for(let r=0;r{r!==null&&clearTimeout(r),r=setTimeout(()=>{e(...a)},n)}}function Ox(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,r)=>{localStorage.setItem(n,r)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function Zb(e){return`react-resizable-panels:${e}`}function Kb(e){return e.map(n=>{const{constraints:r,id:l,idIsFromProps:a,order:s}=n;return a?l:s?`${s}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((n,r)=>n.localeCompare(r)).join(",")}function Jb(e,n){try{const r=Zb(e),l=n.getItem(r);if(l){const a=JSON.parse(l);if(typeof a=="object"&&a!=null)return a}}catch{}return null}function ek(e,n,r){var l,a;const s=(l=Jb(e,r))!==null&&l!==void 0?l:{},u=Kb(n);return(a=s[u])!==null&&a!==void 0?a:null}function tk(e,n,r,l,a){var s;const u=Zb(e),f=Kb(n),d=(s=Jb(e,a))!==null&&s!==void 0?s:{};d[f]={expandToSizes:Object.fromEntries(r.entries()),layout:l};try{a.setItem(u,JSON.stringify(d))}catch(h){console.error(h)}}function Dx({layout:e,panelConstraints:n}){const r=[...e],l=r.reduce((s,u)=>s+u,0);if(r.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${r.map(s=>`${s}%`).join(", ")}`);if(!xn(l,100)&&r.length>0)for(let s=0;s(Ox(go),go.getItem(e)),setItem:(e,n)=>{Ox(go),go.setItem(e,n)}},Rx={};function Wb({autoSaveId:e=null,children:n,className:r="",direction:l,forwardedRef:a,id:s=null,onLayout:u=null,keyboardResizeBy:f=null,storage:d=go,style:h,tagName:m="div",...p}){const y=Fp(s),v=V.useRef(null),[w,k]=V.useState(null),[S,_]=V.useState([]),T=YN(),E=V.useRef({}),z=V.useRef(new Map),I=V.useRef(0),A=V.useRef({autoSaveId:e,direction:l,dragState:w,id:y,keyboardResizeBy:f,onLayout:u,storage:d}),R=V.useRef({layout:S,panelDataArray:[],panelDataArrayChanged:!1});V.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),V.useImperativeHandle(a,()=>({getId:()=>A.current.id,getLayout:()=>{const{layout:N}=R.current;return N},setLayout:N=>{const{onLayout:G}=A.current,{layout:F,panelDataArray:J}=R.current,ne=Dx({layout:N,panelConstraints:J.map(re=>re.constraints)});jx(F,ne)||(_(ne),R.current.layout=ne,G&&G(ne),Ul(J,ne,E.current))}}),[]),Gi(()=>{A.current.autoSaveId=e,A.current.direction=l,A.current.dragState=w,A.current.id=y,A.current.onLayout=u,A.current.storage=d}),FN({committedValuesRef:A,eagerValuesRef:R,groupId:y,layout:S,panelDataArray:R.current.panelDataArray,setLayout:_,panelGroupElement:v.current}),V.useEffect(()=>{const{panelDataArray:N}=R.current;if(e){if(S.length===0||S.length!==N.length)return;let G=Rx[e];G==null&&(G=WN(tk,nk),Rx[e]=G);const F=[...N],J=new Map(z.current);G(e,F,J,S,d)}},[e,S,d]),V.useEffect(()=>{});const D=V.useCallback(N=>{const{onLayout:G}=A.current,{layout:F,panelDataArray:J}=R.current;if(N.constraints.collapsible){const ne=J.map(ve=>ve.constraints),{collapsedSize:re=0,panelSize:se,pivotIndices:ye}=Bi(J,N,F);if(De(se!=null,`Panel size not found for panel "${N.id}"`),!Cr(se,re)){z.current.set(N.id,se);const xe=Yl(J,N)===J.length-1?se-re:re-se,pe=mo({delta:xe,initialLayout:F,panelConstraints:ne,pivotIndices:ye,prevLayout:F,trigger:"imperative-api"});Eu(F,pe)||(_(pe),R.current.layout=pe,G&&G(pe),Ul(J,pe,E.current))}}},[]),U=V.useCallback((N,G)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=R.current;if(N.constraints.collapsible){const re=ne.map(_e=>_e.constraints),{collapsedSize:se=0,panelSize:ye=0,minSize:ve=0,pivotIndices:xe}=Bi(ne,N,J),pe=G??ve;if(Cr(ye,se)){const _e=z.current.get(N.id),Me=_e!=null&&_e>=pe?_e:pe,ut=Yl(ne,N)===ne.length-1?ye-Me:Me-ye,tt=mo({delta:ut,initialLayout:J,panelConstraints:re,pivotIndices:xe,prevLayout:J,trigger:"imperative-api"});Eu(J,tt)||(_(tt),R.current.layout=tt,F&&F(tt),Ul(ne,tt,E.current))}}},[]),X=V.useCallback(N=>{const{layout:G,panelDataArray:F}=R.current,{panelSize:J}=Bi(F,N,G);return De(J!=null,`Panel size not found for panel "${N.id}"`),J},[]),B=V.useCallback((N,G)=>{const{panelDataArray:F}=R.current,J=Yl(F,N);return JN({defaultSize:G,dragState:w,layout:S,panelData:F,panelIndex:J})},[w,S]),q=V.useCallback(N=>{const{layout:G,panelDataArray:F}=R.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,G);return De(re!=null,`Panel size not found for panel "${N.id}"`),ne===!0&&Cr(re,J)},[]),ee=V.useCallback(N=>{const{layout:G,panelDataArray:F}=R.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,G);return De(re!=null,`Panel size not found for panel "${N.id}"`),!ne||Pi(re,J)>0},[]),L=V.useCallback(N=>{const{panelDataArray:G}=R.current;G.push(N),G.sort((F,J)=>{const ne=F.order,re=J.order;return ne==null&&re==null?0:ne==null?-1:re==null?1:ne-re}),R.current.panelDataArrayChanged=!0,T()},[T]);Gi(()=>{if(R.current.panelDataArrayChanged){R.current.panelDataArrayChanged=!1;const{autoSaveId:N,onLayout:G,storage:F}=A.current,{layout:J,panelDataArray:ne}=R.current;let re=null;if(N){const ye=ek(N,ne,F);ye&&(z.current=new Map(Object.entries(ye.expandToSizes)),re=ye.layout)}re==null&&(re=KN({panelDataArray:ne}));const se=Dx({layout:re,panelConstraints:ne.map(ye=>ye.constraints)});jx(J,se)||(_(se),R.current.layout=se,G&&G(se),Ul(ne,se,E.current))}}),Gi(()=>{const N=R.current;return()=>{N.layout=[]}},[]);const $=V.useCallback(N=>{let G=!1;const F=v.current;return F&&window.getComputedStyle(F,null).getPropertyValue("direction")==="rtl"&&(G=!0),function(ne){ne.preventDefault();const re=v.current;if(!re)return()=>null;const{direction:se,dragState:ye,id:ve,keyboardResizeBy:xe,onLayout:pe}=A.current,{layout:_e,panelDataArray:Me}=R.current,{initialLayout:Ce}=ye??{},ut=Xb(ve,N,re);let tt=ZN(ne,N,se,ye,xe,re);const At=se==="horizontal";At&&G&&(tt=-tt);const It=Me.map(jn=>jn.constraints),Rt=mo({delta:tt,initialLayout:Ce??_e,panelConstraints:It,pivotIndices:ut,prevLayout:_e,trigger:Hb(ne)?"keyboard":"mouse-or-touch"}),Sn=!Eu(_e,Rt);(Bb(ne)||qb(ne))&&I.current!=tt&&(I.current=tt,!Sn&&tt!==0?At?Qd(N,tt<0?Ib:Vb):Qd(N,tt<0?Gb:Yb):Qd(N,0)),Sn&&(_(Rt),R.current.layout=Rt,pe&&pe(Rt),Ul(Me,Rt,E.current))}},[]),M=V.useCallback((N,G)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=R.current,re=ne.map(_e=>_e.constraints),{panelSize:se,pivotIndices:ye}=Bi(ne,N,J);De(se!=null,`Panel size not found for panel "${N.id}"`);const xe=Yl(ne,N)===ne.length-1?se-G:G-se,pe=mo({delta:xe,initialLayout:J,panelConstraints:re,pivotIndices:ye,prevLayout:J,trigger:"imperative-api"});Eu(J,pe)||(_(pe),R.current.layout=pe,F&&F(pe),Ul(ne,pe,E.current))},[]),Y=V.useCallback((N,G)=>{const{layout:F,panelDataArray:J}=R.current,{collapsedSize:ne=0,collapsible:re}=G,{collapsedSize:se=0,collapsible:ye,maxSize:ve=100,minSize:xe=0}=N.constraints,{panelSize:pe}=Bi(J,N,F);pe!=null&&(re&&ye&&Cr(pe,ne)?Cr(ne,se)||M(N,se):peve&&M(N,ve))},[M]),Q=V.useCallback((N,G)=>{const{direction:F}=A.current,{layout:J}=R.current;if(!v.current)return;const ne=fc(N,v.current);De(ne,`Drag handle element not found for id "${N}"`);const re=Qb(F,G);k({dragHandleId:N,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:re,initialLayout:J})},[]),K=V.useCallback(()=>{k(null)},[]),j=V.useCallback(N=>{const{panelDataArray:G}=R.current,F=Yl(G,N);F>=0&&(G.splice(F,1),delete E.current[N.id],R.current.panelDataArrayChanged=!0,T())},[T]),H=V.useMemo(()=>({collapsePanel:D,direction:l,dragState:w,expandPanel:U,getPanelSize:X,getPanelStyle:B,groupId:y,isPanelCollapsed:q,isPanelExpanded:ee,reevaluatePanelConstraints:Y,registerPanel:L,registerResizeHandle:$,resizePanel:M,startDragging:Q,stopDragging:K,unregisterPanel:j,panelGroupElement:v.current}),[D,w,l,U,X,B,y,q,ee,Y,L,$,M,Q,K,j]),P={display:"flex",flexDirection:l==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return V.createElement(sc.Provider,{value:H},V.createElement(m,{...p,children:n,className:r,id:s,ref:v,style:{...P,...h},[yt.group]:"",[yt.groupDirection]:l,[yt.groupId]:y}))}const vp=V.forwardRef((e,n)=>V.createElement(Wb,{...e,forwardedRef:n}));Wb.displayName="PanelGroup";vp.displayName="forwardRef(PanelGroup)";function Yl(e,n){return e.findIndex(r=>r===n||r.id===n.id)}function Bi(e,n,r){const l=Yl(e,n),s=l===e.length-1?[l-1,l]:[l,l+1],u=r[l];return{...n.constraints,panelSize:u,pivotIndices:s}}function rk({disabled:e,handleId:n,resizeHandler:r,panelGroupElement:l}){V.useEffect(()=>{if(e||r==null||l==null)return;const a=fc(n,l);if(a==null)return;const s=u=>{if(!u.defaultPrevented)switch(u.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{u.preventDefault(),r(u);break}case"F6":{u.preventDefault();const f=a.getAttribute(yt.groupId);De(f,`No group element found for id "${f}"`);const d=Co(f,l),h=Pb(f,n,l);De(h!==null,`No resize element found for id "${n}"`);const m=u.shiftKey?h>0?h-1:d.length-1:h+1{a.removeEventListener("keydown",s)}},[l,e,n,r])}function bp({children:e=null,className:n="",disabled:r=!1,hitAreaMargins:l,id:a,onBlur:s,onClick:u,onDragging:f,onFocus:d,onPointerDown:h,onPointerUp:m,style:p={},tabIndex:y=0,tagName:v="div",...w}){var k,S;const _=V.useRef(null),T=V.useRef({onClick:u,onDragging:f,onPointerDown:h,onPointerUp:m});V.useEffect(()=>{T.current.onClick=u,T.current.onDragging=f,T.current.onPointerDown=h,T.current.onPointerUp=m});const E=V.useContext(sc);if(E===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:z,groupId:I,registerResizeHandle:A,startDragging:R,stopDragging:D,panelGroupElement:U}=E,X=Fp(a),[B,q]=V.useState("inactive"),[ee,L]=V.useState(!1),[$,M]=V.useState(null),Y=V.useRef({state:B});Gi(()=>{Y.current.state=B}),V.useEffect(()=>{if(r)M(null);else{const H=A(X);M(()=>H)}},[r,X,A]);const Q=(k=l==null?void 0:l.coarse)!==null&&k!==void 0?k:15,K=(S=l==null?void 0:l.fine)!==null&&S!==void 0?S:5;V.useEffect(()=>{if(r||$==null)return;const H=_.current;De(H,"Element ref not attached");let P=!1;return VN(X,H,z,{coarse:Q,fine:K},(G,F,J)=>{if(!F){q("inactive");return}switch(G){case"down":{q("drag"),P=!1,De(J,'Expected event to be defined for "down" action'),R(X,J);const{onDragging:ne,onPointerDown:re}=T.current;ne==null||ne(!0),re==null||re();break}case"move":{const{state:ne}=Y.current;P=!0,ne!=="drag"&&q("hover"),De(J,'Expected event to be defined for "move" action'),$(J);break}case"up":{q("hover"),D();const{onClick:ne,onDragging:re,onPointerUp:se}=T.current;re==null||re(!1),se==null||se(),P||ne==null||ne();break}}})},[Q,z,r,K,A,X,$,R,D]),rk({disabled:r,handleId:X,resizeHandler:$,panelGroupElement:U});const j={touchAction:"none",userSelect:"none"};return V.createElement(v,{...w,children:e,className:n,id:a,onBlur:()=>{L(!1),s==null||s()},onFocus:()=>{L(!0),d==null||d()},ref:_,role:"separator",style:{...j,...p},tabIndex:y,[yt.groupDirection]:z,[yt.groupId]:I,[yt.resizeHandle]:"",[yt.resizeHandleActive]:B==="drag"?"pointer":ee?"keyboard":void 0,[yt.resizeHandleEnabled]:!r,[yt.resizeHandleId]:X,[yt.resizeHandleState]:B})}bp.displayName="PanelResizeHandle";function zt(e){if(typeof e=="string"||typeof e=="number")return""+e;let n="";if(Array.isArray(e))for(let r=0,l;r{}};function dc(){for(var e=0,n=arguments.length,r={},l;e=0&&(l=r.slice(a+1),r=r.slice(0,a)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:l}})}qu.prototype=dc.prototype={constructor:qu,on:function(e,n){var r=this._,l=lk(e+"",r),a,s=-1,u=l.length;if(arguments.length<2){for(;++s0)for(var r=new Array(a),l=0,a,s;l=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Hx.hasOwnProperty(n)?{space:Hx[n],local:e}:e}function ok(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===wp&&n.documentElement.namespaceURI===wp?n.createElement(e):n.createElementNS(r,e)}}function sk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function ew(e){var n=hc(e);return(n.local?sk:ok)(n)}function uk(){}function Kp(e){return e==null?uk:function(){return this.querySelector(e)}}function ck(e){typeof e!="function"&&(e=Kp(e));for(var n=this._groups,r=n.length,l=new Array(r),a=0;a=E&&(E=T+1);!(I=S[E])&&++E=0;)(u=l[a])&&(s&&u.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(u,s),s=u);return this}function Rk(e){e||(e=Lk);function n(p,y){return p&&y?e(p.__data__,y.__data__):!p-!y}for(var r=this._groups,l=r.length,a=new Array(l),s=0;sn?1:e>=n?0:NaN}function Hk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Bk(){return Array.from(this)}function qk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?Zk:typeof n=="function"?Jk:Kk)(e,n,r??"")):ta(this.node(),e)}function ta(e,n){return e.style.getPropertyValue(n)||lw(e).getComputedStyle(e,null).getPropertyValue(n)}function eC(e){return function(){delete this[e]}}function tC(e,n){return function(){this[e]=n}}function nC(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function rC(e,n){return arguments.length>1?this.each((n==null?eC:typeof n=="function"?nC:tC)(e,n)):this.node()[e]}function aw(e){return e.trim().split(/^|\s+/)}function Jp(e){return e.classList||new ow(e)}function ow(e){this._node=e,this._names=aw(e.getAttribute("class")||"")}ow.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function sw(e,n){for(var r=Jp(e),l=-1,a=n.length;++l=0&&(r=n.slice(l+1),n=n.slice(0,l)),{type:n,name:r}})}function MC(e){return function(){var n=this.__on;if(n){for(var r=0,l=-1,a=n.length,s;r()=>e;function Sp(e,{sourceEvent:n,subject:r,target:l,identifier:a,active:s,x:u,y:f,dx:d,dy:h,dispatch:m}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:d,enumerable:!0,configurable:!0},dy:{value:h,enumerable:!0,configurable:!0},_:{value:m}})}Sp.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function IC(e){return!e.ctrlKey&&!e.button}function VC(){return this.parentNode}function GC(e,n){return n??{x:e.x,y:e.y}}function YC(){return navigator.maxTouchPoints||"ontouchstart"in this}function pw(){var e=IC,n=VC,r=GC,l=YC,a={},s=dc("start","drag","end"),u=0,f,d,h,m,p=0;function y(z){z.on("mousedown.drag",v).filter(l).on("touchstart.drag",S).on("touchmove.drag",_,UC).on("touchend.drag touchcancel.drag",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(z,I){if(!(m||!e.call(this,z,I))){var A=E(this,n.call(this,z,I),z,I,"mouse");A&&(vn(z.view).on("mousemove.drag",w,To).on("mouseup.drag",k,To),dw(z.view),Kd(z),h=!1,f=z.clientX,d=z.clientY,A("start",z))}}function w(z){if(Kl(z),!h){var I=z.clientX-f,A=z.clientY-d;h=I*I+A*A>p}a.mouse("drag",z)}function k(z){vn(z.view).on("mousemove.drag mouseup.drag",null),hw(z.view,h),Kl(z),a.mouse("end",z)}function S(z,I){if(e.call(this,z,I)){var A=z.changedTouches,R=n.call(this,z,I),D=A.length,U,X;for(U=0;U>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?ku(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?ku(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=PC.exec(e))?new an(n[1],n[2],n[3],1):(n=XC.exec(e))?new an(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=FC.exec(e))?ku(n[1],n[2],n[3],n[4]):(n=QC.exec(e))?ku(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=ZC.exec(e))?Yx(n[1],n[2]/100,n[3]/100,1):(n=KC.exec(e))?Yx(n[1],n[2]/100,n[3]/100,n[4]):Bx.hasOwnProperty(e)?Ix(Bx[e]):e==="transparent"?new an(NaN,NaN,NaN,0):null}function Ix(e){return new an(e>>16&255,e>>8&255,e&255,1)}function ku(e,n,r,l){return l<=0&&(e=n=r=NaN),new an(e,n,r,l)}function e3(e){return e instanceof Vo||(e=Xi(e)),e?(e=e.rgb(),new an(e.r,e.g,e.b,e.opacity)):new an}function _p(e,n,r,l){return arguments.length===1?e3(e):new an(e,n,r,l??1)}function an(e,n,r,l){this.r=+e,this.g=+n,this.b=+r,this.opacity=+l}Wp(an,_p,mw(Vo,{brighter(e){return e=e==null?Qu:Math.pow(Qu,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?zo:Math.pow(zo,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new an(Yi(this.r),Yi(this.g),Yi(this.b),Zu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Vx,formatHex:Vx,formatHex8:t3,formatRgb:Gx,toString:Gx}));function Vx(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}`}function t3(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}${Ii((isNaN(this.opacity)?1:this.opacity)*255)}`}function Gx(){const e=Zu(this.opacity);return`${e===1?"rgb(":"rgba("}${Yi(this.r)}, ${Yi(this.g)}, ${Yi(this.b)}${e===1?")":`, ${e})`}`}function Zu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Yi(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ii(e){return e=Yi(e),(e<16?"0":"")+e.toString(16)}function Yx(e,n,r,l){return l<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new qn(e,n,r,l)}function gw(e){if(e instanceof qn)return new qn(e.h,e.s,e.l,e.opacity);if(e instanceof Vo||(e=Xi(e)),!e)return new qn;if(e instanceof qn)return e;e=e.rgb();var n=e.r/255,r=e.g/255,l=e.b/255,a=Math.min(n,r,l),s=Math.max(n,r,l),u=NaN,f=s-a,d=(s+a)/2;return f?(n===s?u=(r-l)/f+(r0&&d<1?0:u,new qn(u,f,d,e.opacity)}function n3(e,n,r,l){return arguments.length===1?gw(e):new qn(e,n,r,l??1)}function qn(e,n,r,l){this.h=+e,this.s=+n,this.l=+r,this.opacity=+l}Wp(qn,n3,mw(Vo,{brighter(e){return e=e==null?Qu:Math.pow(Qu,e),new qn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?zo:Math.pow(zo,e),new qn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,l=r+(r<.5?r:1-r)*n,a=2*r-l;return new an(Jd(e>=240?e-240:e+120,a,l),Jd(e,a,l),Jd(e<120?e+240:e-120,a,l),this.opacity)},clamp(){return new qn($x(this.h),Cu(this.s),Cu(this.l),Zu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Zu(this.opacity);return`${e===1?"hsl(":"hsla("}${$x(this.h)}, ${Cu(this.s)*100}%, ${Cu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function $x(e){return e=(e||0)%360,e<0?e+360:e}function Cu(e){return Math.max(0,Math.min(1,e||0))}function Jd(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const em=e=>()=>e;function r3(e,n){return function(r){return e+r*n}}function i3(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(l){return Math.pow(e+l*n,r)}}function l3(e){return(e=+e)==1?yw:function(n,r){return r-n?i3(n,r,e):em(isNaN(n)?r:n)}}function yw(e,n){var r=n-e;return r?r3(e,r):em(isNaN(e)?n:e)}const Ku=(function e(n){var r=l3(n);function l(a,s){var u=r((a=_p(a)).r,(s=_p(s)).r),f=r(a.g,s.g),d=r(a.b,s.b),h=yw(a.opacity,s.opacity);return function(m){return a.r=u(m),a.g=f(m),a.b=d(m),a.opacity=h(m),a+""}}return l.gamma=e,l})(1);function a3(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,l=n.slice(),a;return function(s){for(a=0;ar&&(s=n.slice(r,s),f[u]?f[u]+=s:f[++u]=s),(l=l[0])===(a=a[0])?f[u]?f[u]+=a:f[++u]=a:(f[++u]=null,d.push({i:u,x:Wn(l,a)})),r=Wd.lastIndex;return r180?m+=360:m-h>180&&(h+=360),y.push({i:p.push(a(p)+"rotate(",null,l)-2,x:Wn(h,m)})):m&&p.push(a(p)+"rotate("+m+l)}function f(h,m,p,y){h!==m?y.push({i:p.push(a(p)+"skewX(",null,l)-2,x:Wn(h,m)}):m&&p.push(a(p)+"skewX("+m+l)}function d(h,m,p,y,v,w){if(h!==p||m!==y){var k=v.push(a(v)+"scale(",null,",",null,")");w.push({i:k-4,x:Wn(h,p)},{i:k-2,x:Wn(m,y)})}else(p!==1||y!==1)&&v.push(a(v)+"scale("+p+","+y+")")}return function(h,m){var p=[],y=[];return h=e(h),m=e(m),s(h.translateX,h.translateY,m.translateX,m.translateY,p,y),u(h.rotate,m.rotate,p,y),f(h.skewX,m.skewX,p,y),d(h.scaleX,h.scaleY,m.scaleX,m.scaleY,p,y),h=m=null,function(v){for(var w=-1,k=y.length,S;++w=0&&e._call.call(void 0,n),e=e._next;--na}function Fx(){Fi=(Wu=Mo.now())+pc,na=yo=0;try{w3()}finally{na=0,_3(),Fi=0}}function S3(){var e=Mo.now(),n=e-Wu;n>ww&&(pc-=n,Wu=e)}function _3(){for(var e,n=Ju,r,l=1/0;n;)n._call?(l>n._time&&(l=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:Ju=r);xo=e,kp(l)}function kp(e){if(!na){yo&&(yo=clearTimeout(yo));var n=e-Fi;n>24?(e<1/0&&(yo=setTimeout(Fx,e-Mo.now()-pc)),oo&&(oo=clearInterval(oo))):(oo||(Wu=Mo.now(),oo=setInterval(S3,ww)),na=1,Sw(Fx))}}function Qx(e,n,r){var l=new ec;return n=n==null?0:+n,l.restart(a=>{l.stop(),e(a+n)},n,r),l}var E3=dc("start","end","cancel","interrupt"),N3=[],Ew=0,Zx=1,Cp=2,Iu=3,Kx=4,Tp=5,Vu=6;function mc(e,n,r,l,a,s){var u=e.__transition;if(!u)e.__transition={};else if(r in u)return;k3(e,r,{name:n,index:l,group:a,on:E3,tween:N3,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Ew})}function nm(e,n){var r=$n(e,n);if(r.state>Ew)throw new Error("too late; already scheduled");return r}function ir(e,n){var r=$n(e,n);if(r.state>Iu)throw new Error("too late; already running");return r}function $n(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function k3(e,n,r){var l=e.__transition,a;l[n]=r,r.timer=_w(s,0,r.time);function s(h){r.state=Zx,r.timer.restart(u,r.delay,r.time),r.delay<=h&&u(h-r.delay)}function u(h){var m,p,y,v;if(r.state!==Zx)return d();for(m in l)if(v=l[m],v.name===r.name){if(v.state===Iu)return Qx(u);v.state===Kx?(v.state=Vu,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete l[m]):+mCp&&l.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function nT(e,n,r){var l,a,s=tT(n)?nm:ir;return function(){var u=s(this,e),f=u.on;f!==l&&(a=(l=f).copy()).on(n,r),u.on=a}}function rT(e,n){var r=this._id;return arguments.length<2?$n(this.node(),r).on.on(e):this.each(nT(r,e,n))}function iT(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function lT(){return this.on("end.remove",iT(this._id))}function aT(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Kp(e));for(var l=this._groups,a=l.length,s=new Array(a),u=0;u()=>e;function MT(e,{sourceEvent:n,target:r,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function Tr(e,n,r){this.k=e,this.x=n,this.y=r}Tr.prototype={constructor:Tr,scale:function(e){return e===1?this:new Tr(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new Tr(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var gc=new Tr(1,0,0);Tw.prototype=Tr.prototype;function Tw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return gc;return e.__zoom}function eh(e){e.stopImmediatePropagation()}function so(e){e.preventDefault(),e.stopImmediatePropagation()}function jT(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function OT(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Jx(){return this.__zoom||gc}function DT(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function RT(){return navigator.maxTouchPoints||"ontouchstart"in this}function LT(e,n,r){var l=e.invertX(n[0][0])-r[0][0],a=e.invertX(n[1][0])-r[1][0],s=e.invertY(n[0][1])-r[0][1],u=e.invertY(n[1][1])-r[1][1];return e.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u))}function zw(){var e=jT,n=OT,r=LT,l=DT,a=RT,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,d=Uu,h=dc("start","zoom","end"),m,p,y,v=500,w=150,k=0,S=10;function _(L){L.property("__zoom",Jx).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",U).on("dblclick.zoom",X).filter(a).on("touchstart.zoom",B).on("touchmove.zoom",q).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(L,$,M,Y){var Q=L.selection?L.selection():L;Q.property("__zoom",Jx),L!==Q?I(L,$,M,Y):Q.interrupt().each(function(){A(this,arguments).event(Y).start().zoom(null,typeof $=="function"?$.apply(this,arguments):$).end()})},_.scaleBy=function(L,$,M,Y){_.scaleTo(L,function(){var Q=this.__zoom.k,K=typeof $=="function"?$.apply(this,arguments):$;return Q*K},M,Y)},_.scaleTo=function(L,$,M,Y){_.transform(L,function(){var Q=n.apply(this,arguments),K=this.__zoom,j=M==null?z(Q):typeof M=="function"?M.apply(this,arguments):M,H=K.invert(j),P=typeof $=="function"?$.apply(this,arguments):$;return r(E(T(K,P),j,H),Q,u)},M,Y)},_.translateBy=function(L,$,M,Y){_.transform(L,function(){return r(this.__zoom.translate(typeof $=="function"?$.apply(this,arguments):$,typeof M=="function"?M.apply(this,arguments):M),n.apply(this,arguments),u)},null,Y)},_.translateTo=function(L,$,M,Y,Q){_.transform(L,function(){var K=n.apply(this,arguments),j=this.__zoom,H=Y==null?z(K):typeof Y=="function"?Y.apply(this,arguments):Y;return r(gc.translate(H[0],H[1]).scale(j.k).translate(typeof $=="function"?-$.apply(this,arguments):-$,typeof M=="function"?-M.apply(this,arguments):-M),K,u)},Y,Q)};function T(L,$){return $=Math.max(s[0],Math.min(s[1],$)),$===L.k?L:new Tr($,L.x,L.y)}function E(L,$,M){var Y=$[0]-M[0]*L.k,Q=$[1]-M[1]*L.k;return Y===L.x&&Q===L.y?L:new Tr(L.k,Y,Q)}function z(L){return[(+L[0][0]+ +L[1][0])/2,(+L[0][1]+ +L[1][1])/2]}function I(L,$,M,Y){L.on("start.zoom",function(){A(this,arguments).event(Y).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event(Y).end()}).tween("zoom",function(){var Q=this,K=arguments,j=A(Q,K).event(Y),H=n.apply(Q,K),P=M==null?z(H):typeof M=="function"?M.apply(Q,K):M,N=Math.max(H[1][0]-H[0][0],H[1][1]-H[0][1]),G=Q.__zoom,F=typeof $=="function"?$.apply(Q,K):$,J=d(G.invert(P).concat(N/G.k),F.invert(P).concat(N/F.k));return function(ne){if(ne===1)ne=F;else{var re=J(ne),se=N/re[2];ne=new Tr(se,P[0]-re[0]*se,P[1]-re[1]*se)}j.zoom(null,ne)}})}function A(L,$,M){return!M&&L.__zooming||new R(L,$)}function R(L,$){this.that=L,this.args=$,this.active=0,this.sourceEvent=null,this.extent=n.apply(L,$),this.taps=0}R.prototype={event:function(L){return L&&(this.sourceEvent=L),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(L,$){return this.mouse&&L!=="mouse"&&(this.mouse[1]=$.invert(this.mouse[0])),this.touch0&&L!=="touch"&&(this.touch0[1]=$.invert(this.touch0[0])),this.touch1&&L!=="touch"&&(this.touch1[1]=$.invert(this.touch1[0])),this.that.__zoom=$,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(L){var $=vn(this.that).datum();h.call(L,this.that,new MT(L,{sourceEvent:this.sourceEvent,target:_,transform:this.that.__zoom,dispatch:h}),$)}};function D(L,...$){if(!e.apply(this,arguments))return;var M=A(this,$).event(L),Y=this.__zoom,Q=Math.max(s[0],Math.min(s[1],Y.k*Math.pow(2,l.apply(this,arguments)))),K=Bn(L);if(M.wheel)(M.mouse[0][0]!==K[0]||M.mouse[0][1]!==K[1])&&(M.mouse[1]=Y.invert(M.mouse[0]=K)),clearTimeout(M.wheel);else{if(Y.k===Q)return;M.mouse=[K,Y.invert(K)],Gu(this),M.start()}so(L),M.wheel=setTimeout(j,w),M.zoom("mouse",r(E(T(Y,Q),M.mouse[0],M.mouse[1]),M.extent,u));function j(){M.wheel=null,M.end()}}function U(L,...$){if(y||!e.apply(this,arguments))return;var M=L.currentTarget,Y=A(this,$,!0).event(L),Q=vn(L.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",N,!0),K=Bn(L,M),j=L.clientX,H=L.clientY;dw(L.view),eh(L),Y.mouse=[K,this.__zoom.invert(K)],Gu(this),Y.start();function P(G){if(so(G),!Y.moved){var F=G.clientX-j,J=G.clientY-H;Y.moved=F*F+J*J>k}Y.event(G).zoom("mouse",r(E(Y.that.__zoom,Y.mouse[0]=Bn(G,M),Y.mouse[1]),Y.extent,u))}function N(G){Q.on("mousemove.zoom mouseup.zoom",null),hw(G.view,Y.moved),so(G),Y.event(G).end()}}function X(L,...$){if(e.apply(this,arguments)){var M=this.__zoom,Y=Bn(L.changedTouches?L.changedTouches[0]:L,this),Q=M.invert(Y),K=M.k*(L.shiftKey?.5:2),j=r(E(T(M,K),Y,Q),n.apply(this,$),u);so(L),f>0?vn(this).transition().duration(f).call(I,j,Y,L):vn(this).call(_.transform,j,Y,L)}}function B(L,...$){if(e.apply(this,arguments)){var M=L.touches,Y=M.length,Q=A(this,$,L.changedTouches.length===Y).event(L),K,j,H,P;for(eh(L),j=0;j"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:n,sourceHandle:r,targetHandle:l})=>`Couldn't create edge for ${e} handle id: "${e==="source"?r:l}", edge id: ${n}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},jo=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Aw=["Enter"," ","Escape"],Mw={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:n,y:r})=>`Moved selected node ${e}. New position, x: ${n}, y: ${r}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var ra;(function(e){e.Strict="strict",e.Loose="loose"})(ra||(ra={}));var $i;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})($i||($i={}));var Oo;(function(e){e.Partial="partial",e.Full="full"})(Oo||(Oo={}));const jw={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var pi;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(pi||(pi={}));var tc;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(tc||(tc={}));var be;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(be||(be={}));const Wx={[be.Left]:be.Right,[be.Right]:be.Left,[be.Top]:be.Bottom,[be.Bottom]:be.Top};function Ow(e){return e===null?null:e?"valid":"invalid"}const Dw=e=>"id"in e&&"source"in e&&"target"in e,HT=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),im=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Go=(e,n=[0,0])=>{const{width:r,height:l}=jr(e),a=e.origin??n,s=r*a[0],u=l*a[1];return{x:e.position.x-s,y:e.position.y-u}},BT=(e,n={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const r=e.reduce((l,a)=>{const s=typeof a=="string";let u=!n.nodeLookup&&!s?a:void 0;n.nodeLookup&&(u=s?n.nodeLookup.get(a):im(a)?a:n.nodeLookup.get(a.id));const f=u?nc(u,n.nodeOrigin):{x:0,y:0,x2:0,y2:0};return yc(l,f)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return xc(r)},Yo=(e,n={})=>{let r={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return e.forEach(a=>{(n.filter===void 0||n.filter(a))&&(r=yc(r,nc(a)),l=!0)}),l?xc(r):{x:0,y:0,width:0,height:0}},lm=(e,n,[r,l,a]=[0,0,1],s=!1,u=!1)=>{const f={...Po(n,[r,l,a]),width:n.width/a,height:n.height/a},d=[];for(const h of e.values()){const{measured:m,selectable:p=!0,hidden:y=!1}=h;if(u&&!p||y)continue;const v=m.width??h.width??h.initialWidth??null,w=m.height??h.height??h.initialHeight??null,k=Do(f,la(h)),S=(v??0)*(w??0),_=s&&k>0;(!h.internals.handleBounds||_||k>=S||h.dragging)&&d.push(h)}return d},qT=(e,n)=>{const r=new Set;return e.forEach(l=>{r.add(l.id)}),n.filter(l=>r.has(l.source)||r.has(l.target))};function UT(e,n){const r=new Map,l=n!=null&&n.nodes?new Set(n.nodes.map(a=>a.id)):null;return e.forEach(a=>{a.measured.width&&a.measured.height&&((n==null?void 0:n.includeHiddenNodes)||!a.hidden)&&(!l||l.has(a.id))&&r.set(a.id,a)}),r}async function IT({nodes:e,width:n,height:r,panZoom:l,minZoom:a,maxZoom:s},u){if(e.size===0)return Promise.resolve(!0);const f=UT(e,u),d=Yo(f),h=am(d,n,r,(u==null?void 0:u.minZoom)??a,(u==null?void 0:u.maxZoom)??s,(u==null?void 0:u.padding)??.1);return await l.setViewport(h,{duration:u==null?void 0:u.duration,ease:u==null?void 0:u.ease,interpolate:u==null?void 0:u.interpolate}),Promise.resolve(!0)}function Rw({nodeId:e,nextPosition:n,nodeLookup:r,nodeOrigin:l=[0,0],nodeExtent:a,onError:s}){const u=r.get(e),f=u.parentId?r.get(u.parentId):void 0,{x:d,y:h}=f?f.internals.positionAbsolute:{x:0,y:0},m=u.origin??l;let p=u.extent||a;if(u.extent==="parent"&&!u.expandParent)if(!f)s==null||s("005",nr.error005());else{const v=f.measured.width,w=f.measured.height;v&&w&&(p=[[d,h],[d+v,h+w]])}else f&&aa(u.extent)&&(p=[[u.extent[0][0]+d,u.extent[0][1]+h],[u.extent[1][0]+d,u.extent[1][1]+h]]);const y=aa(p)?Qi(n,p,u.measured):n;return(u.measured.width===void 0||u.measured.height===void 0)&&(s==null||s("015",nr.error015())),{position:{x:y.x-d+(u.measured.width??0)*m[0],y:y.y-h+(u.measured.height??0)*m[1]},positionAbsolute:y}}async function VT({nodesToRemove:e=[],edgesToRemove:n=[],nodes:r,edges:l,onBeforeDelete:a}){const s=new Set(e.map(y=>y.id)),u=[];for(const y of r){if(y.deletable===!1)continue;const v=s.has(y.id),w=!v&&y.parentId&&u.find(k=>k.id===y.parentId);(v||w)&&u.push(y)}const f=new Set(n.map(y=>y.id)),d=l.filter(y=>y.deletable!==!1),m=qT(u,d);for(const y of d)f.has(y.id)&&!m.find(w=>w.id===y.id)&&m.push(y);if(!a)return{edges:m,nodes:u};const p=await a({nodes:u,edges:m});return typeof p=="boolean"?p?{edges:m,nodes:u}:{edges:[],nodes:[]}:p}const ia=(e,n=0,r=1)=>Math.min(Math.max(e,n),r),Qi=(e={x:0,y:0},n,r)=>({x:ia(e.x,n[0][0],n[1][0]-((r==null?void 0:r.width)??0)),y:ia(e.y,n[0][1],n[1][1]-((r==null?void 0:r.height)??0))});function Lw(e,n,r){const{width:l,height:a}=jr(r),{x:s,y:u}=r.internals.positionAbsolute;return Qi(e,[[s,u],[s+l,u+a]],n)}const ev=(e,n,r)=>er?-ia(Math.abs(e-r),1,n)/n:0,Hw=(e,n,r=15,l=40)=>{const a=ev(e.x,l,n.width-l)*r,s=ev(e.y,l,n.height-l)*r;return[a,s]},yc=(e,n)=>({x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),x2:Math.max(e.x2,n.x2),y2:Math.max(e.y2,n.y2)}),zp=({x:e,y:n,width:r,height:l})=>({x:e,y:n,x2:e+r,y2:n+l}),xc=({x:e,y:n,x2:r,y2:l})=>({x:e,y:n,width:r-e,height:l-n}),la=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=im(e)?e.internals.positionAbsolute:Go(e,n);return{x:r,y:l,width:((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},nc=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=im(e)?e.internals.positionAbsolute:Go(e,n);return{x:r,y:l,x2:r+(((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0),y2:l+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},Bw=(e,n)=>xc(yc(zp(e),zp(n))),Do=(e,n)=>{const r=Math.max(0,Math.min(e.x+e.width,n.x+n.width)-Math.max(e.x,n.x)),l=Math.max(0,Math.min(e.y+e.height,n.y+n.height)-Math.max(e.y,n.y));return Math.ceil(r*l)},tv=e=>Un(e.width)&&Un(e.height)&&Un(e.x)&&Un(e.y),Un=e=>!isNaN(e)&&isFinite(e),GT=(e,n)=>{},$o=(e,n=[1,1])=>({x:n[0]*Math.round(e.x/n[0]),y:n[1]*Math.round(e.y/n[1])}),Po=({x:e,y:n},[r,l,a],s=!1,u=[1,1])=>{const f={x:(e-r)/a,y:(n-l)/a};return s?$o(f,u):f},rc=({x:e,y:n},[r,l,a])=>({x:e*a+r,y:n*a+l});function Il(e,n){if(typeof e=="number")return Math.floor((n-n/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(r)}if(typeof e=="string"&&e.endsWith("%")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(n*r*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function YT(e,n,r){if(typeof e=="string"||typeof e=="number"){const l=Il(e,r),a=Il(e,n);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof e=="object"){const l=Il(e.top??e.y??0,r),a=Il(e.bottom??e.y??0,r),s=Il(e.left??e.x??0,n),u=Il(e.right??e.x??0,n);return{top:l,right:u,bottom:a,left:s,x:s+u,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function $T(e,n,r,l,a,s){const{x:u,y:f}=rc(e,[n,r,l]),{x:d,y:h}=rc({x:e.x+e.width,y:e.y+e.height},[n,r,l]),m=a-d,p=s-h;return{left:Math.floor(u),top:Math.floor(f),right:Math.floor(m),bottom:Math.floor(p)}}const am=(e,n,r,l,a,s)=>{const u=YT(s,n,r),f=(n-u.x)/e.width,d=(r-u.y)/e.height,h=Math.min(f,d),m=ia(h,l,a),p=e.x+e.width/2,y=e.y+e.height/2,v=n/2-p*m,w=r/2-y*m,k=$T(e,v,w,m,n,r),S={left:Math.min(k.left-u.left,0),top:Math.min(k.top-u.top,0),right:Math.min(k.right-u.right,0),bottom:Math.min(k.bottom-u.bottom,0)};return{x:v-S.left+S.right,y:w-S.top+S.bottom,zoom:m}},Ro=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function aa(e){return e!=null&&e!=="parent"}function jr(e){var n,r;return{width:((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth??0,height:((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight??0}}function qw(e){var n,r;return(((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth)!==void 0&&(((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight)!==void 0}function Uw(e,n={width:0,height:0},r,l,a){const s={...e},u=l.get(r);if(u){const f=u.origin||a;s.x+=u.internals.positionAbsolute.x-(n.width??0)*f[0],s.y+=u.internals.positionAbsolute.y-(n.height??0)*f[1]}return s}function nv(e,n){if(e.size!==n.size)return!1;for(const r of e)if(!n.has(r))return!1;return!0}function PT(){let e,n;return{promise:new Promise((l,a)=>{e=l,n=a}),resolve:e,reject:n}}function XT(e){return{...Mw,...e||{}}}function wo(e,{snapGrid:n=[0,0],snapToGrid:r=!1,transform:l,containerBounds:a}){const{x:s,y:u}=In(e),f=Po({x:s-((a==null?void 0:a.left)??0),y:u-((a==null?void 0:a.top)??0)},l),{x:d,y:h}=r?$o(f,n):f;return{xSnapped:d,ySnapped:h,...f}}const om=e=>({width:e.offsetWidth,height:e.offsetHeight}),Iw=e=>{var n;return((n=e==null?void 0:e.getRootNode)==null?void 0:n.call(e))||(window==null?void 0:window.document)},FT=["INPUT","SELECT","TEXTAREA"];function Vw(e){var l,a;const n=((a=(l=e.composedPath)==null?void 0:l.call(e))==null?void 0:a[0])||e.target;return(n==null?void 0:n.nodeType)!==1?!1:FT.includes(n.nodeName)||n.hasAttribute("contenteditable")||!!n.closest(".nokey")}const Gw=e=>"clientX"in e,In=(e,n)=>{var s,u;const r=Gw(e),l=r?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,a=r?e.clientY:(u=e.touches)==null?void 0:u[0].clientY;return{x:l-((n==null?void 0:n.left)??0),y:a-((n==null?void 0:n.top)??0)}},rv=(e,n,r,l,a)=>{const s=n.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(u=>{const f=u.getBoundingClientRect();return{id:u.getAttribute("data-handleid"),type:e,nodeId:a,position:u.getAttribute("data-handlepos"),x:(f.left-r.left)/l,y:(f.top-r.top)/l,...om(u)}})};function Yw({sourceX:e,sourceY:n,targetX:r,targetY:l,sourceControlX:a,sourceControlY:s,targetControlX:u,targetControlY:f}){const d=e*.125+a*.375+u*.375+r*.125,h=n*.125+s*.375+f*.375+l*.125,m=Math.abs(d-e),p=Math.abs(h-n);return[d,h,m,p]}function Au(e,n){return e>=0?.5*e:n*25*Math.sqrt(-e)}function iv({pos:e,x1:n,y1:r,x2:l,y2:a,c:s}){switch(e){case be.Left:return[n-Au(n-l,s),r];case be.Right:return[n+Au(l-n,s),r];case be.Top:return[n,r-Au(r-a,s)];case be.Bottom:return[n,r+Au(a-r,s)]}}function sm({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top,curvature:u=.25}){const[f,d]=iv({pos:r,x1:e,y1:n,x2:l,y2:a,c:u}),[h,m]=iv({pos:s,x1:l,y1:a,x2:e,y2:n,c:u}),[p,y,v,w]=Yw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:f,sourceControlY:d,targetControlX:h,targetControlY:m});return[`M${e},${n} C${f},${d} ${h},${m} ${l},${a}`,p,y,v,w]}function $w({sourceX:e,sourceY:n,targetX:r,targetY:l}){const a=Math.abs(r-e)/2,s=r0}const KT=({source:e,sourceHandle:n,target:r,targetHandle:l})=>`xy-edge__${e}${n||""}-${r}${l||""}`,JT=(e,n)=>n.some(r=>r.source===e.source&&r.target===e.target&&(r.sourceHandle===e.sourceHandle||!r.sourceHandle&&!e.sourceHandle)&&(r.targetHandle===e.targetHandle||!r.targetHandle&&!e.targetHandle)),WT=(e,n,r={})=>{if(!e.source||!e.target)return n;const l=r.getEdgeId||KT;let a;return Dw(e)?a={...e}:a={...e,id:l(e)},JT(a,n)?n:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,n.concat(a))};function Pw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const[a,s,u,f]=$w({sourceX:e,sourceY:n,targetX:r,targetY:l});return[`M ${e},${n}L ${r},${l}`,a,s,u,f]}const lv={[be.Left]:{x:-1,y:0},[be.Right]:{x:1,y:0},[be.Top]:{x:0,y:-1},[be.Bottom]:{x:0,y:1}},ez=({source:e,sourcePosition:n=be.Bottom,target:r})=>n===be.Left||n===be.Right?e.xMath.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2));function tz({source:e,sourcePosition:n=be.Bottom,target:r,targetPosition:l=be.Top,center:a,offset:s,stepPosition:u}){const f=lv[n],d=lv[l],h={x:e.x+f.x*s,y:e.y+f.y*s},m={x:r.x+d.x*s,y:r.y+d.y*s},p=ez({source:h,sourcePosition:n,target:m}),y=p.x!==0?"x":"y",v=p[y];let w=[],k,S;const _={x:0,y:0},T={x:0,y:0},[,,E,z]=$w({sourceX:e.x,sourceY:e.y,targetX:r.x,targetY:r.y});if(f[y]*d[y]===-1){y==="x"?(k=a.x??h.x+(m.x-h.x)*u,S=a.y??(h.y+m.y)/2):(k=a.x??(h.x+m.x)/2,S=a.y??h.y+(m.y-h.y)*u);const A=[{x:k,y:h.y},{x:k,y:m.y}],R=[{x:h.x,y:S},{x:m.x,y:S}];f[y]===v?w=y==="x"?A:R:w=y==="x"?R:A}else{const A=[{x:h.x,y:m.y}],R=[{x:m.x,y:h.y}];if(y==="x"?w=f.x===v?R:A:w=f.y===v?A:R,n===l){const q=Math.abs(e[y]-r[y]);if(q<=s){const ee=Math.min(s-1,s-q);f[y]===v?_[y]=(h[y]>e[y]?-1:1)*ee:T[y]=(m[y]>r[y]?-1:1)*ee}}if(n!==l){const q=y==="x"?"y":"x",ee=f[y]===d[q],L=h[q]>m[q],$=h[q]=B?(k=(D.x+U.x)/2,S=w[0].y):(k=w[0].x,S=(D.y+U.y)/2)}return[[e,{x:h.x+_.x,y:h.y+_.y},...w,{x:m.x+T.x,y:m.y+T.y},r],k,S,E,z]}function nz(e,n,r,l){const a=Math.min(av(e,n)/2,av(n,r)/2,l),{x:s,y:u}=n;if(e.x===s&&s===r.x||e.y===u&&u===r.y)return`L${s} ${u}`;if(e.y===u){const h=e.x{let z="";return E>0&&Er.id===n):e[0])||null}function Mp(e,n){return e?typeof e=="string"?e:`${n?`${n}__`:""}${Object.keys(e).sort().map(l=>`${l}=${e[l]}`).join("&")}`:""}function iz(e,{id:n,defaultColor:r,defaultMarkerStart:l,defaultMarkerEnd:a}){const s=new Set;return e.reduce((u,f)=>([f.markerStart||l,f.markerEnd||a].forEach(d=>{if(d&&typeof d=="object"){const h=Mp(d,n);s.has(h)||(u.push({id:h,color:d.color||r,...d}),s.add(h))}}),u),[]).sort((u,f)=>u.id.localeCompare(f.id))}const Xw=1e3,lz=10,um={nodeOrigin:[0,0],nodeExtent:jo,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},az={...um,checkEquality:!0};function cm(e,n){const r={...e};for(const l in n)n[l]!==void 0&&(r[l]=n[l]);return r}function oz(e,n,r){const l=cm(um,r);for(const a of e.values())if(a.parentId)dm(a,e,n,l);else{const s=Go(a,l.nodeOrigin),u=aa(a.extent)?a.extent:l.nodeExtent,f=Qi(s,u,jr(a));a.internals.positionAbsolute=f}}function sz(e,n){if(!e.handles)return e.measured?n==null?void 0:n.internals.handleBounds:void 0;const r=[],l=[];for(const a of e.handles){const s={id:a.id,width:a.width??1,height:a.height??1,nodeId:e.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?r.push(s):a.type==="target"&&l.push(s)}return{source:r,target:l}}function fm(e){return e==="manual"}function jp(e,n,r,l={}){var h,m;const a=cm(az,l),s={i:0},u=new Map(n),f=a!=null&&a.elevateNodesOnSelect&&!fm(a.zIndexMode)?Xw:0;let d=e.length>0;n.clear(),r.clear();for(const p of e){let y=u.get(p.id);if(a.checkEquality&&p===(y==null?void 0:y.internals.userNode))n.set(p.id,y);else{const v=Go(p,a.nodeOrigin),w=aa(p.extent)?p.extent:a.nodeExtent,k=Qi(v,w,jr(p));y={...a.defaults,...p,measured:{width:(h=p.measured)==null?void 0:h.width,height:(m=p.measured)==null?void 0:m.height},internals:{positionAbsolute:k,handleBounds:sz(p,y),z:Fw(p,f,a.zIndexMode),userNode:p}},n.set(p.id,y)}(y.measured===void 0||y.measured.width===void 0||y.measured.height===void 0)&&!y.hidden&&(d=!1),p.parentId&&dm(y,n,r,l,s)}return d}function uz(e,n){if(!e.parentId)return;const r=n.get(e.parentId);r?r.set(e.id,e):n.set(e.parentId,new Map([[e.id,e]]))}function dm(e,n,r,l,a){const{elevateNodesOnSelect:s,nodeOrigin:u,nodeExtent:f,zIndexMode:d}=cm(um,l),h=e.parentId,m=n.get(h);if(!m){console.warn(`Parent node ${h} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}uz(e,r),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&d==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*lz),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const p=s&&!fm(d)?Xw:0,{x:y,y:v,z:w}=cz(e,m,u,f,p,d),{positionAbsolute:k}=e.internals,S=y!==k.x||v!==k.y;(S||w!==e.internals.z)&&n.set(e.id,{...e,internals:{...e.internals,positionAbsolute:S?{x:y,y:v}:k,z:w}})}function Fw(e,n,r){const l=Un(e.zIndex)?e.zIndex:0;return fm(r)?l:l+(e.selected?n:0)}function cz(e,n,r,l,a,s){const{x:u,y:f}=n.internals.positionAbsolute,d=jr(e),h=Go(e,r),m=aa(e.extent)?Qi(h,e.extent,d):h;let p=Qi({x:u+m.x,y:f+m.y},l,d);e.extent==="parent"&&(p=Lw(p,d,n));const y=Fw(e,a,s),v=n.internals.z??0;return{x:p.x,y:p.y,z:v>=y?v+1:y}}function hm(e,n,r,l=[0,0]){var u;const a=[],s=new Map;for(const f of e){const d=n.get(f.parentId);if(!d)continue;const h=((u=s.get(f.parentId))==null?void 0:u.expandedRect)??la(d),m=Bw(h,f.rect);s.set(f.parentId,{expandedRect:m,parent:d})}return s.size>0&&s.forEach(({expandedRect:f,parent:d},h)=>{var E;const m=d.internals.positionAbsolute,p=jr(d),y=d.origin??l,v=f.x0||w>0||_||T)&&(a.push({id:h,type:"position",position:{x:d.position.x-v+_,y:d.position.y-w+T}}),(E=r.get(h))==null||E.forEach(z=>{e.some(I=>I.id===z.id)||a.push({id:z.id,type:"position",position:{x:z.position.x+v,y:z.position.y+w}})})),(p.width0){const v=hm(y,n,r,a);h.push(...v)}return{changes:h,updatedInternals:d}}async function dz({delta:e,panZoom:n,transform:r,translateExtent:l,width:a,height:s}){if(!n||!e.x&&!e.y)return Promise.resolve(!1);const u=await n.setViewportConstrained({x:r[0]+e.x,y:r[1]+e.y,zoom:r[2]},[[0,0],[a,s]],l),f=!!u&&(u.x!==r[0]||u.y!==r[1]||u.k!==r[2]);return Promise.resolve(f)}function cv(e,n,r,l,a,s){let u=a;const f=l.get(u)||new Map;l.set(u,f.set(r,n)),u=`${a}-${e}`;const d=l.get(u)||new Map;if(l.set(u,d.set(r,n)),s){u=`${a}-${e}-${s}`;const h=l.get(u)||new Map;l.set(u,h.set(r,n))}}function Qw(e,n,r){e.clear(),n.clear();for(const l of r){const{source:a,target:s,sourceHandle:u=null,targetHandle:f=null}=l,d={edgeId:l.id,source:a,target:s,sourceHandle:u,targetHandle:f},h=`${a}-${u}--${s}-${f}`,m=`${s}-${f}--${a}-${u}`;cv("source",d,m,e,a,u),cv("target",d,h,e,s,f),n.set(l.id,l)}}function Zw(e,n){if(!e.parentId)return!1;const r=n.get(e.parentId);return r?r.selected?!0:Zw(r,n):!1}function fv(e,n,r){var a;let l=e;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,n))return!0;if(l===r)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function hz(e,n,r,l){const a=new Map;for(const[s,u]of e)if((u.selected||u.id===l)&&(!u.parentId||!Zw(u,e))&&(u.draggable||n&&typeof u.draggable>"u")){const f=e.get(s);f&&a.set(s,{id:s,position:f.position||{x:0,y:0},distance:{x:r.x-f.internals.positionAbsolute.x,y:r.y-f.internals.positionAbsolute.y},extent:f.extent,parentId:f.parentId,origin:f.origin,expandParent:f.expandParent,internals:{positionAbsolute:f.internals.positionAbsolute||{x:0,y:0}},measured:{width:f.measured.width??0,height:f.measured.height??0}})}return a}function th({nodeId:e,dragItems:n,nodeLookup:r,dragging:l=!0}){var u,f,d;const a=[];for(const[h,m]of n){const p=(u=r.get(h))==null?void 0:u.internals.userNode;p&&a.push({...p,position:m.position,dragging:l})}if(!e)return[a[0],a];const s=(f=r.get(e))==null?void 0:f.internals.userNode;return[s?{...s,position:((d=n.get(e))==null?void 0:d.position)||s.position,dragging:l}:a[0],a]}function pz({dragItems:e,snapGrid:n,x:r,y:l}){const a=e.values().next().value;if(!a)return null;const s={x:r-a.distance.x,y:l-a.distance.y},u=$o(s,n);return{x:u.x-s.x,y:u.y-s.y}}function mz({onNodeMouseDown:e,getStoreItems:n,onDragStart:r,onDrag:l,onDragStop:a}){let s={x:null,y:null},u=0,f=new Map,d=!1,h={x:0,y:0},m=null,p=!1,y=null,v=!1,w=!1,k=null;function S({noDragClassName:T,handleSelector:E,domNode:z,isSelectable:I,nodeId:A,nodeClickDistance:R=0}){y=vn(z);function D({x:q,y:ee}){const{nodeLookup:L,nodeExtent:$,snapGrid:M,snapToGrid:Y,nodeOrigin:Q,onNodeDrag:K,onSelectionDrag:j,onError:H,updateNodePositions:P}=n();s={x:q,y:ee};let N=!1;const G=f.size>1,F=G&&$?zp(Yo(f)):null,J=G&&Y?pz({dragItems:f,snapGrid:M,x:q,y:ee}):null;for(const[ne,re]of f){if(!L.has(ne))continue;let se={x:q-re.distance.x,y:ee-re.distance.y};Y&&(se=J?{x:Math.round(se.x+J.x),y:Math.round(se.y+J.y)}:$o(se,M));let ye=null;if(G&&$&&!re.extent&&F){const{positionAbsolute:pe}=re.internals,_e=pe.x-F.x+$[0][0],Me=pe.x+re.measured.width-F.x2+$[1][0],Ce=pe.y-F.y+$[0][1],ut=pe.y+re.measured.height-F.y2+$[1][1];ye=[[_e,Ce],[Me,ut]]}const{position:ve,positionAbsolute:xe}=Rw({nodeId:ne,nextPosition:se,nodeLookup:L,nodeExtent:ye||$,nodeOrigin:Q,onError:H});N=N||re.position.x!==ve.x||re.position.y!==ve.y,re.position=ve,re.internals.positionAbsolute=xe}if(w=w||N,!!N&&(P(f,!0),k&&(l||K||!A&&j))){const[ne,re]=th({nodeId:A,dragItems:f,nodeLookup:L});l==null||l(k,f,ne,re),K==null||K(k,ne,re),A||j==null||j(k,re)}}async function U(){if(!m)return;const{transform:q,panBy:ee,autoPanSpeed:L,autoPanOnNodeDrag:$}=n();if(!$){d=!1,cancelAnimationFrame(u);return}const[M,Y]=Hw(h,m,L);(M!==0||Y!==0)&&(s.x=(s.x??0)-M/q[2],s.y=(s.y??0)-Y/q[2],await ee({x:M,y:Y})&&D(s)),u=requestAnimationFrame(U)}function X(q){var G;const{nodeLookup:ee,multiSelectionActive:L,nodesDraggable:$,transform:M,snapGrid:Y,snapToGrid:Q,selectNodesOnDrag:K,onNodeDragStart:j,onSelectionDragStart:H,unselectNodesAndEdges:P}=n();p=!0,(!K||!I)&&!L&&A&&((G=ee.get(A))!=null&&G.selected||P()),I&&K&&A&&(e==null||e(A));const N=wo(q.sourceEvent,{transform:M,snapGrid:Y,snapToGrid:Q,containerBounds:m});if(s=N,f=hz(ee,$,N,A),f.size>0&&(r||j||!A&&H)){const[F,J]=th({nodeId:A,dragItems:f,nodeLookup:ee});r==null||r(q.sourceEvent,f,F,J),j==null||j(q.sourceEvent,F,J),A||H==null||H(q.sourceEvent,J)}}const B=pw().clickDistance(R).on("start",q=>{const{domNode:ee,nodeDragThreshold:L,transform:$,snapGrid:M,snapToGrid:Y}=n();m=(ee==null?void 0:ee.getBoundingClientRect())||null,v=!1,w=!1,k=q.sourceEvent,L===0&&X(q),s=wo(q.sourceEvent,{transform:$,snapGrid:M,snapToGrid:Y,containerBounds:m}),h=In(q.sourceEvent,m)}).on("drag",q=>{const{autoPanOnNodeDrag:ee,transform:L,snapGrid:$,snapToGrid:M,nodeDragThreshold:Y,nodeLookup:Q}=n(),K=wo(q.sourceEvent,{transform:L,snapGrid:$,snapToGrid:M,containerBounds:m});if(k=q.sourceEvent,(q.sourceEvent.type==="touchmove"&&q.sourceEvent.touches.length>1||A&&!Q.has(A))&&(v=!0),!v){if(!d&&ee&&p&&(d=!0,U()),!p){const j=In(q.sourceEvent,m),H=j.x-h.x,P=j.y-h.y;Math.sqrt(H*H+P*P)>Y&&X(q)}(s.x!==K.xSnapped||s.y!==K.ySnapped)&&f&&p&&(h=In(q.sourceEvent,m),D(K))}}).on("end",q=>{if(!(!p||v)&&(d=!1,p=!1,cancelAnimationFrame(u),f.size>0)){const{nodeLookup:ee,updateNodePositions:L,onNodeDragStop:$,onSelectionDragStop:M}=n();if(w&&(L(f,!1),w=!1),a||$||!A&&M){const[Y,Q]=th({nodeId:A,dragItems:f,nodeLookup:ee,dragging:!1});a==null||a(q.sourceEvent,f,Y,Q),$==null||$(q.sourceEvent,Y,Q),A||M==null||M(q.sourceEvent,Q)}}}).filter(q=>{const ee=q.target;return!q.button&&(!T||!fv(ee,`.${T}`,z))&&(!E||fv(ee,E,z))});y.call(B)}function _(){y==null||y.on(".drag",null)}return{update:S,destroy:_}}function gz(e,n,r){const l=[],a={x:e.x-r,y:e.y-r,width:r*2,height:r*2};for(const s of n.values())Do(a,la(s))>0&&l.push(s);return l}const yz=250;function xz(e,n,r,l){var f,d;let a=[],s=1/0;const u=gz(e,r,n+yz);for(const h of u){const m=[...((f=h.internals.handleBounds)==null?void 0:f.source)??[],...((d=h.internals.handleBounds)==null?void 0:d.target)??[]];for(const p of m){if(l.nodeId===p.nodeId&&l.type===p.type&&l.id===p.id)continue;const{x:y,y:v}=Zi(h,p,p.position,!0),w=Math.sqrt(Math.pow(y-e.x,2)+Math.pow(v-e.y,2));w>n||(w1){const h=l.type==="source"?"target":"source";return a.find(m=>m.type===h)??a[0]}return a[0]}function Kw(e,n,r,l,a,s=!1){var h,m,p;const u=l.get(e);if(!u)return null;const f=a==="strict"?(h=u.internals.handleBounds)==null?void 0:h[n]:[...((m=u.internals.handleBounds)==null?void 0:m.source)??[],...((p=u.internals.handleBounds)==null?void 0:p.target)??[]],d=(r?f==null?void 0:f.find(y=>y.id===r):f==null?void 0:f[0])??null;return d&&s?{...d,...Zi(u,d,d.position,!0)}:d}function Jw(e,n){return e||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function vz(e,n){let r=null;return n?r=!0:e&&!n&&(r=!1),r}const Ww=()=>!0;function bz(e,{connectionMode:n,connectionRadius:r,handleId:l,nodeId:a,edgeUpdaterType:s,isTarget:u,domNode:f,nodeLookup:d,lib:h,autoPanOnConnect:m,flowId:p,panBy:y,cancelConnection:v,onConnectStart:w,onConnect:k,onConnectEnd:S,isValidConnection:_=Ww,onReconnectEnd:T,updateConnection:E,getTransform:z,getFromHandle:I,autoPanSpeed:A,dragThreshold:R=1,handleDomNode:D}){const U=Iw(e.target);let X=0,B;const{x:q,y:ee}=In(e),L=Jw(s,D),$=f==null?void 0:f.getBoundingClientRect();let M=!1;if(!$||!L)return;const Y=Kw(a,L,l,d,n);if(!Y)return;let Q=In(e,$),K=!1,j=null,H=!1,P=null;function N(){if(!m||!$)return;const[ve,xe]=Hw(Q,$,A);y({x:ve,y:xe}),X=requestAnimationFrame(N)}const G={...Y,nodeId:a,type:L,position:Y.position},F=d.get(a);let ne={inProgress:!0,isValid:null,from:Zi(F,G,be.Left,!0),fromHandle:G,fromPosition:G.position,fromNode:F,to:Q,toHandle:null,toPosition:Wx[G.position],toNode:null,pointer:Q};function re(){M=!0,E(ne),w==null||w(e,{nodeId:a,handleId:l,handleType:L})}R===0&&re();function se(ve){if(!M){const{x:ut,y:tt}=In(ve),At=ut-q,It=tt-ee;if(!(At*At+It*It>R*R))return;re()}if(!I()||!G){ye(ve);return}const xe=z();Q=In(ve,$),B=xz(Po(Q,xe,!1,[1,1]),r,d,G),K||(N(),K=!0);const pe=eS(ve,{handle:B,connectionMode:n,fromNodeId:a,fromHandleId:l,fromType:u?"target":"source",isValidConnection:_,doc:U,lib:h,flowId:p,nodeLookup:d});P=pe.handleDomNode,j=pe.connection,H=vz(!!B,pe.isValid);const _e=d.get(a),Me=_e?Zi(_e,G,be.Left,!0):ne.from,Ce={...ne,from:Me,isValid:H,to:pe.toHandle&&H?rc({x:pe.toHandle.x,y:pe.toHandle.y},xe):Q,toHandle:pe.toHandle,toPosition:H&&pe.toHandle?pe.toHandle.position:Wx[G.position],toNode:pe.toHandle?d.get(pe.toHandle.nodeId):null,pointer:Q};E(Ce),ne=Ce}function ye(ve){if(!("touches"in ve&&ve.touches.length>0)){if(M){(B||P)&&j&&H&&(k==null||k(j));const{inProgress:xe,...pe}=ne,_e={...pe,toPosition:ne.toHandle?ne.toPosition:null};S==null||S(ve,_e),s&&(T==null||T(ve,_e))}v(),cancelAnimationFrame(X),K=!1,H=!1,j=null,P=null,U.removeEventListener("mousemove",se),U.removeEventListener("mouseup",ye),U.removeEventListener("touchmove",se),U.removeEventListener("touchend",ye)}}U.addEventListener("mousemove",se),U.addEventListener("mouseup",ye),U.addEventListener("touchmove",se),U.addEventListener("touchend",ye)}function eS(e,{handle:n,connectionMode:r,fromNodeId:l,fromHandleId:a,fromType:s,doc:u,lib:f,flowId:d,isValidConnection:h=Ww,nodeLookup:m}){const p=s==="target",y=n?u.querySelector(`.${f}-flow__handle[data-id="${d}-${n==null?void 0:n.nodeId}-${n==null?void 0:n.id}-${n==null?void 0:n.type}"]`):null,{x:v,y:w}=In(e),k=u.elementFromPoint(v,w),S=k!=null&&k.classList.contains(`${f}-flow__handle`)?k:y,_={handleDomNode:S,isValid:!1,connection:null,toHandle:null};if(S){const T=Jw(void 0,S),E=S.getAttribute("data-nodeid"),z=S.getAttribute("data-handleid"),I=S.classList.contains("connectable"),A=S.classList.contains("connectableend");if(!E||!T)return _;const R={source:p?E:l,sourceHandle:p?z:a,target:p?l:E,targetHandle:p?a:z};_.connection=R;const U=I&&A&&(r===ra.Strict?p&&T==="source"||!p&&T==="target":E!==l||z!==a);_.isValid=U&&h(R),_.toHandle=Kw(E,T,z,m,r,!0)}return _}const Op={onPointerDown:bz,isValid:eS};function wz({domNode:e,panZoom:n,getTransform:r,getViewScale:l}){const a=vn(e);function s({translateExtent:f,width:d,height:h,zoomStep:m=1,pannable:p=!0,zoomable:y=!0,inversePan:v=!1}){const w=E=>{if(E.sourceEvent.type!=="wheel"||!n)return;const z=r(),I=E.sourceEvent.ctrlKey&&Ro()?10:1,A=-E.sourceEvent.deltaY*(E.sourceEvent.deltaMode===1?.05:E.sourceEvent.deltaMode?1:.002)*m,R=z[2]*Math.pow(2,A*I);n.scaleTo(R)};let k=[0,0];const S=E=>{(E.sourceEvent.type==="mousedown"||E.sourceEvent.type==="touchstart")&&(k=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY])},_=E=>{const z=r();if(E.sourceEvent.type!=="mousemove"&&E.sourceEvent.type!=="touchmove"||!n)return;const I=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY],A=[I[0]-k[0],I[1]-k[1]];k=I;const R=l()*Math.max(z[2],Math.log(z[2]))*(v?-1:1),D={x:z[0]-A[0]*R,y:z[1]-A[1]*R},U=[[0,0],[d,h]];n.setViewportConstrained({x:D.x,y:D.y,zoom:z[2]},U,f)},T=zw().on("start",S).on("zoom",p?_:null).on("zoom.wheel",y?w:null);a.call(T,{})}function u(){a.on("zoom",null)}return{update:s,destroy:u,pointer:Bn}}const vc=e=>({x:e.x,y:e.y,zoom:e.k}),nh=({x:e,y:n,zoom:r})=>gc.translate(e,n).scale(r),Xl=(e,n)=>e.target.closest(`.${n}`),tS=(e,n)=>n===2&&Array.isArray(e)&&e.includes(2),Sz=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,rh=(e,n=0,r=Sz,l=()=>{})=>{const a=typeof n=="number"&&n>0;return a||l(),a?e.transition().duration(n).ease(r).on("end",l):e},nS=e=>{const n=e.ctrlKey&&Ro()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*n};function _z({zoomPanValues:e,noWheelClassName:n,d3Selection:r,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:s,zoomOnPinch:u,onPanZoomStart:f,onPanZoom:d,onPanZoomEnd:h}){return m=>{if(Xl(m,n))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const p=r.property("__zoom").k||1;if(m.ctrlKey&&u){const S=Bn(m),_=nS(m),T=p*Math.pow(2,_);l.scaleTo(r,T,S,m);return}const y=m.deltaMode===1?20:1;let v=a===$i.Vertical?0:m.deltaX*y,w=a===$i.Horizontal?0:m.deltaY*y;!Ro()&&m.shiftKey&&a!==$i.Vertical&&(v=m.deltaY*y,w=0),l.translateBy(r,-(v/p)*s,-(w/p)*s,{internal:!0});const k=vc(r.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(d==null||d(m,k),e.panScrollTimeout=setTimeout(()=>{h==null||h(m,k),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,f==null||f(m,k))}}function Ez({noWheelClassName:e,preventScrolling:n,d3ZoomHandler:r}){return function(l,a){const s=l.type==="wheel",u=!n&&s&&!l.ctrlKey,f=Xl(l,e);if(l.ctrlKey&&s&&f&&l.preventDefault(),u||f)return null;l.preventDefault(),r.call(this,l,a)}}function Nz({zoomPanValues:e,onDraggingChange:n,onPanZoomStart:r}){return l=>{var s,u,f;if((s=l.sourceEvent)!=null&&s.internal)return;const a=vc(l.transform);e.mouseButton=((u=l.sourceEvent)==null?void 0:u.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=a,((f=l.sourceEvent)==null?void 0:f.type)==="mousedown"&&n(!0),r&&(r==null||r(l.sourceEvent,a))}}function kz({zoomPanValues:e,panOnDrag:n,onPaneContextMenu:r,onTransformChange:l,onPanZoom:a}){return s=>{var u,f;e.usedRightMouseButton=!!(r&&tS(n,e.mouseButton??0)),(u=s.sourceEvent)!=null&&u.sync||l([s.transform.x,s.transform.y,s.transform.k]),a&&!((f=s.sourceEvent)!=null&&f.internal)&&(a==null||a(s.sourceEvent,vc(s.transform)))}}function Cz({zoomPanValues:e,panOnDrag:n,panOnScroll:r,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:s}){return u=>{var f;if(!((f=u.sourceEvent)!=null&&f.internal)&&(e.isZoomingOrPanning=!1,s&&tS(n,e.mouseButton??0)&&!e.usedRightMouseButton&&u.sourceEvent&&s(u.sourceEvent),e.usedRightMouseButton=!1,l(!1),a)){const d=vc(u.transform);e.prevViewport=d,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{a==null||a(u.sourceEvent,d)},r?150:0)}}}function Tz({zoomActivationKeyPressed:e,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:l,panOnScroll:a,zoomOnDoubleClick:s,userSelectionActive:u,noWheelClassName:f,noPanClassName:d,lib:h,connectionInProgress:m}){return p=>{var S;const y=e||n,v=r&&p.ctrlKey,w=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(Xl(p,`${h}-flow__node`)||Xl(p,`${h}-flow__edge`)))return!0;if(!l&&!y&&!a&&!s&&!r||u||m&&!w||Xl(p,f)&&w||Xl(p,d)&&(!w||a&&w&&!e)||!r&&p.ctrlKey&&w)return!1;if(!r&&p.type==="touchstart"&&((S=p.touches)==null?void 0:S.length)>1)return p.preventDefault(),!1;if(!y&&!a&&!v&&w||!l&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(l)&&!l.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(l)&&l.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||w)&&k}}function zz({domNode:e,minZoom:n,maxZoom:r,translateExtent:l,viewport:a,onPanZoom:s,onPanZoomStart:u,onPanZoomEnd:f,onDraggingChange:d}){const h={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=e.getBoundingClientRect(),p=zw().scaleExtent([n,r]).translateExtent(l),y=vn(e).call(p);T({x:a.x,y:a.y,zoom:ia(a.zoom,n,r)},[[0,0],[m.width,m.height]],l);const v=y.on("wheel.zoom"),w=y.on("dblclick.zoom");p.wheelDelta(nS);function k(B,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?bo:Uu).transform(rh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function S({noWheelClassName:B,noPanClassName:q,onPaneContextMenu:ee,userSelectionActive:L,panOnScroll:$,panOnDrag:M,panOnScrollMode:Y,panOnScrollSpeed:Q,preventScrolling:K,zoomOnPinch:j,zoomOnScroll:H,zoomOnDoubleClick:P,zoomActivationKeyPressed:N,lib:G,onTransformChange:F,connectionInProgress:J,paneClickDistance:ne,selectionOnDrag:re}){L&&!h.isZoomingOrPanning&&_();const se=$&&!N&&!L;p.clickDistance(re?1/0:!Un(ne)||ne<0?0:ne);const ye=se?_z({zoomPanValues:h,noWheelClassName:B,d3Selection:y,d3Zoom:p,panOnScrollMode:Y,panOnScrollSpeed:Q,zoomOnPinch:j,onPanZoomStart:u,onPanZoom:s,onPanZoomEnd:f}):Ez({noWheelClassName:B,preventScrolling:K,d3ZoomHandler:v});if(y.on("wheel.zoom",ye,{passive:!1}),!L){const xe=Nz({zoomPanValues:h,onDraggingChange:d,onPanZoomStart:u});p.on("start",xe);const pe=kz({zoomPanValues:h,panOnDrag:M,onPaneContextMenu:!!ee,onPanZoom:s,onTransformChange:F});p.on("zoom",pe);const _e=Cz({zoomPanValues:h,panOnDrag:M,panOnScroll:$,onPaneContextMenu:ee,onPanZoomEnd:f,onDraggingChange:d});p.on("end",_e)}const ve=Tz({zoomActivationKeyPressed:N,panOnDrag:M,zoomOnScroll:H,panOnScroll:$,zoomOnDoubleClick:P,zoomOnPinch:j,userSelectionActive:L,noPanClassName:q,noWheelClassName:B,lib:G,connectionInProgress:J});p.filter(ve),P?y.on("dblclick.zoom",w):y.on("dblclick.zoom",null)}function _(){p.on("zoom",null)}async function T(B,q,ee){const L=nh(B),$=p==null?void 0:p.constrain()(L,q,ee);return $&&await k($),new Promise(M=>M($))}async function E(B,q){const ee=nh(B);return await k(ee,q),new Promise(L=>L(ee))}function z(B){if(y){const q=nh(B),ee=y.property("__zoom");(ee.k!==B.zoom||ee.x!==B.x||ee.y!==B.y)&&(p==null||p.transform(y,q,null,{sync:!0}))}}function I(){const B=y?Tw(y.node()):{x:0,y:0,k:1};return{x:B.x,y:B.y,zoom:B.k}}function A(B,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?bo:Uu).scaleTo(rh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function R(B,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?bo:Uu).scaleBy(rh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function D(B){p==null||p.scaleExtent(B)}function U(B){p==null||p.translateExtent(B)}function X(B){const q=!Un(B)||B<0?0:B;p==null||p.clickDistance(q)}return{update:S,destroy:_,setViewport:E,setViewportConstrained:T,getViewport:I,scaleTo:A,scaleBy:R,setScaleExtent:D,setTranslateExtent:U,syncViewport:z,setClickDistance:X}}var oa;(function(e){e.Line="line",e.Handle="handle"})(oa||(oa={}));function Az({width:e,prevWidth:n,height:r,prevHeight:l,affectsX:a,affectsY:s}){const u=e-n,f=r-l,d=[u>0?1:u<0?-1:0,f>0?1:f<0?-1:0];return u&&a&&(d[0]=d[0]*-1),f&&s&&(d[1]=d[1]*-1),d}function dv(e){const n=e.includes("right")||e.includes("left"),r=e.includes("bottom")||e.includes("top"),l=e.includes("left"),a=e.includes("top");return{isHorizontal:n,isVertical:r,affectsX:l,affectsY:a}}function ui(e,n){return Math.max(0,n-e)}function ci(e,n){return Math.max(0,e-n)}function Mu(e,n,r){return Math.max(0,n-e,e-r)}function hv(e,n){return e?!n:n}function Mz(e,n,r,l,a,s,u,f){let{affectsX:d,affectsY:h}=n;const{isHorizontal:m,isVertical:p}=n,y=m&&p,{xSnapped:v,ySnapped:w}=r,{minWidth:k,maxWidth:S,minHeight:_,maxHeight:T}=l,{x:E,y:z,width:I,height:A,aspectRatio:R}=e;let D=Math.floor(m?v-e.pointerX:0),U=Math.floor(p?w-e.pointerY:0);const X=I+(d?-D:D),B=A+(h?-U:U),q=-s[0]*I,ee=-s[1]*A;let L=Mu(X,k,S),$=Mu(B,_,T);if(u){let Q=0,K=0;d&&D<0?Q=ui(E+D+q,u[0][0]):!d&&D>0&&(Q=ci(E+X+q,u[1][0])),h&&U<0?K=ui(z+U+ee,u[0][1]):!h&&U>0&&(K=ci(z+B+ee,u[1][1])),L=Math.max(L,Q),$=Math.max($,K)}if(f){let Q=0,K=0;d&&D>0?Q=ci(E+D,f[0][0]):!d&&D<0&&(Q=ui(E+X,f[1][0])),h&&U>0?K=ci(z+U,f[0][1]):!h&&U<0&&(K=ui(z+B,f[1][1])),L=Math.max(L,Q),$=Math.max($,K)}if(a){if(m){const Q=Mu(X/R,_,T)*R;if(L=Math.max(L,Q),u){let K=0;!d&&!h||d&&!h&&y?K=ci(z+ee+X/R,u[1][1])*R:K=ui(z+ee+(d?D:-D)/R,u[0][1])*R,L=Math.max(L,K)}if(f){let K=0;!d&&!h||d&&!h&&y?K=ui(z+X/R,f[1][1])*R:K=ci(z+(d?D:-D)/R,f[0][1])*R,L=Math.max(L,K)}}if(p){const Q=Mu(B*R,k,S)/R;if($=Math.max($,Q),u){let K=0;!d&&!h||h&&!d&&y?K=ci(E+B*R+q,u[1][0])/R:K=ui(E+(h?U:-U)*R+q,u[0][0])/R,$=Math.max($,K)}if(f){let K=0;!d&&!h||h&&!d&&y?K=ui(E+B*R,f[1][0])/R:K=ci(E+(h?U:-U)*R,f[0][0])/R,$=Math.max($,K)}}}U=U+(U<0?$:-$),D=D+(D<0?L:-L),a&&(y?X>B*R?U=(hv(d,h)?-D:D)/R:D=(hv(d,h)?-U:U)*R:m?(U=D/R,h=d):(D=U*R,d=h));const M=d?E+D:E,Y=h?z+U:z;return{width:I+(d?-D:D),height:A+(h?-U:U),x:s[0]*D*(d?-1:1)+M,y:s[1]*U*(h?-1:1)+Y}}const rS={width:0,height:0,x:0,y:0},jz={...rS,pointerX:0,pointerY:0,aspectRatio:1};function Oz(e){return[[0,0],[e.measured.width,e.measured.height]]}function Dz(e,n,r){const l=n.position.x+e.position.x,a=n.position.y+e.position.y,s=e.measured.width??0,u=e.measured.height??0,f=r[0]*s,d=r[1]*u;return[[l-f,a-d],[l+s-f,a+u-d]]}function Rz({domNode:e,nodeId:n,getStoreItems:r,onChange:l,onEnd:a}){const s=vn(e);let u={controlDirection:dv("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function f({controlPosition:h,boundaries:m,keepAspectRatio:p,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:S}){let _={...rS},T={...jz};u={boundaries:m,resizeDirection:y,keepAspectRatio:p,controlDirection:dv(h)};let E,z=null,I=[],A,R,D,U=!1;const X=pw().on("start",B=>{const{nodeLookup:q,transform:ee,snapGrid:L,snapToGrid:$,nodeOrigin:M,paneDomNode:Y}=r();if(E=q.get(n),!E)return;z=(Y==null?void 0:Y.getBoundingClientRect())??null;const{xSnapped:Q,ySnapped:K}=wo(B.sourceEvent,{transform:ee,snapGrid:L,snapToGrid:$,containerBounds:z});_={width:E.measured.width??0,height:E.measured.height??0,x:E.position.x??0,y:E.position.y??0},T={..._,pointerX:Q,pointerY:K,aspectRatio:_.width/_.height},A=void 0,E.parentId&&(E.extent==="parent"||E.expandParent)&&(A=q.get(E.parentId),R=A&&E.extent==="parent"?Oz(A):void 0),I=[],D=void 0;for(const[j,H]of q)if(H.parentId===n&&(I.push({id:j,position:{...H.position},extent:H.extent}),H.extent==="parent"||H.expandParent)){const P=Dz(H,E,H.origin??M);D?D=[[Math.min(P[0][0],D[0][0]),Math.min(P[0][1],D[0][1])],[Math.max(P[1][0],D[1][0]),Math.max(P[1][1],D[1][1])]]:D=P}v==null||v(B,{..._})}).on("drag",B=>{const{transform:q,snapGrid:ee,snapToGrid:L,nodeOrigin:$}=r(),M=wo(B.sourceEvent,{transform:q,snapGrid:ee,snapToGrid:L,containerBounds:z}),Y=[];if(!E)return;const{x:Q,y:K,width:j,height:H}=_,P={},N=E.origin??$,{width:G,height:F,x:J,y:ne}=Mz(T,u.controlDirection,M,u.boundaries,u.keepAspectRatio,N,R,D),re=G!==j,se=F!==H,ye=J!==Q&&re,ve=ne!==K&&se;if(!ye&&!ve&&!re&&!se)return;if((ye||ve||N[0]===1||N[1]===1)&&(P.x=ye?J:_.x,P.y=ve?ne:_.y,_.x=P.x,_.y=P.y,I.length>0)){const Me=J-Q,Ce=ne-K;for(const ut of I)ut.position={x:ut.position.x-Me+N[0]*(G-j),y:ut.position.y-Ce+N[1]*(F-H)},Y.push(ut)}if((re||se)&&(P.width=re&&(!u.resizeDirection||u.resizeDirection==="horizontal")?G:_.width,P.height=se&&(!u.resizeDirection||u.resizeDirection==="vertical")?F:_.height,_.width=P.width,_.height=P.height),A&&E.expandParent){const Me=N[0]*(P.width??0);P.x&&P.x{U&&(k==null||k(B,{..._}),a==null||a({..._}),U=!1)});s.call(X)}function d(){s.on(".drag",null)}return{update:f,destroy:d}}var ih={exports:{}},lh={},ah={exports:{}},oh={};/** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var pv;function Lz(){if(pv)return oh;pv=1;var e=qo();function n(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var r=typeof Object.is=="function"?Object.is:n,l=e.useState,a=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function f(p,y){var v=y(),w=l({inst:{value:v,getSnapshot:y}}),k=w[0].inst,S=w[1];return s(function(){k.value=v,k.getSnapshot=y,d(k)&&S({inst:k})},[p,v,y]),a(function(){return d(k)&&S({inst:k}),p(function(){d(k)&&S({inst:k})})},[p]),u(v),v}function d(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!r(p,v)}catch{return!0}}function h(p,y){return y()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?h:f;return oh.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,oh}var mv;function Hz(){return mv||(mv=1,ah.exports=Lz()),ah.exports}/** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var gv;function Bz(){if(gv)return lh;gv=1;var e=qo(),n=Hz();function r(h,m){return h===m&&(h!==0||1/h===1/m)||h!==h&&m!==m}var l=typeof Object.is=="function"?Object.is:r,a=n.useSyncExternalStore,s=e.useRef,u=e.useEffect,f=e.useMemo,d=e.useDebugValue;return lh.useSyncExternalStoreWithSelector=function(h,m,p,y,v){var w=s(null);if(w.current===null){var k={hasValue:!1,value:null};w.current=k}else k=w.current;w=f(function(){function _(A){if(!T){if(T=!0,E=A,A=y(A),v!==void 0&&k.hasValue){var R=k.value;if(v(R,A))return z=R}return z=A}if(R=z,l(E,A))return R;var D=y(A);return v!==void 0&&v(R,D)?(E=A,R):(E=A,z=D)}var T=!1,E,z,I=p===void 0?null:p;return[function(){return _(m())},I===null?void 0:function(){return _(I())}]},[m,p,y,v]);var S=a(h,w[0],w[1]);return u(function(){k.hasValue=!0,k.value=S},[S]),d(S),S},lh}var yv;function qz(){return yv||(yv=1,ih.exports=Bz()),ih.exports}var Uz=qz();const Iz=Bo(Uz),Vz={},xv=e=>{let n;const r=new Set,l=(m,p)=>{const y=typeof m=="function"?m(n):m;if(!Object.is(y,n)){const v=n;n=p??(typeof y!="object"||y===null)?y:Object.assign({},n,y),r.forEach(w=>w(n,v))}},a=()=>n,d={setState:l,getState:a,getInitialState:()=>h,subscribe:m=>(r.add(m),()=>r.delete(m)),destroy:()=>{(Vz?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},h=n=e(l,a,d);return d},Gz=e=>e?xv(e):xv,{useDebugValue:Yz}=$l,{useSyncExternalStoreWithSelector:$z}=Iz,Pz=e=>e;function iS(e,n=Pz,r){const l=$z(e.subscribe,e.getState,e.getServerState||e.getInitialState,n,r);return Yz(l),l}const vv=(e,n)=>{const r=Gz(e),l=(a,s=n)=>iS(r,a,s);return Object.assign(l,r),l},Xz=(e,n)=>e?vv(e,n):vv;function ht(e,n){if(Object.is(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(const[l,a]of e)if(!Object.is(a,n.get(l)))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(const l of e)if(!n.has(l))return!1;return!0}const r=Object.keys(e);if(r.length!==Object.keys(n).length)return!1;for(const l of r)if(!Object.prototype.hasOwnProperty.call(n,l)||!Object.is(e[l],n[l]))return!1;return!0}var Fz=Cb();const bc=V.createContext(null),Qz=bc.Provider,lS=nr.error001();function Ge(e,n){const r=V.useContext(bc);if(r===null)throw new Error(lS);return iS(r,e,n)}function pt(){const e=V.useContext(bc);if(e===null)throw new Error(lS);return V.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const bv={display:"none"},Zz={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},aS="react-flow__node-desc",oS="react-flow__edge-desc",Kz="react-flow__aria-live",Jz=e=>e.ariaLiveMessage,Wz=e=>e.ariaLabelConfig;function eA({rfId:e}){const n=Ge(Jz);return b.jsx("div",{id:`${Kz}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Zz,children:n})}function tA({rfId:e,disableKeyboardA11y:n}){const r=Ge(Wz);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${aS}-${e}`,style:bv,children:n?r["node.a11yDescription.default"]:r["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${oS}-${e}`,style:bv,children:r["edge.a11yDescription.default"]}),!n&&b.jsx(eA,{rfId:e})]})}const wc=V.forwardRef(({position:e="top-left",children:n,className:r,style:l,...a},s)=>{const u=`${e}`.split("-");return b.jsx("div",{className:zt(["react-flow__panel",r,...u]),style:l,ref:s,...a,children:n})});wc.displayName="Panel";function nA({proOptions:e,position:n="bottom-right"}){return e!=null&&e.hideAttribution?null:b.jsx(wc,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:b.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const rA=e=>{const n=[],r=[];for(const[,l]of e.nodeLookup)l.selected&&n.push(l.internals.userNode);for(const[,l]of e.edgeLookup)l.selected&&r.push(l);return{selectedNodes:n,selectedEdges:r}},ju=e=>e.id;function iA(e,n){return ht(e.selectedNodes.map(ju),n.selectedNodes.map(ju))&&ht(e.selectedEdges.map(ju),n.selectedEdges.map(ju))}function lA({onSelectionChange:e}){const n=pt(),{selectedNodes:r,selectedEdges:l}=Ge(rA,iA);return V.useEffect(()=>{const a={nodes:r,edges:l};e==null||e(a),n.getState().onSelectionChangeHandlers.forEach(s=>s(a))},[r,l,e]),null}const aA=e=>!!e.onSelectionChangeHandlers;function oA({onSelectionChange:e}){const n=Ge(aA);return e||n?b.jsx(lA,{onSelectionChange:e}):null}const sS=[0,0],sA={x:0,y:0,zoom:1},uA=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],wv=[...uA,"rfId"],cA=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Sv={translateExtent:jo,nodeOrigin:sS,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function fA(e){const{setNodes:n,setEdges:r,setMinZoom:l,setMaxZoom:a,setTranslateExtent:s,setNodeExtent:u,reset:f,setDefaultNodesAndEdges:d}=Ge(cA,ht),h=pt();V.useEffect(()=>(d(e.defaultNodes,e.defaultEdges),()=>{m.current=Sv,f()}),[]);const m=V.useRef(Sv);return V.useEffect(()=>{for(const p of wv){const y=e[p],v=m.current[p];y!==v&&(typeof e[p]>"u"||(p==="nodes"?n(y):p==="edges"?r(y):p==="minZoom"?l(y):p==="maxZoom"?a(y):p==="translateExtent"?s(y):p==="nodeExtent"?u(y):p==="ariaLabelConfig"?h.setState({ariaLabelConfig:XT(y)}):p==="fitView"?h.setState({fitViewQueued:y}):p==="fitViewOptions"?h.setState({fitViewOptions:y}):h.setState({[p]:y})))}m.current=e},wv.map(p=>e[p])),null}function _v(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function dA(e){var l;const[n,r]=V.useState(e==="system"?null:e);return V.useEffect(()=>{if(e!=="system"){r(e);return}const a=_v(),s=()=>r(a!=null&&a.matches?"dark":"light");return s(),a==null||a.addEventListener("change",s),()=>{a==null||a.removeEventListener("change",s)}},[e]),n!==null?n:(l=_v())!=null&&l.matches?"dark":"light"}const Ev=typeof document<"u"?document:null;function Lo(e=null,n={target:Ev,actInsideInputWithModifier:!0}){const[r,l]=V.useState(!1),a=V.useRef(!1),s=V.useRef(new Set([])),[u,f]=V.useMemo(()=>{if(e!==null){const h=(Array.isArray(e)?e:[e]).filter(p=>typeof p=="string").map(p=>p.replace("+",` +`).replace(` + +`,` ++`).split(` +`)),m=h.reduce((p,y)=>p.concat(...y),[]);return[h,m]}return[[],[]]},[e]);return V.useEffect(()=>{const d=(n==null?void 0:n.target)??Ev,h=(n==null?void 0:n.actInsideInputWithModifier)??!0;if(e!==null){const m=v=>{var S,_;if(a.current=v.ctrlKey||v.metaKey||v.shiftKey||v.altKey,(!a.current||a.current&&!h)&&Vw(v))return!1;const k=kv(v.code,f);if(s.current.add(v[k]),Nv(u,s.current,!1)){const T=((_=(S=v.composedPath)==null?void 0:S.call(v))==null?void 0:_[0])||v.target,E=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";n.preventDefault!==!1&&(a.current||!E)&&v.preventDefault(),l(!0)}},p=v=>{const w=kv(v.code,f);Nv(u,s.current,!0)?(l(!1),s.current.clear()):s.current.delete(v[w]),v.key==="Meta"&&s.current.clear(),a.current=!1},y=()=>{s.current.clear(),l(!1)};return d==null||d.addEventListener("keydown",m),d==null||d.addEventListener("keyup",p),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{d==null||d.removeEventListener("keydown",m),d==null||d.removeEventListener("keyup",p),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,l]),r}function Nv(e,n,r){return e.filter(l=>r||l.length===n.size).some(l=>l.every(a=>n.has(a)))}function kv(e,n){return n.includes(e)?"code":"key"}const hA=()=>{const e=pt();return V.useMemo(()=>({zoomIn:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomOut:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1/1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomTo:(n,r)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(n,{duration:r==null?void 0:r.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(n,r)=>{const{transform:[l,a,s],panZoom:u}=e.getState();return u?(await u.setViewport({x:n.x??l,y:n.y??a,zoom:n.zoom??s},r),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[n,r,l]=e.getState().transform;return{x:n,y:r,zoom:l}},setCenter:async(n,r,l)=>e.getState().setCenter(n,r,l),fitBounds:async(n,r)=>{const{width:l,height:a,minZoom:s,maxZoom:u,panZoom:f}=e.getState(),d=am(n,l,a,s,u,(r==null?void 0:r.padding)??.1);return f?(await f.setViewport(d,{duration:r==null?void 0:r.duration,ease:r==null?void 0:r.ease,interpolate:r==null?void 0:r.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(n,r={})=>{const{transform:l,snapGrid:a,snapToGrid:s,domNode:u}=e.getState();if(!u)return n;const{x:f,y:d}=u.getBoundingClientRect(),h={x:n.x-f,y:n.y-d},m=r.snapGrid??a,p=r.snapToGrid??s;return Po(h,l,p,m)},flowToScreenPosition:n=>{const{transform:r,domNode:l}=e.getState();if(!l)return n;const{x:a,y:s}=l.getBoundingClientRect(),u=rc(n,r);return{x:u.x+a,y:u.y+s}}}),[])};function uS(e,n){const r=[],l=new Map,a=[];for(const s of e)if(s.type==="add"){a.push(s);continue}else if(s.type==="remove"||s.type==="replace")l.set(s.id,[s]);else{const u=l.get(s.id);u?u.push(s):l.set(s.id,[s])}for(const s of n){const u=l.get(s.id);if(!u){r.push(s);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){r.push({...u[0].item});continue}const f={...s};for(const d of u)pA(d,f);r.push(f)}return a.length&&a.forEach(s=>{s.index!==void 0?r.splice(s.index,0,{...s.item}):r.push({...s.item})}),r}function pA(e,n){switch(e.type){case"select":{n.selected=e.selected;break}case"position":{typeof e.position<"u"&&(n.position=e.position),typeof e.dragging<"u"&&(n.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(n.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(n.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(n.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(n.resizing=e.resizing);break}}}function cS(e,n){return uS(e,n)}function fS(e,n){return uS(e,n)}function qi(e,n){return{id:e,type:"select",selected:n}}function Fl(e,n=new Set,r=!1){const l=[];for(const[a,s]of e){const u=n.has(a);!(s.selected===void 0&&!u)&&s.selected!==u&&(r&&(s.selected=u),l.push(qi(s.id,u)))}return l}function Cv({items:e=[],lookup:n}){var a;const r=[],l=new Map(e.map(s=>[s.id,s]));for(const[s,u]of e.entries()){const f=n.get(u.id),d=((a=f==null?void 0:f.internals)==null?void 0:a.userNode)??f;d!==void 0&&d!==u&&r.push({id:u.id,item:u,type:"replace"}),d===void 0&&r.push({item:u,type:"add",index:s})}for(const[s]of n)l.get(s)===void 0&&r.push({id:s,type:"remove"});return r}function Tv(e){return{id:e.id,type:"remove"}}const zv=e=>HT(e),mA=e=>Dw(e);function dS(e){return V.forwardRef(e)}const gA=typeof window<"u"?V.useLayoutEffect:V.useEffect;function Av(e){const[n,r]=V.useState(BigInt(0)),[l]=V.useState(()=>yA(()=>r(a=>a+BigInt(1))));return gA(()=>{const a=l.get();a.length&&(e(a),l.reset())},[n]),l}function yA(e){let n=[];return{get:()=>n,reset:()=>{n=[]},push:r=>{n.push(r),e()}}}const hS=V.createContext(null);function xA({children:e}){const n=pt(),r=V.useCallback(f=>{const{nodes:d=[],setNodes:h,hasDefaultNodes:m,onNodesChange:p,nodeLookup:y,fitViewQueued:v,onNodesChangeMiddlewareMap:w}=n.getState();let k=d;for(const _ of f)k=typeof _=="function"?_(k):_;let S=Cv({items:k,lookup:y});for(const _ of w.values())S=_(S);m&&h(k),S.length>0?p==null||p(S):v&&window.requestAnimationFrame(()=>{const{fitViewQueued:_,nodes:T,setNodes:E}=n.getState();_&&E(T)})},[]),l=Av(r),a=V.useCallback(f=>{const{edges:d=[],setEdges:h,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:y}=n.getState();let v=d;for(const w of f)v=typeof w=="function"?w(v):w;m?h(v):p&&p(Cv({items:v,lookup:y}))},[]),s=Av(a),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:s}),[]);return b.jsx(hS.Provider,{value:u,children:e})}function vA(){const e=V.useContext(hS);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const bA=e=>!!e.panZoom;function Xo(){const e=hA(),n=pt(),r=vA(),l=Ge(bA),a=V.useMemo(()=>{const s=p=>n.getState().nodeLookup.get(p),u=p=>{r.nodeQueue.push(p)},f=p=>{r.edgeQueue.push(p)},d=p=>{var _,T;const{nodeLookup:y,nodeOrigin:v}=n.getState(),w=zv(p)?p:y.get(p.id),k=w.parentId?Uw(w.position,w.measured,w.parentId,y,v):w.position,S={...w,position:k,width:((_=w.measured)==null?void 0:_.width)??w.width,height:((T=w.measured)==null?void 0:T.height)??w.height};return la(S)},h=(p,y,v={replace:!1})=>{u(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&zv(S)?S:{...k,...S}}return k}))},m=(p,y,v={replace:!1})=>{f(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&mA(S)?S:{...k,...S}}return k}))};return{getNodes:()=>n.getState().nodes.map(p=>({...p})),getNode:p=>{var y;return(y=s(p))==null?void 0:y.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:p=[]}=n.getState();return p.map(y=>({...y}))},getEdge:p=>n.getState().edgeLookup.get(p),setNodes:u,setEdges:f,addNodes:p=>{const y=Array.isArray(p)?p:[p];r.nodeQueue.push(v=>[...v,...y])},addEdges:p=>{const y=Array.isArray(p)?p:[p];r.edgeQueue.push(v=>[...v,...y])},toObject:()=>{const{nodes:p=[],edges:y=[],transform:v}=n.getState(),[w,k,S]=v;return{nodes:p.map(_=>({..._})),edges:y.map(_=>({..._})),viewport:{x:w,y:k,zoom:S}}},deleteElements:async({nodes:p=[],edges:y=[]})=>{const{nodes:v,edges:w,onNodesDelete:k,onEdgesDelete:S,triggerNodeChanges:_,triggerEdgeChanges:T,onDelete:E,onBeforeDelete:z}=n.getState(),{nodes:I,edges:A}=await VT({nodesToRemove:p,edgesToRemove:y,nodes:v,edges:w,onBeforeDelete:z}),R=A.length>0,D=I.length>0;if(R){const U=A.map(Tv);S==null||S(A),T(U)}if(D){const U=I.map(Tv);k==null||k(I),_(U)}return(D||R)&&(E==null||E({nodes:I,edges:A})),{deletedNodes:I,deletedEdges:A}},getIntersectingNodes:(p,y=!0,v)=>{const w=tv(p),k=w?p:d(p),S=v!==void 0;return k?(v||n.getState().nodes).filter(_=>{const T=n.getState().nodeLookup.get(_.id);if(T&&!w&&(_.id===p.id||!T.internals.positionAbsolute))return!1;const E=la(S?_:T),z=Do(E,k);return y&&z>0||z>=E.width*E.height||z>=k.width*k.height}):[]},isNodeIntersecting:(p,y,v=!0)=>{const k=tv(p)?p:d(p);if(!k)return!1;const S=Do(k,y);return v&&S>0||S>=y.width*y.height||S>=k.width*k.height},updateNode:h,updateNodeData:(p,y,v={replace:!1})=>{h(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},updateEdge:m,updateEdgeData:(p,y,v={replace:!1})=>{m(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},getNodesBounds:p=>{const{nodeLookup:y,nodeOrigin:v}=n.getState();return BT(p,{nodeLookup:y,nodeOrigin:v})},getHandleConnections:({type:p,id:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}-${p}${y?`-${y}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}${p?y?`-${p}-${y}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const y=n.getState().fitViewResolver??PT();return n.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:y}),r.nodeQueue.push(v=>[...v]),y.promise}}},[]);return V.useMemo(()=>({...a,...e,viewportInitialized:l}),[l])}const Mv=e=>e.selected,wA=typeof window<"u"?window:void 0;function SA({deleteKeyCode:e,multiSelectionKeyCode:n}){const r=pt(),{deleteElements:l}=Xo(),a=Lo(e,{actInsideInputWithModifier:!1}),s=Lo(n,{target:wA});V.useEffect(()=>{if(a){const{edges:u,nodes:f}=r.getState();l({nodes:f.filter(Mv),edges:u.filter(Mv)}),r.setState({nodesSelectionActive:!1})}},[a]),V.useEffect(()=>{r.setState({multiSelectionActive:s})},[s])}function _A(e){const n=pt();V.useEffect(()=>{const r=()=>{var a,s,u,f;if(!e.current||!(((s=(a=e.current).checkVisibility)==null?void 0:s.call(a))??!0))return!1;const l=om(e.current);(l.height===0||l.width===0)&&((f=(u=n.getState()).onError)==null||f.call(u,"004",nr.error004())),n.setState({width:l.width||500,height:l.height||500})};if(e.current){r(),window.addEventListener("resize",r);const l=new ResizeObserver(()=>r());return l.observe(e.current),()=>{window.removeEventListener("resize",r),l&&e.current&&l.unobserve(e.current)}}},[])}const Sc={position:"absolute",width:"100%",height:"100%",top:0,left:0},EA=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function NA({onPaneContextMenu:e,zoomOnScroll:n=!0,zoomOnPinch:r=!0,panOnScroll:l=!1,panOnScrollSpeed:a=.5,panOnScrollMode:s=$i.Free,zoomOnDoubleClick:u=!0,panOnDrag:f=!0,defaultViewport:d,translateExtent:h,minZoom:m,maxZoom:p,zoomActivationKeyCode:y,preventScrolling:v=!0,children:w,noWheelClassName:k,noPanClassName:S,onViewportChange:_,isControlledViewport:T,paneClickDistance:E,selectionOnDrag:z}){const I=pt(),A=V.useRef(null),{userSelectionActive:R,lib:D,connectionInProgress:U}=Ge(EA,ht),X=Lo(y),B=V.useRef();_A(A);const q=V.useCallback(ee=>{_==null||_({x:ee[0],y:ee[1],zoom:ee[2]}),T||I.setState({transform:ee})},[_,T]);return V.useEffect(()=>{if(A.current){B.current=zz({domNode:A.current,minZoom:m,maxZoom:p,translateExtent:h,viewport:d,onDraggingChange:M=>I.setState(Y=>Y.paneDragging===M?Y:{paneDragging:M}),onPanZoomStart:(M,Y)=>{const{onViewportChangeStart:Q,onMoveStart:K}=I.getState();K==null||K(M,Y),Q==null||Q(Y)},onPanZoom:(M,Y)=>{const{onViewportChange:Q,onMove:K}=I.getState();K==null||K(M,Y),Q==null||Q(Y)},onPanZoomEnd:(M,Y)=>{const{onViewportChangeEnd:Q,onMoveEnd:K}=I.getState();K==null||K(M,Y),Q==null||Q(Y)}});const{x:ee,y:L,zoom:$}=B.current.getViewport();return I.setState({panZoom:B.current,transform:[ee,L,$],domNode:A.current.closest(".react-flow")}),()=>{var M;(M=B.current)==null||M.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=B.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:n,zoomOnPinch:r,panOnScroll:l,panOnScrollSpeed:a,panOnScrollMode:s,zoomOnDoubleClick:u,panOnDrag:f,zoomActivationKeyPressed:X,preventScrolling:v,noPanClassName:S,userSelectionActive:R,noWheelClassName:k,lib:D,onTransformChange:q,connectionInProgress:U,selectionOnDrag:z,paneClickDistance:E})},[e,n,r,l,a,s,u,f,X,v,S,R,k,D,q,U,z,E]),b.jsx("div",{className:"react-flow__renderer",ref:A,style:Sc,children:w})}const kA=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function CA(){const{userSelectionActive:e,userSelectionRect:n}=Ge(kA,ht);return e&&n?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const sh=(e,n)=>r=>{r.target===n.current&&(e==null||e(r))},TA=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function zA({isSelecting:e,selectionKeyPressed:n,selectionMode:r=Oo.Full,panOnDrag:l,paneClickDistance:a,selectionOnDrag:s,onSelectionStart:u,onSelectionEnd:f,onPaneClick:d,onPaneContextMenu:h,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:y,onPaneMouseLeave:v,children:w}){const k=pt(),{userSelectionActive:S,elementsSelectable:_,dragging:T,connectionInProgress:E}=Ge(TA,ht),z=_&&(e||S),I=V.useRef(null),A=V.useRef(),R=V.useRef(new Set),D=V.useRef(new Set),U=V.useRef(!1),X=Q=>{if(U.current||E){U.current=!1;return}d==null||d(Q),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},B=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}h==null||h(Q)},q=m?Q=>m(Q):void 0,ee=Q=>{U.current&&(Q.stopPropagation(),U.current=!1)},L=Q=>{var F,J;const{domNode:K}=k.getState();if(A.current=K==null?void 0:K.getBoundingClientRect(),!A.current)return;const j=Q.target===I.current;if(!j&&!!Q.target.closest(".nokey")||!e||!(s&&j||n)||Q.button!==0||!Q.isPrimary)return;(J=(F=Q.target)==null?void 0:F.setPointerCapture)==null||J.call(F,Q.pointerId),U.current=!1;const{x:N,y:G}=In(Q.nativeEvent,A.current);k.setState({userSelectionRect:{width:0,height:0,startX:N,startY:G,x:N,y:G}}),j||(Q.stopPropagation(),Q.preventDefault())},$=Q=>{const{userSelectionRect:K,transform:j,nodeLookup:H,edgeLookup:P,connectionLookup:N,triggerNodeChanges:G,triggerEdgeChanges:F,defaultEdgeOptions:J,resetSelectedElements:ne}=k.getState();if(!A.current||!K)return;const{x:re,y:se}=In(Q.nativeEvent,A.current),{startX:ye,startY:ve}=K;if(!U.current){const Ce=n?0:a;if(Math.hypot(re-ye,se-ve)<=Ce)return;ne(),u==null||u(Q)}U.current=!0;const xe={startX:ye,startY:ve,x:reCe.id)),D.current=new Set;const Me=(J==null?void 0:J.selectable)??!0;for(const Ce of R.current){const ut=N.get(Ce);if(ut)for(const{edgeId:tt}of ut.values()){const At=P.get(tt);At&&(At.selectable??Me)&&D.current.add(tt)}}if(!nv(pe,R.current)){const Ce=Fl(H,R.current,!0);G(Ce)}if(!nv(_e,D.current)){const Ce=Fl(P,D.current);F(Ce)}k.setState({userSelectionRect:xe,userSelectionActive:!0,nodesSelectionActive:!1})},M=Q=>{var K,j;Q.button===0&&((j=(K=Q.target)==null?void 0:K.releasePointerCapture)==null||j.call(K,Q.pointerId),!S&&Q.target===I.current&&k.getState().userSelectionRect&&(X==null||X(Q)),k.setState({userSelectionActive:!1,userSelectionRect:null}),U.current&&(f==null||f(Q),k.setState({nodesSelectionActive:R.current.size>0})))},Y=l===!0||Array.isArray(l)&&l.includes(0);return b.jsxs("div",{className:zt(["react-flow__pane",{draggable:Y,dragging:T,selection:e}]),onClick:z?void 0:sh(X,I),onContextMenu:sh(B,I),onWheel:sh(q,I),onPointerEnter:z?void 0:p,onPointerMove:z?$:y,onPointerUp:z?M:void 0,onPointerDownCapture:z?L:void 0,onClickCapture:z?ee:void 0,onPointerLeave:v,ref:I,style:Sc,children:[w,b.jsx(CA,{})]})}function Dp({id:e,store:n,unselect:r=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:s,multiSelectionActive:u,nodeLookup:f,onError:d}=n.getState(),h=f.get(e);if(!h){d==null||d("012",nr.error012(e));return}n.setState({nodesSelectionActive:!1}),h.selected?(r||h.selected&&u)&&(s({nodes:[h],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([e])}function pS({nodeRef:e,disabled:n=!1,noDragClassName:r,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:u}){const f=pt(),[d,h]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=mz({getStoreItems:()=>f.getState(),onNodeMouseDown:p=>{Dp({id:p,store:f,nodeRef:e})},onDragStart:()=>{h(!0)},onDragStop:()=>{h(!1)}})},[]),V.useEffect(()=>{if(!(n||!e.current||!m.current))return m.current.update({noDragClassName:r,handleSelector:l,domNode:e.current,isSelectable:s,nodeId:a,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[r,l,n,s,e,a,u]),d}const AA=e=>n=>n.selected&&(n.draggable||e&&typeof n.draggable>"u");function mS(){const e=pt();return V.useCallback(r=>{const{nodeExtent:l,snapToGrid:a,snapGrid:s,nodesDraggable:u,onError:f,updateNodePositions:d,nodeLookup:h,nodeOrigin:m}=e.getState(),p=new Map,y=AA(u),v=a?s[0]:5,w=a?s[1]:5,k=r.direction.x*v*r.factor,S=r.direction.y*w*r.factor;for(const[,_]of h){if(!y(_))continue;let T={x:_.internals.positionAbsolute.x+k,y:_.internals.positionAbsolute.y+S};a&&(T=$o(T,s));const{position:E,positionAbsolute:z}=Rw({nodeId:_.id,nextPosition:T,nodeLookup:h,nodeExtent:l,nodeOrigin:m,onError:f});_.position=E,_.internals.positionAbsolute=z,p.set(_.id,_)}d(p)},[])}const pm=V.createContext(null),MA=pm.Provider;pm.Consumer;const gS=()=>V.useContext(pm),jA=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),OA=(e,n,r)=>l=>{const{connectionClickStartHandle:a,connectionMode:s,connection:u}=l,{fromHandle:f,toHandle:d,isValid:h}=u,m=(d==null?void 0:d.nodeId)===e&&(d==null?void 0:d.id)===n&&(d==null?void 0:d.type)===r;return{connectingFrom:(f==null?void 0:f.nodeId)===e&&(f==null?void 0:f.id)===n&&(f==null?void 0:f.type)===r,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===n&&(a==null?void 0:a.type)===r,isPossibleEndHandle:s===ra.Strict?(f==null?void 0:f.type)!==r:e!==(f==null?void 0:f.nodeId)||n!==(f==null?void 0:f.id),connectionInProcess:!!f,clickConnectionInProcess:!!a,valid:m&&h}};function DA({type:e="source",position:n=be.Top,isValidConnection:r,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:s=!0,id:u,onConnect:f,children:d,className:h,onMouseDown:m,onTouchStart:p,...y},v){var $,M;const w=u||null,k=e==="target",S=pt(),_=gS(),{connectOnClick:T,noPanClassName:E,rfId:z}=Ge(jA,ht),{connectingFrom:I,connectingTo:A,clickConnecting:R,isPossibleEndHandle:D,connectionInProcess:U,clickConnectionInProcess:X,valid:B}=Ge(OA(_,w,e),ht);_||(M=($=S.getState()).onError)==null||M.call($,"010",nr.error010());const q=Y=>{const{defaultEdgeOptions:Q,onConnect:K,hasDefaultEdges:j}=S.getState(),H={...Q,...Y};if(j){const{edges:P,setEdges:N}=S.getState();N(WT(H,P))}K==null||K(H),f==null||f(H)},ee=Y=>{if(!_)return;const Q=Gw(Y.nativeEvent);if(a&&(Q&&Y.button===0||!Q)){const K=S.getState();Op.onPointerDown(Y.nativeEvent,{handleDomNode:Y.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:k,handleId:w,nodeId:_,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...j)=>{var H,P;return(P=(H=S.getState()).onConnectEnd)==null?void 0:P.call(H,...j)},updateConnection:K.updateConnection,onConnect:q,isValidConnection:r||((...j)=>{var H,P;return((P=(H=S.getState()).isValidConnection)==null?void 0:P.call(H,...j))??!0}),getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}Q?m==null||m(Y):p==null||p(Y)},L=Y=>{const{onClickConnectStart:Q,onClickConnectEnd:K,connectionClickStartHandle:j,connectionMode:H,isValidConnection:P,lib:N,rfId:G,nodeLookup:F,connection:J}=S.getState();if(!_||!j&&!a)return;if(!j){Q==null||Q(Y.nativeEvent,{nodeId:_,handleId:w,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:_,type:e,id:w}});return}const ne=Iw(Y.target),re=r||P,{connection:se,isValid:ye}=Op.isValid(Y.nativeEvent,{handle:{nodeId:_,id:w,type:e},connectionMode:H,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:re,flowId:G,doc:ne,lib:N,nodeLookup:F});ye&&se&&q(se);const ve=structuredClone(J);delete ve.inProgress,ve.toPosition=ve.toHandle?ve.toHandle.position:null,K==null||K(Y,ve),S.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":w,"data-nodeid":_,"data-handlepos":n,"data-id":`${z}-${_}-${w}-${e}`,className:zt(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",E,h,{source:!k,target:k,connectable:l,connectablestart:a,connectableend:s,clickconnecting:R,connectingfrom:I,connectingto:A,valid:B,connectionindicator:l&&(!U||D)&&(U||X?s:a)}]),onMouseDown:ee,onTouchStart:ee,onClick:T?L:void 0,ref:v,...y,children:d})}const $t=V.memo(dS(DA));function RA({data:e,isConnectable:n,sourcePosition:r=be.Bottom}){return b.jsxs(b.Fragment,{children:[e==null?void 0:e.label,b.jsx($t,{type:"source",position:r,isConnectable:n})]})}function LA({data:e,isConnectable:n,targetPosition:r=be.Top,sourcePosition:l=be.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label,b.jsx($t,{type:"source",position:l,isConnectable:n})]})}function HA(){return null}function BA({data:e,isConnectable:n,targetPosition:r=be.Top}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label]})}const ic={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},jv={input:RA,default:LA,output:BA,group:HA};function qA(e){var n,r,l,a;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((n=e.style)==null?void 0:n.width),height:e.height??e.initialHeight??((r=e.style)==null?void 0:r.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((a=e.style)==null?void 0:a.height)}}const UA=e=>{const{width:n,height:r,x:l,y:a}=Yo(e.nodeLookup,{filter:s=>!!s.selected});return{width:Un(n)?n:null,height:Un(r)?r:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${a}px)`}};function IA({onSelectionContextMenu:e,noPanClassName:n,disableKeyboardA11y:r}){const l=pt(),{width:a,height:s,transformString:u,userSelectionActive:f}=Ge(UA,ht),d=mS(),h=V.useRef(null);V.useEffect(()=>{var v;r||(v=h.current)==null||v.focus({preventScroll:!0})},[r]);const m=!f&&a!==null&&s!==null;if(pS({nodeRef:h,disabled:!m}),!m)return null;const p=e?v=>{const w=l.getState().nodes.filter(k=>k.selected);e(v,w)}:void 0,y=v=>{Object.prototype.hasOwnProperty.call(ic,v.key)&&(v.preventDefault(),d({direction:ic[v.key],factor:v.shiftKey?4:1}))};return b.jsx("div",{className:zt(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:b.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:r?void 0:-1,onKeyDown:r?void 0:y,style:{width:a,height:s}})})}const Ov=typeof window<"u"?window:void 0,VA=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function yS({children:e,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,paneClickDistance:f,deleteKeyCode:d,selectionKeyCode:h,selectionOnDrag:m,selectionMode:p,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:w,panActivationKeyCode:k,zoomActivationKeyCode:S,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:z,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:R,panOnDrag:D,defaultViewport:U,translateExtent:X,minZoom:B,maxZoom:q,preventScrolling:ee,onSelectionContextMenu:L,noWheelClassName:$,noPanClassName:M,disableKeyboardA11y:Y,onViewportChange:Q,isControlledViewport:K}){const{nodesSelectionActive:j,userSelectionActive:H}=Ge(VA,ht),P=Lo(h,{target:Ov}),N=Lo(k,{target:Ov}),G=N||D,F=N||z,J=m&&G!==!0,ne=P||H||J;return SA({deleteKeyCode:d,multiSelectionKeyCode:w}),b.jsx(NA,{onPaneContextMenu:s,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:R,panOnDrag:!P&&G,defaultViewport:U,translateExtent:X,minZoom:B,maxZoom:q,zoomActivationKeyCode:S,preventScrolling:ee,noWheelClassName:$,noPanClassName:M,onViewportChange:Q,isControlledViewport:K,paneClickDistance:f,selectionOnDrag:J,children:b.jsxs(zA,{onSelectionStart:y,onSelectionEnd:v,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,panOnDrag:G,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:P,paneClickDistance:f,selectionOnDrag:J,children:[e,j&&b.jsx(IA,{onSelectionContextMenu:L,noPanClassName:M,disableKeyboardA11y:Y})]})})}yS.displayName="FlowRenderer";const GA=V.memo(yS),YA=e=>n=>e?lm(n.nodeLookup,{x:0,y:0,width:n.width,height:n.height},n.transform,!0).map(r=>r.id):Array.from(n.nodeLookup.keys());function $A(e){return Ge(V.useCallback(YA(e),[e]),ht)}const PA=e=>e.updateNodeInternals;function XA(){const e=Ge(PA),[n]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(r=>{const l=new Map;r.forEach(a=>{const s=a.target.getAttribute("data-id");l.set(s,{id:s,nodeElement:a.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{n==null||n.disconnect()},[n]),n}function FA({node:e,nodeType:n,hasDimensions:r,resizeObserver:l}){const a=pt(),s=V.useRef(null),u=V.useRef(null),f=V.useRef(e.sourcePosition),d=V.useRef(e.targetPosition),h=V.useRef(n),m=r&&!!e.internals.handleBounds;return V.useEffect(()=>{s.current&&!e.hidden&&(!m||u.current!==s.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(s.current),u.current=s.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(s.current){const p=h.current!==n,y=f.current!==e.sourcePosition,v=d.current!==e.targetPosition;(p||y||v)&&(h.current=n,f.current=e.sourcePosition,d.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,n,e.sourcePosition,e.targetPosition]),s}function QA({id:e,onClick:n,onMouseEnter:r,onMouseMove:l,onMouseLeave:a,onContextMenu:s,onDoubleClick:u,nodesDraggable:f,elementsSelectable:d,nodesConnectable:h,nodesFocusable:m,resizeObserver:p,noDragClassName:y,noPanClassName:v,disableKeyboardA11y:w,rfId:k,nodeTypes:S,nodeClickDistance:_,onError:T}){const{node:E,internals:z,isParent:I}=Ge(re=>{const se=re.nodeLookup.get(e),ye=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:ye}},ht);let A=E.type||"default",R=(S==null?void 0:S[A])||jv[A];R===void 0&&(T==null||T("003",nr.error003(A)),A="default",R=(S==null?void 0:S.default)||jv.default);const D=!!(E.draggable||f&&typeof E.draggable>"u"),U=!!(E.selectable||d&&typeof E.selectable>"u"),X=!!(E.connectable||h&&typeof E.connectable>"u"),B=!!(E.focusable||m&&typeof E.focusable>"u"),q=pt(),ee=qw(E),L=FA({node:E,nodeType:A,hasDimensions:ee,resizeObserver:p}),$=pS({nodeRef:L,disabled:E.hidden||!D,noDragClassName:y,handleSelector:E.dragHandle,nodeId:e,isSelectable:U,nodeClickDistance:_}),M=mS();if(E.hidden)return null;const Y=jr(E),Q=qA(E),K=U||D||n||r||l||a,j=r?re=>r(re,{...z.userNode}):void 0,H=l?re=>l(re,{...z.userNode}):void 0,P=a?re=>a(re,{...z.userNode}):void 0,N=s?re=>s(re,{...z.userNode}):void 0,G=u?re=>u(re,{...z.userNode}):void 0,F=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:ye}=q.getState();U&&(!se||!D||ye>0)&&Dp({id:e,store:q,nodeRef:L}),n&&n(re,{...z.userNode})},J=re=>{if(!(Vw(re.nativeEvent)||w)){if(Aw.includes(re.key)&&U){const se=re.key==="Escape";Dp({id:e,store:q,unselect:se,nodeRef:L})}else if(D&&E.selected&&Object.prototype.hasOwnProperty.call(ic,re.key)){re.preventDefault();const{ariaLabelConfig:se}=q.getState();q.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~z.positionAbsolute.x,y:~~z.positionAbsolute.y})}),M({direction:ic[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=L.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:ye,autoPanOnNodeFocus:ve,setCenter:xe}=q.getState();if(!ve)return;lm(new Map([[e,E]]),{x:0,y:0,width:se,height:ye},re,!0).length>0||xe(E.position.x+Y.width/2,E.position.y+Y.height/2,{zoom:re[2]})};return b.jsx("div",{className:zt(["react-flow__node",`react-flow__node-${A}`,{[v]:D},E.className,{selected:E.selected,selectable:U,parent:I,draggable:D,dragging:$}]),ref:L,style:{zIndex:z.z,transform:`translate(${z.positionAbsolute.x}px,${z.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:ee?"visible":"hidden",...E.style,...Q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:H,onMouseLeave:P,onContextMenu:N,onClick:F,onDoubleClick:G,onKeyDown:B?J:void 0,tabIndex:B?0:void 0,onFocus:B?ne:void 0,role:E.ariaRole??(B?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${aS}-${k}`,"aria-label":E.ariaLabel,...E.domAttributes,children:b.jsx(MA,{value:e,children:b.jsx(R,{id:e,data:E.data,type:A,positionAbsoluteX:z.positionAbsolute.x,positionAbsoluteY:z.positionAbsolute.y,selected:E.selected??!1,selectable:U,draggable:D,deletable:E.deletable??!0,isConnectable:X,sourcePosition:E.sourcePosition,targetPosition:E.targetPosition,dragging:$,dragHandle:E.dragHandle,zIndex:z.z,parentId:E.parentId,...Y})})})}var ZA=V.memo(QA);const KA=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function xS(e){const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,onError:s}=Ge(KA,ht),u=$A(e.onlyRenderVisibleElements),f=XA();return b.jsx("div",{className:"react-flow__nodes",style:Sc,children:u.map(d=>b.jsx(ZA,{id:d,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:f,nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:s},d))})}xS.displayName="NodeRenderer";const JA=V.memo(xS);function WA(e){return Ge(V.useCallback(r=>{if(!e)return r.edges.map(a=>a.id);const l=[];if(r.width&&r.height)for(const a of r.edges){const s=r.nodeLookup.get(a.source),u=r.nodeLookup.get(a.target);s&&u&&ZT({sourceNode:s,targetNode:u,width:r.width,height:r.height,transform:r.transform})&&l.push(a.id)}return l},[e]),ht)}const eM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:r,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},tM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:r,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Dv={[tc.Arrow]:eM,[tc.ArrowClosed]:tM};function nM(e){const n=pt();return V.useMemo(()=>{var a,s;return Object.prototype.hasOwnProperty.call(Dv,e)?Dv[e]:((s=(a=n.getState()).onError)==null||s.call(a,"009",nr.error009(e)),null)},[e])}const rM=({id:e,type:n,color:r,width:l=12.5,height:a=12.5,markerUnits:s="strokeWidth",strokeWidth:u,orient:f="auto-start-reverse"})=>{const d=nM(n);return d?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:f,refX:"0",refY:"0",children:b.jsx(d,{color:r,strokeWidth:u})}):null},vS=({defaultColor:e,rfId:n})=>{const r=Ge(s=>s.edges),l=Ge(s=>s.defaultEdgeOptions),a=V.useMemo(()=>iz(r,{id:n,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[r,l,n,e]);return a.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:a.map(s=>b.jsx(rM,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};vS.displayName="MarkerDefinitions";var iM=V.memo(vS);function bS({x:e,y:n,label:r,labelStyle:l,labelShowBg:a=!0,labelBgStyle:s,labelBgPadding:u=[2,4],labelBgBorderRadius:f=2,children:d,className:h,...m}){const[p,y]=V.useState({x:1,y:0,width:0,height:0}),v=zt(["react-flow__edge-textwrapper",h]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const k=w.current.getBBox();y({x:k.x,y:k.y,width:k.width,height:k.height})}},[r]),r?b.jsxs("g",{transform:`translate(${e-p.width/2} ${n-p.height/2})`,className:v,visibility:p.width?"visible":"hidden",...m,children:[a&&b.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:s,rx:f,ry:f}),b.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:r}),d]}):null}bS.displayName="EdgeText";const lM=V.memo(bS);function Fo({path:e,labelX:n,labelY:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:d,interactionWidth:h=20,...m}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...m,d:e,fill:"none",className:zt(["react-flow__edge-path",m.className])}),h?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}):null,l&&Un(n)&&Un(r)?b.jsx(lM,{x:n,y:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:d}):null]})}function Rv({pos:e,x1:n,y1:r,x2:l,y2:a}){return e===be.Left||e===be.Right?[.5*(n+l),r]:[n,.5*(r+a)]}function wS({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top}){const[u,f]=Rv({pos:r,x1:e,y1:n,x2:l,y2:a}),[d,h]=Rv({pos:s,x1:l,y1:a,x2:e,y2:n}),[m,p,y,v]=Yw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:u,sourceControlY:f,targetControlX:d,targetControlY:h});return[`M${e},${n} C${u},${f} ${d},${h} ${l},${a}`,m,p,y,v]}function SS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})=>{const[T,E,z]=wS({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f}),I=e.isInternal?void 0:n;return b.jsx(Fo,{id:I,path:T,labelX:E,labelY:z,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})})}const aM=SS({isInternal:!1}),_S=SS({isInternal:!0});aM.displayName="SimpleBezierEdge";_S.displayName="SimpleBezierEdgeInternal";function ES(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,sourcePosition:v=be.Bottom,targetPosition:w=be.Top,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=Ap({sourceX:r,sourceY:l,sourcePosition:v,targetX:a,targetY:s,targetPosition:w,borderRadius:_==null?void 0:_.borderRadius,offset:_==null?void 0:_.offset,stepPosition:_==null?void 0:_.stepPosition}),A=e.isInternal?void 0:n;return b.jsx(Fo,{id:A,path:E,labelX:z,labelY:I,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:k,markerStart:S,interactionWidth:T})})}const NS=ES({isInternal:!1}),kS=ES({isInternal:!0});NS.displayName="SmoothStepEdge";kS.displayName="SmoothStepEdgeInternal";function CS(e){return V.memo(({id:n,...r})=>{var a;const l=e.isInternal?void 0:n;return b.jsx(NS,{...r,id:l,pathOptions:V.useMemo(()=>{var s;return{borderRadius:0,offset:(s=r.pathOptions)==null?void 0:s.offset}},[(a=r.pathOptions)==null?void 0:a.offset])})})}const oM=CS({isInternal:!1}),TS=CS({isInternal:!0});oM.displayName="StepEdge";TS.displayName="StepEdgeInternal";function zS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[S,_,T]=Pw({sourceX:r,sourceY:l,targetX:a,targetY:s}),E=e.isInternal?void 0:n;return b.jsx(Fo,{id:E,path:S,labelX:_,labelY:T,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})})}const sM=zS({isInternal:!1}),AS=zS({isInternal:!0});sM.displayName="StraightEdge";AS.displayName="StraightEdgeInternal";function MS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u=be.Bottom,targetPosition:f=be.Top,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=sm({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f,curvature:_==null?void 0:_.curvature}),A=e.isInternal?void 0:n;return b.jsx(Fo,{id:A,path:E,labelX:z,labelY:I,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:T})})}const uM=MS({isInternal:!1}),jS=MS({isInternal:!0});uM.displayName="BezierEdge";jS.displayName="BezierEdgeInternal";const Lv={default:jS,straight:AS,step:TS,smoothstep:kS,simplebezier:_S},Hv={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},cM=(e,n,r)=>r===be.Left?e-n:r===be.Right?e+n:e,fM=(e,n,r)=>r===be.Top?e-n:r===be.Bottom?e+n:e,Bv="react-flow__edgeupdater";function qv({position:e,centerX:n,centerY:r,radius:l=10,onMouseDown:a,onMouseEnter:s,onMouseOut:u,type:f}){return b.jsx("circle",{onMouseDown:a,onMouseEnter:s,onMouseOut:u,className:zt([Bv,`${Bv}-${f}`]),cx:cM(n,l,e),cy:fM(r,l,e),r:l,stroke:"transparent",fill:"transparent"})}function dM({isReconnectable:e,reconnectRadius:n,edge:r,sourceX:l,sourceY:a,targetX:s,targetY:u,sourcePosition:f,targetPosition:d,onReconnect:h,onReconnectStart:m,onReconnectEnd:p,setReconnecting:y,setUpdateHover:v}){const w=pt(),k=(z,I)=>{if(z.button!==0)return;const{autoPanOnConnect:A,domNode:R,connectionMode:D,connectionRadius:U,lib:X,onConnectStart:B,cancelConnection:q,nodeLookup:ee,rfId:L,panBy:$,updateConnection:M}=w.getState(),Y=I.type==="target",Q=(H,P)=>{y(!1),p==null||p(H,r,I.type,P)},K=H=>h==null?void 0:h(r,H),j=(H,P)=>{y(!0),m==null||m(z,r,I.type),B==null||B(H,P)};Op.onPointerDown(z.nativeEvent,{autoPanOnConnect:A,connectionMode:D,connectionRadius:U,domNode:R,handleId:I.id,nodeId:I.nodeId,nodeLookup:ee,isTarget:Y,edgeUpdaterType:I.type,lib:X,flowId:L,cancelConnection:q,panBy:$,isValidConnection:(...H)=>{var P,N;return((N=(P=w.getState()).isValidConnection)==null?void 0:N.call(P,...H))??!0},onConnect:K,onConnectStart:j,onConnectEnd:(...H)=>{var P,N;return(N=(P=w.getState()).onConnectEnd)==null?void 0:N.call(P,...H)},onReconnectEnd:Q,updateConnection:M,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:z.currentTarget})},S=z=>k(z,{nodeId:r.target,id:r.targetHandle??null,type:"target"}),_=z=>k(z,{nodeId:r.source,id:r.sourceHandle??null,type:"source"}),T=()=>v(!0),E=()=>v(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(qv,{position:f,centerX:l,centerY:a,radius:n,onMouseDown:S,onMouseEnter:T,onMouseOut:E,type:"source"}),(e===!0||e==="target")&&b.jsx(qv,{position:d,centerX:s,centerY:u,radius:n,onMouseDown:_,onMouseEnter:T,onMouseOut:E,type:"target"})]})}function hM({id:e,edgesFocusable:n,edgesReconnectable:r,elementsSelectable:l,onClick:a,onDoubleClick:s,onContextMenu:u,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,rfId:w,edgeTypes:k,noPanClassName:S,onError:_,disableKeyboardA11y:T}){let E=Ge(xe=>xe.edgeLookup.get(e));const z=Ge(xe=>xe.defaultEdgeOptions);E=z?{...z,...E}:E;let I=E.type||"default",A=(k==null?void 0:k[I])||Lv[I];A===void 0&&(_==null||_("011",nr.error011(I)),I="default",A=(k==null?void 0:k.default)||Lv.default);const R=!!(E.focusable||n&&typeof E.focusable>"u"),D=typeof p<"u"&&(E.reconnectable||r&&typeof E.reconnectable>"u"),U=!!(E.selectable||l&&typeof E.selectable>"u"),X=V.useRef(null),[B,q]=V.useState(!1),[ee,L]=V.useState(!1),$=pt(),{zIndex:M,sourceX:Y,sourceY:Q,targetX:K,targetY:j,sourcePosition:H,targetPosition:P}=Ge(V.useCallback(xe=>{const pe=xe.nodeLookup.get(E.source),_e=xe.nodeLookup.get(E.target);if(!pe||!_e)return{zIndex:E.zIndex,...Hv};const Me=rz({id:e,sourceNode:pe,targetNode:_e,sourceHandle:E.sourceHandle||null,targetHandle:E.targetHandle||null,connectionMode:xe.connectionMode,onError:_});return{zIndex:QT({selected:E.selected,zIndex:E.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:xe.elevateEdgesOnSelect,zIndexMode:xe.zIndexMode}),...Me||Hv}},[E.source,E.target,E.sourceHandle,E.targetHandle,E.selected,E.zIndex]),ht),N=V.useMemo(()=>E.markerStart?`url('#${Mp(E.markerStart,w)}')`:void 0,[E.markerStart,w]),G=V.useMemo(()=>E.markerEnd?`url('#${Mp(E.markerEnd,w)}')`:void 0,[E.markerEnd,w]);if(E.hidden||Y===null||Q===null||K===null||j===null)return null;const F=xe=>{var Ce;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:Me}=$.getState();U&&($.setState({nodesSelectionActive:!1}),E.selected&&Me?(_e({nodes:[],edges:[E]}),(Ce=X.current)==null||Ce.blur()):pe([e])),a&&a(xe,E)},J=s?xe=>{s(xe,{...E})}:void 0,ne=u?xe=>{u(xe,{...E})}:void 0,re=f?xe=>{f(xe,{...E})}:void 0,se=d?xe=>{d(xe,{...E})}:void 0,ye=h?xe=>{h(xe,{...E})}:void 0,ve=xe=>{var pe;if(!T&&Aw.includes(xe.key)&&U){const{unselectNodesAndEdges:_e,addSelectedEdges:Me}=$.getState();xe.key==="Escape"?((pe=X.current)==null||pe.blur(),_e({edges:[E]})):Me([e])}};return b.jsx("svg",{style:{zIndex:M},children:b.jsxs("g",{className:zt(["react-flow__edge",`react-flow__edge-${I}`,E.className,S,{selected:E.selected,animated:E.animated,inactive:!U&&!a,updating:B,selectable:U}]),onClick:F,onDoubleClick:J,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:ye,onKeyDown:R?ve:void 0,tabIndex:R?0:void 0,role:E.ariaRole??(R?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":E.ariaLabel===null?void 0:E.ariaLabel||`Edge from ${E.source} to ${E.target}`,"aria-describedby":R?`${oS}-${w}`:void 0,ref:X,...E.domAttributes,children:[!ee&&b.jsx(A,{id:e,source:E.source,target:E.target,type:E.type,selected:E.selected,animated:E.animated,selectable:U,deletable:E.deletable??!0,label:E.label,labelStyle:E.labelStyle,labelShowBg:E.labelShowBg,labelBgStyle:E.labelBgStyle,labelBgPadding:E.labelBgPadding,labelBgBorderRadius:E.labelBgBorderRadius,sourceX:Y,sourceY:Q,targetX:K,targetY:j,sourcePosition:H,targetPosition:P,data:E.data,style:E.style,sourceHandleId:E.sourceHandle,targetHandleId:E.targetHandle,markerStart:N,markerEnd:G,pathOptions:"pathOptions"in E?E.pathOptions:void 0,interactionWidth:E.interactionWidth}),D&&b.jsx(dM,{edge:E,isReconnectable:D,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,sourceX:Y,sourceY:Q,targetX:K,targetY:j,sourcePosition:H,targetPosition:P,setUpdateHover:q,setReconnecting:L})]})})}var pM=V.memo(hM);const mM=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function OS({defaultMarkerColor:e,onlyRenderVisibleElements:n,rfId:r,edgeTypes:l,noPanClassName:a,onReconnect:s,onEdgeContextMenu:u,onEdgeMouseEnter:f,onEdgeMouseMove:d,onEdgeMouseLeave:h,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,disableKeyboardA11y:k}){const{edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,onError:E}=Ge(mM,ht),z=WA(n);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(iM,{defaultColor:e,rfId:r}),z.map(I=>b.jsx(pM,{id:I,edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,noPanClassName:a,onReconnect:s,onContextMenu:u,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,onClick:m,reconnectRadius:p,onDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,rfId:r,onError:E,edgeTypes:l,disableKeyboardA11y:k},I))]})}OS.displayName="EdgeRenderer";const gM=V.memo(OS),yM=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function xM({children:e}){const n=Ge(yM);return b.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}function vM(e){const n=Xo(),r=V.useRef(!1);V.useEffect(()=>{!r.current&&n.viewportInitialized&&e&&(setTimeout(()=>e(n),1),r.current=!0)},[e,n.viewportInitialized])}const bM=e=>{var n;return(n=e.panZoom)==null?void 0:n.syncViewport};function wM(e){const n=Ge(bM),r=pt();return V.useEffect(()=>{e&&(n==null||n(e),r.setState({transform:[e.x,e.y,e.zoom]}))},[e,n]),null}function SM(e){return e.connection.inProgress?{...e.connection,to:Po(e.connection.to,e.transform)}:{...e.connection}}function _M(e){return SM}function EM(e){const n=_M();return Ge(n,ht)}const NM=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function kM({containerStyle:e,style:n,type:r,component:l}){const{nodesConnectable:a,width:s,height:u,isValid:f,inProgress:d}=Ge(NM,ht);return!(s&&a&&d)?null:b.jsx("svg",{style:e,width:s,height:u,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:zt(["react-flow__connection",Ow(f)]),children:b.jsx(DS,{style:n,type:r,CustomComponent:l,isValid:f})})})}const DS=({style:e,type:n=pi.Bezier,CustomComponent:r,isValid:l})=>{const{inProgress:a,from:s,fromNode:u,fromHandle:f,fromPosition:d,to:h,toNode:m,toHandle:p,toPosition:y,pointer:v}=EM();if(!a)return;if(r)return b.jsx(r,{connectionLineType:n,connectionLineStyle:e,fromNode:u,fromHandle:f,fromX:s.x,fromY:s.y,toX:h.x,toY:h.y,fromPosition:d,toPosition:y,connectionStatus:Ow(l),toNode:m,toHandle:p,pointer:v});let w="";const k={sourceX:s.x,sourceY:s.y,sourcePosition:d,targetX:h.x,targetY:h.y,targetPosition:y};switch(n){case pi.Bezier:[w]=sm(k);break;case pi.SimpleBezier:[w]=wS(k);break;case pi.Step:[w]=Ap({...k,borderRadius:0});break;case pi.SmoothStep:[w]=Ap(k);break;default:[w]=Pw(k)}return b.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};DS.displayName="ConnectionLine";const CM={};function Uv(e=CM){V.useRef(e),pt(),V.useEffect(()=>{},[e])}function TM(){pt(),V.useRef(!1),V.useEffect(()=>{},[])}function RS({nodeTypes:e,edgeTypes:n,onInit:r,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:s,onEdgeDoubleClick:u,onNodeMouseEnter:f,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:y,onSelectionEnd:v,connectionLineType:w,connectionLineStyle:k,connectionLineComponent:S,connectionLineContainerStyle:_,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:R,deleteKeyCode:D,onlyRenderVisibleElements:U,elementsSelectable:X,defaultViewport:B,translateExtent:q,minZoom:ee,maxZoom:L,preventScrolling:$,defaultMarkerColor:M,zoomOnScroll:Y,zoomOnPinch:Q,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:H,zoomOnDoubleClick:P,panOnDrag:N,onPaneClick:G,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:ye,nodeClickDistance:ve,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or,viewport:ue,onViewportChange:ge}){return Uv(e),Uv(n),TM(),vM(r),wM(ue),b.jsx(GA,{onPaneClick:G,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:ye,deleteKeyCode:D,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:R,elementsSelectable:X,zoomOnScroll:Y,zoomOnPinch:Q,zoomOnDoubleClick:P,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:H,panOnDrag:N,defaultViewport:B,translateExtent:q,minZoom:ee,maxZoom:L,onSelectionContextMenu:p,preventScrolling:$,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,onViewportChange:ge,isControlledViewport:!!ue,children:b.jsxs(xM,{children:[b.jsx(gM,{edgeTypes:n,onEdgeClick:a,onEdgeDoubleClick:u,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,onlyRenderVisibleElements:U,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,defaultMarkerColor:M,noPanClassName:Sn,disableKeyboardA11y:jn,rfId:Or}),b.jsx(kM,{style:k,type:w,component:S,containerStyle:_}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(JA,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:s,onNodeMouseEnter:f,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:U,noPanClassName:Sn,noDragClassName:It,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}RS.displayName="GraphView";const zM=V.memo(RS),Iv=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:d=.5,maxZoom:h=2,nodeOrigin:m,nodeExtent:p,zIndexMode:y="basic"}={})=>{const v=new Map,w=new Map,k=new Map,S=new Map,_=l??n??[],T=r??e??[],E=m??[0,0],z=p??jo;Qw(k,S,_);const I=jp(T,v,w,{nodeOrigin:E,nodeExtent:z,zIndexMode:y});let A=[0,0,1];if(u&&a&&s){const R=Yo(v,{filter:B=>!!((B.width||B.initialWidth)&&(B.height||B.initialHeight))}),{x:D,y:U,zoom:X}=am(R,a,s,d,h,(f==null?void 0:f.padding)??.1);A=[D,U,X]}return{rfId:"1",width:a??0,height:s??0,transform:A,nodes:T,nodesInitialized:I,nodeLookup:v,parentLookup:w,edges:_,edgeLookup:S,connectionLookup:k,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:r!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:d,maxZoom:h,translateExtent:jo,nodeExtent:z,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ra.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:E,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:f,fitViewResolver:null,connection:{...jw},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:GT,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Mw,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},AM=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y})=>Xz((v,w)=>{async function k(){const{nodeLookup:S,panZoom:_,fitViewOptions:T,fitViewResolver:E,width:z,height:I,minZoom:A,maxZoom:R}=w();_&&(await IT({nodes:S,width:z,height:I,panZoom:_,minZoom:A,maxZoom:R},T),E==null||E.resolve(!0),v({fitViewResolver:null}))}return{...Iv({nodes:e,edges:n,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,defaultNodes:r,defaultEdges:l,zIndexMode:y}),setNodes:S=>{const{nodeLookup:_,parentLookup:T,nodeOrigin:E,elevateNodesOnSelect:z,fitViewQueued:I,zIndexMode:A}=w(),R=jp(S,_,T,{nodeOrigin:E,nodeExtent:p,elevateNodesOnSelect:z,checkEquality:!0,zIndexMode:A});I&&R?(k(),v({nodes:S,nodesInitialized:R,fitViewQueued:!1,fitViewOptions:void 0})):v({nodes:S,nodesInitialized:R})},setEdges:S=>{const{connectionLookup:_,edgeLookup:T}=w();Qw(_,T,S),v({edges:S})},setDefaultNodesAndEdges:(S,_)=>{if(S){const{setNodes:T}=w();T(S),v({hasDefaultNodes:!0})}if(_){const{setEdges:T}=w();T(_),v({hasDefaultEdges:!0})}},updateNodeInternals:S=>{const{triggerNodeChanges:_,nodeLookup:T,parentLookup:E,domNode:z,nodeOrigin:I,nodeExtent:A,debug:R,fitViewQueued:D,zIndexMode:U}=w(),{changes:X,updatedInternals:B}=fz(S,T,E,z,I,A,U);B&&(oz(T,E,{nodeOrigin:I,nodeExtent:A,zIndexMode:U}),D?(k(),v({fitViewQueued:!1,fitViewOptions:void 0})):v({}),(X==null?void 0:X.length)>0&&(R&&console.log("React Flow: trigger node changes",X),_==null||_(X)))},updateNodePositions:(S,_=!1)=>{const T=[];let E=[];const{nodeLookup:z,triggerNodeChanges:I,connection:A,updateConnection:R,onNodesChangeMiddlewareMap:D}=w();for(const[U,X]of S){const B=z.get(U),q=!!(B!=null&&B.expandParent&&(B!=null&&B.parentId)&&(X!=null&&X.position)),ee={id:U,type:"position",position:q?{x:Math.max(0,X.position.x),y:Math.max(0,X.position.y)}:X.position,dragging:_};if(B&&A.inProgress&&A.fromNode.id===B.id){const L=Zi(B,A.fromHandle,be.Left,!0);R({...A,from:L})}q&&B.parentId&&T.push({id:U,parentId:B.parentId,rect:{...X.internals.positionAbsolute,width:X.measured.width??0,height:X.measured.height??0}}),E.push(ee)}if(T.length>0){const{parentLookup:U,nodeOrigin:X}=w(),B=hm(T,z,U,X);E.push(...B)}for(const U of D.values())E=U(E);I(E)},triggerNodeChanges:S=>{const{onNodesChange:_,setNodes:T,nodes:E,hasDefaultNodes:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=cS(S,E);T(A)}I&&console.log("React Flow: trigger node changes",S),_==null||_(S)}},triggerEdgeChanges:S=>{const{onEdgesChange:_,setEdges:T,edges:E,hasDefaultEdges:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=fS(S,E);T(A)}I&&console.log("React Flow: trigger edge changes",S),_==null||_(S)}},addSelectedNodes:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(R=>qi(R,!0));z(A);return}z(Fl(E,new Set([...S]),!0)),I(Fl(T))},addSelectedEdges:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(R=>qi(R,!0));I(A);return}I(Fl(T,new Set([...S]))),z(Fl(E,new Set,!0))},unselectNodesAndEdges:({nodes:S,edges:_}={})=>{const{edges:T,nodes:E,nodeLookup:z,triggerNodeChanges:I,triggerEdgeChanges:A}=w(),R=S||E,D=_||T,U=[];for(const B of R){if(!B.selected)continue;const q=z.get(B.id);q&&(q.selected=!1),U.push(qi(B.id,!1))}const X=[];for(const B of D)B.selected&&X.push(qi(B.id,!1));I(U),A(X)},setMinZoom:S=>{const{panZoom:_,maxZoom:T}=w();_==null||_.setScaleExtent([S,T]),v({minZoom:S})},setMaxZoom:S=>{const{panZoom:_,minZoom:T}=w();_==null||_.setScaleExtent([T,S]),v({maxZoom:S})},setTranslateExtent:S=>{var _;(_=w().panZoom)==null||_.setTranslateExtent(S),v({translateExtent:S})},resetSelectedElements:()=>{const{edges:S,nodes:_,triggerNodeChanges:T,triggerEdgeChanges:E,elementsSelectable:z}=w();if(!z)return;const I=_.reduce((R,D)=>D.selected?[...R,qi(D.id,!1)]:R,[]),A=S.reduce((R,D)=>D.selected?[...R,qi(D.id,!1)]:R,[]);T(I),E(A)},setNodeExtent:S=>{const{nodes:_,nodeLookup:T,parentLookup:E,nodeOrigin:z,elevateNodesOnSelect:I,nodeExtent:A,zIndexMode:R}=w();S[0][0]===A[0][0]&&S[0][1]===A[0][1]&&S[1][0]===A[1][0]&&S[1][1]===A[1][1]||(jp(_,T,E,{nodeOrigin:z,nodeExtent:S,elevateNodesOnSelect:I,checkEquality:!1,zIndexMode:R}),v({nodeExtent:S}))},panBy:S=>{const{transform:_,width:T,height:E,panZoom:z,translateExtent:I}=w();return dz({delta:S,panZoom:z,transform:_,translateExtent:I,width:T,height:E})},setCenter:async(S,_,T)=>{const{width:E,height:z,maxZoom:I,panZoom:A}=w();if(!A)return Promise.resolve(!1);const R=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:I;return await A.setViewport({x:E/2-S*R,y:z/2-_*R,zoom:R},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{v({connection:{...jw}})},updateConnection:S=>{v({connection:S})},reset:()=>v({...Iv()})}},Object.is);function MM({initialNodes:e,initialEdges:n,defaultNodes:r,defaultEdges:l,initialWidth:a,initialHeight:s,initialMinZoom:u,initialMaxZoom:f,initialFitViewOptions:d,fitView:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y,children:v}){const[w]=V.useState(()=>AM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:h,minZoom:u,maxZoom:f,fitViewOptions:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y}));return b.jsx(Qz,{value:w,children:b.jsx(xA,{children:v})})}function jM({children:e,nodes:n,edges:r,defaultNodes:l,defaultEdges:a,width:s,height:u,fitView:f,fitViewOptions:d,minZoom:h,maxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v}){return V.useContext(bc)?b.jsx(b.Fragment,{children:e}):b.jsx(MM,{initialNodes:n,initialEdges:r,defaultNodes:l,defaultEdges:a,initialWidth:s,initialHeight:u,fitView:f,initialFitViewOptions:d,initialMinZoom:h,initialMaxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v,children:e})}const OM={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function DM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,className:a,nodeTypes:s,edgeTypes:u,onNodeClick:f,onEdgeClick:d,onInit:h,onMove:m,onMoveStart:p,onMoveEnd:y,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,onNodeDragStart:R,onNodeDrag:D,onNodeDragStop:U,onNodesDelete:X,onEdgesDelete:B,onDelete:q,onSelectionChange:ee,onSelectionDragStart:L,onSelectionDrag:$,onSelectionDragStop:M,onSelectionContextMenu:Y,onSelectionStart:Q,onSelectionEnd:K,onBeforeDelete:j,connectionMode:H,connectionLineType:P=pi.Bezier,connectionLineStyle:N,connectionLineComponent:G,connectionLineContainerStyle:F,deleteKeyCode:J="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Oo.Full,panActivationKeyCode:ye="Space",multiSelectionKeyCode:ve=Ro()?"Meta":"Control",zoomActivationKeyCode:xe=Ro()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Ce,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,nodeOrigin:Rt=sS,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt=!0,defaultViewport:Or=sA,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=jo,preventScrolling:Re=!0,nodeExtent:Ye,defaultMarkerColor:Xt="#b1b1b7",zoomOnScroll:On=!0,zoomOnPinch:Lt=!0,panOnScroll:xt=!1,panOnScrollSpeed:Vt=.5,panOnScrollMode:Je=$i.Free,zoomOnDoubleClick:Pn=!0,panOnDrag:un=!0,onPaneClick:Cc,onPaneMouseEnter:tl,onPaneMouseMove:nl,onPaneMouseLeave:rl,onPaneScroll:lr,onPaneContextMenu:il,paneClickDistance:yi=1,nodeClickDistance:Tc=0,children:Ko,onReconnect:ca,onReconnectStart:xi,onReconnectEnd:zc,onEdgeContextMenu:Jo,onEdgeDoubleClick:Wo,onEdgeMouseEnter:es,onEdgeMouseMove:fa,onEdgeMouseLeave:da,reconnectRadius:ts=10,onNodesChange:ns,onEdgesChange:Xn,noDragClassName:jt="nodrag",noWheelClassName:Gt="nowheel",noPanClassName:ar="nopan",fitView:ll,fitViewOptions:rs,connectOnClick:Ac,attributionPosition:is,proOptions:vi,defaultEdgeOptions:ha,elevateNodesOnSelect:Dr=!0,elevateEdgesOnSelect:Rr=!1,disableKeyboardA11y:Lr=!1,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:ls,connectionRadius:as,isValidConnection:or,onError:Br,style:Mc,id:pa,nodeDragThreshold:os,connectionDragThreshold:jc,viewport:al,onViewportChange:ol,width:Dn,height:Zt,colorMode:ss="light",debug:Oc,onScroll:qr,ariaLabelConfig:us,zIndexMode:bi="basic",...Dc},Kt){const wi=pa||"1",cs=dA(ss),ma=V.useCallback(sr=>{sr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),qr==null||qr(sr)},[qr]);return b.jsx("div",{"data-testid":"rf__wrapper",...Dc,onScroll:ma,style:{...Mc,...OM},ref:Kt,className:zt(["react-flow",a,cs]),id:pa,role:"application",children:b.jsxs(jM,{nodes:e,edges:n,width:Dn,height:Zt,fitView:ll,fitViewOptions:rs,minZoom:ue,maxZoom:ge,nodeOrigin:Rt,nodeExtent:Ye,zIndexMode:bi,children:[b.jsx(zM,{onInit:h,onNodeClick:f,onEdgeClick:d,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,nodeTypes:s,edgeTypes:u,connectionLineType:P,connectionLineStyle:N,connectionLineComponent:G,connectionLineContainerStyle:F,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:J,multiSelectionKeyCode:ve,panActivationKeyCode:ye,zoomActivationKeyCode:xe,onlyRenderVisibleElements:Me,defaultViewport:Or,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:Re,zoomOnScroll:On,zoomOnPinch:Lt,zoomOnDoubleClick:Pn,panOnScroll:xt,panOnScrollSpeed:Vt,panOnScrollMode:Je,panOnDrag:un,onPaneClick:Cc,onPaneMouseEnter:tl,onPaneMouseMove:nl,onPaneMouseLeave:rl,onPaneScroll:lr,onPaneContextMenu:il,paneClickDistance:yi,nodeClickDistance:Tc,onSelectionContextMenu:Y,onSelectionStart:Q,onSelectionEnd:K,onReconnect:ca,onReconnectStart:xi,onReconnectEnd:zc,onEdgeContextMenu:Jo,onEdgeDoubleClick:Wo,onEdgeMouseEnter:es,onEdgeMouseMove:fa,onEdgeMouseLeave:da,reconnectRadius:ts,defaultMarkerColor:Xt,noDragClassName:jt,noWheelClassName:Gt,noPanClassName:ar,rfId:wi,disableKeyboardA11y:Lr,nodeExtent:Ye,viewport:al,onViewportChange:ol}),b.jsx(fA,{nodes:e,edges:n,defaultNodes:r,defaultEdges:l,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt,elevateNodesOnSelect:Dr,elevateEdgesOnSelect:Rr,minZoom:ue,maxZoom:ge,nodeExtent:Ye,onNodesChange:ns,onEdgesChange:Xn,snapToGrid:pe,snapGrid:_e,connectionMode:H,translateExtent:Ne,connectOnClick:Ac,defaultEdgeOptions:ha,fitView:ll,fitViewOptions:rs,onNodesDelete:X,onEdgesDelete:B,onDelete:q,onNodeDragStart:R,onNodeDrag:D,onNodeDragStop:U,onSelectionDrag:$,onSelectionDragStart:L,onSelectionDragStop:M,onMove:m,onMoveStart:p,onMoveEnd:y,noPanClassName:ar,nodeOrigin:Rt,rfId:wi,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:ls,onError:Br,connectionRadius:as,isValidConnection:or,selectNodesOnDrag:Ce,nodeDragThreshold:os,connectionDragThreshold:jc,onBeforeDelete:j,debug:Oc,ariaLabelConfig:us,zIndexMode:bi}),b.jsx(oA,{onSelectionChange:ee}),Ko,b.jsx(nA,{proOptions:vi,position:is}),b.jsx(tA,{rfId:wi,disableKeyboardA11y:Lr})]})})}var RM=dS(DM);const LM=e=>{var n;return(n=e.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function HM({children:e}){const n=Ge(LM);return n?Fz.createPortal(e,n):null}function BM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>cS(a,s)),[]);return[n,r,l]}function qM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>fS(a,s)),[]);return[n,r,l]}function UM({dimensions:e,lineWidth:n,variant:r,className:l}){return b.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:zt(["react-flow__background-pattern",r,l])})}function IM({radius:e,className:n}){return b.jsx("circle",{cx:e,cy:e,r:e,className:zt(["react-flow__background-pattern","dots",n])})}var zr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(zr||(zr={}));const VM={[zr.Dots]:1,[zr.Lines]:1,[zr.Cross]:6},GM=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function LS({id:e,variant:n=zr.Dots,gap:r=20,size:l,lineWidth:a=1,offset:s=0,color:u,bgColor:f,style:d,className:h,patternClassName:m}){const p=V.useRef(null),{transform:y,patternId:v}=Ge(GM,ht),w=l||VM[n],k=n===zr.Dots,S=n===zr.Cross,_=Array.isArray(r)?r:[r,r],T=[_[0]*y[2]||1,_[1]*y[2]||1],E=w*y[2],z=Array.isArray(s)?s:[s,s],I=S?[E,E]:T,A=[z[0]*y[2]||1+I[0]/2,z[1]*y[2]||1+I[1]/2],R=`${v}${e||""}`;return b.jsxs("svg",{className:zt(["react-flow__background",h]),style:{...d,...Sc,"--xy-background-color-props":f,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[b.jsx("pattern",{id:R,x:y[0]%T[0],y:y[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${A[0]},-${A[1]})`,children:k?b.jsx(IM,{radius:E/2,className:m}):b.jsx(UM,{dimensions:I,lineWidth:a,variant:n,className:m})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${R})`})]})}LS.displayName="Background";const YM=V.memo(LS);function $M(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function PM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function XM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function FM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function QM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Ou({children:e,className:n,...r}){return b.jsx("button",{type:"button",className:zt(["react-flow__controls-button",n]),...r,children:e})}const ZM=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function HS({style:e,showZoom:n=!0,showFitView:r=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:s,onZoomOut:u,onFitView:f,onInteractiveChange:d,className:h,children:m,position:p="bottom-left",orientation:y="vertical","aria-label":v}){const w=pt(),{isInteractive:k,minZoomReached:S,maxZoomReached:_,ariaLabelConfig:T}=Ge(ZM,ht),{zoomIn:E,zoomOut:z,fitView:I}=Xo(),A=()=>{E(),s==null||s()},R=()=>{z(),u==null||u()},D=()=>{I(a),f==null||f()},U=()=>{w.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),d==null||d(!k)},X=y==="horizontal"?"horizontal":"vertical";return b.jsxs(wc,{className:zt(["react-flow__controls",X,h]),position:p,style:e,"data-testid":"rf__controls","aria-label":v??T["controls.ariaLabel"],children:[n&&b.jsxs(b.Fragment,{children:[b.jsx(Ou,{onClick:A,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:_,children:b.jsx($M,{})}),b.jsx(Ou,{onClick:R,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:S,children:b.jsx(PM,{})})]}),r&&b.jsx(Ou,{className:"react-flow__controls-fitview",onClick:D,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:b.jsx(XM,{})}),l&&b.jsx(Ou,{className:"react-flow__controls-interactive",onClick:U,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:k?b.jsx(QM,{}):b.jsx(FM,{})}),m]})}HS.displayName="Controls";const KM=V.memo(HS);function JM({id:e,x:n,y:r,width:l,height:a,style:s,color:u,strokeColor:f,strokeWidth:d,className:h,borderRadius:m,shapeRendering:p,selected:y,onClick:v}){const{background:w,backgroundColor:k}=s||{},S=u||w||k;return b.jsx("rect",{className:zt(["react-flow__minimap-node",{selected:y},h]),x:n,y:r,rx:m,ry:m,width:l,height:a,style:{fill:S,stroke:f,strokeWidth:d},shapeRendering:p,onClick:v?_=>v(_,e):void 0})}const WM=V.memo(JM),ej=e=>e.nodes.map(n=>n.id),uh=e=>e instanceof Function?e:()=>e;function tj({nodeStrokeColor:e,nodeColor:n,nodeClassName:r="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:s=WM,onClick:u}){const f=Ge(ej,ht),d=uh(n),h=uh(e),m=uh(r),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:f.map(y=>b.jsx(rj,{id:y,nodeColorFunc:d,nodeStrokeColorFunc:h,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:s,onClick:u,shapeRendering:p},y))})}function nj({id:e,nodeColorFunc:n,nodeStrokeColorFunc:r,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:u,NodeComponent:f,onClick:d}){const{node:h,x:m,y:p,width:y,height:v}=Ge(w=>{const k=w.nodeLookup.get(e);if(!k)return{node:void 0,x:0,y:0,width:0,height:0};const S=k.internals.userNode,{x:_,y:T}=k.internals.positionAbsolute,{width:E,height:z}=jr(S);return{node:S,x:_,y:T,width:E,height:z}},ht);return!h||h.hidden||!qw(h)?null:b.jsx(f,{x:m,y:p,width:y,height:v,style:h.style,selected:!!h.selected,className:l(h),color:n(h),borderRadius:a,strokeColor:r(h),strokeWidth:s,shapeRendering:u,onClick:d,id:h.id})}const rj=V.memo(nj);var ij=V.memo(tj);const lj=200,aj=150,oj=e=>!e.hidden,sj=e=>{const n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:e.nodeLookup.size>0?Bw(Yo(e.nodeLookup,{filter:oj}),n):n,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},uj="react-flow__minimap-desc";function BS({style:e,className:n,nodeStrokeColor:r,nodeColor:l,nodeClassName:a="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:f,bgColor:d,maskColor:h,maskStrokeColor:m,maskStrokeWidth:p,position:y="bottom-right",onClick:v,onNodeClick:w,pannable:k=!1,zoomable:S=!1,ariaLabel:_,inversePan:T,zoomStep:E=1,offsetScale:z=5}){const I=pt(),A=V.useRef(null),{boundingRect:R,viewBB:D,rfId:U,panZoom:X,translateExtent:B,flowWidth:q,flowHeight:ee,ariaLabelConfig:L}=Ge(sj,ht),$=(e==null?void 0:e.width)??lj,M=(e==null?void 0:e.height)??aj,Y=R.width/$,Q=R.height/M,K=Math.max(Y,Q),j=K*$,H=K*M,P=z*K,N=R.x-(j-R.width)/2-P,G=R.y-(H-R.height)/2-P,F=j+P*2,J=H+P*2,ne=`${uj}-${U}`,re=V.useRef(0),se=V.useRef();re.current=K,V.useEffect(()=>{if(A.current&&X)return se.current=wz({domNode:A.current,panZoom:X,getTransform:()=>I.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[X]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:B,width:q,height:ee,inversePan:T,pannable:k,zoomStep:E,zoomable:S})},[k,S,T,E,B,q,ee]);const ye=v?pe=>{var Ce;const[_e,Me]=((Ce=se.current)==null?void 0:Ce.pointer(pe))||[0,0];v(pe,{x:_e,y:Me})}:void 0,ve=w?V.useCallback((pe,_e)=>{const Me=I.getState().nodeLookup.get(_e).internals.userNode;w(pe,Me)},[]):void 0,xe=_??L["minimap.ariaLabel"];return b.jsx(wc,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*K:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:zt(["react-flow__minimap",n]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:$,height:M,viewBox:`${N} ${G} ${F} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:A,onClick:ye,children:[xe&&b.jsx("title",{id:ne,children:xe}),b.jsx(ij,{onClick:ve,nodeColor:l,nodeStrokeColor:r,nodeBorderRadius:s,nodeClassName:a,nodeStrokeWidth:u,nodeComponent:f}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${N-P},${G-P}h${F+P*2}v${J+P*2}h${-F-P*2}z + M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}BS.displayName="MiniMap";const cj=V.memo(BS),fj=e=>n=>e?`${Math.max(1/n.transform[2],1)}`:void 0,dj={[oa.Line]:"right",[oa.Handle]:"bottom-right"};function hj({nodeId:e,position:n,variant:r=oa.Handle,className:l,style:a=void 0,children:s,color:u,minWidth:f=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:y,autoScale:v=!0,shouldResize:w,onResizeStart:k,onResize:S,onResizeEnd:_}){const T=gS(),E=typeof e=="string"?e:T,z=pt(),I=V.useRef(null),A=r===oa.Handle,R=Ge(V.useCallback(fj(A&&v),[A,v]),ht),D=V.useRef(null),U=n??dj[r];V.useEffect(()=>{if(!(!I.current||!E))return D.current||(D.current=Rz({domNode:I.current,nodeId:E,getStoreItems:()=>{const{nodeLookup:B,transform:q,snapGrid:ee,snapToGrid:L,nodeOrigin:$,domNode:M}=z.getState();return{nodeLookup:B,transform:q,snapGrid:ee,snapToGrid:L,nodeOrigin:$,paneDomNode:M}},onChange:(B,q)=>{const{triggerNodeChanges:ee,nodeLookup:L,parentLookup:$,nodeOrigin:M}=z.getState(),Y=[],Q={x:B.x,y:B.y},K=L.get(E);if(K&&K.expandParent&&K.parentId){const j=K.origin??M,H=B.width??K.measured.width??0,P=B.height??K.measured.height??0,N={id:K.id,parentId:K.parentId,rect:{width:H,height:P,...Uw({x:B.x??K.position.x,y:B.y??K.position.y},{width:H,height:P},K.parentId,L,j)}},G=hm([N],L,$,M);Y.push(...G),Q.x=B.x?Math.max(j[0]*H,B.x):void 0,Q.y=B.y?Math.max(j[1]*P,B.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const j={id:E,type:"position",position:{...Q}};Y.push(j)}if(B.width!==void 0&&B.height!==void 0){const H={id:E,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:B.width,height:B.height}};Y.push(H)}for(const j of q){const H={...j,type:"position"};Y.push(H)}ee(Y)},onEnd:({width:B,height:q})=>{const ee={id:E,type:"dimensions",resizing:!1,dimensions:{width:B,height:q}};z.getState().triggerNodeChanges([ee])}})),D.current.update({controlPosition:U,boundaries:{minWidth:f,minHeight:d,maxWidth:h,maxHeight:m},keepAspectRatio:p,resizeDirection:y,onResizeStart:k,onResize:S,onResizeEnd:_,shouldResize:w}),()=>{var B;(B=D.current)==null||B.destroy()}},[U,f,d,h,m,p,k,S,_,w]);const X=U.split("-");return b.jsx("div",{className:zt(["react-flow__resize-control","nodrag",...X,r,l]),ref:I,style:{...a,scale:R,...u&&{[A?"backgroundColor":"borderColor"]:u}},children:s})}V.memo(hj);var ch,Vv;function mm(){if(Vv)return ch;Vv=1;var e="\0",n="\0",r="";class l{constructor(m){kt(this,"_isDirected",!0);kt(this,"_isMultigraph",!1);kt(this,"_isCompound",!1);kt(this,"_label");kt(this,"_defaultNodeLabelFn",()=>{});kt(this,"_defaultEdgeLabelFn",()=>{});kt(this,"_nodes",{});kt(this,"_in",{});kt(this,"_preds",{});kt(this,"_out",{});kt(this,"_sucs",{});kt(this,"_edgeObjs",{});kt(this,"_edgeLabels",{});kt(this,"_nodeCount",0);kt(this,"_edgeCount",0);kt(this,"_parent");kt(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var y=arguments,v=this;return m.forEach(function(w){y.length>1?v.setNode(w,p):v.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=n,this._children[m]={},this._children[n][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var y=v=>p.removeEdge(p._edgeObjs[v]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(v){p.setParent(v)}),delete this._children[m]),Object.keys(this._in[m]).forEach(y),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(y),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=n;else{p+="";for(var y=p;y!==void 0;y=this.parent(y))if(y===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==n)return p}}children(m=n){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===n)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const v=new Set(p);for(var y of this.successors(m))v.add(y);return Array.from(v.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var y=this;Object.entries(this._nodes).forEach(function([k,S]){m(k)&&p.setNode(k,S)}),Object.values(this._edgeObjs).forEach(function(k){p.hasNode(k.v)&&p.hasNode(k.w)&&p.setEdge(k,y.edge(k))});var v={};function w(k){var S=y.parent(k);return S===void 0||p.hasNode(S)?(v[k]=S,S):S in v?v[S]:w(S)}return this._isCompound&&p.nodes().forEach(k=>p.setParent(k,w(k))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var y=this,v=arguments;return m.reduce(function(w,k){return v.length>1?y.setEdge(w,k,p):y.setEdge(w,k),k}),this}setEdge(){var m,p,y,v,w=!1,k=arguments[0];typeof k=="object"&&k!==null&&"v"in k?(m=k.v,p=k.w,y=k.name,arguments.length===2&&(v=arguments[1],w=!0)):(m=k,p=arguments[1],y=arguments[3],arguments.length>2&&(v=arguments[2],w=!0)),m=""+m,p=""+p,y!==void 0&&(y=""+y);var S=u(this._isDirected,m,p,y);if(Object.hasOwn(this._edgeLabels,S))return w&&(this._edgeLabels[S]=v),this;if(y!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[S]=w?v:this._defaultEdgeLabelFn(m,p,y);var _=f(this._isDirected,m,p,y);return m=_.v,p=_.w,Object.freeze(_),this._edgeObjs[S]=_,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][S]=_,this._out[m][S]=_,this._edgeCount++,this}edge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return this._edgeLabels[v]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return Object.hasOwn(this._edgeLabels,v)}removeEdge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y),w=this._edgeObjs[v];return w&&(m=w.v,p=w.w,delete this._edgeLabels[v],delete this._edgeObjs[v],s(this._preds[p],m),s(this._sucs[m],p),delete this._in[p][v],delete this._out[m][v],this._edgeCount--),this}inEdges(m,p){var y=this._in[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.v===p):v}}outEdges(m,p){var y=this._out[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.w===p):v}}nodeEdges(m,p){var y=this.inEdges(m,p);if(y)return y.concat(this.outEdges(m,p))}}function a(h,m){h[m]?h[m]++:h[m]=1}function s(h,m){--h[m]||delete h[m]}function u(h,m,p,y){var v=""+m,w=""+p;if(!h&&v>w){var k=v;v=w,w=k}return v+r+w+r+(y===void 0?e:y)}function f(h,m,p,y){var v=""+m,w=""+p;if(!h&&v>w){var k=v;v=w,w=k}var S={v,w};return y&&(S.name=y),S}function d(h,m){return u(h,m.v,m.w,m.name)}return ch=l,ch}var fh,Gv;function pj(){return Gv||(Gv=1,fh="2.2.4"),fh}var dh,Yv;function mj(){return Yv||(Yv=1,dh={Graph:mm(),version:pj()}),dh}var hh,$v;function gj(){if($v)return hh;$v=1;var e=mm();hh={write:n,read:a};function n(s){var u={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:r(s),edges:l(s)};return s.graph()!==void 0&&(u.value=structuredClone(s.graph())),u}function r(s){return s.nodes().map(function(u){var f=s.node(u),d=s.parent(u),h={v:u};return f!==void 0&&(h.value=f),d!==void 0&&(h.parent=d),h})}function l(s){return s.edges().map(function(u){var f=s.edge(u),d={v:u.v,w:u.w};return u.name!==void 0&&(d.name=u.name),f!==void 0&&(d.value=f),d})}function a(s){var u=new e(s.options).setGraph(s.value);return s.nodes.forEach(function(f){u.setNode(f.v,f.value),f.parent&&u.setParent(f.v,f.parent)}),s.edges.forEach(function(f){u.setEdge({v:f.v,w:f.w,name:f.name},f.value)}),u}return hh}var ph,Pv;function yj(){if(Pv)return ph;Pv=1,ph=e;function e(n){var r={},l=[],a;function s(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),n.successors(u).forEach(s),n.predecessors(u).forEach(s))}return n.nodes().forEach(function(u){a=[],s(u),a.length&&l.push(a)}),l}return ph}var mh,Xv;function qS(){if(Xv)return mh;Xv=1;class e{constructor(){kt(this,"_arr",[]);kt(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var s=this._arr,u=s.length;return a[r]=u,s.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,s=a+1,u=r;a>1,!(l[s].priority1;function r(a,s,u,f){return l(a,String(s),u||n,f||function(d){return a.outEdges(d)})}function l(a,s,u,f){var d={},h=new e,m,p,y=function(v){var w=v.v!==m?v.v:v.w,k=d[w],S=u(v),_=p.distance+S;if(S<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+S);_0&&(m=h.removeMin(),p=d[m],p.distance!==Number.POSITIVE_INFINITY);)f(m).forEach(y);return d}return gh}var yh,Qv;function xj(){if(Qv)return yh;Qv=1;var e=US();yh=n;function n(r,l,a){return r.nodes().reduce(function(s,u){return s[u]=e(r,u,l,a),s},{})}return yh}var xh,Zv;function IS(){if(Zv)return xh;Zv=1,xh=e;function e(n){var r=0,l=[],a={},s=[];function u(f){var d=a[f]={onStack:!0,lowlink:r,index:r++};if(l.push(f),n.successors(f).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(d.lowlink=Math.min(d.lowlink,a[p].index)):(u(p),d.lowlink=Math.min(d.lowlink,a[p].lowlink))}),d.lowlink===d.index){var h=[],m;do m=l.pop(),a[m].onStack=!1,h.push(m);while(f!==m);s.push(h)}}return n.nodes().forEach(function(f){Object.hasOwn(a,f)||u(f)}),s}return xh}var vh,Kv;function vj(){if(Kv)return vh;Kv=1;var e=IS();vh=n;function n(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return vh}var bh,Jv;function bj(){if(Jv)return bh;Jv=1,bh=n;var e=()=>1;function n(l,a,s){return r(l,a||e,s||function(u){return l.outEdges(u)})}function r(l,a,s){var u={},f=l.nodes();return f.forEach(function(d){u[d]={},u[d][d]={distance:0},f.forEach(function(h){d!==h&&(u[d][h]={distance:Number.POSITIVE_INFINITY})}),s(d).forEach(function(h){var m=h.v===d?h.w:h.v,p=a(h);u[d][m]={distance:p,predecessor:d}})}),f.forEach(function(d){var h=u[d];f.forEach(function(m){var p=u[m];f.forEach(function(y){var v=p[d],w=h[y],k=p[y],S=v.distance+w.distance;Sa.successors(p):p=>a.neighbors(p),d=u==="post"?n:r,h=[],m={};return s.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);d(p,f,m,h)}),h}function n(a,s,u,f){for(var d=[[a,!1]];d.length>0;){var h=d.pop();h[1]?f.push(h[0]):Object.hasOwn(u,h[0])||(u[h[0]]=!0,d.push([h[0],!0]),l(s(h[0]),m=>d.push([m,!1])))}}function r(a,s,u,f){for(var d=[a];d.length>0;){var h=d.pop();Object.hasOwn(u,h)||(u[h]=!0,f.push(h),l(s(h),m=>d.push(m)))}}function l(a,s){for(var u=a.length;u--;)s(a[u],u,a);return a}return _h}var Eh,n1;function Sj(){if(n1)return Eh;n1=1;var e=GS();Eh=n;function n(r,l){return e(r,l,"post")}return Eh}var Nh,r1;function _j(){if(r1)return Nh;r1=1;var e=GS();Nh=n;function n(r,l){return e(r,l,"pre")}return Nh}var kh,i1;function Ej(){if(i1)return kh;i1=1;var e=mm(),n=qS();kh=r;function r(l,a){var s=new e,u={},f=new n,d;function h(p){var y=p.v===d?p.w:p.v,v=f.priority(y);if(v!==void 0){var w=a(p);w0;){if(d=f.removeMin(),Object.hasOwn(u,d))s.setEdge(d,u[d]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(d).forEach(h)}return s}return kh}var Ch,l1;function Nj(){return l1||(l1=1,Ch={components:yj(),dijkstra:US(),dijkstraAll:xj(),findCycles:vj(),floydWarshall:bj(),isAcyclic:wj(),postorder:Sj(),preorder:_j(),prim:Ej(),tarjan:IS(),topsort:VS()}),Ch}var Th,a1;function Yn(){if(a1)return Th;a1=1;var e=mj();return Th={Graph:e.Graph,json:gj(),alg:Nj(),version:e.version},Th}var zh,o1;function kj(){if(o1)return zh;o1=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,s=a._prev;if(s!==a)return n(s),s}enqueue(a){let s=this._sentinel;a._prev&&a._next&&n(a),a._next=s._next,s._next._prev=a,s._next=a,a._prev=s}toString(){let a=[],s=this._sentinel,u=s._prev;for(;u!==s;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function n(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return zh=e,zh}var Ah,s1;function Cj(){if(s1)return Ah;s1=1;let e=Yn().Graph,n=kj();Ah=l;let r=()=>1;function l(h,m){if(h.nodeCount()<=1)return[];let p=u(h,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(v=>h.outEdges(v.v,v.w))}function a(h,m,p){let y=[],v=m[m.length-1],w=m[0],k;for(;h.nodeCount();){for(;k=w.dequeue();)s(h,m,p,k);for(;k=v.dequeue();)s(h,m,p,k);if(h.nodeCount()){for(let S=m.length-2;S>0;--S)if(k=m[S].dequeue(),k){y=y.concat(s(h,m,p,k,!0));break}}}return y}function s(h,m,p,y,v){let w=v?[]:void 0;return h.inEdges(y.v).forEach(k=>{let S=h.edge(k),_=h.node(k.v);v&&w.push({v:k.v,w:k.w}),_.out-=S,f(m,p,_)}),h.outEdges(y.v).forEach(k=>{let S=h.edge(k),_=k.w,T=h.node(_);T.in-=S,f(m,p,T)}),h.removeNode(y.v),w}function u(h,m){let p=new e,y=0,v=0;h.nodes().forEach(S=>{p.setNode(S,{v:S,in:0,out:0})}),h.edges().forEach(S=>{let _=p.edge(S.v,S.w)||0,T=m(S),E=_+T;p.setEdge(S.v,S.w,E),v=Math.max(v,p.node(S.v).out+=T),y=Math.max(y,p.node(S.w).in+=T)});let w=d(v+y+3).map(()=>new n),k=y+1;return p.nodes().forEach(S=>{f(w,k,p.node(S))}),{graph:p,buckets:w,zeroIdx:k}}function f(h,m,p){p.out?p.in?h[p.out-p.in+m].enqueue(p):h[h.length-1].enqueue(p):h[0].enqueue(p)}function d(h){const m=[];for(let p=0;pU.setNode(X,D.node(X))),D.edges().forEach(X=>{let B=U.edge(X.v,X.w)||{weight:0,minlen:1},q=D.edge(X);U.setEdge(X.v,X.w,{weight:B.weight+q.weight,minlen:Math.max(B.minlen,q.minlen)})}),U}function l(D){let U=new e({multigraph:D.isMultigraph()}).setGraph(D.graph());return D.nodes().forEach(X=>{D.children(X).length||U.setNode(X,D.node(X))}),D.edges().forEach(X=>{U.setEdge(X,D.edge(X))}),U}function a(D){let U=D.nodes().map(X=>{let B={};return D.outEdges(X).forEach(q=>{B[q.w]=(B[q.w]||0)+D.edge(q).weight}),B});return R(D.nodes(),U)}function s(D){let U=D.nodes().map(X=>{let B={};return D.inEdges(X).forEach(q=>{B[q.v]=(B[q.v]||0)+D.edge(q).weight}),B});return R(D.nodes(),U)}function u(D,U){let X=D.x,B=D.y,q=U.x-X,ee=U.y-B,L=D.width/2,$=D.height/2;if(!q&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let M,Y;return Math.abs(ee)*L>Math.abs(q)*$?(ee<0&&($=-$),M=$*q/ee,Y=$):(q<0&&(L=-L),M=L,Y=L*ee/q),{x:X+M,y:B+Y}}function f(D){let U=z(w(D)+1).map(()=>[]);return D.nodes().forEach(X=>{let B=D.node(X),q=B.rank;q!==void 0&&(U[q][B.order]=X)}),U}function d(D){let U=D.nodes().map(B=>{let q=D.node(B).rank;return q===void 0?Number.MAX_VALUE:q}),X=v(Math.min,U);D.nodes().forEach(B=>{let q=D.node(B);Object.hasOwn(q,"rank")&&(q.rank-=X)})}function h(D){let U=D.nodes().map(L=>D.node(L).rank),X=v(Math.min,U),B=[];D.nodes().forEach(L=>{let $=D.node(L).rank-X;B[$]||(B[$]=[]),B[$].push(L)});let q=0,ee=D.graph().nodeRankFactor;Array.from(B).forEach((L,$)=>{L===void 0&&$%ee!==0?--q:L!==void 0&&q&&L.forEach(M=>D.node(M).rank+=q)})}function m(D,U,X,B){let q={width:0,height:0};return arguments.length>=4&&(q.rank=X,q.order=B),n(D,"border",q,U)}function p(D,U=y){const X=[];for(let B=0;By){const X=p(U);return D.apply(null,X.map(B=>D.apply(null,B)))}else return D.apply(null,U)}function w(D){const X=D.nodes().map(B=>{let q=D.node(B).rank;return q===void 0?Number.MIN_VALUE:q});return v(Math.max,X)}function k(D,U){let X={lhs:[],rhs:[]};return D.forEach(B=>{U(B)?X.lhs.push(B):X.rhs.push(B)}),X}function S(D,U){let X=Date.now();try{return U()}finally{console.log(D+" time: "+(Date.now()-X)+"ms")}}function _(D,U){return U()}let T=0;function E(D){var U=++T;return D+(""+U)}function z(D,U,X=1){U==null&&(U=D,D=0);let B=ee=>eeUB[U]),Object.entries(D).reduce((B,[q,ee])=>(B[q]=X(ee,q),B),{})}function R(D,U){return D.reduce((X,B,q)=>(X[B]=U[q],X),{})}return Mh}var jh,c1;function Tj(){if(c1)return jh;c1=1;let e=Cj(),n=Tt().uniqueId;jh={run:r,undo:a};function r(s){(s.graph().acyclicer==="greedy"?e(s,f(s)):l(s)).forEach(d=>{let h=s.edge(d);s.removeEdge(d),h.forwardName=d.name,h.reversed=!0,s.setEdge(d.w,d.v,h,n("rev"))});function f(d){return h=>d.edge(h).weight}}function l(s){let u=[],f={},d={};function h(m){Object.hasOwn(d,m)||(d[m]=!0,f[m]=!0,s.outEdges(m).forEach(p=>{Object.hasOwn(f,p.w)?u.push(p):h(p.w)}),delete f[m])}return s.nodes().forEach(h),u}function a(s){s.edges().forEach(u=>{let f=s.edge(u);if(f.reversed){s.removeEdge(u);let d=f.forwardName;delete f.reversed,delete f.forwardName,s.setEdge(u.w,u.v,f,d)}})}return jh}var Oh,f1;function zj(){if(f1)return Oh;f1=1;let e=Tt();Oh={run:n,undo:l};function n(a){a.graph().dummyChains=[],a.edges().forEach(s=>r(a,s))}function r(a,s){let u=s.v,f=a.node(u).rank,d=s.w,h=a.node(d).rank,m=s.name,p=a.edge(s),y=p.labelRank;if(h===f+1)return;a.removeEdge(s);let v,w,k;for(k=0,++f;f{let u=a.node(s),f=u.edgeLabel,d;for(a.setEdge(u.edgeObj,f);u.dummy;)d=a.successors(s)[0],a.removeNode(s),f.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(f.x=u.x,f.y=u.y,f.width=u.width,f.height=u.height),s=d,u=a.node(s)})}return Oh}var Dh,d1;function lc(){if(d1)return Dh;d1=1;const{applyWithChunking:e}=Tt();Dh={longestPath:n,slack:r};function n(l){var a={};function s(u){var f=l.node(u);if(Object.hasOwn(a,u))return f.rank;a[u]=!0;let d=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:s(m.w)-l.edge(m).minlen);var h=e(Math.min,d);return h===Number.POSITIVE_INFINITY&&(h=0),f.rank=h}l.sources().forEach(s)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Dh}var Rh,h1;function YS(){if(h1)return Rh;h1=1;var e=Yn().Graph,n=lc().slack;Rh=r;function r(u){var f=new e({directed:!1}),d=u.nodes()[0],h=u.nodeCount();f.setNode(d,{});for(var m,p;l(f,u){var p=m.v,y=h===p?m.w:p;!u.hasNode(y)&&!n(f,m)&&(u.setNode(y,{}),u.setEdge(h,y,{}),d(y))})}return u.nodes().forEach(d),u.nodeCount()}function a(u,f){return f.edges().reduce((h,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=n(f,m)),pf.node(h).rank+=d)}return Rh}var Lh,p1;function Aj(){if(p1)return Lh;p1=1;var e=YS(),n=lc().slack,r=lc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,s=Tt().simplify;Lh=u,u.initLowLimValues=m,u.initCutValues=f,u.calcCutValue=h,u.leaveEdge=y,u.enterEdge=v,u.exchangeEdges=w;function u(T){T=s(T),r(T);var E=e(T);m(E),f(E,T);for(var z,I;z=y(E);)I=v(E,T,z),w(E,T,z,I)}function f(T,E){var z=a(T,T.nodes());z=z.slice(0,z.length-1),z.forEach(I=>d(T,E,I))}function d(T,E,z){var I=T.node(z),A=I.parent;T.edge(z,A).cutvalue=h(T,E,z)}function h(T,E,z){var I=T.node(z),A=I.parent,R=!0,D=E.edge(z,A),U=0;return D||(R=!1,D=E.edge(A,z)),U=D.weight,E.nodeEdges(z).forEach(X=>{var B=X.v===z,q=B?X.w:X.v;if(q!==A){var ee=B===R,L=E.edge(X).weight;if(U+=ee?L:-L,S(T,z,q)){var $=T.edge(z,q).cutvalue;U+=ee?-$:$}}}),U}function m(T,E){arguments.length<2&&(E=T.nodes()[0]),p(T,{},1,E)}function p(T,E,z,I,A){var R=z,D=T.node(I);return E[I]=!0,T.neighbors(I).forEach(U=>{Object.hasOwn(E,U)||(z=p(T,E,z,U,I))}),D.low=R,D.lim=z++,A?D.parent=A:delete D.parent,z}function y(T){return T.edges().find(E=>T.edge(E).cutvalue<0)}function v(T,E,z){var I=z.v,A=z.w;E.hasEdge(I,A)||(I=z.w,A=z.v);var R=T.node(I),D=T.node(A),U=R,X=!1;R.lim>D.lim&&(U=D,X=!0);var B=E.edges().filter(q=>X===_(T,T.node(q.v),U)&&X!==_(T,T.node(q.w),U));return B.reduce((q,ee)=>n(E,ee)!E.node(A).parent),I=l(T,z);I=I.slice(1),I.forEach(A=>{var R=T.node(A).parent,D=E.edge(A,R),U=!1;D||(D=E.edge(R,A),U=!0),E.node(A).rank=E.node(R).rank+(U?D.minlen:-D.minlen)})}function S(T,E,z){return T.hasEdge(E,z)}function _(T,E,z){return z.low<=E.lim&&E.lim<=z.lim}return Lh}var Hh,m1;function Mj(){if(m1)return Hh;m1=1;var e=lc(),n=e.longestPath,r=YS(),l=Aj();Hh=a;function a(d){var h=d.graph().ranker;if(h instanceof Function)return h(d);switch(d.graph().ranker){case"network-simplex":f(d);break;case"tight-tree":u(d);break;case"longest-path":s(d);break;case"none":break;default:f(d)}}var s=n;function u(d){n(d),r(d)}function f(d){l(d)}return Hh}var Bh,g1;function jj(){if(g1)return Bh;g1=1,Bh=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(s=>{let u=l.node(s),f=u.edgeObj,d=n(l,a,f.v,f.w),h=d.path,m=d.lca,p=0,y=h[p],v=!0;for(;s!==f.w;){if(u=l.node(s),v){for(;(y=h[p])!==m&&l.node(y).maxRankh||m>a[p].lim));for(y=p,p=u;(p=l.parent(p))!==y;)d.push(p);return{path:f.concat(d.reverse()),lca:y}}function r(l){let a={},s=0;function u(f){let d=s;l.children(f).forEach(u),a[f]={low:d,lim:s++}}return l.children().forEach(u),a}return Bh}var qh,y1;function Oj(){if(y1)return qh;y1=1;let e=Tt();qh={run:n,cleanup:s};function n(u){let f=e.addDummyNode(u,"root",{},"_root"),d=l(u),h=Object.values(d),m=e.applyWithChunking(Math.max,h)-1,p=2*m+1;u.graph().nestingRoot=f,u.edges().forEach(v=>u.edge(v).minlen*=p);let y=a(u)+1;u.children().forEach(v=>r(u,f,p,y,m,d,v)),u.graph().nodeRankFactor=p}function r(u,f,d,h,m,p,y){let v=u.children(y);if(!v.length){y!==f&&u.setEdge(f,y,{weight:0,minlen:d});return}let w=e.addBorderNode(u,"_bt"),k=e.addBorderNode(u,"_bb"),S=u.node(y);u.setParent(w,y),S.borderTop=w,u.setParent(k,y),S.borderBottom=k,v.forEach(_=>{r(u,f,d,h,m,p,_);let T=u.node(_),E=T.borderTop?T.borderTop:_,z=T.borderBottom?T.borderBottom:_,I=T.borderTop?h:2*h,A=E!==z?1:m-p[y]+1;u.setEdge(w,E,{weight:I,minlen:A,nestingEdge:!0}),u.setEdge(z,k,{weight:I,minlen:A,nestingEdge:!0})}),u.parent(y)||u.setEdge(f,w,{weight:0,minlen:m+p[y]})}function l(u){var f={};function d(h,m){var p=u.children(h);p&&p.length&&p.forEach(y=>d(y,m+1)),f[h]=m}return u.children().forEach(h=>d(h,1)),f}function a(u){return u.edges().reduce((f,d)=>f+u.edge(d).weight,0)}function s(u){var f=u.graph();u.removeNode(f.nestingRoot),delete f.nestingRoot,u.edges().forEach(d=>{var h=u.edge(d);h.nestingEdge&&u.removeEdge(d)})}return qh}var Uh,x1;function Dj(){if(x1)return Uh;x1=1;let e=Tt();Uh=n;function n(l){function a(s){let u=l.children(s),f=l.node(s);if(u.length&&u.forEach(a),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let d=f.minRank,h=f.maxRank+1;dl(d.node(h))),d.edges().forEach(h=>l(d.edge(h)))}function l(d){let h=d.width;d.width=d.height,d.height=h}function a(d){d.nodes().forEach(h=>s(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(s),Object.hasOwn(m,"y")&&s(m)})}function s(d){d.y=-d.y}function u(d){d.nodes().forEach(h=>f(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(f),Object.hasOwn(m,"x")&&f(m)})}function f(d){let h=d.x;d.x=d.y,d.y=h}return Ih}var Vh,b1;function Lj(){if(b1)return Vh;b1=1;let e=Tt();Vh=n;function n(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),s=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,s),f=e.range(u+1).map(()=>[]);function d(m){if(l[m])return;l[m]=!0;let p=r.node(m);f[p.rank].push(m),r.successors(m).forEach(d)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(d),f}return Vh}var Gh,w1;function Hj(){if(w1)return Gh;w1=1;let e=Tt().zipObject;Gh=n;function n(l,a){let s=0;for(let u=1;uv)),f=a.flatMap(y=>l.outEdges(y).map(v=>({pos:u[v.w],weight:l.edge(v).weight})).sort((v,w)=>v.pos-w.pos)),d=1;for(;d{let v=y.pos+d;m[v]+=y.weight;let w=0;for(;v>0;)v%2&&(w+=m[v+1]),v=v-1>>1,m[v]+=y.weight;p+=y.weight*w}),p}return Gh}var Yh,S1;function Bj(){if(S1)return Yh;S1=1,Yh=e;function e(n,r=[]){return r.map(l=>{let a=n.inEdges(l);if(a.length){let s=a.reduce((u,f)=>{let d=n.edge(f),h=n.node(f.v);return{sum:u.sum+d.weight*h.order,weight:u.weight+d.weight}},{sum:0,weight:0});return{v:l,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:l}})}return Yh}var $h,_1;function qj(){if(_1)return $h;_1=1;let e=Tt();$h=n;function n(a,s){let u={};a.forEach((d,h)=>{let m=u[d.v]={indegree:0,in:[],out:[],vs:[d.v],i:h};d.barycenter!==void 0&&(m.barycenter=d.barycenter,m.weight=d.weight)}),s.edges().forEach(d=>{let h=u[d.v],m=u[d.w];h!==void 0&&m!==void 0&&(m.indegree++,h.out.push(u[d.w]))});let f=Object.values(u).filter(d=>!d.indegree);return r(f)}function r(a){let s=[];function u(d){return h=>{h.merged||(h.barycenter===void 0||d.barycenter===void 0||h.barycenter>=d.barycenter)&&l(d,h)}}function f(d){return h=>{h.in.push(d),--h.indegree===0&&a.push(h)}}for(;a.length;){let d=a.pop();s.push(d),d.in.reverse().forEach(u(d)),d.out.forEach(f(d))}return s.filter(d=>!d.merged).map(d=>e.pick(d,["vs","i","barycenter","weight"]))}function l(a,s){let u=0,f=0;a.weight&&(u+=a.barycenter*a.weight,f+=a.weight),s.weight&&(u+=s.barycenter*s.weight,f+=s.weight),a.vs=s.vs.concat(a.vs),a.barycenter=u/f,a.weight=f,a.i=Math.min(s.i,a.i),s.merged=!0}return $h}var Ph,E1;function Uj(){if(E1)return Ph;E1=1;let e=Tt();Ph=n;function n(a,s){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),f=u.lhs,d=u.rhs.sort((w,k)=>k.i-w.i),h=[],m=0,p=0,y=0;f.sort(l(!!s)),y=r(h,d,y),f.forEach(w=>{y+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,y=r(h,d,y)});let v={vs:h.flat(!0)};return p&&(v.barycenter=m/p,v.weight=p),v}function r(a,s,u){let f;for(;s.length&&(f=s[s.length-1]).i<=u;)s.pop(),a.push(f.vs),u++;return u}function l(a){return(s,u)=>s.barycenteru.barycenter?1:a?u.i-s.i:s.i-u.i}return Ph}var Xh,N1;function Ij(){if(N1)return Xh;N1=1;let e=Bj(),n=qj(),r=Uj();Xh=l;function l(u,f,d,h){let m=u.children(f),p=u.node(f),y=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,w={};y&&(m=m.filter(T=>T!==y&&T!==v));let k=e(u,m);k.forEach(T=>{if(u.children(T.v).length){let E=l(u,T.v,d,h);w[T.v]=E,Object.hasOwn(E,"barycenter")&&s(T,E)}});let S=n(k,d);a(S,w);let _=r(S,h);if(y&&(_.vs=[y,_.vs,v].flat(!0),u.predecessors(y).length)){let T=u.node(u.predecessors(y)[0]),E=u.node(u.predecessors(v)[0]);Object.hasOwn(_,"barycenter")||(_.barycenter=0,_.weight=0),_.barycenter=(_.barycenter*_.weight+T.order+E.order)/(_.weight+2),_.weight+=2}return _}function a(u,f){u.forEach(d=>{d.vs=d.vs.flatMap(h=>f[h]?f[h].vs:h)})}function s(u,f){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+f.barycenter*f.weight)/(u.weight+f.weight),u.weight+=f.weight):(u.barycenter=f.barycenter,u.weight=f.weight)}return Xh}var Fh,k1;function Vj(){if(k1)return Fh;k1=1;let e=Yn().Graph,n=Tt();Fh=r;function r(a,s,u,f){f||(f=a.nodes());let d=l(a),h=new e({compound:!0}).setGraph({root:d}).setDefaultNodeLabel(m=>a.node(m));return f.forEach(m=>{let p=a.node(m),y=a.parent(m);(p.rank===s||p.minRank<=s&&s<=p.maxRank)&&(h.setNode(m),h.setParent(m,y||d),a[u](m).forEach(v=>{let w=v.v===m?v.w:v.v,k=h.edge(w,m),S=k!==void 0?k.weight:0;h.setEdge(w,m,{weight:a.edge(v).weight+S})}),Object.hasOwn(p,"minRank")&&h.setNode(m,{borderLeft:p.borderLeft[s],borderRight:p.borderRight[s]}))}),h}function l(a){for(var s;a.hasNode(s=n.uniqueId("_root")););return s}return Fh}var Qh,C1;function Gj(){if(C1)return Qh;C1=1,Qh=e;function e(n,r,l){let a={},s;l.forEach(u=>{let f=n.parent(u),d,h;for(;f;){if(d=n.parent(f),d?(h=a[d],a[d]=f):(h=s,s=f),h&&h!==f){r.setEdge(h,f);return}f=d}})}return Qh}var Zh,T1;function Yj(){if(T1)return Zh;T1=1;let e=Lj(),n=Hj(),r=Ij(),l=Vj(),a=Gj(),s=Yn().Graph,u=Tt();Zh=f;function f(p,y){if(y&&typeof y.customOrder=="function"){y.customOrder(p,f);return}let v=u.maxRank(p),w=d(p,u.range(1,v+1),"inEdges"),k=d(p,u.range(v-1,-1,-1),"outEdges"),S=e(p);if(m(p,S),y&&y.disableOptimalOrderHeuristic)return;let _=Number.POSITIVE_INFINITY,T;for(let E=0,z=0;z<4;++E,++z){h(E%2?w:k,E%4>=2),S=u.buildLayerMatrix(p);let I=n(p,S);I<_&&(z=0,T=Object.assign({},S),_=I)}m(p,T)}function d(p,y,v){const w=new Map,k=(S,_)=>{w.has(S)||w.set(S,[]),w.get(S).push(_)};for(const S of p.nodes()){const _=p.node(S);if(typeof _.rank=="number"&&k(_.rank,S),typeof _.minRank=="number"&&typeof _.maxRank=="number")for(let T=_.minRank;T<=_.maxRank;T++)T!==_.rank&&k(T,S)}return y.map(function(S){return l(p,S,v,w.get(S)||[])})}function h(p,y){let v=new s;p.forEach(function(w){let k=w.graph().root,S=r(w,k,v,y);S.vs.forEach((_,T)=>w.node(_).order=T),a(w,v,S.vs)})}function m(p,y){Object.values(y).forEach(v=>v.forEach((w,k)=>p.node(w).order=k))}return Zh}var Kh,z1;function $j(){if(z1)return Kh;z1=1;let e=Yn().Graph,n=Tt();Kh={positionX:v,findType1Conflicts:r,findType2Conflicts:l,addConflict:s,hasConflict:u,verticalAlignment:f,horizontalCompaction:d,alignCoordinates:p,findSmallestWidthAlignment:m,balance:y};function r(S,_){let T={};function E(z,I){let A=0,R=0,D=z.length,U=I[I.length-1];return I.forEach((X,B)=>{let q=a(S,X),ee=q?S.node(q).order:D;(q||X===U)&&(I.slice(R,B+1).forEach(L=>{S.predecessors(L).forEach($=>{let M=S.node($),Y=M.order;(Y{X=I[B],S.node(X).dummy&&S.predecessors(X).forEach(q=>{let ee=S.node(q);ee.dummy&&(ee.orderU)&&s(T,q,X)})})}function z(I,A){let R=-1,D,U=0;return A.forEach((X,B)=>{if(S.node(X).dummy==="border"){let q=S.predecessors(X);q.length&&(D=S.node(q[0]).order,E(A,U,B,R,D),U=B,R=D)}E(A,U,A.length,D,I.length)}),A}return _.length&&_.reduce(z),T}function a(S,_){if(S.node(_).dummy)return S.predecessors(_).find(T=>S.node(T).dummy)}function s(S,_,T){if(_>T){let z=_;_=T,T=z}let E=S[_];E||(S[_]=E={}),E[T]=!0}function u(S,_,T){if(_>T){let E=_;_=T,T=E}return!!S[_]&&Object.hasOwn(S[_],T)}function f(S,_,T,E){let z={},I={},A={};return _.forEach(R=>{R.forEach((D,U)=>{z[D]=D,I[D]=D,A[D]=U})}),_.forEach(R=>{let D=-1;R.forEach(U=>{let X=E(U);if(X.length){X=X.sort((q,ee)=>A[q]-A[ee]);let B=(X.length-1)/2;for(let q=Math.floor(B),ee=Math.ceil(B);q<=ee;++q){let L=X[q];I[U]===U&&DMath.max(q,I[ee.v]+A.edge(ee)),0)}function X(B){let q=A.outEdges(B).reduce((L,$)=>Math.min(L,I[$.w]-A.edge($)),Number.POSITIVE_INFINITY),ee=S.node(B);q!==Number.POSITIVE_INFINITY&&ee.borderType!==R&&(I[B]=Math.max(I[B],q))}return D(U,A.predecessors.bind(A)),D(X,A.successors.bind(A)),Object.keys(E).forEach(B=>I[B]=I[T[B]]),I}function h(S,_,T,E){let z=new e,I=S.graph(),A=w(I.nodesep,I.edgesep,E);return _.forEach(R=>{let D;R.forEach(U=>{let X=T[U];if(z.setNode(X),D){var B=T[D],q=z.edge(B,X);z.setEdge(B,X,Math.max(A(S,U,D),q||0))}D=U})}),z}function m(S,_){return Object.values(_).reduce((T,E)=>{let z=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY;Object.entries(E).forEach(([R,D])=>{let U=k(S,R)/2;z=Math.max(D+U,z),I=Math.min(D-U,I)});const A=z-I;return A{["l","r"].forEach(A=>{let R=I+A,D=S[R];if(D===_)return;let U=Object.values(D),X=E-n.applyWithChunking(Math.min,U);A!=="l"&&(X=z-n.applyWithChunking(Math.max,U)),X&&(S[R]=n.mapValues(D,B=>B+X))})})}function y(S,_){return n.mapValues(S.ul,(T,E)=>{if(_)return S[_.toLowerCase()][E];{let z=Object.values(S).map(I=>I[E]).sort((I,A)=>I-A);return(z[1]+z[2])/2}})}function v(S){let _=n.buildLayerMatrix(S),T=Object.assign(r(S,_),l(S,_)),E={},z;["u","d"].forEach(A=>{z=A==="u"?_:Object.values(_).reverse(),["l","r"].forEach(R=>{R==="r"&&(z=z.map(B=>Object.values(B).reverse()));let D=(A==="u"?S.predecessors:S.successors).bind(S),U=f(S,z,T,D),X=d(S,z,U.root,U.align,R==="r");R==="r"&&(X=n.mapValues(X,B=>-B)),E[A+R]=X})});let I=m(S,E);return p(E,I),y(E,S.graph().align)}function w(S,_,T){return(E,z,I)=>{let A=E.node(z),R=E.node(I),D=0,U;if(D+=A.width/2,Object.hasOwn(A,"labelpos"))switch(A.labelpos.toLowerCase()){case"l":U=-A.width/2;break;case"r":U=A.width/2;break}if(U&&(D+=T?U:-U),U=0,D+=(A.dummy?_:S)/2,D+=(R.dummy?_:S)/2,D+=R.width/2,Object.hasOwn(R,"labelpos"))switch(R.labelpos.toLowerCase()){case"l":U=R.width/2;break;case"r":U=-R.width/2;break}return U&&(D+=T?U:-U),U=0,D}}function k(S,_){return S.node(_).width}return Kh}var Jh,A1;function Pj(){if(A1)return Jh;A1=1;let e=Tt(),n=$j().positionX;Jh=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(n(a)).forEach(([s,u])=>a.node(s).x=u)}function l(a){let s=e.buildLayerMatrix(a),u=a.graph().ranksep,f=0;s.forEach(d=>{const h=d.reduce((m,p)=>{const y=a.node(p).height;return m>y?m:y},0);d.forEach(m=>a.node(m).y=f+h/2),f+=h+u})}return Jh}var Wh,M1;function Xj(){if(M1)return Wh;M1=1;let e=Tj(),n=zj(),r=Mj(),l=Tt().normalizeRanks,a=jj(),s=Tt().removeEmptyRanks,u=Oj(),f=Dj(),d=Rj(),h=Yj(),m=Pj(),p=Tt(),y=Yn().Graph;Wh=v;function v(N,G){let F=G&&G.debugTiming?p.time:p.notime;F("layout",()=>{let J=F(" buildLayoutGraph",()=>D(N));F(" runLayout",()=>w(J,F,G)),F(" updateInputGraph",()=>k(N,J))})}function w(N,G,F){G(" makeSpaceForEdgeLabels",()=>U(N)),G(" removeSelfEdges",()=>Q(N)),G(" acyclic",()=>e.run(N)),G(" nestingGraph.run",()=>u.run(N)),G(" rank",()=>r(p.asNonCompoundGraph(N))),G(" injectEdgeLabelProxies",()=>X(N)),G(" removeEmptyRanks",()=>s(N)),G(" nestingGraph.cleanup",()=>u.cleanup(N)),G(" normalizeRanks",()=>l(N)),G(" assignRankMinMax",()=>B(N)),G(" removeEdgeLabelProxies",()=>q(N)),G(" normalize.run",()=>n.run(N)),G(" parentDummyChains",()=>a(N)),G(" addBorderSegments",()=>f(N)),G(" order",()=>h(N,F)),G(" insertSelfEdges",()=>K(N)),G(" adjustCoordinateSystem",()=>d.adjust(N)),G(" position",()=>m(N)),G(" positionSelfEdges",()=>j(N)),G(" removeBorderNodes",()=>Y(N)),G(" normalize.undo",()=>n.undo(N)),G(" fixupEdgeLabelCoords",()=>$(N)),G(" undoCoordinateSystem",()=>d.undo(N)),G(" translateGraph",()=>ee(N)),G(" assignNodeIntersects",()=>L(N)),G(" reversePoints",()=>M(N)),G(" acyclic.undo",()=>e.undo(N))}function k(N,G){N.nodes().forEach(F=>{let J=N.node(F),ne=G.node(F);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,G.children(F).length&&(J.width=ne.width,J.height=ne.height))}),N.edges().forEach(F=>{let J=N.edge(F),ne=G.edge(F);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),N.graph().width=G.graph().width,N.graph().height=G.graph().height}let S=["nodesep","edgesep","ranksep","marginx","marginy"],_={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},T=["acyclicer","ranker","rankdir","align"],E=["width","height","rank"],z={width:0,height:0},I=["minlen","weight","width","height","labeloffset"],A={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},R=["labelpos"];function D(N){let G=new y({multigraph:!0,compound:!0}),F=P(N.graph());return G.setGraph(Object.assign({},_,H(F,S),p.pick(F,T))),N.nodes().forEach(J=>{let ne=P(N.node(J));const re=H(ne,E);Object.keys(z).forEach(se=>{re[se]===void 0&&(re[se]=z[se])}),G.setNode(J,re),G.setParent(J,N.parent(J))}),N.edges().forEach(J=>{let ne=P(N.edge(J));G.setEdge(J,Object.assign({},A,H(ne,I),p.pick(ne,R)))}),G}function U(N){let G=N.graph();G.ranksep/=2,N.edges().forEach(F=>{let J=N.edge(F);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(G.rankdir==="TB"||G.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function X(N){N.edges().forEach(G=>{let F=N.edge(G);if(F.width&&F.height){let J=N.node(G.v),re={rank:(N.node(G.w).rank-J.rank)/2+J.rank,e:G};p.addDummyNode(N,"edge-proxy",re,"_ep")}})}function B(N){let G=0;N.nodes().forEach(F=>{let J=N.node(F);J.borderTop&&(J.minRank=N.node(J.borderTop).rank,J.maxRank=N.node(J.borderBottom).rank,G=Math.max(G,J.maxRank))}),N.graph().maxRank=G}function q(N){N.nodes().forEach(G=>{let F=N.node(G);F.dummy==="edge-proxy"&&(N.edge(F.e).labelRank=F.rank,N.removeNode(G))})}function ee(N){let G=Number.POSITIVE_INFINITY,F=0,J=Number.POSITIVE_INFINITY,ne=0,re=N.graph(),se=re.marginx||0,ye=re.marginy||0;function ve(xe){let pe=xe.x,_e=xe.y,Me=xe.width,Ce=xe.height;G=Math.min(G,pe-Me/2),F=Math.max(F,pe+Me/2),J=Math.min(J,_e-Ce/2),ne=Math.max(ne,_e+Ce/2)}N.nodes().forEach(xe=>ve(N.node(xe))),N.edges().forEach(xe=>{let pe=N.edge(xe);Object.hasOwn(pe,"x")&&ve(pe)}),G-=se,J-=ye,N.nodes().forEach(xe=>{let pe=N.node(xe);pe.x-=G,pe.y-=J}),N.edges().forEach(xe=>{let pe=N.edge(xe);pe.points.forEach(_e=>{_e.x-=G,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=G),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=F-G+se,re.height=ne-J+ye}function L(N){N.edges().forEach(G=>{let F=N.edge(G),J=N.node(G.v),ne=N.node(G.w),re,se;F.points?(re=F.points[0],se=F.points[F.points.length-1]):(F.points=[],re=ne,se=J),F.points.unshift(p.intersectRect(J,re)),F.points.push(p.intersectRect(ne,se))})}function $(N){N.edges().forEach(G=>{let F=N.edge(G);if(Object.hasOwn(F,"x"))switch((F.labelpos==="l"||F.labelpos==="r")&&(F.width-=F.labeloffset),F.labelpos){case"l":F.x-=F.width/2+F.labeloffset;break;case"r":F.x+=F.width/2+F.labeloffset;break}})}function M(N){N.edges().forEach(G=>{let F=N.edge(G);F.reversed&&F.points.reverse()})}function Y(N){N.nodes().forEach(G=>{if(N.children(G).length){let F=N.node(G),J=N.node(F.borderTop),ne=N.node(F.borderBottom),re=N.node(F.borderLeft[F.borderLeft.length-1]),se=N.node(F.borderRight[F.borderRight.length-1]);F.width=Math.abs(se.x-re.x),F.height=Math.abs(ne.y-J.y),F.x=re.x+F.width/2,F.y=J.y+F.height/2}}),N.nodes().forEach(G=>{N.node(G).dummy==="border"&&N.removeNode(G)})}function Q(N){N.edges().forEach(G=>{if(G.v===G.w){var F=N.node(G.v);F.selfEdges||(F.selfEdges=[]),F.selfEdges.push({e:G,label:N.edge(G)}),N.removeEdge(G)}})}function K(N){var G=p.buildLayerMatrix(N);G.forEach(F=>{var J=0;F.forEach((ne,re)=>{var se=N.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(ye=>{p.addDummyNode(N,"selfedge",{width:ye.label.width,height:ye.label.height,rank:se.rank,order:re+ ++J,e:ye.e,label:ye.label},"_se")}),delete se.selfEdges})})}function j(N){N.nodes().forEach(G=>{var F=N.node(G);if(F.dummy==="selfedge"){var J=N.node(F.e.v),ne=J.x+J.width/2,re=J.y,se=F.x-ne,ye=J.height/2;N.setEdge(F.e,F.label),N.removeNode(G),F.label.points=[{x:ne+2*se/3,y:re-ye},{x:ne+5*se/6,y:re-ye},{x:ne+se,y:re},{x:ne+5*se/6,y:re+ye},{x:ne+2*se/3,y:re+ye}],F.label.x=F.x,F.label.y=F.y}})}function H(N,G){return p.mapValues(p.pick(N,G),Number)}function P(N){var G={};return N&&Object.entries(N).forEach(([F,J])=>{typeof F=="string"&&(F=F.toLowerCase()),G[F]=J}),G}return Wh}var ep,j1;function Fj(){if(j1)return ep;j1=1;let e=Tt(),n=Yn().Graph;ep={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),s=new n({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{s.setNode(u,{label:u}),s.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>s.setEdge(u.v,u.w,{},u.name)),a.forEach((u,f)=>{let d="layer"+f;s.setNode(d,{rank:"same"}),u.reduce((h,m)=>(s.setEdge(h,m,{style:"invis"}),m))}),s}return ep}var tp,O1;function Qj(){return O1||(O1=1,tp="1.1.8"),tp}var np,D1;function Zj(){return D1||(D1=1,np={graphlib:Yn(),layout:Xj(),debug:Fj(),util:{time:Tt().time,notime:Tt().notime},version:Qj()}),np}var Kj=Zj();const R1=Bo(Kj),vo=200,Ql=56,L1=20,H1=40,Jj=20,B1=12;function Wj(e,n,r,l,a,s,u){const f=[],d=[],h=new Set,m=new Set,p=new Map;for(const v of r)for(const w of v.agents)m.add(w),p.set(w,v.name);for(const v of r){const w=a[v.name],k=v.agents.length,S=vo+L1*2,_=H1+k*Ql+(k-1)*B1+Jj;f.push({id:v.name,type:"groupNode",position:{x:0,y:0},data:{label:v.name,type:"parallel_group",status:(w==null?void 0:w.status)||"pending",groupName:v.name,progress:s[v.name]},style:{width:S,height:_}});for(let T=0;T$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}for(const v of n)d.push({id:`${v.from}->${v.to}`,source:v.from,target:v.to,type:"animatedEdge",data:{when:v.when},animated:!1});return e5(f,d),{nodes:f,edges:d}}function e5(e,n){var l,a,s,u;const r=new R1.graphlib.Graph;r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const f of e){if(f.parentId)continue;const d=f.type==="groupNode",h=d&&((l=f.style)==null?void 0:l.width)||vo,m=d&&((a=f.style)==null?void 0:a.height)||Ql;r.setNode(f.id,{width:h,height:m})}for(const f of n)r.hasNode(f.source)&&r.hasNode(f.target)&&r.setEdge(f.source,f.target);R1.layout(r);for(const f of e){if(f.parentId)continue;const d=r.node(f.id);if(!d)continue;const h=f.type==="groupNode",m=h&&((s=f.style)==null?void 0:s.width)||vo,p=h&&((u=f.style)==null?void 0:u.height)||Ql;f.position={x:d.x-m/2,y:d.y-p/2}}}const $e={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},t5=70,q1=90;function _c({data:e,children:n}){const[r,l]=V.useState(!1),a=V.useRef(null),s=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),f=$e[e.status]||$e.pending;return b.jsxs("div",{className:"relative",onMouseEnter:s,onMouseLeave:u,children:[n,r&&b.jsxs("div",{className:Be("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[b.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),b.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:f}}),b.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&b.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:Qt(e.elapsed)})]}),e.model&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),b.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Vn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&b.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Vn(e.inputTokens),"↑ ",Vn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:mi(e.costUsd)})]}),e.exitCode!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),b.jsx("span",{className:Be("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&b.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),b.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const n5=V.memo(function({data:n,id:r,selected:l}){var R;const a=n,s=he(D=>D.getViewedContext().nodes),f=((R=s[r])==null?void 0:R.status)||a.status||"pending",d=$e[f]||$e.pending,h=s[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.model,y=h==null?void 0:h.tokens,v=h==null?void 0:h.input_tokens,w=h==null?void 0:h.output_tokens,k=h==null?void 0:h.cost_usd,S=h==null?void 0:h.iteration,_=h==null?void 0:h.error_type,T=h==null?void 0:h.error_message,E=h==null?void 0:h.context_pct,z=r5(r,f),I=i5(f),A=(()=>{if(f==="failed"&&T)return{text:T.length>40?T.slice(0,37)+"...":T,className:"text-red-400"};if(f==="running")return{text:z,className:"text-[var(--text-muted)]"};if(f==="completed"){const D=[];return m!=null&&D.push(Qt(m)),y!=null&&D.push(`${Vn(y)} tok`),k!=null&&D.push(mi(k)),{text:D.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:f,elapsed:m,model:p,tokens:y,inputTokens:v,outputTokens:w,costUsd:k,iteration:S,errorType:_,errorMessage:T},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",I),style:{borderColor:d},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:b.jsx(Q2,{className:"w-3.5 h-3.5",style:{color:d}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S!=null&&S>1&&b.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${d}25`,color:d},children:["x",S]})]}),A.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",A.className),children:A.text})]}),E!=null&&b.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:b.jsx("div",{className:Be("h-full transition-all duration-500",E>=q1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(E,100)}%`,backgroundColor:E>=q1?"#ef4444":E>=t5?"#f59e0b":"#22c55e"}})})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function r5(e,n){const r=he(d=>{var h;return(h=d.getViewedContext().nodes[e])==null?void 0:h.startedAt}),l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const m=r??a??0;u(Qt((a??m)-m));return}const d=r!=null?r*1e3:Date.now(),h=()=>{const m=(Date.now()-d)/1e3;u(Qt(m))};return h(),f.current=setInterval(h,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function i5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const l5=V.memo(function({data:n,id:r,selected:l}){var _;const a=n,s=he(T=>T.getViewedContext().nodes),f=((_=s[r])==null?void 0:_.status)||a.status||"pending",d=$e[f]||$e.pending,h=s[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.exit_code,y=h==null?void 0:h.error_type,v=h==null?void 0:h.error_message,w=a5(r,f),k=o5(f),S=(()=>{if(f==="failed"&&v)return{text:v.length>40?v.slice(0,37)+"...":v,className:"text-red-400"};if(f==="running")return{text:w,className:"text-[var(--text-muted)]"};if(f==="completed"){const T=[];return m!=null&&T.push(Qt(m)),p!=null&&T.push(`exit ${p}`),{text:T.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:f,elapsed:m,exitCode:p,errorType:y,errorMessage:v},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",k),style:{borderColor:d},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:b.jsx(cN,{className:"w-3.5 h-3.5",style:{color:d}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",S.className),children:S.text})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function a5(e,n){const r=he(d=>{var h;return(h=d.getViewedContext().nodes[e])==null?void 0:h.startedAt}),l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const m=r??a??0;u(Qt((a??m)-m));return}const d=r!=null?r*1e3:Date.now(),h=()=>{const m=(Date.now()-d)/1e3;u(Qt(m))};return h(),f.current=setInterval(h,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function o5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const s5=V.memo(function({data:n,id:r,selected:l}){var p,y;const a=n,s=he(v=>v.getViewedContext().nodes),f=((p=s[r])==null?void 0:p.status)||a.status||"pending",d=$e[f]||$e.pending,h=(y=s[r])==null?void 0:y.selected_option,m=u5(f);return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:f,selectedOption:h},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:d},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="waiting"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:b.jsx(uN,{className:"w-3.5 h-3.5",style:{color:d}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),f==="waiting"&&b.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),f==="completed"&&h&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:h})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function u5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const c5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=a.type==="for_each_group"?aN:rN,f=a.progress,h=he(k=>{var S;return(S=k.getViewedContext().nodes[r])==null?void 0:S.status})||a.status||"pending",m=$e[h]||$e.pending,p=f5(h),y=f?`${f.completed+f.failed}/${f.total}${f.failed>0?` (${f.failed} failed)`:""}`:null,v=f&&f.total>0?(f.completed+f.failed)/f.total*100:0,w=f!=null&&f.failed>0;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsxs("div",{className:Be("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",h==="running"&&"shadow-[0_0_16px_var(--running-glow)]",p),style:{borderColor:m,minHeight:"100%"},children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(u,{className:"w-3.5 h-3.5",style:{color:m}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),y&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:y}),f&&f.total>0&&h==="running"&&b.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${v}%`,backgroundColor:w?"var(--failed)":"var(--completed)"}})})]}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function f5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const d5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.status})||a.status||"pending",f=$e[u]||$e.pending,d=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.elapsed}),h=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.error_message}),m=he(S=>S.navigateIntoSubworkflow),p=he(S=>S.getViewedContext().subworkflowContexts),y=p.some(S=>S.parentAgent===r),v=p.find(S=>S.parentAgent===r),w=v==null?void 0:v.workflowName,k=(()=>{if(u==="failed"&&h)return{text:h.length>35?h.slice(0,32)+"...":h,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const S=[];return w&&S.push(w),d!=null&&S.push(`${d.toFixed(1)}s`),{text:S.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:u,elapsed:d,errorType:void 0,errorMessage:h,iteration:void 0},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:f,borderStyle:"dashed"},onDoubleClick:S=>{y&&(S.stopPropagation(),m(r))},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx($p,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("div",{className:"flex items-center gap-1",children:b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),k.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",k.className),children:k.text})]}),y&&b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),h5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=a==="completed",u=a==="failed",f=!s&&!u,d=s?$e.completed:u?$e.failed:$e.pending;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",s?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:d},children:s?b.jsx(Vi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?b.jsx(Ob,{className:"w-3.5 h-3.5 text-white",fill:"white"}):b.jsx(Vi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:f?$e.pending:d}})})]})}),p5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=$e[a]||$e.pending,u=a==="running"||a==="completed";return b.jsxs(b.Fragment,{children:[b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:s},children:b.jsx(Pp,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":s}})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),m5=V.memo(function({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,source:d,target:h,data:m}){const p=he(U=>U.getViewedContext().highlightedEdges),y=V.useMemo(()=>p.find(U=>U.from===d&&U.to===h),[p,d,h]),[v,w,k]=sm({sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f}),S=m==null?void 0:m.when,_=!!S,T=(y==null?void 0:y.state)==="taken",E=(y==null?void 0:y.state)==="highlighted",z=(y==null?void 0:y.state)==="failed";let I="var(--edge-color)",A=2,R;z?(I="var(--failed)",A=3):T?(I="var(--edge-taken)",A=3):E&&(I="var(--edge-active)",A=3),_&&!T&&!E&&!z&&(R="6 3");const D=z?"failed":T?"taken":E?"active":"default";return b.jsxs(b.Fragment,{children:[b.jsx(Fo,{id:n,path:v,style:{stroke:I,strokeWidth:A,strokeDasharray:R,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${D})`}),_&&b.jsx(HM,{children:b.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${k}px)`,pointerEvents:"all"},children:b.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:z?"var(--failed)":T?"var(--edge-taken)":"var(--surface)",color:z||T?"var(--bg)":"var(--text-muted)",border:`1px solid ${z?"var(--failed)":T?"var(--edge-taken)":"var(--border)"}`},title:S,children:S})})}),T&&b.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:b.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:v})}),z&&b.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:b.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:v})})]})});function g5(){const e=he(u=>u.workflowStatus),n=he(u=>u.workflowFailure),r=he(u=>u.workflowFailedAgent),l=he(u=>u.selectNode);if(e!=="failed"||!n)return null;const a=n.message||n.error_type||"Unknown error",s=n.error_type==="TimeoutError";return b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[b.jsx(fN,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsxs("div",{className:"flex flex-col min-w-0",children:[b.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),b.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),s&&n.current_agent&&b.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",n.current_agent]}),n.checkpoint_path&&b.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:n.checkpoint_path,children:["Checkpoint: ",n.checkpoint_path.split("/").pop()]})]}),r&&b.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[b.jsx(eN,{className:"w-3 h-3"}),"View"]})]})})}function y5(){const[e,n]=V.useState(!1),r=he(d=>d.workflowStatus),l=he(d=>d.totalCost),a=he(d=>d.totalTokens),s=he(d=>d.agentsCompleted),u=he(d=>d.agentsTotal),f=Rb();return r!=="completed"||e?null:b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[b.jsx(K2,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),b.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[b.jsx("span",{children:f}),u>0&&b.jsxs("span",{children:[s,"/",u," agents"]}),a>0&&b.jsxs("span",{children:[Vn(a)," tok"]}),l>0&&b.jsx("span",{children:mi(l)})]}),b.jsx("button",{onClick:()=>n(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:b.jsx(Uo,{className:"w-3.5 h-3.5"})})]})})}const x5={agentNode:n5,scriptNode:l5,gateNode:s5,groupNode:c5,workflowNode:d5,endNode:h5,startNode:p5},v5={animatedEdge:m5},b5={type:"animatedEdge"};function w5(){return b.jsx("svg",{style:{position:"absolute",width:0,height:0},children:b.jsxs("defs",{children:[b.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),b.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),b.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),b.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function S5(){const e=he(M=>M.getViewedContext),n=he(M=>M.viewContextPath),r=he(M=>M.selectNode),l=he(M=>M.selectedNode),a=he(M=>M.workflowStatus),s=he(M=>M.wsStatus),u=he(M=>M.workflowFailedAgent),f=he(M=>M.navigateIntoSubworkflow),d=e(),{agents:h,routes:m,parallelGroups:p,forEachGroups:y,nodes:v,groupProgress:w,entryPoint:k,subworkflowContexts:S}=d,[_,T,E]=BM([]),[z,I,A]=qM([]),R=V.useRef(!1),D=V.useRef(""),U=JSON.stringify(n);V.useEffect(()=>{if(h.length===0){D.current!==U&&(R.current=!1,D.current=U);return}if(D.current!==U&&(R.current=!1,D.current=U),R.current)return;R.current=!0;const{nodes:M,edges:Y}=Wj(h,m,p,y,v,w,k);T(M),I(Y)},[h,m,p,y,v,w,k,T,I,U]),V.useEffect(()=>{R.current&&T(M=>M.map(Y=>{const Q=v[Y.id];if(!Q)return Y;const K=Q.status||"pending",j=Y.data.status;if(K!==j){const H={...Y.data,status:K};return Y.data.groupName&&w[Y.data.groupName]&&(H.progress=w[Y.data.groupName]),{...Y,data:H}}if(Y.data.groupName&&w[Y.data.groupName]){const H=Y.data.progress,P=w[Y.data.groupName];if(P&&(!H||H.completed!==P.completed||H.failed!==P.failed))return{...Y,data:{...Y.data,progress:P}}}return Y}))},[v,w,T]);const X=V.useCallback((M,Y)=>{Y.type==="groupNode"&&Y.data.type!=="for_each_group"||r(Y.id)},[r]),B=V.useCallback((M,Y)=>{S.some(K=>K.parentAgent===Y.id)&&f(Y.id)},[S,f]),q=V.useCallback(()=>{r(null)},[r]),ee=V.useCallback(M=>{var Q;const Y=((Q=M.data)==null?void 0:Q.status)||"pending";return $e[Y]||$e.pending},[]);V.useEffect(()=>{T(M=>M.map(Y=>({...Y,selected:Y.id===l})))},[l,T]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const L=a==="pending"&&h.length===0,$=(()=>{switch(s){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return b.jsxs("div",{className:"w-full h-full relative",children:[b.jsx(w5,{}),b.jsx(g5,{}),b.jsx(y5,{}),L&&b.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[b.jsxs("div",{className:"relative mb-3",children:[b.jsx(pN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),b.jsx(No,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),b.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:$})]}),b.jsxs(RM,{nodes:_,edges:z,onNodesChange:E,onEdgesChange:A,onNodeClick:X,onNodeDoubleClick:B,onPaneClick:q,nodeTypes:x5,edgeTypes:v5,defaultEdgeOptions:b5,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[b.jsx(YM,{variant:zr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),b.jsx(cj,{nodeColor:ee,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),b.jsx(KM,{showInteractive:!1,children:b.jsx(_5,{})}),b.jsx(E5,{})]})]})}function _5(){const{fitView:e}=Xo(),n=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return b.jsx("button",{onClick:n,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:b.jsx(iN,{className:"w-3.5 h-3.5"})})}function E5(){const{fitView:e}=Xo();return V.useEffect(()=>{const n=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e]),null}function Wi({items:e}){const n=e.filter(r=>r.value!=null&&r.value!=="");return n.length===0?null:b.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:n.map(({label:r,value:l})=>b.jsxs("div",{className:"contents",children:[b.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),b.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function $S(e){const n=[];return e.elapsed!=null&&n.push({label:"Elapsed",value:Qt(e.elapsed)}),e.model&&n.push({label:"Model",value:e.model}),e.tokens!=null&&n.push({label:"Tokens",value:Vn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&n.push({label:"In / Out",value:`${Vn(e.input_tokens)} / ${Vn(e.output_tokens)}`}),e.cost_usd!=null&&n.push({label:"Cost",value:mi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&n.push({label:"Context",value:kN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&n.push({label:"Iteration",value:e.iteration}),e.error_type&&n.push({label:"Error",value:e.error_type}),e.error_message&&n.push({label:"Message",value:e.error_message}),n}function Ki({output:e,title:n="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,s]=V.useState(r),[u,f]=V.useState(!1),d=Db(e);if(!d)return null;const h=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(d),f(!0),setTimeout(()=>f(!1),2e3)};return b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),n]}),a&&b.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}):b.jsx(Mb,{className:"w-3 h-3"})})]}),a&&b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:h?b.jsx(N5,{text:d}):d})]})}function N5({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function gm({activity:e,defaultExpanded:n=!0}){const[r,l]=V.useState(n),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&b.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((s,u)=>b.jsx(k5,{entry:s},u))})]})}function k5({entry:e}){const n={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return b.jsxs("div",{className:Be("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[b.jsxs("div",{className:"flex items-start gap-1.5",children:[b.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),b.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),b.jsx("span",{className:Be("break-words",n[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&b.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function C5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?b.jsx(U1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:n,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):b.jsxs(b.Fragment,{children:[b.jsx(Wi,{items:$S(e)}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),b.jsx(gm,{activity:e.activity,defaultExpanded:n!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>b.jsx(U1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:n,snapshot:a},a.iteration))]})}function U1({label:e,defaultExpanded:n,snapshot:r,status:l}){const[a,s]=V.useState(n);return b.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?b.jsx(Ji,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:T5(r.elapsed)})]}),a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[b.jsx(Wi,{items:$S(r)}),r.prompt&&b.jsx(Ki,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),b.jsx(gm,{activity:r.activity,defaultExpanded:n&&l!=="completed"}),r.output!=null&&b.jsx(Ki,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&b.jsxs("div",{className:"text-xs text-red-400",children:[b.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function T5(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function z5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Qt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` + +--- stderr --- +`:"")+e.stderr),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Script"})]}),b.jsx(Wi,{items:l}),a&&b.jsx(Ki,{output:a,title:"Output"})]})}function A5(e,n){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const M5=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,j5=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,O5={};function I1(e,n){return(O5.jsx?j5:M5).test(e)}const D5=/[ \t\n\f\r]/g;function R5(e){return typeof e=="object"?e.type==="text"?V1(e.value):!1:V1(e)}function V1(e){return e.replace(D5,"")===""}class Qo{constructor(n,r,l){this.normal=r,this.property=n,l&&(this.space=l)}}Qo.prototype.normal={};Qo.prototype.property={};Qo.prototype.space=void 0;function PS(e,n){const r={},l={};for(const a of e)Object.assign(r,a.property),Object.assign(l,a.normal);return new Qo(r,l,n)}function Rp(e){return e.toLowerCase()}class sn{constructor(n,r){this.attribute=r,this.property=n}}sn.prototype.attribute="";sn.prototype.booleanish=!1;sn.prototype.boolean=!1;sn.prototype.commaOrSpaceSeparated=!1;sn.prototype.commaSeparated=!1;sn.prototype.defined=!1;sn.prototype.mustUseProperty=!1;sn.prototype.number=!1;sn.prototype.overloadedBoolean=!1;sn.prototype.property="";sn.prototype.spaceSeparated=!1;sn.prototype.space=void 0;let L5=0;const Oe=el(),Ct=el(),Lp=el(),me=el(),ot=el(),Wl=el(),yn=el();function el(){return 2**++L5}const Hp=Object.freeze(Object.defineProperty({__proto__:null,boolean:Oe,booleanish:Ct,commaOrSpaceSeparated:yn,commaSeparated:Wl,number:me,overloadedBoolean:Lp,spaceSeparated:ot},Symbol.toStringTag,{value:"Module"})),rp=Object.keys(Hp);class ym extends sn{constructor(n,r,l,a){let s=-1;if(super(n,r),G1(this,"space",a),typeof l=="number")for(;++s4&&r.slice(0,4)==="data"&&I5.test(n)){if(n.charAt(4)==="-"){const s=n.slice(5).replace(Y1,Y5);l="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=n.slice(4);if(!Y1.test(s)){let u=s.replace(U5,G5);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}a=ym}return new a(l,n)}function G5(e){return"-"+e.toLowerCase()}function Y5(e){return e.charAt(1).toUpperCase()}const $5=PS([XS,H5,ZS,KS,JS],"html"),xm=PS([XS,B5,ZS,KS,JS],"svg");function P5(e){return e.join(" ").trim()}var Vl={},ip,$1;function X5(){if($1)return ip;$1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,f=/^\s+|\s+$/g,d=` +`,h="/",m="*",p="",y="comment",v="declaration";function w(S,_){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];_=_||{};var T=1,E=1;function z(L){var $=L.match(n);$&&(T+=$.length);var M=L.lastIndexOf(d);E=~M?L.length-M:E+L.length}function I(){var L={line:T,column:E};return function($){return $.position=new A(L),U(),$}}function A(L){this.start=L,this.end={line:T,column:E},this.source=_.source}A.prototype.content=S;function R(L){var $=new Error(_.source+":"+T+":"+E+": "+L);if($.reason=L,$.filename=_.source,$.line=T,$.column=E,$.source=S,!_.silent)throw $}function D(L){var $=L.exec(S);if($){var M=$[0];return z(M),S=S.slice(M.length),$}}function U(){D(r)}function X(L){var $;for(L=L||[];$=B();)$!==!1&&L.push($);return L}function B(){var L=I();if(!(h!=S.charAt(0)||m!=S.charAt(1))){for(var $=2;p!=S.charAt($)&&(m!=S.charAt($)||h!=S.charAt($+1));)++$;if($+=2,p===S.charAt($-1))return R("End of comment missing");var M=S.slice(2,$-2);return E+=2,z(M),S=S.slice($),E+=2,L({type:y,comment:M})}}function q(){var L=I(),$=D(l);if($){if(B(),!D(a))return R("property missing ':'");var M=D(s),Y=L({type:v,property:k($[0].replace(e,p)),value:M?k(M[0].replace(e,p)):p});return D(u),Y}}function ee(){var L=[];X(L);for(var $;$=q();)$!==!1&&(L.push($),X(L));return L}return U(),ee()}function k(S){return S?S.replace(f,p):p}return ip=w,ip}var P1;function F5(){if(P1)return Vl;P1=1;var e=Vl&&Vl.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.default=r;const n=e(X5());function r(l,a){let s=null;if(!l||typeof l!="string")return s;const u=(0,n.default)(l),f=typeof a=="function";return u.forEach(d=>{if(d.type!=="declaration")return;const{property:h,value:m}=d;f?a(h,m,d):m&&(s=s||{},s[h]=m)}),s}return Vl}var uo={},X1;function Q5(){if(X1)return uo;X1=1,Object.defineProperty(uo,"__esModule",{value:!0}),uo.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,l=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,s=function(h){return!h||r.test(h)||e.test(h)},u=function(h,m){return m.toUpperCase()},f=function(h,m){return"".concat(m,"-")},d=function(h,m){return m===void 0&&(m={}),s(h)?h:(h=h.toLowerCase(),m.reactCompat?h=h.replace(a,f):h=h.replace(l,f),h.replace(n,u))};return uo.camelCase=d,uo}var co,F1;function Z5(){if(F1)return co;F1=1;var e=co&&co.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},n=e(F5()),r=Q5();function l(a,s){var u={};return!a||typeof a!="string"||(0,n.default)(a,function(f,d){f&&d&&(u[(0,r.camelCase)(f,s)]=d)}),u}return l.default=l,co=l,co}var K5=Z5();const J5=Bo(K5),WS=e_("end"),vm=e_("start");function e_(e){return n;function n(r){const l=r&&r.position&&r.position[e]||{};if(typeof l.line=="number"&&l.line>0&&typeof l.column=="number"&&l.column>0)return{line:l.line,column:l.column,offset:typeof l.offset=="number"&&l.offset>-1?l.offset:void 0}}}function W5(e){const n=vm(e),r=WS(e);if(n&&r)return{start:n,end:r}}function So(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Q1(e.position):"start"in e||"end"in e?Q1(e):"line"in e||"column"in e?Bp(e):""}function Bp(e){return Z1(e&&e.line)+":"+Z1(e&&e.column)}function Q1(e){return Bp(e&&e.start)+"-"+Bp(e&&e.end)}function Z1(e){return e&&typeof e=="number"?e:1}class Pt extends Error{constructor(n,r,l){super(),typeof r=="string"&&(l=r,r=void 0);let a="",s={},u=!1;if(r&&("line"in r&&"column"in r?s={place:r}:"start"in r&&"end"in r?s={place:r}:"type"in r?s={ancestors:[r],place:r.position}:s={...r}),typeof n=="string"?a=n:!s.cause&&n&&(u=!0,a=n.message,s.cause=n),!s.ruleId&&!s.source&&typeof l=="string"){const d=l.indexOf(":");d===-1?s.ruleId=l:(s.source=l.slice(0,d),s.ruleId=l.slice(d+1))}if(!s.place&&s.ancestors&&s.ancestors){const d=s.ancestors[s.ancestors.length-1];d&&(s.place=d.position)}const f=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=f?f.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=f?f.line:void 0,this.name=So(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=u&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Pt.prototype.file="";Pt.prototype.name="";Pt.prototype.reason="";Pt.prototype.message="";Pt.prototype.stack="";Pt.prototype.column=void 0;Pt.prototype.line=void 0;Pt.prototype.ancestors=void 0;Pt.prototype.cause=void 0;Pt.prototype.fatal=void 0;Pt.prototype.place=void 0;Pt.prototype.ruleId=void 0;Pt.prototype.source=void 0;const bm={}.hasOwnProperty,e4=new Map,t4=/[A-Z]/g,n4=new Set(["table","tbody","thead","tfoot","tr"]),r4=new Set(["td","th"]),t_="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function i4(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=n.filePath||void 0;let l;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");l=d4(r,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");l=f4(r,n.jsx,n.jsxs)}const a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:l,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?xm:$5,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},s=n_(a,e,void 0);return s&&typeof s!="string"?s:a.create(e,a.Fragment,{children:s||void 0},void 0)}function n_(e,n,r){if(n.type==="element")return l4(e,n,r);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return a4(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return s4(e,n,r);if(n.type==="mdxjsEsm")return o4(e,n);if(n.type==="root")return u4(e,n,r);if(n.type==="text")return c4(e,n)}function l4(e,n,r){const l=e.schema;let a=l;n.tagName.toLowerCase()==="svg"&&l.space==="html"&&(a=xm,e.schema=a),e.ancestors.push(n);const s=i_(e,n.tagName,!1),u=h4(e,n);let f=Sm(e,n);return n4.has(n.tagName)&&(f=f.filter(function(d){return typeof d=="string"?!R5(d):!0})),r_(e,u,s,n),wm(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function a4(e,n){if(n.data&&n.data.estree&&e.evaluater){const l=n.data.estree.body[0];return l.type,e.evaluater.evaluateExpression(l.expression)}Ho(e,n.position)}function o4(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);Ho(e,n.position)}function s4(e,n,r){const l=e.schema;let a=l;n.name==="svg"&&l.space==="html"&&(a=xm,e.schema=a),e.ancestors.push(n);const s=n.name===null?e.Fragment:i_(e,n.name,!0),u=p4(e,n),f=Sm(e,n);return r_(e,u,s,n),wm(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function u4(e,n,r){const l={};return wm(l,Sm(e,n)),e.create(n,e.Fragment,l,r)}function c4(e,n){return n.value}function r_(e,n,r,l){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(n.node=l)}function wm(e,n){if(n.length>0){const r=n.length>1?n:n[0];r&&(e.children=r)}}function f4(e,n,r){return l;function l(a,s,u,f){const h=Array.isArray(u.children)?r:n;return f?h(s,u,f):h(s,u)}}function d4(e,n){return r;function r(l,a,s,u){const f=Array.isArray(s.children),d=vm(l);return n(a,s,u,f,{columnNumber:d?d.column-1:void 0,fileName:e,lineNumber:d?d.line:void 0},void 0)}}function h4(e,n){const r={};let l,a;for(a in n.properties)if(a!=="children"&&bm.call(n.properties,a)){const s=m4(e,a,n.properties[a]);if(s){const[u,f]=s;e.tableCellAlignToStyle&&u==="align"&&typeof f=="string"&&r4.has(n.tagName)?l=f:r[u]=f}}if(l){const s=r.style||(r.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=l}return r}function p4(e,n){const r={};for(const l of n.attributes)if(l.type==="mdxJsxExpressionAttribute")if(l.data&&l.data.estree&&e.evaluater){const s=l.data.estree.body[0];s.type;const u=s.expression;u.type;const f=u.properties[0];f.type,Object.assign(r,e.evaluater.evaluateExpression(f.argument))}else Ho(e,n.position);else{const a=l.name;let s;if(l.value&&typeof l.value=="object")if(l.value.data&&l.value.data.estree&&e.evaluater){const f=l.value.data.estree.body[0];f.type,s=e.evaluater.evaluateExpression(f.expression)}else Ho(e,n.position);else s=l.value===null?!0:l.value;r[a]=s}return r}function Sm(e,n){const r=[];let l=-1;const a=e.passKeys?new Map:e4;for(;++la?0:a+n:n=n>a?a:n,r=r>0?r:0,l.length<1e4)u=Array.from(l),u.unshift(n,r),e.splice(...u);else for(r&&e.splice(n,r);s0?(rr(e,e.length,0,n),e):n}const W1={}.hasOwnProperty;function _4(e){const n={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function ea(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const er=gi(/[A-Za-z]/),bn=gi(/[\dA-Za-z]/),k4=gi(/[#-'*+\--9=?A-Z^-~]/);function qp(e){return e!==null&&(e<32||e===127)}const Up=gi(/\d/),C4=gi(/[\dA-Fa-f]/),T4=gi(/[!-/:-@[-`{-~]/);function Te(e){return e!==null&&e<-2}function on(e){return e!==null&&(e<0||e===32)}function Ke(e){return e===-2||e===-1||e===32}const z4=gi(new RegExp("\\p{P}|\\p{S}","u")),A4=gi(/\s/);function gi(e){return n;function n(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function ua(e){const n=[];let r=-1,l=0,a=0;for(;++r55295&&s<57344){const f=e.charCodeAt(r+1);s<56320&&f>56319&&f<57344?(u=String.fromCharCode(s,f),a=1):u="�"}else u=String.fromCharCode(s);u&&(n.push(e.slice(l,r),encodeURIComponent(u)),l=r+a+1,u=""),a&&(r+=a,a=0)}return n.join("")+e.slice(l)}function st(e,n,r,l){const a=l?l-1:Number.POSITIVE_INFINITY;let s=0;return u;function u(d){return Ke(d)?(e.enter(r),f(d)):n(d)}function f(d){return Ke(d)&&s++u))return;const R=n.events.length;let D=R,U,X;for(;D--;)if(n.events[D][0]==="exit"&&n.events[D][1].type==="chunkFlow"){if(U){X=n.events[D][1].end;break}U=!0}for(_(l),A=R;AE;){const I=r[z];n.containerState=I[1],I[0].exit.call(n,e)}r.length=E}function T(){a.write([null]),s=void 0,a=void 0,n.containerState._closeFlow=void 0}}function R4(e,n,r){return st(e,e.attempt(this.parser.constructs.document,n,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function tb(e){if(e===null||on(e)||A4(e))return 1;if(z4(e))return 2}function Em(e,n,r){const l=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const p={...e[l][1].end},y={...e[r][1].start};nb(p,-d),nb(y,d),u={type:d>1?"strongSequence":"emphasisSequence",start:p,end:{...e[l][1].end}},f={type:d>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:y},s={type:d>1?"strongText":"emphasisText",start:{...e[l][1].end},end:{...e[r][1].start}},a={type:d>1?"strong":"emphasis",start:{...u.start},end:{...f.end}},e[l][1].end={...u.start},e[r][1].start={...f.end},h=[],e[l][1].end.offset-e[l][1].start.offset&&(h=Mn(h,[["enter",e[l][1],n],["exit",e[l][1],n]])),h=Mn(h,[["enter",a,n],["enter",u,n],["exit",u,n],["enter",s,n]]),h=Mn(h,Em(n.parser.constructs.insideSpan.null,e.slice(l+1,r),n)),h=Mn(h,[["exit",s,n],["enter",f,n],["exit",f,n],["exit",a,n]]),e[r][1].end.offset-e[r][1].start.offset?(m=2,h=Mn(h,[["enter",e[r][1],n],["exit",e[r][1],n]])):m=0,rr(e,l-1,r-l+3,h),r=l+h.length-m-2;break}}for(r=-1;++r0&&Ke(A)?st(e,T,"linePrefix",s+1)(A):T(A)}function T(A){return A===null||Te(A)?e.check(rb,k,z)(A):(e.enter("codeFlowValue"),E(A))}function E(A){return A===null||Te(A)?(e.exit("codeFlowValue"),T(A)):(e.consume(A),E)}function z(A){return e.exit("codeFenced"),n(A)}function I(A,R,D){let U=0;return X;function X($){return A.enter("lineEnding"),A.consume($),A.exit("lineEnding"),B}function B($){return A.enter("codeFencedFence"),Ke($)?st(A,q,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)($):q($)}function q($){return $===f?(A.enter("codeFencedFenceSequence"),ee($)):D($)}function ee($){return $===f?(U++,A.consume($),ee):U>=u?(A.exit("codeFencedFenceSequence"),Ke($)?st(A,L,"whitespace")($):L($)):D($)}function L($){return $===null||Te($)?(A.exit("codeFencedFence"),R($)):D($)}}}function X4(e,n,r){const l=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}const ap={name:"codeIndented",tokenize:Q4},F4={partial:!0,tokenize:Z4};function Q4(e,n,r){const l=this;return a;function a(h){return e.enter("codeIndented"),st(e,s,"linePrefix",5)(h)}function s(h){const m=l.events[l.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?u(h):r(h)}function u(h){return h===null?d(h):Te(h)?e.attempt(F4,u,d)(h):(e.enter("codeFlowValue"),f(h))}function f(h){return h===null||Te(h)?(e.exit("codeFlowValue"),u(h)):(e.consume(h),f)}function d(h){return e.exit("codeIndented"),n(h)}}function Z4(e,n,r){const l=this;return a;function a(u){return l.parser.lazy[l.now().line]?r(u):Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):st(e,s,"linePrefix",5)(u)}function s(u){const f=l.events[l.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?n(u):Te(u)?a(u):r(u)}}const K4={name:"codeText",previous:W4,resolve:J4,tokenize:eO};function J4(e){let n=e.length-4,r=3,l,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(l=r;++l=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return nthis.left.length?this.right.slice(this.right.length-l+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-l+this.left.length).reverse())}splice(n,r,l){const a=r||0;this.setCursor(Math.trunc(n));const s=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return l&&fo(this.left,l),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),fo(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),fo(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n=4?n(u):e.interrupt(l.parser.constructs.flow,r,n)(u)}}function f_(e,n,r,l,a,s,u,f,d){const h=d||Number.POSITIVE_INFINITY;let m=0;return p;function p(_){return _===60?(e.enter(l),e.enter(a),e.enter(s),e.consume(_),e.exit(s),y):_===null||_===32||_===41||qp(_)?r(_):(e.enter(l),e.enter(u),e.enter(f),e.enter("chunkString",{contentType:"string"}),k(_))}function y(_){return _===62?(e.enter(s),e.consume(_),e.exit(s),e.exit(a),e.exit(l),n):(e.enter(f),e.enter("chunkString",{contentType:"string"}),v(_))}function v(_){return _===62?(e.exit("chunkString"),e.exit(f),y(_)):_===null||_===60||Te(_)?r(_):(e.consume(_),_===92?w:v)}function w(_){return _===60||_===62||_===92?(e.consume(_),v):v(_)}function k(_){return!m&&(_===null||_===41||on(_))?(e.exit("chunkString"),e.exit(f),e.exit(u),e.exit(l),n(_)):m999||v===null||v===91||v===93&&!d||v===94&&!f&&"_hiddenFootnoteSupport"in u.parser.constructs?r(v):v===93?(e.exit(s),e.enter(a),e.consume(v),e.exit(a),e.exit(l),n):Te(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===null||v===91||v===93||Te(v)||f++>999?(e.exit("chunkString"),m(v)):(e.consume(v),d||(d=!Ke(v)),v===92?y:p)}function y(v){return v===91||v===92||v===93?(e.consume(v),f++,p):p(v)}}function h_(e,n,r,l,a,s){let u;return f;function f(y){return y===34||y===39||y===40?(e.enter(l),e.enter(a),e.consume(y),e.exit(a),u=y===40?41:y,d):r(y)}function d(y){return y===u?(e.enter(a),e.consume(y),e.exit(a),e.exit(l),n):(e.enter(s),h(y))}function h(y){return y===u?(e.exit(s),d(u)):y===null?r(y):Te(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),st(e,h,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===u||y===null||Te(y)?(e.exit("chunkString"),h(y)):(e.consume(y),y===92?p:m)}function p(y){return y===u||y===92?(e.consume(y),m):m(y)}}function _o(e,n){let r;return l;function l(a){return Te(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,l):Ke(a)?st(e,l,r?"linePrefix":"lineSuffix")(a):n(a)}}const sO={name:"definition",tokenize:cO},uO={partial:!0,tokenize:fO};function cO(e,n,r){const l=this;let a;return s;function s(v){return e.enter("definition"),u(v)}function u(v){return d_.call(l,e,f,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(v)}function f(v){return a=ea(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),v===58?(e.enter("definitionMarker"),e.consume(v),e.exit("definitionMarker"),d):r(v)}function d(v){return on(v)?_o(e,h)(v):h(v)}function h(v){return f_(e,m,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(v)}function m(v){return e.attempt(uO,p,p)(v)}function p(v){return Ke(v)?st(e,y,"whitespace")(v):y(v)}function y(v){return v===null||Te(v)?(e.exit("definition"),l.parser.defined.push(a),n(v)):r(v)}}function fO(e,n,r){return l;function l(f){return on(f)?_o(e,a)(f):r(f)}function a(f){return h_(e,s,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(f)}function s(f){return Ke(f)?st(e,u,"whitespace")(f):u(f)}function u(f){return f===null||Te(f)?n(f):r(f)}}const dO={name:"hardBreakEscape",tokenize:hO};function hO(e,n,r){return l;function l(s){return e.enter("hardBreakEscape"),e.consume(s),a}function a(s){return Te(s)?(e.exit("hardBreakEscape"),n(s)):r(s)}}const pO={name:"headingAtx",resolve:mO,tokenize:gO};function mO(e,n){let r=e.length-2,l=3,a,s;return e[l][1].type==="whitespace"&&(l+=2),r-2>l&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(l===r-1||r-4>l&&e[r-2][1].type==="whitespace")&&(r-=l+1===r?2:4),r>l&&(a={type:"atxHeadingText",start:e[l][1].start,end:e[r][1].end},s={type:"chunkText",start:e[l][1].start,end:e[r][1].end,contentType:"text"},rr(e,l,r-l+1,[["enter",a,n],["enter",s,n],["exit",s,n],["exit",a,n]])),e}function gO(e,n,r){let l=0;return a;function a(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),u(m)}function u(m){return m===35&&l++<6?(e.consume(m),u):m===null||on(m)?(e.exit("atxHeadingSequence"),f(m)):r(m)}function f(m){return m===35?(e.enter("atxHeadingSequence"),d(m)):m===null||Te(m)?(e.exit("atxHeading"),n(m)):Ke(m)?st(e,f,"whitespace")(m):(e.enter("atxHeadingText"),h(m))}function d(m){return m===35?(e.consume(m),d):(e.exit("atxHeadingSequence"),f(m))}function h(m){return m===null||m===35||on(m)?(e.exit("atxHeadingText"),f(m)):(e.consume(m),h)}}const yO=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],lb=["pre","script","style","textarea"],xO={concrete:!0,name:"htmlFlow",resolveTo:wO,tokenize:SO},vO={partial:!0,tokenize:EO},bO={partial:!0,tokenize:_O};function wO(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function SO(e,n,r){const l=this;let a,s,u,f,d;return h;function h(N){return m(N)}function m(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),p}function p(N){return N===33?(e.consume(N),y):N===47?(e.consume(N),s=!0,k):N===63?(e.consume(N),a=3,l.interrupt?n:j):er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function y(N){return N===45?(e.consume(N),a=2,v):N===91?(e.consume(N),a=5,f=0,w):er(N)?(e.consume(N),a=4,l.interrupt?n:j):r(N)}function v(N){return N===45?(e.consume(N),l.interrupt?n:j):r(N)}function w(N){const G="CDATA[";return N===G.charCodeAt(f++)?(e.consume(N),f===G.length?l.interrupt?n:q:w):r(N)}function k(N){return er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function S(N){if(N===null||N===47||N===62||on(N)){const G=N===47,F=u.toLowerCase();return!G&&!s&&lb.includes(F)?(a=1,l.interrupt?n(N):q(N)):yO.includes(u.toLowerCase())?(a=6,G?(e.consume(N),_):l.interrupt?n(N):q(N)):(a=7,l.interrupt&&!l.parser.lazy[l.now().line]?r(N):s?T(N):E(N))}return N===45||bn(N)?(e.consume(N),u+=String.fromCharCode(N),S):r(N)}function _(N){return N===62?(e.consume(N),l.interrupt?n:q):r(N)}function T(N){return Ke(N)?(e.consume(N),T):X(N)}function E(N){return N===47?(e.consume(N),X):N===58||N===95||er(N)?(e.consume(N),z):Ke(N)?(e.consume(N),E):X(N)}function z(N){return N===45||N===46||N===58||N===95||bn(N)?(e.consume(N),z):I(N)}function I(N){return N===61?(e.consume(N),A):Ke(N)?(e.consume(N),I):E(N)}function A(N){return N===null||N===60||N===61||N===62||N===96?r(N):N===34||N===39?(e.consume(N),d=N,R):Ke(N)?(e.consume(N),A):D(N)}function R(N){return N===d?(e.consume(N),d=null,U):N===null||Te(N)?r(N):(e.consume(N),R)}function D(N){return N===null||N===34||N===39||N===47||N===60||N===61||N===62||N===96||on(N)?I(N):(e.consume(N),D)}function U(N){return N===47||N===62||Ke(N)?E(N):r(N)}function X(N){return N===62?(e.consume(N),B):r(N)}function B(N){return N===null||Te(N)?q(N):Ke(N)?(e.consume(N),B):r(N)}function q(N){return N===45&&a===2?(e.consume(N),M):N===60&&a===1?(e.consume(N),Y):N===62&&a===4?(e.consume(N),H):N===63&&a===3?(e.consume(N),j):N===93&&a===5?(e.consume(N),K):Te(N)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(vO,P,ee)(N)):N===null||Te(N)?(e.exit("htmlFlowData"),ee(N)):(e.consume(N),q)}function ee(N){return e.check(bO,L,P)(N)}function L(N){return e.enter("lineEnding"),e.consume(N),e.exit("lineEnding"),$}function $(N){return N===null||Te(N)?ee(N):(e.enter("htmlFlowData"),q(N))}function M(N){return N===45?(e.consume(N),j):q(N)}function Y(N){return N===47?(e.consume(N),u="",Q):q(N)}function Q(N){if(N===62){const G=u.toLowerCase();return lb.includes(G)?(e.consume(N),H):q(N)}return er(N)&&u.length<8?(e.consume(N),u+=String.fromCharCode(N),Q):q(N)}function K(N){return N===93?(e.consume(N),j):q(N)}function j(N){return N===62?(e.consume(N),H):N===45&&a===2?(e.consume(N),j):q(N)}function H(N){return N===null||Te(N)?(e.exit("htmlFlowData"),P(N)):(e.consume(N),H)}function P(N){return e.exit("htmlFlow"),n(N)}}function _O(e,n,r){const l=this;return a;function a(u){return Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s):r(u)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}function EO(e,n,r){return l;function l(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(Ec,n,r)}}const NO={name:"htmlText",tokenize:kO};function kO(e,n,r){const l=this;let a,s,u;return f;function f(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),d}function d(j){return j===33?(e.consume(j),h):j===47?(e.consume(j),I):j===63?(e.consume(j),E):er(j)?(e.consume(j),D):r(j)}function h(j){return j===45?(e.consume(j),m):j===91?(e.consume(j),s=0,w):er(j)?(e.consume(j),T):r(j)}function m(j){return j===45?(e.consume(j),v):r(j)}function p(j){return j===null?r(j):j===45?(e.consume(j),y):Te(j)?(u=p,Y(j)):(e.consume(j),p)}function y(j){return j===45?(e.consume(j),v):p(j)}function v(j){return j===62?M(j):j===45?y(j):p(j)}function w(j){const H="CDATA[";return j===H.charCodeAt(s++)?(e.consume(j),s===H.length?k:w):r(j)}function k(j){return j===null?r(j):j===93?(e.consume(j),S):Te(j)?(u=k,Y(j)):(e.consume(j),k)}function S(j){return j===93?(e.consume(j),_):k(j)}function _(j){return j===62?M(j):j===93?(e.consume(j),_):k(j)}function T(j){return j===null||j===62?M(j):Te(j)?(u=T,Y(j)):(e.consume(j),T)}function E(j){return j===null?r(j):j===63?(e.consume(j),z):Te(j)?(u=E,Y(j)):(e.consume(j),E)}function z(j){return j===62?M(j):E(j)}function I(j){return er(j)?(e.consume(j),A):r(j)}function A(j){return j===45||bn(j)?(e.consume(j),A):R(j)}function R(j){return Te(j)?(u=R,Y(j)):Ke(j)?(e.consume(j),R):M(j)}function D(j){return j===45||bn(j)?(e.consume(j),D):j===47||j===62||on(j)?U(j):r(j)}function U(j){return j===47?(e.consume(j),M):j===58||j===95||er(j)?(e.consume(j),X):Te(j)?(u=U,Y(j)):Ke(j)?(e.consume(j),U):M(j)}function X(j){return j===45||j===46||j===58||j===95||bn(j)?(e.consume(j),X):B(j)}function B(j){return j===61?(e.consume(j),q):Te(j)?(u=B,Y(j)):Ke(j)?(e.consume(j),B):U(j)}function q(j){return j===null||j===60||j===61||j===62||j===96?r(j):j===34||j===39?(e.consume(j),a=j,ee):Te(j)?(u=q,Y(j)):Ke(j)?(e.consume(j),q):(e.consume(j),L)}function ee(j){return j===a?(e.consume(j),a=void 0,$):j===null?r(j):Te(j)?(u=ee,Y(j)):(e.consume(j),ee)}function L(j){return j===null||j===34||j===39||j===60||j===61||j===96?r(j):j===47||j===62||on(j)?U(j):(e.consume(j),L)}function $(j){return j===47||j===62||on(j)?U(j):r(j)}function M(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),n):r(j)}function Y(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),Q}function Q(j){return Ke(j)?st(e,K,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):K(j)}function K(j){return e.enter("htmlTextData"),u(j)}}const Nm={name:"labelEnd",resolveAll:AO,resolveTo:MO,tokenize:jO},CO={tokenize:OO},TO={tokenize:DO},zO={tokenize:RO};function AO(e){let n=-1;const r=[];for(;++n=3&&(h===null||Te(h))?(e.exit("thematicBreak"),n(h)):r(h)}function d(h){return h===a?(e.consume(h),l++,d):(e.exit("thematicBreakSequence"),Ke(h)?st(e,f,"whitespace")(h):f(h))}}const ln={continuation:{tokenize:$O},exit:XO,name:"list",tokenize:YO},VO={partial:!0,tokenize:FO},GO={partial:!0,tokenize:PO};function YO(e,n,r){const l=this,a=l.events[l.events.length-1];let s=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return f;function f(v){const w=l.containerState.type||(v===42||v===43||v===45?"listUnordered":"listOrdered");if(w==="listUnordered"?!l.containerState.marker||v===l.containerState.marker:Up(v)){if(l.containerState.type||(l.containerState.type=w,e.enter(w,{_container:!0})),w==="listUnordered")return e.enter("listItemPrefix"),v===42||v===45?e.check(Yu,r,h)(v):h(v);if(!l.interrupt||v===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),d(v)}return r(v)}function d(v){return Up(v)&&++u<10?(e.consume(v),d):(!l.interrupt||u<2)&&(l.containerState.marker?v===l.containerState.marker:v===41||v===46)?(e.exit("listItemValue"),h(v)):r(v)}function h(v){return e.enter("listItemMarker"),e.consume(v),e.exit("listItemMarker"),l.containerState.marker=l.containerState.marker||v,e.check(Ec,l.interrupt?r:m,e.attempt(VO,y,p))}function m(v){return l.containerState.initialBlankLine=!0,s++,y(v)}function p(v){return Ke(v)?(e.enter("listItemPrefixWhitespace"),e.consume(v),e.exit("listItemPrefixWhitespace"),y):r(v)}function y(v){return l.containerState.size=s+l.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(v)}}function $O(e,n,r){const l=this;return l.containerState._closeFlow=void 0,e.check(Ec,a,s);function a(f){return l.containerState.furtherBlankLines=l.containerState.furtherBlankLines||l.containerState.initialBlankLine,st(e,n,"listItemIndent",l.containerState.size+1)(f)}function s(f){return l.containerState.furtherBlankLines||!Ke(f)?(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,u(f)):(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,e.attempt(GO,n,u)(f))}function u(f){return l.containerState._closeFlow=!0,l.interrupt=void 0,st(e,e.attempt(ln,n,r),"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(f)}}function PO(e,n,r){const l=this;return st(e,a,"listItemIndent",l.containerState.size+1);function a(s){const u=l.events[l.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===l.containerState.size?n(s):r(s)}}function XO(e){e.exit(this.containerState.type)}function FO(e,n,r){const l=this;return st(e,a,"listItemPrefixWhitespace",l.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(s){const u=l.events[l.events.length-1];return!Ke(s)&&u&&u[1].type==="listItemPrefixWhitespace"?n(s):r(s)}}const ab={name:"setextUnderline",resolveTo:QO,tokenize:ZO};function QO(e,n){let r=e.length,l,a,s;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){l=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!s&&e[r][1].type==="definition"&&(s=r);const u={type:"setextHeading",start:{...e[l][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",s?(e.splice(a,0,["enter",u,n]),e.splice(s+1,0,["exit",e[l][1],n]),e[l][1].end={...e[s][1].end}):e[l][1]=u,e.push(["exit",u,n]),e}function ZO(e,n,r){const l=this;let a;return s;function s(h){let m=l.events.length,p;for(;m--;)if(l.events[m][1].type!=="lineEnding"&&l.events[m][1].type!=="linePrefix"&&l.events[m][1].type!=="content"){p=l.events[m][1].type==="paragraph";break}return!l.parser.lazy[l.now().line]&&(l.interrupt||p)?(e.enter("setextHeadingLine"),a=h,u(h)):r(h)}function u(h){return e.enter("setextHeadingLineSequence"),f(h)}function f(h){return h===a?(e.consume(h),f):(e.exit("setextHeadingLineSequence"),Ke(h)?st(e,d,"lineSuffix")(h):d(h))}function d(h){return h===null||Te(h)?(e.exit("setextHeadingLine"),n(h)):r(h)}}const KO={tokenize:JO};function JO(e){const n=this,r=e.attempt(Ec,l,e.attempt(this.parser.constructs.flowInitial,a,st(e,e.attempt(this.parser.constructs.flow,a,e.attempt(rO,a)),"linePrefix")));return r;function l(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),n.currentConstruct=void 0,r}function a(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),n.currentConstruct=void 0,r}}const WO={resolveAll:m_()},eD=p_("string"),tD=p_("text");function p_(e){return{resolveAll:m_(e==="text"?nD:void 0),tokenize:n};function n(r){const l=this,a=this.parser.constructs[e],s=r.attempt(a,u,f);return u;function u(m){return h(m)?s(m):f(m)}function f(m){if(m===null){r.consume(m);return}return r.enter("data"),r.consume(m),d}function d(m){return h(m)?(r.exit("data"),s(m)):(r.consume(m),d)}function h(m){if(m===null)return!0;const p=a[m];let y=-1;if(p)for(;++y-1){const f=u[0];typeof f=="string"?u[0]=f.slice(l):u.shift()}s>0&&u.push(e[a].slice(0,s))}return u}function mD(e,n){let r=-1;const l=[];let a;for(;++r0){const Xt=Ne.tokenStack[Ne.tokenStack.length-1];(Xt[1]||sb).call(Ne,void 0,Xt[0])}for(ge.position={start:fi(ue.length>0?ue[0][1].start:{line:1,column:1,offset:0}),end:fi(ue.length>0?ue[ue.length-2][1].end:{line:1,column:1,offset:0})},Ye=-1;++Ye0&&(l.className=["language-"+a[0]]);let s={type:"element",tagName:"code",properties:l,children:[{type:"text",value:r}]};return n.meta&&(s.data={meta:n.meta}),e.patch(n,s),s=e.applyData(n,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(n,s),s}function zD(e,n){const r={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function AD(e,n){const r={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function MD(e,n){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",l=String(n.identifier).toUpperCase(),a=ua(l.toLowerCase()),s=e.footnoteOrder.indexOf(l);let u,f=e.footnoteCounts.get(l);f===void 0?(f=0,e.footnoteOrder.push(l),u=e.footnoteOrder.length):u=s+1,f+=1,e.footnoteCounts.set(l,f);const d={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(f>1?"-"+f:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,d);const h={type:"element",tagName:"sup",properties:{},children:[d]};return e.patch(n,h),e.applyData(n,h)}function jD(e,n){const r={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function OD(e,n){if(e.options.allowDangerousHtml){const r={type:"raw",value:n.value};return e.patch(n,r),e.applyData(n,r)}}function x_(e,n){const r=n.referenceType;let l="]";if(r==="collapsed"?l+="[]":r==="full"&&(l+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+l}];const a=e.all(n),s=a[0];s&&s.type==="text"?s.value="["+s.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=l:a.push({type:"text",value:l}),a}function DD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return x_(e,n);const a={src:ua(l.url||""),alt:n.alt};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"img",properties:a,children:[]};return e.patch(n,s),e.applyData(n,s)}function RD(e,n){const r={src:ua(n.url)};n.alt!==null&&n.alt!==void 0&&(r.alt=n.alt),n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"img",properties:r,children:[]};return e.patch(n,l),e.applyData(n,l)}function LD(e,n){const r={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,r);const l={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(n,l),e.applyData(n,l)}function HD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return x_(e,n);const a={href:ua(l.url||"")};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"a",properties:a,children:e.all(n)};return e.patch(n,s),e.applyData(n,s)}function BD(e,n){const r={href:ua(n.url)};n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"a",properties:r,children:e.all(n)};return e.patch(n,l),e.applyData(n,l)}function qD(e,n,r){const l=e.all(n),a=r?UD(r):v_(n),s={},u=[];if(typeof n.checked=="boolean"){const m=l[0];let p;m&&m.type==="element"&&m.tagName==="p"?p=m:(p={type:"element",tagName:"p",properties:{},children:[]},l.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let f=-1;for(;++f1}function ID(e,n){const r={},l=e.all(n);let a=-1;for(typeof n.start=="number"&&n.start!==1&&(r.start=n.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},f=vm(n.children[1]),d=WS(n.children[n.children.length-1]);f&&d&&(u.position={start:f,end:d}),a.push(u)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(n,s),e.applyData(n,s)}function PD(e,n,r){const l=r?r.children:void 0,s=(l?l.indexOf(n):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,f=u?u.length:n.children.length;let d=-1;const h=[];for(;++d0,!0),l[0]),a=l.index+l[0].length,l=r.exec(n);return s.push(fb(n.slice(a),a>0,!1)),s.join("")}function fb(e,n,r){let l=0,a=e.length;if(n){let s=e.codePointAt(l);for(;s===ub||s===cb;)l++,s=e.codePointAt(l)}if(r){let s=e.codePointAt(a-1);for(;s===ub||s===cb;)a--,s=e.codePointAt(a-1)}return a>l?e.slice(l,a):""}function QD(e,n){const r={type:"text",value:FD(String(n.value))};return e.patch(n,r),e.applyData(n,r)}function ZD(e,n){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,r),e.applyData(n,r)}const KD={blockquote:kD,break:CD,code:TD,delete:zD,emphasis:AD,footnoteReference:MD,heading:jD,html:OD,imageReference:DD,image:RD,inlineCode:LD,linkReference:HD,link:BD,listItem:qD,list:ID,paragraph:VD,root:GD,strong:YD,table:$D,tableCell:XD,tableRow:PD,text:QD,thematicBreak:ZD,toml:Du,yaml:Du,definition:Du,footnoteDefinition:Du};function Du(){}const b_=-1,Nc=0,Eo=1,ac=2,km=3,Cm=4,Tm=5,zm=6,w_=7,S_=8,db=typeof self=="object"?self:globalThis,JD=(e,n)=>{const r=(a,s)=>(e.set(s,a),a),l=a=>{if(e.has(a))return e.get(a);const[s,u]=n[a];switch(s){case Nc:case b_:return r(u,a);case Eo:{const f=r([],a);for(const d of u)f.push(l(d));return f}case ac:{const f=r({},a);for(const[d,h]of u)f[l(d)]=l(h);return f}case km:return r(new Date(u),a);case Cm:{const{source:f,flags:d}=u;return r(new RegExp(f,d),a)}case Tm:{const f=r(new Map,a);for(const[d,h]of u)f.set(l(d),l(h));return f}case zm:{const f=r(new Set,a);for(const d of u)f.add(l(d));return f}case w_:{const{name:f,message:d}=u;return r(new db[f](d),a)}case S_:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:f}=new Uint8Array(u);return r(new DataView(f),u)}}return r(new db[s](u),a)};return l},hb=e=>JD(new Map,e)(0),Gl="",{toString:WD}={},{keys:eR}=Object,ho=e=>{const n=typeof e;if(n!=="object"||!e)return[Nc,n];const r=WD.call(e).slice(8,-1);switch(r){case"Array":return[Eo,Gl];case"Object":return[ac,Gl];case"Date":return[km,Gl];case"RegExp":return[Cm,Gl];case"Map":return[Tm,Gl];case"Set":return[zm,Gl];case"DataView":return[Eo,r]}return r.includes("Array")?[Eo,r]:r.includes("Error")?[w_,r]:[ac,r]},Ru=([e,n])=>e===Nc&&(n==="function"||n==="symbol"),tR=(e,n,r,l)=>{const a=(u,f)=>{const d=l.push(u)-1;return r.set(f,d),d},s=u=>{if(r.has(u))return r.get(u);let[f,d]=ho(u);switch(f){case Nc:{let m=u;switch(d){case"bigint":f=S_,m=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+d);m=null;break;case"undefined":return a([b_],u)}return a([f,m],u)}case Eo:{if(d){let y=u;return d==="DataView"?y=new Uint8Array(u.buffer):d==="ArrayBuffer"&&(y=new Uint8Array(u)),a([d,[...y]],u)}const m=[],p=a([f,m],u);for(const y of u)m.push(s(y));return p}case ac:{if(d)switch(d){case"BigInt":return a([d,u.toString()],u);case"Boolean":case"Number":case"String":return a([d,u.valueOf()],u)}if(n&&"toJSON"in u)return s(u.toJSON());const m=[],p=a([f,m],u);for(const y of eR(u))(e||!Ru(ho(u[y])))&&m.push([s(y),s(u[y])]);return p}case km:return a([f,u.toISOString()],u);case Cm:{const{source:m,flags:p}=u;return a([f,{source:m,flags:p}],u)}case Tm:{const m=[],p=a([f,m],u);for(const[y,v]of u)(e||!(Ru(ho(y))||Ru(ho(v))))&&m.push([s(y),s(v)]);return p}case zm:{const m=[],p=a([f,m],u);for(const y of u)(e||!Ru(ho(y)))&&m.push(s(y));return p}}const{message:h}=u;return a([f,{name:d,message:h}],u)};return s},pb=(e,{json:n,lossy:r}={})=>{const l=[];return tR(!(n||r),!!n,new Map,l)(e),l},oc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?hb(pb(e,n)):structuredClone(e):(e,n)=>hb(pb(e,n));function nR(e,n){const r=[{type:"text",value:"↩"}];return n>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),r}function rR(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function iR(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||nR,l=e.options.footnoteBackLabel||rR,a=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},f=[];let d=-1;for(;++d0&&w.push({type:"text",value:" "});let T=typeof r=="string"?r:r(d,v);typeof T=="string"&&(T={type:"text",value:T}),w.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+y+(v>1?"-"+v:""),dataFootnoteBackref:"",ariaLabel:typeof l=="string"?l:l(d,v),className:["data-footnote-backref"]},children:Array.isArray(T)?T:[T]})}const S=m[m.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const T=S.children[S.children.length-1];T&&T.type==="text"?T.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...w)}else m.push(...w);const _={type:"element",tagName:"li",properties:{id:n+"fn-"+y},children:e.wrap(m,!0)};e.patch(h,_),f.push(_)}if(f.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...oc(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(f,!0)},{type:"text",value:` +`}]}}const __=(function(e){if(e==null)return sR;if(typeof e=="function")return kc(e);if(typeof e=="object")return Array.isArray(e)?lR(e):aR(e);if(typeof e=="string")return oR(e);throw new Error("Expected function, string, or object as test")});function lR(e){const n=[];let r=-1;for(;++r":""))+")"})}return y;function y(){let v=E_,w,k,S;if((!n||s(d,h,m[m.length-1]||void 0))&&(v=hR(r(d,m)),v[0]===mb))return v;if("children"in d&&d.children){const _=d;if(_.children&&v[0]!==fR)for(k=(l?_.children.length:-1)+u,S=m.concat(_);k>-1&&k<_.children.length;){const T=_.children[k];if(w=f(T,k,S)(),w[0]===mb)return w;k=typeof w[1]=="number"?w[1]:k+u}}return v}}}function hR(e){return Array.isArray(e)?e:typeof e=="number"?[cR,e]:e==null?E_:[e]}function N_(e,n,r,l){let a,s,u;typeof n=="function"&&typeof r!="function"?(s=void 0,u=n,a=r):(s=n,u=r,a=l),dR(e,s,f,a);function f(d,h){const m=h[h.length-1],p=m?m.children.indexOf(d):void 0;return u(d,p,m)}}const Vp={}.hasOwnProperty,pR={};function mR(e,n){const r=n||pR,l=new Map,a=new Map,s=new Map,u={...KD,...r.handlers},f={all:h,applyData:yR,definitionById:l,footnoteById:a,footnoteCounts:s,footnoteOrder:[],handlers:u,one:d,options:r,patch:gR,wrap:vR};return N_(e,function(m){if(m.type==="definition"||m.type==="footnoteDefinition"){const p=m.type==="definition"?l:a,y=String(m.identifier).toUpperCase();p.has(y)||p.set(y,m)}}),f;function d(m,p){const y=m.type,v=f.handlers[y];if(Vp.call(f.handlers,y)&&v)return v(f,m,p);if(f.options.passThrough&&f.options.passThrough.includes(y)){if("children"in m){const{children:k,...S}=m,_=oc(S);return _.children=f.all(m),_}return oc(m)}return(f.options.unknownHandler||xR)(f,m,p)}function h(m){const p=[];if("children"in m){const y=m.children;let v=-1;for(;++v0&&r.push({type:"text",value:` +`}),r}function gb(e){let n=0,r=e.charCodeAt(n);for(;r===9||r===32;)n++,r=e.charCodeAt(n);return e.slice(n)}function yb(e,n){const r=mR(e,n),l=r.one(e,void 0),a=iR(r),s=Array.isArray(l)?{type:"root",children:l}:l||{type:"root",children:[]};return a&&s.children.push({type:"text",value:` +`},a),s}function bR(e,n){return e&&"run"in e?async function(r,l){const a=yb(r,{file:l,...n});await e.run(a,l)}:function(r,l){return yb(r,{file:l,...e||n})}}function xb(e){if(e)throw e}var sp,vb;function wR(){if(vb)return sp;vb=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,l=Object.getOwnPropertyDescriptor,a=function(h){return typeof Array.isArray=="function"?Array.isArray(h):n.call(h)==="[object Array]"},s=function(h){if(!h||n.call(h)!=="[object Object]")return!1;var m=e.call(h,"constructor"),p=h.constructor&&h.constructor.prototype&&e.call(h.constructor.prototype,"isPrototypeOf");if(h.constructor&&!m&&!p)return!1;var y;for(y in h);return typeof y>"u"||e.call(h,y)},u=function(h,m){r&&m.name==="__proto__"?r(h,m.name,{enumerable:!0,configurable:!0,value:m.newValue,writable:!0}):h[m.name]=m.newValue},f=function(h,m){if(m==="__proto__")if(e.call(h,m)){if(l)return l(h,m).value}else return;return h[m]};return sp=function d(){var h,m,p,y,v,w,k=arguments[0],S=1,_=arguments.length,T=!1;for(typeof k=="boolean"&&(T=k,k=arguments[1]||{},S=2),(k==null||typeof k!="object"&&typeof k!="function")&&(k={});S<_;++S)if(h=arguments[S],h!=null)for(m in h)p=f(k,m),y=f(h,m),k!==y&&(T&&y&&(s(y)||(v=a(y)))?(v?(v=!1,w=p&&a(p)?p:[]):w=p&&s(p)?p:{},u(k,{name:m,newValue:d(T,w,y)})):typeof y<"u"&&u(k,{name:m,newValue:y}));return k},sp}var SR=wR();const up=Bo(SR);function Gp(e){if(typeof e!="object"||e===null)return!1;const n=Object.getPrototypeOf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _R(){const e=[],n={run:r,use:l};return n;function r(...a){let s=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);f(null,...a);function f(d,...h){const m=e[++s];let p=-1;if(d){u(d);return}for(;++pu.length;let d;f&&u.push(a);try{d=e.apply(this,u)}catch(h){const m=h;if(f&&r)throw m;return a(m)}f||(d&&d.then&&typeof d.then=="function"?d.then(s,a):d instanceof Error?a(d):s(d))}function a(u,...f){r||(r=!0,n(u,...f))}function s(u){a(null,u)}}const Jn={basename:NR,dirname:kR,extname:CR,join:TR,sep:"/"};function NR(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Zo(e);let r=0,l=-1,a=e.length,s;if(n===void 0||n.length===0||n.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else l<0&&(s=!0,l=a+1);return l<0?"":e.slice(r,l)}if(n===e)return"";let u=-1,f=n.length-1;for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else u<0&&(s=!0,u=a+1),f>-1&&(e.codePointAt(a)===n.codePointAt(f--)?f<0&&(l=a):(f=-1,l=u));return r===l?l=u:l<0&&(l=e.length),e.slice(r,l)}function kR(e){if(Zo(e),e.length===0)return".";let n=-1,r=e.length,l;for(;--r;)if(e.codePointAt(r)===47){if(l){n=r;break}}else l||(l=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function CR(e){Zo(e);let n=e.length,r=-1,l=0,a=-1,s=0,u;for(;n--;){const f=e.codePointAt(n);if(f===47){if(u){l=n+1;break}continue}r<0&&(u=!0,r=n+1),f===46?a<0?a=n:s!==1&&(s=1):a>-1&&(s=-1)}return a<0||r<0||s===0||s===1&&a===r-1&&a===l+1?"":e.slice(a,r)}function TR(...e){let n=-1,r;for(;++n0&&e.codePointAt(e.length-1)===47&&(r+="/"),n?"/"+r:r}function AR(e,n){let r="",l=0,a=-1,s=0,u=-1,f,d;for(;++u<=e.length;){if(u2){if(d=r.lastIndexOf("/"),d!==r.length-1){d<0?(r="",l=0):(r=r.slice(0,d),l=r.length-1-r.lastIndexOf("/")),a=u,s=0;continue}}else if(r.length>0){r="",l=0,a=u,s=0;continue}}n&&(r=r.length>0?r+"/..":"..",l=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),l=u-a-1;a=u,s=0}else f===46&&s>-1?s++:s=-1}return r}function Zo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const MR={cwd:jR};function jR(){return"/"}function Yp(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function OR(e){if(typeof e=="string")e=new URL(e);else if(!Yp(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return DR(e)}function DR(e){if(e.hostname!==""){const l=new TypeError('File URL host must be "localhost" or empty on darwin');throw l.code="ERR_INVALID_FILE_URL_HOST",l}const n=e.pathname;let r=-1;for(;++r0){let[v,...w]=m;const k=l[y][1];Gp(k)&&Gp(v)&&(v=up(!0,k,v)),l[y]=[h,v,...w]}}}}const BR=new Am().freeze();function hp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function pp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function mp(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function wb(e){if(!Gp(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Sb(e,n,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Lu(e){return qR(e)?e:new k_(e)}function qR(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function UR(e){return typeof e=="string"||IR(e)}function IR(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const VR="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",_b=[],Eb={allowDangerousHtml:!0},GR=/^(https?|ircs?|mailto|xmpp)$/i,YR=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function $R(e){const n=PR(e),r=XR(e);return FR(n.runSync(n.parse(r),r),e)}function PR(e){const n=e.rehypePlugins||_b,r=e.remarkPlugins||_b,l=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Eb}:Eb;return BR().use(ND).use(r).use(bR,l).use(n)}function XR(e){const n=e.children||"",r=new k_;return typeof n=="string"&&(r.value=n),r}function FR(e,n){const r=n.allowedElements,l=n.allowElement,a=n.components,s=n.disallowedElements,u=n.skipHtml,f=n.unwrapDisallowed,d=n.urlTransform||QR;for(const m of YR)Object.hasOwn(n,m.from)&&(""+m.from+(m.to?"use `"+m.to+"` instead":"remove it")+VR+m.id,void 0);return N_(e,h),i4(e,{Fragment:b.Fragment,components:a,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function h(m,p,y){if(m.type==="raw"&&y&&typeof p=="number")return u?y.children.splice(p,1):y.children[p]={type:"text",value:m.value},p;if(m.type==="element"){let v;for(v in lp)if(Object.hasOwn(lp,v)&&Object.hasOwn(m.properties,v)){const w=m.properties[v],k=lp[v];(k===null||k.includes(m.tagName))&&(m.properties[v]=d(String(w||""),v,m))}}if(m.type==="element"){let v=r?!r.includes(m.tagName):s?s.includes(m.tagName):!1;if(!v&&l&&typeof p=="number"&&(v=!l(m,p,y)),v&&y&&typeof p=="number")return f&&m.children?y.children.splice(p,1,...m.children):y.children.splice(p,1),p}}}function QR(e){const n=e.indexOf(":"),r=e.indexOf("?"),l=e.indexOf("#"),a=e.indexOf("/");return n===-1||a!==-1&&n>a||r!==-1&&n>r||l!==-1&&n>l||GR.test(e.slice(0,n))?e:""}function ZR({node:e}){const n=he(E=>E.sendGateResponse),r=he(E=>E.wsStatus),[l,a]=V.useState(null),[s,u]=V.useState(""),[f,d]=V.useState(null),[h,m]=V.useState(!1),p=e.status==="waiting",y=e.status==="completed";V.useEffect(()=>{p&&(a(null),u(""),d(null),m(!1))},[p]);const v=p&&r==="connected"&&l===null,w=(E,z)=>{if(v){if(z){a(E),d(z);return}a(E),m(!0),n(e.name,E)}},k=()=>{if(l===null||f===null)return;const E={[f]:s};m(!0),n(e.name,l,E),d(null)},S=e.option_details,_=S==null?void 0:S.find(E=>E.value===e.selected_option),T=(_==null?void 0:_.label)||e.selected_option;return b.jsxs("div",{className:"space-y-3",children:[p&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30",children:[b.jsxs("span",{className:"relative flex h-2.5 w-2.5 flex-shrink-0",children:[b.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),b.jsx("span",{className:"relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"})]}),b.jsx("span",{className:"text-xs font-semibold text-amber-400 tracking-wide",children:"Decision Required"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-amber-500/50 pl-3 py-0.5",children:b.jsx(gp,{text:e.prompt,muted:!1})}),S&&S.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsx("div",{className:"flex flex-col gap-1.5",children:S.map(E=>{const z=l===E.value,I=l!==null&&!z;return b.jsx("button",{disabled:!v&&!z,onClick:()=>w(E.value,E.prompt_for),className:`w-full text-left px-3 py-2.5 rounded-lg border transition-all duration-150 ${z?"border-green-500/60 bg-green-500/10":I?"border-[var(--border)] opacity-40 cursor-default":"border-[var(--border)] bg-[var(--surface)] hover:border-amber-400/60 hover:bg-amber-500/5 cursor-pointer group"}`,children:b.jsxs("div",{className:"flex items-center gap-2.5",children:[b.jsx("div",{className:"flex-shrink-0",children:z?b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}):b.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-colors ${I?"border-[var(--border)]":"border-[var(--border)] group-hover:border-amber-400"}`})}),b.jsx("div",{className:"flex-1 min-w-0",children:b.jsx("span",{className:`text-xs font-medium ${z?"text-green-400":"text-[var(--text)]"}`,children:E.label})}),E.route&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0",children:["→ ",E.route]})]})},E.value)})}),h&&!f&&b.jsxs("div",{className:"flex items-center gap-2 px-1",children:[b.jsx(No,{className:"w-3 h-3 text-green-400 animate-spin"}),b.jsx("span",{className:"text-[10px] text-green-400",children:"Sending..."})]}),v&&b.jsx("p",{className:"text-[10px] text-[var(--text-muted)] px-1",children:"Select an option to continue the workflow"})]}),!S&&e.options&&e.options.length>0&&b.jsxs("div",{className:"space-y-1.5",children:[b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:"Options"}),b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded border border-[var(--border)] text-[var(--text-muted)]",children:E},E))})]}),f&&b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--bg)] overflow-hidden",children:[b.jsx("div",{className:"px-3 py-2 border-b border-[var(--border)] bg-[var(--surface)]",children:b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:f})}),b.jsxs("div",{className:"p-3 space-y-2",children:[b.jsx("input",{type:"text",value:s,onChange:E=>u(E.target.value),onKeyDown:E=>E.key==="Enter"&&k(),placeholder:`Enter ${f}...`,className:"w-full text-xs px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--bg)] text-[var(--text)] outline-none focus:border-amber-400 transition-colors",autoFocus:!0}),b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:"Press Enter or click Submit"}),b.jsxs("button",{onClick:k,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-amber-500 text-white hover:bg-amber-600 transition-colors font-medium",children:[b.jsx(sN,{className:"w-3 h-3"}),"Submit"]})]})]})]})]}),y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-green-500/10 border border-green-500/30",children:[b.jsx(Vi,{className:"w-3.5 h-3.5 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-green-400 tracking-wide",children:"Decision Completed"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(gp,{text:e.prompt,muted:!0})}),T&&b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)]",children:T}),e.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",e.route]})]}),S&&S.length>1&&b.jsx("div",{className:"space-y-1",children:S.filter(E=>E.value!==e.selected_option).map(E=>b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg opacity-35",children:[b.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-[var(--border)] flex-shrink-0"}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:E.label}),E.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",E.route]})]},E.value))}),!S&&e.options&&e.options.length>0&&b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsxs("span",{className:`text-[11px] px-2.5 py-1 rounded-lg border ${E===e.selected_option?"border-green-500/30 text-green-400 bg-green-500/5":"border-[var(--border)] text-[var(--text-muted)] opacity-40"}`,children:[E===e.selected_option&&"✓ ",E]},E))}),b.jsx(KR,{node:e})]}),!p&&!y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Human Gate"}),b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] capitalize",children:["(",e.status,")"]})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(gp,{text:e.prompt,muted:!0})})]})]})}function gp({text:e,muted:n}){const r=n?"text-[var(--text-muted)]":"text-[var(--text)]";return b.jsx("div",{className:`gate-markdown text-xs leading-relaxed ${r}`,children:b.jsx($R,{components:{h1:({children:l})=>b.jsx("h1",{className:"text-sm font-bold mb-2 mt-1",children:l}),h2:({children:l})=>b.jsx("h2",{className:"text-xs font-bold mb-1.5 mt-1",children:l}),h3:({children:l})=>b.jsx("h3",{className:"text-xs font-semibold mb-1 mt-1",children:l}),p:({children:l})=>b.jsx("p",{className:"mb-1.5 last:mb-0",children:l}),ul:({children:l})=>b.jsx("ul",{className:"list-disc list-inside mb-1.5 space-y-0.5",children:l}),ol:({children:l})=>b.jsx("ol",{className:"list-decimal list-inside mb-1.5 space-y-0.5",children:l}),li:({children:l})=>b.jsx("li",{children:l}),code:({children:l,className:a})=>(a==null?void 0:a.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-2 py-1.5 font-mono text-[11px] my-1 overflow-x-auto whitespace-pre",children:l}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:l}),pre:({children:l})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-2.5 py-2 font-mono text-[11px] my-1.5 overflow-x-auto",children:l}),strong:({children:l})=>b.jsx("strong",{className:"font-semibold",children:l}),em:({children:l})=>b.jsx("em",{className:"italic",children:l}),a:({href:l,children:a})=>b.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:a}),blockquote:({children:l})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-2.5 my-1.5 opacity-80",children:l}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-2"})},children:e})})}function KR({node:e}){const n=[];if(e.route&&n.push({label:"Route",value:`→ ${e.route}`}),e.additional_input){const r=typeof e.additional_input=="object"?JSON.stringify(e.additional_input):e.additional_input;n.push({label:"Additional Input",value:r})}return n.length===0?null:b.jsx(Wi,{items:n})}function JR({node:e}){const n=e.status,r=$e[n]||$e.pending,a=he(m=>m.getViewedContext()).groupProgress[e.name],s=e.type==="for_each_group",[u,f]=V.useState(!0),d=[];e.elapsed!=null&&d.push({label:"Elapsed",value:Qt(e.elapsed)}),a&&(d.push({label:"Total",value:a.total}),d.push({label:"Completed",value:a.completed}),a.failed>0&&d.push({label:"Failed",value:a.failed})),e.success_count!=null&&d.push({label:"Success",value:e.success_count}),e.failure_count!=null&&d.push({label:"Failures",value:e.failure_count});const h=e.for_each_items;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:s?"For-Each Group":"Parallel Group"})]}),a&&a.total>0&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-[10px] text-[var(--text-muted)]",children:[b.jsx("span",{children:"Progress"}),b.jsxs("span",{children:[a.completed+a.failed,"/",a.total]})]}),b.jsx("div",{className:"h-1.5 bg-[var(--bg)] rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${(a.completed+a.failed)/a.total*100}%`,background:a.failed>0?`linear-gradient(90deg, var(--completed) ${a.completed/(a.completed+a.failed)*100}%, var(--failed) 0%)`:"var(--completed)"}})})]}),b.jsx(Wi,{items:d}),s&&h&&h.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold hover:text-[var(--text)] transition-colors",children:[u?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Items (",h.length,")"]}),u&&b.jsx("div",{className:"space-y-1",children:h.map(m=>b.jsx(e6,{item:m},`${m.key}-${m.index}`))})]})]})}const WR={running:$e.running,completed:$e.completed,failed:$e.failed};function e6({item:e}){const[n,r]=V.useState(e.status==="running"),l=WR[e.status],a=!!(e.prompt||e.output!=null||e.activity&&e.activity.length>0||e.error_type),s=[];return e.elapsed!=null&&s.push({label:"Elapsed",value:Qt(e.elapsed)}),e.tokens!=null&&s.push({label:"Tokens",value:Vn(e.tokens)}),e.cost_usd!=null&&s.push({label:"Cost",value:mi(e.cost_usd)}),b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--surface)] overflow-hidden",children:[b.jsxs("button",{onClick:()=>a&&r(!n),className:"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--node-bg)] transition-colors",disabled:!a,children:[a?n?b.jsx(Ji,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):e.status==="running"?b.jsx(No,{className:"w-3 h-3 animate-spin flex-shrink-0",style:{color:l}}):b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0 ml-0.5 mr-0.5",style:{backgroundColor:l}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1 min-w-0",children:e.key}),!n&&(e.elapsed!=null||e.tokens!=null||e.cost_usd!=null)&&b.jsxs("span",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)] flex-shrink-0",children:[e.elapsed!=null&&b.jsx("span",{children:Qt(e.elapsed)}),e.tokens!=null&&b.jsx("span",{children:Vn(e.tokens)}),e.cost_usd!=null&&b.jsx("span",{children:mi(e.cost_usd)})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${l}20`,color:l},children:e.status})]}),n&&a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[s.length>0&&b.jsx(Wi,{items:s}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!1}),e.activity&&e.activity.length>0&&b.jsx(gm,{activity:e.activity,defaultExpanded:e.status!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output",defaultExpanded:!0}),e.status==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]})]})]})}function t6({node:e}){const n=e.status,r=$e[n]||$e.pending,l=he(f=>f.navigateIntoSubworkflow),s=he(f=>f.getViewedContext()).subworkflowContexts.filter(f=>f.parentAgent===e.name),u=[];return e.elapsed!=null&&u.push({label:"Elapsed",value:Qt(e.elapsed)}),e.cost_usd!=null&&u.push({label:"Cost",value:mi(e.cost_usd)}),e.tokens!=null&&u.push({label:"Tokens",value:Vn(e.tokens)}),e.iteration!=null&&e.iteration>1&&u.push({label:"Iteration",value:e.iteration}),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Subworkflow Agent"})]}),b.jsx(Wi,{items:u}),s.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:["Subworkflow Runs (",s.length,")"]}),b.jsx("div",{className:"space-y-1",children:s.map((f,d)=>b.jsx(n6,{ctx:f,onClick:()=>l(e.name,f.iteration)},`${f.parentAgent}-${f.iteration}-${d}`))})]}),n==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]}),s.length===0&&n==="pending"&&b.jsx("div",{className:"text-xs text-[var(--text-muted)] italic",children:"Subworkflow has not started yet."})]})}function n6({ctx:e,onClick:n}){const r=$e[e.status]||$e.pending;return b.jsxs("button",{onClick:n,className:"flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--surface)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[b.jsx($p,{className:"w-3.5 h-3.5 flex-shrink-0",style:{color:r}}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:e.workflowName||e.workflowFile||"Subworkflow"}),b.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)]",children:[e.agentsTotal>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(jb,{className:"w-2.5 h-2.5"}),e.agentsCompleted,"/",e.agentsTotal," agents"]}),e.totalCost>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(Ab,{className:"w-2.5 h-2.5"}),mi(e.totalCost)]})]})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${r}20`,color:r},children:e.status}),b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}function r6(){const e=he(f=>f.selectedNode),n=he(f=>f.getViewedContext()),r=he(f=>f.selectNode),[l,a]=V.useState(!1);V.useEffect(()=>(requestAnimationFrame(()=>a(!0)),()=>a(!1)),[e]);const s=e?n.nodes[e]:null;if(!e||!s)return b.jsxs("div",{className:"h-full flex flex-col bg-[var(--surface)]",children:[b.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Detail"})}),b.jsx("div",{className:"flex-1 flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Click a node to view details"})})]});const u=(()=>{switch(s.type){case"script":return z5;case"human_gate":return ZR;case"parallel_group":case"for_each_group":return JR;case"workflow":return t6;default:return C5}})();return b.jsxs("div",{className:Be("h-full flex flex-col bg-[var(--surface)] transition-all duration-150 ease-out",l?"translate-x-0 opacity-100":"translate-x-4 opacity-0"),children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)] flex-shrink-0",children:[b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] truncate",children:e}),b.jsx("button",{onClick:()=>r(null),className:"p-1 rounded hover:bg-[var(--surface-hover)] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Close panel",children:b.jsx(Uo,{className:"w-4 h-4"})})]}),b.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:b.jsx(u,{node:s})})]})}function $u(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function i6(){const e=he(S=>S.eventLog),n=he(S=>S.activityLog),r=he(S=>S.workflowOutput),l=he(S=>S.workflowStatus),[a,s]=V.useState("log"),[u,f]=V.useState(!1),[d,h]=V.useState(0),[m,p]=V.useState(0),y=V.useCallback(S=>{s(S),S==="log"&&h(e.length),S==="activity"&&p(n.length)},[e.length,n.length]);V.useEffect(()=>{a==="log"&&h(e.length)},[a,e.length]),V.useEffect(()=>{a==="activity"&&p(n.length)},[a,n.length]),V.useEffect(()=>{l==="completed"&&r!=null&&s("output")},[l,r]);const v=r!=null,w=a!=="log"?Math.max(0,e.length-d):0,k=a!=="activity"?Math.max(0,n.length-m):0;return u?b.jsx("div",{className:"flex items-center bg-[var(--surface)] border-t border-[var(--border)] px-3 py-1",children:b.jsxs("button",{onClick:()=>f(!1),className:"flex items-center gap-1.5 text-xs text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",children:[b.jsx(Z2,{className:"w-3 h-3"}),b.jsx(_x,{className:"w-3 h-3"}),b.jsx("span",{children:"Output"}),n.length>0&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)]",children:["(",n.length,")"]})]})}):b.jsxs("div",{className:"flex flex-col h-full bg-[var(--surface)] border-t border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center justify-between px-2 flex-shrink-0 border-b border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center gap-0.5",children:[b.jsx(yp,{active:a==="log",onClick:()=>y("log"),icon:b.jsx(_x,{className:"w-3 h-3"}),label:"Log",count:e.length,unread:w}),b.jsx(yp,{active:a==="activity",onClick:()=>y("activity"),icon:b.jsx(zb,{className:"w-3 h-3"}),label:"Activity",count:n.length,unread:k}),b.jsx(yp,{active:a==="output",onClick:()=>y("output"),icon:b.jsx(nN,{className:"w-3 h-3"}),label:"Output",badge:v?l==="failed"?"error":"success":void 0})]}),b.jsx("button",{onClick:()=>f(!0),className:"p-1 rounded text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors",title:"Collapse panel",children:b.jsx(Ji,{className:"w-3.5 h-3.5"})})]}),b.jsx("div",{className:"flex-1 overflow-hidden",children:a==="activity"?b.jsx(l6,{entries:n}):a==="log"?b.jsx(a6,{entries:e}):b.jsx(o6,{output:r,status:l})})]})}function yp({active:e,onClick:n,icon:r,label:l,count:a,badge:s,unread:u}){return b.jsxs("button",{onClick:n,className:Be("relative flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors border-b-2 -mb-px",e?"text-[var(--text)] border-[var(--accent)]":"text-[var(--text-muted)] border-transparent hover:text-[var(--text-secondary)]"),children:[r,b.jsx("span",{children:l}),a!=null&&a>0&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums",children:a}),s&&b.jsx("span",{className:Be("w-1.5 h-1.5 rounded-full",s==="success"?"bg-[var(--completed)]":"bg-[var(--failed)]")}),!e&&u!=null&&u>0&&b.jsx("span",{className:"absolute -top-0.5 -right-0.5 flex h-3.5 min-w-[14px] items-center justify-center rounded-full bg-[var(--accent)] px-1",children:b.jsx("span",{className:"text-[8px] font-bold text-white leading-none tabular-nums",children:u>99?"99+":u})})]})}const Nb={reasoning:{color:"text-indigo-400/70",label:"THINK",labelColor:"text-indigo-500"},"tool-start":{color:"text-blue-400",label:"TOOL →",labelColor:"text-blue-500"},"tool-complete":{color:"text-green-400",label:"TOOL ←",labelColor:"text-green-600"},turn:{color:"text-amber-400",label:"STEP",labelColor:"text-amber-500"},message:{color:"text-[var(--text)]",label:"MSG",labelColor:"text-[var(--text-muted)]"},prompt:{color:"text-cyan-400/70",label:"PROMPT",labelColor:"text-cyan-600"}};function l6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(d=>d.selectNode),[a,s]=V.useState(""),u=V.useCallback(()=>{const d=n.current;if(!d)return;const h=d.scrollHeight-d.scrollTop-d.clientHeight<30;r.current=h},[]),f=V.useMemo(()=>{if(!a)return e;const d=a.toLowerCase();return e.filter(h=>h.source.toLowerCase().includes(d)||$u(h.message).toLowerCase().includes(d))},[e,a]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[f.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for agent activity…"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx(oN,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("input",{type:"text",value:a,onChange:d=>s(d.target.value),placeholder:"Filter by agent or message…",className:"flex-1 bg-transparent text-[11px] text-[var(--text)] placeholder:text-[var(--text-muted)] outline-none min-w-0"}),a&&b.jsxs(b.Fragment,{children:[b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums flex-shrink-0",children:[f.length," of ",e.length]}),b.jsx("button",{onClick:()=>s(""),className:"text-[var(--text-muted)] hover:text-[var(--text)] transition-colors flex-shrink-0",title:"Clear filter",children:b.jsx(Uo,{className:"w-3 h-3"})})]})]}),b.jsxs("div",{ref:n,onScroll:u,className:"flex-1 overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:[f.map((d,h)=>{const m=Nb[d.type]||Nb.message,p=C_(d.timestamp);return b.jsxs("div",{className:"group",children:[b.jsxs("div",{className:"flex gap-1.5 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:p}),b.jsx("span",{className:Be("flex-shrink-0 w-[5ch] text-[10px] font-semibold tabular-nums select-none",m.labelColor),children:m.label}),b.jsx("button",{onClick:()=>l(d.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${d.source}`,children:d.source}),b.jsx("span",{className:Be("break-words min-w-0",m.color,d.type==="reasoning"&&"italic"),children:$u(d.message)})]}),d.detail&&b.jsx("div",{className:"ml-[calc(7ch+5ch+8ch+1rem)] px-2 py-1 my-0.5 bg-[var(--bg)] rounded text-[10px] text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto border-l-2 border-[var(--border)]",children:$u(d.detail)})]},h)}),a&&f.length===0&&b.jsx("div",{className:"flex items-center justify-center py-4",children:b.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:['No matches for "',a,'"']})})]})]})}const kb={info:{color:"text-blue-400",icon:"›"},success:{color:"text-green-400",icon:"✓"},error:{color:"text-red-400",icon:"✗"},warning:{color:"text-amber-400",icon:"⚠"},debug:{color:"text-[var(--text-muted)]",icon:"·"}};function a6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(s=>s.selectNode),a=V.useCallback(()=>{const s=n.current;if(!s)return;const u=s.scrollHeight-s.scrollTop-s.clientHeight<30;r.current=u},[]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for events…"})}):b.jsx("div",{ref:n,onScroll:a,className:"h-full overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:e.map((s,u)=>{const f=kb[s.level]||kb.info,d=C_(s.timestamp);return b.jsxs("div",{className:"flex gap-2 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:d}),b.jsx("span",{className:Be("flex-shrink-0 w-3 text-center select-none",f.color),children:f.icon}),b.jsx("button",{onClick:()=>l(s.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${s.source}`,children:s.source}),b.jsx("span",{className:Be("break-words",s.level==="error"?"text-red-400":s.level==="success"?"text-green-400":"text-[var(--text)]"),children:$u(s.message)})]},u)})})}function C_(e){const n=new Date(e*1e3),r=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),a=n.getSeconds().toString().padStart(2,"0");return`${r}:${l}:${a}`}function o6({output:e,status:n}){const[r,l]=V.useState(!1),a=Db(e),s=async()=>{a&&(await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3))};return e==null?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n==="running"?"Workflow running — output will appear when complete…":n==="failed"?"Workflow failed — no output produced":"No output yet"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center justify-between px-3 py-1 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] uppercase tracking-wider font-semibold",children:"Workflow Result"}),b.jsx("button",{onClick:s,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors px-1.5 py-0.5 rounded hover:bg-[var(--surface-hover)]",title:"Copy to clipboard",children:r?b.jsxs(b.Fragment,{children:[b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}),b.jsx("span",{className:"text-[var(--completed)]",children:"Copied"})]}):b.jsxs(b.Fragment,{children:[b.jsx(Mb,{className:"w-3 h-3"}),b.jsx("span",{children:"Copy"})]})})]}),b.jsx("div",{className:"flex-1 overflow-auto px-3 py-2",children:b.jsx("pre",{className:"font-mono text-[11px] leading-relaxed text-[var(--text)] whitespace-pre-wrap break-words",children:typeof e=="object"?b.jsx(s6,{text:a}):a})})]})}function s6({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function u6(){const e=he(n=>n.selectedNode);return b.jsxs(vp,{direction:"vertical",className:"flex-1 overflow-hidden",children:[b.jsx(po,{defaultSize:70,minSize:30,children:b.jsxs(vp,{direction:"horizontal",className:"h-full",children:[b.jsx(po,{defaultSize:e?65:100,minSize:40,children:b.jsx(S5,{})}),e&&b.jsxs(b.Fragment,{children:[b.jsx(bp,{className:"w-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-col-resize"}),b.jsx(po,{defaultSize:35,minSize:20,maxSize:60,children:b.jsx(r6,{})})]})]})}),b.jsx(bp,{className:"h-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-row-resize"}),b.jsx(po,{defaultSize:30,minSize:5,maxSize:70,collapsible:!0,children:b.jsx(i6,{})})]})}const c6=3e4;function f6(){const e=he(p=>p.processEvent),n=he(p=>p.replayState),r=he(p=>p.setWsStatus),l=he(p=>p.setWsSend),a=V.useRef(null),s=V.useRef(1e3),u=V.useRef(null),f=V.useRef(null),d=V.useRef(()=>{}),h=V.useCallback(()=>{r("reconnecting"),u.current=setTimeout(()=>{s.current=Math.min(s.current*2,c6),d.current()},s.current)},[r]),m=V.useCallback(()=>{r("connecting"),f.current&&f.current.abort();const p=new AbortController;f.current=p,fetch("/api/state",{signal:p.signal}).then(y=>y.json()).then(y=>{y&&y.length>0&&n(y);const w=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{const k=new WebSocket(w);a.current=k,k.onopen=()=>{s.current=1e3,r("connected"),l(S=>{k.readyState===WebSocket.OPEN&&k.send(JSON.stringify(S))})},k.onmessage=S=>{try{const _=JSON.parse(S.data);e(_)}catch(_){console.error("Failed to parse WebSocket message:",_)}},k.onclose=()=>{r("disconnected"),l(null),a.current=null,h()},k.onerror=()=>{}}catch{h()}}).catch(y=>{p.signal.aborted||(console.error("Failed to fetch state:",y),h())})},[e,n,r,l,h]);d.current=m,V.useEffect(()=>(m(),()=>{f.current&&f.current.abort(),u.current&&clearTimeout(u.current),a.current&&a.current.close(),l(null)}),[m,l])}function d6(){const e=he(h=>h.setReplayMode),n=he(h=>h.setWsStatus),r=he(h=>h.replayPlaying),l=he(h=>h.replayPosition),a=he(h=>h.replayTotalEvents),s=he(h=>h.replaySpeed),u=he(h=>h.replayEvents),f=he(h=>h.setReplayPosition);V.useEffect(()=>{n("connecting"),fetch("/api/state").then(h=>h.json()).then(h=>{e(h),n("connected")}).catch(h=>{console.error("Failed to load replay events:",h),n("disconnected")})},[e,n]);const d=V.useRef(null);V.useEffect(()=>{if(!r||l>=a){d.current&&clearTimeout(d.current),r&&l>=a&&he.getState().setReplayPlaying(!1);return}const h=u[l-1],m=u[l];let p=100;if(h&&m){const y=(m.timestamp-h.timestamp)*1e3;p=Math.max(16,Math.min(y/s,2e3))}return d.current=setTimeout(()=>{f(l+1)},p),()=>{d.current&&clearTimeout(d.current)}},[r,l,a,s,u,f])}function h6(){return f6(),null}function p6(){return d6(),null}function m6(){const[e,n]=V.useState(null),r=he(s=>s.replayMode),l=he(s=>s.selectNode),a=he(s=>s.workflowName);return V.useEffect(()=>{fetch("/api/replay/info").then(s=>{s.ok?n(!0):n(!1)}).catch(()=>n(!1))},[]),V.useEffect(()=>{document.title=a?`Conductor — ${a}`:"Conductor Dashboard"},[a]),V.useEffect(()=>{const s=u=>{u.key==="Escape"&&l(null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[l]),e===null?null:b.jsxs("div",{className:"h-full flex flex-col bg-[var(--bg)]",children:[e?b.jsx(p6,{}):b.jsx(h6,{}),b.jsx(EN,{}),b.jsx(NN,{}),b.jsx(u6,{}),r?b.jsx(AN,{}):b.jsx(CN,{})]})}$2.createRoot(document.getElementById("root")).render(b.jsx(V.StrictMode,{children:b.jsx(m6,{})})); diff --git a/src/conductor/web/static/index.html b/src/conductor/web/static/index.html index e2d4383..adfaff9 100644 --- a/src/conductor/web/static/index.html +++ b/src/conductor/web/static/index.html @@ -1,14 +1,14 @@ - - - - - - - Conductor Dashboard - - - - -
- - + + + + + + + Conductor Dashboard + + + + +
+ + From aec33e3abd56eb5569ecdb58d6001d9b26c7dacc Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 15:15:01 -0700 Subject: [PATCH 24/42] fix: replace getViewedContext() selectors with stable hooks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getViewedContext() creates a new object on every call, causing infinite re-render loops (React error #185) when used inside Zustand selectors. New hooks in use-viewed-context.ts use useMemo with stable state references: - useViewedNodes() — nodes map for current context - useViewedGroupProgress() — group progress for current context - useViewedHighlightedEdges() — edge highlights - useViewedSubworkflowContexts() — child contexts - useViewedGraphData() — full graph data for WorkflowGraph All graph components and detail panels updated to use these hooks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../src/components/detail/DetailPanel.tsx | 5 +- .../src/components/detail/GroupDetail.tsx | 6 +- .../components/detail/SubworkflowDetail.tsx | 5 +- .../src/components/graph/AgentNode.tsx | 5 +- .../src/components/graph/AnimatedEdge.tsx | 4 +- .../src/components/graph/GateNode.tsx | 3 +- .../src/components/graph/GroupNode.tsx | 5 +- .../src/components/graph/ScriptNode.tsx | 5 +- .../src/components/graph/WorkflowGraph.tsx | 4 +- .../src/components/graph/WorkflowNode.tsx | 3 +- .../frontend/src/hooks/use-viewed-context.ts | 114 +++++++ .../web/frontend/tsconfig.tsbuildinfo | 2 +- .../web/static/assets/index-BrYWLhxG.js | 311 ++++++++++++++++++ .../web/static/assets/index-Cd7LhUP_.css | 1 + .../web/static/assets/index-Cq5A-RoD.js | 306 ----------------- .../web/static/assets/index-DHEpYuxn.css | 1 - src/conductor/web/static/index.html | 28 +- 17 files changed, 467 insertions(+), 341 deletions(-) create mode 100644 src/conductor/web/frontend/src/hooks/use-viewed-context.ts create mode 100644 src/conductor/web/static/assets/index-BrYWLhxG.js create mode 100644 src/conductor/web/static/assets/index-Cd7LhUP_.css delete mode 100644 src/conductor/web/static/assets/index-Cq5A-RoD.js delete mode 100644 src/conductor/web/static/assets/index-DHEpYuxn.css diff --git a/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx b/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx index d36d2be..83b6b03 100644 --- a/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx +++ b/src/conductor/web/frontend/src/components/detail/DetailPanel.tsx @@ -1,6 +1,7 @@ import { useEffect, useState } from 'react'; import { X } from 'lucide-react'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedNodes } from '@/hooks/use-viewed-context'; import { AgentDetail } from './AgentDetail'; import { ScriptDetail } from './ScriptDetail'; import { GateDetail } from './GateDetail'; @@ -10,7 +11,7 @@ import { cn } from '@/lib/utils'; export function DetailPanel() { const selectedNode = useWorkflowStore((s) => s.selectedNode); - const viewedCtx = useWorkflowStore((s) => s.getViewedContext()); + const viewedNodes = useViewedNodes(); const selectNode = useWorkflowStore((s) => s.selectNode); // Slide-in animation state @@ -21,7 +22,7 @@ export function DetailPanel() { return () => setMounted(false); }, [selectedNode]); - const node = selectedNode ? viewedCtx.nodes[selectedNode] : null; + const node = selectedNode ? viewedNodes[selectedNode] : null; if (!selectedNode || !node) { return ( diff --git a/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx b/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx index 9e4a527..90acb57 100644 --- a/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx +++ b/src/conductor/web/frontend/src/components/detail/GroupDetail.tsx @@ -6,7 +6,7 @@ import { ActivityStream } from './ActivityStream'; import type { NodeData, ForEachItemData } from '@/stores/workflow-store'; import { NODE_STATUS_HEX } from '@/lib/constants'; import { formatElapsed, formatCost, formatTokens } from '@/lib/utils'; -import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedGroupProgress } from '@/hooks/use-viewed-context'; import type { NodeStatus } from '@/lib/constants'; interface GroupDetailProps { @@ -16,8 +16,8 @@ interface GroupDetailProps { export function GroupDetail({ node }: GroupDetailProps) { const status = node.status as NodeStatus; const statusColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; - const viewedCtx = useWorkflowStore((s) => s.getViewedContext()); - const progress = viewedCtx.groupProgress[node.name]; + const viewedProgress = useViewedGroupProgress(); + const progress = viewedProgress[node.name]; const isForEach = node.type === 'for_each_group'; const [showItems, setShowItems] = useState(true); diff --git a/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx b/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx index fc9e07b..b4058b9 100644 --- a/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx +++ b/src/conductor/web/frontend/src/components/detail/SubworkflowDetail.tsx @@ -1,6 +1,7 @@ import { Layers, ChevronRight, Coins, Hash } from 'lucide-react'; import { MetadataGrid } from './MetadataGrid'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedSubworkflowContexts } from '@/hooks/use-viewed-context'; import type { NodeData, SubworkflowContext } from '@/stores/workflow-store'; import { NODE_STATUS_HEX } from '@/lib/constants'; import { formatElapsed, formatCost, formatTokens } from '@/lib/utils'; @@ -14,8 +15,8 @@ export function SubworkflowDetail({ node }: SubworkflowDetailProps) { const status = node.status as NodeStatus; const statusColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; const navigateIntoSubworkflow = useWorkflowStore((s) => s.navigateIntoSubworkflow); - const viewedCtx = useWorkflowStore((s) => s.getViewedContext()); - const subContexts = viewedCtx.subworkflowContexts.filter((c) => c.parentAgent === node.name); + const allSubContexts = useViewedSubworkflowContexts(); + const subContexts = allSubContexts.filter((c) => c.parentAgent === node.name); const items: Array<{ label: string; value: string | number | null | undefined }> = []; if (node.elapsed != null) items.push({ label: 'Elapsed', value: formatElapsed(node.elapsed) }); diff --git a/src/conductor/web/frontend/src/components/graph/AgentNode.tsx b/src/conductor/web/frontend/src/components/graph/AgentNode.tsx index c433f80..1a4cd7f 100644 --- a/src/conductor/web/frontend/src/components/graph/AgentNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/AgentNode.tsx @@ -4,13 +4,14 @@ import { Bot } from 'lucide-react'; import { cn, formatElapsed, formatTokens, formatCost } from '@/lib/utils'; import { NODE_STATUS_HEX, CONTEXT_WARN_PCT, CONTEXT_DANGER_PCT } from '@/lib/constants'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedNodes } from '@/hooks/use-viewed-context'; import { NodeTooltip } from './NodeTooltip'; import type { GraphNodeData } from './graph-layout'; import type { NodeStatus } from '@/lib/constants'; export const AgentNode = memo(function AgentNode({ data, id, selected }: NodeProps) { const nodeData = data as unknown as GraphNodeData; - const viewedNodes = useWorkflowStore((s) => s.getViewedContext().nodes); + const viewedNodes = useViewedNodes(); const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; @@ -134,7 +135,7 @@ export const AgentNode = memo(function AgentNode({ data, id, selected }: NodePro /** Hook that returns a live-ticking elapsed string while status is 'running'. */ function useLiveElapsed(id: string, status: NodeStatus): string { - const startedAt = useWorkflowStore((s) => s.getViewedContext().nodes[id]?.startedAt); + const startedAt = useViewedNodes()[id]?.startedAt; const replayMode = useWorkflowStore((s) => s.replayMode); const lastEventTime = useWorkflowStore((s) => s.lastEventTime); const [display, setDisplay] = useState('0.0s'); diff --git a/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx b/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx index a7932f2..62cd0dd 100644 --- a/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx +++ b/src/conductor/web/frontend/src/components/graph/AnimatedEdge.tsx @@ -5,7 +5,7 @@ import { getBezierPath, type EdgeProps, } from '@xyflow/react'; -import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedHighlightedEdges } from '@/hooks/use-viewed-context'; export const AnimatedEdge = memo(function AnimatedEdge({ id, @@ -19,7 +19,7 @@ export const AnimatedEdge = memo(function AnimatedEdge({ target, data, }: EdgeProps) { - const highlightedEdges = useWorkflowStore((s) => s.getViewedContext().highlightedEdges); + const highlightedEdges = useViewedHighlightedEdges(); const edgeHighlight = useMemo(() => { return highlightedEdges.find((e) => e.from === source && e.to === target); diff --git a/src/conductor/web/frontend/src/components/graph/GateNode.tsx b/src/conductor/web/frontend/src/components/graph/GateNode.tsx index dcb4554..2eca4ab 100644 --- a/src/conductor/web/frontend/src/components/graph/GateNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/GateNode.tsx @@ -4,13 +4,14 @@ import { ShieldCheck } from 'lucide-react'; import { cn } from '@/lib/utils'; import { NODE_STATUS_HEX } from '@/lib/constants'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedNodes } from '@/hooks/use-viewed-context'; import { NodeTooltip } from './NodeTooltip'; import type { GraphNodeData } from './graph-layout'; import type { NodeStatus } from '@/lib/constants'; export const GateNode = memo(function GateNode({ data, id, selected }: NodeProps) { const nodeData = data as unknown as GraphNodeData; - const viewedNodes = useWorkflowStore((s) => s.getViewedContext().nodes); + const viewedNodes = useViewedNodes(); const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; diff --git a/src/conductor/web/frontend/src/components/graph/GroupNode.tsx b/src/conductor/web/frontend/src/components/graph/GroupNode.tsx index 81cc51b..89ecc95 100644 --- a/src/conductor/web/frontend/src/components/graph/GroupNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/GroupNode.tsx @@ -3,7 +3,7 @@ import { Handle, Position, type NodeProps } from '@xyflow/react'; import { GitBranch, Repeat } from 'lucide-react'; import { cn } from '@/lib/utils'; import { NODE_STATUS_HEX } from '@/lib/constants'; -import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedNodes } from '@/hooks/use-viewed-context'; import type { GraphNodeData } from './graph-layout'; import type { NodeStatus } from '@/lib/constants'; @@ -13,7 +13,8 @@ export const GroupNode = memo(function GroupNode({ data, id, selected }: NodePro const Icon = isForEach ? Repeat : GitBranch; const progress = nodeData.progress; - const storeStatus = useWorkflowStore((s) => s.getViewedContext().nodes[id]?.status); + const viewedNodes = useViewedNodes(); + const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; diff --git a/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx b/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx index 7a7fdbe..a8db46d 100644 --- a/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/ScriptNode.tsx @@ -4,13 +4,14 @@ import { Terminal } from 'lucide-react'; import { cn, formatElapsed } from '@/lib/utils'; import { NODE_STATUS_HEX } from '@/lib/constants'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedNodes } from '@/hooks/use-viewed-context'; import { NodeTooltip } from './NodeTooltip'; import type { GraphNodeData } from './graph-layout'; import type { NodeStatus } from '@/lib/constants'; export const ScriptNode = memo(function ScriptNode({ data, id, selected }: NodeProps) { const nodeData = data as unknown as GraphNodeData; - const viewedNodes = useWorkflowStore((s) => s.getViewedContext().nodes); + const viewedNodes = useViewedNodes(); const storeStatus = viewedNodes[id]?.status; const status = (storeStatus || nodeData.status || 'pending') as NodeStatus; const borderColor = NODE_STATUS_HEX[status] || NODE_STATUS_HEX.pending; @@ -91,7 +92,7 @@ export const ScriptNode = memo(function ScriptNode({ data, id, selected }: NodeP }); function useLiveElapsed(id: string, status: NodeStatus): string { - const startedAt = useWorkflowStore((s) => s.getViewedContext().nodes[id]?.startedAt); + const startedAt = useViewedNodes()[id]?.startedAt; const replayMode = useWorkflowStore((s) => s.replayMode); const lastEventTime = useWorkflowStore((s) => s.lastEventTime); const [display, setDisplay] = useState('0.0s'); diff --git a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx index d6f214f..b637889 100644 --- a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx +++ b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx @@ -16,6 +16,7 @@ import { import '@xyflow/react/dist/style.css'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedGraphData } from '@/hooks/use-viewed-context'; import { buildGraphElements, type GraphNodeData } from './graph-layout'; import { AgentNode } from './AgentNode'; import { ScriptNode } from './ScriptNode'; @@ -71,7 +72,7 @@ function EdgeMarkers() { } export function WorkflowGraph() { - const getViewedContext = useWorkflowStore((s) => s.getViewedContext); + const viewCtx = useViewedGraphData(); const viewContextPath = useWorkflowStore((s) => s.viewContextPath); const selectNode = useWorkflowStore((s) => s.selectNode); const selectedNode = useWorkflowStore((s) => s.selectedNode); @@ -81,7 +82,6 @@ export function WorkflowGraph() { const navigateIntoSubworkflow = useWorkflowStore((s) => s.navigateIntoSubworkflow); // Get the data for the currently viewed context - const viewCtx = getViewedContext(); const { agents, routes, parallelGroups, forEachGroups, nodes: storeNodes, groupProgress, entryPoint, subworkflowContexts } = viewCtx; const [flowNodes, setFlowNodes, onNodesChange] = useNodesState>([]); diff --git a/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx b/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx index e9d7703..b719140 100644 --- a/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx +++ b/src/conductor/web/frontend/src/components/graph/WorkflowNode.tsx @@ -4,6 +4,7 @@ import { Layers, ChevronRight } from 'lucide-react'; import { cn } from '@/lib/utils'; import { NODE_STATUS_HEX } from '@/lib/constants'; import { useWorkflowStore } from '@/stores/workflow-store'; +import { useViewedNodes, useViewedSubworkflowContexts } from '@/hooks/use-viewed-context'; import { NodeTooltip } from './NodeTooltip'; import type { GraphNodeData } from './graph-layout'; import type { NodeStatus } from '@/lib/constants'; @@ -22,7 +23,7 @@ export const WorkflowNode = memo(function WorkflowNode({ data, id, selected }: N const elapsed = useWorkflowStore((s) => s.nodes[id]?.elapsed); const errorMessage = useWorkflowStore((s) => s.nodes[id]?.error_message); const navigateIntoSubworkflow = useWorkflowStore((s) => s.navigateIntoSubworkflow); - const subworkflowContexts = useWorkflowStore((s) => s.getViewedContext().subworkflowContexts); + const subworkflowContexts = useViewedSubworkflowContexts(); const hasContext = subworkflowContexts.some((c) => c.parentAgent === id); const ctx = subworkflowContexts.find((c) => c.parentAgent === id); diff --git a/src/conductor/web/frontend/src/hooks/use-viewed-context.ts b/src/conductor/web/frontend/src/hooks/use-viewed-context.ts new file mode 100644 index 0000000..3801e29 --- /dev/null +++ b/src/conductor/web/frontend/src/hooks/use-viewed-context.ts @@ -0,0 +1,114 @@ +/** + * Hooks for accessing the currently viewed workflow context. + * + * These replace direct `getViewedContext()` calls in Zustand selectors, + * which create new objects on every call and cause infinite re-render loops. + * Instead, we select raw state and resolve the viewed context with useMemo. + */ +import { useMemo } from 'react'; +import { useWorkflowStore } from '@/stores/workflow-store'; +import type { NodeData, GroupProgress, HighlightedEdge, SubworkflowContext, WorkflowAgent, RouteEdge, ParallelGroup, ForEachGroup } from '@/stores/workflow-store'; + +/** Resolve a SubworkflowContext from a path of indices. */ +function resolveCtx(contexts: SubworkflowContext[], path: number[]): SubworkflowContext | null { + if (path.length === 0) return null; + let ctx: SubworkflowContext | undefined = contexts[path[0]!]; + for (let i = 1; i < path.length && ctx; i++) { + ctx = ctx.children[path[i]!]; + } + return ctx ?? null; +} + +/** Get the nodes map for the currently viewed context. */ +export function useViewedNodes(): Record { + const viewPath = useWorkflowStore((s) => s.viewContextPath); + const rootNodes = useWorkflowStore((s) => s.nodes); + const subContexts = useWorkflowStore((s) => s.subworkflowContexts); + return useMemo(() => { + if (viewPath.length === 0) return rootNodes; + return resolveCtx(subContexts, viewPath)?.nodes ?? rootNodes; + }, [viewPath, rootNodes, subContexts]); +} + +/** Get the groupProgress map for the currently viewed context. */ +export function useViewedGroupProgress(): Record { + const viewPath = useWorkflowStore((s) => s.viewContextPath); + const rootProgress = useWorkflowStore((s) => s.groupProgress); + const subContexts = useWorkflowStore((s) => s.subworkflowContexts); + return useMemo(() => { + if (viewPath.length === 0) return rootProgress; + return resolveCtx(subContexts, viewPath)?.groupProgress ?? rootProgress; + }, [viewPath, rootProgress, subContexts]); +} + +/** Get the highlightedEdges for the currently viewed context. */ +export function useViewedHighlightedEdges(): HighlightedEdge[] { + const viewPath = useWorkflowStore((s) => s.viewContextPath); + const rootEdges = useWorkflowStore((s) => s.highlightedEdges); + const subContexts = useWorkflowStore((s) => s.subworkflowContexts); + return useMemo(() => { + if (viewPath.length === 0) return rootEdges; + return resolveCtx(subContexts, viewPath)?.highlightedEdges ?? rootEdges; + }, [viewPath, rootEdges, subContexts]); +} + +/** Get the subworkflow contexts for the currently viewed level. */ +export function useViewedSubworkflowContexts(): SubworkflowContext[] { + const viewPath = useWorkflowStore((s) => s.viewContextPath); + const rootContexts = useWorkflowStore((s) => s.subworkflowContexts); + return useMemo(() => { + if (viewPath.length === 0) return rootContexts; + return resolveCtx(rootContexts, viewPath)?.children ?? []; + }, [viewPath, rootContexts]); +} + +/** Get the full viewed context for graph building (agents, routes, etc). */ +export function useViewedGraphData() { + const viewPath = useWorkflowStore((s) => s.viewContextPath); + const rootAgents = useWorkflowStore((s) => s.agents); + const rootRoutes = useWorkflowStore((s) => s.routes); + const rootParallel = useWorkflowStore((s) => s.parallelGroups); + const rootForEach = useWorkflowStore((s) => s.forEachGroups); + const rootNodes = useWorkflowStore((s) => s.nodes); + const rootProgress = useWorkflowStore((s) => s.groupProgress); + const rootEntry = useWorkflowStore((s) => s.entryPoint); + const subContexts = useWorkflowStore((s) => s.subworkflowContexts); + + return useMemo(() => { + if (viewPath.length === 0) { + return { + agents: rootAgents, + routes: rootRoutes, + parallelGroups: rootParallel, + forEachGroups: rootForEach, + nodes: rootNodes, + groupProgress: rootProgress, + entryPoint: rootEntry, + subworkflowContexts: subContexts, + }; + } + const ctx = resolveCtx(subContexts, viewPath); + if (!ctx) { + return { + agents: rootAgents, + routes: rootRoutes, + parallelGroups: rootParallel, + forEachGroups: rootForEach, + nodes: rootNodes, + groupProgress: rootProgress, + entryPoint: rootEntry, + subworkflowContexts: subContexts, + }; + } + return { + agents: ctx.agents, + routes: ctx.routes, + parallelGroups: ctx.parallelGroups, + forEachGroups: ctx.forEachGroups, + nodes: ctx.nodes, + groupProgress: ctx.groupProgress, + entryPoint: ctx.entryPoint, + subworkflowContexts: ctx.children, + }; + }, [viewPath, rootAgents, rootRoutes, rootParallel, rootForEach, rootNodes, rootProgress, rootEntry, subContexts]); +} diff --git a/src/conductor/web/frontend/tsconfig.tsbuildinfo b/src/conductor/web/frontend/tsconfig.tsbuildinfo index 3efb84c..1538f5c 100644 --- a/src/conductor/web/frontend/tsconfig.tsbuildinfo +++ b/src/conductor/web/frontend/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.tsx","./src/main.tsx","./src/components/detail/activitystream.tsx","./src/components/detail/agentdetail.tsx","./src/components/detail/detailpanel.tsx","./src/components/detail/gatedetail.tsx","./src/components/detail/groupdetail.tsx","./src/components/detail/metadatagrid.tsx","./src/components/detail/outputviewer.tsx","./src/components/detail/scriptdetail.tsx","./src/components/graph/agentnode.tsx","./src/components/graph/animatededge.tsx","./src/components/graph/endnode.tsx","./src/components/graph/gatenode.tsx","./src/components/graph/groupnode.tsx","./src/components/graph/nodetooltip.tsx","./src/components/graph/scriptnode.tsx","./src/components/graph/startnode.tsx","./src/components/graph/workflowgraph.tsx","./src/components/graph/graph-layout.ts","./src/components/layout/errorbanner.tsx","./src/components/layout/header.tsx","./src/components/layout/outputpane.tsx","./src/components/layout/resizablelayout.tsx","./src/components/layout/statusbar.tsx","./src/hooks/use-elapsed-timer.ts","./src/hooks/use-websocket.ts","./src/lib/constants.ts","./src/lib/utils.ts","./src/stores/workflow-store.ts","./src/types/events.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.tsx","./src/main.tsx","./src/components/detail/activitystream.tsx","./src/components/detail/agentdetail.tsx","./src/components/detail/detailpanel.tsx","./src/components/detail/gatedetail.tsx","./src/components/detail/groupdetail.tsx","./src/components/detail/metadatagrid.tsx","./src/components/detail/outputviewer.tsx","./src/components/detail/scriptdetail.tsx","./src/components/detail/subworkflowdetail.tsx","./src/components/graph/agentnode.tsx","./src/components/graph/animatededge.tsx","./src/components/graph/endnode.tsx","./src/components/graph/gatenode.tsx","./src/components/graph/groupnode.tsx","./src/components/graph/nodetooltip.tsx","./src/components/graph/scriptnode.tsx","./src/components/graph/startnode.tsx","./src/components/graph/workflowgraph.tsx","./src/components/graph/workflownode.tsx","./src/components/graph/graph-layout.ts","./src/components/layout/breadcrumbbar.tsx","./src/components/layout/errorbanner.tsx","./src/components/layout/header.tsx","./src/components/layout/outputpane.tsx","./src/components/layout/replaybar.tsx","./src/components/layout/resizablelayout.tsx","./src/components/layout/statusbar.tsx","./src/components/layout/yamlviewer.tsx","./src/hooks/use-elapsed-timer.ts","./src/hooks/use-replay.ts","./src/hooks/use-websocket.ts","./src/lib/constants.ts","./src/lib/utils.ts","./src/stores/workflow-store.ts","./src/types/events.ts"],"errors":true,"version":"5.9.3"} \ No newline at end of file diff --git a/src/conductor/web/static/assets/index-BrYWLhxG.js b/src/conductor/web/static/assets/index-BrYWLhxG.js new file mode 100644 index 0000000..e8e9302 --- /dev/null +++ b/src/conductor/web/static/assets/index-BrYWLhxG.js @@ -0,0 +1,311 @@ +var L2=Object.defineProperty;var H2=(e,n,r)=>n in e?L2(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;var kt=(e,n,r)=>H2(e,typeof n!="symbol"?n+"":n,r);function B2(e,n){for(var r=0;rl[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();function qo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Vd={exports:{}},io={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var mx;function q2(){if(mx)return io;mx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(l,a,s){var u=null;if(s!==void 0&&(u=""+s),a.key!==void 0&&(u=""+a.key),"key"in a){s={};for(var f in a)f!=="key"&&(s[f]=a[f])}else s=a;return a=s.ref,{$$typeof:e,type:l,key:u,ref:a!==void 0?a:null,props:s}}return io.Fragment=n,io.jsx=r,io.jsxs=r,io}var gx;function U2(){return gx||(gx=1,Vd.exports=q2()),Vd.exports}var b=U2(),Gd={exports:{}},ze={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var yx;function I2(){if(yx)return ze;yx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),y=Symbol.iterator;function v(B){return B===null||typeof B!="object"?null:(B=y&&B[y]||B["@@iterator"],typeof B=="function"?B:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,S={};function _(B,P,N){this.props=B,this.context=P,this.refs=S,this.updater=N||w}_.prototype.isReactComponent={},_.prototype.setState=function(B,P){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,P,"setState")},_.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function T(){}T.prototype=_.prototype;function E(B,P,N){this.props=B,this.context=P,this.refs=S,this.updater=N||w}var z=E.prototype=new T;z.constructor=E,k(z,_.prototype),z.isPureReactComponent=!0;var I=Array.isArray;function A(){}var L={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function U(B,P,N){var Y=N.ref;return{$$typeof:e,type:B,key:P,ref:Y!==void 0?Y:null,props:N}}function X(B,P){return U(B.type,P,B.props)}function H(B){return typeof B=="object"&&B!==null&&B.$$typeof===e}function q(B){var P={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(N){return P[N]})}var ee=/\/+/g;function R(B,P){return typeof B=="object"&&B!==null&&B.key!=null?q(""+B.key):P.toString(36)}function G(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(A,A):(B.status="pending",B.then(function(P){B.status==="pending"&&(B.status="fulfilled",B.value=P)},function(P){B.status==="pending"&&(B.status="rejected",B.reason=P)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function M(B,P,N,Y,F){var J=typeof B;(J==="undefined"||J==="boolean")&&(B=null);var ne=!1;if(B===null)ne=!0;else switch(J){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(B.$$typeof){case e:case n:ne=!0;break;case m:return ne=B._init,M(ne(B._payload),P,N,Y,F)}}if(ne)return F=F(B),ne=Y===""?"."+R(B,0):Y,I(F)?(N="",ne!=null&&(N=ne.replace(ee,"$&/")+"/"),M(F,P,N,"",function(ye){return ye})):F!=null&&(H(F)&&(F=X(F,N+(F.key==null||B&&B.key===F.key?"":(""+F.key).replace(ee,"$&/")+"/")+ne)),P.push(F)),1;ne=0;var re=Y===""?".":Y+":";if(I(B))for(var se=0;se>>1,j=M[K];if(0>>1;Ka(N,Q))Ya(F,N)?(M[K]=F,M[Y]=Q,K=Y):(M[K]=N,M[P]=Q,K=P);else if(Ya(F,Q))M[K]=F,M[Y]=Q,K=Y;else break e}}return $}function a(M,$){var Q=M.sortIndex-$.sortIndex;return Q!==0?Q:M.id-$.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var u=Date,f=u.now();e.unstable_now=function(){return u.now()-f}}var h=[],d=[],m=1,p=null,y=3,v=!1,w=!1,k=!1,S=!1,_=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function z(M){for(var $=r(d);$!==null;){if($.callback===null)l(d);else if($.startTime<=M)l(d),$.sortIndex=$.expirationTime,n(h,$);else break;$=r(d)}}function I(M){if(k=!1,z(M),!w)if(r(h)!==null)w=!0,A||(A=!0,q());else{var $=r(d);$!==null&&G(I,$.startTime-M)}}var A=!1,L=-1,D=5,U=-1;function X(){return S?!0:!(e.unstable_now()-UM&&X());){var K=p.callback;if(typeof K=="function"){p.callback=null,y=p.priorityLevel;var j=K(p.expirationTime<=M);if(M=e.unstable_now(),typeof j=="function"){p.callback=j,z(M),$=!0;break t}p===r(h)&&l(h),z(M)}else l(h);p=r(h)}if(p!==null)$=!0;else{var B=r(d);B!==null&&G(I,B.startTime-M),$=!1}}break e}finally{p=null,y=Q,v=!1}$=void 0}}finally{$?q():A=!1}}}var q;if(typeof E=="function")q=function(){E(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,R=ee.port2;ee.port1.onmessage=H,q=function(){R.postMessage(null)}}else q=function(){_(H,0)};function G(M,$){L=_(function(){M(e.unstable_now())},$)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_forceFrameRate=function(M){0>M||125K?(M.sortIndex=Q,n(d,M),r(h)===null&&M===r(d)&&(k?(T(L),L=-1):k=!0,G(I,Q-K))):(M.sortIndex=j,n(h,M),w||v||(w=!0,A||(A=!0,q()))),M},e.unstable_shouldYield=X,e.unstable_wrapCallback=function(M){var $=y;return function(){var Q=y;y=$;try{return M.apply(this,arguments)}finally{y=Q}}}})(Pd)),Pd}var bx;function Y2(){return bx||(bx=1,$d.exports=G2()),$d.exports}var Xd={exports:{}},Yt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wx;function $2(){if(wx)return Yt;wx=1;var e=Uo();function n(h){var d="https://react.dev/errors/"+h;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Xd.exports=$2(),Xd.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var _x;function P2(){if(_x)return lo;_x=1;var e=Y2(),n=Uo(),r=zb();function l(t){var i="https://react.dev/errors/"+t;if(1j||(t.current=K[j],K[j]=null,j--)}function N(t,i){j++,K[j]=t.current,t.current=i}var Y=B(null),F=B(null),J=B(null),ne=B(null);function re(t,i){switch(N(J,i),N(F,t),N(Y,null),i.nodeType){case 9:case 11:t=(t=i.documentElement)&&(t=t.namespaceURI)?By(t):0;break;default:if(t=i.tagName,i=i.namespaceURI)i=By(i),t=qy(i,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}P(Y),N(Y,t)}function se(){P(Y),P(F),P(J)}function ye(t){t.memoizedState!==null&&N(ne,t);var i=Y.current,o=qy(i,t.type);i!==o&&(N(F,t),N(Y,o))}function ve(t){F.current===t&&(P(Y),P(F)),ne.current===t&&(P(ne),eo._currentValue=Q)}var xe,pe;function _e(t){if(xe===void 0)try{throw Error()}catch(o){var i=o.stack.trim().match(/\n( *(at )?)/);xe=i&&i[1]||"",pe=-1)":-1g||Z[c]!==le[g]){var ce=` +`+Z[c].replace(" at new "," at ");return t.displayName&&ce.includes("")&&(ce=ce.replace("",t.displayName)),ce}while(1<=c&&0<=g);break}}}finally{Me=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?_e(o):""}function ut(t,i){switch(t.tag){case 26:case 27:case 5:return _e(t.type);case 16:return _e("Lazy");case 13:return t.child!==i&&i!==null?_e("Suspense Fallback"):_e("Suspense");case 19:return _e("SuspenseList");case 0:case 15:return Ce(t.type,!1);case 11:return Ce(t.type.render,!1);case 1:return Ce(t.type,!0);case 31:return _e("Activity");default:return""}}function tt(t){try{var i="",o=null;do i+=ut(t,o),o=t,t=t.return;while(t);return i}catch(c){return` +Error generating stack: `+c.message+` +`+c.stack}}var At=Object.prototype.hasOwnProperty,It=e.unstable_scheduleCallback,Rt=e.unstable_cancelCallback,Sn=e.unstable_shouldYield,jn=e.unstable_requestPaint,Mt=e.unstable_now,Or=e.unstable_getCurrentPriorityLevel,ue=e.unstable_ImmediatePriority,ge=e.unstable_UserBlockingPriority,Ne=e.unstable_NormalPriority,Re=e.unstable_LowPriority,Ye=e.unstable_IdlePriority,Xt=e.log,On=e.unstable_setDisableYieldValue,Lt=null,xt=null;function Vt(t){if(typeof Xt=="function"&&On(t),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(Lt,t)}catch{}}var Je=Math.clz32?Math.clz32:zc,Pn=Math.log,un=Math.LN2;function zc(t){return t>>>=0,t===0?32:31-(Pn(t)/un|0)|0}var nl=256,rl=262144,il=4194304;function lr(t){var i=t&42;if(i!==0)return i;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function ll(t,i,o){var c=t.pendingLanes;if(c===0)return 0;var g=0,x=t.suspendedLanes,C=t.pingedLanes;t=t.warmLanes;var O=c&134217727;return O!==0?(c=O&~x,c!==0?g=lr(c):(C&=O,C!==0?g=lr(C):o||(o=O&~t,o!==0&&(g=lr(o))))):(O=c&~x,O!==0?g=lr(O):C!==0?g=lr(C):o||(o=c&~t,o!==0&&(g=lr(o)))),g===0?0:i!==0&&i!==g&&(i&x)===0&&(x=g&-g,o=i&-i,x>=o||x===32&&(o&4194048)!==0)?i:g}function yi(t,i){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&i)===0}function Ac(t,i){switch(t){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Wo(){var t=il;return il<<=1,(il&62914560)===0&&(il=4194304),t}function fa(t){for(var i=[],o=0;31>o;o++)i.push(t);return i}function xi(t,i){t.pendingLanes|=i,i!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Mc(t,i,o,c,g,x){var C=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var O=t.entanglements,Z=t.expirationTimes,le=t.hiddenUpdates;for(o=C&~o;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Lc=/[\n"\\]/g;function Kt(t){return t.replace(Lc,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function wi(t,i,o,c,g,x,C,O){t.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?t.type=C:t.removeAttribute("type"),i!=null?C==="number"?(i===0&&t.value===""||t.value!=i)&&(t.value=""+Zt(i)):t.value!==""+Zt(i)&&(t.value=""+Zt(i)):C!=="submit"&&C!=="reset"||t.removeAttribute("value"),i!=null?ga(t,C,Zt(i)):o!=null?ga(t,C,Zt(o)):c!=null&&t.removeAttribute("value"),g==null&&x!=null&&(t.defaultChecked=!!x),g!=null&&(t.checked=g&&typeof g!="function"&&typeof g!="symbol"),O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"?t.name=""+Zt(O):t.removeAttribute("name")}function ds(t,i,o,c,g,x,C,O){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(t.type=x),i!=null||o!=null){if(!(x!=="submit"&&x!=="reset"||i!=null)){qr(t);return}o=o!=null?""+Zt(o):"",i=i!=null?""+Zt(i):o,O||i===t.value||(t.value=i),t.defaultValue=i}c=c??g,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=O?t.checked:!!c,t.defaultChecked=!!c,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(t.name=C),qr(t)}function ga(t,i,o){i==="number"&&bi(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function sr(t,i,o,c){if(t=t.options,i){i={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ic=!1;if(cr)try{var xa={};Object.defineProperty(xa,"passive",{get:function(){Ic=!0}}),window.addEventListener("test",xa,xa),window.removeEventListener("test",xa,xa)}catch{Ic=!1}var Ur=null,Vc=null,ps=null;function qm(){if(ps)return ps;var t,i=Vc,o=i.length,c,g="value"in Ur?Ur.value:Ur.textContent,x=g.length;for(t=0;t=wa),$m=" ",Pm=!1;function Xm(t,i){switch(t){case"keyup":return iE.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var dl=!1;function aE(t,i){switch(t){case"compositionend":return Fm(i);case"keypress":return i.which!==32?null:(Pm=!0,$m);case"textInput":return t=i.data,t===$m&&Pm?null:t;default:return null}}function oE(t,i){if(dl)return t==="compositionend"||!Xc&&Xm(t,i)?(t=qm(),ps=Vc=Ur=null,dl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:o,offset:i-t};t=c}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=ng(o)}}function ig(t,i){return t&&i?t===i?!0:t&&t.nodeType===3?!1:i&&i.nodeType===3?ig(t,i.parentNode):"contains"in t?t.contains(i):t.compareDocumentPosition?!!(t.compareDocumentPosition(i)&16):!1:!1}function lg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var i=bi(t.document);i instanceof t.HTMLIFrameElement;){try{var o=typeof i.contentWindow.location.href=="string"}catch{o=!1}if(o)t=i.contentWindow;else break;i=bi(t.document)}return i}function Zc(t){var i=t&&t.nodeName&&t.nodeName.toLowerCase();return i&&(i==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||i==="textarea"||t.contentEditable==="true")}var mE=cr&&"documentMode"in document&&11>=document.documentMode,hl=null,Kc=null,Na=null,Jc=!1;function ag(t,i,o){var c=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Jc||hl==null||hl!==bi(c)||(c=hl,"selectionStart"in c&&Zc(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Na&&Ea(Na,c)||(Na=c,c=ou(Kc,"onSelect"),0>=C,g-=C,Fn=1<<32-Je(i)+g|o<je?(Ue=Se,Se=null):Ue=Se.sibling;var Fe=ae(te,Se,ie[je],fe);if(Fe===null){Se===null&&(Se=Ue);break}t&&Se&&Fe.alternate===null&&i(te,Se),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe,Se=Ue}if(je===ie.length)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;jeje?(Ue=Se,Se=null):Ue=Se.sibling;var si=ae(te,Se,Fe.value,fe);if(si===null){Se===null&&(Se=Ue);break}t&&Se&&si.alternate===null&&i(te,Se),W=x(si,W,je),Xe===null?Ee=si:Xe.sibling=si,Xe=si,Se=Ue}if(Fe.done)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;!Fe.done;je++,Fe=ie.next())Fe=de(te,Fe.value,fe),Fe!==null&&(W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return Ve&&dr(te,je),Ee}for(Se=c(Se);!Fe.done;je++,Fe=ie.next())Fe=oe(Se,te,je,Fe.value,fe),Fe!==null&&(t&&Fe.alternate!==null&&Se.delete(Fe.key===null?je:Fe.key),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return t&&Se.forEach(function(R2){return i(te,R2)}),Ve&&dr(te,je),Ee}function it(te,W,ie,fe){if(typeof ie=="object"&&ie!==null&&ie.type===k&&ie.key===null&&(ie=ie.props.children),typeof ie=="object"&&ie!==null){switch(ie.$$typeof){case v:e:{for(var Ee=ie.key;W!==null;){if(W.key===Ee){if(Ee=ie.type,Ee===k){if(W.tag===7){o(te,W.sibling),fe=g(W,ie.props.children),fe.return=te,te=fe;break e}}else if(W.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&Mi(Ee)===W.type){o(te,W.sibling),fe=g(W,ie.props),Ma(fe,ie),fe.return=te,te=fe;break e}o(te,W);break}else i(te,W);W=W.sibling}ie.type===k?(fe=ki(ie.props.children,te.mode,fe,ie.key),fe.return=te,te=fe):(fe=Es(ie.type,ie.key,ie.props,null,te.mode,fe),Ma(fe,ie),fe.return=te,te=fe)}return C(te);case w:e:{for(Ee=ie.key;W!==null;){if(W.key===Ee)if(W.tag===4&&W.stateNode.containerInfo===ie.containerInfo&&W.stateNode.implementation===ie.implementation){o(te,W.sibling),fe=g(W,ie.children||[]),fe.return=te,te=fe;break e}else{o(te,W);break}else i(te,W);W=W.sibling}fe=af(ie,te.mode,fe),fe.return=te,te=fe}return C(te);case D:return ie=Mi(ie),it(te,W,ie,fe)}if(G(ie))return we(te,W,ie,fe);if(q(ie)){if(Ee=q(ie),typeof Ee!="function")throw Error(l(150));return ie=Ee.call(ie),ke(te,W,ie,fe)}if(typeof ie.then=="function")return it(te,W,Ms(ie),fe);if(ie.$$typeof===E)return it(te,W,Cs(te,ie),fe);js(te,ie)}return typeof ie=="string"&&ie!==""||typeof ie=="number"||typeof ie=="bigint"?(ie=""+ie,W!==null&&W.tag===6?(o(te,W.sibling),fe=g(W,ie),fe.return=te,te=fe):(o(te,W),fe=lf(ie,te.mode,fe),fe.return=te,te=fe),C(te)):o(te,W)}return function(te,W,ie,fe){try{Aa=0;var Ee=it(te,W,ie,fe);return El=null,Ee}catch(Se){if(Se===_l||Se===zs)throw Se;var Xe=fn(29,Se,null,te.mode);return Xe.lanes=fe,Xe.return=te,Xe}finally{}}}var Oi=zg(!0),Ag=zg(!1),$r=!1;function xf(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vf(t,i){t=t.updateQueue,i.updateQueue===t&&(i.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Pr(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Xr(t,i,o){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(Ze&2)!==0){var g=c.pending;return g===null?i.next=i:(i.next=g.next,g.next=i),c.pending=i,i=_s(t),hg(t,null,o),i}return Ss(t,c,i,o),_s(t)}function ja(t,i,o){if(i=i.updateQueue,i!==null&&(i=i.shared,(o&4194048)!==0)){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,ts(t,o)}}function bf(t,i){var o=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,o===c)){var g=null,x=null;if(o=o.firstBaseUpdate,o!==null){do{var C={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};x===null?g=x=C:x=x.next=C,o=o.next}while(o!==null);x===null?g=x=i:x=x.next=i}else g=x=i;o={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:x,shared:c.shared,callbacks:c.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=i:t.next=i,o.lastBaseUpdate=i}var wf=!1;function Oa(){if(wf){var t=Sl;if(t!==null)throw t}}function Da(t,i,o,c){wf=!1;var g=t.updateQueue;$r=!1;var x=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var Z=O,le=Z.next;Z.next=null,C===null?x=le:C.next=le,C=Z;var ce=t.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=le:O.next=le,ce.lastBaseUpdate=Z))}if(x!==null){var de=g.baseState;C=0,ce=le=Z=null,O=x;do{var ae=O.lane&-536870913,oe=ae!==O.lane;if(oe?(qe&ae)===ae:(c&ae)===ae){ae!==0&&ae===wl&&(wf=!0),ce!==null&&(ce=ce.next={lane:0,tag:O.tag,payload:O.payload,callback:null,next:null});e:{var we=t,ke=O;ae=i;var it=o;switch(ke.tag){case 1:if(we=ke.payload,typeof we=="function"){de=we.call(it,de,ae);break e}de=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=ke.payload,ae=typeof we=="function"?we.call(it,de,ae):we,ae==null)break e;de=p({},de,ae);break e;case 2:$r=!0}}ae=O.callback,ae!==null&&(t.flags|=64,oe&&(t.flags|=8192),oe=g.callbacks,oe===null?g.callbacks=[ae]:oe.push(ae))}else oe={lane:ae,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(le=ce=oe,Z=de):ce=ce.next=oe,C|=ae;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);ce===null&&(Z=de),g.baseState=Z,g.firstBaseUpdate=le,g.lastBaseUpdate=ce,x===null&&(g.shared.lanes=0),Jr|=C,t.lanes=C,t.memoizedState=de}}function Mg(t,i){if(typeof t!="function")throw Error(l(191,t));t.call(i)}function jg(t,i){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;tx?x:8;var C=M.T,O={};M.T=O,Uf(t,!1,i,o);try{var Z=g(),le=M.S;if(le!==null&&le(O,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var ce=EE(Z,c);Ha(t,i,ce,gn(t))}else Ha(t,i,c,gn(t))}catch(de){Ha(t,i,{then:function(){},status:"rejected",reason:de},gn())}finally{$.p=x,C!==null&&O.types!==null&&(C.types=O.types),M.T=C}}function AE(){}function Bf(t,i,o,c){if(t.tag!==5)throw Error(l(476));var g=c0(t).queue;u0(t,g,i,Q,o===null?AE:function(){return f0(t),o(c)})}function c0(t){var i=t.memoizedState;if(i!==null)return i;i={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:Q},next:null};var o={};return i.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:o},next:null},t.memoizedState=i,t=t.alternate,t!==null&&(t.memoizedState=i),i}function f0(t){var i=c0(t);i.next===null&&(i=t.alternate.memoizedState),Ha(t,i.next.queue,{},gn())}function qf(){return Bt(eo)}function d0(){return bt().memoizedState}function h0(){return bt().memoizedState}function ME(t){for(var i=t.return;i!==null;){switch(i.tag){case 24:case 3:var o=gn();t=Pr(o);var c=Xr(i,t,o);c!==null&&(rn(c,i,o),ja(c,i,o)),i={cache:pf()},t.payload=i;return}i=i.return}}function jE(t,i,o){var c=gn();o={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Vs(t)?m0(i,o):(o=nf(t,i,o,c),o!==null&&(rn(o,t,c),g0(o,i,c)))}function p0(t,i,o){var c=gn();Ha(t,i,o,c)}function Ha(t,i,o,c){var g={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Vs(t))m0(i,g);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=i.lastRenderedReducer,x!==null))try{var C=i.lastRenderedState,O=x(C,o);if(g.hasEagerState=!0,g.eagerState=O,cn(O,C))return Ss(t,i,g,0),lt===null&&ws(),!1}catch{}finally{}if(o=nf(t,i,g,c),o!==null)return rn(o,t,c),g0(o,i,c),!0}return!1}function Uf(t,i,o,c){if(c={lane:2,revertLane:xd(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Vs(t)){if(i)throw Error(l(479))}else i=nf(t,o,c,2),i!==null&&rn(i,t,2)}function Vs(t){var i=t.alternate;return t===Ae||i!==null&&i===Ae}function m0(t,i){kl=Rs=!0;var o=t.pending;o===null?i.next=i:(i.next=o.next,o.next=i),t.pending=i}function g0(t,i,o){if((o&4194048)!==0){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,ts(t,o)}}var Ba={readContext:Bt,use:Bs,useCallback:mt,useContext:mt,useEffect:mt,useImperativeHandle:mt,useLayoutEffect:mt,useInsertionEffect:mt,useMemo:mt,useReducer:mt,useRef:mt,useState:mt,useDebugValue:mt,useDeferredValue:mt,useTransition:mt,useSyncExternalStore:mt,useId:mt,useHostTransitionStatus:mt,useFormState:mt,useActionState:mt,useOptimistic:mt,useMemoCache:mt,useCacheRefresh:mt};Ba.useEffectEvent=mt;var y0={readContext:Bt,use:Bs,useCallback:function(t,i){return Ft().memoizedState=[t,i===void 0?null:i],t},useContext:Bt,useEffect:e0,useImperativeHandle:function(t,i,o){o=o!=null?o.concat([t]):null,Us(4194308,4,i0.bind(null,i,t),o)},useLayoutEffect:function(t,i){return Us(4194308,4,t,i)},useInsertionEffect:function(t,i){Us(4,2,t,i)},useMemo:function(t,i){var o=Ft();i=i===void 0?null:i;var c=t();if(Di){Vt(!0);try{t()}finally{Vt(!1)}}return o.memoizedState=[c,i],c},useReducer:function(t,i,o){var c=Ft();if(o!==void 0){var g=o(i);if(Di){Vt(!0);try{o(i)}finally{Vt(!1)}}}else g=i;return c.memoizedState=c.baseState=g,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:g},c.queue=t,t=t.dispatch=jE.bind(null,Ae,t),[c.memoizedState,t]},useRef:function(t){var i=Ft();return t={current:t},i.memoizedState=t},useState:function(t){t=Of(t);var i=t.queue,o=p0.bind(null,Ae,i);return i.dispatch=o,[t.memoizedState,o]},useDebugValue:Lf,useDeferredValue:function(t,i){var o=Ft();return Hf(o,t,i)},useTransition:function(){var t=Of(!1);return t=u0.bind(null,Ae,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,i,o){var c=Ae,g=Ft();if(Ve){if(o===void 0)throw Error(l(407));o=o()}else{if(o=i(),lt===null)throw Error(l(349));(qe&127)!==0||Bg(c,i,o)}g.memoizedState=o;var x={value:o,getSnapshot:i};return g.queue=x,e0(Ug.bind(null,c,x,t),[t]),c.flags|=2048,Tl(9,{destroy:void 0},qg.bind(null,c,x,o,i),null),o},useId:function(){var t=Ft(),i=lt.identifierPrefix;if(Ve){var o=Qn,c=Fn;o=(c&~(1<<32-Je(c)-1)).toString(32)+o,i="_"+i+"R_"+o,o=Ls++,0<\/script>",x=x.removeChild(x.firstChild);break;case"select":x=typeof c.is=="string"?C.createElement("select",{is:c.is}):C.createElement("select"),c.multiple?x.multiple=!0:c.size&&(x.size=c.size);break;default:x=typeof c.is=="string"?C.createElement(g,{is:c.is}):C.createElement(g)}}x[jt]=i,x[Gt]=c;e:for(C=i.child;C!==null;){if(C.tag===5||C.tag===6)x.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===i)break e;for(;C.sibling===null;){if(C.return===null||C.return===i)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}i.stateNode=x;e:switch(Ut(x,g,c),g){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&xr(i)}}return ft(i),ed(i,i.type,t===null?null:t.memoizedProps,i.pendingProps,o),null;case 6:if(t&&i.stateNode!=null)t.memoizedProps!==c&&xr(i);else{if(typeof c!="string"&&i.stateNode===null)throw Error(l(166));if(t=J.current,vl(i)){if(t=i.stateNode,o=i.memoizedProps,c=null,g=Ht,g!==null)switch(g.tag){case 27:case 5:c=g.memoizedProps}t[jt]=i,t=!!(t.nodeValue===o||c!==null&&c.suppressHydrationWarning===!0||Ly(t.nodeValue,o)),t||Gr(i,!0)}else t=su(t).createTextNode(c),t[jt]=i,i.stateNode=t}return ft(i),null;case 31:if(o=i.memoizedState,t===null||t.memoizedState!==null){if(c=vl(i),o!==null){if(t===null){if(!c)throw Error(l(318));if(t=i.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(l(557));t[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),t=!1}else o=cf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return i.flags&256?(hn(i),i):(hn(i),null);if((i.flags&128)!==0)throw Error(l(558))}return ft(i),null;case 13:if(c=i.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(g=vl(i),c!==null&&c.dehydrated!==null){if(t===null){if(!g)throw Error(l(318));if(g=i.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(l(317));g[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),g=!1}else g=cf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=g),g=!0;if(!g)return i.flags&256?(hn(i),i):(hn(i),null)}return hn(i),(i.flags&128)!==0?(i.lanes=o,i):(o=c!==null,t=t!==null&&t.memoizedState!==null,o&&(c=i.child,g=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(g=c.alternate.memoizedState.cachePool.pool),x=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),x!==g&&(c.flags|=2048)),o!==t&&o&&(i.child.flags|=8192),Xs(i,i.updateQueue),ft(i),null);case 4:return se(),t===null&&Sd(i.stateNode.containerInfo),ft(i),null;case 10:return pr(i.type),ft(i),null;case 19:if(P(vt),c=i.memoizedState,c===null)return ft(i),null;if(g=(i.flags&128)!==0,x=c.rendering,x===null)if(g)Ua(c,!1);else{if(gt!==0||t!==null&&(t.flags&128)!==0)for(t=i.child;t!==null;){if(x=Ds(t),x!==null){for(i.flags|=128,Ua(c,!1),t=x.updateQueue,i.updateQueue=t,Xs(i,t),i.subtreeFlags=0,t=o,o=i.child;o!==null;)pg(o,t),o=o.sibling;return N(vt,vt.current&1|2),Ve&&dr(i,c.treeForkCount),i.child}t=t.sibling}c.tail!==null&&Mt()>Js&&(i.flags|=128,g=!0,Ua(c,!1),i.lanes=4194304)}else{if(!g)if(t=Ds(x),t!==null){if(i.flags|=128,g=!0,t=t.updateQueue,i.updateQueue=t,Xs(i,t),Ua(c,!0),c.tail===null&&c.tailMode==="hidden"&&!x.alternate&&!Ve)return ft(i),null}else 2*Mt()-c.renderingStartTime>Js&&o!==536870912&&(i.flags|=128,g=!0,Ua(c,!1),i.lanes=4194304);c.isBackwards?(x.sibling=i.child,i.child=x):(t=c.last,t!==null?t.sibling=x:i.child=x,c.last=x)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=Mt(),t.sibling=null,o=vt.current,N(vt,g?o&1|2:o&1),Ve&&dr(i,c.treeForkCount),t):(ft(i),null);case 22:case 23:return hn(i),_f(),c=i.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(i.flags|=8192):c&&(i.flags|=8192),c?(o&536870912)!==0&&(i.flags&128)===0&&(ft(i),i.subtreeFlags&6&&(i.flags|=8192)):ft(i),o=i.updateQueue,o!==null&&Xs(i,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==o&&(i.flags|=2048),t!==null&&P(Ai),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),i.memoizedState.cache!==o&&(i.flags|=2048),pr(St),ft(i),null;case 25:return null;case 30:return null}throw Error(l(156,i.tag))}function HE(t,i){switch(sf(i),i.tag){case 1:return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 3:return pr(St),se(),t=i.flags,(t&65536)!==0&&(t&128)===0?(i.flags=t&-65537|128,i):null;case 26:case 27:case 5:return ve(i),null;case 31:if(i.memoizedState!==null){if(hn(i),i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 13:if(hn(i),t=i.memoizedState,t!==null&&t.dehydrated!==null){if(i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 19:return P(vt),null;case 4:return se(),null;case 10:return pr(i.type),null;case 22:case 23:return hn(i),_f(),t!==null&&P(Ai),t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 24:return pr(St),null;case 25:return null;default:return null}}function I0(t,i){switch(sf(i),i.tag){case 3:pr(St),se();break;case 26:case 27:case 5:ve(i);break;case 4:se();break;case 31:i.memoizedState!==null&&hn(i);break;case 13:hn(i);break;case 19:P(vt);break;case 10:pr(i.type);break;case 22:case 23:hn(i),_f(),t!==null&&P(Ai);break;case 24:pr(St)}}function Ia(t,i){try{var o=i.updateQueue,c=o!==null?o.lastEffect:null;if(c!==null){var g=c.next;o=g;do{if((o.tag&t)===t){c=void 0;var x=o.create,C=o.inst;c=x(),C.destroy=c}o=o.next}while(o!==g)}}catch(O){et(i,i.return,O)}}function Zr(t,i,o){try{var c=i.updateQueue,g=c!==null?c.lastEffect:null;if(g!==null){var x=g.next;c=x;do{if((c.tag&t)===t){var C=c.inst,O=C.destroy;if(O!==void 0){C.destroy=void 0,g=i;var Z=o,le=O;try{le()}catch(ce){et(g,Z,ce)}}}c=c.next}while(c!==x)}}catch(ce){et(i,i.return,ce)}}function V0(t){var i=t.updateQueue;if(i!==null){var o=t.stateNode;try{jg(i,o)}catch(c){et(t,t.return,c)}}}function G0(t,i,o){o.props=Ri(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(c){et(t,i,c)}}function Va(t,i){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof o=="function"?t.refCleanup=o(c):o.current=c}}catch(g){et(t,i,g)}}function Zn(t,i){var o=t.ref,c=t.refCleanup;if(o!==null)if(typeof c=="function")try{c()}catch(g){et(t,i,g)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(g){et(t,i,g)}else o.current=null}function Y0(t){var i=t.type,o=t.memoizedProps,c=t.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":o.autoFocus&&c.focus();break e;case"img":o.src?c.src=o.src:o.srcSet&&(c.srcset=o.srcSet)}}catch(g){et(t,t.return,g)}}function td(t,i,o){try{var c=t.stateNode;l2(c,t.type,o,i),c[Gt]=i}catch(g){et(t,t.return,g)}}function $0(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ri(t.type)||t.tag===4}function nd(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||$0(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ri(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function rd(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,i):(i=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,i.appendChild(t),o=o._reactRootContainer,o!=null||i.onclick!==null||(i.onclick=ur));else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode,i=null),t=t.child,t!==null))for(rd(t,i,o),t=t.sibling;t!==null;)rd(t,i,o),t=t.sibling}function Fs(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?o.insertBefore(t,i):o.appendChild(t);else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Fs(t,i,o),t=t.sibling;t!==null;)Fs(t,i,o),t=t.sibling}function P0(t){var i=t.stateNode,o=t.memoizedProps;try{for(var c=t.type,g=i.attributes;g.length;)i.removeAttributeNode(g[0]);Ut(i,c,o),i[jt]=t,i[Gt]=o}catch(x){et(t,t.return,x)}}var vr=!1,Nt=!1,id=!1,X0=typeof WeakSet=="function"?WeakSet:Set,Dt=null;function BE(t,i){if(t=t.containerInfo,Nd=mu,t=lg(t),Zc(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var c=o.getSelection&&o.getSelection();if(c&&c.rangeCount!==0){o=c.anchorNode;var g=c.anchorOffset,x=c.focusNode;c=c.focusOffset;try{o.nodeType,x.nodeType}catch{o=null;break e}var C=0,O=-1,Z=-1,le=0,ce=0,de=t,ae=null;t:for(;;){for(var oe;de!==o||g!==0&&de.nodeType!==3||(O=C+g),de!==x||c!==0&&de.nodeType!==3||(Z=C+c),de.nodeType===3&&(C+=de.nodeValue.length),(oe=de.firstChild)!==null;)ae=de,de=oe;for(;;){if(de===t)break t;if(ae===o&&++le===g&&(O=C),ae===x&&++ce===c&&(Z=C),(oe=de.nextSibling)!==null)break;de=ae,ae=de.parentNode}de=oe}o=O===-1||Z===-1?null:{start:O,end:Z}}else o=null}o=o||{start:0,end:0}}else o=null;for(kd={focusedElem:t,selectionRange:o},mu=!1,Dt=i;Dt!==null;)if(i=Dt,t=i.child,(i.subtreeFlags&1028)!==0&&t!==null)t.return=i,Dt=t;else for(;Dt!==null;){switch(i=Dt,x=i.alternate,t=i.flags,i.tag){case 0:if((t&4)!==0&&(t=i.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o title"))),Ut(x,c,o),x[jt]=t,wt(x),c=x;break e;case"link":var C=Wy("link","href",g).get(c+(o.href||""));if(C){for(var O=0;Oit&&(C=it,it=ke,ke=C);var te=rg(O,ke),W=rg(O,it);if(te&&W&&(oe.rangeCount!==1||oe.anchorNode!==te.node||oe.anchorOffset!==te.offset||oe.focusNode!==W.node||oe.focusOffset!==W.offset)){var ie=de.createRange();ie.setStart(te.node,te.offset),oe.removeAllRanges(),ke>it?(oe.addRange(ie),oe.extend(W.node,W.offset)):(ie.setEnd(W.node,W.offset),oe.addRange(ie))}}}}for(de=[],oe=O;oe=oe.parentNode;)oe.nodeType===1&&de.push({element:oe,left:oe.scrollLeft,top:oe.scrollTop});for(typeof O.focus=="function"&&O.focus(),O=0;Oo?32:o,M.T=null,o=fd,fd=null;var x=ei,C=Er;if(Ot=0,Ol=ei=null,Er=0,(Ze&6)!==0)throw Error(l(331));var O=Ze;if(Ze|=4,iy(x.current),ty(x,x.current,C,o),Ze=O,Fa(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(Lt,x)}catch{}return!0}finally{$.p=g,M.T=c,Sy(t,i)}}function Ey(t,i,o){i=En(o,i),i=Yf(t.stateNode,i,2),t=Xr(t,i,2),t!==null&&(xi(t,2),Kn(t))}function et(t,i,o){if(t.tag===3)Ey(t,t,o);else for(;i!==null;){if(i.tag===3){Ey(i,t,o);break}else if(i.tag===1){var c=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(Wr===null||!Wr.has(c))){t=En(o,t),o=N0(2),c=Xr(i,o,2),c!==null&&(k0(o,c,i,t),xi(c,2),Kn(c));break}}i=i.return}}function md(t,i,o){var c=t.pingCache;if(c===null){c=t.pingCache=new IE;var g=new Set;c.set(i,g)}else g=c.get(i),g===void 0&&(g=new Set,c.set(i,g));g.has(o)||(od=!0,g.add(o),t=PE.bind(null,t,i,o),i.then(t,t))}function PE(t,i,o){var c=t.pingCache;c!==null&&c.delete(i),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,lt===t&&(qe&o)===o&&(gt===4||gt===3&&(qe&62914560)===qe&&300>Mt()-Ks?(Ze&2)===0&&Dl(t,0):sd|=o,jl===qe&&(jl=0)),Kn(t)}function Ny(t,i){i===0&&(i=Wo()),t=Ni(t,i),t!==null&&(xi(t,i),Kn(t))}function XE(t){var i=t.memoizedState,o=0;i!==null&&(o=i.retryLane),Ny(t,o)}function FE(t,i){var o=0;switch(t.tag){case 31:case 13:var c=t.stateNode,g=t.memoizedState;g!==null&&(o=g.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(l(314))}c!==null&&c.delete(i),Ny(t,o)}function QE(t,i){return It(t,i)}var iu=null,Ll=null,gd=!1,lu=!1,yd=!1,ni=0;function Kn(t){t!==Ll&&t.next===null&&(Ll===null?iu=Ll=t:Ll=Ll.next=t),lu=!0,gd||(gd=!0,KE())}function Fa(t,i){if(!yd&&lu){yd=!0;do for(var o=!1,c=iu;c!==null;){if(t!==0){var g=c.pendingLanes;if(g===0)var x=0;else{var C=c.suspendedLanes,O=c.pingedLanes;x=(1<<31-Je(42|t)+1)-1,x&=g&~(C&~O),x=x&201326741?x&201326741|1:x?x|2:0}x!==0&&(o=!0,zy(c,x))}else x=qe,x=ll(c,c===lt?x:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(x&3)===0||yi(c,x)||(o=!0,zy(c,x));c=c.next}while(o);yd=!1}}function ZE(){ky()}function ky(){lu=gd=!1;var t=0;ni!==0&&o2()&&(t=ni);for(var i=Mt(),o=null,c=iu;c!==null;){var g=c.next,x=Cy(c,i);x===0?(c.next=null,o===null?iu=g:o.next=g,g===null&&(Ll=o)):(o=c,(t!==0||(x&3)!==0)&&(lu=!0)),c=g}Ot!==0&&Ot!==5||Fa(t),ni!==0&&(ni=0)}function Cy(t,i){for(var o=t.suspendedLanes,c=t.pingedLanes,g=t.expirationTimes,x=t.pendingLanes&-62914561;0O)break;var ce=Z.transferSize,de=Z.initiatorType;ce&&Hy(de)&&(Z=Z.responseEnd,C+=ce*(Z"u"?null:document;function Qy(t,i,o){var c=Hl;if(c&&typeof i=="string"&&i){var g=Kt(i);g='link[rel="'+t+'"][href="'+g+'"]',typeof o=="string"&&(g+='[crossorigin="'+o+'"]'),Fy.has(g)||(Fy.add(g),t={rel:t,crossOrigin:o,href:i},c.querySelector(g)===null&&(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function g2(t){Nr.D(t),Qy("dns-prefetch",t,null)}function y2(t,i){Nr.C(t,i),Qy("preconnect",t,i)}function x2(t,i,o){Nr.L(t,i,o);var c=Hl;if(c&&t&&i){var g='link[rel="preload"][as="'+Kt(i)+'"]';i==="image"&&o&&o.imageSrcSet?(g+='[imagesrcset="'+Kt(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(g+='[imagesizes="'+Kt(o.imageSizes)+'"]')):g+='[href="'+Kt(t)+'"]';var x=g;switch(i){case"style":x=Bl(t);break;case"script":x=ql(t)}An.has(x)||(t=p({rel:"preload",href:i==="image"&&o&&o.imageSrcSet?void 0:t,as:i},o),An.set(x,t),c.querySelector(g)!==null||i==="style"&&c.querySelector(Ja(x))||i==="script"&&c.querySelector(Wa(x))||(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function v2(t,i){Nr.m(t,i);var o=Hl;if(o&&t){var c=i&&typeof i.as=="string"?i.as:"script",g='link[rel="modulepreload"][as="'+Kt(c)+'"][href="'+Kt(t)+'"]',x=g;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":x=ql(t)}if(!An.has(x)&&(t=p({rel:"modulepreload",href:t},i),An.set(x,t),o.querySelector(g)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Wa(x)))return}c=o.createElement("link"),Ut(c,"link",t),wt(c),o.head.appendChild(c)}}}function b2(t,i,o){Nr.S(t,i,o);var c=Hl;if(c&&t){var g=Hr(c).hoistableStyles,x=Bl(t);i=i||"default";var C=g.get(x);if(!C){var O={loading:0,preload:null};if(C=c.querySelector(Ja(x)))O.loading=5;else{t=p({rel:"stylesheet",href:t,"data-precedence":i},o),(o=An.get(x))&&Od(t,o);var Z=C=c.createElement("link");wt(Z),Ut(Z,"link",t),Z._p=new Promise(function(le,ce){Z.onload=le,Z.onerror=ce}),Z.addEventListener("load",function(){O.loading|=1}),Z.addEventListener("error",function(){O.loading|=2}),O.loading|=4,cu(C,i,c)}C={type:"stylesheet",instance:C,count:1,state:O},g.set(x,C)}}}function w2(t,i){Nr.X(t,i);var o=Hl;if(o&&t){var c=Hr(o).hoistableScripts,g=ql(t),x=c.get(g);x||(x=o.querySelector(Wa(g)),x||(t=p({src:t,async:!0},i),(i=An.get(g))&&Dd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function S2(t,i){Nr.M(t,i);var o=Hl;if(o&&t){var c=Hr(o).hoistableScripts,g=ql(t),x=c.get(g);x||(x=o.querySelector(Wa(g)),x||(t=p({src:t,async:!0,type:"module"},i),(i=An.get(g))&&Dd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function Zy(t,i,o,c){var g=(g=J.current)?uu(g):null;if(!g)throw Error(l(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(i=Bl(o.href),o=Hr(g).hoistableStyles,c=o.get(i),c||(c={type:"style",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=Bl(o.href);var x=Hr(g).hoistableStyles,C=x.get(t);if(C||(g=g.ownerDocument||g,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},x.set(t,C),(x=g.querySelector(Ja(t)))&&!x._p&&(C.instance=x,C.state.loading=5),An.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},An.set(t,o),x||_2(g,t,o,C.state))),i&&c===null)throw Error(l(528,""));return C}if(i&&c!==null)throw Error(l(529,""));return null;case"script":return i=o.async,o=o.src,typeof o=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=ql(o),o=Hr(g).hoistableScripts,c=o.get(i),c||(c={type:"script",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,t))}}function Bl(t){return'href="'+Kt(t)+'"'}function Ja(t){return'link[rel="stylesheet"]['+t+"]"}function Ky(t){return p({},t,{"data-precedence":t.precedence,precedence:null})}function _2(t,i,o,c){t.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(i=t.createElement("link"),c.preload=i,i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),Ut(i,"link",o),wt(i),t.head.appendChild(i))}function ql(t){return'[src="'+Kt(t)+'"]'}function Wa(t){return"script[async]"+t}function Jy(t,i,o){if(i.count++,i.instance===null)switch(i.type){case"style":var c=t.querySelector('style[data-href~="'+Kt(o.href)+'"]');if(c)return i.instance=c,wt(c),c;var g=p({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),wt(c),Ut(c,"style",g),cu(c,o.precedence,t),i.instance=c;case"stylesheet":g=Bl(o.href);var x=t.querySelector(Ja(g));if(x)return i.state.loading|=4,i.instance=x,wt(x),x;c=Ky(o),(g=An.get(g))&&Od(c,g),x=(t.ownerDocument||t).createElement("link"),wt(x);var C=x;return C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),i.state.loading|=4,cu(x,o.precedence,t),i.instance=x;case"script":return x=ql(o.src),(g=t.querySelector(Wa(x)))?(i.instance=g,wt(g),g):(c=o,(g=An.get(x))&&(c=p({},o),Dd(c,g)),t=t.ownerDocument||t,g=t.createElement("script"),wt(g),Ut(g,"link",c),t.head.appendChild(g),i.instance=g);case"void":return null;default:throw Error(l(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(c=i.instance,i.state.loading|=4,cu(c,o.precedence,t));return i.instance}function cu(t,i,o){for(var c=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),g=c.length?c[c.length-1]:null,x=g,C=0;C title"):null)}function E2(t,i,o){if(o===1||i.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return t=i.disabled,typeof i.precedence=="string"&&t==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function tx(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function N2(t,i,o,c){if(o.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var g=Bl(c.href),x=i.querySelector(Ja(g));if(x){i=x._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(t.count++,t=du.bind(t),i.then(t,t)),o.state.loading|=4,o.instance=x,wt(x);return}x=i.ownerDocument||i,c=Ky(c),(g=An.get(g))&&Od(c,g),x=x.createElement("link"),wt(x);var C=x;C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),o.instance=x}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,i),(i=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=du.bind(t),i.addEventListener("load",o),i.addEventListener("error",o))}}var Rd=0;function k2(t,i){return t.stylesheets&&t.count===0&&pu(t,t.stylesheets),0Rd?50:800)+i);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(g)}}:null}function du(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)pu(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var hu=null;function pu(t,i){t.stylesheets=null,t.unsuspend!==null&&(t.count++,hu=new Map,i.forEach(C2,t),hu=null,du.call(t))}function C2(t,i){if(!(i.state.loading&4)){var o=hu.get(t);if(o)var c=o.get(null);else{o=new Map,hu.set(t,o);for(var g=t.querySelectorAll("link[data-precedence],style[data-precedence]"),x=0;x"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Yd.exports=P2(),Yd.exports}var F2=X2();/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q2=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ab=(...e)=>e.filter((n,r,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===r).join(" ").trim();/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var Z2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K2=V.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:a="",children:s,iconNode:u,...f},h)=>V.createElement("svg",{ref:h,...Z2,width:n,height:n,stroke:e,strokeWidth:l?Number(r)*24/Number(n):r,className:Ab("lucide",a),...f},[...u.map(([d,m])=>V.createElement(d,m)),...Array.isArray(s)?s:[s]]));/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pe=(e,n)=>{const r=V.forwardRef(({className:l,...a},s)=>V.createElement(K2,{ref:s,iconNode:n,className:Ab(`lucide-${Q2(e)}`,l),...a}));return r.displayName=`${e}`,r};/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mb=Pe("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J2=Pe("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vi=Pe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ji=Pe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mr=Pe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W2=Pe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eN=Pe("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tN=Pe("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jb=Pe("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ob=Pe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nN=Pe("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rN=Pe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iN=Pe("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lN=Pe("FileOutput",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aN=Pe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Db=Pe("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xp=Pe("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ko=Pe("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oN=Pe("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sN=Pe("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fp=Pe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uN=Pe("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cN=Pe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fN=Pe("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dN=Pe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nx=Pe("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rb=Pe("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hN=Pe("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pN=Pe("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mN=Pe("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gN=Pe("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Io=Pe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yN=Pe("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),kx=e=>{let n;const r=new Set,l=(d,m)=>{const p=typeof d=="function"?d(n):d;if(!Object.is(p,n)){const y=n;n=m??(typeof p!="object"||p===null)?p:Object.assign({},n,p),r.forEach(v=>v(n,y))}},a=()=>n,f={setState:l,getState:a,getInitialState:()=>h,subscribe:d=>(r.add(d),()=>r.delete(d))},h=n=e(l,a,f);return f},xN=(e=>e?kx(e):kx),vN=e=>e;function bN(e,n=vN){const r=Pl.useSyncExternalStore(e.subscribe,Pl.useCallback(()=>n(e.getState()),[e,n]),Pl.useCallback(()=>n(e.getInitialState()),[e,n]));return Pl.useDebugValue(r),r}const Cx=e=>{const n=xN(e),r=l=>bN(n,l);return Object.assign(r,n),r},wN=(e=>e?Cx(e):Cx);function Qe(e,n,r="agent"){return e[n]||(e[n]={name:n,status:"pending",type:r,activity:[]}),e[n].activity||(e[n].activity=[]),e[n]}function Su(e,n,r){Qe(e,n).activity.push(r)}function Ie(e,n){e[n]&&(e[n]={...e[n]})}function ao(e,n,r,l){const a=e[n];if(!(a!=null&&a.for_each_items))return;const s=a.for_each_items.find(u=>u.key===r);s&&s.activity.push(l)}function SN(e,n,r){return{parentAgent:e,iteration:n,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function di(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;l=0;l--){const a=e[l];if(a.parentAgent===n&&(r==null||a.iteration===r))return{ctx:a,index:l}}return null}const he=wN((e,n)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const s=he.getState()._wsSend;s&&s({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},processEvent:r=>{const l=_u[r.type];e(a=>{const s={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(s,r.data,r.timestamp);const u=Eu(r);u&&s.eventLog.push(u);const f=Nu(r);return f&&s.activityLog.push(f),s})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const s of r){const u=_u[s.type];u&&u(a,s.data,s.timestamp);const f=Eu(s);f&&a.eventLog.push(f);const h=Nu(s);h&&a.activityLog.push(h),a.lastEventTime=s.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const s of r){const u=_u[s.type];u&&u(a,s.data,s.timestamp);const f=Eu(s);f&&a.eventLog.push(f);const h=Nu(s);h&&a.activityLog.push(h),a.lastEventTime=s.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),s={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,lastEventTime:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const f=_u[u.type];f&&f(s,u.data,u.timestamp);const h=Eu(u);h&&s.eventLog.push(h);const d=Nu(u);d&&s.activityLog.push(d),s.lastEventTime=u.timestamp}return s})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(s=>({highlightedEdges:[...s.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(s=>!(s.from===r&&s.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:(r,l)=>{const a=n(),s=a.viewContextPath;let u;if(s.length===0)u=a.subworkflowContexts;else{const h=di(a.subworkflowContexts,s);if(!h)return;u=h.children}const f=_N(u,r,l);f&&e({viewContextPath:[...s,f.index],selectedNode:null})},getViewedContext:()=>{const r=n();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=di(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=n(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let s=0;s0){const n=di(e.subworkflowContexts,e.activeContextPath);if(n)return{nodes:n.nodes,groupProgress:n.groupProgress,routes:n.routes,highlightedEdges:n.highlightedEdges,addCost:r=>{n.totalCost+=r,e.totalCost+=r},addTokens:r=>{n.totalTokens+=r,e.totalTokens+=r},incrCompleted:()=>{n.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:n=>{e.totalCost+=n},addTokens:n=>{e.totalTokens+=n},incrCompleted:()=>{e.agentsCompleted++}}}const _u={workflow_started:(e,n,r)=>{const l=n;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=n.yaml_source??null,e.conductorVersion=n.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],Qe(e.nodes,"$start","start"),e.nodes.$start.status="running",Ie(e.nodes,"$start");const a=new Set,s=new Set;for(const u of e.parallelGroups){for(const f of u.agents)a.add(f);s.add(u.name),Qe(e.nodes,u.name,"parallel_group"),e.groupProgress[u.name]={total:u.agents.length,completed:0,failed:0};for(const f of u.agents)Qe(e.nodes,f,"agent")}for(const u of e.forEachGroups)s.add(u.name),Qe(e.nodes,u.name,"for_each_group"),e.groupProgress[u.name]={total:0,completed:0,failed:0};for(const u of e.agents)if(!s.has(u.name)&&!a.has(u.name)){const f=u.type||"agent";Qe(e.nodes,u.name,f),u.model&&(e.nodes[u.name].model=u.model),s.add(u.name)}e.agentsTotal=s.size}else{const a=di(e.subworkflowContexts,e.activeContextPath);if(a){a.workflowName=l.name||"",a.status="running",a.entryPoint=l.entry_point||null,a.agents=l.agents||[],a.routes=l.routes||[],a.parallelGroups=l.parallel_groups||[],a.forEachGroups=l.for_each_groups||[],Qe(a.nodes,"$start","start"),a.nodes.$start.status="running";const s=new Set,u=new Set;for(const f of a.parallelGroups){for(const h of f.agents)s.add(h);u.add(f.name),Qe(a.nodes,f.name,"parallel_group"),a.groupProgress[f.name]={total:f.agents.length,completed:0,failed:0};for(const h of f.agents)Qe(a.nodes,h,"agent")}for(const f of a.forEachGroups)u.add(f.name),Qe(a.nodes,f.name,"for_each_group"),a.groupProgress[f.name]={total:0,completed:0,failed:0};for(const f of a.agents)if(!u.has(f.name)&&!s.has(f.name)){const h=f.type||"agent";Qe(a.nodes,f.name,h),f.model&&(a.nodes[f.name].model=f.model),u.add(f.name)}a.agentsTotal=u.size}}e.wfDepth++},agent_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.iteration!=null&&(s.output!=null||s.error_type!=null)&&(s.iterationHistory||(s.iterationHistory=[]),s.iterationHistory.push({iteration:s.iteration,prompt:s.prompt,output:s.output,elapsed:s.elapsed,model:s.model,tokens:s.tokens,input_tokens:s.input_tokens,output_tokens:s.output_tokens,cost_usd:s.cost_usd,activity:s.activity,error_type:s.error_type,error_message:s.error_message})),s.status="running",s.iteration=l.iteration,s.startedAt=r??Date.now()/1e3,s.activity=[],l.context_window_max!=null&&(s.context_window_max=l.context_window_max),s.prompt=void 0,s.output=void 0,s.error_type=void 0,s.error_message=void 0,Ie(a.nodes,l.agent_name)},agent_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name)},agent_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const s of l.routes)s.to===r.agent_name&&l.highlightedEdges.push({from:s.from,to:s.to,state:"failed"});Ie(l.nodes,r.agent_name)},agent_prompt_rendered:(e,n)=>{var u;const r=n,l=n.item_key,a=at(e),s=Qe(a.nodes,r.agent_name);if(s.prompt=r.rendered_prompt,s.context_keys=r.context_keys,l){ao(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const f=a.nodes[r.agent_name];if(f!=null&&f.for_each_items){const h=f.for_each_items.find(d=>d.key===l);h&&(h.prompt=r.rendered_prompt)}}Ie(a.nodes,r.agent_name)},agent_reasoning:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"reasoning",icon:"💭",label:"thinking",text:r.content};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_complete:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_turn_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_message:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.latest_message=r.content,Ie(l.nodes,r.agent_name)},script_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.status="running",s.startedAt=r??Date.now()/1e3,Ie(a.nodes,l.agent_name)},script_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,Ie(l.nodes,r.agent_name)},script_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name)},gate_presented:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,Ie(l.nodes,r.agent_name)},gate_resolved:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,Ie(l.nodes,r.agent_name)},route_taken:(e,n)=>{const r=n;at(e).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},parallel_agent_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_agent_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",Ie(l.nodes,r.group_name)},for_each_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},for_each_item_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),Ie(l.nodes,r.group_name)},for_each_item_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}Ie(l.nodes,r.group_name)},for_each_item_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}Ie(l.nodes,r.group_name)},for_each_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,Ie(l.nodes,r.group_name)},workflow_completed:(e,n)=>{if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const r=n;e.workflowStatus="completed",e.isPaused=!1,e.workflowOutput=r.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",Ie(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start")),e.highlightedEdges=[]}else{const r=di(e.subworkflowContexts,e.activeContextPath);if(r){const l=n;r.status="completed",r.workflowOutput=l.output??null,r.nodes.$end&&(r.nodes.$end.status="completed"),r.nodes.$start&&(r.nodes.$start.status="completed"),r.highlightedEdges=[]}e.activeContextPath=e.activeContextPath.slice(0,-1)}},workflow_failed:(e,n)=>{e.wfDepth=Math.max(0,e.wfDepth-1);const r=n;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",Ie(e.nodes,r.agent_name);for(const l of e.routes)l.to===r.agent_name&&e.highlightedEdges.push({from:l.from,to:l.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start"))}else{const l=di(e.subworkflowContexts,e.activeContextPath);l&&(l.status="failed",l.workflowFailure={error_type:r.error_type,message:r.message}),e.activeContextPath=e.activeContextPath.slice(0,-1)}},subworkflow_started:(e,n)=>{const r=n,l=SN(r.agent_name,r.iteration??1,r.workflow);if(e.activeContextPath.length===0)e.subworkflowContexts.push(l),e.activeContextPath=[e.subworkflowContexts.length-1];else{const s=di(e.subworkflowContexts,e.activeContextPath);s&&(s.children.push(l),e.activeContextPath=[...e.activeContextPath,s.children.length-1])}const a=e.activeContextPath.slice(0,-1);if(a.length===0){const s=e.nodes[r.agent_name];s&&(s.status="running",Ie(e.nodes,r.agent_name))}else{const s=di(e.subworkflowContexts,a);if(s){const u=s.nodes[r.agent_name];u&&(u.status="running",Ie(s.nodes,r.agent_name))}}},subworkflow_completed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="completed",a.elapsed=r.elapsed,l.incrCompleted(),Ie(l.nodes,r.agent_name))},subworkflow_failed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name))},checkpoint_saved:(e,n)=>{const r=n;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),Ie(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),Ie(e.nodes,r.agent_name),e.isPaused=!1}};function Eu(e){var l,a;const n=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:n,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:n,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:n,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:n,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:n,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:n,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:n,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};default:return null}}function qu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Nu(e){const n=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:n,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:oo(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:n,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:n,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?oo(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?oo(String(r.result),300):null};case"agent_turn_start":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:n,source:String(r.agent_name),type:"message",message:oo(String(r.content||""),500)};case"agent_completed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?oo(String(r.stdout),300):null};case"script_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function oo(e,n){return e.length<=n?e:e.slice(0,n)+"…"}function Tx(e){const n=e.match(/^(\s*)/);return n?n[1].length:0}function EN(e){const n=new Map;for(let r=0;ra)s=u;else break}s>r&&n.set(r,s)}return n}function NN(e){if(/^\s*#/.test(e))return b.jsx("span",{className:"text-emerald-500/70",children:e});const n=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(n){const[,l,a,s,u,f]=n;return b.jsxs("span",{children:[l,a??"",b.jsx("span",{className:"text-sky-400",children:s}),b.jsx("span",{className:"text-[var(--text-muted)]",children:u}),zx(f)]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,s]=r;return b.jsxs("span",{children:[l,b.jsx("span",{className:"text-[var(--text-muted)]",children:a}),zx(s)]})}return b.jsx("span",{children:e})}function zx(e){if(!e)return"";const n=e.indexOf(" #"),r=n>=0?e.slice(0,n):e,l=n>=0?e.slice(n):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=b.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=b.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),b.jsxs(b.Fragment,{children:[a,l&&b.jsx("span",{className:"text-emerald-500/70",children:l})]})}function kN({yaml:e,onClose:n}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const h=d=>{d.key==="Escape"&&n()};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[n]);const a=V.useMemo(()=>e.split(` +`),[e]),s=V.useMemo(()=>EN(a),[a]),u=V.useCallback(h=>{l(d=>{const m=new Set(d);return m.has(h)?m.delete(h):m.add(h),m})},[]),f=V.useMemo(()=>{const h=[];let d=-1;for(let m=0;mb.jsxs("div",{className:"flex",children:[b.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?b.jsx("button",{onClick:()=>u(h),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?b.jsx(Mr,{className:"w-3 h-3"}):b.jsx(Ji,{className:"w-3 h-3"})}):null}),b.jsxs("span",{className:"flex-1",children:[NN(d),p&&b.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(h),children:"···"})]})]},h))})})]})]})}function CN(){const e=he(_=>_.workflowName),n=he(_=>_.workflowStatus),r=he(_=>_.isPaused),l=he(_=>_.workflowYaml),a=he(_=>_.conductorVersion),[s,u]=V.useState(!1),[f,h]=V.useState(!1),[d,m]=V.useState(!1),[p,y]=V.useState(!1),v=n==="running"||n==="pending";V.useEffect(()=>{r||(u(!1),h(!1),m(!1))},[r]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(_){console.error("Failed to stop agent:",_),u(!1)}},k=async()=>{h(!0);try{await fetch("/api/resume",{method:"POST"})}catch(_){console.error("Failed to resume agent:",_),h(!1)}},S=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(_){console.error("Failed to kill workflow:",_),m(!1)}};return b.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(Mb,{className:"w-4 h-4 text-[var(--running)]"}),b.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&b.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),b.jsxs("div",{className:"flex items-center gap-3",children:[r?b.jsxs(b.Fragment,{children:[b.jsxs("button",{onClick:k,disabled:f,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\r + hover:bg-emerald-500/20 hover:border-emerald-500/30\r + disabled:opacity-50 disabled:cursor-not-allowed\r + transition-colors`,title:"Re-execute the paused agent",children:[b.jsx(Fp,{className:"w-3 h-3"}),f?"Resuming...":"Resume"]}),b.jsxs("button",{onClick:S,disabled:d,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-red-500/10 text-red-400 border border-red-500/20\r + hover:bg-red-500/20 hover:border-red-500/30\r + disabled:opacity-50 disabled:cursor-not-allowed\r + transition-colors`,title:"Stop workflow entirely (checkpoint saved for CLI resume)",children:[b.jsx(Io,{className:"w-3 h-3"}),d?"Killing...":"Kill"]})]}):v?b.jsxs("button",{onClick:w,disabled:s,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-red-500/10 text-red-400 border border-red-500/20\r + hover:bg-red-500/20 hover:border-red-500/30\r + disabled:opacity-50 disabled:cursor-not-allowed\r + transition-colors`,children:[b.jsx(Rb,{className:"w-3 h-3"}),s?"Stopping...":"Stop"]}):null,l&&b.jsxs("button",{onClick:()=>y(!0),className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r + hover:text-[var(--text)] hover:bg-[var(--surface)]\r + transition-colors`,title:"View workflow YAML configuration",children:[b.jsx(iN,{className:"w-3 h-3"}),"YAML"]}),b.jsxs("a",{href:"/api/logs",download:"conductor-logs.json",className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r + hover:text-[var(--text)] hover:bg-[var(--surface)]\r + transition-colors`,title:"Download full event log as JSON",children:[b.jsx(nN,{className:"w-3 h-3"}),"Logs"]}),b.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["v",a??"—"]})]}),p&&l&&b.jsx(kN,{yaml:l,onClose:()=>y(!1)})]})}function TN(){const e=he(s=>s.getBreadcrumbs),n=he(s=>s.navigateToContext),r=he(s=>s.viewContextPath);if(he(s=>s.subworkflowContexts).length===0&&r.length===0)return null;const a=e();return b.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5 bg-[var(--surface)] border-b border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx(Xp,{className:"w-3 h-3 text-[var(--text-muted)] mr-1"}),a.map((s,u)=>{const f=u===a.length-1,h=JSON.stringify(s.path)===JSON.stringify(r);return b.jsxs("span",{className:"flex items-center gap-1",children:[u>0&&b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)]"}),f?b.jsx("span",{className:"font-semibold text-[var(--text)]",children:s.label}):b.jsx("button",{onClick:()=>n(s.path),className:`hover:text-[var(--running)] transition-colors ${h?"text-[var(--text)] font-medium":"text-[var(--text-muted)]"}`,children:s.label})]},u)})]})}function Be(...e){return e.filter(Boolean).join(" ")}function Qt(e){if(e==null)return"";if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Vn(e){return e==null?"":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function mi(e){return e==null?"":`$${e.toFixed(4)}`}function Lb(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)}function zN(e,n){if(n<=0)return`${e.toLocaleString()} tokens (limit unknown)`;const r=a=>a.toLocaleString(),l=(e/n*100).toFixed(1);return`${r(e)} / ${r(n)} (${l}%)`}function Hb(){const e=he(f=>f.workflowStatus),n=he(f=>f.workflowStartTime),r=he(f=>f.replayMode),l=he(f=>f.lastEventTime),[a,s]=V.useState("—"),u=V.useRef(null);return V.useEffect(()=>{if(n!=null){if(r){u.current&&(clearInterval(u.current),u.current=null),s(Qt((l??n)-n));return}if(e==="running"){const f=()=>{const h=Date.now()/1e3-n;s(Qt(h))};return f(),u.current=setInterval(f,500),()=>{u.current&&clearInterval(u.current)}}else(e==="completed"||e==="failed")&&u.current&&(clearInterval(u.current),u.current=null)}},[e,n,r,l]),a}function AN(){const e=he(k=>k.workflowStatus),n=he(k=>k.agentsCompleted),r=he(k=>k.agentsTotal),l=he(k=>k.totalCost),a=he(k=>k.totalTokens),s=he(k=>k.wsStatus),u=he(k=>k.workflowFailure),f=he(k=>k.lastEventTime),h=Hb(),[d,m]=V.useState(null);V.useEffect(()=>{if(e!=="running"||f==null){m(null);return}const k=()=>{m(Math.floor(Date.now()/1e3-f))};k();const S=setInterval(k,1e3);return()=>clearInterval(S)},[e,f]);const p=e==="failed",y=(()=>{switch(e){case"pending":return"Waiting for workflow…";case"running":return"Running";case"completed":return"Completed";case"failed":{if(!u)return"Failed";const k=u.error_type||"";return k==="MaxIterationsError"?"Failed: exceeded maximum iterations":k==="TimeoutError"?"Failed: workflow timed out":u.message?`Failed: ${u.message.length>60?u.message.slice(0,57)+"...":u.message}`:`Failed: ${k}`}}})(),v={pending:"bg-[var(--pending)]",running:"bg-[var(--running)] animate-pulse",completed:"bg-[var(--completed)]",failed:"bg-[var(--failed)]"}[e],w=(()=>{switch(s){case"connected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--completed)]",children:[b.jsx(gN,{className:"w-3 h-3"}),b.jsx("span",{children:"Connected"})]});case"disconnected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--failed)]",children:[b.jsx(mN,{className:"w-3 h-3"}),b.jsx("span",{children:"Disconnected"})]});case"reconnecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--waiting)]",children:[b.jsx(ko,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Reconnecting\\u2026"})]});case"connecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-muted)]",children:[b.jsx(ko,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Connecting\\u2026"})]})}})();return b.jsxs("footer",{className:Be("flex items-center gap-4 px-4 py-1.5 border-t text-xs flex-shrink-0 transition-colors duration-300",p?"bg-red-950/50 border-red-500/30":"bg-[var(--surface)] border-[var(--border)]"),children:[b.jsx("span",{className:Be("w-2 h-2 rounded-full flex-shrink-0",v)}),b.jsx("span",{className:Be(p?"text-red-300":"text-[var(--text)]"),children:y}),r>0&&b.jsxs("span",{className:Be(p?"text-red-400/60":"text-[var(--text-muted)]"),children:[n,"/",r," agents"]}),e!=="pending"&&b.jsx("span",{className:Be("font-mono",p?"text-red-400/60":"text-[var(--text-muted)]"),children:h}),a>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total tokens used",children:[b.jsx(Db,{className:"w-3 h-3"}),b.jsx("span",{className:"font-mono",children:a.toLocaleString()})]}),l>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total cost",children:[b.jsx(jb,{className:"w-3 h-3"}),b.jsxs("span",{className:"font-mono",children:["$",l.toFixed(4)]})]}),d!=null&&d>=5&&b.jsxs("span",{className:Be("flex items-center gap-1 font-mono",d>=60?"text-amber-400":"text-[var(--text-muted)]"),title:"Time since last event from the provider",children:[b.jsx(tN,{className:"w-3 h-3"}),b.jsx("span",{children:d>=60?`${Math.floor(d/60)}m ${d%60}s idle`:`${d}s idle`})]}),b.jsx("span",{className:"flex-1"}),w]})}const MN=[1,5,10,20,50];function jN(e,n){if(n===0||e.length===0)return"+0.0s";const r=e[0].timestamp,a=e[Math.min(n,e.length)-1].timestamp-r;if(a<60)return`+${a.toFixed(1)}s`;const s=Math.floor(a/60),u=a%60;return`+${s}m${u.toFixed(0)}s`}function ON(){const e=he(p=>p.replayPosition),n=he(p=>p.replayTotalEvents),r=he(p=>p.replayPlaying),l=he(p=>p.replaySpeed),a=he(p=>p.replayEvents),s=he(p=>p.setReplayPosition),u=he(p=>p.setReplayPlaying),f=he(p=>p.setReplaySpeed),h=p=>{const y=parseInt(p.target.value,10);s(y),r&&u(!1)},d=()=>{!r&&e>=n&&s(0),u(!r)},m=n>0?e/n*100:0;return b.jsxs("footer",{className:"flex items-center gap-3 px-4 py-1.5 border-t bg-[var(--surface)] border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx("button",{onClick:d,className:"flex items-center justify-center w-6 h-6 rounded hover:bg-[var(--surface-hover)] text-[var(--text-secondary)] hover:text-[var(--text)] transition-colors",title:r?"Pause":"Play",children:r?b.jsx(sN,{className:"w-3.5 h-3.5"}):b.jsx(Fp,{className:"w-3.5 h-3.5"})}),b.jsxs("div",{className:"flex-1 relative flex items-center",children:[b.jsx("input",{type:"range",min:0,max:n,value:e,onChange:h,className:"w-full h-1 appearance-none rounded-full cursor-pointer",style:{background:`linear-gradient(to right, var(--accent) 0%, var(--accent) ${m}%, var(--border) ${m}%, var(--border) 100%)`,WebkitAppearance:"none"}}),b.jsx("style",{children:` + footer input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--accent); + border: 2px solid var(--surface); + cursor: pointer; + box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); + } + footer input[type="range"]::-moz-range-thumb { + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--accent); + border: 2px solid var(--surface); + cursor: pointer; + box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); + } + `})]}),b.jsx("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:jN(a,e)}),b.jsxs("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:["Event ",e,"/",n]}),b.jsx("div",{className:"flex items-center gap-0.5",children:MN.map(p=>b.jsxs("button",{onClick:()=>f(p),className:Be("px-1.5 py-0.5 rounded text-xs font-mono transition-colors",l===p?"bg-[var(--accent)] text-white":"text-[var(--text-muted)] hover:text-[var(--text-secondary)] hover:bg-[var(--surface-hover)]"),children:[p,"×"]},p))})]})}const cc=V.createContext(null);cc.displayName="PanelGroupContext";const yt={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Qp=10,Gi=V.useLayoutEffect,Ax=V2.useId,DN=typeof Ax=="function"?Ax:()=>null;let RN=0;function Zp(e=null){const n=DN(),r=V.useRef(e||n||null);return r.current===null&&(r.current=""+RN++),e??r.current}function Bb({children:e,className:n="",collapsedSize:r,collapsible:l,defaultSize:a,forwardedRef:s,id:u,maxSize:f,minSize:h,onCollapse:d,onExpand:m,onResize:p,order:y,style:v,tagName:w="div",...k}){const S=V.useContext(cc);if(S===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:_,expandPanel:T,getPanelSize:E,getPanelStyle:z,groupId:I,isPanelCollapsed:A,reevaluatePanelConstraints:L,registerPanel:D,resizePanel:U,unregisterPanel:X}=S,H=Zp(u),q=V.useRef({callbacks:{onCollapse:d,onExpand:m,onResize:p},constraints:{collapsedSize:r,collapsible:l,defaultSize:a,maxSize:f,minSize:h},id:H,idIsFromProps:u!==void 0,order:y});V.useRef({didLogMissingDefaultSizeWarning:!1}),Gi(()=>{const{callbacks:R,constraints:G}=q.current,M={...G};q.current.id=H,q.current.idIsFromProps=u!==void 0,q.current.order=y,R.onCollapse=d,R.onExpand=m,R.onResize=p,G.collapsedSize=r,G.collapsible=l,G.defaultSize=a,G.maxSize=f,G.minSize=h,(M.collapsedSize!==G.collapsedSize||M.collapsible!==G.collapsible||M.maxSize!==G.maxSize||M.minSize!==G.minSize)&&L(q.current,M)}),Gi(()=>{const R=q.current;return D(R),()=>{X(R)}},[y,H,D,X]),V.useImperativeHandle(s,()=>({collapse:()=>{_(q.current)},expand:R=>{T(q.current,R)},getId(){return H},getSize(){return E(q.current)},isCollapsed(){return A(q.current)},isExpanded(){return!A(q.current)},resize:R=>{U(q.current,R)}}),[_,T,E,A,H,U]);const ee=z(q.current,a);return V.createElement(w,{...k,children:e,className:n,id:H,style:{...ee,...v},[yt.groupId]:I,[yt.panel]:"",[yt.panelCollapsible]:l||void 0,[yt.panelId]:H,[yt.panelSize]:parseFloat(""+ee.flexGrow).toFixed(1)})}const mo=V.forwardRef((e,n)=>V.createElement(Bb,{...e,forwardedRef:n}));Bb.displayName="Panel";mo.displayName="forwardRef(Panel)";let bp=null,Uu=-1,hi=null;function LN(e,n){if(n){const r=(n&Gb)!==0,l=(n&Yb)!==0,a=(n&$b)!==0,s=(n&Pb)!==0;if(r)return a?"se-resize":s?"ne-resize":"e-resize";if(l)return a?"sw-resize":s?"nw-resize":"w-resize";if(a)return"s-resize";if(s)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function HN(){hi!==null&&(document.head.removeChild(hi),bp=null,hi=null,Uu=-1)}function Fd(e,n){var r,l;const a=LN(e,n);if(bp!==a){if(bp=a,hi===null&&(hi=document.createElement("style"),document.head.appendChild(hi)),Uu>=0){var s;(s=hi.sheet)===null||s===void 0||s.removeRule(Uu)}Uu=(r=(l=hi.sheet)===null||l===void 0?void 0:l.insertRule(`*{cursor: ${a} !important;}`))!==null&&r!==void 0?r:-1}}function qb(e){return e.type==="keydown"}function Ub(e){return e.type.startsWith("pointer")}function Ib(e){return e.type.startsWith("mouse")}function fc(e){if(Ub(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(Ib(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function BN(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function qN(e,n,r){return e.xn.x&&e.yn.y}function UN(e,n){if(e===n)throw new Error("Cannot compare node with itself");const r={a:Ox(e),b:Ox(n)};let l;for(;r.a.at(-1)===r.b.at(-1);)e=r.a.pop(),n=r.b.pop(),l=e;De(l,"Stacking order can only be calculated for elements with a common ancestor");const a={a:jx(Mx(r.a)),b:jx(Mx(r.b))};if(a.a===a.b){const s=l.childNodes,u={a:r.a.at(-1),b:r.b.at(-1)};let f=s.length;for(;f--;){const h=s[f];if(h===u.a)return 1;if(h===u.b)return-1}}return Math.sign(a.a-a.b)}const IN=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function VN(e){var n;const r=getComputedStyle((n=Vb(e))!==null&&n!==void 0?n:e).display;return r==="flex"||r==="inline-flex"}function GN(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||VN(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||IN.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function Mx(e){let n=e.length;for(;n--;){const r=e[n];if(De(r,"Missing node"),GN(r))return r}return null}function jx(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Ox(e){const n=[];for(;e;)n.push(e),e=Vb(e);return n}function Vb(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const Gb=1,Yb=2,$b=4,Pb=8,YN=BN()==="coarse";let Gn=[],Kl=!1,Ui=new Map,dc=new Map;const Co=new Set;function $N(e,n,r,l,a){var s;const{ownerDocument:u}=n,f={direction:r,element:n,hitAreaMargins:l,setResizeHandlerState:a},h=(s=Ui.get(u))!==null&&s!==void 0?s:0;return Ui.set(u,h+1),Co.add(f),Fu(),function(){var m;dc.delete(e),Co.delete(f);const p=(m=Ui.get(u))!==null&&m!==void 0?m:1;if(Ui.set(u,p-1),Fu(),p===1&&Ui.delete(u),Gn.includes(f)){const y=Gn.indexOf(f);y>=0&&Gn.splice(y,1),Jp(),a("up",!0,null)}}}function PN(e){const{target:n}=e,{x:r,y:l}=fc(e);Kl=!0,Kp({target:n,x:r,y:l}),Fu(),Gn.length>0&&(Qu("down",e),e.preventDefault(),Xb(n)||e.stopImmediatePropagation())}function Qd(e){const{x:n,y:r}=fc(e);if(Kl&&e.buttons===0&&(Kl=!1,Qu("up",e)),!Kl){const{target:l}=e;Kp({target:l,x:n,y:r})}Qu("move",e),Jp(),Gn.length>0&&e.preventDefault()}function Zd(e){const{target:n}=e,{x:r,y:l}=fc(e);dc.clear(),Kl=!1,Gn.length>0&&(e.preventDefault(),Xb(n)||e.stopImmediatePropagation()),Qu("up",e),Kp({target:n,x:r,y:l}),Jp(),Fu()}function Xb(e){let n=e;for(;n;){if(n.hasAttribute(yt.resizeHandle))return!0;n=n.parentElement}return!1}function Kp({target:e,x:n,y:r}){Gn.splice(0);let l=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(l=e),Co.forEach(a=>{const{element:s,hitAreaMargins:u}=a,f=s.getBoundingClientRect(),{bottom:h,left:d,right:m,top:p}=f,y=YN?u.coarse:u.fine;if(n>=d-y&&n<=m+y&&r>=p-y&&r<=h+y){if(l!==null&&document.contains(l)&&s!==l&&!s.contains(l)&&!l.contains(s)&&UN(l,s)>0){let w=l,k=!1;for(;w&&!w.contains(s);){if(qN(w.getBoundingClientRect(),f)){k=!0;break}w=w.parentElement}if(k)return}Gn.push(a)}})}function Kd(e,n){dc.set(e,n)}function Jp(){let e=!1,n=!1;Gn.forEach(l=>{const{direction:a}=l;a==="horizontal"?e=!0:n=!0});let r=0;dc.forEach(l=>{r|=l}),e&&n?Fd("intersection",r):e?Fd("horizontal",r):n?Fd("vertical",r):HN()}let Jd=new AbortController;function Fu(){Jd.abort(),Jd=new AbortController;const e={capture:!0,signal:Jd.signal};Co.size&&(Kl?(Gn.length>0&&Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("contextmenu",Zd,e),l.addEventListener("pointerleave",Qd,e),l.addEventListener("pointermove",Qd,e))}),window.addEventListener("pointerup",Zd,e),window.addEventListener("pointercancel",Zd,e)):Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("pointerdown",PN,e),l.addEventListener("pointermove",Qd,e))}))}function Qu(e,n){Co.forEach(r=>{const{setResizeHandlerState:l}=r,a=Gn.includes(r);l(e,a,n)})}function XN(){const[e,n]=V.useState(0);return V.useCallback(()=>n(r=>r+1),[])}function De(e,n){if(!e)throw console.error(n),Error(n)}function Pi(e,n,r=Qp){return e.toFixed(r)===n.toFixed(r)?0:e>n?1:-1}function Cr(e,n,r=Qp){return Pi(e,n,r)===0}function xn(e,n,r){return Pi(e,n,r)===0}function FN(e,n,r){if(e.length!==n.length)return!1;for(let l=0;l0&&(e=e<0?0-_:_)}}}{const p=e<0?f:h,y=r[p];De(y,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:w,minSize:k=0}=y;if(w){const S=n[p];if(De(S!=null,`Previous layout not found for panel index ${p}`),xn(S,k)){const _=S-v;Pi(_,Math.abs(e))>0&&(e=e<0?0-_:_)}}}}{const p=e<0?1:-1;let y=e<0?h:f,v=0;for(;;){const k=n[y];De(k!=null,`Previous layout not found for panel index ${y}`);const _=Xl({panelConstraints:r,panelIndex:y,size:100})-k;if(v+=_,y+=p,y<0||y>=r.length)break}const w=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-w:w}{let y=e<0?f:h;for(;y>=0&&y=0))break;e<0?y--:y++}}if(FN(a,u))return a;{const p=e<0?h:f,y=n[p];De(y!=null,`Previous layout not found for panel index ${p}`);const v=y+d,w=Xl({panelConstraints:r,panelIndex:p,size:v});if(u[p]=w,!xn(w,v)){let k=v-w,_=e<0?h:f;for(;_>=0&&_0?_--:_++}}}const m=u.reduce((p,y)=>y+p,0);return xn(m,100)?u:a}function QN({layout:e,panelsArray:n,pivotIndices:r}){let l=0,a=100,s=0,u=0;const f=r[0];De(f!=null,"No pivot index found"),n.forEach((p,y)=>{const{constraints:v}=p,{maxSize:w=100,minSize:k=0}=v;y===f?(l=k,a=w):(s+=k,u+=w)});const h=Math.min(a,100-s),d=Math.max(l,100-u),m=e[f];return{valueMax:h,valueMin:d,valueNow:m}}function To(e,n=document){return Array.from(n.querySelectorAll(`[${yt.resizeHandleId}][data-panel-group-id="${e}"]`))}function Fb(e,n,r=document){const a=To(e,r).findIndex(s=>s.getAttribute(yt.resizeHandleId)===n);return a??null}function Qb(e,n,r){const l=Fb(e,n,r);return l!=null?[l,l+1]:[-1,-1]}function Zb(e,n=document){var r;if(n instanceof HTMLElement&&(n==null||(r=n.dataset)===null||r===void 0?void 0:r.panelGroupId)==e)return n;const l=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return l||null}function hc(e,n=document){const r=n.querySelector(`[${yt.resizeHandleId}="${e}"]`);return r||null}function ZN(e,n,r,l=document){var a,s,u,f;const h=hc(n,l),d=To(e,l),m=h?d.indexOf(h):-1,p=(a=(s=r[m])===null||s===void 0?void 0:s.id)!==null&&a!==void 0?a:null,y=(u=(f=r[m+1])===null||f===void 0?void 0:f.id)!==null&&u!==void 0?u:null;return[p,y]}function KN({committedValuesRef:e,eagerValuesRef:n,groupId:r,layout:l,panelDataArray:a,panelGroupElement:s,setLayout:u}){V.useRef({didWarnAboutMissingResizeHandle:!1}),Gi(()=>{if(!s)return;const f=To(r,s);for(let h=0;h{f.forEach((h,d)=>{h.removeAttribute("aria-controls"),h.removeAttribute("aria-valuemax"),h.removeAttribute("aria-valuemin"),h.removeAttribute("aria-valuenow")})}},[r,l,a,s]),V.useEffect(()=>{if(!s)return;const f=n.current;De(f,"Eager values not found");const{panelDataArray:h}=f,d=Zb(r,s);De(d!=null,`No group found for id "${r}"`);const m=To(r,s);De(m,`No resize handles found for group id "${r}"`);const p=m.map(y=>{const v=y.getAttribute(yt.resizeHandleId);De(v,"Resize handle element has no handle id attribute");const[w,k]=ZN(r,v,h,s);if(w==null||k==null)return()=>{};const S=_=>{if(!_.defaultPrevented)switch(_.key){case"Enter":{_.preventDefault();const T=h.findIndex(E=>E.id===w);if(T>=0){const E=h[T];De(E,`No panel data found for index ${T}`);const z=l[T],{collapsedSize:I=0,collapsible:A,minSize:L=0}=E.constraints;if(z!=null&&A){const D=go({delta:xn(z,I)?L-I:I-z,initialLayout:l,panelConstraints:h.map(U=>U.constraints),pivotIndices:Qb(r,v,s),prevLayout:l,trigger:"keyboard"});l!==D&&u(D)}}break}}};return y.addEventListener("keydown",S),()=>{y.removeEventListener("keydown",S)}});return()=>{p.forEach(y=>y())}},[s,e,n,r,l,a,u])}function Dx(e,n){if(e.length!==n.length)return!1;for(let r=0;rs.constraints);let l=0,a=100;for(let s=0;s{const s=e[a];De(s,`Panel data not found for index ${a}`);const{callbacks:u,constraints:f,id:h}=s,{collapsedSize:d=0,collapsible:m}=f,p=r[h];if(p==null||l!==p){r[h]=l;const{onCollapse:y,onExpand:v,onResize:w}=u;w&&w(l,p),m&&(y||v)&&(v&&(p==null||Cr(p,d))&&!Cr(l,d)&&v(),y&&(p==null||!Cr(p,d))&&Cr(l,d)&&y())}})}function ku(e,n){if(e.length!==n.length)return!1;for(let r=0;r{r!==null&&clearTimeout(r),r=setTimeout(()=>{e(...a)},n)}}function Rx(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,r)=>{localStorage.setItem(n,r)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function Jb(e){return`react-resizable-panels:${e}`}function Wb(e){return e.map(n=>{const{constraints:r,id:l,idIsFromProps:a,order:s}=n;return a?l:s?`${s}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((n,r)=>n.localeCompare(r)).join(",")}function ew(e,n){try{const r=Jb(e),l=n.getItem(r);if(l){const a=JSON.parse(l);if(typeof a=="object"&&a!=null)return a}}catch{}return null}function rk(e,n,r){var l,a;const s=(l=ew(e,r))!==null&&l!==void 0?l:{},u=Wb(n);return(a=s[u])!==null&&a!==void 0?a:null}function ik(e,n,r,l,a){var s;const u=Jb(e),f=Wb(n),h=(s=ew(e,a))!==null&&s!==void 0?s:{};h[f]={expandToSizes:Object.fromEntries(r.entries()),layout:l};try{a.setItem(u,JSON.stringify(h))}catch(d){console.error(d)}}function Lx({layout:e,panelConstraints:n}){const r=[...e],l=r.reduce((s,u)=>s+u,0);if(r.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${r.map(s=>`${s}%`).join(", ")}`);if(!xn(l,100)&&r.length>0)for(let s=0;s(Rx(yo),yo.getItem(e)),setItem:(e,n)=>{Rx(yo),yo.setItem(e,n)}},Hx={};function tw({autoSaveId:e=null,children:n,className:r="",direction:l,forwardedRef:a,id:s=null,onLayout:u=null,keyboardResizeBy:f=null,storage:h=yo,style:d,tagName:m="div",...p}){const y=Zp(s),v=V.useRef(null),[w,k]=V.useState(null),[S,_]=V.useState([]),T=XN(),E=V.useRef({}),z=V.useRef(new Map),I=V.useRef(0),A=V.useRef({autoSaveId:e,direction:l,dragState:w,id:y,keyboardResizeBy:f,onLayout:u,storage:h}),L=V.useRef({layout:S,panelDataArray:[],panelDataArrayChanged:!1});V.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),V.useImperativeHandle(a,()=>({getId:()=>A.current.id,getLayout:()=>{const{layout:N}=L.current;return N},setLayout:N=>{const{onLayout:Y}=A.current,{layout:F,panelDataArray:J}=L.current,ne=Lx({layout:N,panelConstraints:J.map(re=>re.constraints)});Dx(F,ne)||(_(ne),L.current.layout=ne,Y&&Y(ne),Il(J,ne,E.current))}}),[]),Gi(()=>{A.current.autoSaveId=e,A.current.direction=l,A.current.dragState=w,A.current.id=y,A.current.onLayout=u,A.current.storage=h}),KN({committedValuesRef:A,eagerValuesRef:L,groupId:y,layout:S,panelDataArray:L.current.panelDataArray,setLayout:_,panelGroupElement:v.current}),V.useEffect(()=>{const{panelDataArray:N}=L.current;if(e){if(S.length===0||S.length!==N.length)return;let Y=Hx[e];Y==null&&(Y=nk(ik,lk),Hx[e]=Y);const F=[...N],J=new Map(z.current);Y(e,F,J,S,h)}},[e,S,h]),V.useEffect(()=>{});const D=V.useCallback(N=>{const{onLayout:Y}=A.current,{layout:F,panelDataArray:J}=L.current;if(N.constraints.collapsible){const ne=J.map(ve=>ve.constraints),{collapsedSize:re=0,panelSize:se,pivotIndices:ye}=Bi(J,N,F);if(De(se!=null,`Panel size not found for panel "${N.id}"`),!Cr(se,re)){z.current.set(N.id,se);const xe=$l(J,N)===J.length-1?se-re:re-se,pe=go({delta:xe,initialLayout:F,panelConstraints:ne,pivotIndices:ye,prevLayout:F,trigger:"imperative-api"});ku(F,pe)||(_(pe),L.current.layout=pe,Y&&Y(pe),Il(J,pe,E.current))}}},[]),U=V.useCallback((N,Y)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=L.current;if(N.constraints.collapsible){const re=ne.map(_e=>_e.constraints),{collapsedSize:se=0,panelSize:ye=0,minSize:ve=0,pivotIndices:xe}=Bi(ne,N,J),pe=Y??ve;if(Cr(ye,se)){const _e=z.current.get(N.id),Me=_e!=null&&_e>=pe?_e:pe,ut=$l(ne,N)===ne.length-1?ye-Me:Me-ye,tt=go({delta:ut,initialLayout:J,panelConstraints:re,pivotIndices:xe,prevLayout:J,trigger:"imperative-api"});ku(J,tt)||(_(tt),L.current.layout=tt,F&&F(tt),Il(ne,tt,E.current))}}},[]),X=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=L.current,{panelSize:J}=Bi(F,N,Y);return De(J!=null,`Panel size not found for panel "${N.id}"`),J},[]),H=V.useCallback((N,Y)=>{const{panelDataArray:F}=L.current,J=$l(F,N);return tk({defaultSize:Y,dragState:w,layout:S,panelData:F,panelIndex:J})},[w,S]),q=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=L.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,Y);return De(re!=null,`Panel size not found for panel "${N.id}"`),ne===!0&&Cr(re,J)},[]),ee=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=L.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,Y);return De(re!=null,`Panel size not found for panel "${N.id}"`),!ne||Pi(re,J)>0},[]),R=V.useCallback(N=>{const{panelDataArray:Y}=L.current;Y.push(N),Y.sort((F,J)=>{const ne=F.order,re=J.order;return ne==null&&re==null?0:ne==null?-1:re==null?1:ne-re}),L.current.panelDataArrayChanged=!0,T()},[T]);Gi(()=>{if(L.current.panelDataArrayChanged){L.current.panelDataArrayChanged=!1;const{autoSaveId:N,onLayout:Y,storage:F}=A.current,{layout:J,panelDataArray:ne}=L.current;let re=null;if(N){const ye=rk(N,ne,F);ye&&(z.current=new Map(Object.entries(ye.expandToSizes)),re=ye.layout)}re==null&&(re=ek({panelDataArray:ne}));const se=Lx({layout:re,panelConstraints:ne.map(ye=>ye.constraints)});Dx(J,se)||(_(se),L.current.layout=se,Y&&Y(se),Il(ne,se,E.current))}}),Gi(()=>{const N=L.current;return()=>{N.layout=[]}},[]);const G=V.useCallback(N=>{let Y=!1;const F=v.current;return F&&window.getComputedStyle(F,null).getPropertyValue("direction")==="rtl"&&(Y=!0),function(ne){ne.preventDefault();const re=v.current;if(!re)return()=>null;const{direction:se,dragState:ye,id:ve,keyboardResizeBy:xe,onLayout:pe}=A.current,{layout:_e,panelDataArray:Me}=L.current,{initialLayout:Ce}=ye??{},ut=Qb(ve,N,re);let tt=WN(ne,N,se,ye,xe,re);const At=se==="horizontal";At&&Y&&(tt=-tt);const It=Me.map(jn=>jn.constraints),Rt=go({delta:tt,initialLayout:Ce??_e,panelConstraints:It,pivotIndices:ut,prevLayout:_e,trigger:qb(ne)?"keyboard":"mouse-or-touch"}),Sn=!ku(_e,Rt);(Ub(ne)||Ib(ne))&&I.current!=tt&&(I.current=tt,!Sn&&tt!==0?At?Kd(N,tt<0?Gb:Yb):Kd(N,tt<0?$b:Pb):Kd(N,0)),Sn&&(_(Rt),L.current.layout=Rt,pe&&pe(Rt),Il(Me,Rt,E.current))}},[]),M=V.useCallback((N,Y)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=L.current,re=ne.map(_e=>_e.constraints),{panelSize:se,pivotIndices:ye}=Bi(ne,N,J);De(se!=null,`Panel size not found for panel "${N.id}"`);const xe=$l(ne,N)===ne.length-1?se-Y:Y-se,pe=go({delta:xe,initialLayout:J,panelConstraints:re,pivotIndices:ye,prevLayout:J,trigger:"imperative-api"});ku(J,pe)||(_(pe),L.current.layout=pe,F&&F(pe),Il(ne,pe,E.current))},[]),$=V.useCallback((N,Y)=>{const{layout:F,panelDataArray:J}=L.current,{collapsedSize:ne=0,collapsible:re}=Y,{collapsedSize:se=0,collapsible:ye,maxSize:ve=100,minSize:xe=0}=N.constraints,{panelSize:pe}=Bi(J,N,F);pe!=null&&(re&&ye&&Cr(pe,ne)?Cr(ne,se)||M(N,se):peve&&M(N,ve))},[M]),Q=V.useCallback((N,Y)=>{const{direction:F}=A.current,{layout:J}=L.current;if(!v.current)return;const ne=hc(N,v.current);De(ne,`Drag handle element not found for id "${N}"`);const re=Kb(F,Y);k({dragHandleId:N,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:re,initialLayout:J})},[]),K=V.useCallback(()=>{k(null)},[]),j=V.useCallback(N=>{const{panelDataArray:Y}=L.current,F=$l(Y,N);F>=0&&(Y.splice(F,1),delete E.current[N.id],L.current.panelDataArrayChanged=!0,T())},[T]),B=V.useMemo(()=>({collapsePanel:D,direction:l,dragState:w,expandPanel:U,getPanelSize:X,getPanelStyle:H,groupId:y,isPanelCollapsed:q,isPanelExpanded:ee,reevaluatePanelConstraints:$,registerPanel:R,registerResizeHandle:G,resizePanel:M,startDragging:Q,stopDragging:K,unregisterPanel:j,panelGroupElement:v.current}),[D,w,l,U,X,H,y,q,ee,$,R,G,M,Q,K,j]),P={display:"flex",flexDirection:l==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return V.createElement(cc.Provider,{value:B},V.createElement(m,{...p,children:n,className:r,id:s,ref:v,style:{...P,...d},[yt.group]:"",[yt.groupDirection]:l,[yt.groupId]:y}))}const wp=V.forwardRef((e,n)=>V.createElement(tw,{...e,forwardedRef:n}));tw.displayName="PanelGroup";wp.displayName="forwardRef(PanelGroup)";function $l(e,n){return e.findIndex(r=>r===n||r.id===n.id)}function Bi(e,n,r){const l=$l(e,n),s=l===e.length-1?[l-1,l]:[l,l+1],u=r[l];return{...n.constraints,panelSize:u,pivotIndices:s}}function ak({disabled:e,handleId:n,resizeHandler:r,panelGroupElement:l}){V.useEffect(()=>{if(e||r==null||l==null)return;const a=hc(n,l);if(a==null)return;const s=u=>{if(!u.defaultPrevented)switch(u.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{u.preventDefault(),r(u);break}case"F6":{u.preventDefault();const f=a.getAttribute(yt.groupId);De(f,`No group element found for id "${f}"`);const h=To(f,l),d=Fb(f,n,l);De(d!==null,`No resize element found for id "${n}"`);const m=u.shiftKey?d>0?d-1:h.length-1:d+1{a.removeEventListener("keydown",s)}},[l,e,n,r])}function Sp({children:e=null,className:n="",disabled:r=!1,hitAreaMargins:l,id:a,onBlur:s,onClick:u,onDragging:f,onFocus:h,onPointerDown:d,onPointerUp:m,style:p={},tabIndex:y=0,tagName:v="div",...w}){var k,S;const _=V.useRef(null),T=V.useRef({onClick:u,onDragging:f,onPointerDown:d,onPointerUp:m});V.useEffect(()=>{T.current.onClick=u,T.current.onDragging=f,T.current.onPointerDown=d,T.current.onPointerUp=m});const E=V.useContext(cc);if(E===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:z,groupId:I,registerResizeHandle:A,startDragging:L,stopDragging:D,panelGroupElement:U}=E,X=Zp(a),[H,q]=V.useState("inactive"),[ee,R]=V.useState(!1),[G,M]=V.useState(null),$=V.useRef({state:H});Gi(()=>{$.current.state=H}),V.useEffect(()=>{if(r)M(null);else{const B=A(X);M(()=>B)}},[r,X,A]);const Q=(k=l==null?void 0:l.coarse)!==null&&k!==void 0?k:15,K=(S=l==null?void 0:l.fine)!==null&&S!==void 0?S:5;V.useEffect(()=>{if(r||G==null)return;const B=_.current;De(B,"Element ref not attached");let P=!1;return $N(X,B,z,{coarse:Q,fine:K},(Y,F,J)=>{if(!F){q("inactive");return}switch(Y){case"down":{q("drag"),P=!1,De(J,'Expected event to be defined for "down" action'),L(X,J);const{onDragging:ne,onPointerDown:re}=T.current;ne==null||ne(!0),re==null||re();break}case"move":{const{state:ne}=$.current;P=!0,ne!=="drag"&&q("hover"),De(J,'Expected event to be defined for "move" action'),G(J);break}case"up":{q("hover"),D();const{onClick:ne,onDragging:re,onPointerUp:se}=T.current;re==null||re(!1),se==null||se(),P||ne==null||ne();break}}})},[Q,z,r,K,A,X,G,L,D]),ak({disabled:r,handleId:X,resizeHandler:G,panelGroupElement:U});const j={touchAction:"none",userSelect:"none"};return V.createElement(v,{...w,children:e,className:n,id:a,onBlur:()=>{R(!1),s==null||s()},onFocus:()=>{R(!0),h==null||h()},ref:_,role:"separator",style:{...j,...p},tabIndex:y,[yt.groupDirection]:z,[yt.groupId]:I,[yt.resizeHandle]:"",[yt.resizeHandleActive]:H==="drag"?"pointer":ee?"keyboard":void 0,[yt.resizeHandleEnabled]:!r,[yt.resizeHandleId]:X,[yt.resizeHandleState]:H})}Sp.displayName="PanelResizeHandle";function zt(e){if(typeof e=="string"||typeof e=="number")return""+e;let n="";if(Array.isArray(e))for(let r=0,l;r{}};function pc(){for(var e=0,n=arguments.length,r={},l;e=0&&(l=r.slice(a+1),r=r.slice(0,a)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:l}})}Iu.prototype=pc.prototype={constructor:Iu,on:function(e,n){var r=this._,l=sk(e+"",r),a,s=-1,u=l.length;if(arguments.length<2){for(;++s0)for(var r=new Array(a),l=0,a,s;l=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),qx.hasOwnProperty(n)?{space:qx[n],local:e}:e}function ck(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===_p&&n.documentElement.namespaceURI===_p?n.createElement(e):n.createElementNS(r,e)}}function fk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function nw(e){var n=mc(e);return(n.local?fk:ck)(n)}function dk(){}function Wp(e){return e==null?dk:function(){return this.querySelector(e)}}function hk(e){typeof e!="function"&&(e=Wp(e));for(var n=this._groups,r=n.length,l=new Array(r),a=0;a=E&&(E=T+1);!(I=S[E])&&++E=0;)(u=l[a])&&(s&&u.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(u,s),s=u);return this}function Bk(e){e||(e=qk);function n(p,y){return p&&y?e(p.__data__,y.__data__):!p-!y}for(var r=this._groups,l=r.length,a=new Array(l),s=0;sn?1:e>=n?0:NaN}function Uk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Ik(){return Array.from(this)}function Vk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?Wk:typeof n=="function"?tC:eC)(e,n,r??"")):na(this.node(),e)}function na(e,n){return e.style.getPropertyValue(n)||ow(e).getComputedStyle(e,null).getPropertyValue(n)}function rC(e){return function(){delete this[e]}}function iC(e,n){return function(){this[e]=n}}function lC(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function aC(e,n){return arguments.length>1?this.each((n==null?rC:typeof n=="function"?lC:iC)(e,n)):this.node()[e]}function sw(e){return e.trim().split(/^|\s+/)}function em(e){return e.classList||new uw(e)}function uw(e){this._node=e,this._names=sw(e.getAttribute("class")||"")}uw.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function cw(e,n){for(var r=em(e),l=-1,a=n.length;++l=0&&(r=n.slice(l+1),n=n.slice(0,l)),{type:n,name:r}})}function DC(e){return function(){var n=this.__on;if(n){for(var r=0,l=-1,a=n.length,s;r()=>e;function Ep(e,{sourceEvent:n,subject:r,target:l,identifier:a,active:s,x:u,y:f,dx:h,dy:d,dispatch:m}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:h,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:m}})}Ep.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function YC(e){return!e.ctrlKey&&!e.button}function $C(){return this.parentNode}function PC(e,n){return n??{x:e.x,y:e.y}}function XC(){return navigator.maxTouchPoints||"ontouchstart"in this}function gw(){var e=YC,n=$C,r=PC,l=XC,a={},s=pc("start","drag","end"),u=0,f,h,d,m,p=0;function y(z){z.on("mousedown.drag",v).filter(l).on("touchstart.drag",S).on("touchmove.drag",_,GC).on("touchend.drag touchcancel.drag",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(z,I){if(!(m||!e.call(this,z,I))){var A=E(this,n.call(this,z,I),z,I,"mouse");A&&(vn(z.view).on("mousemove.drag",w,zo).on("mouseup.drag",k,zo),pw(z.view),Wd(z),d=!1,f=z.clientX,h=z.clientY,A("start",z))}}function w(z){if(Jl(z),!d){var I=z.clientX-f,A=z.clientY-h;d=I*I+A*A>p}a.mouse("drag",z)}function k(z){vn(z.view).on("mousemove.drag mouseup.drag",null),mw(z.view,d),Jl(z),a.mouse("end",z)}function S(z,I){if(e.call(this,z,I)){var A=z.changedTouches,L=n.call(this,z,I),D=A.length,U,X;for(U=0;U>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?Tu(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?Tu(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=QC.exec(e))?new an(n[1],n[2],n[3],1):(n=ZC.exec(e))?new an(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=KC.exec(e))?Tu(n[1],n[2],n[3],n[4]):(n=JC.exec(e))?Tu(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=WC.exec(e))?Px(n[1],n[2]/100,n[3]/100,1):(n=e3.exec(e))?Px(n[1],n[2]/100,n[3]/100,n[4]):Ux.hasOwnProperty(e)?Gx(Ux[e]):e==="transparent"?new an(NaN,NaN,NaN,0):null}function Gx(e){return new an(e>>16&255,e>>8&255,e&255,1)}function Tu(e,n,r,l){return l<=0&&(e=n=r=NaN),new an(e,n,r,l)}function r3(e){return e instanceof Go||(e=Xi(e)),e?(e=e.rgb(),new an(e.r,e.g,e.b,e.opacity)):new an}function Np(e,n,r,l){return arguments.length===1?r3(e):new an(e,n,r,l??1)}function an(e,n,r,l){this.r=+e,this.g=+n,this.b=+r,this.opacity=+l}tm(an,Np,yw(Go,{brighter(e){return e=e==null?Ku:Math.pow(Ku,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ao:Math.pow(Ao,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new an(Yi(this.r),Yi(this.g),Yi(this.b),Ju(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yx,formatHex:Yx,formatHex8:i3,formatRgb:$x,toString:$x}));function Yx(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}`}function i3(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}${Ii((isNaN(this.opacity)?1:this.opacity)*255)}`}function $x(){const e=Ju(this.opacity);return`${e===1?"rgb(":"rgba("}${Yi(this.r)}, ${Yi(this.g)}, ${Yi(this.b)}${e===1?")":`, ${e})`}`}function Ju(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Yi(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ii(e){return e=Yi(e),(e<16?"0":"")+e.toString(16)}function Px(e,n,r,l){return l<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new qn(e,n,r,l)}function xw(e){if(e instanceof qn)return new qn(e.h,e.s,e.l,e.opacity);if(e instanceof Go||(e=Xi(e)),!e)return new qn;if(e instanceof qn)return e;e=e.rgb();var n=e.r/255,r=e.g/255,l=e.b/255,a=Math.min(n,r,l),s=Math.max(n,r,l),u=NaN,f=s-a,h=(s+a)/2;return f?(n===s?u=(r-l)/f+(r0&&h<1?0:u,new qn(u,f,h,e.opacity)}function l3(e,n,r,l){return arguments.length===1?xw(e):new qn(e,n,r,l??1)}function qn(e,n,r,l){this.h=+e,this.s=+n,this.l=+r,this.opacity=+l}tm(qn,l3,yw(Go,{brighter(e){return e=e==null?Ku:Math.pow(Ku,e),new qn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ao:Math.pow(Ao,e),new qn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,l=r+(r<.5?r:1-r)*n,a=2*r-l;return new an(eh(e>=240?e-240:e+120,a,l),eh(e,a,l),eh(e<120?e+240:e-120,a,l),this.opacity)},clamp(){return new qn(Xx(this.h),zu(this.s),zu(this.l),Ju(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Ju(this.opacity);return`${e===1?"hsl(":"hsla("}${Xx(this.h)}, ${zu(this.s)*100}%, ${zu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Xx(e){return e=(e||0)%360,e<0?e+360:e}function zu(e){return Math.max(0,Math.min(1,e||0))}function eh(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const nm=e=>()=>e;function a3(e,n){return function(r){return e+r*n}}function o3(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(l){return Math.pow(e+l*n,r)}}function s3(e){return(e=+e)==1?vw:function(n,r){return r-n?o3(n,r,e):nm(isNaN(n)?r:n)}}function vw(e,n){var r=n-e;return r?a3(e,r):nm(isNaN(e)?n:e)}const Wu=(function e(n){var r=s3(n);function l(a,s){var u=r((a=Np(a)).r,(s=Np(s)).r),f=r(a.g,s.g),h=r(a.b,s.b),d=vw(a.opacity,s.opacity);return function(m){return a.r=u(m),a.g=f(m),a.b=h(m),a.opacity=d(m),a+""}}return l.gamma=e,l})(1);function u3(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,l=n.slice(),a;return function(s){for(a=0;ar&&(s=n.slice(r,s),f[u]?f[u]+=s:f[++u]=s),(l=l[0])===(a=a[0])?f[u]?f[u]+=a:f[++u]=a:(f[++u]=null,h.push({i:u,x:Wn(l,a)})),r=th.lastIndex;return r180?m+=360:m-d>180&&(d+=360),y.push({i:p.push(a(p)+"rotate(",null,l)-2,x:Wn(d,m)})):m&&p.push(a(p)+"rotate("+m+l)}function f(d,m,p,y){d!==m?y.push({i:p.push(a(p)+"skewX(",null,l)-2,x:Wn(d,m)}):m&&p.push(a(p)+"skewX("+m+l)}function h(d,m,p,y,v,w){if(d!==p||m!==y){var k=v.push(a(v)+"scale(",null,",",null,")");w.push({i:k-4,x:Wn(d,p)},{i:k-2,x:Wn(m,y)})}else(p!==1||y!==1)&&v.push(a(v)+"scale("+p+","+y+")")}return function(d,m){var p=[],y=[];return d=e(d),m=e(m),s(d.translateX,d.translateY,m.translateX,m.translateY,p,y),u(d.rotate,m.rotate,p,y),f(d.skewX,m.skewX,p,y),h(d.scaleX,d.scaleY,m.scaleX,m.scaleY,p,y),d=m=null,function(v){for(var w=-1,k=y.length,S;++w=0&&e._call.call(void 0,n),e=e._next;--ra}function Zx(){Fi=(tc=jo.now())+gc,ra=xo=0;try{E3()}finally{ra=0,k3(),Fi=0}}function N3(){var e=jo.now(),n=e-tc;n>_w&&(gc-=n,tc=e)}function k3(){for(var e,n=ec,r,l=1/0;n;)n._call?(l>n._time&&(l=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:ec=r);vo=e,Tp(l)}function Tp(e){if(!ra){xo&&(xo=clearTimeout(xo));var n=e-Fi;n>24?(e<1/0&&(xo=setTimeout(Zx,e-jo.now()-gc)),so&&(so=clearInterval(so))):(so||(tc=jo.now(),so=setInterval(N3,_w)),ra=1,Ew(Zx))}}function Kx(e,n,r){var l=new nc;return n=n==null?0:+n,l.restart(a=>{l.stop(),e(a+n)},n,r),l}var C3=pc("start","end","cancel","interrupt"),T3=[],kw=0,Jx=1,zp=2,Gu=3,Wx=4,Ap=5,Yu=6;function yc(e,n,r,l,a,s){var u=e.__transition;if(!u)e.__transition={};else if(r in u)return;z3(e,r,{name:n,index:l,group:a,on:C3,tween:T3,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:kw})}function im(e,n){var r=$n(e,n);if(r.state>kw)throw new Error("too late; already scheduled");return r}function ir(e,n){var r=$n(e,n);if(r.state>Gu)throw new Error("too late; already running");return r}function $n(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function z3(e,n,r){var l=e.__transition,a;l[n]=r,r.timer=Nw(s,0,r.time);function s(d){r.state=Jx,r.timer.restart(u,r.delay,r.time),r.delay<=d&&u(d-r.delay)}function u(d){var m,p,y,v;if(r.state!==Jx)return h();for(m in l)if(v=l[m],v.name===r.name){if(v.state===Gu)return Kx(u);v.state===Wx?(v.state=Yu,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete l[m]):+mzp&&l.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function lT(e,n,r){var l,a,s=iT(n)?im:ir;return function(){var u=s(this,e),f=u.on;f!==l&&(a=(l=f).copy()).on(n,r),u.on=a}}function aT(e,n){var r=this._id;return arguments.length<2?$n(this.node(),r).on.on(e):this.each(lT(r,e,n))}function oT(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function sT(){return this.on("end.remove",oT(this._id))}function uT(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Wp(e));for(var l=this._groups,a=l.length,s=new Array(a),u=0;u()=>e;function DT(e,{sourceEvent:n,target:r,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function Tr(e,n,r){this.k=e,this.x=n,this.y=r}Tr.prototype={constructor:Tr,scale:function(e){return e===1?this:new Tr(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new Tr(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var xc=new Tr(1,0,0);Aw.prototype=Tr.prototype;function Aw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return xc;return e.__zoom}function nh(e){e.stopImmediatePropagation()}function uo(e){e.preventDefault(),e.stopImmediatePropagation()}function RT(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function LT(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function ev(){return this.__zoom||xc}function HT(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function BT(){return navigator.maxTouchPoints||"ontouchstart"in this}function qT(e,n,r){var l=e.invertX(n[0][0])-r[0][0],a=e.invertX(n[1][0])-r[1][0],s=e.invertY(n[0][1])-r[0][1],u=e.invertY(n[1][1])-r[1][1];return e.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u))}function Mw(){var e=RT,n=LT,r=qT,l=HT,a=BT,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,h=Vu,d=pc("start","zoom","end"),m,p,y,v=500,w=150,k=0,S=10;function _(R){R.property("__zoom",ev).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",U).on("dblclick.zoom",X).filter(a).on("touchstart.zoom",H).on("touchmove.zoom",q).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(R,G,M,$){var Q=R.selection?R.selection():R;Q.property("__zoom",ev),R!==Q?I(R,G,M,$):Q.interrupt().each(function(){A(this,arguments).event($).start().zoom(null,typeof G=="function"?G.apply(this,arguments):G).end()})},_.scaleBy=function(R,G,M,$){_.scaleTo(R,function(){var Q=this.__zoom.k,K=typeof G=="function"?G.apply(this,arguments):G;return Q*K},M,$)},_.scaleTo=function(R,G,M,$){_.transform(R,function(){var Q=n.apply(this,arguments),K=this.__zoom,j=M==null?z(Q):typeof M=="function"?M.apply(this,arguments):M,B=K.invert(j),P=typeof G=="function"?G.apply(this,arguments):G;return r(E(T(K,P),j,B),Q,u)},M,$)},_.translateBy=function(R,G,M,$){_.transform(R,function(){return r(this.__zoom.translate(typeof G=="function"?G.apply(this,arguments):G,typeof M=="function"?M.apply(this,arguments):M),n.apply(this,arguments),u)},null,$)},_.translateTo=function(R,G,M,$,Q){_.transform(R,function(){var K=n.apply(this,arguments),j=this.__zoom,B=$==null?z(K):typeof $=="function"?$.apply(this,arguments):$;return r(xc.translate(B[0],B[1]).scale(j.k).translate(typeof G=="function"?-G.apply(this,arguments):-G,typeof M=="function"?-M.apply(this,arguments):-M),K,u)},$,Q)};function T(R,G){return G=Math.max(s[0],Math.min(s[1],G)),G===R.k?R:new Tr(G,R.x,R.y)}function E(R,G,M){var $=G[0]-M[0]*R.k,Q=G[1]-M[1]*R.k;return $===R.x&&Q===R.y?R:new Tr(R.k,$,Q)}function z(R){return[(+R[0][0]+ +R[1][0])/2,(+R[0][1]+ +R[1][1])/2]}function I(R,G,M,$){R.on("start.zoom",function(){A(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event($).end()}).tween("zoom",function(){var Q=this,K=arguments,j=A(Q,K).event($),B=n.apply(Q,K),P=M==null?z(B):typeof M=="function"?M.apply(Q,K):M,N=Math.max(B[1][0]-B[0][0],B[1][1]-B[0][1]),Y=Q.__zoom,F=typeof G=="function"?G.apply(Q,K):G,J=h(Y.invert(P).concat(N/Y.k),F.invert(P).concat(N/F.k));return function(ne){if(ne===1)ne=F;else{var re=J(ne),se=N/re[2];ne=new Tr(se,P[0]-re[0]*se,P[1]-re[1]*se)}j.zoom(null,ne)}})}function A(R,G,M){return!M&&R.__zooming||new L(R,G)}function L(R,G){this.that=R,this.args=G,this.active=0,this.sourceEvent=null,this.extent=n.apply(R,G),this.taps=0}L.prototype={event:function(R){return R&&(this.sourceEvent=R),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(R,G){return this.mouse&&R!=="mouse"&&(this.mouse[1]=G.invert(this.mouse[0])),this.touch0&&R!=="touch"&&(this.touch0[1]=G.invert(this.touch0[0])),this.touch1&&R!=="touch"&&(this.touch1[1]=G.invert(this.touch1[0])),this.that.__zoom=G,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(R){var G=vn(this.that).datum();d.call(R,this.that,new DT(R,{sourceEvent:this.sourceEvent,target:_,transform:this.that.__zoom,dispatch:d}),G)}};function D(R,...G){if(!e.apply(this,arguments))return;var M=A(this,G).event(R),$=this.__zoom,Q=Math.max(s[0],Math.min(s[1],$.k*Math.pow(2,l.apply(this,arguments)))),K=Bn(R);if(M.wheel)(M.mouse[0][0]!==K[0]||M.mouse[0][1]!==K[1])&&(M.mouse[1]=$.invert(M.mouse[0]=K)),clearTimeout(M.wheel);else{if($.k===Q)return;M.mouse=[K,$.invert(K)],$u(this),M.start()}uo(R),M.wheel=setTimeout(j,w),M.zoom("mouse",r(E(T($,Q),M.mouse[0],M.mouse[1]),M.extent,u));function j(){M.wheel=null,M.end()}}function U(R,...G){if(y||!e.apply(this,arguments))return;var M=R.currentTarget,$=A(this,G,!0).event(R),Q=vn(R.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",N,!0),K=Bn(R,M),j=R.clientX,B=R.clientY;pw(R.view),nh(R),$.mouse=[K,this.__zoom.invert(K)],$u(this),$.start();function P(Y){if(uo(Y),!$.moved){var F=Y.clientX-j,J=Y.clientY-B;$.moved=F*F+J*J>k}$.event(Y).zoom("mouse",r(E($.that.__zoom,$.mouse[0]=Bn(Y,M),$.mouse[1]),$.extent,u))}function N(Y){Q.on("mousemove.zoom mouseup.zoom",null),mw(Y.view,$.moved),uo(Y),$.event(Y).end()}}function X(R,...G){if(e.apply(this,arguments)){var M=this.__zoom,$=Bn(R.changedTouches?R.changedTouches[0]:R,this),Q=M.invert($),K=M.k*(R.shiftKey?.5:2),j=r(E(T(M,K),$,Q),n.apply(this,G),u);uo(R),f>0?vn(this).transition().duration(f).call(I,j,$,R):vn(this).call(_.transform,j,$,R)}}function H(R,...G){if(e.apply(this,arguments)){var M=R.touches,$=M.length,Q=A(this,G,R.changedTouches.length===$).event(R),K,j,B,P;for(nh(R),j=0;j<$;++j)B=M[j],P=Bn(B,this),P=[P,this.__zoom.invert(P),B.identifier],Q.touch0?!Q.touch1&&Q.touch0[2]!==P[2]&&(Q.touch1=P,Q.taps=0):(Q.touch0=P,K=!0,Q.taps=1+!!m);m&&(m=clearTimeout(m)),K&&(Q.taps<2&&(p=P[0],m=setTimeout(function(){m=null},v)),$u(this),Q.start())}}function q(R,...G){if(this.__zooming){var M=A(this,G).event(R),$=R.changedTouches,Q=$.length,K,j,B,P;for(uo(R),K=0;K"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:n,sourceHandle:r,targetHandle:l})=>`Couldn't create edge for ${e} handle id: "${e==="source"?r:l}", edge id: ${n}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Oo=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],jw=["Enter"," ","Escape"],Ow={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:n,y:r})=>`Moved selected node ${e}. New position, x: ${n}, y: ${r}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var ia;(function(e){e.Strict="strict",e.Loose="loose"})(ia||(ia={}));var $i;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})($i||($i={}));var Do;(function(e){e.Partial="partial",e.Full="full"})(Do||(Do={}));const Dw={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var pi;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(pi||(pi={}));var rc;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(rc||(rc={}));var be;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(be||(be={}));const tv={[be.Left]:be.Right,[be.Right]:be.Left,[be.Top]:be.Bottom,[be.Bottom]:be.Top};function Rw(e){return e===null?null:e?"valid":"invalid"}const Lw=e=>"id"in e&&"source"in e&&"target"in e,UT=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),am=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Yo=(e,n=[0,0])=>{const{width:r,height:l}=jr(e),a=e.origin??n,s=r*a[0],u=l*a[1];return{x:e.position.x-s,y:e.position.y-u}},IT=(e,n={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const r=e.reduce((l,a)=>{const s=typeof a=="string";let u=!n.nodeLookup&&!s?a:void 0;n.nodeLookup&&(u=s?n.nodeLookup.get(a):am(a)?a:n.nodeLookup.get(a.id));const f=u?ic(u,n.nodeOrigin):{x:0,y:0,x2:0,y2:0};return vc(l,f)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return bc(r)},$o=(e,n={})=>{let r={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return e.forEach(a=>{(n.filter===void 0||n.filter(a))&&(r=vc(r,ic(a)),l=!0)}),l?bc(r):{x:0,y:0,width:0,height:0}},om=(e,n,[r,l,a]=[0,0,1],s=!1,u=!1)=>{const f={...Xo(n,[r,l,a]),width:n.width/a,height:n.height/a},h=[];for(const d of e.values()){const{measured:m,selectable:p=!0,hidden:y=!1}=d;if(u&&!p||y)continue;const v=m.width??d.width??d.initialWidth??null,w=m.height??d.height??d.initialHeight??null,k=Ro(f,aa(d)),S=(v??0)*(w??0),_=s&&k>0;(!d.internals.handleBounds||_||k>=S||d.dragging)&&h.push(d)}return h},VT=(e,n)=>{const r=new Set;return e.forEach(l=>{r.add(l.id)}),n.filter(l=>r.has(l.source)||r.has(l.target))};function GT(e,n){const r=new Map,l=n!=null&&n.nodes?new Set(n.nodes.map(a=>a.id)):null;return e.forEach(a=>{a.measured.width&&a.measured.height&&((n==null?void 0:n.includeHiddenNodes)||!a.hidden)&&(!l||l.has(a.id))&&r.set(a.id,a)}),r}async function YT({nodes:e,width:n,height:r,panZoom:l,minZoom:a,maxZoom:s},u){if(e.size===0)return Promise.resolve(!0);const f=GT(e,u),h=$o(f),d=sm(h,n,r,(u==null?void 0:u.minZoom)??a,(u==null?void 0:u.maxZoom)??s,(u==null?void 0:u.padding)??.1);return await l.setViewport(d,{duration:u==null?void 0:u.duration,ease:u==null?void 0:u.ease,interpolate:u==null?void 0:u.interpolate}),Promise.resolve(!0)}function Hw({nodeId:e,nextPosition:n,nodeLookup:r,nodeOrigin:l=[0,0],nodeExtent:a,onError:s}){const u=r.get(e),f=u.parentId?r.get(u.parentId):void 0,{x:h,y:d}=f?f.internals.positionAbsolute:{x:0,y:0},m=u.origin??l;let p=u.extent||a;if(u.extent==="parent"&&!u.expandParent)if(!f)s==null||s("005",nr.error005());else{const v=f.measured.width,w=f.measured.height;v&&w&&(p=[[h,d],[h+v,d+w]])}else f&&oa(u.extent)&&(p=[[u.extent[0][0]+h,u.extent[0][1]+d],[u.extent[1][0]+h,u.extent[1][1]+d]]);const y=oa(p)?Qi(n,p,u.measured):n;return(u.measured.width===void 0||u.measured.height===void 0)&&(s==null||s("015",nr.error015())),{position:{x:y.x-h+(u.measured.width??0)*m[0],y:y.y-d+(u.measured.height??0)*m[1]},positionAbsolute:y}}async function $T({nodesToRemove:e=[],edgesToRemove:n=[],nodes:r,edges:l,onBeforeDelete:a}){const s=new Set(e.map(y=>y.id)),u=[];for(const y of r){if(y.deletable===!1)continue;const v=s.has(y.id),w=!v&&y.parentId&&u.find(k=>k.id===y.parentId);(v||w)&&u.push(y)}const f=new Set(n.map(y=>y.id)),h=l.filter(y=>y.deletable!==!1),m=VT(u,h);for(const y of h)f.has(y.id)&&!m.find(w=>w.id===y.id)&&m.push(y);if(!a)return{edges:m,nodes:u};const p=await a({nodes:u,edges:m});return typeof p=="boolean"?p?{edges:m,nodes:u}:{edges:[],nodes:[]}:p}const la=(e,n=0,r=1)=>Math.min(Math.max(e,n),r),Qi=(e={x:0,y:0},n,r)=>({x:la(e.x,n[0][0],n[1][0]-((r==null?void 0:r.width)??0)),y:la(e.y,n[0][1],n[1][1]-((r==null?void 0:r.height)??0))});function Bw(e,n,r){const{width:l,height:a}=jr(r),{x:s,y:u}=r.internals.positionAbsolute;return Qi(e,[[s,u],[s+l,u+a]],n)}const nv=(e,n,r)=>er?-la(Math.abs(e-r),1,n)/n:0,qw=(e,n,r=15,l=40)=>{const a=nv(e.x,l,n.width-l)*r,s=nv(e.y,l,n.height-l)*r;return[a,s]},vc=(e,n)=>({x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),x2:Math.max(e.x2,n.x2),y2:Math.max(e.y2,n.y2)}),Mp=({x:e,y:n,width:r,height:l})=>({x:e,y:n,x2:e+r,y2:n+l}),bc=({x:e,y:n,x2:r,y2:l})=>({x:e,y:n,width:r-e,height:l-n}),aa=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=am(e)?e.internals.positionAbsolute:Yo(e,n);return{x:r,y:l,width:((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},ic=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=am(e)?e.internals.positionAbsolute:Yo(e,n);return{x:r,y:l,x2:r+(((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0),y2:l+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},Uw=(e,n)=>bc(vc(Mp(e),Mp(n))),Ro=(e,n)=>{const r=Math.max(0,Math.min(e.x+e.width,n.x+n.width)-Math.max(e.x,n.x)),l=Math.max(0,Math.min(e.y+e.height,n.y+n.height)-Math.max(e.y,n.y));return Math.ceil(r*l)},rv=e=>Un(e.width)&&Un(e.height)&&Un(e.x)&&Un(e.y),Un=e=>!isNaN(e)&&isFinite(e),PT=(e,n)=>{},Po=(e,n=[1,1])=>({x:n[0]*Math.round(e.x/n[0]),y:n[1]*Math.round(e.y/n[1])}),Xo=({x:e,y:n},[r,l,a],s=!1,u=[1,1])=>{const f={x:(e-r)/a,y:(n-l)/a};return s?Po(f,u):f},lc=({x:e,y:n},[r,l,a])=>({x:e*a+r,y:n*a+l});function Vl(e,n){if(typeof e=="number")return Math.floor((n-n/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(r)}if(typeof e=="string"&&e.endsWith("%")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(n*r*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function XT(e,n,r){if(typeof e=="string"||typeof e=="number"){const l=Vl(e,r),a=Vl(e,n);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof e=="object"){const l=Vl(e.top??e.y??0,r),a=Vl(e.bottom??e.y??0,r),s=Vl(e.left??e.x??0,n),u=Vl(e.right??e.x??0,n);return{top:l,right:u,bottom:a,left:s,x:s+u,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function FT(e,n,r,l,a,s){const{x:u,y:f}=lc(e,[n,r,l]),{x:h,y:d}=lc({x:e.x+e.width,y:e.y+e.height},[n,r,l]),m=a-h,p=s-d;return{left:Math.floor(u),top:Math.floor(f),right:Math.floor(m),bottom:Math.floor(p)}}const sm=(e,n,r,l,a,s)=>{const u=XT(s,n,r),f=(n-u.x)/e.width,h=(r-u.y)/e.height,d=Math.min(f,h),m=la(d,l,a),p=e.x+e.width/2,y=e.y+e.height/2,v=n/2-p*m,w=r/2-y*m,k=FT(e,v,w,m,n,r),S={left:Math.min(k.left-u.left,0),top:Math.min(k.top-u.top,0),right:Math.min(k.right-u.right,0),bottom:Math.min(k.bottom-u.bottom,0)};return{x:v-S.left+S.right,y:w-S.top+S.bottom,zoom:m}},Lo=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function oa(e){return e!=null&&e!=="parent"}function jr(e){var n,r;return{width:((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth??0,height:((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight??0}}function Iw(e){var n,r;return(((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth)!==void 0&&(((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight)!==void 0}function Vw(e,n={width:0,height:0},r,l,a){const s={...e},u=l.get(r);if(u){const f=u.origin||a;s.x+=u.internals.positionAbsolute.x-(n.width??0)*f[0],s.y+=u.internals.positionAbsolute.y-(n.height??0)*f[1]}return s}function iv(e,n){if(e.size!==n.size)return!1;for(const r of e)if(!n.has(r))return!1;return!0}function QT(){let e,n;return{promise:new Promise((l,a)=>{e=l,n=a}),resolve:e,reject:n}}function ZT(e){return{...Ow,...e||{}}}function So(e,{snapGrid:n=[0,0],snapToGrid:r=!1,transform:l,containerBounds:a}){const{x:s,y:u}=In(e),f=Xo({x:s-((a==null?void 0:a.left)??0),y:u-((a==null?void 0:a.top)??0)},l),{x:h,y:d}=r?Po(f,n):f;return{xSnapped:h,ySnapped:d,...f}}const um=e=>({width:e.offsetWidth,height:e.offsetHeight}),Gw=e=>{var n;return((n=e==null?void 0:e.getRootNode)==null?void 0:n.call(e))||(window==null?void 0:window.document)},KT=["INPUT","SELECT","TEXTAREA"];function Yw(e){var l,a;const n=((a=(l=e.composedPath)==null?void 0:l.call(e))==null?void 0:a[0])||e.target;return(n==null?void 0:n.nodeType)!==1?!1:KT.includes(n.nodeName)||n.hasAttribute("contenteditable")||!!n.closest(".nokey")}const $w=e=>"clientX"in e,In=(e,n)=>{var s,u;const r=$w(e),l=r?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,a=r?e.clientY:(u=e.touches)==null?void 0:u[0].clientY;return{x:l-((n==null?void 0:n.left)??0),y:a-((n==null?void 0:n.top)??0)}},lv=(e,n,r,l,a)=>{const s=n.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(u=>{const f=u.getBoundingClientRect();return{id:u.getAttribute("data-handleid"),type:e,nodeId:a,position:u.getAttribute("data-handlepos"),x:(f.left-r.left)/l,y:(f.top-r.top)/l,...um(u)}})};function Pw({sourceX:e,sourceY:n,targetX:r,targetY:l,sourceControlX:a,sourceControlY:s,targetControlX:u,targetControlY:f}){const h=e*.125+a*.375+u*.375+r*.125,d=n*.125+s*.375+f*.375+l*.125,m=Math.abs(h-e),p=Math.abs(d-n);return[h,d,m,p]}function ju(e,n){return e>=0?.5*e:n*25*Math.sqrt(-e)}function av({pos:e,x1:n,y1:r,x2:l,y2:a,c:s}){switch(e){case be.Left:return[n-ju(n-l,s),r];case be.Right:return[n+ju(l-n,s),r];case be.Top:return[n,r-ju(r-a,s)];case be.Bottom:return[n,r+ju(a-r,s)]}}function cm({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top,curvature:u=.25}){const[f,h]=av({pos:r,x1:e,y1:n,x2:l,y2:a,c:u}),[d,m]=av({pos:s,x1:l,y1:a,x2:e,y2:n,c:u}),[p,y,v,w]=Pw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:f,sourceControlY:h,targetControlX:d,targetControlY:m});return[`M${e},${n} C${f},${h} ${d},${m} ${l},${a}`,p,y,v,w]}function Xw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const a=Math.abs(r-e)/2,s=r0}const ez=({source:e,sourceHandle:n,target:r,targetHandle:l})=>`xy-edge__${e}${n||""}-${r}${l||""}`,tz=(e,n)=>n.some(r=>r.source===e.source&&r.target===e.target&&(r.sourceHandle===e.sourceHandle||!r.sourceHandle&&!e.sourceHandle)&&(r.targetHandle===e.targetHandle||!r.targetHandle&&!e.targetHandle)),nz=(e,n,r={})=>{if(!e.source||!e.target)return n;const l=r.getEdgeId||ez;let a;return Lw(e)?a={...e}:a={...e,id:l(e)},tz(a,n)?n:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,n.concat(a))};function Fw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const[a,s,u,f]=Xw({sourceX:e,sourceY:n,targetX:r,targetY:l});return[`M ${e},${n}L ${r},${l}`,a,s,u,f]}const ov={[be.Left]:{x:-1,y:0},[be.Right]:{x:1,y:0},[be.Top]:{x:0,y:-1},[be.Bottom]:{x:0,y:1}},rz=({source:e,sourcePosition:n=be.Bottom,target:r})=>n===be.Left||n===be.Right?e.xMath.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2));function iz({source:e,sourcePosition:n=be.Bottom,target:r,targetPosition:l=be.Top,center:a,offset:s,stepPosition:u}){const f=ov[n],h=ov[l],d={x:e.x+f.x*s,y:e.y+f.y*s},m={x:r.x+h.x*s,y:r.y+h.y*s},p=rz({source:d,sourcePosition:n,target:m}),y=p.x!==0?"x":"y",v=p[y];let w=[],k,S;const _={x:0,y:0},T={x:0,y:0},[,,E,z]=Xw({sourceX:e.x,sourceY:e.y,targetX:r.x,targetY:r.y});if(f[y]*h[y]===-1){y==="x"?(k=a.x??d.x+(m.x-d.x)*u,S=a.y??(d.y+m.y)/2):(k=a.x??(d.x+m.x)/2,S=a.y??d.y+(m.y-d.y)*u);const A=[{x:k,y:d.y},{x:k,y:m.y}],L=[{x:d.x,y:S},{x:m.x,y:S}];f[y]===v?w=y==="x"?A:L:w=y==="x"?L:A}else{const A=[{x:d.x,y:m.y}],L=[{x:m.x,y:d.y}];if(y==="x"?w=f.x===v?L:A:w=f.y===v?A:L,n===l){const q=Math.abs(e[y]-r[y]);if(q<=s){const ee=Math.min(s-1,s-q);f[y]===v?_[y]=(d[y]>e[y]?-1:1)*ee:T[y]=(m[y]>r[y]?-1:1)*ee}}if(n!==l){const q=y==="x"?"y":"x",ee=f[y]===h[q],R=d[q]>m[q],G=d[q]=H?(k=(D.x+U.x)/2,S=w[0].y):(k=w[0].x,S=(D.y+U.y)/2)}return[[e,{x:d.x+_.x,y:d.y+_.y},...w,{x:m.x+T.x,y:m.y+T.y},r],k,S,E,z]}function lz(e,n,r,l){const a=Math.min(sv(e,n)/2,sv(n,r)/2,l),{x:s,y:u}=n;if(e.x===s&&s===r.x||e.y===u&&u===r.y)return`L${s} ${u}`;if(e.y===u){const d=e.x{let z="";return E>0&&Er.id===n):e[0])||null}function Op(e,n){return e?typeof e=="string"?e:`${n?`${n}__`:""}${Object.keys(e).sort().map(l=>`${l}=${e[l]}`).join("&")}`:""}function oz(e,{id:n,defaultColor:r,defaultMarkerStart:l,defaultMarkerEnd:a}){const s=new Set;return e.reduce((u,f)=>([f.markerStart||l,f.markerEnd||a].forEach(h=>{if(h&&typeof h=="object"){const d=Op(h,n);s.has(d)||(u.push({id:d,color:h.color||r,...h}),s.add(d))}}),u),[]).sort((u,f)=>u.id.localeCompare(f.id))}const Qw=1e3,sz=10,fm={nodeOrigin:[0,0],nodeExtent:Oo,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},uz={...fm,checkEquality:!0};function dm(e,n){const r={...e};for(const l in n)n[l]!==void 0&&(r[l]=n[l]);return r}function cz(e,n,r){const l=dm(fm,r);for(const a of e.values())if(a.parentId)pm(a,e,n,l);else{const s=Yo(a,l.nodeOrigin),u=oa(a.extent)?a.extent:l.nodeExtent,f=Qi(s,u,jr(a));a.internals.positionAbsolute=f}}function fz(e,n){if(!e.handles)return e.measured?n==null?void 0:n.internals.handleBounds:void 0;const r=[],l=[];for(const a of e.handles){const s={id:a.id,width:a.width??1,height:a.height??1,nodeId:e.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?r.push(s):a.type==="target"&&l.push(s)}return{source:r,target:l}}function hm(e){return e==="manual"}function Dp(e,n,r,l={}){var d,m;const a=dm(uz,l),s={i:0},u=new Map(n),f=a!=null&&a.elevateNodesOnSelect&&!hm(a.zIndexMode)?Qw:0;let h=e.length>0;n.clear(),r.clear();for(const p of e){let y=u.get(p.id);if(a.checkEquality&&p===(y==null?void 0:y.internals.userNode))n.set(p.id,y);else{const v=Yo(p,a.nodeOrigin),w=oa(p.extent)?p.extent:a.nodeExtent,k=Qi(v,w,jr(p));y={...a.defaults,...p,measured:{width:(d=p.measured)==null?void 0:d.width,height:(m=p.measured)==null?void 0:m.height},internals:{positionAbsolute:k,handleBounds:fz(p,y),z:Zw(p,f,a.zIndexMode),userNode:p}},n.set(p.id,y)}(y.measured===void 0||y.measured.width===void 0||y.measured.height===void 0)&&!y.hidden&&(h=!1),p.parentId&&pm(y,n,r,l,s)}return h}function dz(e,n){if(!e.parentId)return;const r=n.get(e.parentId);r?r.set(e.id,e):n.set(e.parentId,new Map([[e.id,e]]))}function pm(e,n,r,l,a){const{elevateNodesOnSelect:s,nodeOrigin:u,nodeExtent:f,zIndexMode:h}=dm(fm,l),d=e.parentId,m=n.get(d);if(!m){console.warn(`Parent node ${d} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}dz(e,r),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&h==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*sz),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const p=s&&!hm(h)?Qw:0,{x:y,y:v,z:w}=hz(e,m,u,f,p,h),{positionAbsolute:k}=e.internals,S=y!==k.x||v!==k.y;(S||w!==e.internals.z)&&n.set(e.id,{...e,internals:{...e.internals,positionAbsolute:S?{x:y,y:v}:k,z:w}})}function Zw(e,n,r){const l=Un(e.zIndex)?e.zIndex:0;return hm(r)?l:l+(e.selected?n:0)}function hz(e,n,r,l,a,s){const{x:u,y:f}=n.internals.positionAbsolute,h=jr(e),d=Yo(e,r),m=oa(e.extent)?Qi(d,e.extent,h):d;let p=Qi({x:u+m.x,y:f+m.y},l,h);e.extent==="parent"&&(p=Bw(p,h,n));const y=Zw(e,a,s),v=n.internals.z??0;return{x:p.x,y:p.y,z:v>=y?v+1:y}}function mm(e,n,r,l=[0,0]){var u;const a=[],s=new Map;for(const f of e){const h=n.get(f.parentId);if(!h)continue;const d=((u=s.get(f.parentId))==null?void 0:u.expandedRect)??aa(h),m=Uw(d,f.rect);s.set(f.parentId,{expandedRect:m,parent:h})}return s.size>0&&s.forEach(({expandedRect:f,parent:h},d)=>{var E;const m=h.internals.positionAbsolute,p=jr(h),y=h.origin??l,v=f.x0||w>0||_||T)&&(a.push({id:d,type:"position",position:{x:h.position.x-v+_,y:h.position.y-w+T}}),(E=r.get(d))==null||E.forEach(z=>{e.some(I=>I.id===z.id)||a.push({id:z.id,type:"position",position:{x:z.position.x+v,y:z.position.y+w}})})),(p.width0){const v=mm(y,n,r,a);d.push(...v)}return{changes:d,updatedInternals:h}}async function mz({delta:e,panZoom:n,transform:r,translateExtent:l,width:a,height:s}){if(!n||!e.x&&!e.y)return Promise.resolve(!1);const u=await n.setViewportConstrained({x:r[0]+e.x,y:r[1]+e.y,zoom:r[2]},[[0,0],[a,s]],l),f=!!u&&(u.x!==r[0]||u.y!==r[1]||u.k!==r[2]);return Promise.resolve(f)}function dv(e,n,r,l,a,s){let u=a;const f=l.get(u)||new Map;l.set(u,f.set(r,n)),u=`${a}-${e}`;const h=l.get(u)||new Map;if(l.set(u,h.set(r,n)),s){u=`${a}-${e}-${s}`;const d=l.get(u)||new Map;l.set(u,d.set(r,n))}}function Kw(e,n,r){e.clear(),n.clear();for(const l of r){const{source:a,target:s,sourceHandle:u=null,targetHandle:f=null}=l,h={edgeId:l.id,source:a,target:s,sourceHandle:u,targetHandle:f},d=`${a}-${u}--${s}-${f}`,m=`${s}-${f}--${a}-${u}`;dv("source",h,m,e,a,u),dv("target",h,d,e,s,f),n.set(l.id,l)}}function Jw(e,n){if(!e.parentId)return!1;const r=n.get(e.parentId);return r?r.selected?!0:Jw(r,n):!1}function hv(e,n,r){var a;let l=e;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,n))return!0;if(l===r)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function gz(e,n,r,l){const a=new Map;for(const[s,u]of e)if((u.selected||u.id===l)&&(!u.parentId||!Jw(u,e))&&(u.draggable||n&&typeof u.draggable>"u")){const f=e.get(s);f&&a.set(s,{id:s,position:f.position||{x:0,y:0},distance:{x:r.x-f.internals.positionAbsolute.x,y:r.y-f.internals.positionAbsolute.y},extent:f.extent,parentId:f.parentId,origin:f.origin,expandParent:f.expandParent,internals:{positionAbsolute:f.internals.positionAbsolute||{x:0,y:0}},measured:{width:f.measured.width??0,height:f.measured.height??0}})}return a}function rh({nodeId:e,dragItems:n,nodeLookup:r,dragging:l=!0}){var u,f,h;const a=[];for(const[d,m]of n){const p=(u=r.get(d))==null?void 0:u.internals.userNode;p&&a.push({...p,position:m.position,dragging:l})}if(!e)return[a[0],a];const s=(f=r.get(e))==null?void 0:f.internals.userNode;return[s?{...s,position:((h=n.get(e))==null?void 0:h.position)||s.position,dragging:l}:a[0],a]}function yz({dragItems:e,snapGrid:n,x:r,y:l}){const a=e.values().next().value;if(!a)return null;const s={x:r-a.distance.x,y:l-a.distance.y},u=Po(s,n);return{x:u.x-s.x,y:u.y-s.y}}function xz({onNodeMouseDown:e,getStoreItems:n,onDragStart:r,onDrag:l,onDragStop:a}){let s={x:null,y:null},u=0,f=new Map,h=!1,d={x:0,y:0},m=null,p=!1,y=null,v=!1,w=!1,k=null;function S({noDragClassName:T,handleSelector:E,domNode:z,isSelectable:I,nodeId:A,nodeClickDistance:L=0}){y=vn(z);function D({x:q,y:ee}){const{nodeLookup:R,nodeExtent:G,snapGrid:M,snapToGrid:$,nodeOrigin:Q,onNodeDrag:K,onSelectionDrag:j,onError:B,updateNodePositions:P}=n();s={x:q,y:ee};let N=!1;const Y=f.size>1,F=Y&&G?Mp($o(f)):null,J=Y&&$?yz({dragItems:f,snapGrid:M,x:q,y:ee}):null;for(const[ne,re]of f){if(!R.has(ne))continue;let se={x:q-re.distance.x,y:ee-re.distance.y};$&&(se=J?{x:Math.round(se.x+J.x),y:Math.round(se.y+J.y)}:Po(se,M));let ye=null;if(Y&&G&&!re.extent&&F){const{positionAbsolute:pe}=re.internals,_e=pe.x-F.x+G[0][0],Me=pe.x+re.measured.width-F.x2+G[1][0],Ce=pe.y-F.y+G[0][1],ut=pe.y+re.measured.height-F.y2+G[1][1];ye=[[_e,Ce],[Me,ut]]}const{position:ve,positionAbsolute:xe}=Hw({nodeId:ne,nextPosition:se,nodeLookup:R,nodeExtent:ye||G,nodeOrigin:Q,onError:B});N=N||re.position.x!==ve.x||re.position.y!==ve.y,re.position=ve,re.internals.positionAbsolute=xe}if(w=w||N,!!N&&(P(f,!0),k&&(l||K||!A&&j))){const[ne,re]=rh({nodeId:A,dragItems:f,nodeLookup:R});l==null||l(k,f,ne,re),K==null||K(k,ne,re),A||j==null||j(k,re)}}async function U(){if(!m)return;const{transform:q,panBy:ee,autoPanSpeed:R,autoPanOnNodeDrag:G}=n();if(!G){h=!1,cancelAnimationFrame(u);return}const[M,$]=qw(d,m,R);(M!==0||$!==0)&&(s.x=(s.x??0)-M/q[2],s.y=(s.y??0)-$/q[2],await ee({x:M,y:$})&&D(s)),u=requestAnimationFrame(U)}function X(q){var Y;const{nodeLookup:ee,multiSelectionActive:R,nodesDraggable:G,transform:M,snapGrid:$,snapToGrid:Q,selectNodesOnDrag:K,onNodeDragStart:j,onSelectionDragStart:B,unselectNodesAndEdges:P}=n();p=!0,(!K||!I)&&!R&&A&&((Y=ee.get(A))!=null&&Y.selected||P()),I&&K&&A&&(e==null||e(A));const N=So(q.sourceEvent,{transform:M,snapGrid:$,snapToGrid:Q,containerBounds:m});if(s=N,f=gz(ee,G,N,A),f.size>0&&(r||j||!A&&B)){const[F,J]=rh({nodeId:A,dragItems:f,nodeLookup:ee});r==null||r(q.sourceEvent,f,F,J),j==null||j(q.sourceEvent,F,J),A||B==null||B(q.sourceEvent,J)}}const H=gw().clickDistance(L).on("start",q=>{const{domNode:ee,nodeDragThreshold:R,transform:G,snapGrid:M,snapToGrid:$}=n();m=(ee==null?void 0:ee.getBoundingClientRect())||null,v=!1,w=!1,k=q.sourceEvent,R===0&&X(q),s=So(q.sourceEvent,{transform:G,snapGrid:M,snapToGrid:$,containerBounds:m}),d=In(q.sourceEvent,m)}).on("drag",q=>{const{autoPanOnNodeDrag:ee,transform:R,snapGrid:G,snapToGrid:M,nodeDragThreshold:$,nodeLookup:Q}=n(),K=So(q.sourceEvent,{transform:R,snapGrid:G,snapToGrid:M,containerBounds:m});if(k=q.sourceEvent,(q.sourceEvent.type==="touchmove"&&q.sourceEvent.touches.length>1||A&&!Q.has(A))&&(v=!0),!v){if(!h&&ee&&p&&(h=!0,U()),!p){const j=In(q.sourceEvent,m),B=j.x-d.x,P=j.y-d.y;Math.sqrt(B*B+P*P)>$&&X(q)}(s.x!==K.xSnapped||s.y!==K.ySnapped)&&f&&p&&(d=In(q.sourceEvent,m),D(K))}}).on("end",q=>{if(!(!p||v)&&(h=!1,p=!1,cancelAnimationFrame(u),f.size>0)){const{nodeLookup:ee,updateNodePositions:R,onNodeDragStop:G,onSelectionDragStop:M}=n();if(w&&(R(f,!1),w=!1),a||G||!A&&M){const[$,Q]=rh({nodeId:A,dragItems:f,nodeLookup:ee,dragging:!1});a==null||a(q.sourceEvent,f,$,Q),G==null||G(q.sourceEvent,$,Q),A||M==null||M(q.sourceEvent,Q)}}}).filter(q=>{const ee=q.target;return!q.button&&(!T||!hv(ee,`.${T}`,z))&&(!E||hv(ee,E,z))});y.call(H)}function _(){y==null||y.on(".drag",null)}return{update:S,destroy:_}}function vz(e,n,r){const l=[],a={x:e.x-r,y:e.y-r,width:r*2,height:r*2};for(const s of n.values())Ro(a,aa(s))>0&&l.push(s);return l}const bz=250;function wz(e,n,r,l){var f,h;let a=[],s=1/0;const u=vz(e,r,n+bz);for(const d of u){const m=[...((f=d.internals.handleBounds)==null?void 0:f.source)??[],...((h=d.internals.handleBounds)==null?void 0:h.target)??[]];for(const p of m){if(l.nodeId===p.nodeId&&l.type===p.type&&l.id===p.id)continue;const{x:y,y:v}=Zi(d,p,p.position,!0),w=Math.sqrt(Math.pow(y-e.x,2)+Math.pow(v-e.y,2));w>n||(w1){const d=l.type==="source"?"target":"source";return a.find(m=>m.type===d)??a[0]}return a[0]}function Ww(e,n,r,l,a,s=!1){var d,m,p;const u=l.get(e);if(!u)return null;const f=a==="strict"?(d=u.internals.handleBounds)==null?void 0:d[n]:[...((m=u.internals.handleBounds)==null?void 0:m.source)??[],...((p=u.internals.handleBounds)==null?void 0:p.target)??[]],h=(r?f==null?void 0:f.find(y=>y.id===r):f==null?void 0:f[0])??null;return h&&s?{...h,...Zi(u,h,h.position,!0)}:h}function eS(e,n){return e||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function Sz(e,n){let r=null;return n?r=!0:e&&!n&&(r=!1),r}const tS=()=>!0;function _z(e,{connectionMode:n,connectionRadius:r,handleId:l,nodeId:a,edgeUpdaterType:s,isTarget:u,domNode:f,nodeLookup:h,lib:d,autoPanOnConnect:m,flowId:p,panBy:y,cancelConnection:v,onConnectStart:w,onConnect:k,onConnectEnd:S,isValidConnection:_=tS,onReconnectEnd:T,updateConnection:E,getTransform:z,getFromHandle:I,autoPanSpeed:A,dragThreshold:L=1,handleDomNode:D}){const U=Gw(e.target);let X=0,H;const{x:q,y:ee}=In(e),R=eS(s,D),G=f==null?void 0:f.getBoundingClientRect();let M=!1;if(!G||!R)return;const $=Ww(a,R,l,h,n);if(!$)return;let Q=In(e,G),K=!1,j=null,B=!1,P=null;function N(){if(!m||!G)return;const[ve,xe]=qw(Q,G,A);y({x:ve,y:xe}),X=requestAnimationFrame(N)}const Y={...$,nodeId:a,type:R,position:$.position},F=h.get(a);let ne={inProgress:!0,isValid:null,from:Zi(F,Y,be.Left,!0),fromHandle:Y,fromPosition:Y.position,fromNode:F,to:Q,toHandle:null,toPosition:tv[Y.position],toNode:null,pointer:Q};function re(){M=!0,E(ne),w==null||w(e,{nodeId:a,handleId:l,handleType:R})}L===0&&re();function se(ve){if(!M){const{x:ut,y:tt}=In(ve),At=ut-q,It=tt-ee;if(!(At*At+It*It>L*L))return;re()}if(!I()||!Y){ye(ve);return}const xe=z();Q=In(ve,G),H=wz(Xo(Q,xe,!1,[1,1]),r,h,Y),K||(N(),K=!0);const pe=nS(ve,{handle:H,connectionMode:n,fromNodeId:a,fromHandleId:l,fromType:u?"target":"source",isValidConnection:_,doc:U,lib:d,flowId:p,nodeLookup:h});P=pe.handleDomNode,j=pe.connection,B=Sz(!!H,pe.isValid);const _e=h.get(a),Me=_e?Zi(_e,Y,be.Left,!0):ne.from,Ce={...ne,from:Me,isValid:B,to:pe.toHandle&&B?lc({x:pe.toHandle.x,y:pe.toHandle.y},xe):Q,toHandle:pe.toHandle,toPosition:B&&pe.toHandle?pe.toHandle.position:tv[Y.position],toNode:pe.toHandle?h.get(pe.toHandle.nodeId):null,pointer:Q};E(Ce),ne=Ce}function ye(ve){if(!("touches"in ve&&ve.touches.length>0)){if(M){(H||P)&&j&&B&&(k==null||k(j));const{inProgress:xe,...pe}=ne,_e={...pe,toPosition:ne.toHandle?ne.toPosition:null};S==null||S(ve,_e),s&&(T==null||T(ve,_e))}v(),cancelAnimationFrame(X),K=!1,B=!1,j=null,P=null,U.removeEventListener("mousemove",se),U.removeEventListener("mouseup",ye),U.removeEventListener("touchmove",se),U.removeEventListener("touchend",ye)}}U.addEventListener("mousemove",se),U.addEventListener("mouseup",ye),U.addEventListener("touchmove",se),U.addEventListener("touchend",ye)}function nS(e,{handle:n,connectionMode:r,fromNodeId:l,fromHandleId:a,fromType:s,doc:u,lib:f,flowId:h,isValidConnection:d=tS,nodeLookup:m}){const p=s==="target",y=n?u.querySelector(`.${f}-flow__handle[data-id="${h}-${n==null?void 0:n.nodeId}-${n==null?void 0:n.id}-${n==null?void 0:n.type}"]`):null,{x:v,y:w}=In(e),k=u.elementFromPoint(v,w),S=k!=null&&k.classList.contains(`${f}-flow__handle`)?k:y,_={handleDomNode:S,isValid:!1,connection:null,toHandle:null};if(S){const T=eS(void 0,S),E=S.getAttribute("data-nodeid"),z=S.getAttribute("data-handleid"),I=S.classList.contains("connectable"),A=S.classList.contains("connectableend");if(!E||!T)return _;const L={source:p?E:l,sourceHandle:p?z:a,target:p?l:E,targetHandle:p?a:z};_.connection=L;const U=I&&A&&(r===ia.Strict?p&&T==="source"||!p&&T==="target":E!==l||z!==a);_.isValid=U&&d(L),_.toHandle=Ww(E,T,z,m,r,!0)}return _}const Rp={onPointerDown:_z,isValid:nS};function Ez({domNode:e,panZoom:n,getTransform:r,getViewScale:l}){const a=vn(e);function s({translateExtent:f,width:h,height:d,zoomStep:m=1,pannable:p=!0,zoomable:y=!0,inversePan:v=!1}){const w=E=>{if(E.sourceEvent.type!=="wheel"||!n)return;const z=r(),I=E.sourceEvent.ctrlKey&&Lo()?10:1,A=-E.sourceEvent.deltaY*(E.sourceEvent.deltaMode===1?.05:E.sourceEvent.deltaMode?1:.002)*m,L=z[2]*Math.pow(2,A*I);n.scaleTo(L)};let k=[0,0];const S=E=>{(E.sourceEvent.type==="mousedown"||E.sourceEvent.type==="touchstart")&&(k=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY])},_=E=>{const z=r();if(E.sourceEvent.type!=="mousemove"&&E.sourceEvent.type!=="touchmove"||!n)return;const I=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY],A=[I[0]-k[0],I[1]-k[1]];k=I;const L=l()*Math.max(z[2],Math.log(z[2]))*(v?-1:1),D={x:z[0]-A[0]*L,y:z[1]-A[1]*L},U=[[0,0],[h,d]];n.setViewportConstrained({x:D.x,y:D.y,zoom:z[2]},U,f)},T=Mw().on("start",S).on("zoom",p?_:null).on("zoom.wheel",y?w:null);a.call(T,{})}function u(){a.on("zoom",null)}return{update:s,destroy:u,pointer:Bn}}const wc=e=>({x:e.x,y:e.y,zoom:e.k}),ih=({x:e,y:n,zoom:r})=>xc.translate(e,n).scale(r),Fl=(e,n)=>e.target.closest(`.${n}`),rS=(e,n)=>n===2&&Array.isArray(e)&&e.includes(2),Nz=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,lh=(e,n=0,r=Nz,l=()=>{})=>{const a=typeof n=="number"&&n>0;return a||l(),a?e.transition().duration(n).ease(r).on("end",l):e},iS=e=>{const n=e.ctrlKey&&Lo()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*n};function kz({zoomPanValues:e,noWheelClassName:n,d3Selection:r,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:s,zoomOnPinch:u,onPanZoomStart:f,onPanZoom:h,onPanZoomEnd:d}){return m=>{if(Fl(m,n))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const p=r.property("__zoom").k||1;if(m.ctrlKey&&u){const S=Bn(m),_=iS(m),T=p*Math.pow(2,_);l.scaleTo(r,T,S,m);return}const y=m.deltaMode===1?20:1;let v=a===$i.Vertical?0:m.deltaX*y,w=a===$i.Horizontal?0:m.deltaY*y;!Lo()&&m.shiftKey&&a!==$i.Vertical&&(v=m.deltaY*y,w=0),l.translateBy(r,-(v/p)*s,-(w/p)*s,{internal:!0});const k=wc(r.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(h==null||h(m,k),e.panScrollTimeout=setTimeout(()=>{d==null||d(m,k),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,f==null||f(m,k))}}function Cz({noWheelClassName:e,preventScrolling:n,d3ZoomHandler:r}){return function(l,a){const s=l.type==="wheel",u=!n&&s&&!l.ctrlKey,f=Fl(l,e);if(l.ctrlKey&&s&&f&&l.preventDefault(),u||f)return null;l.preventDefault(),r.call(this,l,a)}}function Tz({zoomPanValues:e,onDraggingChange:n,onPanZoomStart:r}){return l=>{var s,u,f;if((s=l.sourceEvent)!=null&&s.internal)return;const a=wc(l.transform);e.mouseButton=((u=l.sourceEvent)==null?void 0:u.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=a,((f=l.sourceEvent)==null?void 0:f.type)==="mousedown"&&n(!0),r&&(r==null||r(l.sourceEvent,a))}}function zz({zoomPanValues:e,panOnDrag:n,onPaneContextMenu:r,onTransformChange:l,onPanZoom:a}){return s=>{var u,f;e.usedRightMouseButton=!!(r&&rS(n,e.mouseButton??0)),(u=s.sourceEvent)!=null&&u.sync||l([s.transform.x,s.transform.y,s.transform.k]),a&&!((f=s.sourceEvent)!=null&&f.internal)&&(a==null||a(s.sourceEvent,wc(s.transform)))}}function Az({zoomPanValues:e,panOnDrag:n,panOnScroll:r,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:s}){return u=>{var f;if(!((f=u.sourceEvent)!=null&&f.internal)&&(e.isZoomingOrPanning=!1,s&&rS(n,e.mouseButton??0)&&!e.usedRightMouseButton&&u.sourceEvent&&s(u.sourceEvent),e.usedRightMouseButton=!1,l(!1),a)){const h=wc(u.transform);e.prevViewport=h,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{a==null||a(u.sourceEvent,h)},r?150:0)}}}function Mz({zoomActivationKeyPressed:e,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:l,panOnScroll:a,zoomOnDoubleClick:s,userSelectionActive:u,noWheelClassName:f,noPanClassName:h,lib:d,connectionInProgress:m}){return p=>{var S;const y=e||n,v=r&&p.ctrlKey,w=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(Fl(p,`${d}-flow__node`)||Fl(p,`${d}-flow__edge`)))return!0;if(!l&&!y&&!a&&!s&&!r||u||m&&!w||Fl(p,f)&&w||Fl(p,h)&&(!w||a&&w&&!e)||!r&&p.ctrlKey&&w)return!1;if(!r&&p.type==="touchstart"&&((S=p.touches)==null?void 0:S.length)>1)return p.preventDefault(),!1;if(!y&&!a&&!v&&w||!l&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(l)&&!l.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(l)&&l.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||w)&&k}}function jz({domNode:e,minZoom:n,maxZoom:r,translateExtent:l,viewport:a,onPanZoom:s,onPanZoomStart:u,onPanZoomEnd:f,onDraggingChange:h}){const d={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=e.getBoundingClientRect(),p=Mw().scaleExtent([n,r]).translateExtent(l),y=vn(e).call(p);T({x:a.x,y:a.y,zoom:la(a.zoom,n,r)},[[0,0],[m.width,m.height]],l);const v=y.on("wheel.zoom"),w=y.on("dblclick.zoom");p.wheelDelta(iS);function k(H,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?wo:Vu).transform(lh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function S({noWheelClassName:H,noPanClassName:q,onPaneContextMenu:ee,userSelectionActive:R,panOnScroll:G,panOnDrag:M,panOnScrollMode:$,panOnScrollSpeed:Q,preventScrolling:K,zoomOnPinch:j,zoomOnScroll:B,zoomOnDoubleClick:P,zoomActivationKeyPressed:N,lib:Y,onTransformChange:F,connectionInProgress:J,paneClickDistance:ne,selectionOnDrag:re}){R&&!d.isZoomingOrPanning&&_();const se=G&&!N&&!R;p.clickDistance(re?1/0:!Un(ne)||ne<0?0:ne);const ye=se?kz({zoomPanValues:d,noWheelClassName:H,d3Selection:y,d3Zoom:p,panOnScrollMode:$,panOnScrollSpeed:Q,zoomOnPinch:j,onPanZoomStart:u,onPanZoom:s,onPanZoomEnd:f}):Cz({noWheelClassName:H,preventScrolling:K,d3ZoomHandler:v});if(y.on("wheel.zoom",ye,{passive:!1}),!R){const xe=Tz({zoomPanValues:d,onDraggingChange:h,onPanZoomStart:u});p.on("start",xe);const pe=zz({zoomPanValues:d,panOnDrag:M,onPaneContextMenu:!!ee,onPanZoom:s,onTransformChange:F});p.on("zoom",pe);const _e=Az({zoomPanValues:d,panOnDrag:M,panOnScroll:G,onPaneContextMenu:ee,onPanZoomEnd:f,onDraggingChange:h});p.on("end",_e)}const ve=Mz({zoomActivationKeyPressed:N,panOnDrag:M,zoomOnScroll:B,panOnScroll:G,zoomOnDoubleClick:P,zoomOnPinch:j,userSelectionActive:R,noPanClassName:q,noWheelClassName:H,lib:Y,connectionInProgress:J});p.filter(ve),P?y.on("dblclick.zoom",w):y.on("dblclick.zoom",null)}function _(){p.on("zoom",null)}async function T(H,q,ee){const R=ih(H),G=p==null?void 0:p.constrain()(R,q,ee);return G&&await k(G),new Promise(M=>M(G))}async function E(H,q){const ee=ih(H);return await k(ee,q),new Promise(R=>R(ee))}function z(H){if(y){const q=ih(H),ee=y.property("__zoom");(ee.k!==H.zoom||ee.x!==H.x||ee.y!==H.y)&&(p==null||p.transform(y,q,null,{sync:!0}))}}function I(){const H=y?Aw(y.node()):{x:0,y:0,k:1};return{x:H.x,y:H.y,zoom:H.k}}function A(H,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?wo:Vu).scaleTo(lh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function L(H,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?wo:Vu).scaleBy(lh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function D(H){p==null||p.scaleExtent(H)}function U(H){p==null||p.translateExtent(H)}function X(H){const q=!Un(H)||H<0?0:H;p==null||p.clickDistance(q)}return{update:S,destroy:_,setViewport:E,setViewportConstrained:T,getViewport:I,scaleTo:A,scaleBy:L,setScaleExtent:D,setTranslateExtent:U,syncViewport:z,setClickDistance:X}}var sa;(function(e){e.Line="line",e.Handle="handle"})(sa||(sa={}));function Oz({width:e,prevWidth:n,height:r,prevHeight:l,affectsX:a,affectsY:s}){const u=e-n,f=r-l,h=[u>0?1:u<0?-1:0,f>0?1:f<0?-1:0];return u&&a&&(h[0]=h[0]*-1),f&&s&&(h[1]=h[1]*-1),h}function pv(e){const n=e.includes("right")||e.includes("left"),r=e.includes("bottom")||e.includes("top"),l=e.includes("left"),a=e.includes("top");return{isHorizontal:n,isVertical:r,affectsX:l,affectsY:a}}function ui(e,n){return Math.max(0,n-e)}function ci(e,n){return Math.max(0,e-n)}function Ou(e,n,r){return Math.max(0,n-e,e-r)}function mv(e,n){return e?!n:n}function Dz(e,n,r,l,a,s,u,f){let{affectsX:h,affectsY:d}=n;const{isHorizontal:m,isVertical:p}=n,y=m&&p,{xSnapped:v,ySnapped:w}=r,{minWidth:k,maxWidth:S,minHeight:_,maxHeight:T}=l,{x:E,y:z,width:I,height:A,aspectRatio:L}=e;let D=Math.floor(m?v-e.pointerX:0),U=Math.floor(p?w-e.pointerY:0);const X=I+(h?-D:D),H=A+(d?-U:U),q=-s[0]*I,ee=-s[1]*A;let R=Ou(X,k,S),G=Ou(H,_,T);if(u){let Q=0,K=0;h&&D<0?Q=ui(E+D+q,u[0][0]):!h&&D>0&&(Q=ci(E+X+q,u[1][0])),d&&U<0?K=ui(z+U+ee,u[0][1]):!d&&U>0&&(K=ci(z+H+ee,u[1][1])),R=Math.max(R,Q),G=Math.max(G,K)}if(f){let Q=0,K=0;h&&D>0?Q=ci(E+D,f[0][0]):!h&&D<0&&(Q=ui(E+X,f[1][0])),d&&U>0?K=ci(z+U,f[0][1]):!d&&U<0&&(K=ui(z+H,f[1][1])),R=Math.max(R,Q),G=Math.max(G,K)}if(a){if(m){const Q=Ou(X/L,_,T)*L;if(R=Math.max(R,Q),u){let K=0;!h&&!d||h&&!d&&y?K=ci(z+ee+X/L,u[1][1])*L:K=ui(z+ee+(h?D:-D)/L,u[0][1])*L,R=Math.max(R,K)}if(f){let K=0;!h&&!d||h&&!d&&y?K=ui(z+X/L,f[1][1])*L:K=ci(z+(h?D:-D)/L,f[0][1])*L,R=Math.max(R,K)}}if(p){const Q=Ou(H*L,k,S)/L;if(G=Math.max(G,Q),u){let K=0;!h&&!d||d&&!h&&y?K=ci(E+H*L+q,u[1][0])/L:K=ui(E+(d?U:-U)*L+q,u[0][0])/L,G=Math.max(G,K)}if(f){let K=0;!h&&!d||d&&!h&&y?K=ui(E+H*L,f[1][0])/L:K=ci(E+(d?U:-U)*L,f[0][0])/L,G=Math.max(G,K)}}}U=U+(U<0?G:-G),D=D+(D<0?R:-R),a&&(y?X>H*L?U=(mv(h,d)?-D:D)/L:D=(mv(h,d)?-U:U)*L:m?(U=D/L,d=h):(D=U*L,h=d));const M=h?E+D:E,$=d?z+U:z;return{width:I+(h?-D:D),height:A+(d?-U:U),x:s[0]*D*(h?-1:1)+M,y:s[1]*U*(d?-1:1)+$}}const lS={width:0,height:0,x:0,y:0},Rz={...lS,pointerX:0,pointerY:0,aspectRatio:1};function Lz(e){return[[0,0],[e.measured.width,e.measured.height]]}function Hz(e,n,r){const l=n.position.x+e.position.x,a=n.position.y+e.position.y,s=e.measured.width??0,u=e.measured.height??0,f=r[0]*s,h=r[1]*u;return[[l-f,a-h],[l+s-f,a+u-h]]}function Bz({domNode:e,nodeId:n,getStoreItems:r,onChange:l,onEnd:a}){const s=vn(e);let u={controlDirection:pv("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function f({controlPosition:d,boundaries:m,keepAspectRatio:p,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:S}){let _={...lS},T={...Rz};u={boundaries:m,resizeDirection:y,keepAspectRatio:p,controlDirection:pv(d)};let E,z=null,I=[],A,L,D,U=!1;const X=gw().on("start",H=>{const{nodeLookup:q,transform:ee,snapGrid:R,snapToGrid:G,nodeOrigin:M,paneDomNode:$}=r();if(E=q.get(n),!E)return;z=($==null?void 0:$.getBoundingClientRect())??null;const{xSnapped:Q,ySnapped:K}=So(H.sourceEvent,{transform:ee,snapGrid:R,snapToGrid:G,containerBounds:z});_={width:E.measured.width??0,height:E.measured.height??0,x:E.position.x??0,y:E.position.y??0},T={..._,pointerX:Q,pointerY:K,aspectRatio:_.width/_.height},A=void 0,E.parentId&&(E.extent==="parent"||E.expandParent)&&(A=q.get(E.parentId),L=A&&E.extent==="parent"?Lz(A):void 0),I=[],D=void 0;for(const[j,B]of q)if(B.parentId===n&&(I.push({id:j,position:{...B.position},extent:B.extent}),B.extent==="parent"||B.expandParent)){const P=Hz(B,E,B.origin??M);D?D=[[Math.min(P[0][0],D[0][0]),Math.min(P[0][1],D[0][1])],[Math.max(P[1][0],D[1][0]),Math.max(P[1][1],D[1][1])]]:D=P}v==null||v(H,{..._})}).on("drag",H=>{const{transform:q,snapGrid:ee,snapToGrid:R,nodeOrigin:G}=r(),M=So(H.sourceEvent,{transform:q,snapGrid:ee,snapToGrid:R,containerBounds:z}),$=[];if(!E)return;const{x:Q,y:K,width:j,height:B}=_,P={},N=E.origin??G,{width:Y,height:F,x:J,y:ne}=Dz(T,u.controlDirection,M,u.boundaries,u.keepAspectRatio,N,L,D),re=Y!==j,se=F!==B,ye=J!==Q&&re,ve=ne!==K&&se;if(!ye&&!ve&&!re&&!se)return;if((ye||ve||N[0]===1||N[1]===1)&&(P.x=ye?J:_.x,P.y=ve?ne:_.y,_.x=P.x,_.y=P.y,I.length>0)){const Me=J-Q,Ce=ne-K;for(const ut of I)ut.position={x:ut.position.x-Me+N[0]*(Y-j),y:ut.position.y-Ce+N[1]*(F-B)},$.push(ut)}if((re||se)&&(P.width=re&&(!u.resizeDirection||u.resizeDirection==="horizontal")?Y:_.width,P.height=se&&(!u.resizeDirection||u.resizeDirection==="vertical")?F:_.height,_.width=P.width,_.height=P.height),A&&E.expandParent){const Me=N[0]*(P.width??0);P.x&&P.x{U&&(k==null||k(H,{..._}),a==null||a({..._}),U=!1)});s.call(X)}function h(){s.on(".drag",null)}return{update:f,destroy:h}}var ah={exports:{}},oh={},sh={exports:{}},uh={};/** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var gv;function qz(){if(gv)return uh;gv=1;var e=Uo();function n(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var r=typeof Object.is=="function"?Object.is:n,l=e.useState,a=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function f(p,y){var v=y(),w=l({inst:{value:v,getSnapshot:y}}),k=w[0].inst,S=w[1];return s(function(){k.value=v,k.getSnapshot=y,h(k)&&S({inst:k})},[p,v,y]),a(function(){return h(k)&&S({inst:k}),p(function(){h(k)&&S({inst:k})})},[p]),u(v),v}function h(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!r(p,v)}catch{return!0}}function d(p,y){return y()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:f;return uh.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,uh}var yv;function Uz(){return yv||(yv=1,sh.exports=qz()),sh.exports}/** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var xv;function Iz(){if(xv)return oh;xv=1;var e=Uo(),n=Uz();function r(d,m){return d===m&&(d!==0||1/d===1/m)||d!==d&&m!==m}var l=typeof Object.is=="function"?Object.is:r,a=n.useSyncExternalStore,s=e.useRef,u=e.useEffect,f=e.useMemo,h=e.useDebugValue;return oh.useSyncExternalStoreWithSelector=function(d,m,p,y,v){var w=s(null);if(w.current===null){var k={hasValue:!1,value:null};w.current=k}else k=w.current;w=f(function(){function _(A){if(!T){if(T=!0,E=A,A=y(A),v!==void 0&&k.hasValue){var L=k.value;if(v(L,A))return z=L}return z=A}if(L=z,l(E,A))return L;var D=y(A);return v!==void 0&&v(L,D)?(E=A,L):(E=A,z=D)}var T=!1,E,z,I=p===void 0?null:p;return[function(){return _(m())},I===null?void 0:function(){return _(I())}]},[m,p,y,v]);var S=a(d,w[0],w[1]);return u(function(){k.hasValue=!0,k.value=S},[S]),h(S),S},oh}var vv;function Vz(){return vv||(vv=1,ah.exports=Iz()),ah.exports}var Gz=Vz();const Yz=qo(Gz),$z={},bv=e=>{let n;const r=new Set,l=(m,p)=>{const y=typeof m=="function"?m(n):m;if(!Object.is(y,n)){const v=n;n=p??(typeof y!="object"||y===null)?y:Object.assign({},n,y),r.forEach(w=>w(n,v))}},a=()=>n,h={setState:l,getState:a,getInitialState:()=>d,subscribe:m=>(r.add(m),()=>r.delete(m)),destroy:()=>{($z?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},d=n=e(l,a,h);return h},Pz=e=>e?bv(e):bv,{useDebugValue:Xz}=Pl,{useSyncExternalStoreWithSelector:Fz}=Yz,Qz=e=>e;function aS(e,n=Qz,r){const l=Fz(e.subscribe,e.getState,e.getServerState||e.getInitialState,n,r);return Xz(l),l}const wv=(e,n)=>{const r=Pz(e),l=(a,s=n)=>aS(r,a,s);return Object.assign(l,r),l},Zz=(e,n)=>e?wv(e,n):wv;function ht(e,n){if(Object.is(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(const[l,a]of e)if(!Object.is(a,n.get(l)))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(const l of e)if(!n.has(l))return!1;return!0}const r=Object.keys(e);if(r.length!==Object.keys(n).length)return!1;for(const l of r)if(!Object.prototype.hasOwnProperty.call(n,l)||!Object.is(e[l],n[l]))return!1;return!0}var Kz=zb();const Sc=V.createContext(null),Jz=Sc.Provider,oS=nr.error001();function Ge(e,n){const r=V.useContext(Sc);if(r===null)throw new Error(oS);return aS(r,e,n)}function pt(){const e=V.useContext(Sc);if(e===null)throw new Error(oS);return V.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const Sv={display:"none"},Wz={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},sS="react-flow__node-desc",uS="react-flow__edge-desc",eA="react-flow__aria-live",tA=e=>e.ariaLiveMessage,nA=e=>e.ariaLabelConfig;function rA({rfId:e}){const n=Ge(tA);return b.jsx("div",{id:`${eA}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Wz,children:n})}function iA({rfId:e,disableKeyboardA11y:n}){const r=Ge(nA);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${sS}-${e}`,style:Sv,children:n?r["node.a11yDescription.default"]:r["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${uS}-${e}`,style:Sv,children:r["edge.a11yDescription.default"]}),!n&&b.jsx(rA,{rfId:e})]})}const _c=V.forwardRef(({position:e="top-left",children:n,className:r,style:l,...a},s)=>{const u=`${e}`.split("-");return b.jsx("div",{className:zt(["react-flow__panel",r,...u]),style:l,ref:s,...a,children:n})});_c.displayName="Panel";function lA({proOptions:e,position:n="bottom-right"}){return e!=null&&e.hideAttribution?null:b.jsx(_c,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:b.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const aA=e=>{const n=[],r=[];for(const[,l]of e.nodeLookup)l.selected&&n.push(l.internals.userNode);for(const[,l]of e.edgeLookup)l.selected&&r.push(l);return{selectedNodes:n,selectedEdges:r}},Du=e=>e.id;function oA(e,n){return ht(e.selectedNodes.map(Du),n.selectedNodes.map(Du))&&ht(e.selectedEdges.map(Du),n.selectedEdges.map(Du))}function sA({onSelectionChange:e}){const n=pt(),{selectedNodes:r,selectedEdges:l}=Ge(aA,oA);return V.useEffect(()=>{const a={nodes:r,edges:l};e==null||e(a),n.getState().onSelectionChangeHandlers.forEach(s=>s(a))},[r,l,e]),null}const uA=e=>!!e.onSelectionChangeHandlers;function cA({onSelectionChange:e}){const n=Ge(uA);return e||n?b.jsx(sA,{onSelectionChange:e}):null}const cS=[0,0],fA={x:0,y:0,zoom:1},dA=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],_v=[...dA,"rfId"],hA=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Ev={translateExtent:Oo,nodeOrigin:cS,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function pA(e){const{setNodes:n,setEdges:r,setMinZoom:l,setMaxZoom:a,setTranslateExtent:s,setNodeExtent:u,reset:f,setDefaultNodesAndEdges:h}=Ge(hA,ht),d=pt();V.useEffect(()=>(h(e.defaultNodes,e.defaultEdges),()=>{m.current=Ev,f()}),[]);const m=V.useRef(Ev);return V.useEffect(()=>{for(const p of _v){const y=e[p],v=m.current[p];y!==v&&(typeof e[p]>"u"||(p==="nodes"?n(y):p==="edges"?r(y):p==="minZoom"?l(y):p==="maxZoom"?a(y):p==="translateExtent"?s(y):p==="nodeExtent"?u(y):p==="ariaLabelConfig"?d.setState({ariaLabelConfig:ZT(y)}):p==="fitView"?d.setState({fitViewQueued:y}):p==="fitViewOptions"?d.setState({fitViewOptions:y}):d.setState({[p]:y})))}m.current=e},_v.map(p=>e[p])),null}function Nv(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function mA(e){var l;const[n,r]=V.useState(e==="system"?null:e);return V.useEffect(()=>{if(e!=="system"){r(e);return}const a=Nv(),s=()=>r(a!=null&&a.matches?"dark":"light");return s(),a==null||a.addEventListener("change",s),()=>{a==null||a.removeEventListener("change",s)}},[e]),n!==null?n:(l=Nv())!=null&&l.matches?"dark":"light"}const kv=typeof document<"u"?document:null;function Ho(e=null,n={target:kv,actInsideInputWithModifier:!0}){const[r,l]=V.useState(!1),a=V.useRef(!1),s=V.useRef(new Set([])),[u,f]=V.useMemo(()=>{if(e!==null){const d=(Array.isArray(e)?e:[e]).filter(p=>typeof p=="string").map(p=>p.replace("+",` +`).replace(` + +`,` ++`).split(` +`)),m=d.reduce((p,y)=>p.concat(...y),[]);return[d,m]}return[[],[]]},[e]);return V.useEffect(()=>{const h=(n==null?void 0:n.target)??kv,d=(n==null?void 0:n.actInsideInputWithModifier)??!0;if(e!==null){const m=v=>{var S,_;if(a.current=v.ctrlKey||v.metaKey||v.shiftKey||v.altKey,(!a.current||a.current&&!d)&&Yw(v))return!1;const k=Tv(v.code,f);if(s.current.add(v[k]),Cv(u,s.current,!1)){const T=((_=(S=v.composedPath)==null?void 0:S.call(v))==null?void 0:_[0])||v.target,E=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";n.preventDefault!==!1&&(a.current||!E)&&v.preventDefault(),l(!0)}},p=v=>{const w=Tv(v.code,f);Cv(u,s.current,!0)?(l(!1),s.current.clear()):s.current.delete(v[w]),v.key==="Meta"&&s.current.clear(),a.current=!1},y=()=>{s.current.clear(),l(!1)};return h==null||h.addEventListener("keydown",m),h==null||h.addEventListener("keyup",p),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{h==null||h.removeEventListener("keydown",m),h==null||h.removeEventListener("keyup",p),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,l]),r}function Cv(e,n,r){return e.filter(l=>r||l.length===n.size).some(l=>l.every(a=>n.has(a)))}function Tv(e,n){return n.includes(e)?"code":"key"}const gA=()=>{const e=pt();return V.useMemo(()=>({zoomIn:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomOut:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1/1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomTo:(n,r)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(n,{duration:r==null?void 0:r.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(n,r)=>{const{transform:[l,a,s],panZoom:u}=e.getState();return u?(await u.setViewport({x:n.x??l,y:n.y??a,zoom:n.zoom??s},r),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[n,r,l]=e.getState().transform;return{x:n,y:r,zoom:l}},setCenter:async(n,r,l)=>e.getState().setCenter(n,r,l),fitBounds:async(n,r)=>{const{width:l,height:a,minZoom:s,maxZoom:u,panZoom:f}=e.getState(),h=sm(n,l,a,s,u,(r==null?void 0:r.padding)??.1);return f?(await f.setViewport(h,{duration:r==null?void 0:r.duration,ease:r==null?void 0:r.ease,interpolate:r==null?void 0:r.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(n,r={})=>{const{transform:l,snapGrid:a,snapToGrid:s,domNode:u}=e.getState();if(!u)return n;const{x:f,y:h}=u.getBoundingClientRect(),d={x:n.x-f,y:n.y-h},m=r.snapGrid??a,p=r.snapToGrid??s;return Xo(d,l,p,m)},flowToScreenPosition:n=>{const{transform:r,domNode:l}=e.getState();if(!l)return n;const{x:a,y:s}=l.getBoundingClientRect(),u=lc(n,r);return{x:u.x+a,y:u.y+s}}}),[])};function fS(e,n){const r=[],l=new Map,a=[];for(const s of e)if(s.type==="add"){a.push(s);continue}else if(s.type==="remove"||s.type==="replace")l.set(s.id,[s]);else{const u=l.get(s.id);u?u.push(s):l.set(s.id,[s])}for(const s of n){const u=l.get(s.id);if(!u){r.push(s);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){r.push({...u[0].item});continue}const f={...s};for(const h of u)yA(h,f);r.push(f)}return a.length&&a.forEach(s=>{s.index!==void 0?r.splice(s.index,0,{...s.item}):r.push({...s.item})}),r}function yA(e,n){switch(e.type){case"select":{n.selected=e.selected;break}case"position":{typeof e.position<"u"&&(n.position=e.position),typeof e.dragging<"u"&&(n.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(n.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(n.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(n.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(n.resizing=e.resizing);break}}}function dS(e,n){return fS(e,n)}function hS(e,n){return fS(e,n)}function qi(e,n){return{id:e,type:"select",selected:n}}function Ql(e,n=new Set,r=!1){const l=[];for(const[a,s]of e){const u=n.has(a);!(s.selected===void 0&&!u)&&s.selected!==u&&(r&&(s.selected=u),l.push(qi(s.id,u)))}return l}function zv({items:e=[],lookup:n}){var a;const r=[],l=new Map(e.map(s=>[s.id,s]));for(const[s,u]of e.entries()){const f=n.get(u.id),h=((a=f==null?void 0:f.internals)==null?void 0:a.userNode)??f;h!==void 0&&h!==u&&r.push({id:u.id,item:u,type:"replace"}),h===void 0&&r.push({item:u,type:"add",index:s})}for(const[s]of n)l.get(s)===void 0&&r.push({id:s,type:"remove"});return r}function Av(e){return{id:e.id,type:"remove"}}const Mv=e=>UT(e),xA=e=>Lw(e);function pS(e){return V.forwardRef(e)}const vA=typeof window<"u"?V.useLayoutEffect:V.useEffect;function jv(e){const[n,r]=V.useState(BigInt(0)),[l]=V.useState(()=>bA(()=>r(a=>a+BigInt(1))));return vA(()=>{const a=l.get();a.length&&(e(a),l.reset())},[n]),l}function bA(e){let n=[];return{get:()=>n,reset:()=>{n=[]},push:r=>{n.push(r),e()}}}const mS=V.createContext(null);function wA({children:e}){const n=pt(),r=V.useCallback(f=>{const{nodes:h=[],setNodes:d,hasDefaultNodes:m,onNodesChange:p,nodeLookup:y,fitViewQueued:v,onNodesChangeMiddlewareMap:w}=n.getState();let k=h;for(const _ of f)k=typeof _=="function"?_(k):_;let S=zv({items:k,lookup:y});for(const _ of w.values())S=_(S);m&&d(k),S.length>0?p==null||p(S):v&&window.requestAnimationFrame(()=>{const{fitViewQueued:_,nodes:T,setNodes:E}=n.getState();_&&E(T)})},[]),l=jv(r),a=V.useCallback(f=>{const{edges:h=[],setEdges:d,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:y}=n.getState();let v=h;for(const w of f)v=typeof w=="function"?w(v):w;m?d(v):p&&p(zv({items:v,lookup:y}))},[]),s=jv(a),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:s}),[]);return b.jsx(mS.Provider,{value:u,children:e})}function SA(){const e=V.useContext(mS);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const _A=e=>!!e.panZoom;function Fo(){const e=gA(),n=pt(),r=SA(),l=Ge(_A),a=V.useMemo(()=>{const s=p=>n.getState().nodeLookup.get(p),u=p=>{r.nodeQueue.push(p)},f=p=>{r.edgeQueue.push(p)},h=p=>{var _,T;const{nodeLookup:y,nodeOrigin:v}=n.getState(),w=Mv(p)?p:y.get(p.id),k=w.parentId?Vw(w.position,w.measured,w.parentId,y,v):w.position,S={...w,position:k,width:((_=w.measured)==null?void 0:_.width)??w.width,height:((T=w.measured)==null?void 0:T.height)??w.height};return aa(S)},d=(p,y,v={replace:!1})=>{u(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&Mv(S)?S:{...k,...S}}return k}))},m=(p,y,v={replace:!1})=>{f(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&xA(S)?S:{...k,...S}}return k}))};return{getNodes:()=>n.getState().nodes.map(p=>({...p})),getNode:p=>{var y;return(y=s(p))==null?void 0:y.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:p=[]}=n.getState();return p.map(y=>({...y}))},getEdge:p=>n.getState().edgeLookup.get(p),setNodes:u,setEdges:f,addNodes:p=>{const y=Array.isArray(p)?p:[p];r.nodeQueue.push(v=>[...v,...y])},addEdges:p=>{const y=Array.isArray(p)?p:[p];r.edgeQueue.push(v=>[...v,...y])},toObject:()=>{const{nodes:p=[],edges:y=[],transform:v}=n.getState(),[w,k,S]=v;return{nodes:p.map(_=>({..._})),edges:y.map(_=>({..._})),viewport:{x:w,y:k,zoom:S}}},deleteElements:async({nodes:p=[],edges:y=[]})=>{const{nodes:v,edges:w,onNodesDelete:k,onEdgesDelete:S,triggerNodeChanges:_,triggerEdgeChanges:T,onDelete:E,onBeforeDelete:z}=n.getState(),{nodes:I,edges:A}=await $T({nodesToRemove:p,edgesToRemove:y,nodes:v,edges:w,onBeforeDelete:z}),L=A.length>0,D=I.length>0;if(L){const U=A.map(Av);S==null||S(A),T(U)}if(D){const U=I.map(Av);k==null||k(I),_(U)}return(D||L)&&(E==null||E({nodes:I,edges:A})),{deletedNodes:I,deletedEdges:A}},getIntersectingNodes:(p,y=!0,v)=>{const w=rv(p),k=w?p:h(p),S=v!==void 0;return k?(v||n.getState().nodes).filter(_=>{const T=n.getState().nodeLookup.get(_.id);if(T&&!w&&(_.id===p.id||!T.internals.positionAbsolute))return!1;const E=aa(S?_:T),z=Ro(E,k);return y&&z>0||z>=E.width*E.height||z>=k.width*k.height}):[]},isNodeIntersecting:(p,y,v=!0)=>{const k=rv(p)?p:h(p);if(!k)return!1;const S=Ro(k,y);return v&&S>0||S>=y.width*y.height||S>=k.width*k.height},updateNode:d,updateNodeData:(p,y,v={replace:!1})=>{d(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},updateEdge:m,updateEdgeData:(p,y,v={replace:!1})=>{m(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},getNodesBounds:p=>{const{nodeLookup:y,nodeOrigin:v}=n.getState();return IT(p,{nodeLookup:y,nodeOrigin:v})},getHandleConnections:({type:p,id:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}-${p}${y?`-${y}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}${p?y?`-${p}-${y}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const y=n.getState().fitViewResolver??QT();return n.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:y}),r.nodeQueue.push(v=>[...v]),y.promise}}},[]);return V.useMemo(()=>({...a,...e,viewportInitialized:l}),[l])}const Ov=e=>e.selected,EA=typeof window<"u"?window:void 0;function NA({deleteKeyCode:e,multiSelectionKeyCode:n}){const r=pt(),{deleteElements:l}=Fo(),a=Ho(e,{actInsideInputWithModifier:!1}),s=Ho(n,{target:EA});V.useEffect(()=>{if(a){const{edges:u,nodes:f}=r.getState();l({nodes:f.filter(Ov),edges:u.filter(Ov)}),r.setState({nodesSelectionActive:!1})}},[a]),V.useEffect(()=>{r.setState({multiSelectionActive:s})},[s])}function kA(e){const n=pt();V.useEffect(()=>{const r=()=>{var a,s,u,f;if(!e.current||!(((s=(a=e.current).checkVisibility)==null?void 0:s.call(a))??!0))return!1;const l=um(e.current);(l.height===0||l.width===0)&&((f=(u=n.getState()).onError)==null||f.call(u,"004",nr.error004())),n.setState({width:l.width||500,height:l.height||500})};if(e.current){r(),window.addEventListener("resize",r);const l=new ResizeObserver(()=>r());return l.observe(e.current),()=>{window.removeEventListener("resize",r),l&&e.current&&l.unobserve(e.current)}}},[])}const Ec={position:"absolute",width:"100%",height:"100%",top:0,left:0},CA=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function TA({onPaneContextMenu:e,zoomOnScroll:n=!0,zoomOnPinch:r=!0,panOnScroll:l=!1,panOnScrollSpeed:a=.5,panOnScrollMode:s=$i.Free,zoomOnDoubleClick:u=!0,panOnDrag:f=!0,defaultViewport:h,translateExtent:d,minZoom:m,maxZoom:p,zoomActivationKeyCode:y,preventScrolling:v=!0,children:w,noWheelClassName:k,noPanClassName:S,onViewportChange:_,isControlledViewport:T,paneClickDistance:E,selectionOnDrag:z}){const I=pt(),A=V.useRef(null),{userSelectionActive:L,lib:D,connectionInProgress:U}=Ge(CA,ht),X=Ho(y),H=V.useRef();kA(A);const q=V.useCallback(ee=>{_==null||_({x:ee[0],y:ee[1],zoom:ee[2]}),T||I.setState({transform:ee})},[_,T]);return V.useEffect(()=>{if(A.current){H.current=jz({domNode:A.current,minZoom:m,maxZoom:p,translateExtent:d,viewport:h,onDraggingChange:M=>I.setState($=>$.paneDragging===M?$:{paneDragging:M}),onPanZoomStart:(M,$)=>{const{onViewportChangeStart:Q,onMoveStart:K}=I.getState();K==null||K(M,$),Q==null||Q($)},onPanZoom:(M,$)=>{const{onViewportChange:Q,onMove:K}=I.getState();K==null||K(M,$),Q==null||Q($)},onPanZoomEnd:(M,$)=>{const{onViewportChangeEnd:Q,onMoveEnd:K}=I.getState();K==null||K(M,$),Q==null||Q($)}});const{x:ee,y:R,zoom:G}=H.current.getViewport();return I.setState({panZoom:H.current,transform:[ee,R,G],domNode:A.current.closest(".react-flow")}),()=>{var M;(M=H.current)==null||M.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=H.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:n,zoomOnPinch:r,panOnScroll:l,panOnScrollSpeed:a,panOnScrollMode:s,zoomOnDoubleClick:u,panOnDrag:f,zoomActivationKeyPressed:X,preventScrolling:v,noPanClassName:S,userSelectionActive:L,noWheelClassName:k,lib:D,onTransformChange:q,connectionInProgress:U,selectionOnDrag:z,paneClickDistance:E})},[e,n,r,l,a,s,u,f,X,v,S,L,k,D,q,U,z,E]),b.jsx("div",{className:"react-flow__renderer",ref:A,style:Ec,children:w})}const zA=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function AA(){const{userSelectionActive:e,userSelectionRect:n}=Ge(zA,ht);return e&&n?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const ch=(e,n)=>r=>{r.target===n.current&&(e==null||e(r))},MA=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function jA({isSelecting:e,selectionKeyPressed:n,selectionMode:r=Do.Full,panOnDrag:l,paneClickDistance:a,selectionOnDrag:s,onSelectionStart:u,onSelectionEnd:f,onPaneClick:h,onPaneContextMenu:d,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:y,onPaneMouseLeave:v,children:w}){const k=pt(),{userSelectionActive:S,elementsSelectable:_,dragging:T,connectionInProgress:E}=Ge(MA,ht),z=_&&(e||S),I=V.useRef(null),A=V.useRef(),L=V.useRef(new Set),D=V.useRef(new Set),U=V.useRef(!1),X=Q=>{if(U.current||E){U.current=!1;return}h==null||h(Q),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},H=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}d==null||d(Q)},q=m?Q=>m(Q):void 0,ee=Q=>{U.current&&(Q.stopPropagation(),U.current=!1)},R=Q=>{var F,J;const{domNode:K}=k.getState();if(A.current=K==null?void 0:K.getBoundingClientRect(),!A.current)return;const j=Q.target===I.current;if(!j&&!!Q.target.closest(".nokey")||!e||!(s&&j||n)||Q.button!==0||!Q.isPrimary)return;(J=(F=Q.target)==null?void 0:F.setPointerCapture)==null||J.call(F,Q.pointerId),U.current=!1;const{x:N,y:Y}=In(Q.nativeEvent,A.current);k.setState({userSelectionRect:{width:0,height:0,startX:N,startY:Y,x:N,y:Y}}),j||(Q.stopPropagation(),Q.preventDefault())},G=Q=>{const{userSelectionRect:K,transform:j,nodeLookup:B,edgeLookup:P,connectionLookup:N,triggerNodeChanges:Y,triggerEdgeChanges:F,defaultEdgeOptions:J,resetSelectedElements:ne}=k.getState();if(!A.current||!K)return;const{x:re,y:se}=In(Q.nativeEvent,A.current),{startX:ye,startY:ve}=K;if(!U.current){const Ce=n?0:a;if(Math.hypot(re-ye,se-ve)<=Ce)return;ne(),u==null||u(Q)}U.current=!0;const xe={startX:ye,startY:ve,x:reCe.id)),D.current=new Set;const Me=(J==null?void 0:J.selectable)??!0;for(const Ce of L.current){const ut=N.get(Ce);if(ut)for(const{edgeId:tt}of ut.values()){const At=P.get(tt);At&&(At.selectable??Me)&&D.current.add(tt)}}if(!iv(pe,L.current)){const Ce=Ql(B,L.current,!0);Y(Ce)}if(!iv(_e,D.current)){const Ce=Ql(P,D.current);F(Ce)}k.setState({userSelectionRect:xe,userSelectionActive:!0,nodesSelectionActive:!1})},M=Q=>{var K,j;Q.button===0&&((j=(K=Q.target)==null?void 0:K.releasePointerCapture)==null||j.call(K,Q.pointerId),!S&&Q.target===I.current&&k.getState().userSelectionRect&&(X==null||X(Q)),k.setState({userSelectionActive:!1,userSelectionRect:null}),U.current&&(f==null||f(Q),k.setState({nodesSelectionActive:L.current.size>0})))},$=l===!0||Array.isArray(l)&&l.includes(0);return b.jsxs("div",{className:zt(["react-flow__pane",{draggable:$,dragging:T,selection:e}]),onClick:z?void 0:ch(X,I),onContextMenu:ch(H,I),onWheel:ch(q,I),onPointerEnter:z?void 0:p,onPointerMove:z?G:y,onPointerUp:z?M:void 0,onPointerDownCapture:z?R:void 0,onClickCapture:z?ee:void 0,onPointerLeave:v,ref:I,style:Ec,children:[w,b.jsx(AA,{})]})}function Lp({id:e,store:n,unselect:r=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:s,multiSelectionActive:u,nodeLookup:f,onError:h}=n.getState(),d=f.get(e);if(!d){h==null||h("012",nr.error012(e));return}n.setState({nodesSelectionActive:!1}),d.selected?(r||d.selected&&u)&&(s({nodes:[d],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([e])}function gS({nodeRef:e,disabled:n=!1,noDragClassName:r,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:u}){const f=pt(),[h,d]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=xz({getStoreItems:()=>f.getState(),onNodeMouseDown:p=>{Lp({id:p,store:f,nodeRef:e})},onDragStart:()=>{d(!0)},onDragStop:()=>{d(!1)}})},[]),V.useEffect(()=>{if(!(n||!e.current||!m.current))return m.current.update({noDragClassName:r,handleSelector:l,domNode:e.current,isSelectable:s,nodeId:a,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[r,l,n,s,e,a,u]),h}const OA=e=>n=>n.selected&&(n.draggable||e&&typeof n.draggable>"u");function yS(){const e=pt();return V.useCallback(r=>{const{nodeExtent:l,snapToGrid:a,snapGrid:s,nodesDraggable:u,onError:f,updateNodePositions:h,nodeLookup:d,nodeOrigin:m}=e.getState(),p=new Map,y=OA(u),v=a?s[0]:5,w=a?s[1]:5,k=r.direction.x*v*r.factor,S=r.direction.y*w*r.factor;for(const[,_]of d){if(!y(_))continue;let T={x:_.internals.positionAbsolute.x+k,y:_.internals.positionAbsolute.y+S};a&&(T=Po(T,s));const{position:E,positionAbsolute:z}=Hw({nodeId:_.id,nextPosition:T,nodeLookup:d,nodeExtent:l,nodeOrigin:m,onError:f});_.position=E,_.internals.positionAbsolute=z,p.set(_.id,_)}h(p)},[])}const gm=V.createContext(null),DA=gm.Provider;gm.Consumer;const xS=()=>V.useContext(gm),RA=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),LA=(e,n,r)=>l=>{const{connectionClickStartHandle:a,connectionMode:s,connection:u}=l,{fromHandle:f,toHandle:h,isValid:d}=u,m=(h==null?void 0:h.nodeId)===e&&(h==null?void 0:h.id)===n&&(h==null?void 0:h.type)===r;return{connectingFrom:(f==null?void 0:f.nodeId)===e&&(f==null?void 0:f.id)===n&&(f==null?void 0:f.type)===r,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===n&&(a==null?void 0:a.type)===r,isPossibleEndHandle:s===ia.Strict?(f==null?void 0:f.type)!==r:e!==(f==null?void 0:f.nodeId)||n!==(f==null?void 0:f.id),connectionInProcess:!!f,clickConnectionInProcess:!!a,valid:m&&d}};function HA({type:e="source",position:n=be.Top,isValidConnection:r,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:s=!0,id:u,onConnect:f,children:h,className:d,onMouseDown:m,onTouchStart:p,...y},v){var G,M;const w=u||null,k=e==="target",S=pt(),_=xS(),{connectOnClick:T,noPanClassName:E,rfId:z}=Ge(RA,ht),{connectingFrom:I,connectingTo:A,clickConnecting:L,isPossibleEndHandle:D,connectionInProcess:U,clickConnectionInProcess:X,valid:H}=Ge(LA(_,w,e),ht);_||(M=(G=S.getState()).onError)==null||M.call(G,"010",nr.error010());const q=$=>{const{defaultEdgeOptions:Q,onConnect:K,hasDefaultEdges:j}=S.getState(),B={...Q,...$};if(j){const{edges:P,setEdges:N}=S.getState();N(nz(B,P))}K==null||K(B),f==null||f(B)},ee=$=>{if(!_)return;const Q=$w($.nativeEvent);if(a&&(Q&&$.button===0||!Q)){const K=S.getState();Rp.onPointerDown($.nativeEvent,{handleDomNode:$.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:k,handleId:w,nodeId:_,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...j)=>{var B,P;return(P=(B=S.getState()).onConnectEnd)==null?void 0:P.call(B,...j)},updateConnection:K.updateConnection,onConnect:q,isValidConnection:r||((...j)=>{var B,P;return((P=(B=S.getState()).isValidConnection)==null?void 0:P.call(B,...j))??!0}),getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}Q?m==null||m($):p==null||p($)},R=$=>{const{onClickConnectStart:Q,onClickConnectEnd:K,connectionClickStartHandle:j,connectionMode:B,isValidConnection:P,lib:N,rfId:Y,nodeLookup:F,connection:J}=S.getState();if(!_||!j&&!a)return;if(!j){Q==null||Q($.nativeEvent,{nodeId:_,handleId:w,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:_,type:e,id:w}});return}const ne=Gw($.target),re=r||P,{connection:se,isValid:ye}=Rp.isValid($.nativeEvent,{handle:{nodeId:_,id:w,type:e},connectionMode:B,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:re,flowId:Y,doc:ne,lib:N,nodeLookup:F});ye&&se&&q(se);const ve=structuredClone(J);delete ve.inProgress,ve.toPosition=ve.toHandle?ve.toHandle.position:null,K==null||K($,ve),S.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":w,"data-nodeid":_,"data-handlepos":n,"data-id":`${z}-${_}-${w}-${e}`,className:zt(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",E,d,{source:!k,target:k,connectable:l,connectablestart:a,connectableend:s,clickconnecting:L,connectingfrom:I,connectingto:A,valid:H,connectionindicator:l&&(!U||D)&&(U||X?s:a)}]),onMouseDown:ee,onTouchStart:ee,onClick:T?R:void 0,ref:v,...y,children:h})}const $t=V.memo(pS(HA));function BA({data:e,isConnectable:n,sourcePosition:r=be.Bottom}){return b.jsxs(b.Fragment,{children:[e==null?void 0:e.label,b.jsx($t,{type:"source",position:r,isConnectable:n})]})}function qA({data:e,isConnectable:n,targetPosition:r=be.Top,sourcePosition:l=be.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label,b.jsx($t,{type:"source",position:l,isConnectable:n})]})}function UA(){return null}function IA({data:e,isConnectable:n,targetPosition:r=be.Top}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label]})}const ac={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Dv={input:BA,default:qA,output:IA,group:UA};function VA(e){var n,r,l,a;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((n=e.style)==null?void 0:n.width),height:e.height??e.initialHeight??((r=e.style)==null?void 0:r.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((a=e.style)==null?void 0:a.height)}}const GA=e=>{const{width:n,height:r,x:l,y:a}=$o(e.nodeLookup,{filter:s=>!!s.selected});return{width:Un(n)?n:null,height:Un(r)?r:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${a}px)`}};function YA({onSelectionContextMenu:e,noPanClassName:n,disableKeyboardA11y:r}){const l=pt(),{width:a,height:s,transformString:u,userSelectionActive:f}=Ge(GA,ht),h=yS(),d=V.useRef(null);V.useEffect(()=>{var v;r||(v=d.current)==null||v.focus({preventScroll:!0})},[r]);const m=!f&&a!==null&&s!==null;if(gS({nodeRef:d,disabled:!m}),!m)return null;const p=e?v=>{const w=l.getState().nodes.filter(k=>k.selected);e(v,w)}:void 0,y=v=>{Object.prototype.hasOwnProperty.call(ac,v.key)&&(v.preventDefault(),h({direction:ac[v.key],factor:v.shiftKey?4:1}))};return b.jsx("div",{className:zt(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:b.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:r?void 0:-1,onKeyDown:r?void 0:y,style:{width:a,height:s}})})}const Rv=typeof window<"u"?window:void 0,$A=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function vS({children:e,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,paneClickDistance:f,deleteKeyCode:h,selectionKeyCode:d,selectionOnDrag:m,selectionMode:p,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:w,panActivationKeyCode:k,zoomActivationKeyCode:S,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:z,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:L,panOnDrag:D,defaultViewport:U,translateExtent:X,minZoom:H,maxZoom:q,preventScrolling:ee,onSelectionContextMenu:R,noWheelClassName:G,noPanClassName:M,disableKeyboardA11y:$,onViewportChange:Q,isControlledViewport:K}){const{nodesSelectionActive:j,userSelectionActive:B}=Ge($A,ht),P=Ho(d,{target:Rv}),N=Ho(k,{target:Rv}),Y=N||D,F=N||z,J=m&&Y!==!0,ne=P||B||J;return NA({deleteKeyCode:h,multiSelectionKeyCode:w}),b.jsx(TA,{onPaneContextMenu:s,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:L,panOnDrag:!P&&Y,defaultViewport:U,translateExtent:X,minZoom:H,maxZoom:q,zoomActivationKeyCode:S,preventScrolling:ee,noWheelClassName:G,noPanClassName:M,onViewportChange:Q,isControlledViewport:K,paneClickDistance:f,selectionOnDrag:J,children:b.jsxs(jA,{onSelectionStart:y,onSelectionEnd:v,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,panOnDrag:Y,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:P,paneClickDistance:f,selectionOnDrag:J,children:[e,j&&b.jsx(YA,{onSelectionContextMenu:R,noPanClassName:M,disableKeyboardA11y:$})]})})}vS.displayName="FlowRenderer";const PA=V.memo(vS),XA=e=>n=>e?om(n.nodeLookup,{x:0,y:0,width:n.width,height:n.height},n.transform,!0).map(r=>r.id):Array.from(n.nodeLookup.keys());function FA(e){return Ge(V.useCallback(XA(e),[e]),ht)}const QA=e=>e.updateNodeInternals;function ZA(){const e=Ge(QA),[n]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(r=>{const l=new Map;r.forEach(a=>{const s=a.target.getAttribute("data-id");l.set(s,{id:s,nodeElement:a.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{n==null||n.disconnect()},[n]),n}function KA({node:e,nodeType:n,hasDimensions:r,resizeObserver:l}){const a=pt(),s=V.useRef(null),u=V.useRef(null),f=V.useRef(e.sourcePosition),h=V.useRef(e.targetPosition),d=V.useRef(n),m=r&&!!e.internals.handleBounds;return V.useEffect(()=>{s.current&&!e.hidden&&(!m||u.current!==s.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(s.current),u.current=s.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(s.current){const p=d.current!==n,y=f.current!==e.sourcePosition,v=h.current!==e.targetPosition;(p||y||v)&&(d.current=n,f.current=e.sourcePosition,h.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,n,e.sourcePosition,e.targetPosition]),s}function JA({id:e,onClick:n,onMouseEnter:r,onMouseMove:l,onMouseLeave:a,onContextMenu:s,onDoubleClick:u,nodesDraggable:f,elementsSelectable:h,nodesConnectable:d,nodesFocusable:m,resizeObserver:p,noDragClassName:y,noPanClassName:v,disableKeyboardA11y:w,rfId:k,nodeTypes:S,nodeClickDistance:_,onError:T}){const{node:E,internals:z,isParent:I}=Ge(re=>{const se=re.nodeLookup.get(e),ye=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:ye}},ht);let A=E.type||"default",L=(S==null?void 0:S[A])||Dv[A];L===void 0&&(T==null||T("003",nr.error003(A)),A="default",L=(S==null?void 0:S.default)||Dv.default);const D=!!(E.draggable||f&&typeof E.draggable>"u"),U=!!(E.selectable||h&&typeof E.selectable>"u"),X=!!(E.connectable||d&&typeof E.connectable>"u"),H=!!(E.focusable||m&&typeof E.focusable>"u"),q=pt(),ee=Iw(E),R=KA({node:E,nodeType:A,hasDimensions:ee,resizeObserver:p}),G=gS({nodeRef:R,disabled:E.hidden||!D,noDragClassName:y,handleSelector:E.dragHandle,nodeId:e,isSelectable:U,nodeClickDistance:_}),M=yS();if(E.hidden)return null;const $=jr(E),Q=VA(E),K=U||D||n||r||l||a,j=r?re=>r(re,{...z.userNode}):void 0,B=l?re=>l(re,{...z.userNode}):void 0,P=a?re=>a(re,{...z.userNode}):void 0,N=s?re=>s(re,{...z.userNode}):void 0,Y=u?re=>u(re,{...z.userNode}):void 0,F=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:ye}=q.getState();U&&(!se||!D||ye>0)&&Lp({id:e,store:q,nodeRef:R}),n&&n(re,{...z.userNode})},J=re=>{if(!(Yw(re.nativeEvent)||w)){if(jw.includes(re.key)&&U){const se=re.key==="Escape";Lp({id:e,store:q,unselect:se,nodeRef:R})}else if(D&&E.selected&&Object.prototype.hasOwnProperty.call(ac,re.key)){re.preventDefault();const{ariaLabelConfig:se}=q.getState();q.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~z.positionAbsolute.x,y:~~z.positionAbsolute.y})}),M({direction:ac[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=R.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:ye,autoPanOnNodeFocus:ve,setCenter:xe}=q.getState();if(!ve)return;om(new Map([[e,E]]),{x:0,y:0,width:se,height:ye},re,!0).length>0||xe(E.position.x+$.width/2,E.position.y+$.height/2,{zoom:re[2]})};return b.jsx("div",{className:zt(["react-flow__node",`react-flow__node-${A}`,{[v]:D},E.className,{selected:E.selected,selectable:U,parent:I,draggable:D,dragging:G}]),ref:R,style:{zIndex:z.z,transform:`translate(${z.positionAbsolute.x}px,${z.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:ee?"visible":"hidden",...E.style,...Q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:B,onMouseLeave:P,onContextMenu:N,onClick:F,onDoubleClick:Y,onKeyDown:H?J:void 0,tabIndex:H?0:void 0,onFocus:H?ne:void 0,role:E.ariaRole??(H?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${sS}-${k}`,"aria-label":E.ariaLabel,...E.domAttributes,children:b.jsx(DA,{value:e,children:b.jsx(L,{id:e,data:E.data,type:A,positionAbsoluteX:z.positionAbsolute.x,positionAbsoluteY:z.positionAbsolute.y,selected:E.selected??!1,selectable:U,draggable:D,deletable:E.deletable??!0,isConnectable:X,sourcePosition:E.sourcePosition,targetPosition:E.targetPosition,dragging:G,dragHandle:E.dragHandle,zIndex:z.z,parentId:E.parentId,...$})})})}var WA=V.memo(JA);const eM=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function bS(e){const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,onError:s}=Ge(eM,ht),u=FA(e.onlyRenderVisibleElements),f=ZA();return b.jsx("div",{className:"react-flow__nodes",style:Ec,children:u.map(h=>b.jsx(WA,{id:h,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:f,nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:s},h))})}bS.displayName="NodeRenderer";const tM=V.memo(bS);function nM(e){return Ge(V.useCallback(r=>{if(!e)return r.edges.map(a=>a.id);const l=[];if(r.width&&r.height)for(const a of r.edges){const s=r.nodeLookup.get(a.source),u=r.nodeLookup.get(a.target);s&&u&&WT({sourceNode:s,targetNode:u,width:r.width,height:r.height,transform:r.transform})&&l.push(a.id)}return l},[e]),ht)}const rM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:r,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},iM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:r,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Lv={[rc.Arrow]:rM,[rc.ArrowClosed]:iM};function lM(e){const n=pt();return V.useMemo(()=>{var a,s;return Object.prototype.hasOwnProperty.call(Lv,e)?Lv[e]:((s=(a=n.getState()).onError)==null||s.call(a,"009",nr.error009(e)),null)},[e])}const aM=({id:e,type:n,color:r,width:l=12.5,height:a=12.5,markerUnits:s="strokeWidth",strokeWidth:u,orient:f="auto-start-reverse"})=>{const h=lM(n);return h?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:f,refX:"0",refY:"0",children:b.jsx(h,{color:r,strokeWidth:u})}):null},wS=({defaultColor:e,rfId:n})=>{const r=Ge(s=>s.edges),l=Ge(s=>s.defaultEdgeOptions),a=V.useMemo(()=>oz(r,{id:n,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[r,l,n,e]);return a.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:a.map(s=>b.jsx(aM,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};wS.displayName="MarkerDefinitions";var oM=V.memo(wS);function SS({x:e,y:n,label:r,labelStyle:l,labelShowBg:a=!0,labelBgStyle:s,labelBgPadding:u=[2,4],labelBgBorderRadius:f=2,children:h,className:d,...m}){const[p,y]=V.useState({x:1,y:0,width:0,height:0}),v=zt(["react-flow__edge-textwrapper",d]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const k=w.current.getBBox();y({x:k.x,y:k.y,width:k.width,height:k.height})}},[r]),r?b.jsxs("g",{transform:`translate(${e-p.width/2} ${n-p.height/2})`,className:v,visibility:p.width?"visible":"hidden",...m,children:[a&&b.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:s,rx:f,ry:f}),b.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:r}),h]}):null}SS.displayName="EdgeText";const sM=V.memo(SS);function Qo({path:e,labelX:n,labelY:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:h,interactionWidth:d=20,...m}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...m,d:e,fill:"none",className:zt(["react-flow__edge-path",m.className])}),d?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:d,className:"react-flow__edge-interaction"}):null,l&&Un(n)&&Un(r)?b.jsx(sM,{x:n,y:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:h}):null]})}function Hv({pos:e,x1:n,y1:r,x2:l,y2:a}){return e===be.Left||e===be.Right?[.5*(n+l),r]:[n,.5*(r+a)]}function _S({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top}){const[u,f]=Hv({pos:r,x1:e,y1:n,x2:l,y2:a}),[h,d]=Hv({pos:s,x1:l,y1:a,x2:e,y2:n}),[m,p,y,v]=Pw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:u,sourceControlY:f,targetControlX:h,targetControlY:d});return[`M${e},${n} C${u},${f} ${h},${d} ${l},${a}`,m,p,y,v]}function ES(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})=>{const[T,E,z]=_S({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f}),I=e.isInternal?void 0:n;return b.jsx(Qo,{id:I,path:T,labelX:E,labelY:z,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})})}const uM=ES({isInternal:!1}),NS=ES({isInternal:!0});uM.displayName="SimpleBezierEdge";NS.displayName="SimpleBezierEdgeInternal";function kS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,sourcePosition:v=be.Bottom,targetPosition:w=be.Top,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=jp({sourceX:r,sourceY:l,sourcePosition:v,targetX:a,targetY:s,targetPosition:w,borderRadius:_==null?void 0:_.borderRadius,offset:_==null?void 0:_.offset,stepPosition:_==null?void 0:_.stepPosition}),A=e.isInternal?void 0:n;return b.jsx(Qo,{id:A,path:E,labelX:z,labelY:I,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:k,markerStart:S,interactionWidth:T})})}const CS=kS({isInternal:!1}),TS=kS({isInternal:!0});CS.displayName="SmoothStepEdge";TS.displayName="SmoothStepEdgeInternal";function zS(e){return V.memo(({id:n,...r})=>{var a;const l=e.isInternal?void 0:n;return b.jsx(CS,{...r,id:l,pathOptions:V.useMemo(()=>{var s;return{borderRadius:0,offset:(s=r.pathOptions)==null?void 0:s.offset}},[(a=r.pathOptions)==null?void 0:a.offset])})})}const cM=zS({isInternal:!1}),AS=zS({isInternal:!0});cM.displayName="StepEdge";AS.displayName="StepEdgeInternal";function MS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[S,_,T]=Fw({sourceX:r,sourceY:l,targetX:a,targetY:s}),E=e.isInternal?void 0:n;return b.jsx(Qo,{id:E,path:S,labelX:_,labelY:T,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})})}const fM=MS({isInternal:!1}),jS=MS({isInternal:!0});fM.displayName="StraightEdge";jS.displayName="StraightEdgeInternal";function OS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u=be.Bottom,targetPosition:f=be.Top,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=cm({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f,curvature:_==null?void 0:_.curvature}),A=e.isInternal?void 0:n;return b.jsx(Qo,{id:A,path:E,labelX:z,labelY:I,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:T})})}const dM=OS({isInternal:!1}),DS=OS({isInternal:!0});dM.displayName="BezierEdge";DS.displayName="BezierEdgeInternal";const Bv={default:DS,straight:jS,step:AS,smoothstep:TS,simplebezier:NS},qv={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},hM=(e,n,r)=>r===be.Left?e-n:r===be.Right?e+n:e,pM=(e,n,r)=>r===be.Top?e-n:r===be.Bottom?e+n:e,Uv="react-flow__edgeupdater";function Iv({position:e,centerX:n,centerY:r,radius:l=10,onMouseDown:a,onMouseEnter:s,onMouseOut:u,type:f}){return b.jsx("circle",{onMouseDown:a,onMouseEnter:s,onMouseOut:u,className:zt([Uv,`${Uv}-${f}`]),cx:hM(n,l,e),cy:pM(r,l,e),r:l,stroke:"transparent",fill:"transparent"})}function mM({isReconnectable:e,reconnectRadius:n,edge:r,sourceX:l,sourceY:a,targetX:s,targetY:u,sourcePosition:f,targetPosition:h,onReconnect:d,onReconnectStart:m,onReconnectEnd:p,setReconnecting:y,setUpdateHover:v}){const w=pt(),k=(z,I)=>{if(z.button!==0)return;const{autoPanOnConnect:A,domNode:L,connectionMode:D,connectionRadius:U,lib:X,onConnectStart:H,cancelConnection:q,nodeLookup:ee,rfId:R,panBy:G,updateConnection:M}=w.getState(),$=I.type==="target",Q=(B,P)=>{y(!1),p==null||p(B,r,I.type,P)},K=B=>d==null?void 0:d(r,B),j=(B,P)=>{y(!0),m==null||m(z,r,I.type),H==null||H(B,P)};Rp.onPointerDown(z.nativeEvent,{autoPanOnConnect:A,connectionMode:D,connectionRadius:U,domNode:L,handleId:I.id,nodeId:I.nodeId,nodeLookup:ee,isTarget:$,edgeUpdaterType:I.type,lib:X,flowId:R,cancelConnection:q,panBy:G,isValidConnection:(...B)=>{var P,N;return((N=(P=w.getState()).isValidConnection)==null?void 0:N.call(P,...B))??!0},onConnect:K,onConnectStart:j,onConnectEnd:(...B)=>{var P,N;return(N=(P=w.getState()).onConnectEnd)==null?void 0:N.call(P,...B)},onReconnectEnd:Q,updateConnection:M,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:z.currentTarget})},S=z=>k(z,{nodeId:r.target,id:r.targetHandle??null,type:"target"}),_=z=>k(z,{nodeId:r.source,id:r.sourceHandle??null,type:"source"}),T=()=>v(!0),E=()=>v(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(Iv,{position:f,centerX:l,centerY:a,radius:n,onMouseDown:S,onMouseEnter:T,onMouseOut:E,type:"source"}),(e===!0||e==="target")&&b.jsx(Iv,{position:h,centerX:s,centerY:u,radius:n,onMouseDown:_,onMouseEnter:T,onMouseOut:E,type:"target"})]})}function gM({id:e,edgesFocusable:n,edgesReconnectable:r,elementsSelectable:l,onClick:a,onDoubleClick:s,onContextMenu:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:d,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,rfId:w,edgeTypes:k,noPanClassName:S,onError:_,disableKeyboardA11y:T}){let E=Ge(xe=>xe.edgeLookup.get(e));const z=Ge(xe=>xe.defaultEdgeOptions);E=z?{...z,...E}:E;let I=E.type||"default",A=(k==null?void 0:k[I])||Bv[I];A===void 0&&(_==null||_("011",nr.error011(I)),I="default",A=(k==null?void 0:k.default)||Bv.default);const L=!!(E.focusable||n&&typeof E.focusable>"u"),D=typeof p<"u"&&(E.reconnectable||r&&typeof E.reconnectable>"u"),U=!!(E.selectable||l&&typeof E.selectable>"u"),X=V.useRef(null),[H,q]=V.useState(!1),[ee,R]=V.useState(!1),G=pt(),{zIndex:M,sourceX:$,sourceY:Q,targetX:K,targetY:j,sourcePosition:B,targetPosition:P}=Ge(V.useCallback(xe=>{const pe=xe.nodeLookup.get(E.source),_e=xe.nodeLookup.get(E.target);if(!pe||!_e)return{zIndex:E.zIndex,...qv};const Me=az({id:e,sourceNode:pe,targetNode:_e,sourceHandle:E.sourceHandle||null,targetHandle:E.targetHandle||null,connectionMode:xe.connectionMode,onError:_});return{zIndex:JT({selected:E.selected,zIndex:E.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:xe.elevateEdgesOnSelect,zIndexMode:xe.zIndexMode}),...Me||qv}},[E.source,E.target,E.sourceHandle,E.targetHandle,E.selected,E.zIndex]),ht),N=V.useMemo(()=>E.markerStart?`url('#${Op(E.markerStart,w)}')`:void 0,[E.markerStart,w]),Y=V.useMemo(()=>E.markerEnd?`url('#${Op(E.markerEnd,w)}')`:void 0,[E.markerEnd,w]);if(E.hidden||$===null||Q===null||K===null||j===null)return null;const F=xe=>{var Ce;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:Me}=G.getState();U&&(G.setState({nodesSelectionActive:!1}),E.selected&&Me?(_e({nodes:[],edges:[E]}),(Ce=X.current)==null||Ce.blur()):pe([e])),a&&a(xe,E)},J=s?xe=>{s(xe,{...E})}:void 0,ne=u?xe=>{u(xe,{...E})}:void 0,re=f?xe=>{f(xe,{...E})}:void 0,se=h?xe=>{h(xe,{...E})}:void 0,ye=d?xe=>{d(xe,{...E})}:void 0,ve=xe=>{var pe;if(!T&&jw.includes(xe.key)&&U){const{unselectNodesAndEdges:_e,addSelectedEdges:Me}=G.getState();xe.key==="Escape"?((pe=X.current)==null||pe.blur(),_e({edges:[E]})):Me([e])}};return b.jsx("svg",{style:{zIndex:M},children:b.jsxs("g",{className:zt(["react-flow__edge",`react-flow__edge-${I}`,E.className,S,{selected:E.selected,animated:E.animated,inactive:!U&&!a,updating:H,selectable:U}]),onClick:F,onDoubleClick:J,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:ye,onKeyDown:L?ve:void 0,tabIndex:L?0:void 0,role:E.ariaRole??(L?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":E.ariaLabel===null?void 0:E.ariaLabel||`Edge from ${E.source} to ${E.target}`,"aria-describedby":L?`${uS}-${w}`:void 0,ref:X,...E.domAttributes,children:[!ee&&b.jsx(A,{id:e,source:E.source,target:E.target,type:E.type,selected:E.selected,animated:E.animated,selectable:U,deletable:E.deletable??!0,label:E.label,labelStyle:E.labelStyle,labelShowBg:E.labelShowBg,labelBgStyle:E.labelBgStyle,labelBgPadding:E.labelBgPadding,labelBgBorderRadius:E.labelBgBorderRadius,sourceX:$,sourceY:Q,targetX:K,targetY:j,sourcePosition:B,targetPosition:P,data:E.data,style:E.style,sourceHandleId:E.sourceHandle,targetHandleId:E.targetHandle,markerStart:N,markerEnd:Y,pathOptions:"pathOptions"in E?E.pathOptions:void 0,interactionWidth:E.interactionWidth}),D&&b.jsx(mM,{edge:E,isReconnectable:D,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,sourceX:$,sourceY:Q,targetX:K,targetY:j,sourcePosition:B,targetPosition:P,setUpdateHover:q,setReconnecting:R})]})})}var yM=V.memo(gM);const xM=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function RS({defaultMarkerColor:e,onlyRenderVisibleElements:n,rfId:r,edgeTypes:l,noPanClassName:a,onReconnect:s,onEdgeContextMenu:u,onEdgeMouseEnter:f,onEdgeMouseMove:h,onEdgeMouseLeave:d,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,disableKeyboardA11y:k}){const{edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,onError:E}=Ge(xM,ht),z=nM(n);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(oM,{defaultColor:e,rfId:r}),z.map(I=>b.jsx(yM,{id:I,edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,noPanClassName:a,onReconnect:s,onContextMenu:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:d,onClick:m,reconnectRadius:p,onDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,rfId:r,onError:E,edgeTypes:l,disableKeyboardA11y:k},I))]})}RS.displayName="EdgeRenderer";const vM=V.memo(RS),bM=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function wM({children:e}){const n=Ge(bM);return b.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}function SM(e){const n=Fo(),r=V.useRef(!1);V.useEffect(()=>{!r.current&&n.viewportInitialized&&e&&(setTimeout(()=>e(n),1),r.current=!0)},[e,n.viewportInitialized])}const _M=e=>{var n;return(n=e.panZoom)==null?void 0:n.syncViewport};function EM(e){const n=Ge(_M),r=pt();return V.useEffect(()=>{e&&(n==null||n(e),r.setState({transform:[e.x,e.y,e.zoom]}))},[e,n]),null}function NM(e){return e.connection.inProgress?{...e.connection,to:Xo(e.connection.to,e.transform)}:{...e.connection}}function kM(e){return NM}function CM(e){const n=kM();return Ge(n,ht)}const TM=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function zM({containerStyle:e,style:n,type:r,component:l}){const{nodesConnectable:a,width:s,height:u,isValid:f,inProgress:h}=Ge(TM,ht);return!(s&&a&&h)?null:b.jsx("svg",{style:e,width:s,height:u,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:zt(["react-flow__connection",Rw(f)]),children:b.jsx(LS,{style:n,type:r,CustomComponent:l,isValid:f})})})}const LS=({style:e,type:n=pi.Bezier,CustomComponent:r,isValid:l})=>{const{inProgress:a,from:s,fromNode:u,fromHandle:f,fromPosition:h,to:d,toNode:m,toHandle:p,toPosition:y,pointer:v}=CM();if(!a)return;if(r)return b.jsx(r,{connectionLineType:n,connectionLineStyle:e,fromNode:u,fromHandle:f,fromX:s.x,fromY:s.y,toX:d.x,toY:d.y,fromPosition:h,toPosition:y,connectionStatus:Rw(l),toNode:m,toHandle:p,pointer:v});let w="";const k={sourceX:s.x,sourceY:s.y,sourcePosition:h,targetX:d.x,targetY:d.y,targetPosition:y};switch(n){case pi.Bezier:[w]=cm(k);break;case pi.SimpleBezier:[w]=_S(k);break;case pi.Step:[w]=jp({...k,borderRadius:0});break;case pi.SmoothStep:[w]=jp(k);break;default:[w]=Fw(k)}return b.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};LS.displayName="ConnectionLine";const AM={};function Vv(e=AM){V.useRef(e),pt(),V.useEffect(()=>{},[e])}function MM(){pt(),V.useRef(!1),V.useEffect(()=>{},[])}function HS({nodeTypes:e,edgeTypes:n,onInit:r,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:s,onEdgeDoubleClick:u,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:d,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:y,onSelectionEnd:v,connectionLineType:w,connectionLineStyle:k,connectionLineComponent:S,connectionLineContainerStyle:_,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:L,deleteKeyCode:D,onlyRenderVisibleElements:U,elementsSelectable:X,defaultViewport:H,translateExtent:q,minZoom:ee,maxZoom:R,preventScrolling:G,defaultMarkerColor:M,zoomOnScroll:$,zoomOnPinch:Q,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:B,zoomOnDoubleClick:P,panOnDrag:N,onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:ye,nodeClickDistance:ve,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or,viewport:ue,onViewportChange:ge}){return Vv(e),Vv(n),MM(),SM(r),EM(ue),b.jsx(PA,{onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:ye,deleteKeyCode:D,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:L,elementsSelectable:X,zoomOnScroll:$,zoomOnPinch:Q,zoomOnDoubleClick:P,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:B,panOnDrag:N,defaultViewport:H,translateExtent:q,minZoom:ee,maxZoom:R,onSelectionContextMenu:p,preventScrolling:G,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,onViewportChange:ge,isControlledViewport:!!ue,children:b.jsxs(wM,{children:[b.jsx(vM,{edgeTypes:n,onEdgeClick:a,onEdgeDoubleClick:u,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,onlyRenderVisibleElements:U,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,defaultMarkerColor:M,noPanClassName:Sn,disableKeyboardA11y:jn,rfId:Or}),b.jsx(zM,{style:k,type:w,component:S,containerStyle:_}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(tM,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:s,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:d,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:U,noPanClassName:Sn,noDragClassName:It,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}HS.displayName="GraphView";const jM=V.memo(HS),Gv=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h=.5,maxZoom:d=2,nodeOrigin:m,nodeExtent:p,zIndexMode:y="basic"}={})=>{const v=new Map,w=new Map,k=new Map,S=new Map,_=l??n??[],T=r??e??[],E=m??[0,0],z=p??Oo;Kw(k,S,_);const I=Dp(T,v,w,{nodeOrigin:E,nodeExtent:z,zIndexMode:y});let A=[0,0,1];if(u&&a&&s){const L=$o(v,{filter:H=>!!((H.width||H.initialWidth)&&(H.height||H.initialHeight))}),{x:D,y:U,zoom:X}=sm(L,a,s,h,d,(f==null?void 0:f.padding)??.1);A=[D,U,X]}return{rfId:"1",width:a??0,height:s??0,transform:A,nodes:T,nodesInitialized:I,nodeLookup:v,parentLookup:w,edges:_,edgeLookup:S,connectionLookup:k,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:r!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:h,maxZoom:d,translateExtent:Oo,nodeExtent:z,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ia.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:E,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:f,fitViewResolver:null,connection:{...Dw},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:PT,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Ow,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},OM=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h,maxZoom:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y})=>Zz((v,w)=>{async function k(){const{nodeLookup:S,panZoom:_,fitViewOptions:T,fitViewResolver:E,width:z,height:I,minZoom:A,maxZoom:L}=w();_&&(await YT({nodes:S,width:z,height:I,panZoom:_,minZoom:A,maxZoom:L},T),E==null||E.resolve(!0),v({fitViewResolver:null}))}return{...Gv({nodes:e,edges:n,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h,maxZoom:d,nodeOrigin:m,nodeExtent:p,defaultNodes:r,defaultEdges:l,zIndexMode:y}),setNodes:S=>{const{nodeLookup:_,parentLookup:T,nodeOrigin:E,elevateNodesOnSelect:z,fitViewQueued:I,zIndexMode:A}=w(),L=Dp(S,_,T,{nodeOrigin:E,nodeExtent:p,elevateNodesOnSelect:z,checkEquality:!0,zIndexMode:A});I&&L?(k(),v({nodes:S,nodesInitialized:L,fitViewQueued:!1,fitViewOptions:void 0})):v({nodes:S,nodesInitialized:L})},setEdges:S=>{const{connectionLookup:_,edgeLookup:T}=w();Kw(_,T,S),v({edges:S})},setDefaultNodesAndEdges:(S,_)=>{if(S){const{setNodes:T}=w();T(S),v({hasDefaultNodes:!0})}if(_){const{setEdges:T}=w();T(_),v({hasDefaultEdges:!0})}},updateNodeInternals:S=>{const{triggerNodeChanges:_,nodeLookup:T,parentLookup:E,domNode:z,nodeOrigin:I,nodeExtent:A,debug:L,fitViewQueued:D,zIndexMode:U}=w(),{changes:X,updatedInternals:H}=pz(S,T,E,z,I,A,U);H&&(cz(T,E,{nodeOrigin:I,nodeExtent:A,zIndexMode:U}),D?(k(),v({fitViewQueued:!1,fitViewOptions:void 0})):v({}),(X==null?void 0:X.length)>0&&(L&&console.log("React Flow: trigger node changes",X),_==null||_(X)))},updateNodePositions:(S,_=!1)=>{const T=[];let E=[];const{nodeLookup:z,triggerNodeChanges:I,connection:A,updateConnection:L,onNodesChangeMiddlewareMap:D}=w();for(const[U,X]of S){const H=z.get(U),q=!!(H!=null&&H.expandParent&&(H!=null&&H.parentId)&&(X!=null&&X.position)),ee={id:U,type:"position",position:q?{x:Math.max(0,X.position.x),y:Math.max(0,X.position.y)}:X.position,dragging:_};if(H&&A.inProgress&&A.fromNode.id===H.id){const R=Zi(H,A.fromHandle,be.Left,!0);L({...A,from:R})}q&&H.parentId&&T.push({id:U,parentId:H.parentId,rect:{...X.internals.positionAbsolute,width:X.measured.width??0,height:X.measured.height??0}}),E.push(ee)}if(T.length>0){const{parentLookup:U,nodeOrigin:X}=w(),H=mm(T,z,U,X);E.push(...H)}for(const U of D.values())E=U(E);I(E)},triggerNodeChanges:S=>{const{onNodesChange:_,setNodes:T,nodes:E,hasDefaultNodes:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=dS(S,E);T(A)}I&&console.log("React Flow: trigger node changes",S),_==null||_(S)}},triggerEdgeChanges:S=>{const{onEdgesChange:_,setEdges:T,edges:E,hasDefaultEdges:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=hS(S,E);T(A)}I&&console.log("React Flow: trigger edge changes",S),_==null||_(S)}},addSelectedNodes:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(L=>qi(L,!0));z(A);return}z(Ql(E,new Set([...S]),!0)),I(Ql(T))},addSelectedEdges:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(L=>qi(L,!0));I(A);return}I(Ql(T,new Set([...S]))),z(Ql(E,new Set,!0))},unselectNodesAndEdges:({nodes:S,edges:_}={})=>{const{edges:T,nodes:E,nodeLookup:z,triggerNodeChanges:I,triggerEdgeChanges:A}=w(),L=S||E,D=_||T,U=[];for(const H of L){if(!H.selected)continue;const q=z.get(H.id);q&&(q.selected=!1),U.push(qi(H.id,!1))}const X=[];for(const H of D)H.selected&&X.push(qi(H.id,!1));I(U),A(X)},setMinZoom:S=>{const{panZoom:_,maxZoom:T}=w();_==null||_.setScaleExtent([S,T]),v({minZoom:S})},setMaxZoom:S=>{const{panZoom:_,minZoom:T}=w();_==null||_.setScaleExtent([T,S]),v({maxZoom:S})},setTranslateExtent:S=>{var _;(_=w().panZoom)==null||_.setTranslateExtent(S),v({translateExtent:S})},resetSelectedElements:()=>{const{edges:S,nodes:_,triggerNodeChanges:T,triggerEdgeChanges:E,elementsSelectable:z}=w();if(!z)return;const I=_.reduce((L,D)=>D.selected?[...L,qi(D.id,!1)]:L,[]),A=S.reduce((L,D)=>D.selected?[...L,qi(D.id,!1)]:L,[]);T(I),E(A)},setNodeExtent:S=>{const{nodes:_,nodeLookup:T,parentLookup:E,nodeOrigin:z,elevateNodesOnSelect:I,nodeExtent:A,zIndexMode:L}=w();S[0][0]===A[0][0]&&S[0][1]===A[0][1]&&S[1][0]===A[1][0]&&S[1][1]===A[1][1]||(Dp(_,T,E,{nodeOrigin:z,nodeExtent:S,elevateNodesOnSelect:I,checkEquality:!1,zIndexMode:L}),v({nodeExtent:S}))},panBy:S=>{const{transform:_,width:T,height:E,panZoom:z,translateExtent:I}=w();return mz({delta:S,panZoom:z,transform:_,translateExtent:I,width:T,height:E})},setCenter:async(S,_,T)=>{const{width:E,height:z,maxZoom:I,panZoom:A}=w();if(!A)return Promise.resolve(!1);const L=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:I;return await A.setViewport({x:E/2-S*L,y:z/2-_*L,zoom:L},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{v({connection:{...Dw}})},updateConnection:S=>{v({connection:S})},reset:()=>v({...Gv()})}},Object.is);function DM({initialNodes:e,initialEdges:n,defaultNodes:r,defaultEdges:l,initialWidth:a,initialHeight:s,initialMinZoom:u,initialMaxZoom:f,initialFitViewOptions:h,fitView:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y,children:v}){const[w]=V.useState(()=>OM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:d,minZoom:u,maxZoom:f,fitViewOptions:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y}));return b.jsx(Jz,{value:w,children:b.jsx(wA,{children:v})})}function RM({children:e,nodes:n,edges:r,defaultNodes:l,defaultEdges:a,width:s,height:u,fitView:f,fitViewOptions:h,minZoom:d,maxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v}){return V.useContext(Sc)?b.jsx(b.Fragment,{children:e}):b.jsx(DM,{initialNodes:n,initialEdges:r,defaultNodes:l,defaultEdges:a,initialWidth:s,initialHeight:u,fitView:f,initialFitViewOptions:h,initialMinZoom:d,initialMaxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v,children:e})}const LM={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function HM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,className:a,nodeTypes:s,edgeTypes:u,onNodeClick:f,onEdgeClick:h,onInit:d,onMove:m,onMoveStart:p,onMoveEnd:y,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,onNodeDragStart:L,onNodeDrag:D,onNodeDragStop:U,onNodesDelete:X,onEdgesDelete:H,onDelete:q,onSelectionChange:ee,onSelectionDragStart:R,onSelectionDrag:G,onSelectionDragStop:M,onSelectionContextMenu:$,onSelectionStart:Q,onSelectionEnd:K,onBeforeDelete:j,connectionMode:B,connectionLineType:P=pi.Bezier,connectionLineStyle:N,connectionLineComponent:Y,connectionLineContainerStyle:F,deleteKeyCode:J="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Do.Full,panActivationKeyCode:ye="Space",multiSelectionKeyCode:ve=Lo()?"Meta":"Control",zoomActivationKeyCode:xe=Lo()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Ce,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,nodeOrigin:Rt=cS,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt=!0,defaultViewport:Or=fA,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=Oo,preventScrolling:Re=!0,nodeExtent:Ye,defaultMarkerColor:Xt="#b1b1b7",zoomOnScroll:On=!0,zoomOnPinch:Lt=!0,panOnScroll:xt=!1,panOnScrollSpeed:Vt=.5,panOnScrollMode:Je=$i.Free,zoomOnDoubleClick:Pn=!0,panOnDrag:un=!0,onPaneClick:zc,onPaneMouseEnter:nl,onPaneMouseMove:rl,onPaneMouseLeave:il,onPaneScroll:lr,onPaneContextMenu:ll,paneClickDistance:yi=1,nodeClickDistance:Ac=0,children:Wo,onReconnect:fa,onReconnectStart:xi,onReconnectEnd:Mc,onEdgeContextMenu:es,onEdgeDoubleClick:ts,onEdgeMouseEnter:ns,onEdgeMouseMove:da,onEdgeMouseLeave:ha,reconnectRadius:rs=10,onNodesChange:is,onEdgesChange:Xn,noDragClassName:jt="nodrag",noWheelClassName:Gt="nowheel",noPanClassName:ar="nopan",fitView:al,fitViewOptions:ls,connectOnClick:jc,attributionPosition:as,proOptions:vi,defaultEdgeOptions:pa,elevateNodesOnSelect:Dr=!0,elevateEdgesOnSelect:Rr=!1,disableKeyboardA11y:Lr=!1,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:os,connectionRadius:ss,isValidConnection:or,onError:Br,style:Oc,id:ma,nodeDragThreshold:us,connectionDragThreshold:Dc,viewport:ol,onViewportChange:sl,width:Dn,height:Zt,colorMode:cs="light",debug:Rc,onScroll:qr,ariaLabelConfig:fs,zIndexMode:bi="basic",...Lc},Kt){const wi=ma||"1",ds=mA(cs),ga=V.useCallback(sr=>{sr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),qr==null||qr(sr)},[qr]);return b.jsx("div",{"data-testid":"rf__wrapper",...Lc,onScroll:ga,style:{...Oc,...LM},ref:Kt,className:zt(["react-flow",a,ds]),id:ma,role:"application",children:b.jsxs(RM,{nodes:e,edges:n,width:Dn,height:Zt,fitView:al,fitViewOptions:ls,minZoom:ue,maxZoom:ge,nodeOrigin:Rt,nodeExtent:Ye,zIndexMode:bi,children:[b.jsx(jM,{onInit:d,onNodeClick:f,onEdgeClick:h,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,nodeTypes:s,edgeTypes:u,connectionLineType:P,connectionLineStyle:N,connectionLineComponent:Y,connectionLineContainerStyle:F,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:J,multiSelectionKeyCode:ve,panActivationKeyCode:ye,zoomActivationKeyCode:xe,onlyRenderVisibleElements:Me,defaultViewport:Or,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:Re,zoomOnScroll:On,zoomOnPinch:Lt,zoomOnDoubleClick:Pn,panOnScroll:xt,panOnScrollSpeed:Vt,panOnScrollMode:Je,panOnDrag:un,onPaneClick:zc,onPaneMouseEnter:nl,onPaneMouseMove:rl,onPaneMouseLeave:il,onPaneScroll:lr,onPaneContextMenu:ll,paneClickDistance:yi,nodeClickDistance:Ac,onSelectionContextMenu:$,onSelectionStart:Q,onSelectionEnd:K,onReconnect:fa,onReconnectStart:xi,onReconnectEnd:Mc,onEdgeContextMenu:es,onEdgeDoubleClick:ts,onEdgeMouseEnter:ns,onEdgeMouseMove:da,onEdgeMouseLeave:ha,reconnectRadius:rs,defaultMarkerColor:Xt,noDragClassName:jt,noWheelClassName:Gt,noPanClassName:ar,rfId:wi,disableKeyboardA11y:Lr,nodeExtent:Ye,viewport:ol,onViewportChange:sl}),b.jsx(pA,{nodes:e,edges:n,defaultNodes:r,defaultEdges:l,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt,elevateNodesOnSelect:Dr,elevateEdgesOnSelect:Rr,minZoom:ue,maxZoom:ge,nodeExtent:Ye,onNodesChange:is,onEdgesChange:Xn,snapToGrid:pe,snapGrid:_e,connectionMode:B,translateExtent:Ne,connectOnClick:jc,defaultEdgeOptions:pa,fitView:al,fitViewOptions:ls,onNodesDelete:X,onEdgesDelete:H,onDelete:q,onNodeDragStart:L,onNodeDrag:D,onNodeDragStop:U,onSelectionDrag:G,onSelectionDragStart:R,onSelectionDragStop:M,onMove:m,onMoveStart:p,onMoveEnd:y,noPanClassName:ar,nodeOrigin:Rt,rfId:wi,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:os,onError:Br,connectionRadius:ss,isValidConnection:or,selectNodesOnDrag:Ce,nodeDragThreshold:us,connectionDragThreshold:Dc,onBeforeDelete:j,debug:Rc,ariaLabelConfig:fs,zIndexMode:bi}),b.jsx(cA,{onSelectionChange:ee}),Wo,b.jsx(lA,{proOptions:vi,position:as}),b.jsx(iA,{rfId:wi,disableKeyboardA11y:Lr})]})})}var BM=pS(HM);const qM=e=>{var n;return(n=e.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function UM({children:e}){const n=Ge(qM);return n?Kz.createPortal(e,n):null}function IM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>dS(a,s)),[]);return[n,r,l]}function VM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>hS(a,s)),[]);return[n,r,l]}function GM({dimensions:e,lineWidth:n,variant:r,className:l}){return b.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:zt(["react-flow__background-pattern",r,l])})}function YM({radius:e,className:n}){return b.jsx("circle",{cx:e,cy:e,r:e,className:zt(["react-flow__background-pattern","dots",n])})}var zr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(zr||(zr={}));const $M={[zr.Dots]:1,[zr.Lines]:1,[zr.Cross]:6},PM=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function BS({id:e,variant:n=zr.Dots,gap:r=20,size:l,lineWidth:a=1,offset:s=0,color:u,bgColor:f,style:h,className:d,patternClassName:m}){const p=V.useRef(null),{transform:y,patternId:v}=Ge(PM,ht),w=l||$M[n],k=n===zr.Dots,S=n===zr.Cross,_=Array.isArray(r)?r:[r,r],T=[_[0]*y[2]||1,_[1]*y[2]||1],E=w*y[2],z=Array.isArray(s)?s:[s,s],I=S?[E,E]:T,A=[z[0]*y[2]||1+I[0]/2,z[1]*y[2]||1+I[1]/2],L=`${v}${e||""}`;return b.jsxs("svg",{className:zt(["react-flow__background",d]),style:{...h,...Ec,"--xy-background-color-props":f,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[b.jsx("pattern",{id:L,x:y[0]%T[0],y:y[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${A[0]},-${A[1]})`,children:k?b.jsx(YM,{radius:E/2,className:m}):b.jsx(GM,{dimensions:I,lineWidth:a,variant:n,className:m})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${L})`})]})}BS.displayName="Background";const XM=V.memo(BS);function FM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function QM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function ZM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function KM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function JM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Ru({children:e,className:n,...r}){return b.jsx("button",{type:"button",className:zt(["react-flow__controls-button",n]),...r,children:e})}const WM=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function qS({style:e,showZoom:n=!0,showFitView:r=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:s,onZoomOut:u,onFitView:f,onInteractiveChange:h,className:d,children:m,position:p="bottom-left",orientation:y="vertical","aria-label":v}){const w=pt(),{isInteractive:k,minZoomReached:S,maxZoomReached:_,ariaLabelConfig:T}=Ge(WM,ht),{zoomIn:E,zoomOut:z,fitView:I}=Fo(),A=()=>{E(),s==null||s()},L=()=>{z(),u==null||u()},D=()=>{I(a),f==null||f()},U=()=>{w.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),h==null||h(!k)},X=y==="horizontal"?"horizontal":"vertical";return b.jsxs(_c,{className:zt(["react-flow__controls",X,d]),position:p,style:e,"data-testid":"rf__controls","aria-label":v??T["controls.ariaLabel"],children:[n&&b.jsxs(b.Fragment,{children:[b.jsx(Ru,{onClick:A,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:_,children:b.jsx(FM,{})}),b.jsx(Ru,{onClick:L,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:S,children:b.jsx(QM,{})})]}),r&&b.jsx(Ru,{className:"react-flow__controls-fitview",onClick:D,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:b.jsx(ZM,{})}),l&&b.jsx(Ru,{className:"react-flow__controls-interactive",onClick:U,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:k?b.jsx(JM,{}):b.jsx(KM,{})}),m]})}qS.displayName="Controls";const ej=V.memo(qS);function tj({id:e,x:n,y:r,width:l,height:a,style:s,color:u,strokeColor:f,strokeWidth:h,className:d,borderRadius:m,shapeRendering:p,selected:y,onClick:v}){const{background:w,backgroundColor:k}=s||{},S=u||w||k;return b.jsx("rect",{className:zt(["react-flow__minimap-node",{selected:y},d]),x:n,y:r,rx:m,ry:m,width:l,height:a,style:{fill:S,stroke:f,strokeWidth:h},shapeRendering:p,onClick:v?_=>v(_,e):void 0})}const nj=V.memo(tj),rj=e=>e.nodes.map(n=>n.id),fh=e=>e instanceof Function?e:()=>e;function ij({nodeStrokeColor:e,nodeColor:n,nodeClassName:r="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:s=nj,onClick:u}){const f=Ge(rj,ht),h=fh(n),d=fh(e),m=fh(r),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:f.map(y=>b.jsx(aj,{id:y,nodeColorFunc:h,nodeStrokeColorFunc:d,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:s,onClick:u,shapeRendering:p},y))})}function lj({id:e,nodeColorFunc:n,nodeStrokeColorFunc:r,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:u,NodeComponent:f,onClick:h}){const{node:d,x:m,y:p,width:y,height:v}=Ge(w=>{const k=w.nodeLookup.get(e);if(!k)return{node:void 0,x:0,y:0,width:0,height:0};const S=k.internals.userNode,{x:_,y:T}=k.internals.positionAbsolute,{width:E,height:z}=jr(S);return{node:S,x:_,y:T,width:E,height:z}},ht);return!d||d.hidden||!Iw(d)?null:b.jsx(f,{x:m,y:p,width:y,height:v,style:d.style,selected:!!d.selected,className:l(d),color:n(d),borderRadius:a,strokeColor:r(d),strokeWidth:s,shapeRendering:u,onClick:h,id:d.id})}const aj=V.memo(lj);var oj=V.memo(ij);const sj=200,uj=150,cj=e=>!e.hidden,fj=e=>{const n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:e.nodeLookup.size>0?Uw($o(e.nodeLookup,{filter:cj}),n):n,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},dj="react-flow__minimap-desc";function US({style:e,className:n,nodeStrokeColor:r,nodeColor:l,nodeClassName:a="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:f,bgColor:h,maskColor:d,maskStrokeColor:m,maskStrokeWidth:p,position:y="bottom-right",onClick:v,onNodeClick:w,pannable:k=!1,zoomable:S=!1,ariaLabel:_,inversePan:T,zoomStep:E=1,offsetScale:z=5}){const I=pt(),A=V.useRef(null),{boundingRect:L,viewBB:D,rfId:U,panZoom:X,translateExtent:H,flowWidth:q,flowHeight:ee,ariaLabelConfig:R}=Ge(fj,ht),G=(e==null?void 0:e.width)??sj,M=(e==null?void 0:e.height)??uj,$=L.width/G,Q=L.height/M,K=Math.max($,Q),j=K*G,B=K*M,P=z*K,N=L.x-(j-L.width)/2-P,Y=L.y-(B-L.height)/2-P,F=j+P*2,J=B+P*2,ne=`${dj}-${U}`,re=V.useRef(0),se=V.useRef();re.current=K,V.useEffect(()=>{if(A.current&&X)return se.current=Ez({domNode:A.current,panZoom:X,getTransform:()=>I.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[X]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:H,width:q,height:ee,inversePan:T,pannable:k,zoomStep:E,zoomable:S})},[k,S,T,E,H,q,ee]);const ye=v?pe=>{var Ce;const[_e,Me]=((Ce=se.current)==null?void 0:Ce.pointer(pe))||[0,0];v(pe,{x:_e,y:Me})}:void 0,ve=w?V.useCallback((pe,_e)=>{const Me=I.getState().nodeLookup.get(_e).internals.userNode;w(pe,Me)},[]):void 0,xe=_??R["minimap.ariaLabel"];return b.jsx(_c,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*K:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:zt(["react-flow__minimap",n]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:G,height:M,viewBox:`${N} ${Y} ${F} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:A,onClick:ye,children:[xe&&b.jsx("title",{id:ne,children:xe}),b.jsx(oj,{onClick:ve,nodeColor:l,nodeStrokeColor:r,nodeBorderRadius:s,nodeClassName:a,nodeStrokeWidth:u,nodeComponent:f}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${N-P},${Y-P}h${F+P*2}v${J+P*2}h${-F-P*2}z + M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}US.displayName="MiniMap";const hj=V.memo(US),pj=e=>n=>e?`${Math.max(1/n.transform[2],1)}`:void 0,mj={[sa.Line]:"right",[sa.Handle]:"bottom-right"};function gj({nodeId:e,position:n,variant:r=sa.Handle,className:l,style:a=void 0,children:s,color:u,minWidth:f=10,minHeight:h=10,maxWidth:d=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:y,autoScale:v=!0,shouldResize:w,onResizeStart:k,onResize:S,onResizeEnd:_}){const T=xS(),E=typeof e=="string"?e:T,z=pt(),I=V.useRef(null),A=r===sa.Handle,L=Ge(V.useCallback(pj(A&&v),[A,v]),ht),D=V.useRef(null),U=n??mj[r];V.useEffect(()=>{if(!(!I.current||!E))return D.current||(D.current=Bz({domNode:I.current,nodeId:E,getStoreItems:()=>{const{nodeLookup:H,transform:q,snapGrid:ee,snapToGrid:R,nodeOrigin:G,domNode:M}=z.getState();return{nodeLookup:H,transform:q,snapGrid:ee,snapToGrid:R,nodeOrigin:G,paneDomNode:M}},onChange:(H,q)=>{const{triggerNodeChanges:ee,nodeLookup:R,parentLookup:G,nodeOrigin:M}=z.getState(),$=[],Q={x:H.x,y:H.y},K=R.get(E);if(K&&K.expandParent&&K.parentId){const j=K.origin??M,B=H.width??K.measured.width??0,P=H.height??K.measured.height??0,N={id:K.id,parentId:K.parentId,rect:{width:B,height:P,...Vw({x:H.x??K.position.x,y:H.y??K.position.y},{width:B,height:P},K.parentId,R,j)}},Y=mm([N],R,G,M);$.push(...Y),Q.x=H.x?Math.max(j[0]*B,H.x):void 0,Q.y=H.y?Math.max(j[1]*P,H.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const j={id:E,type:"position",position:{...Q}};$.push(j)}if(H.width!==void 0&&H.height!==void 0){const B={id:E,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:H.width,height:H.height}};$.push(B)}for(const j of q){const B={...j,type:"position"};$.push(B)}ee($)},onEnd:({width:H,height:q})=>{const ee={id:E,type:"dimensions",resizing:!1,dimensions:{width:H,height:q}};z.getState().triggerNodeChanges([ee])}})),D.current.update({controlPosition:U,boundaries:{minWidth:f,minHeight:h,maxWidth:d,maxHeight:m},keepAspectRatio:p,resizeDirection:y,onResizeStart:k,onResize:S,onResizeEnd:_,shouldResize:w}),()=>{var H;(H=D.current)==null||H.destroy()}},[U,f,h,d,m,p,k,S,_,w]);const X=U.split("-");return b.jsx("div",{className:zt(["react-flow__resize-control","nodrag",...X,r,l]),ref:I,style:{...a,scale:L,...u&&{[A?"backgroundColor":"borderColor"]:u}},children:s})}V.memo(gj);function Zo(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;ll.viewContextPath),n=he(l=>l.nodes),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.nodes)??n},[e,n,r])}function yj(){const e=he(l=>l.viewContextPath),n=he(l=>l.groupProgress),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.groupProgress)??n},[e,n,r])}function xj(){const e=he(l=>l.viewContextPath),n=he(l=>l.highlightedEdges),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.highlightedEdges)??n},[e,n,r])}function IS(){const e=he(r=>r.viewContextPath),n=he(r=>r.subworkflowContexts);return V.useMemo(()=>{var r;return e.length===0?n:((r=Zo(n,e))==null?void 0:r.children)??[]},[e,n])}function vj(){const e=he(d=>d.viewContextPath),n=he(d=>d.agents),r=he(d=>d.routes),l=he(d=>d.parallelGroups),a=he(d=>d.forEachGroups),s=he(d=>d.nodes),u=he(d=>d.groupProgress),f=he(d=>d.entryPoint),h=he(d=>d.subworkflowContexts);return V.useMemo(()=>{if(e.length===0)return{agents:n,routes:r,parallelGroups:l,forEachGroups:a,nodes:s,groupProgress:u,entryPoint:f,subworkflowContexts:h};const d=Zo(h,e);return d?{agents:d.agents,routes:d.routes,parallelGroups:d.parallelGroups,forEachGroups:d.forEachGroups,nodes:d.nodes,groupProgress:d.groupProgress,entryPoint:d.entryPoint,subworkflowContexts:d.children}:{agents:n,routes:r,parallelGroups:l,forEachGroups:a,nodes:s,groupProgress:u,entryPoint:f,subworkflowContexts:h}},[e,n,r,l,a,s,u,f,h])}var dh,Yv;function ym(){if(Yv)return dh;Yv=1;var e="\0",n="\0",r="";class l{constructor(m){kt(this,"_isDirected",!0);kt(this,"_isMultigraph",!1);kt(this,"_isCompound",!1);kt(this,"_label");kt(this,"_defaultNodeLabelFn",()=>{});kt(this,"_defaultEdgeLabelFn",()=>{});kt(this,"_nodes",{});kt(this,"_in",{});kt(this,"_preds",{});kt(this,"_out",{});kt(this,"_sucs",{});kt(this,"_edgeObjs",{});kt(this,"_edgeLabels",{});kt(this,"_nodeCount",0);kt(this,"_edgeCount",0);kt(this,"_parent");kt(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var y=arguments,v=this;return m.forEach(function(w){y.length>1?v.setNode(w,p):v.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=n,this._children[m]={},this._children[n][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var y=v=>p.removeEdge(p._edgeObjs[v]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(v){p.setParent(v)}),delete this._children[m]),Object.keys(this._in[m]).forEach(y),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(y),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=n;else{p+="";for(var y=p;y!==void 0;y=this.parent(y))if(y===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==n)return p}}children(m=n){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===n)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const v=new Set(p);for(var y of this.successors(m))v.add(y);return Array.from(v.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var y=this;Object.entries(this._nodes).forEach(function([k,S]){m(k)&&p.setNode(k,S)}),Object.values(this._edgeObjs).forEach(function(k){p.hasNode(k.v)&&p.hasNode(k.w)&&p.setEdge(k,y.edge(k))});var v={};function w(k){var S=y.parent(k);return S===void 0||p.hasNode(S)?(v[k]=S,S):S in v?v[S]:w(S)}return this._isCompound&&p.nodes().forEach(k=>p.setParent(k,w(k))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var y=this,v=arguments;return m.reduce(function(w,k){return v.length>1?y.setEdge(w,k,p):y.setEdge(w,k),k}),this}setEdge(){var m,p,y,v,w=!1,k=arguments[0];typeof k=="object"&&k!==null&&"v"in k?(m=k.v,p=k.w,y=k.name,arguments.length===2&&(v=arguments[1],w=!0)):(m=k,p=arguments[1],y=arguments[3],arguments.length>2&&(v=arguments[2],w=!0)),m=""+m,p=""+p,y!==void 0&&(y=""+y);var S=u(this._isDirected,m,p,y);if(Object.hasOwn(this._edgeLabels,S))return w&&(this._edgeLabels[S]=v),this;if(y!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[S]=w?v:this._defaultEdgeLabelFn(m,p,y);var _=f(this._isDirected,m,p,y);return m=_.v,p=_.w,Object.freeze(_),this._edgeObjs[S]=_,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][S]=_,this._out[m][S]=_,this._edgeCount++,this}edge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return this._edgeLabels[v]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return Object.hasOwn(this._edgeLabels,v)}removeEdge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y),w=this._edgeObjs[v];return w&&(m=w.v,p=w.w,delete this._edgeLabels[v],delete this._edgeObjs[v],s(this._preds[p],m),s(this._sucs[m],p),delete this._in[p][v],delete this._out[m][v],this._edgeCount--),this}inEdges(m,p){var y=this._in[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.v===p):v}}outEdges(m,p){var y=this._out[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.w===p):v}}nodeEdges(m,p){var y=this.inEdges(m,p);if(y)return y.concat(this.outEdges(m,p))}}function a(d,m){d[m]?d[m]++:d[m]=1}function s(d,m){--d[m]||delete d[m]}function u(d,m,p,y){var v=""+m,w=""+p;if(!d&&v>w){var k=v;v=w,w=k}return v+r+w+r+(y===void 0?e:y)}function f(d,m,p,y){var v=""+m,w=""+p;if(!d&&v>w){var k=v;v=w,w=k}var S={v,w};return y&&(S.name=y),S}function h(d,m){return u(d,m.v,m.w,m.name)}return dh=l,dh}var hh,$v;function bj(){return $v||($v=1,hh="2.2.4"),hh}var ph,Pv;function wj(){return Pv||(Pv=1,ph={Graph:ym(),version:bj()}),ph}var mh,Xv;function Sj(){if(Xv)return mh;Xv=1;var e=ym();mh={write:n,read:a};function n(s){var u={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:r(s),edges:l(s)};return s.graph()!==void 0&&(u.value=structuredClone(s.graph())),u}function r(s){return s.nodes().map(function(u){var f=s.node(u),h=s.parent(u),d={v:u};return f!==void 0&&(d.value=f),h!==void 0&&(d.parent=h),d})}function l(s){return s.edges().map(function(u){var f=s.edge(u),h={v:u.v,w:u.w};return u.name!==void 0&&(h.name=u.name),f!==void 0&&(h.value=f),h})}function a(s){var u=new e(s.options).setGraph(s.value);return s.nodes.forEach(function(f){u.setNode(f.v,f.value),f.parent&&u.setParent(f.v,f.parent)}),s.edges.forEach(function(f){u.setEdge({v:f.v,w:f.w,name:f.name},f.value)}),u}return mh}var gh,Fv;function _j(){if(Fv)return gh;Fv=1,gh=e;function e(n){var r={},l=[],a;function s(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),n.successors(u).forEach(s),n.predecessors(u).forEach(s))}return n.nodes().forEach(function(u){a=[],s(u),a.length&&l.push(a)}),l}return gh}var yh,Qv;function VS(){if(Qv)return yh;Qv=1;class e{constructor(){kt(this,"_arr",[]);kt(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var s=this._arr,u=s.length;return a[r]=u,s.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,s=a+1,u=r;a>1,!(l[s].priority1;function r(a,s,u,f){return l(a,String(s),u||n,f||function(h){return a.outEdges(h)})}function l(a,s,u,f){var h={},d=new e,m,p,y=function(v){var w=v.v!==m?v.v:v.w,k=h[w],S=u(v),_=p.distance+S;if(S<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+S);_0&&(m=d.removeMin(),p=h[m],p.distance!==Number.POSITIVE_INFINITY);)f(m).forEach(y);return h}return xh}var vh,Kv;function Ej(){if(Kv)return vh;Kv=1;var e=GS();vh=n;function n(r,l,a){return r.nodes().reduce(function(s,u){return s[u]=e(r,u,l,a),s},{})}return vh}var bh,Jv;function YS(){if(Jv)return bh;Jv=1,bh=e;function e(n){var r=0,l=[],a={},s=[];function u(f){var h=a[f]={onStack:!0,lowlink:r,index:r++};if(l.push(f),n.successors(f).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(h.lowlink=Math.min(h.lowlink,a[p].index)):(u(p),h.lowlink=Math.min(h.lowlink,a[p].lowlink))}),h.lowlink===h.index){var d=[],m;do m=l.pop(),a[m].onStack=!1,d.push(m);while(f!==m);s.push(d)}}return n.nodes().forEach(function(f){Object.hasOwn(a,f)||u(f)}),s}return bh}var wh,Wv;function Nj(){if(Wv)return wh;Wv=1;var e=YS();wh=n;function n(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return wh}var Sh,e1;function kj(){if(e1)return Sh;e1=1,Sh=n;var e=()=>1;function n(l,a,s){return r(l,a||e,s||function(u){return l.outEdges(u)})}function r(l,a,s){var u={},f=l.nodes();return f.forEach(function(h){u[h]={},u[h][h]={distance:0},f.forEach(function(d){h!==d&&(u[h][d]={distance:Number.POSITIVE_INFINITY})}),s(h).forEach(function(d){var m=d.v===h?d.w:d.v,p=a(d);u[h][m]={distance:p,predecessor:h}})}),f.forEach(function(h){var d=u[h];f.forEach(function(m){var p=u[m];f.forEach(function(y){var v=p[h],w=d[y],k=p[y],S=v.distance+w.distance;Sa.successors(p):p=>a.neighbors(p),h=u==="post"?n:r,d=[],m={};return s.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);h(p,f,m,d)}),d}function n(a,s,u,f){for(var h=[[a,!1]];h.length>0;){var d=h.pop();d[1]?f.push(d[0]):Object.hasOwn(u,d[0])||(u[d[0]]=!0,h.push([d[0],!0]),l(s(d[0]),m=>h.push([m,!1])))}}function r(a,s,u,f){for(var h=[a];h.length>0;){var d=h.pop();Object.hasOwn(u,d)||(u[d]=!0,f.push(d),l(s(d),m=>h.push(m)))}}function l(a,s){for(var u=a.length;u--;)s(a[u],u,a);return a}return Nh}var kh,i1;function Tj(){if(i1)return kh;i1=1;var e=PS();kh=n;function n(r,l){return e(r,l,"post")}return kh}var Ch,l1;function zj(){if(l1)return Ch;l1=1;var e=PS();Ch=n;function n(r,l){return e(r,l,"pre")}return Ch}var Th,a1;function Aj(){if(a1)return Th;a1=1;var e=ym(),n=VS();Th=r;function r(l,a){var s=new e,u={},f=new n,h;function d(p){var y=p.v===h?p.w:p.v,v=f.priority(y);if(v!==void 0){var w=a(p);w0;){if(h=f.removeMin(),Object.hasOwn(u,h))s.setEdge(h,u[h]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(h).forEach(d)}return s}return Th}var zh,o1;function Mj(){return o1||(o1=1,zh={components:_j(),dijkstra:GS(),dijkstraAll:Ej(),findCycles:Nj(),floydWarshall:kj(),isAcyclic:Cj(),postorder:Tj(),preorder:zj(),prim:Aj(),tarjan:YS(),topsort:$S()}),zh}var Ah,s1;function Yn(){if(s1)return Ah;s1=1;var e=wj();return Ah={Graph:e.Graph,json:Sj(),alg:Mj(),version:e.version},Ah}var Mh,u1;function jj(){if(u1)return Mh;u1=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,s=a._prev;if(s!==a)return n(s),s}enqueue(a){let s=this._sentinel;a._prev&&a._next&&n(a),a._next=s._next,s._next._prev=a,s._next=a,a._prev=s}toString(){let a=[],s=this._sentinel,u=s._prev;for(;u!==s;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function n(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return Mh=e,Mh}var jh,c1;function Oj(){if(c1)return jh;c1=1;let e=Yn().Graph,n=jj();jh=l;let r=()=>1;function l(d,m){if(d.nodeCount()<=1)return[];let p=u(d,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(v=>d.outEdges(v.v,v.w))}function a(d,m,p){let y=[],v=m[m.length-1],w=m[0],k;for(;d.nodeCount();){for(;k=w.dequeue();)s(d,m,p,k);for(;k=v.dequeue();)s(d,m,p,k);if(d.nodeCount()){for(let S=m.length-2;S>0;--S)if(k=m[S].dequeue(),k){y=y.concat(s(d,m,p,k,!0));break}}}return y}function s(d,m,p,y,v){let w=v?[]:void 0;return d.inEdges(y.v).forEach(k=>{let S=d.edge(k),_=d.node(k.v);v&&w.push({v:k.v,w:k.w}),_.out-=S,f(m,p,_)}),d.outEdges(y.v).forEach(k=>{let S=d.edge(k),_=k.w,T=d.node(_);T.in-=S,f(m,p,T)}),d.removeNode(y.v),w}function u(d,m){let p=new e,y=0,v=0;d.nodes().forEach(S=>{p.setNode(S,{v:S,in:0,out:0})}),d.edges().forEach(S=>{let _=p.edge(S.v,S.w)||0,T=m(S),E=_+T;p.setEdge(S.v,S.w,E),v=Math.max(v,p.node(S.v).out+=T),y=Math.max(y,p.node(S.w).in+=T)});let w=h(v+y+3).map(()=>new n),k=y+1;return p.nodes().forEach(S=>{f(w,k,p.node(S))}),{graph:p,buckets:w,zeroIdx:k}}function f(d,m,p){p.out?p.in?d[p.out-p.in+m].enqueue(p):d[d.length-1].enqueue(p):d[0].enqueue(p)}function h(d){const m=[];for(let p=0;pU.setNode(X,D.node(X))),D.edges().forEach(X=>{let H=U.edge(X.v,X.w)||{weight:0,minlen:1},q=D.edge(X);U.setEdge(X.v,X.w,{weight:H.weight+q.weight,minlen:Math.max(H.minlen,q.minlen)})}),U}function l(D){let U=new e({multigraph:D.isMultigraph()}).setGraph(D.graph());return D.nodes().forEach(X=>{D.children(X).length||U.setNode(X,D.node(X))}),D.edges().forEach(X=>{U.setEdge(X,D.edge(X))}),U}function a(D){let U=D.nodes().map(X=>{let H={};return D.outEdges(X).forEach(q=>{H[q.w]=(H[q.w]||0)+D.edge(q).weight}),H});return L(D.nodes(),U)}function s(D){let U=D.nodes().map(X=>{let H={};return D.inEdges(X).forEach(q=>{H[q.v]=(H[q.v]||0)+D.edge(q).weight}),H});return L(D.nodes(),U)}function u(D,U){let X=D.x,H=D.y,q=U.x-X,ee=U.y-H,R=D.width/2,G=D.height/2;if(!q&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let M,$;return Math.abs(ee)*R>Math.abs(q)*G?(ee<0&&(G=-G),M=G*q/ee,$=G):(q<0&&(R=-R),M=R,$=R*ee/q),{x:X+M,y:H+$}}function f(D){let U=z(w(D)+1).map(()=>[]);return D.nodes().forEach(X=>{let H=D.node(X),q=H.rank;q!==void 0&&(U[q][H.order]=X)}),U}function h(D){let U=D.nodes().map(H=>{let q=D.node(H).rank;return q===void 0?Number.MAX_VALUE:q}),X=v(Math.min,U);D.nodes().forEach(H=>{let q=D.node(H);Object.hasOwn(q,"rank")&&(q.rank-=X)})}function d(D){let U=D.nodes().map(R=>D.node(R).rank),X=v(Math.min,U),H=[];D.nodes().forEach(R=>{let G=D.node(R).rank-X;H[G]||(H[G]=[]),H[G].push(R)});let q=0,ee=D.graph().nodeRankFactor;Array.from(H).forEach((R,G)=>{R===void 0&&G%ee!==0?--q:R!==void 0&&q&&R.forEach(M=>D.node(M).rank+=q)})}function m(D,U,X,H){let q={width:0,height:0};return arguments.length>=4&&(q.rank=X,q.order=H),n(D,"border",q,U)}function p(D,U=y){const X=[];for(let H=0;Hy){const X=p(U);return D.apply(null,X.map(H=>D.apply(null,H)))}else return D.apply(null,U)}function w(D){const X=D.nodes().map(H=>{let q=D.node(H).rank;return q===void 0?Number.MIN_VALUE:q});return v(Math.max,X)}function k(D,U){let X={lhs:[],rhs:[]};return D.forEach(H=>{U(H)?X.lhs.push(H):X.rhs.push(H)}),X}function S(D,U){let X=Date.now();try{return U()}finally{console.log(D+" time: "+(Date.now()-X)+"ms")}}function _(D,U){return U()}let T=0;function E(D){var U=++T;return D+(""+U)}function z(D,U,X=1){U==null&&(U=D,D=0);let H=ee=>eeUH[U]),Object.entries(D).reduce((H,[q,ee])=>(H[q]=X(ee,q),H),{})}function L(D,U){return D.reduce((X,H,q)=>(X[H]=U[q],X),{})}return Oh}var Dh,d1;function Dj(){if(d1)return Dh;d1=1;let e=Oj(),n=Tt().uniqueId;Dh={run:r,undo:a};function r(s){(s.graph().acyclicer==="greedy"?e(s,f(s)):l(s)).forEach(h=>{let d=s.edge(h);s.removeEdge(h),d.forwardName=h.name,d.reversed=!0,s.setEdge(h.w,h.v,d,n("rev"))});function f(h){return d=>h.edge(d).weight}}function l(s){let u=[],f={},h={};function d(m){Object.hasOwn(h,m)||(h[m]=!0,f[m]=!0,s.outEdges(m).forEach(p=>{Object.hasOwn(f,p.w)?u.push(p):d(p.w)}),delete f[m])}return s.nodes().forEach(d),u}function a(s){s.edges().forEach(u=>{let f=s.edge(u);if(f.reversed){s.removeEdge(u);let h=f.forwardName;delete f.reversed,delete f.forwardName,s.setEdge(u.w,u.v,f,h)}})}return Dh}var Rh,h1;function Rj(){if(h1)return Rh;h1=1;let e=Tt();Rh={run:n,undo:l};function n(a){a.graph().dummyChains=[],a.edges().forEach(s=>r(a,s))}function r(a,s){let u=s.v,f=a.node(u).rank,h=s.w,d=a.node(h).rank,m=s.name,p=a.edge(s),y=p.labelRank;if(d===f+1)return;a.removeEdge(s);let v,w,k;for(k=0,++f;f{let u=a.node(s),f=u.edgeLabel,h;for(a.setEdge(u.edgeObj,f);u.dummy;)h=a.successors(s)[0],a.removeNode(s),f.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(f.x=u.x,f.y=u.y,f.width=u.width,f.height=u.height),s=h,u=a.node(s)})}return Rh}var Lh,p1;function oc(){if(p1)return Lh;p1=1;const{applyWithChunking:e}=Tt();Lh={longestPath:n,slack:r};function n(l){var a={};function s(u){var f=l.node(u);if(Object.hasOwn(a,u))return f.rank;a[u]=!0;let h=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:s(m.w)-l.edge(m).minlen);var d=e(Math.min,h);return d===Number.POSITIVE_INFINITY&&(d=0),f.rank=d}l.sources().forEach(s)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Lh}var Hh,m1;function XS(){if(m1)return Hh;m1=1;var e=Yn().Graph,n=oc().slack;Hh=r;function r(u){var f=new e({directed:!1}),h=u.nodes()[0],d=u.nodeCount();f.setNode(h,{});for(var m,p;l(f,u){var p=m.v,y=d===p?m.w:p;!u.hasNode(y)&&!n(f,m)&&(u.setNode(y,{}),u.setEdge(d,y,{}),h(y))})}return u.nodes().forEach(h),u.nodeCount()}function a(u,f){return f.edges().reduce((d,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=n(f,m)),pf.node(d).rank+=h)}return Hh}var Bh,g1;function Lj(){if(g1)return Bh;g1=1;var e=XS(),n=oc().slack,r=oc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,s=Tt().simplify;Bh=u,u.initLowLimValues=m,u.initCutValues=f,u.calcCutValue=d,u.leaveEdge=y,u.enterEdge=v,u.exchangeEdges=w;function u(T){T=s(T),r(T);var E=e(T);m(E),f(E,T);for(var z,I;z=y(E);)I=v(E,T,z),w(E,T,z,I)}function f(T,E){var z=a(T,T.nodes());z=z.slice(0,z.length-1),z.forEach(I=>h(T,E,I))}function h(T,E,z){var I=T.node(z),A=I.parent;T.edge(z,A).cutvalue=d(T,E,z)}function d(T,E,z){var I=T.node(z),A=I.parent,L=!0,D=E.edge(z,A),U=0;return D||(L=!1,D=E.edge(A,z)),U=D.weight,E.nodeEdges(z).forEach(X=>{var H=X.v===z,q=H?X.w:X.v;if(q!==A){var ee=H===L,R=E.edge(X).weight;if(U+=ee?R:-R,S(T,z,q)){var G=T.edge(z,q).cutvalue;U+=ee?-G:G}}}),U}function m(T,E){arguments.length<2&&(E=T.nodes()[0]),p(T,{},1,E)}function p(T,E,z,I,A){var L=z,D=T.node(I);return E[I]=!0,T.neighbors(I).forEach(U=>{Object.hasOwn(E,U)||(z=p(T,E,z,U,I))}),D.low=L,D.lim=z++,A?D.parent=A:delete D.parent,z}function y(T){return T.edges().find(E=>T.edge(E).cutvalue<0)}function v(T,E,z){var I=z.v,A=z.w;E.hasEdge(I,A)||(I=z.w,A=z.v);var L=T.node(I),D=T.node(A),U=L,X=!1;L.lim>D.lim&&(U=D,X=!0);var H=E.edges().filter(q=>X===_(T,T.node(q.v),U)&&X!==_(T,T.node(q.w),U));return H.reduce((q,ee)=>n(E,ee)!E.node(A).parent),I=l(T,z);I=I.slice(1),I.forEach(A=>{var L=T.node(A).parent,D=E.edge(A,L),U=!1;D||(D=E.edge(L,A),U=!0),E.node(A).rank=E.node(L).rank+(U?D.minlen:-D.minlen)})}function S(T,E,z){return T.hasEdge(E,z)}function _(T,E,z){return z.low<=E.lim&&E.lim<=z.lim}return Bh}var qh,y1;function Hj(){if(y1)return qh;y1=1;var e=oc(),n=e.longestPath,r=XS(),l=Lj();qh=a;function a(h){var d=h.graph().ranker;if(d instanceof Function)return d(h);switch(h.graph().ranker){case"network-simplex":f(h);break;case"tight-tree":u(h);break;case"longest-path":s(h);break;case"none":break;default:f(h)}}var s=n;function u(h){n(h),r(h)}function f(h){l(h)}return qh}var Uh,x1;function Bj(){if(x1)return Uh;x1=1,Uh=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(s=>{let u=l.node(s),f=u.edgeObj,h=n(l,a,f.v,f.w),d=h.path,m=h.lca,p=0,y=d[p],v=!0;for(;s!==f.w;){if(u=l.node(s),v){for(;(y=d[p])!==m&&l.node(y).maxRankd||m>a[p].lim));for(y=p,p=u;(p=l.parent(p))!==y;)h.push(p);return{path:f.concat(h.reverse()),lca:y}}function r(l){let a={},s=0;function u(f){let h=s;l.children(f).forEach(u),a[f]={low:h,lim:s++}}return l.children().forEach(u),a}return Uh}var Ih,v1;function qj(){if(v1)return Ih;v1=1;let e=Tt();Ih={run:n,cleanup:s};function n(u){let f=e.addDummyNode(u,"root",{},"_root"),h=l(u),d=Object.values(h),m=e.applyWithChunking(Math.max,d)-1,p=2*m+1;u.graph().nestingRoot=f,u.edges().forEach(v=>u.edge(v).minlen*=p);let y=a(u)+1;u.children().forEach(v=>r(u,f,p,y,m,h,v)),u.graph().nodeRankFactor=p}function r(u,f,h,d,m,p,y){let v=u.children(y);if(!v.length){y!==f&&u.setEdge(f,y,{weight:0,minlen:h});return}let w=e.addBorderNode(u,"_bt"),k=e.addBorderNode(u,"_bb"),S=u.node(y);u.setParent(w,y),S.borderTop=w,u.setParent(k,y),S.borderBottom=k,v.forEach(_=>{r(u,f,h,d,m,p,_);let T=u.node(_),E=T.borderTop?T.borderTop:_,z=T.borderBottom?T.borderBottom:_,I=T.borderTop?d:2*d,A=E!==z?1:m-p[y]+1;u.setEdge(w,E,{weight:I,minlen:A,nestingEdge:!0}),u.setEdge(z,k,{weight:I,minlen:A,nestingEdge:!0})}),u.parent(y)||u.setEdge(f,w,{weight:0,minlen:m+p[y]})}function l(u){var f={};function h(d,m){var p=u.children(d);p&&p.length&&p.forEach(y=>h(y,m+1)),f[d]=m}return u.children().forEach(d=>h(d,1)),f}function a(u){return u.edges().reduce((f,h)=>f+u.edge(h).weight,0)}function s(u){var f=u.graph();u.removeNode(f.nestingRoot),delete f.nestingRoot,u.edges().forEach(h=>{var d=u.edge(h);d.nestingEdge&&u.removeEdge(h)})}return Ih}var Vh,b1;function Uj(){if(b1)return Vh;b1=1;let e=Tt();Vh=n;function n(l){function a(s){let u=l.children(s),f=l.node(s);if(u.length&&u.forEach(a),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let h=f.minRank,d=f.maxRank+1;hl(h.node(d))),h.edges().forEach(d=>l(h.edge(d)))}function l(h){let d=h.width;h.width=h.height,h.height=d}function a(h){h.nodes().forEach(d=>s(h.node(d))),h.edges().forEach(d=>{let m=h.edge(d);m.points.forEach(s),Object.hasOwn(m,"y")&&s(m)})}function s(h){h.y=-h.y}function u(h){h.nodes().forEach(d=>f(h.node(d))),h.edges().forEach(d=>{let m=h.edge(d);m.points.forEach(f),Object.hasOwn(m,"x")&&f(m)})}function f(h){let d=h.x;h.x=h.y,h.y=d}return Gh}var Yh,S1;function Vj(){if(S1)return Yh;S1=1;let e=Tt();Yh=n;function n(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),s=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,s),f=e.range(u+1).map(()=>[]);function h(m){if(l[m])return;l[m]=!0;let p=r.node(m);f[p.rank].push(m),r.successors(m).forEach(h)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(h),f}return Yh}var $h,_1;function Gj(){if(_1)return $h;_1=1;let e=Tt().zipObject;$h=n;function n(l,a){let s=0;for(let u=1;uv)),f=a.flatMap(y=>l.outEdges(y).map(v=>({pos:u[v.w],weight:l.edge(v).weight})).sort((v,w)=>v.pos-w.pos)),h=1;for(;h{let v=y.pos+h;m[v]+=y.weight;let w=0;for(;v>0;)v%2&&(w+=m[v+1]),v=v-1>>1,m[v]+=y.weight;p+=y.weight*w}),p}return $h}var Ph,E1;function Yj(){if(E1)return Ph;E1=1,Ph=e;function e(n,r=[]){return r.map(l=>{let a=n.inEdges(l);if(a.length){let s=a.reduce((u,f)=>{let h=n.edge(f),d=n.node(f.v);return{sum:u.sum+h.weight*d.order,weight:u.weight+h.weight}},{sum:0,weight:0});return{v:l,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:l}})}return Ph}var Xh,N1;function $j(){if(N1)return Xh;N1=1;let e=Tt();Xh=n;function n(a,s){let u={};a.forEach((h,d)=>{let m=u[h.v]={indegree:0,in:[],out:[],vs:[h.v],i:d};h.barycenter!==void 0&&(m.barycenter=h.barycenter,m.weight=h.weight)}),s.edges().forEach(h=>{let d=u[h.v],m=u[h.w];d!==void 0&&m!==void 0&&(m.indegree++,d.out.push(u[h.w]))});let f=Object.values(u).filter(h=>!h.indegree);return r(f)}function r(a){let s=[];function u(h){return d=>{d.merged||(d.barycenter===void 0||h.barycenter===void 0||d.barycenter>=h.barycenter)&&l(h,d)}}function f(h){return d=>{d.in.push(h),--d.indegree===0&&a.push(d)}}for(;a.length;){let h=a.pop();s.push(h),h.in.reverse().forEach(u(h)),h.out.forEach(f(h))}return s.filter(h=>!h.merged).map(h=>e.pick(h,["vs","i","barycenter","weight"]))}function l(a,s){let u=0,f=0;a.weight&&(u+=a.barycenter*a.weight,f+=a.weight),s.weight&&(u+=s.barycenter*s.weight,f+=s.weight),a.vs=s.vs.concat(a.vs),a.barycenter=u/f,a.weight=f,a.i=Math.min(s.i,a.i),s.merged=!0}return Xh}var Fh,k1;function Pj(){if(k1)return Fh;k1=1;let e=Tt();Fh=n;function n(a,s){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),f=u.lhs,h=u.rhs.sort((w,k)=>k.i-w.i),d=[],m=0,p=0,y=0;f.sort(l(!!s)),y=r(d,h,y),f.forEach(w=>{y+=w.vs.length,d.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,y=r(d,h,y)});let v={vs:d.flat(!0)};return p&&(v.barycenter=m/p,v.weight=p),v}function r(a,s,u){let f;for(;s.length&&(f=s[s.length-1]).i<=u;)s.pop(),a.push(f.vs),u++;return u}function l(a){return(s,u)=>s.barycenteru.barycenter?1:a?u.i-s.i:s.i-u.i}return Fh}var Qh,C1;function Xj(){if(C1)return Qh;C1=1;let e=Yj(),n=$j(),r=Pj();Qh=l;function l(u,f,h,d){let m=u.children(f),p=u.node(f),y=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,w={};y&&(m=m.filter(T=>T!==y&&T!==v));let k=e(u,m);k.forEach(T=>{if(u.children(T.v).length){let E=l(u,T.v,h,d);w[T.v]=E,Object.hasOwn(E,"barycenter")&&s(T,E)}});let S=n(k,h);a(S,w);let _=r(S,d);if(y&&(_.vs=[y,_.vs,v].flat(!0),u.predecessors(y).length)){let T=u.node(u.predecessors(y)[0]),E=u.node(u.predecessors(v)[0]);Object.hasOwn(_,"barycenter")||(_.barycenter=0,_.weight=0),_.barycenter=(_.barycenter*_.weight+T.order+E.order)/(_.weight+2),_.weight+=2}return _}function a(u,f){u.forEach(h=>{h.vs=h.vs.flatMap(d=>f[d]?f[d].vs:d)})}function s(u,f){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+f.barycenter*f.weight)/(u.weight+f.weight),u.weight+=f.weight):(u.barycenter=f.barycenter,u.weight=f.weight)}return Qh}var Zh,T1;function Fj(){if(T1)return Zh;T1=1;let e=Yn().Graph,n=Tt();Zh=r;function r(a,s,u,f){f||(f=a.nodes());let h=l(a),d=new e({compound:!0}).setGraph({root:h}).setDefaultNodeLabel(m=>a.node(m));return f.forEach(m=>{let p=a.node(m),y=a.parent(m);(p.rank===s||p.minRank<=s&&s<=p.maxRank)&&(d.setNode(m),d.setParent(m,y||h),a[u](m).forEach(v=>{let w=v.v===m?v.w:v.v,k=d.edge(w,m),S=k!==void 0?k.weight:0;d.setEdge(w,m,{weight:a.edge(v).weight+S})}),Object.hasOwn(p,"minRank")&&d.setNode(m,{borderLeft:p.borderLeft[s],borderRight:p.borderRight[s]}))}),d}function l(a){for(var s;a.hasNode(s=n.uniqueId("_root")););return s}return Zh}var Kh,z1;function Qj(){if(z1)return Kh;z1=1,Kh=e;function e(n,r,l){let a={},s;l.forEach(u=>{let f=n.parent(u),h,d;for(;f;){if(h=n.parent(f),h?(d=a[h],a[h]=f):(d=s,s=f),d&&d!==f){r.setEdge(d,f);return}f=h}})}return Kh}var Jh,A1;function Zj(){if(A1)return Jh;A1=1;let e=Vj(),n=Gj(),r=Xj(),l=Fj(),a=Qj(),s=Yn().Graph,u=Tt();Jh=f;function f(p,y){if(y&&typeof y.customOrder=="function"){y.customOrder(p,f);return}let v=u.maxRank(p),w=h(p,u.range(1,v+1),"inEdges"),k=h(p,u.range(v-1,-1,-1),"outEdges"),S=e(p);if(m(p,S),y&&y.disableOptimalOrderHeuristic)return;let _=Number.POSITIVE_INFINITY,T;for(let E=0,z=0;z<4;++E,++z){d(E%2?w:k,E%4>=2),S=u.buildLayerMatrix(p);let I=n(p,S);I<_&&(z=0,T=Object.assign({},S),_=I)}m(p,T)}function h(p,y,v){const w=new Map,k=(S,_)=>{w.has(S)||w.set(S,[]),w.get(S).push(_)};for(const S of p.nodes()){const _=p.node(S);if(typeof _.rank=="number"&&k(_.rank,S),typeof _.minRank=="number"&&typeof _.maxRank=="number")for(let T=_.minRank;T<=_.maxRank;T++)T!==_.rank&&k(T,S)}return y.map(function(S){return l(p,S,v,w.get(S)||[])})}function d(p,y){let v=new s;p.forEach(function(w){let k=w.graph().root,S=r(w,k,v,y);S.vs.forEach((_,T)=>w.node(_).order=T),a(w,v,S.vs)})}function m(p,y){Object.values(y).forEach(v=>v.forEach((w,k)=>p.node(w).order=k))}return Jh}var Wh,M1;function Kj(){if(M1)return Wh;M1=1;let e=Yn().Graph,n=Tt();Wh={positionX:v,findType1Conflicts:r,findType2Conflicts:l,addConflict:s,hasConflict:u,verticalAlignment:f,horizontalCompaction:h,alignCoordinates:p,findSmallestWidthAlignment:m,balance:y};function r(S,_){let T={};function E(z,I){let A=0,L=0,D=z.length,U=I[I.length-1];return I.forEach((X,H)=>{let q=a(S,X),ee=q?S.node(q).order:D;(q||X===U)&&(I.slice(L,H+1).forEach(R=>{S.predecessors(R).forEach(G=>{let M=S.node(G),$=M.order;(${X=I[H],S.node(X).dummy&&S.predecessors(X).forEach(q=>{let ee=S.node(q);ee.dummy&&(ee.orderU)&&s(T,q,X)})})}function z(I,A){let L=-1,D,U=0;return A.forEach((X,H)=>{if(S.node(X).dummy==="border"){let q=S.predecessors(X);q.length&&(D=S.node(q[0]).order,E(A,U,H,L,D),U=H,L=D)}E(A,U,A.length,D,I.length)}),A}return _.length&&_.reduce(z),T}function a(S,_){if(S.node(_).dummy)return S.predecessors(_).find(T=>S.node(T).dummy)}function s(S,_,T){if(_>T){let z=_;_=T,T=z}let E=S[_];E||(S[_]=E={}),E[T]=!0}function u(S,_,T){if(_>T){let E=_;_=T,T=E}return!!S[_]&&Object.hasOwn(S[_],T)}function f(S,_,T,E){let z={},I={},A={};return _.forEach(L=>{L.forEach((D,U)=>{z[D]=D,I[D]=D,A[D]=U})}),_.forEach(L=>{let D=-1;L.forEach(U=>{let X=E(U);if(X.length){X=X.sort((q,ee)=>A[q]-A[ee]);let H=(X.length-1)/2;for(let q=Math.floor(H),ee=Math.ceil(H);q<=ee;++q){let R=X[q];I[U]===U&&DMath.max(q,I[ee.v]+A.edge(ee)),0)}function X(H){let q=A.outEdges(H).reduce((R,G)=>Math.min(R,I[G.w]-A.edge(G)),Number.POSITIVE_INFINITY),ee=S.node(H);q!==Number.POSITIVE_INFINITY&&ee.borderType!==L&&(I[H]=Math.max(I[H],q))}return D(U,A.predecessors.bind(A)),D(X,A.successors.bind(A)),Object.keys(E).forEach(H=>I[H]=I[T[H]]),I}function d(S,_,T,E){let z=new e,I=S.graph(),A=w(I.nodesep,I.edgesep,E);return _.forEach(L=>{let D;L.forEach(U=>{let X=T[U];if(z.setNode(X),D){var H=T[D],q=z.edge(H,X);z.setEdge(H,X,Math.max(A(S,U,D),q||0))}D=U})}),z}function m(S,_){return Object.values(_).reduce((T,E)=>{let z=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY;Object.entries(E).forEach(([L,D])=>{let U=k(S,L)/2;z=Math.max(D+U,z),I=Math.min(D-U,I)});const A=z-I;return A{["l","r"].forEach(A=>{let L=I+A,D=S[L];if(D===_)return;let U=Object.values(D),X=E-n.applyWithChunking(Math.min,U);A!=="l"&&(X=z-n.applyWithChunking(Math.max,U)),X&&(S[L]=n.mapValues(D,H=>H+X))})})}function y(S,_){return n.mapValues(S.ul,(T,E)=>{if(_)return S[_.toLowerCase()][E];{let z=Object.values(S).map(I=>I[E]).sort((I,A)=>I-A);return(z[1]+z[2])/2}})}function v(S){let _=n.buildLayerMatrix(S),T=Object.assign(r(S,_),l(S,_)),E={},z;["u","d"].forEach(A=>{z=A==="u"?_:Object.values(_).reverse(),["l","r"].forEach(L=>{L==="r"&&(z=z.map(H=>Object.values(H).reverse()));let D=(A==="u"?S.predecessors:S.successors).bind(S),U=f(S,z,T,D),X=h(S,z,U.root,U.align,L==="r");L==="r"&&(X=n.mapValues(X,H=>-H)),E[A+L]=X})});let I=m(S,E);return p(E,I),y(E,S.graph().align)}function w(S,_,T){return(E,z,I)=>{let A=E.node(z),L=E.node(I),D=0,U;if(D+=A.width/2,Object.hasOwn(A,"labelpos"))switch(A.labelpos.toLowerCase()){case"l":U=-A.width/2;break;case"r":U=A.width/2;break}if(U&&(D+=T?U:-U),U=0,D+=(A.dummy?_:S)/2,D+=(L.dummy?_:S)/2,D+=L.width/2,Object.hasOwn(L,"labelpos"))switch(L.labelpos.toLowerCase()){case"l":U=L.width/2;break;case"r":U=-L.width/2;break}return U&&(D+=T?U:-U),U=0,D}}function k(S,_){return S.node(_).width}return Wh}var ep,j1;function Jj(){if(j1)return ep;j1=1;let e=Tt(),n=Kj().positionX;ep=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(n(a)).forEach(([s,u])=>a.node(s).x=u)}function l(a){let s=e.buildLayerMatrix(a),u=a.graph().ranksep,f=0;s.forEach(h=>{const d=h.reduce((m,p)=>{const y=a.node(p).height;return m>y?m:y},0);h.forEach(m=>a.node(m).y=f+d/2),f+=d+u})}return ep}var tp,O1;function Wj(){if(O1)return tp;O1=1;let e=Dj(),n=Rj(),r=Hj(),l=Tt().normalizeRanks,a=Bj(),s=Tt().removeEmptyRanks,u=qj(),f=Uj(),h=Ij(),d=Zj(),m=Jj(),p=Tt(),y=Yn().Graph;tp=v;function v(N,Y){let F=Y&&Y.debugTiming?p.time:p.notime;F("layout",()=>{let J=F(" buildLayoutGraph",()=>D(N));F(" runLayout",()=>w(J,F,Y)),F(" updateInputGraph",()=>k(N,J))})}function w(N,Y,F){Y(" makeSpaceForEdgeLabels",()=>U(N)),Y(" removeSelfEdges",()=>Q(N)),Y(" acyclic",()=>e.run(N)),Y(" nestingGraph.run",()=>u.run(N)),Y(" rank",()=>r(p.asNonCompoundGraph(N))),Y(" injectEdgeLabelProxies",()=>X(N)),Y(" removeEmptyRanks",()=>s(N)),Y(" nestingGraph.cleanup",()=>u.cleanup(N)),Y(" normalizeRanks",()=>l(N)),Y(" assignRankMinMax",()=>H(N)),Y(" removeEdgeLabelProxies",()=>q(N)),Y(" normalize.run",()=>n.run(N)),Y(" parentDummyChains",()=>a(N)),Y(" addBorderSegments",()=>f(N)),Y(" order",()=>d(N,F)),Y(" insertSelfEdges",()=>K(N)),Y(" adjustCoordinateSystem",()=>h.adjust(N)),Y(" position",()=>m(N)),Y(" positionSelfEdges",()=>j(N)),Y(" removeBorderNodes",()=>$(N)),Y(" normalize.undo",()=>n.undo(N)),Y(" fixupEdgeLabelCoords",()=>G(N)),Y(" undoCoordinateSystem",()=>h.undo(N)),Y(" translateGraph",()=>ee(N)),Y(" assignNodeIntersects",()=>R(N)),Y(" reversePoints",()=>M(N)),Y(" acyclic.undo",()=>e.undo(N))}function k(N,Y){N.nodes().forEach(F=>{let J=N.node(F),ne=Y.node(F);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,Y.children(F).length&&(J.width=ne.width,J.height=ne.height))}),N.edges().forEach(F=>{let J=N.edge(F),ne=Y.edge(F);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),N.graph().width=Y.graph().width,N.graph().height=Y.graph().height}let S=["nodesep","edgesep","ranksep","marginx","marginy"],_={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},T=["acyclicer","ranker","rankdir","align"],E=["width","height","rank"],z={width:0,height:0},I=["minlen","weight","width","height","labeloffset"],A={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},L=["labelpos"];function D(N){let Y=new y({multigraph:!0,compound:!0}),F=P(N.graph());return Y.setGraph(Object.assign({},_,B(F,S),p.pick(F,T))),N.nodes().forEach(J=>{let ne=P(N.node(J));const re=B(ne,E);Object.keys(z).forEach(se=>{re[se]===void 0&&(re[se]=z[se])}),Y.setNode(J,re),Y.setParent(J,N.parent(J))}),N.edges().forEach(J=>{let ne=P(N.edge(J));Y.setEdge(J,Object.assign({},A,B(ne,I),p.pick(ne,L)))}),Y}function U(N){let Y=N.graph();Y.ranksep/=2,N.edges().forEach(F=>{let J=N.edge(F);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(Y.rankdir==="TB"||Y.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function X(N){N.edges().forEach(Y=>{let F=N.edge(Y);if(F.width&&F.height){let J=N.node(Y.v),re={rank:(N.node(Y.w).rank-J.rank)/2+J.rank,e:Y};p.addDummyNode(N,"edge-proxy",re,"_ep")}})}function H(N){let Y=0;N.nodes().forEach(F=>{let J=N.node(F);J.borderTop&&(J.minRank=N.node(J.borderTop).rank,J.maxRank=N.node(J.borderBottom).rank,Y=Math.max(Y,J.maxRank))}),N.graph().maxRank=Y}function q(N){N.nodes().forEach(Y=>{let F=N.node(Y);F.dummy==="edge-proxy"&&(N.edge(F.e).labelRank=F.rank,N.removeNode(Y))})}function ee(N){let Y=Number.POSITIVE_INFINITY,F=0,J=Number.POSITIVE_INFINITY,ne=0,re=N.graph(),se=re.marginx||0,ye=re.marginy||0;function ve(xe){let pe=xe.x,_e=xe.y,Me=xe.width,Ce=xe.height;Y=Math.min(Y,pe-Me/2),F=Math.max(F,pe+Me/2),J=Math.min(J,_e-Ce/2),ne=Math.max(ne,_e+Ce/2)}N.nodes().forEach(xe=>ve(N.node(xe))),N.edges().forEach(xe=>{let pe=N.edge(xe);Object.hasOwn(pe,"x")&&ve(pe)}),Y-=se,J-=ye,N.nodes().forEach(xe=>{let pe=N.node(xe);pe.x-=Y,pe.y-=J}),N.edges().forEach(xe=>{let pe=N.edge(xe);pe.points.forEach(_e=>{_e.x-=Y,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=Y),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=F-Y+se,re.height=ne-J+ye}function R(N){N.edges().forEach(Y=>{let F=N.edge(Y),J=N.node(Y.v),ne=N.node(Y.w),re,se;F.points?(re=F.points[0],se=F.points[F.points.length-1]):(F.points=[],re=ne,se=J),F.points.unshift(p.intersectRect(J,re)),F.points.push(p.intersectRect(ne,se))})}function G(N){N.edges().forEach(Y=>{let F=N.edge(Y);if(Object.hasOwn(F,"x"))switch((F.labelpos==="l"||F.labelpos==="r")&&(F.width-=F.labeloffset),F.labelpos){case"l":F.x-=F.width/2+F.labeloffset;break;case"r":F.x+=F.width/2+F.labeloffset;break}})}function M(N){N.edges().forEach(Y=>{let F=N.edge(Y);F.reversed&&F.points.reverse()})}function $(N){N.nodes().forEach(Y=>{if(N.children(Y).length){let F=N.node(Y),J=N.node(F.borderTop),ne=N.node(F.borderBottom),re=N.node(F.borderLeft[F.borderLeft.length-1]),se=N.node(F.borderRight[F.borderRight.length-1]);F.width=Math.abs(se.x-re.x),F.height=Math.abs(ne.y-J.y),F.x=re.x+F.width/2,F.y=J.y+F.height/2}}),N.nodes().forEach(Y=>{N.node(Y).dummy==="border"&&N.removeNode(Y)})}function Q(N){N.edges().forEach(Y=>{if(Y.v===Y.w){var F=N.node(Y.v);F.selfEdges||(F.selfEdges=[]),F.selfEdges.push({e:Y,label:N.edge(Y)}),N.removeEdge(Y)}})}function K(N){var Y=p.buildLayerMatrix(N);Y.forEach(F=>{var J=0;F.forEach((ne,re)=>{var se=N.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(ye=>{p.addDummyNode(N,"selfedge",{width:ye.label.width,height:ye.label.height,rank:se.rank,order:re+ ++J,e:ye.e,label:ye.label},"_se")}),delete se.selfEdges})})}function j(N){N.nodes().forEach(Y=>{var F=N.node(Y);if(F.dummy==="selfedge"){var J=N.node(F.e.v),ne=J.x+J.width/2,re=J.y,se=F.x-ne,ye=J.height/2;N.setEdge(F.e,F.label),N.removeNode(Y),F.label.points=[{x:ne+2*se/3,y:re-ye},{x:ne+5*se/6,y:re-ye},{x:ne+se,y:re},{x:ne+5*se/6,y:re+ye},{x:ne+2*se/3,y:re+ye}],F.label.x=F.x,F.label.y=F.y}})}function B(N,Y){return p.mapValues(p.pick(N,Y),Number)}function P(N){var Y={};return N&&Object.entries(N).forEach(([F,J])=>{typeof F=="string"&&(F=F.toLowerCase()),Y[F]=J}),Y}return tp}var np,D1;function e5(){if(D1)return np;D1=1;let e=Tt(),n=Yn().Graph;np={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),s=new n({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{s.setNode(u,{label:u}),s.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>s.setEdge(u.v,u.w,{},u.name)),a.forEach((u,f)=>{let h="layer"+f;s.setNode(h,{rank:"same"}),u.reduce((d,m)=>(s.setEdge(d,m,{style:"invis"}),m))}),s}return np}var rp,R1;function t5(){return R1||(R1=1,rp="1.1.8"),rp}var ip,L1;function n5(){return L1||(L1=1,ip={graphlib:Yn(),layout:Wj(),debug:e5(),util:{time:Tt().time,notime:Tt().notime},version:t5()}),ip}var r5=n5();const H1=qo(r5),bo=200,Zl=56,B1=20,q1=40,i5=20,U1=12;function l5(e,n,r,l,a,s,u){const f=[],h=[],d=new Set,m=new Set,p=new Map;for(const v of r)for(const w of v.agents)m.add(w),p.set(w,v.name);for(const v of r){const w=a[v.name],k=v.agents.length,S=bo+B1*2,_=q1+k*Zl+(k-1)*U1+i5;f.push({id:v.name,type:"groupNode",position:{x:0,y:0},data:{label:v.name,type:"parallel_group",status:(w==null?void 0:w.status)||"pending",groupName:v.name,progress:s[v.name]},style:{width:S,height:_}});for(let T=0;T$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}for(const v of n)h.push({id:`${v.from}->${v.to}`,source:v.from,target:v.to,type:"animatedEdge",data:{when:v.when},animated:!1});return a5(f,h),{nodes:f,edges:h}}function a5(e,n){var l,a,s,u;const r=new H1.graphlib.Graph;r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const f of e){if(f.parentId)continue;const h=f.type==="groupNode",d=h&&((l=f.style)==null?void 0:l.width)||bo,m=h&&((a=f.style)==null?void 0:a.height)||Zl;r.setNode(f.id,{width:d,height:m})}for(const f of n)r.hasNode(f.source)&&r.hasNode(f.target)&&r.setEdge(f.source,f.target);H1.layout(r);for(const f of e){if(f.parentId)continue;const h=r.node(f.id);if(!h)continue;const d=f.type==="groupNode",m=d&&((s=f.style)==null?void 0:s.width)||bo,p=d&&((u=f.style)==null?void 0:u.height)||Zl;f.position={x:h.x-m/2,y:h.y-p/2}}}const $e={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},o5=70,I1=90;function Nc({data:e,children:n}){const[r,l]=V.useState(!1),a=V.useRef(null),s=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),f=$e[e.status]||$e.pending;return b.jsxs("div",{className:"relative",onMouseEnter:s,onMouseLeave:u,children:[n,r&&b.jsxs("div",{className:Be("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[b.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),b.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:f}}),b.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&b.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:Qt(e.elapsed)})]}),e.model&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),b.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Vn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&b.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Vn(e.inputTokens),"↑ ",Vn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:mi(e.costUsd)})]}),e.exitCode!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),b.jsx("span",{className:Be("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&b.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),b.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const s5=V.memo(function({data:n,id:r,selected:l}){var L;const a=n,s=Wi(),f=((L=s[r])==null?void 0:L.status)||a.status||"pending",h=$e[f]||$e.pending,d=s[r],m=d==null?void 0:d.elapsed,p=d==null?void 0:d.model,y=d==null?void 0:d.tokens,v=d==null?void 0:d.input_tokens,w=d==null?void 0:d.output_tokens,k=d==null?void 0:d.cost_usd,S=d==null?void 0:d.iteration,_=d==null?void 0:d.error_type,T=d==null?void 0:d.error_message,E=d==null?void 0:d.context_pct,z=u5(r,f),I=c5(f),A=(()=>{if(f==="failed"&&T)return{text:T.length>40?T.slice(0,37)+"...":T,className:"text-red-400"};if(f==="running")return{text:z,className:"text-[var(--text-muted)]"};if(f==="completed"){const D=[];return m!=null&&D.push(Qt(m)),y!=null&&D.push(`${Vn(y)} tok`),k!=null&&D.push(mi(k)),{text:D.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,elapsed:m,model:p,tokens:y,inputTokens:v,outputTokens:w,costUsd:k,iteration:S,errorType:_,errorMessage:T},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",I),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(J2,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S!=null&&S>1&&b.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${h}25`,color:h},children:["x",S]})]}),A.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",A.className),children:A.text})]}),E!=null&&b.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:b.jsx("div",{className:Be("h-full transition-all duration-500",E>=I1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(E,100)}%`,backgroundColor:E>=I1?"#ef4444":E>=o5?"#f59e0b":"#22c55e"}})})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function u5(e,n){var h;const r=(h=Wi()[e])==null?void 0:h.startedAt,l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const p=r??a??0;u(Qt((a??p)-p));return}const d=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-d)/1e3;u(Qt(p))};return m(),f.current=setInterval(m,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function c5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const f5=V.memo(function({data:n,id:r,selected:l}){var _;const a=n,s=Wi(),f=((_=s[r])==null?void 0:_.status)||a.status||"pending",h=$e[f]||$e.pending,d=s[r],m=d==null?void 0:d.elapsed,p=d==null?void 0:d.exit_code,y=d==null?void 0:d.error_type,v=d==null?void 0:d.error_message,w=d5(r,f),k=h5(f),S=(()=>{if(f==="failed"&&v)return{text:v.length>40?v.slice(0,37)+"...":v,className:"text-red-400"};if(f==="running")return{text:w,className:"text-[var(--text-muted)]"};if(f==="completed"){const T=[];return m!=null&&T.push(Qt(m)),p!=null&&T.push(`exit ${p}`),{text:T.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,elapsed:m,exitCode:p,errorType:y,errorMessage:v},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",k),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(hN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",S.className),children:S.text})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function d5(e,n){var h;const r=(h=Wi()[e])==null?void 0:h.startedAt,l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const p=r??a??0;u(Qt((a??p)-p));return}const d=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-d)/1e3;u(Qt(p))};return m(),f.current=setInterval(m,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function h5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const p5=V.memo(function({data:n,id:r,selected:l}){var p,y;const a=n,s=Wi(),f=((p=s[r])==null?void 0:p.status)||a.status||"pending",h=$e[f]||$e.pending,d=(y=s[r])==null?void 0:y.selected_option,m=m5(f);return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,selectedOption:d},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="waiting"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(dN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),f==="waiting"&&b.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),f==="completed"&&d&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:d})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function m5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const g5=V.memo(function({data:n,id:r,selected:l}){var S;const a=n,u=a.type==="for_each_group"?uN:aN,f=a.progress,m=((S=Wi()[r])==null?void 0:S.status)||a.status||"pending",p=$e[m]||$e.pending,y=y5(m),v=f?`${f.completed+f.failed}/${f.total}${f.failed>0?` (${f.failed} failed)`:""}`:null,w=f&&f.total>0?(f.completed+f.failed)/f.total*100:0,k=f!=null&&f.failed>0;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsxs("div",{className:Be("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",m==="running"&&"shadow-[0_0_16px_var(--running-glow)]",y),style:{borderColor:p,minHeight:"100%"},children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(u,{className:"w-3.5 h-3.5",style:{color:p}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),v&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:v}),f&&f.total>0&&m==="running"&&b.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${w}%`,backgroundColor:k?"var(--failed)":"var(--completed)"}})})]}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function y5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const x5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.status})||a.status||"pending",f=$e[u]||$e.pending,h=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.elapsed}),d=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.error_message}),m=he(S=>S.navigateIntoSubworkflow),p=IS(),y=p.some(S=>S.parentAgent===r),v=p.find(S=>S.parentAgent===r),w=v==null?void 0:v.workflowName,k=(()=>{if(u==="failed"&&d)return{text:d.length>35?d.slice(0,32)+"...":d,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const S=[];return w&&S.push(w),h!=null&&S.push(`${h.toFixed(1)}s`),{text:S.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:u,elapsed:h,errorType:void 0,errorMessage:d,iteration:void 0},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:f,borderStyle:"dashed"},onDoubleClick:S=>{y&&(S.stopPropagation(),m(r))},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx(Xp,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("div",{className:"flex items-center gap-1",children:b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),k.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",k.className),children:k.text})]}),y&&b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),v5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=a==="completed",u=a==="failed",f=!s&&!u,h=s?$e.completed:u?$e.failed:$e.pending;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",s?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:h},children:s?b.jsx(Vi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?b.jsx(Rb,{className:"w-3.5 h-3.5 text-white",fill:"white"}):b.jsx(Vi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:f?$e.pending:h}})})]})}),b5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=$e[a]||$e.pending,u=a==="running"||a==="completed";return b.jsxs(b.Fragment,{children:[b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:s},children:b.jsx(Fp,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":s}})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),w5=V.memo(function({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,source:h,target:d,data:m}){const p=xj(),y=V.useMemo(()=>p.find(U=>U.from===h&&U.to===d),[p,h,d]),[v,w,k]=cm({sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f}),S=m==null?void 0:m.when,_=!!S,T=(y==null?void 0:y.state)==="taken",E=(y==null?void 0:y.state)==="highlighted",z=(y==null?void 0:y.state)==="failed";let I="var(--edge-color)",A=2,L;z?(I="var(--failed)",A=3):T?(I="var(--edge-taken)",A=3):E&&(I="var(--edge-active)",A=3),_&&!T&&!E&&!z&&(L="6 3");const D=z?"failed":T?"taken":E?"active":"default";return b.jsxs(b.Fragment,{children:[b.jsx(Qo,{id:n,path:v,style:{stroke:I,strokeWidth:A,strokeDasharray:L,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${D})`}),_&&b.jsx(UM,{children:b.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${k}px)`,pointerEvents:"all"},children:b.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:z?"var(--failed)":T?"var(--edge-taken)":"var(--surface)",color:z||T?"var(--bg)":"var(--text-muted)",border:`1px solid ${z?"var(--failed)":T?"var(--edge-taken)":"var(--border)"}`},title:S,children:S})})}),T&&b.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:b.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:v})}),z&&b.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:b.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:v})})]})});function S5(){const e=he(u=>u.workflowStatus),n=he(u=>u.workflowFailure),r=he(u=>u.workflowFailedAgent),l=he(u=>u.selectNode);if(e!=="failed"||!n)return null;const a=n.message||n.error_type||"Unknown error",s=n.error_type==="TimeoutError";return b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[b.jsx(pN,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsxs("div",{className:"flex flex-col min-w-0",children:[b.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),b.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),s&&n.current_agent&&b.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",n.current_agent]}),n.checkpoint_path&&b.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:n.checkpoint_path,children:["Checkpoint: ",n.checkpoint_path.split("/").pop()]})]}),r&&b.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[b.jsx(rN,{className:"w-3 h-3"}),"View"]})]})})}function _5(){const[e,n]=V.useState(!1),r=he(h=>h.workflowStatus),l=he(h=>h.totalCost),a=he(h=>h.totalTokens),s=he(h=>h.agentsCompleted),u=he(h=>h.agentsTotal),f=Hb();return r!=="completed"||e?null:b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[b.jsx(eN,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),b.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[b.jsx("span",{children:f}),u>0&&b.jsxs("span",{children:[s,"/",u," agents"]}),a>0&&b.jsxs("span",{children:[Vn(a)," tok"]}),l>0&&b.jsx("span",{children:mi(l)})]}),b.jsx("button",{onClick:()=>n(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:b.jsx(Io,{className:"w-3.5 h-3.5"})})]})})}const E5={agentNode:s5,scriptNode:f5,gateNode:p5,groupNode:g5,workflowNode:x5,endNode:v5,startNode:b5},N5={animatedEdge:w5},k5={type:"animatedEdge"};function C5(){return b.jsx("svg",{style:{position:"absolute",width:0,height:0},children:b.jsxs("defs",{children:[b.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),b.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),b.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),b.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function T5(){const e=vj(),n=he(G=>G.viewContextPath),r=he(G=>G.selectNode),l=he(G=>G.selectedNode),a=he(G=>G.workflowStatus),s=he(G=>G.wsStatus),u=he(G=>G.workflowFailedAgent),f=he(G=>G.navigateIntoSubworkflow),{agents:h,routes:d,parallelGroups:m,forEachGroups:p,nodes:y,groupProgress:v,entryPoint:w,subworkflowContexts:k}=e,[S,_,T]=IM([]),[E,z,I]=VM([]),A=V.useRef(!1),L=V.useRef(""),D=JSON.stringify(n);V.useEffect(()=>{if(h.length===0){L.current!==D&&(A.current=!1,L.current=D);return}if(L.current!==D&&(A.current=!1,L.current=D),A.current)return;A.current=!0;const{nodes:G,edges:M}=l5(h,d,m,p,y,v,w);_(G),z(M)},[h,d,m,p,y,v,w,_,z,D]),V.useEffect(()=>{A.current&&_(G=>G.map(M=>{const $=y[M.id];if(!$)return M;const Q=$.status||"pending",K=M.data.status;if(Q!==K){const j={...M.data,status:Q};return M.data.groupName&&v[M.data.groupName]&&(j.progress=v[M.data.groupName]),{...M,data:j}}if(M.data.groupName&&v[M.data.groupName]){const j=M.data.progress,B=v[M.data.groupName];if(B&&(!j||j.completed!==B.completed||j.failed!==B.failed))return{...M,data:{...M.data,progress:B}}}return M}))},[y,v,_]);const U=V.useCallback((G,M)=>{M.type==="groupNode"&&M.data.type!=="for_each_group"||r(M.id)},[r]),X=V.useCallback((G,M)=>{k.some(Q=>Q.parentAgent===M.id)&&f(M.id)},[k,f]),H=V.useCallback(()=>{r(null)},[r]),q=V.useCallback(G=>{var $;const M=(($=G.data)==null?void 0:$.status)||"pending";return $e[M]||$e.pending},[]);V.useEffect(()=>{_(G=>G.map(M=>({...M,selected:M.id===l})))},[l,_]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const ee=a==="pending"&&h.length===0,R=(()=>{switch(s){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return b.jsxs("div",{className:"w-full h-full relative",children:[b.jsx(C5,{}),b.jsx(S5,{}),b.jsx(_5,{}),ee&&b.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[b.jsxs("div",{className:"relative mb-3",children:[b.jsx(yN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),b.jsx(ko,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),b.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:R})]}),b.jsxs(BM,{nodes:S,edges:E,onNodesChange:T,onEdgesChange:I,onNodeClick:U,onNodeDoubleClick:X,onPaneClick:H,nodeTypes:E5,edgeTypes:N5,defaultEdgeOptions:k5,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[b.jsx(XM,{variant:zr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),b.jsx(hj,{nodeColor:q,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),b.jsx(ej,{showInteractive:!1,children:b.jsx(z5,{})}),b.jsx(A5,{})]})]})}function z5(){const{fitView:e}=Fo(),n=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return b.jsx("button",{onClick:n,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:b.jsx(oN,{className:"w-3.5 h-3.5"})})}function A5(){const{fitView:e}=Fo();return V.useEffect(()=>{const n=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e]),null}function el({items:e}){const n=e.filter(r=>r.value!=null&&r.value!=="");return n.length===0?null:b.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:n.map(({label:r,value:l})=>b.jsxs("div",{className:"contents",children:[b.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),b.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function FS(e){const n=[];return e.elapsed!=null&&n.push({label:"Elapsed",value:Qt(e.elapsed)}),e.model&&n.push({label:"Model",value:e.model}),e.tokens!=null&&n.push({label:"Tokens",value:Vn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&n.push({label:"In / Out",value:`${Vn(e.input_tokens)} / ${Vn(e.output_tokens)}`}),e.cost_usd!=null&&n.push({label:"Cost",value:mi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&n.push({label:"Context",value:zN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&n.push({label:"Iteration",value:e.iteration}),e.error_type&&n.push({label:"Error",value:e.error_type}),e.error_message&&n.push({label:"Message",value:e.error_message}),n}function Ki({output:e,title:n="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,s]=V.useState(r),[u,f]=V.useState(!1),h=Lb(e);if(!h)return null;const d=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(h),f(!0),setTimeout(()=>f(!1),2e3)};return b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),n]}),a&&b.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}):b.jsx(Ob,{className:"w-3 h-3"})})]}),a&&b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:d?b.jsx(M5,{text:h}):h})]})}function M5({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function xm({activity:e,defaultExpanded:n=!0}){const[r,l]=V.useState(n),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&b.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((s,u)=>b.jsx(j5,{entry:s},u))})]})}function j5({entry:e}){const n={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return b.jsxs("div",{className:Be("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[b.jsxs("div",{className:"flex items-start gap-1.5",children:[b.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),b.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),b.jsx("span",{className:Be("break-words",n[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&b.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function O5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?b.jsx(V1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:n,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):b.jsxs(b.Fragment,{children:[b.jsx(el,{items:FS(e)}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),b.jsx(xm,{activity:e.activity,defaultExpanded:n!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>b.jsx(V1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:n,snapshot:a},a.iteration))]})}function V1({label:e,defaultExpanded:n,snapshot:r,status:l}){const[a,s]=V.useState(n);return b.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?b.jsx(Ji,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:D5(r.elapsed)})]}),a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[b.jsx(el,{items:FS(r)}),r.prompt&&b.jsx(Ki,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),b.jsx(xm,{activity:r.activity,defaultExpanded:n&&l!=="completed"}),r.output!=null&&b.jsx(Ki,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&b.jsxs("div",{className:"text-xs text-red-400",children:[b.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function D5(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function R5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Qt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` + +--- stderr --- +`:"")+e.stderr),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Script"})]}),b.jsx(el,{items:l}),a&&b.jsx(Ki,{output:a,title:"Output"})]})}function L5(e,n){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const H5=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,B5=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,q5={};function G1(e,n){return(q5.jsx?B5:H5).test(e)}const U5=/[ \t\n\f\r]/g;function I5(e){return typeof e=="object"?e.type==="text"?Y1(e.value):!1:Y1(e)}function Y1(e){return e.replace(U5,"")===""}class Ko{constructor(n,r,l){this.normal=r,this.property=n,l&&(this.space=l)}}Ko.prototype.normal={};Ko.prototype.property={};Ko.prototype.space=void 0;function QS(e,n){const r={},l={};for(const a of e)Object.assign(r,a.property),Object.assign(l,a.normal);return new Ko(r,l,n)}function Hp(e){return e.toLowerCase()}class sn{constructor(n,r){this.attribute=r,this.property=n}}sn.prototype.attribute="";sn.prototype.booleanish=!1;sn.prototype.boolean=!1;sn.prototype.commaOrSpaceSeparated=!1;sn.prototype.commaSeparated=!1;sn.prototype.defined=!1;sn.prototype.mustUseProperty=!1;sn.prototype.number=!1;sn.prototype.overloadedBoolean=!1;sn.prototype.property="";sn.prototype.spaceSeparated=!1;sn.prototype.space=void 0;let V5=0;const Oe=tl(),Ct=tl(),Bp=tl(),me=tl(),ot=tl(),ea=tl(),yn=tl();function tl(){return 2**++V5}const qp=Object.freeze(Object.defineProperty({__proto__:null,boolean:Oe,booleanish:Ct,commaOrSpaceSeparated:yn,commaSeparated:ea,number:me,overloadedBoolean:Bp,spaceSeparated:ot},Symbol.toStringTag,{value:"Module"})),lp=Object.keys(qp);class vm extends sn{constructor(n,r,l,a){let s=-1;if(super(n,r),$1(this,"space",a),typeof l=="number")for(;++s4&&r.slice(0,4)==="data"&&X5.test(n)){if(n.charAt(4)==="-"){const s=n.slice(5).replace(P1,Z5);l="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=n.slice(4);if(!P1.test(s)){let u=s.replace(P5,Q5);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}a=vm}return new a(l,n)}function Q5(e){return"-"+e.toLowerCase()}function Z5(e){return e.charAt(1).toUpperCase()}const K5=QS([ZS,G5,WS,e_,t_],"html"),bm=QS([ZS,Y5,WS,e_,t_],"svg");function J5(e){return e.join(" ").trim()}var Gl={},ap,X1;function W5(){if(X1)return ap;X1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,f=/^\s+|\s+$/g,h=` +`,d="/",m="*",p="",y="comment",v="declaration";function w(S,_){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];_=_||{};var T=1,E=1;function z(R){var G=R.match(n);G&&(T+=G.length);var M=R.lastIndexOf(h);E=~M?R.length-M:E+R.length}function I(){var R={line:T,column:E};return function(G){return G.position=new A(R),U(),G}}function A(R){this.start=R,this.end={line:T,column:E},this.source=_.source}A.prototype.content=S;function L(R){var G=new Error(_.source+":"+T+":"+E+": "+R);if(G.reason=R,G.filename=_.source,G.line=T,G.column=E,G.source=S,!_.silent)throw G}function D(R){var G=R.exec(S);if(G){var M=G[0];return z(M),S=S.slice(M.length),G}}function U(){D(r)}function X(R){var G;for(R=R||[];G=H();)G!==!1&&R.push(G);return R}function H(){var R=I();if(!(d!=S.charAt(0)||m!=S.charAt(1))){for(var G=2;p!=S.charAt(G)&&(m!=S.charAt(G)||d!=S.charAt(G+1));)++G;if(G+=2,p===S.charAt(G-1))return L("End of comment missing");var M=S.slice(2,G-2);return E+=2,z(M),S=S.slice(G),E+=2,R({type:y,comment:M})}}function q(){var R=I(),G=D(l);if(G){if(H(),!D(a))return L("property missing ':'");var M=D(s),$=R({type:v,property:k(G[0].replace(e,p)),value:M?k(M[0].replace(e,p)):p});return D(u),$}}function ee(){var R=[];X(R);for(var G;G=q();)G!==!1&&(R.push(G),X(R));return R}return U(),ee()}function k(S){return S?S.replace(f,p):p}return ap=w,ap}var F1;function e4(){if(F1)return Gl;F1=1;var e=Gl&&Gl.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.default=r;const n=e(W5());function r(l,a){let s=null;if(!l||typeof l!="string")return s;const u=(0,n.default)(l),f=typeof a=="function";return u.forEach(h=>{if(h.type!=="declaration")return;const{property:d,value:m}=h;f?a(d,m,h):m&&(s=s||{},s[d]=m)}),s}return Gl}var co={},Q1;function t4(){if(Q1)return co;Q1=1,Object.defineProperty(co,"__esModule",{value:!0}),co.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,l=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,s=function(d){return!d||r.test(d)||e.test(d)},u=function(d,m){return m.toUpperCase()},f=function(d,m){return"".concat(m,"-")},h=function(d,m){return m===void 0&&(m={}),s(d)?d:(d=d.toLowerCase(),m.reactCompat?d=d.replace(a,f):d=d.replace(l,f),d.replace(n,u))};return co.camelCase=h,co}var fo,Z1;function n4(){if(Z1)return fo;Z1=1;var e=fo&&fo.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},n=e(e4()),r=t4();function l(a,s){var u={};return!a||typeof a!="string"||(0,n.default)(a,function(f,h){f&&h&&(u[(0,r.camelCase)(f,s)]=h)}),u}return l.default=l,fo=l,fo}var r4=n4();const i4=qo(r4),n_=r_("end"),wm=r_("start");function r_(e){return n;function n(r){const l=r&&r.position&&r.position[e]||{};if(typeof l.line=="number"&&l.line>0&&typeof l.column=="number"&&l.column>0)return{line:l.line,column:l.column,offset:typeof l.offset=="number"&&l.offset>-1?l.offset:void 0}}}function l4(e){const n=wm(e),r=n_(e);if(n&&r)return{start:n,end:r}}function _o(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?K1(e.position):"start"in e||"end"in e?K1(e):"line"in e||"column"in e?Up(e):""}function Up(e){return J1(e&&e.line)+":"+J1(e&&e.column)}function K1(e){return Up(e&&e.start)+"-"+Up(e&&e.end)}function J1(e){return e&&typeof e=="number"?e:1}class Pt extends Error{constructor(n,r,l){super(),typeof r=="string"&&(l=r,r=void 0);let a="",s={},u=!1;if(r&&("line"in r&&"column"in r?s={place:r}:"start"in r&&"end"in r?s={place:r}:"type"in r?s={ancestors:[r],place:r.position}:s={...r}),typeof n=="string"?a=n:!s.cause&&n&&(u=!0,a=n.message,s.cause=n),!s.ruleId&&!s.source&&typeof l=="string"){const h=l.indexOf(":");h===-1?s.ruleId=l:(s.source=l.slice(0,h),s.ruleId=l.slice(h+1))}if(!s.place&&s.ancestors&&s.ancestors){const h=s.ancestors[s.ancestors.length-1];h&&(s.place=h.position)}const f=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=f?f.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=f?f.line:void 0,this.name=_o(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=u&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Pt.prototype.file="";Pt.prototype.name="";Pt.prototype.reason="";Pt.prototype.message="";Pt.prototype.stack="";Pt.prototype.column=void 0;Pt.prototype.line=void 0;Pt.prototype.ancestors=void 0;Pt.prototype.cause=void 0;Pt.prototype.fatal=void 0;Pt.prototype.place=void 0;Pt.prototype.ruleId=void 0;Pt.prototype.source=void 0;const Sm={}.hasOwnProperty,a4=new Map,o4=/[A-Z]/g,s4=new Set(["table","tbody","thead","tfoot","tr"]),u4=new Set(["td","th"]),i_="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function c4(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=n.filePath||void 0;let l;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");l=x4(r,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");l=y4(r,n.jsx,n.jsxs)}const a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:l,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?bm:K5,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},s=l_(a,e,void 0);return s&&typeof s!="string"?s:a.create(e,a.Fragment,{children:s||void 0},void 0)}function l_(e,n,r){if(n.type==="element")return f4(e,n,r);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return d4(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return p4(e,n,r);if(n.type==="mdxjsEsm")return h4(e,n);if(n.type==="root")return m4(e,n,r);if(n.type==="text")return g4(e,n)}function f4(e,n,r){const l=e.schema;let a=l;n.tagName.toLowerCase()==="svg"&&l.space==="html"&&(a=bm,e.schema=a),e.ancestors.push(n);const s=o_(e,n.tagName,!1),u=v4(e,n);let f=Em(e,n);return s4.has(n.tagName)&&(f=f.filter(function(h){return typeof h=="string"?!I5(h):!0})),a_(e,u,s,n),_m(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function d4(e,n){if(n.data&&n.data.estree&&e.evaluater){const l=n.data.estree.body[0];return l.type,e.evaluater.evaluateExpression(l.expression)}Bo(e,n.position)}function h4(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);Bo(e,n.position)}function p4(e,n,r){const l=e.schema;let a=l;n.name==="svg"&&l.space==="html"&&(a=bm,e.schema=a),e.ancestors.push(n);const s=n.name===null?e.Fragment:o_(e,n.name,!0),u=b4(e,n),f=Em(e,n);return a_(e,u,s,n),_m(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function m4(e,n,r){const l={};return _m(l,Em(e,n)),e.create(n,e.Fragment,l,r)}function g4(e,n){return n.value}function a_(e,n,r,l){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(n.node=l)}function _m(e,n){if(n.length>0){const r=n.length>1?n:n[0];r&&(e.children=r)}}function y4(e,n,r){return l;function l(a,s,u,f){const d=Array.isArray(u.children)?r:n;return f?d(s,u,f):d(s,u)}}function x4(e,n){return r;function r(l,a,s,u){const f=Array.isArray(s.children),h=wm(l);return n(a,s,u,f,{columnNumber:h?h.column-1:void 0,fileName:e,lineNumber:h?h.line:void 0},void 0)}}function v4(e,n){const r={};let l,a;for(a in n.properties)if(a!=="children"&&Sm.call(n.properties,a)){const s=w4(e,a,n.properties[a]);if(s){const[u,f]=s;e.tableCellAlignToStyle&&u==="align"&&typeof f=="string"&&u4.has(n.tagName)?l=f:r[u]=f}}if(l){const s=r.style||(r.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=l}return r}function b4(e,n){const r={};for(const l of n.attributes)if(l.type==="mdxJsxExpressionAttribute")if(l.data&&l.data.estree&&e.evaluater){const s=l.data.estree.body[0];s.type;const u=s.expression;u.type;const f=u.properties[0];f.type,Object.assign(r,e.evaluater.evaluateExpression(f.argument))}else Bo(e,n.position);else{const a=l.name;let s;if(l.value&&typeof l.value=="object")if(l.value.data&&l.value.data.estree&&e.evaluater){const f=l.value.data.estree.body[0];f.type,s=e.evaluater.evaluateExpression(f.expression)}else Bo(e,n.position);else s=l.value===null?!0:l.value;r[a]=s}return r}function Em(e,n){const r=[];let l=-1;const a=e.passKeys?new Map:a4;for(;++la?0:a+n:n=n>a?a:n,r=r>0?r:0,l.length<1e4)u=Array.from(l),u.unshift(n,r),e.splice(...u);else for(r&&e.splice(n,r);s0?(rr(e,e.length,0,n),e):n}const tb={}.hasOwnProperty;function z4(e){const n={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function ta(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const er=gi(/[A-Za-z]/),bn=gi(/[\dA-Za-z]/),j4=gi(/[#-'*+\--9=?A-Z^-~]/);function Ip(e){return e!==null&&(e<32||e===127)}const Vp=gi(/\d/),O4=gi(/[\dA-Fa-f]/),D4=gi(/[!-/:-@[-`{-~]/);function Te(e){return e!==null&&e<-2}function on(e){return e!==null&&(e<0||e===32)}function Ke(e){return e===-2||e===-1||e===32}const R4=gi(new RegExp("\\p{P}|\\p{S}","u")),L4=gi(/\s/);function gi(e){return n;function n(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function ca(e){const n=[];let r=-1,l=0,a=0;for(;++r55295&&s<57344){const f=e.charCodeAt(r+1);s<56320&&f>56319&&f<57344?(u=String.fromCharCode(s,f),a=1):u="�"}else u=String.fromCharCode(s);u&&(n.push(e.slice(l,r),encodeURIComponent(u)),l=r+a+1,u=""),a&&(r+=a,a=0)}return n.join("")+e.slice(l)}function st(e,n,r,l){const a=l?l-1:Number.POSITIVE_INFINITY;let s=0;return u;function u(h){return Ke(h)?(e.enter(r),f(h)):n(h)}function f(h){return Ke(h)&&s++u))return;const L=n.events.length;let D=L,U,X;for(;D--;)if(n.events[D][0]==="exit"&&n.events[D][1].type==="chunkFlow"){if(U){X=n.events[D][1].end;break}U=!0}for(_(l),A=L;AE;){const I=r[z];n.containerState=I[1],I[0].exit.call(n,e)}r.length=E}function T(){a.write([null]),s=void 0,a=void 0,n.containerState._closeFlow=void 0}}function I4(e,n,r){return st(e,e.attempt(this.parser.constructs.document,n,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function rb(e){if(e===null||on(e)||L4(e))return 1;if(R4(e))return 2}function km(e,n,r){const l=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const p={...e[l][1].end},y={...e[r][1].start};ib(p,-h),ib(y,h),u={type:h>1?"strongSequence":"emphasisSequence",start:p,end:{...e[l][1].end}},f={type:h>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:y},s={type:h>1?"strongText":"emphasisText",start:{...e[l][1].end},end:{...e[r][1].start}},a={type:h>1?"strong":"emphasis",start:{...u.start},end:{...f.end}},e[l][1].end={...u.start},e[r][1].start={...f.end},d=[],e[l][1].end.offset-e[l][1].start.offset&&(d=Mn(d,[["enter",e[l][1],n],["exit",e[l][1],n]])),d=Mn(d,[["enter",a,n],["enter",u,n],["exit",u,n],["enter",s,n]]),d=Mn(d,km(n.parser.constructs.insideSpan.null,e.slice(l+1,r),n)),d=Mn(d,[["exit",s,n],["enter",f,n],["exit",f,n],["exit",a,n]]),e[r][1].end.offset-e[r][1].start.offset?(m=2,d=Mn(d,[["enter",e[r][1],n],["exit",e[r][1],n]])):m=0,rr(e,l-1,r-l+3,d),r=l+d.length-m-2;break}}for(r=-1;++r0&&Ke(A)?st(e,T,"linePrefix",s+1)(A):T(A)}function T(A){return A===null||Te(A)?e.check(lb,k,z)(A):(e.enter("codeFlowValue"),E(A))}function E(A){return A===null||Te(A)?(e.exit("codeFlowValue"),T(A)):(e.consume(A),E)}function z(A){return e.exit("codeFenced"),n(A)}function I(A,L,D){let U=0;return X;function X(G){return A.enter("lineEnding"),A.consume(G),A.exit("lineEnding"),H}function H(G){return A.enter("codeFencedFence"),Ke(G)?st(A,q,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(G):q(G)}function q(G){return G===f?(A.enter("codeFencedFenceSequence"),ee(G)):D(G)}function ee(G){return G===f?(U++,A.consume(G),ee):U>=u?(A.exit("codeFencedFenceSequence"),Ke(G)?st(A,R,"whitespace")(G):R(G)):D(G)}function R(G){return G===null||Te(G)?(A.exit("codeFencedFence"),L(G)):D(G)}}}function W4(e,n,r){const l=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}const sp={name:"codeIndented",tokenize:tO},eO={partial:!0,tokenize:nO};function tO(e,n,r){const l=this;return a;function a(d){return e.enter("codeIndented"),st(e,s,"linePrefix",5)(d)}function s(d){const m=l.events[l.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?u(d):r(d)}function u(d){return d===null?h(d):Te(d)?e.attempt(eO,u,h)(d):(e.enter("codeFlowValue"),f(d))}function f(d){return d===null||Te(d)?(e.exit("codeFlowValue"),u(d)):(e.consume(d),f)}function h(d){return e.exit("codeIndented"),n(d)}}function nO(e,n,r){const l=this;return a;function a(u){return l.parser.lazy[l.now().line]?r(u):Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):st(e,s,"linePrefix",5)(u)}function s(u){const f=l.events[l.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?n(u):Te(u)?a(u):r(u)}}const rO={name:"codeText",previous:lO,resolve:iO,tokenize:aO};function iO(e){let n=e.length-4,r=3,l,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(l=r;++l=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return nthis.left.length?this.right.slice(this.right.length-l+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-l+this.left.length).reverse())}splice(n,r,l){const a=r||0;this.setCursor(Math.trunc(n));const s=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return l&&ho(this.left,l),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),ho(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),ho(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n=4?n(u):e.interrupt(l.parser.constructs.flow,r,n)(u)}}function p_(e,n,r,l,a,s,u,f,h){const d=h||Number.POSITIVE_INFINITY;let m=0;return p;function p(_){return _===60?(e.enter(l),e.enter(a),e.enter(s),e.consume(_),e.exit(s),y):_===null||_===32||_===41||Ip(_)?r(_):(e.enter(l),e.enter(u),e.enter(f),e.enter("chunkString",{contentType:"string"}),k(_))}function y(_){return _===62?(e.enter(s),e.consume(_),e.exit(s),e.exit(a),e.exit(l),n):(e.enter(f),e.enter("chunkString",{contentType:"string"}),v(_))}function v(_){return _===62?(e.exit("chunkString"),e.exit(f),y(_)):_===null||_===60||Te(_)?r(_):(e.consume(_),_===92?w:v)}function w(_){return _===60||_===62||_===92?(e.consume(_),v):v(_)}function k(_){return!m&&(_===null||_===41||on(_))?(e.exit("chunkString"),e.exit(f),e.exit(u),e.exit(l),n(_)):m999||v===null||v===91||v===93&&!h||v===94&&!f&&"_hiddenFootnoteSupport"in u.parser.constructs?r(v):v===93?(e.exit(s),e.enter(a),e.consume(v),e.exit(a),e.exit(l),n):Te(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===null||v===91||v===93||Te(v)||f++>999?(e.exit("chunkString"),m(v)):(e.consume(v),h||(h=!Ke(v)),v===92?y:p)}function y(v){return v===91||v===92||v===93?(e.consume(v),f++,p):p(v)}}function g_(e,n,r,l,a,s){let u;return f;function f(y){return y===34||y===39||y===40?(e.enter(l),e.enter(a),e.consume(y),e.exit(a),u=y===40?41:y,h):r(y)}function h(y){return y===u?(e.enter(a),e.consume(y),e.exit(a),e.exit(l),n):(e.enter(s),d(y))}function d(y){return y===u?(e.exit(s),h(u)):y===null?r(y):Te(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),st(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===u||y===null||Te(y)?(e.exit("chunkString"),d(y)):(e.consume(y),y===92?p:m)}function p(y){return y===u||y===92?(e.consume(y),m):m(y)}}function Eo(e,n){let r;return l;function l(a){return Te(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,l):Ke(a)?st(e,l,r?"linePrefix":"lineSuffix")(a):n(a)}}const pO={name:"definition",tokenize:gO},mO={partial:!0,tokenize:yO};function gO(e,n,r){const l=this;let a;return s;function s(v){return e.enter("definition"),u(v)}function u(v){return m_.call(l,e,f,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(v)}function f(v){return a=ta(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),v===58?(e.enter("definitionMarker"),e.consume(v),e.exit("definitionMarker"),h):r(v)}function h(v){return on(v)?Eo(e,d)(v):d(v)}function d(v){return p_(e,m,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(v)}function m(v){return e.attempt(mO,p,p)(v)}function p(v){return Ke(v)?st(e,y,"whitespace")(v):y(v)}function y(v){return v===null||Te(v)?(e.exit("definition"),l.parser.defined.push(a),n(v)):r(v)}}function yO(e,n,r){return l;function l(f){return on(f)?Eo(e,a)(f):r(f)}function a(f){return g_(e,s,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(f)}function s(f){return Ke(f)?st(e,u,"whitespace")(f):u(f)}function u(f){return f===null||Te(f)?n(f):r(f)}}const xO={name:"hardBreakEscape",tokenize:vO};function vO(e,n,r){return l;function l(s){return e.enter("hardBreakEscape"),e.consume(s),a}function a(s){return Te(s)?(e.exit("hardBreakEscape"),n(s)):r(s)}}const bO={name:"headingAtx",resolve:wO,tokenize:SO};function wO(e,n){let r=e.length-2,l=3,a,s;return e[l][1].type==="whitespace"&&(l+=2),r-2>l&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(l===r-1||r-4>l&&e[r-2][1].type==="whitespace")&&(r-=l+1===r?2:4),r>l&&(a={type:"atxHeadingText",start:e[l][1].start,end:e[r][1].end},s={type:"chunkText",start:e[l][1].start,end:e[r][1].end,contentType:"text"},rr(e,l,r-l+1,[["enter",a,n],["enter",s,n],["exit",s,n],["exit",a,n]])),e}function SO(e,n,r){let l=0;return a;function a(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),u(m)}function u(m){return m===35&&l++<6?(e.consume(m),u):m===null||on(m)?(e.exit("atxHeadingSequence"),f(m)):r(m)}function f(m){return m===35?(e.enter("atxHeadingSequence"),h(m)):m===null||Te(m)?(e.exit("atxHeading"),n(m)):Ke(m)?st(e,f,"whitespace")(m):(e.enter("atxHeadingText"),d(m))}function h(m){return m===35?(e.consume(m),h):(e.exit("atxHeadingSequence"),f(m))}function d(m){return m===null||m===35||on(m)?(e.exit("atxHeadingText"),f(m)):(e.consume(m),d)}}const _O=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ob=["pre","script","style","textarea"],EO={concrete:!0,name:"htmlFlow",resolveTo:CO,tokenize:TO},NO={partial:!0,tokenize:AO},kO={partial:!0,tokenize:zO};function CO(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function TO(e,n,r){const l=this;let a,s,u,f,h;return d;function d(N){return m(N)}function m(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),p}function p(N){return N===33?(e.consume(N),y):N===47?(e.consume(N),s=!0,k):N===63?(e.consume(N),a=3,l.interrupt?n:j):er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function y(N){return N===45?(e.consume(N),a=2,v):N===91?(e.consume(N),a=5,f=0,w):er(N)?(e.consume(N),a=4,l.interrupt?n:j):r(N)}function v(N){return N===45?(e.consume(N),l.interrupt?n:j):r(N)}function w(N){const Y="CDATA[";return N===Y.charCodeAt(f++)?(e.consume(N),f===Y.length?l.interrupt?n:q:w):r(N)}function k(N){return er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function S(N){if(N===null||N===47||N===62||on(N)){const Y=N===47,F=u.toLowerCase();return!Y&&!s&&ob.includes(F)?(a=1,l.interrupt?n(N):q(N)):_O.includes(u.toLowerCase())?(a=6,Y?(e.consume(N),_):l.interrupt?n(N):q(N)):(a=7,l.interrupt&&!l.parser.lazy[l.now().line]?r(N):s?T(N):E(N))}return N===45||bn(N)?(e.consume(N),u+=String.fromCharCode(N),S):r(N)}function _(N){return N===62?(e.consume(N),l.interrupt?n:q):r(N)}function T(N){return Ke(N)?(e.consume(N),T):X(N)}function E(N){return N===47?(e.consume(N),X):N===58||N===95||er(N)?(e.consume(N),z):Ke(N)?(e.consume(N),E):X(N)}function z(N){return N===45||N===46||N===58||N===95||bn(N)?(e.consume(N),z):I(N)}function I(N){return N===61?(e.consume(N),A):Ke(N)?(e.consume(N),I):E(N)}function A(N){return N===null||N===60||N===61||N===62||N===96?r(N):N===34||N===39?(e.consume(N),h=N,L):Ke(N)?(e.consume(N),A):D(N)}function L(N){return N===h?(e.consume(N),h=null,U):N===null||Te(N)?r(N):(e.consume(N),L)}function D(N){return N===null||N===34||N===39||N===47||N===60||N===61||N===62||N===96||on(N)?I(N):(e.consume(N),D)}function U(N){return N===47||N===62||Ke(N)?E(N):r(N)}function X(N){return N===62?(e.consume(N),H):r(N)}function H(N){return N===null||Te(N)?q(N):Ke(N)?(e.consume(N),H):r(N)}function q(N){return N===45&&a===2?(e.consume(N),M):N===60&&a===1?(e.consume(N),$):N===62&&a===4?(e.consume(N),B):N===63&&a===3?(e.consume(N),j):N===93&&a===5?(e.consume(N),K):Te(N)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(NO,P,ee)(N)):N===null||Te(N)?(e.exit("htmlFlowData"),ee(N)):(e.consume(N),q)}function ee(N){return e.check(kO,R,P)(N)}function R(N){return e.enter("lineEnding"),e.consume(N),e.exit("lineEnding"),G}function G(N){return N===null||Te(N)?ee(N):(e.enter("htmlFlowData"),q(N))}function M(N){return N===45?(e.consume(N),j):q(N)}function $(N){return N===47?(e.consume(N),u="",Q):q(N)}function Q(N){if(N===62){const Y=u.toLowerCase();return ob.includes(Y)?(e.consume(N),B):q(N)}return er(N)&&u.length<8?(e.consume(N),u+=String.fromCharCode(N),Q):q(N)}function K(N){return N===93?(e.consume(N),j):q(N)}function j(N){return N===62?(e.consume(N),B):N===45&&a===2?(e.consume(N),j):q(N)}function B(N){return N===null||Te(N)?(e.exit("htmlFlowData"),P(N)):(e.consume(N),B)}function P(N){return e.exit("htmlFlow"),n(N)}}function zO(e,n,r){const l=this;return a;function a(u){return Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s):r(u)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}function AO(e,n,r){return l;function l(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(kc,n,r)}}const MO={name:"htmlText",tokenize:jO};function jO(e,n,r){const l=this;let a,s,u;return f;function f(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),h}function h(j){return j===33?(e.consume(j),d):j===47?(e.consume(j),I):j===63?(e.consume(j),E):er(j)?(e.consume(j),D):r(j)}function d(j){return j===45?(e.consume(j),m):j===91?(e.consume(j),s=0,w):er(j)?(e.consume(j),T):r(j)}function m(j){return j===45?(e.consume(j),v):r(j)}function p(j){return j===null?r(j):j===45?(e.consume(j),y):Te(j)?(u=p,$(j)):(e.consume(j),p)}function y(j){return j===45?(e.consume(j),v):p(j)}function v(j){return j===62?M(j):j===45?y(j):p(j)}function w(j){const B="CDATA[";return j===B.charCodeAt(s++)?(e.consume(j),s===B.length?k:w):r(j)}function k(j){return j===null?r(j):j===93?(e.consume(j),S):Te(j)?(u=k,$(j)):(e.consume(j),k)}function S(j){return j===93?(e.consume(j),_):k(j)}function _(j){return j===62?M(j):j===93?(e.consume(j),_):k(j)}function T(j){return j===null||j===62?M(j):Te(j)?(u=T,$(j)):(e.consume(j),T)}function E(j){return j===null?r(j):j===63?(e.consume(j),z):Te(j)?(u=E,$(j)):(e.consume(j),E)}function z(j){return j===62?M(j):E(j)}function I(j){return er(j)?(e.consume(j),A):r(j)}function A(j){return j===45||bn(j)?(e.consume(j),A):L(j)}function L(j){return Te(j)?(u=L,$(j)):Ke(j)?(e.consume(j),L):M(j)}function D(j){return j===45||bn(j)?(e.consume(j),D):j===47||j===62||on(j)?U(j):r(j)}function U(j){return j===47?(e.consume(j),M):j===58||j===95||er(j)?(e.consume(j),X):Te(j)?(u=U,$(j)):Ke(j)?(e.consume(j),U):M(j)}function X(j){return j===45||j===46||j===58||j===95||bn(j)?(e.consume(j),X):H(j)}function H(j){return j===61?(e.consume(j),q):Te(j)?(u=H,$(j)):Ke(j)?(e.consume(j),H):U(j)}function q(j){return j===null||j===60||j===61||j===62||j===96?r(j):j===34||j===39?(e.consume(j),a=j,ee):Te(j)?(u=q,$(j)):Ke(j)?(e.consume(j),q):(e.consume(j),R)}function ee(j){return j===a?(e.consume(j),a=void 0,G):j===null?r(j):Te(j)?(u=ee,$(j)):(e.consume(j),ee)}function R(j){return j===null||j===34||j===39||j===60||j===61||j===96?r(j):j===47||j===62||on(j)?U(j):(e.consume(j),R)}function G(j){return j===47||j===62||on(j)?U(j):r(j)}function M(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),n):r(j)}function $(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),Q}function Q(j){return Ke(j)?st(e,K,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):K(j)}function K(j){return e.enter("htmlTextData"),u(j)}}const Cm={name:"labelEnd",resolveAll:LO,resolveTo:HO,tokenize:BO},OO={tokenize:qO},DO={tokenize:UO},RO={tokenize:IO};function LO(e){let n=-1;const r=[];for(;++n=3&&(d===null||Te(d))?(e.exit("thematicBreak"),n(d)):r(d)}function h(d){return d===a?(e.consume(d),l++,h):(e.exit("thematicBreakSequence"),Ke(d)?st(e,f,"whitespace")(d):f(d))}}const ln={continuation:{tokenize:KO},exit:WO,name:"list",tokenize:ZO},FO={partial:!0,tokenize:eD},QO={partial:!0,tokenize:JO};function ZO(e,n,r){const l=this,a=l.events[l.events.length-1];let s=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return f;function f(v){const w=l.containerState.type||(v===42||v===43||v===45?"listUnordered":"listOrdered");if(w==="listUnordered"?!l.containerState.marker||v===l.containerState.marker:Vp(v)){if(l.containerState.type||(l.containerState.type=w,e.enter(w,{_container:!0})),w==="listUnordered")return e.enter("listItemPrefix"),v===42||v===45?e.check(Pu,r,d)(v):d(v);if(!l.interrupt||v===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),h(v)}return r(v)}function h(v){return Vp(v)&&++u<10?(e.consume(v),h):(!l.interrupt||u<2)&&(l.containerState.marker?v===l.containerState.marker:v===41||v===46)?(e.exit("listItemValue"),d(v)):r(v)}function d(v){return e.enter("listItemMarker"),e.consume(v),e.exit("listItemMarker"),l.containerState.marker=l.containerState.marker||v,e.check(kc,l.interrupt?r:m,e.attempt(FO,y,p))}function m(v){return l.containerState.initialBlankLine=!0,s++,y(v)}function p(v){return Ke(v)?(e.enter("listItemPrefixWhitespace"),e.consume(v),e.exit("listItemPrefixWhitespace"),y):r(v)}function y(v){return l.containerState.size=s+l.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(v)}}function KO(e,n,r){const l=this;return l.containerState._closeFlow=void 0,e.check(kc,a,s);function a(f){return l.containerState.furtherBlankLines=l.containerState.furtherBlankLines||l.containerState.initialBlankLine,st(e,n,"listItemIndent",l.containerState.size+1)(f)}function s(f){return l.containerState.furtherBlankLines||!Ke(f)?(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,u(f)):(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,e.attempt(QO,n,u)(f))}function u(f){return l.containerState._closeFlow=!0,l.interrupt=void 0,st(e,e.attempt(ln,n,r),"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(f)}}function JO(e,n,r){const l=this;return st(e,a,"listItemIndent",l.containerState.size+1);function a(s){const u=l.events[l.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===l.containerState.size?n(s):r(s)}}function WO(e){e.exit(this.containerState.type)}function eD(e,n,r){const l=this;return st(e,a,"listItemPrefixWhitespace",l.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(s){const u=l.events[l.events.length-1];return!Ke(s)&&u&&u[1].type==="listItemPrefixWhitespace"?n(s):r(s)}}const sb={name:"setextUnderline",resolveTo:tD,tokenize:nD};function tD(e,n){let r=e.length,l,a,s;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){l=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!s&&e[r][1].type==="definition"&&(s=r);const u={type:"setextHeading",start:{...e[l][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",s?(e.splice(a,0,["enter",u,n]),e.splice(s+1,0,["exit",e[l][1],n]),e[l][1].end={...e[s][1].end}):e[l][1]=u,e.push(["exit",u,n]),e}function nD(e,n,r){const l=this;let a;return s;function s(d){let m=l.events.length,p;for(;m--;)if(l.events[m][1].type!=="lineEnding"&&l.events[m][1].type!=="linePrefix"&&l.events[m][1].type!=="content"){p=l.events[m][1].type==="paragraph";break}return!l.parser.lazy[l.now().line]&&(l.interrupt||p)?(e.enter("setextHeadingLine"),a=d,u(d)):r(d)}function u(d){return e.enter("setextHeadingLineSequence"),f(d)}function f(d){return d===a?(e.consume(d),f):(e.exit("setextHeadingLineSequence"),Ke(d)?st(e,h,"lineSuffix")(d):h(d))}function h(d){return d===null||Te(d)?(e.exit("setextHeadingLine"),n(d)):r(d)}}const rD={tokenize:iD};function iD(e){const n=this,r=e.attempt(kc,l,e.attempt(this.parser.constructs.flowInitial,a,st(e,e.attempt(this.parser.constructs.flow,a,e.attempt(uO,a)),"linePrefix")));return r;function l(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),n.currentConstruct=void 0,r}function a(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),n.currentConstruct=void 0,r}}const lD={resolveAll:x_()},aD=y_("string"),oD=y_("text");function y_(e){return{resolveAll:x_(e==="text"?sD:void 0),tokenize:n};function n(r){const l=this,a=this.parser.constructs[e],s=r.attempt(a,u,f);return u;function u(m){return d(m)?s(m):f(m)}function f(m){if(m===null){r.consume(m);return}return r.enter("data"),r.consume(m),h}function h(m){return d(m)?(r.exit("data"),s(m)):(r.consume(m),h)}function d(m){if(m===null)return!0;const p=a[m];let y=-1;if(p)for(;++y-1){const f=u[0];typeof f=="string"?u[0]=f.slice(l):u.shift()}s>0&&u.push(e[a].slice(0,s))}return u}function wD(e,n){let r=-1;const l=[];let a;for(;++r0){const Xt=Ne.tokenStack[Ne.tokenStack.length-1];(Xt[1]||cb).call(Ne,void 0,Xt[0])}for(ge.position={start:fi(ue.length>0?ue[0][1].start:{line:1,column:1,offset:0}),end:fi(ue.length>0?ue[ue.length-2][1].end:{line:1,column:1,offset:0})},Ye=-1;++Ye0&&(l.className=["language-"+a[0]]);let s={type:"element",tagName:"code",properties:l,children:[{type:"text",value:r}]};return n.meta&&(s.data={meta:n.meta}),e.patch(n,s),s=e.applyData(n,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(n,s),s}function RD(e,n){const r={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function LD(e,n){const r={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function HD(e,n){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",l=String(n.identifier).toUpperCase(),a=ca(l.toLowerCase()),s=e.footnoteOrder.indexOf(l);let u,f=e.footnoteCounts.get(l);f===void 0?(f=0,e.footnoteOrder.push(l),u=e.footnoteOrder.length):u=s+1,f+=1,e.footnoteCounts.set(l,f);const h={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(f>1?"-"+f:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,h);const d={type:"element",tagName:"sup",properties:{},children:[h]};return e.patch(n,d),e.applyData(n,d)}function BD(e,n){const r={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function qD(e,n){if(e.options.allowDangerousHtml){const r={type:"raw",value:n.value};return e.patch(n,r),e.applyData(n,r)}}function w_(e,n){const r=n.referenceType;let l="]";if(r==="collapsed"?l+="[]":r==="full"&&(l+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+l}];const a=e.all(n),s=a[0];s&&s.type==="text"?s.value="["+s.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=l:a.push({type:"text",value:l}),a}function UD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return w_(e,n);const a={src:ca(l.url||""),alt:n.alt};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"img",properties:a,children:[]};return e.patch(n,s),e.applyData(n,s)}function ID(e,n){const r={src:ca(n.url)};n.alt!==null&&n.alt!==void 0&&(r.alt=n.alt),n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"img",properties:r,children:[]};return e.patch(n,l),e.applyData(n,l)}function VD(e,n){const r={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,r);const l={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(n,l),e.applyData(n,l)}function GD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return w_(e,n);const a={href:ca(l.url||"")};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"a",properties:a,children:e.all(n)};return e.patch(n,s),e.applyData(n,s)}function YD(e,n){const r={href:ca(n.url)};n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"a",properties:r,children:e.all(n)};return e.patch(n,l),e.applyData(n,l)}function $D(e,n,r){const l=e.all(n),a=r?PD(r):S_(n),s={},u=[];if(typeof n.checked=="boolean"){const m=l[0];let p;m&&m.type==="element"&&m.tagName==="p"?p=m:(p={type:"element",tagName:"p",properties:{},children:[]},l.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let f=-1;for(;++f1}function XD(e,n){const r={},l=e.all(n);let a=-1;for(typeof n.start=="number"&&n.start!==1&&(r.start=n.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},f=wm(n.children[1]),h=n_(n.children[n.children.length-1]);f&&h&&(u.position={start:f,end:h}),a.push(u)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(n,s),e.applyData(n,s)}function JD(e,n,r){const l=r?r.children:void 0,s=(l?l.indexOf(n):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,f=u?u.length:n.children.length;let h=-1;const d=[];for(;++h0,!0),l[0]),a=l.index+l[0].length,l=r.exec(n);return s.push(hb(n.slice(a),a>0,!1)),s.join("")}function hb(e,n,r){let l=0,a=e.length;if(n){let s=e.codePointAt(l);for(;s===fb||s===db;)l++,s=e.codePointAt(l)}if(r){let s=e.codePointAt(a-1);for(;s===fb||s===db;)a--,s=e.codePointAt(a-1)}return a>l?e.slice(l,a):""}function tR(e,n){const r={type:"text",value:eR(String(n.value))};return e.patch(n,r),e.applyData(n,r)}function nR(e,n){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,r),e.applyData(n,r)}const rR={blockquote:jD,break:OD,code:DD,delete:RD,emphasis:LD,footnoteReference:HD,heading:BD,html:qD,imageReference:UD,image:ID,inlineCode:VD,linkReference:GD,link:YD,listItem:$D,list:XD,paragraph:FD,root:QD,strong:ZD,table:KD,tableCell:WD,tableRow:JD,text:tR,thematicBreak:nR,toml:Lu,yaml:Lu,definition:Lu,footnoteDefinition:Lu};function Lu(){}const __=-1,Cc=0,No=1,sc=2,Tm=3,zm=4,Am=5,Mm=6,E_=7,N_=8,pb=typeof self=="object"?self:globalThis,iR=(e,n)=>{const r=(a,s)=>(e.set(s,a),a),l=a=>{if(e.has(a))return e.get(a);const[s,u]=n[a];switch(s){case Cc:case __:return r(u,a);case No:{const f=r([],a);for(const h of u)f.push(l(h));return f}case sc:{const f=r({},a);for(const[h,d]of u)f[l(h)]=l(d);return f}case Tm:return r(new Date(u),a);case zm:{const{source:f,flags:h}=u;return r(new RegExp(f,h),a)}case Am:{const f=r(new Map,a);for(const[h,d]of u)f.set(l(h),l(d));return f}case Mm:{const f=r(new Set,a);for(const h of u)f.add(l(h));return f}case E_:{const{name:f,message:h}=u;return r(new pb[f](h),a)}case N_:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:f}=new Uint8Array(u);return r(new DataView(f),u)}}return r(new pb[s](u),a)};return l},mb=e=>iR(new Map,e)(0),Yl="",{toString:lR}={},{keys:aR}=Object,po=e=>{const n=typeof e;if(n!=="object"||!e)return[Cc,n];const r=lR.call(e).slice(8,-1);switch(r){case"Array":return[No,Yl];case"Object":return[sc,Yl];case"Date":return[Tm,Yl];case"RegExp":return[zm,Yl];case"Map":return[Am,Yl];case"Set":return[Mm,Yl];case"DataView":return[No,r]}return r.includes("Array")?[No,r]:r.includes("Error")?[E_,r]:[sc,r]},Hu=([e,n])=>e===Cc&&(n==="function"||n==="symbol"),oR=(e,n,r,l)=>{const a=(u,f)=>{const h=l.push(u)-1;return r.set(f,h),h},s=u=>{if(r.has(u))return r.get(u);let[f,h]=po(u);switch(f){case Cc:{let m=u;switch(h){case"bigint":f=N_,m=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+h);m=null;break;case"undefined":return a([__],u)}return a([f,m],u)}case No:{if(h){let y=u;return h==="DataView"?y=new Uint8Array(u.buffer):h==="ArrayBuffer"&&(y=new Uint8Array(u)),a([h,[...y]],u)}const m=[],p=a([f,m],u);for(const y of u)m.push(s(y));return p}case sc:{if(h)switch(h){case"BigInt":return a([h,u.toString()],u);case"Boolean":case"Number":case"String":return a([h,u.valueOf()],u)}if(n&&"toJSON"in u)return s(u.toJSON());const m=[],p=a([f,m],u);for(const y of aR(u))(e||!Hu(po(u[y])))&&m.push([s(y),s(u[y])]);return p}case Tm:return a([f,u.toISOString()],u);case zm:{const{source:m,flags:p}=u;return a([f,{source:m,flags:p}],u)}case Am:{const m=[],p=a([f,m],u);for(const[y,v]of u)(e||!(Hu(po(y))||Hu(po(v))))&&m.push([s(y),s(v)]);return p}case Mm:{const m=[],p=a([f,m],u);for(const y of u)(e||!Hu(po(y)))&&m.push(s(y));return p}}const{message:d}=u;return a([f,{name:h,message:d}],u)};return s},gb=(e,{json:n,lossy:r}={})=>{const l=[];return oR(!(n||r),!!n,new Map,l)(e),l},uc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?mb(gb(e,n)):structuredClone(e):(e,n)=>mb(gb(e,n));function sR(e,n){const r=[{type:"text",value:"↩"}];return n>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),r}function uR(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function cR(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||sR,l=e.options.footnoteBackLabel||uR,a=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},f=[];let h=-1;for(;++h0&&w.push({type:"text",value:" "});let T=typeof r=="string"?r:r(h,v);typeof T=="string"&&(T={type:"text",value:T}),w.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+y+(v>1?"-"+v:""),dataFootnoteBackref:"",ariaLabel:typeof l=="string"?l:l(h,v),className:["data-footnote-backref"]},children:Array.isArray(T)?T:[T]})}const S=m[m.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const T=S.children[S.children.length-1];T&&T.type==="text"?T.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...w)}else m.push(...w);const _={type:"element",tagName:"li",properties:{id:n+"fn-"+y},children:e.wrap(m,!0)};e.patch(d,_),f.push(_)}if(f.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...uc(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(f,!0)},{type:"text",value:` +`}]}}const k_=(function(e){if(e==null)return pR;if(typeof e=="function")return Tc(e);if(typeof e=="object")return Array.isArray(e)?fR(e):dR(e);if(typeof e=="string")return hR(e);throw new Error("Expected function, string, or object as test")});function fR(e){const n=[];let r=-1;for(;++r":""))+")"})}return y;function y(){let v=C_,w,k,S;if((!n||s(h,d,m[m.length-1]||void 0))&&(v=vR(r(h,m)),v[0]===yb))return v;if("children"in h&&h.children){const _=h;if(_.children&&v[0]!==yR)for(k=(l?_.children.length:-1)+u,S=m.concat(_);k>-1&&k<_.children.length;){const T=_.children[k];if(w=f(T,k,S)(),w[0]===yb)return w;k=typeof w[1]=="number"?w[1]:k+u}}return v}}}function vR(e){return Array.isArray(e)?e:typeof e=="number"?[gR,e]:e==null?C_:[e]}function T_(e,n,r,l){let a,s,u;typeof n=="function"&&typeof r!="function"?(s=void 0,u=n,a=r):(s=n,u=r,a=l),xR(e,s,f,a);function f(h,d){const m=d[d.length-1],p=m?m.children.indexOf(h):void 0;return u(h,p,m)}}const Yp={}.hasOwnProperty,bR={};function wR(e,n){const r=n||bR,l=new Map,a=new Map,s=new Map,u={...rR,...r.handlers},f={all:d,applyData:_R,definitionById:l,footnoteById:a,footnoteCounts:s,footnoteOrder:[],handlers:u,one:h,options:r,patch:SR,wrap:NR};return T_(e,function(m){if(m.type==="definition"||m.type==="footnoteDefinition"){const p=m.type==="definition"?l:a,y=String(m.identifier).toUpperCase();p.has(y)||p.set(y,m)}}),f;function h(m,p){const y=m.type,v=f.handlers[y];if(Yp.call(f.handlers,y)&&v)return v(f,m,p);if(f.options.passThrough&&f.options.passThrough.includes(y)){if("children"in m){const{children:k,...S}=m,_=uc(S);return _.children=f.all(m),_}return uc(m)}return(f.options.unknownHandler||ER)(f,m,p)}function d(m){const p=[];if("children"in m){const y=m.children;let v=-1;for(;++v0&&r.push({type:"text",value:` +`}),r}function xb(e){let n=0,r=e.charCodeAt(n);for(;r===9||r===32;)n++,r=e.charCodeAt(n);return e.slice(n)}function vb(e,n){const r=wR(e,n),l=r.one(e,void 0),a=cR(r),s=Array.isArray(l)?{type:"root",children:l}:l||{type:"root",children:[]};return a&&s.children.push({type:"text",value:` +`},a),s}function kR(e,n){return e&&"run"in e?async function(r,l){const a=vb(r,{file:l,...n});await e.run(a,l)}:function(r,l){return vb(r,{file:l,...e||n})}}function bb(e){if(e)throw e}var cp,wb;function CR(){if(wb)return cp;wb=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,l=Object.getOwnPropertyDescriptor,a=function(d){return typeof Array.isArray=="function"?Array.isArray(d):n.call(d)==="[object Array]"},s=function(d){if(!d||n.call(d)!=="[object Object]")return!1;var m=e.call(d,"constructor"),p=d.constructor&&d.constructor.prototype&&e.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!m&&!p)return!1;var y;for(y in d);return typeof y>"u"||e.call(d,y)},u=function(d,m){r&&m.name==="__proto__"?r(d,m.name,{enumerable:!0,configurable:!0,value:m.newValue,writable:!0}):d[m.name]=m.newValue},f=function(d,m){if(m==="__proto__")if(e.call(d,m)){if(l)return l(d,m).value}else return;return d[m]};return cp=function h(){var d,m,p,y,v,w,k=arguments[0],S=1,_=arguments.length,T=!1;for(typeof k=="boolean"&&(T=k,k=arguments[1]||{},S=2),(k==null||typeof k!="object"&&typeof k!="function")&&(k={});S<_;++S)if(d=arguments[S],d!=null)for(m in d)p=f(k,m),y=f(d,m),k!==y&&(T&&y&&(s(y)||(v=a(y)))?(v?(v=!1,w=p&&a(p)?p:[]):w=p&&s(p)?p:{},u(k,{name:m,newValue:h(T,w,y)})):typeof y<"u"&&u(k,{name:m,newValue:y}));return k},cp}var TR=CR();const fp=qo(TR);function $p(e){if(typeof e!="object"||e===null)return!1;const n=Object.getPrototypeOf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function zR(){const e=[],n={run:r,use:l};return n;function r(...a){let s=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);f(null,...a);function f(h,...d){const m=e[++s];let p=-1;if(h){u(h);return}for(;++pu.length;let h;f&&u.push(a);try{h=e.apply(this,u)}catch(d){const m=d;if(f&&r)throw m;return a(m)}f||(h&&h.then&&typeof h.then=="function"?h.then(s,a):h instanceof Error?a(h):s(h))}function a(u,...f){r||(r=!0,n(u,...f))}function s(u){a(null,u)}}const Jn={basename:MR,dirname:jR,extname:OR,join:DR,sep:"/"};function MR(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Jo(e);let r=0,l=-1,a=e.length,s;if(n===void 0||n.length===0||n.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else l<0&&(s=!0,l=a+1);return l<0?"":e.slice(r,l)}if(n===e)return"";let u=-1,f=n.length-1;for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else u<0&&(s=!0,u=a+1),f>-1&&(e.codePointAt(a)===n.codePointAt(f--)?f<0&&(l=a):(f=-1,l=u));return r===l?l=u:l<0&&(l=e.length),e.slice(r,l)}function jR(e){if(Jo(e),e.length===0)return".";let n=-1,r=e.length,l;for(;--r;)if(e.codePointAt(r)===47){if(l){n=r;break}}else l||(l=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function OR(e){Jo(e);let n=e.length,r=-1,l=0,a=-1,s=0,u;for(;n--;){const f=e.codePointAt(n);if(f===47){if(u){l=n+1;break}continue}r<0&&(u=!0,r=n+1),f===46?a<0?a=n:s!==1&&(s=1):a>-1&&(s=-1)}return a<0||r<0||s===0||s===1&&a===r-1&&a===l+1?"":e.slice(a,r)}function DR(...e){let n=-1,r;for(;++n0&&e.codePointAt(e.length-1)===47&&(r+="/"),n?"/"+r:r}function LR(e,n){let r="",l=0,a=-1,s=0,u=-1,f,h;for(;++u<=e.length;){if(u2){if(h=r.lastIndexOf("/"),h!==r.length-1){h<0?(r="",l=0):(r=r.slice(0,h),l=r.length-1-r.lastIndexOf("/")),a=u,s=0;continue}}else if(r.length>0){r="",l=0,a=u,s=0;continue}}n&&(r=r.length>0?r+"/..":"..",l=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),l=u-a-1;a=u,s=0}else f===46&&s>-1?s++:s=-1}return r}function Jo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const HR={cwd:BR};function BR(){return"/"}function Pp(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function qR(e){if(typeof e=="string")e=new URL(e);else if(!Pp(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return UR(e)}function UR(e){if(e.hostname!==""){const l=new TypeError('File URL host must be "localhost" or empty on darwin');throw l.code="ERR_INVALID_FILE_URL_HOST",l}const n=e.pathname;let r=-1;for(;++r0){let[v,...w]=m;const k=l[y][1];$p(k)&&$p(v)&&(v=fp(!0,k,v)),l[y]=[d,v,...w]}}}}const YR=new jm().freeze();function mp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function gp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function yp(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function _b(e){if(!$p(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Eb(e,n,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Bu(e){return $R(e)?e:new z_(e)}function $R(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function PR(e){return typeof e=="string"||XR(e)}function XR(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const FR="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Nb=[],kb={allowDangerousHtml:!0},QR=/^(https?|ircs?|mailto|xmpp)$/i,ZR=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function KR(e){const n=JR(e),r=WR(e);return e6(n.runSync(n.parse(r),r),e)}function JR(e){const n=e.rehypePlugins||Nb,r=e.remarkPlugins||Nb,l=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...kb}:kb;return YR().use(MD).use(r).use(kR,l).use(n)}function WR(e){const n=e.children||"",r=new z_;return typeof n=="string"&&(r.value=n),r}function e6(e,n){const r=n.allowedElements,l=n.allowElement,a=n.components,s=n.disallowedElements,u=n.skipHtml,f=n.unwrapDisallowed,h=n.urlTransform||t6;for(const m of ZR)Object.hasOwn(n,m.from)&&(""+m.from+(m.to?"use `"+m.to+"` instead":"remove it")+FR+m.id,void 0);return T_(e,d),c4(e,{Fragment:b.Fragment,components:a,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function d(m,p,y){if(m.type==="raw"&&y&&typeof p=="number")return u?y.children.splice(p,1):y.children[p]={type:"text",value:m.value},p;if(m.type==="element"){let v;for(v in op)if(Object.hasOwn(op,v)&&Object.hasOwn(m.properties,v)){const w=m.properties[v],k=op[v];(k===null||k.includes(m.tagName))&&(m.properties[v]=h(String(w||""),v,m))}}if(m.type==="element"){let v=r?!r.includes(m.tagName):s?s.includes(m.tagName):!1;if(!v&&l&&typeof p=="number"&&(v=!l(m,p,y)),v&&y&&typeof p=="number")return f&&m.children?y.children.splice(p,1,...m.children):y.children.splice(p,1),p}}}function t6(e){const n=e.indexOf(":"),r=e.indexOf("?"),l=e.indexOf("#"),a=e.indexOf("/");return n===-1||a!==-1&&n>a||r!==-1&&n>r||l!==-1&&n>l||QR.test(e.slice(0,n))?e:""}function n6({node:e}){const n=he(E=>E.sendGateResponse),r=he(E=>E.wsStatus),[l,a]=V.useState(null),[s,u]=V.useState(""),[f,h]=V.useState(null),[d,m]=V.useState(!1),p=e.status==="waiting",y=e.status==="completed";V.useEffect(()=>{p&&(a(null),u(""),h(null),m(!1))},[p]);const v=p&&r==="connected"&&l===null,w=(E,z)=>{if(v){if(z){a(E),h(z);return}a(E),m(!0),n(e.name,E)}},k=()=>{if(l===null||f===null)return;const E={[f]:s};m(!0),n(e.name,l,E),h(null)},S=e.option_details,_=S==null?void 0:S.find(E=>E.value===e.selected_option),T=(_==null?void 0:_.label)||e.selected_option;return b.jsxs("div",{className:"space-y-3",children:[p&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30",children:[b.jsxs("span",{className:"relative flex h-2.5 w-2.5 flex-shrink-0",children:[b.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),b.jsx("span",{className:"relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"})]}),b.jsx("span",{className:"text-xs font-semibold text-amber-400 tracking-wide",children:"Decision Required"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-amber-500/50 pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!1})}),S&&S.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsx("div",{className:"flex flex-col gap-1.5",children:S.map(E=>{const z=l===E.value,I=l!==null&&!z;return b.jsx("button",{disabled:!v&&!z,onClick:()=>w(E.value,E.prompt_for),className:`w-full text-left px-3 py-2.5 rounded-lg border transition-all duration-150 ${z?"border-green-500/60 bg-green-500/10":I?"border-[var(--border)] opacity-40 cursor-default":"border-[var(--border)] bg-[var(--surface)] hover:border-amber-400/60 hover:bg-amber-500/5 cursor-pointer group"}`,children:b.jsxs("div",{className:"flex items-center gap-2.5",children:[b.jsx("div",{className:"flex-shrink-0",children:z?b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}):b.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-colors ${I?"border-[var(--border)]":"border-[var(--border)] group-hover:border-amber-400"}`})}),b.jsx("div",{className:"flex-1 min-w-0",children:b.jsx("span",{className:`text-xs font-medium ${z?"text-green-400":"text-[var(--text)]"}`,children:E.label})}),E.route&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0",children:["→ ",E.route]})]})},E.value)})}),d&&!f&&b.jsxs("div",{className:"flex items-center gap-2 px-1",children:[b.jsx(ko,{className:"w-3 h-3 text-green-400 animate-spin"}),b.jsx("span",{className:"text-[10px] text-green-400",children:"Sending..."})]}),v&&b.jsx("p",{className:"text-[10px] text-[var(--text-muted)] px-1",children:"Select an option to continue the workflow"})]}),!S&&e.options&&e.options.length>0&&b.jsxs("div",{className:"space-y-1.5",children:[b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:"Options"}),b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded border border-[var(--border)] text-[var(--text-muted)]",children:E},E))})]}),f&&b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--bg)] overflow-hidden",children:[b.jsx("div",{className:"px-3 py-2 border-b border-[var(--border)] bg-[var(--surface)]",children:b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:f})}),b.jsxs("div",{className:"p-3 space-y-2",children:[b.jsx("input",{type:"text",value:s,onChange:E=>u(E.target.value),onKeyDown:E=>E.key==="Enter"&&k(),placeholder:`Enter ${f}...`,className:"w-full text-xs px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--bg)] text-[var(--text)] outline-none focus:border-amber-400 transition-colors",autoFocus:!0}),b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:"Press Enter or click Submit"}),b.jsxs("button",{onClick:k,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-amber-500 text-white hover:bg-amber-600 transition-colors font-medium",children:[b.jsx(fN,{className:"w-3 h-3"}),"Submit"]})]})]})]})]}),y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-green-500/10 border border-green-500/30",children:[b.jsx(Vi,{className:"w-3.5 h-3.5 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-green-400 tracking-wide",children:"Decision Completed"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!0})}),T&&b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)]",children:T}),e.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",e.route]})]}),S&&S.length>1&&b.jsx("div",{className:"space-y-1",children:S.filter(E=>E.value!==e.selected_option).map(E=>b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg opacity-35",children:[b.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-[var(--border)] flex-shrink-0"}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:E.label}),E.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",E.route]})]},E.value))}),!S&&e.options&&e.options.length>0&&b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsxs("span",{className:`text-[11px] px-2.5 py-1 rounded-lg border ${E===e.selected_option?"border-green-500/30 text-green-400 bg-green-500/5":"border-[var(--border)] text-[var(--text-muted)] opacity-40"}`,children:[E===e.selected_option&&"✓ ",E]},E))}),b.jsx(r6,{node:e})]}),!p&&!y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Human Gate"}),b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] capitalize",children:["(",e.status,")"]})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!0})})]})]})}function xp({text:e,muted:n}){const r=n?"text-[var(--text-muted)]":"text-[var(--text)]";return b.jsx("div",{className:`gate-markdown text-xs leading-relaxed ${r}`,children:b.jsx(KR,{components:{h1:({children:l})=>b.jsx("h1",{className:"text-sm font-bold mb-2 mt-1",children:l}),h2:({children:l})=>b.jsx("h2",{className:"text-xs font-bold mb-1.5 mt-1",children:l}),h3:({children:l})=>b.jsx("h3",{className:"text-xs font-semibold mb-1 mt-1",children:l}),p:({children:l})=>b.jsx("p",{className:"mb-1.5 last:mb-0",children:l}),ul:({children:l})=>b.jsx("ul",{className:"list-disc list-inside mb-1.5 space-y-0.5",children:l}),ol:({children:l})=>b.jsx("ol",{className:"list-decimal list-inside mb-1.5 space-y-0.5",children:l}),li:({children:l})=>b.jsx("li",{children:l}),code:({children:l,className:a})=>(a==null?void 0:a.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-2 py-1.5 font-mono text-[11px] my-1 overflow-x-auto whitespace-pre",children:l}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:l}),pre:({children:l})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-2.5 py-2 font-mono text-[11px] my-1.5 overflow-x-auto",children:l}),strong:({children:l})=>b.jsx("strong",{className:"font-semibold",children:l}),em:({children:l})=>b.jsx("em",{className:"italic",children:l}),a:({href:l,children:a})=>b.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:a}),blockquote:({children:l})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-2.5 my-1.5 opacity-80",children:l}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-2"})},children:e})})}function r6({node:e}){const n=[];if(e.route&&n.push({label:"Route",value:`→ ${e.route}`}),e.additional_input){const r=typeof e.additional_input=="object"?JSON.stringify(e.additional_input):e.additional_input;n.push({label:"Additional Input",value:r})}return n.length===0?null:b.jsx(el,{items:n})}function i6({node:e}){const n=e.status,r=$e[n]||$e.pending,a=yj()[e.name],s=e.type==="for_each_group",[u,f]=V.useState(!0),h=[];e.elapsed!=null&&h.push({label:"Elapsed",value:Qt(e.elapsed)}),a&&(h.push({label:"Total",value:a.total}),h.push({label:"Completed",value:a.completed}),a.failed>0&&h.push({label:"Failed",value:a.failed})),e.success_count!=null&&h.push({label:"Success",value:e.success_count}),e.failure_count!=null&&h.push({label:"Failures",value:e.failure_count});const d=e.for_each_items;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:s?"For-Each Group":"Parallel Group"})]}),a&&a.total>0&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-[10px] text-[var(--text-muted)]",children:[b.jsx("span",{children:"Progress"}),b.jsxs("span",{children:[a.completed+a.failed,"/",a.total]})]}),b.jsx("div",{className:"h-1.5 bg-[var(--bg)] rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${(a.completed+a.failed)/a.total*100}%`,background:a.failed>0?`linear-gradient(90deg, var(--completed) ${a.completed/(a.completed+a.failed)*100}%, var(--failed) 0%)`:"var(--completed)"}})})]}),b.jsx(el,{items:h}),s&&d&&d.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold hover:text-[var(--text)] transition-colors",children:[u?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Items (",d.length,")"]}),u&&b.jsx("div",{className:"space-y-1",children:d.map(m=>b.jsx(a6,{item:m},`${m.key}-${m.index}`))})]})]})}const l6={running:$e.running,completed:$e.completed,failed:$e.failed};function a6({item:e}){const[n,r]=V.useState(e.status==="running"),l=l6[e.status],a=!!(e.prompt||e.output!=null||e.activity&&e.activity.length>0||e.error_type),s=[];return e.elapsed!=null&&s.push({label:"Elapsed",value:Qt(e.elapsed)}),e.tokens!=null&&s.push({label:"Tokens",value:Vn(e.tokens)}),e.cost_usd!=null&&s.push({label:"Cost",value:mi(e.cost_usd)}),b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--surface)] overflow-hidden",children:[b.jsxs("button",{onClick:()=>a&&r(!n),className:"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--node-bg)] transition-colors",disabled:!a,children:[a?n?b.jsx(Ji,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):e.status==="running"?b.jsx(ko,{className:"w-3 h-3 animate-spin flex-shrink-0",style:{color:l}}):b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0 ml-0.5 mr-0.5",style:{backgroundColor:l}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1 min-w-0",children:e.key}),!n&&(e.elapsed!=null||e.tokens!=null||e.cost_usd!=null)&&b.jsxs("span",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)] flex-shrink-0",children:[e.elapsed!=null&&b.jsx("span",{children:Qt(e.elapsed)}),e.tokens!=null&&b.jsx("span",{children:Vn(e.tokens)}),e.cost_usd!=null&&b.jsx("span",{children:mi(e.cost_usd)})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${l}20`,color:l},children:e.status})]}),n&&a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[s.length>0&&b.jsx(el,{items:s}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!1}),e.activity&&e.activity.length>0&&b.jsx(xm,{activity:e.activity,defaultExpanded:e.status!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output",defaultExpanded:!0}),e.status==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]})]})]})}function o6({node:e}){const n=e.status,r=$e[n]||$e.pending,l=he(f=>f.navigateIntoSubworkflow),s=IS().filter(f=>f.parentAgent===e.name),u=[];return e.elapsed!=null&&u.push({label:"Elapsed",value:Qt(e.elapsed)}),e.cost_usd!=null&&u.push({label:"Cost",value:mi(e.cost_usd)}),e.tokens!=null&&u.push({label:"Tokens",value:Vn(e.tokens)}),e.iteration!=null&&e.iteration>1&&u.push({label:"Iteration",value:e.iteration}),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Subworkflow Agent"})]}),b.jsx(el,{items:u}),s.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:["Subworkflow Runs (",s.length,")"]}),b.jsx("div",{className:"space-y-1",children:s.map((f,h)=>b.jsx(s6,{ctx:f,onClick:()=>l(e.name,f.iteration)},`${f.parentAgent}-${f.iteration}-${h}`))})]}),n==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]}),s.length===0&&n==="pending"&&b.jsx("div",{className:"text-xs text-[var(--text-muted)] italic",children:"Subworkflow has not started yet."})]})}function s6({ctx:e,onClick:n}){const r=$e[e.status]||$e.pending;return b.jsxs("button",{onClick:n,className:"flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--surface)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[b.jsx(Xp,{className:"w-3.5 h-3.5 flex-shrink-0",style:{color:r}}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:e.workflowName||e.workflowFile||"Subworkflow"}),b.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)]",children:[e.agentsTotal>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(Db,{className:"w-2.5 h-2.5"}),e.agentsCompleted,"/",e.agentsTotal," agents"]}),e.totalCost>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(jb,{className:"w-2.5 h-2.5"}),mi(e.totalCost)]})]})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${r}20`,color:r},children:e.status}),b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}function u6(){const e=he(f=>f.selectedNode),n=Wi(),r=he(f=>f.selectNode),[l,a]=V.useState(!1);V.useEffect(()=>(requestAnimationFrame(()=>a(!0)),()=>a(!1)),[e]);const s=e?n[e]:null;if(!e||!s)return b.jsxs("div",{className:"h-full flex flex-col bg-[var(--surface)]",children:[b.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Detail"})}),b.jsx("div",{className:"flex-1 flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Click a node to view details"})})]});const u=(()=>{switch(s.type){case"script":return R5;case"human_gate":return n6;case"parallel_group":case"for_each_group":return i6;case"workflow":return o6;default:return O5}})();return b.jsxs("div",{className:Be("h-full flex flex-col bg-[var(--surface)] transition-all duration-150 ease-out",l?"translate-x-0 opacity-100":"translate-x-4 opacity-0"),children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)] flex-shrink-0",children:[b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] truncate",children:e}),b.jsx("button",{onClick:()=>r(null),className:"p-1 rounded hover:bg-[var(--surface-hover)] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Close panel",children:b.jsx(Io,{className:"w-4 h-4"})})]}),b.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:b.jsx(u,{node:s})})]})}function Xu(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function c6(){const e=he(S=>S.eventLog),n=he(S=>S.activityLog),r=he(S=>S.workflowOutput),l=he(S=>S.workflowStatus),[a,s]=V.useState("log"),[u,f]=V.useState(!1),[h,d]=V.useState(0),[m,p]=V.useState(0),y=V.useCallback(S=>{s(S),S==="log"&&d(e.length),S==="activity"&&p(n.length)},[e.length,n.length]);V.useEffect(()=>{a==="log"&&d(e.length)},[a,e.length]),V.useEffect(()=>{a==="activity"&&p(n.length)},[a,n.length]),V.useEffect(()=>{l==="completed"&&r!=null&&s("output")},[l,r]);const v=r!=null,w=a!=="log"?Math.max(0,e.length-h):0,k=a!=="activity"?Math.max(0,n.length-m):0;return u?b.jsx("div",{className:"flex items-center bg-[var(--surface)] border-t border-[var(--border)] px-3 py-1",children:b.jsxs("button",{onClick:()=>f(!1),className:"flex items-center gap-1.5 text-xs text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",children:[b.jsx(W2,{className:"w-3 h-3"}),b.jsx(Nx,{className:"w-3 h-3"}),b.jsx("span",{children:"Output"}),n.length>0&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)]",children:["(",n.length,")"]})]})}):b.jsxs("div",{className:"flex flex-col h-full bg-[var(--surface)] border-t border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center justify-between px-2 flex-shrink-0 border-b border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center gap-0.5",children:[b.jsx(vp,{active:a==="log",onClick:()=>y("log"),icon:b.jsx(Nx,{className:"w-3 h-3"}),label:"Log",count:e.length,unread:w}),b.jsx(vp,{active:a==="activity",onClick:()=>y("activity"),icon:b.jsx(Mb,{className:"w-3 h-3"}),label:"Activity",count:n.length,unread:k}),b.jsx(vp,{active:a==="output",onClick:()=>y("output"),icon:b.jsx(lN,{className:"w-3 h-3"}),label:"Output",badge:v?l==="failed"?"error":"success":void 0})]}),b.jsx("button",{onClick:()=>f(!0),className:"p-1 rounded text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors",title:"Collapse panel",children:b.jsx(Ji,{className:"w-3.5 h-3.5"})})]}),b.jsx("div",{className:"flex-1 overflow-hidden",children:a==="activity"?b.jsx(f6,{entries:n}):a==="log"?b.jsx(d6,{entries:e}):b.jsx(h6,{output:r,status:l})})]})}function vp({active:e,onClick:n,icon:r,label:l,count:a,badge:s,unread:u}){return b.jsxs("button",{onClick:n,className:Be("relative flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors border-b-2 -mb-px",e?"text-[var(--text)] border-[var(--accent)]":"text-[var(--text-muted)] border-transparent hover:text-[var(--text-secondary)]"),children:[r,b.jsx("span",{children:l}),a!=null&&a>0&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums",children:a}),s&&b.jsx("span",{className:Be("w-1.5 h-1.5 rounded-full",s==="success"?"bg-[var(--completed)]":"bg-[var(--failed)]")}),!e&&u!=null&&u>0&&b.jsx("span",{className:"absolute -top-0.5 -right-0.5 flex h-3.5 min-w-[14px] items-center justify-center rounded-full bg-[var(--accent)] px-1",children:b.jsx("span",{className:"text-[8px] font-bold text-white leading-none tabular-nums",children:u>99?"99+":u})})]})}const Cb={reasoning:{color:"text-indigo-400/70",label:"THINK",labelColor:"text-indigo-500"},"tool-start":{color:"text-blue-400",label:"TOOL →",labelColor:"text-blue-500"},"tool-complete":{color:"text-green-400",label:"TOOL ←",labelColor:"text-green-600"},turn:{color:"text-amber-400",label:"STEP",labelColor:"text-amber-500"},message:{color:"text-[var(--text)]",label:"MSG",labelColor:"text-[var(--text-muted)]"},prompt:{color:"text-cyan-400/70",label:"PROMPT",labelColor:"text-cyan-600"}};function f6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(h=>h.selectNode),[a,s]=V.useState(""),u=V.useCallback(()=>{const h=n.current;if(!h)return;const d=h.scrollHeight-h.scrollTop-h.clientHeight<30;r.current=d},[]),f=V.useMemo(()=>{if(!a)return e;const h=a.toLowerCase();return e.filter(d=>d.source.toLowerCase().includes(h)||Xu(d.message).toLowerCase().includes(h))},[e,a]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[f.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for agent activity…"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx(cN,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("input",{type:"text",value:a,onChange:h=>s(h.target.value),placeholder:"Filter by agent or message…",className:"flex-1 bg-transparent text-[11px] text-[var(--text)] placeholder:text-[var(--text-muted)] outline-none min-w-0"}),a&&b.jsxs(b.Fragment,{children:[b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums flex-shrink-0",children:[f.length," of ",e.length]}),b.jsx("button",{onClick:()=>s(""),className:"text-[var(--text-muted)] hover:text-[var(--text)] transition-colors flex-shrink-0",title:"Clear filter",children:b.jsx(Io,{className:"w-3 h-3"})})]})]}),b.jsxs("div",{ref:n,onScroll:u,className:"flex-1 overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:[f.map((h,d)=>{const m=Cb[h.type]||Cb.message,p=A_(h.timestamp);return b.jsxs("div",{className:"group",children:[b.jsxs("div",{className:"flex gap-1.5 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:p}),b.jsx("span",{className:Be("flex-shrink-0 w-[5ch] text-[10px] font-semibold tabular-nums select-none",m.labelColor),children:m.label}),b.jsx("button",{onClick:()=>l(h.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${h.source}`,children:h.source}),b.jsx("span",{className:Be("break-words min-w-0",m.color,h.type==="reasoning"&&"italic"),children:Xu(h.message)})]}),h.detail&&b.jsx("div",{className:"ml-[calc(7ch+5ch+8ch+1rem)] px-2 py-1 my-0.5 bg-[var(--bg)] rounded text-[10px] text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto border-l-2 border-[var(--border)]",children:Xu(h.detail)})]},d)}),a&&f.length===0&&b.jsx("div",{className:"flex items-center justify-center py-4",children:b.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:['No matches for "',a,'"']})})]})]})}const Tb={info:{color:"text-blue-400",icon:"›"},success:{color:"text-green-400",icon:"✓"},error:{color:"text-red-400",icon:"✗"},warning:{color:"text-amber-400",icon:"⚠"},debug:{color:"text-[var(--text-muted)]",icon:"·"}};function d6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(s=>s.selectNode),a=V.useCallback(()=>{const s=n.current;if(!s)return;const u=s.scrollHeight-s.scrollTop-s.clientHeight<30;r.current=u},[]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for events…"})}):b.jsx("div",{ref:n,onScroll:a,className:"h-full overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:e.map((s,u)=>{const f=Tb[s.level]||Tb.info,h=A_(s.timestamp);return b.jsxs("div",{className:"flex gap-2 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:h}),b.jsx("span",{className:Be("flex-shrink-0 w-3 text-center select-none",f.color),children:f.icon}),b.jsx("button",{onClick:()=>l(s.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${s.source}`,children:s.source}),b.jsx("span",{className:Be("break-words",s.level==="error"?"text-red-400":s.level==="success"?"text-green-400":"text-[var(--text)]"),children:Xu(s.message)})]},u)})})}function A_(e){const n=new Date(e*1e3),r=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),a=n.getSeconds().toString().padStart(2,"0");return`${r}:${l}:${a}`}function h6({output:e,status:n}){const[r,l]=V.useState(!1),a=Lb(e),s=async()=>{a&&(await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3))};return e==null?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n==="running"?"Workflow running — output will appear when complete…":n==="failed"?"Workflow failed — no output produced":"No output yet"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center justify-between px-3 py-1 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] uppercase tracking-wider font-semibold",children:"Workflow Result"}),b.jsx("button",{onClick:s,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors px-1.5 py-0.5 rounded hover:bg-[var(--surface-hover)]",title:"Copy to clipboard",children:r?b.jsxs(b.Fragment,{children:[b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}),b.jsx("span",{className:"text-[var(--completed)]",children:"Copied"})]}):b.jsxs(b.Fragment,{children:[b.jsx(Ob,{className:"w-3 h-3"}),b.jsx("span",{children:"Copy"})]})})]}),b.jsx("div",{className:"flex-1 overflow-auto px-3 py-2",children:b.jsx("pre",{className:"font-mono text-[11px] leading-relaxed text-[var(--text)] whitespace-pre-wrap break-words",children:typeof e=="object"?b.jsx(p6,{text:a}):a})})]})}function p6({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function m6(){const e=he(n=>n.selectedNode);return b.jsxs(wp,{direction:"vertical",className:"flex-1 overflow-hidden",children:[b.jsx(mo,{defaultSize:70,minSize:30,children:b.jsxs(wp,{direction:"horizontal",className:"h-full",children:[b.jsx(mo,{defaultSize:e?65:100,minSize:40,children:b.jsx(T5,{})}),e&&b.jsxs(b.Fragment,{children:[b.jsx(Sp,{className:"w-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-col-resize"}),b.jsx(mo,{defaultSize:35,minSize:20,maxSize:60,children:b.jsx(u6,{})})]})]})}),b.jsx(Sp,{className:"h-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-row-resize"}),b.jsx(mo,{defaultSize:30,minSize:5,maxSize:70,collapsible:!0,children:b.jsx(c6,{})})]})}const g6=3e4;function y6(){const e=he(p=>p.processEvent),n=he(p=>p.replayState),r=he(p=>p.setWsStatus),l=he(p=>p.setWsSend),a=V.useRef(null),s=V.useRef(1e3),u=V.useRef(null),f=V.useRef(null),h=V.useRef(()=>{}),d=V.useCallback(()=>{r("reconnecting"),u.current=setTimeout(()=>{s.current=Math.min(s.current*2,g6),h.current()},s.current)},[r]),m=V.useCallback(()=>{r("connecting"),f.current&&f.current.abort();const p=new AbortController;f.current=p,fetch("/api/state",{signal:p.signal}).then(y=>y.json()).then(y=>{y&&y.length>0&&n(y);const w=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{const k=new WebSocket(w);a.current=k,k.onopen=()=>{s.current=1e3,r("connected"),l(S=>{k.readyState===WebSocket.OPEN&&k.send(JSON.stringify(S))})},k.onmessage=S=>{try{const _=JSON.parse(S.data);e(_)}catch(_){console.error("Failed to parse WebSocket message:",_)}},k.onclose=()=>{r("disconnected"),l(null),a.current=null,d()},k.onerror=()=>{}}catch{d()}}).catch(y=>{p.signal.aborted||(console.error("Failed to fetch state:",y),d())})},[e,n,r,l,d]);h.current=m,V.useEffect(()=>(m(),()=>{f.current&&f.current.abort(),u.current&&clearTimeout(u.current),a.current&&a.current.close(),l(null)}),[m,l])}function x6(){const e=he(d=>d.setReplayMode),n=he(d=>d.setWsStatus),r=he(d=>d.replayPlaying),l=he(d=>d.replayPosition),a=he(d=>d.replayTotalEvents),s=he(d=>d.replaySpeed),u=he(d=>d.replayEvents),f=he(d=>d.setReplayPosition);V.useEffect(()=>{n("connecting"),fetch("/api/state").then(d=>d.json()).then(d=>{e(d),n("connected")}).catch(d=>{console.error("Failed to load replay events:",d),n("disconnected")})},[e,n]);const h=V.useRef(null);V.useEffect(()=>{if(!r||l>=a){h.current&&clearTimeout(h.current),r&&l>=a&&he.getState().setReplayPlaying(!1);return}const d=u[l-1],m=u[l];let p=100;if(d&&m){const y=(m.timestamp-d.timestamp)*1e3;p=Math.max(16,Math.min(y/s,2e3))}return h.current=setTimeout(()=>{f(l+1)},p),()=>{h.current&&clearTimeout(h.current)}},[r,l,a,s,u,f])}function v6(){return y6(),null}function b6(){return x6(),null}function w6(){const[e,n]=V.useState(null),r=he(s=>s.replayMode),l=he(s=>s.selectNode),a=he(s=>s.workflowName);return V.useEffect(()=>{fetch("/api/replay/info").then(s=>{s.ok?n(!0):n(!1)}).catch(()=>n(!1))},[]),V.useEffect(()=>{document.title=a?`Conductor — ${a}`:"Conductor Dashboard"},[a]),V.useEffect(()=>{const s=u=>{u.key==="Escape"&&l(null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[l]),e===null?null:b.jsxs("div",{className:"h-full flex flex-col bg-[var(--bg)]",children:[e?b.jsx(b6,{}):b.jsx(v6,{}),b.jsx(CN,{}),b.jsx(TN,{}),b.jsx(m6,{}),r?b.jsx(ON,{}):b.jsx(AN,{})]})}F2.createRoot(document.getElementById("root")).render(b.jsx(V.StrictMode,{children:b.jsx(w6,{})})); diff --git a/src/conductor/web/static/assets/index-Cd7LhUP_.css b/src/conductor/web/static/assets/index-Cd7LhUP_.css new file mode 100644 index 0000000..2c6ce8c --- /dev/null +++ b/src/conductor/web/static/assets/index-Cd7LhUP_.css @@ -0,0 +1 @@ +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-950:oklch(25.8% .092 26.042);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-\[4\.25rem\]{margin-left:4.25rem}.ml-\[calc\(7ch\+5ch\+8ch\+1rem\)\]{margin-left:calc(20ch + 1rem)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.\!h-2{height:calc(var(--spacing) * 2)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[90\%\]{height:90%}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-\[400px\]{max-height:400px}.\!w-2{width:calc(var(--spacing) * 2)!important}.w-0{width:calc(var(--spacing) * 0)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-\[3px\]{width:3px}.w-\[5ch\]{width:5ch}.w-\[80\%\]{width:80%}.w-full{width:100%}.max-w-\[16ch\]{max-width:16ch}.max-w-\[140px\]{max-width:140px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[560px\]{max-width:560px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8ch\]{min-width:8ch}.min-w-\[14px\]{min-width:14px}.min-w-\[140px\]{min-width:140px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[banner-in_200ms_ease-out\]{animation:.2s ease-out banner-in}.animate-\[context-pulse_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite context-pulse}.animate-\[tooltip-in_150ms_ease-out\]{animation:.15s ease-out tooltip-in}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-\[6px\]{border-inline-style:var(--tw-border-style);border-inline-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-green-500\/60{border-color:#00c75899}@supports (color:color-mix(in lab,red,red)){.border-green-500\/60{border-color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.border-transparent{border-color:#0000}.border-x-transparent{border-inline-color:#0000}.border-t-\[var\(--border\)\]{border-top-color:var(--border)}.\!bg-\[var\(--border\)\]{background-color:var(--border)!important}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--completed\)\]{background-color:var(--completed)}.bg-\[var\(--failed\)\]{background-color:var(--failed)}.bg-\[var\(--node-bg\)\]{background-color:var(--node-bg)}.bg-\[var\(--pending\)\]{background-color:var(--pending)}.bg-\[var\(--running\)\]{background-color:var(--running)}.bg-\[var\(--surface\)\],.bg-\[var\(--surface\)\]\/80{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface\)\]\/80{background-color:color-mix(in oklab,var(--surface) 80%,transparent)}}.bg-\[var\(--surface-hover\)\]{background-color:var(--surface-hover)}.bg-\[var\(--surface-raised\)\]{background-color:var(--surface-raised)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-950\/90{background-color:#032e15e6}@supports (color:color-mix(in lab,red,red)){.bg-green-950\/90{background-color:color-mix(in oklab,var(--color-green-950) 90%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-950\/50{background-color:#46080980}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/50{background-color:color-mix(in oklab,var(--color-red-950) 50%,transparent)}}.bg-red-950\/90{background-color:#460809e6}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/90{background-color:color-mix(in oklab,var(--color-red-950) 90%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-px{padding-top:1px}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--completed\)\]{color:var(--completed)}.text-\[var\(--failed\)\]{color:var(--failed)}.text-\[var\(--running\)\]{color:var(--running)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--waiting\)\]{color:var(--waiting)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-400\/70{color:#00d2efb3}@supports (color:color-mix(in lab,red,red)){.text-cyan-400\/70{color:color-mix(in oklab,var(--color-cyan-400) 70%,transparent)}}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400) 80%,transparent)}}.text-green-500\/60{color:#00c75899}@supports (color:color-mix(in lab,red,red)){.text-green-500\/60{color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-indigo-400\/70{color:#7d87ffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/70{color:color-mix(in oklab,var(--color-indigo-400) 70%,transparent)}}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400) 80%,transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--completed-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--running-glow\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--waiting-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--waiting-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--completed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--failed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--failed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--running-glow\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-500\/10{--tw-shadow-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-500\/10{--tw-shadow-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.shadow-red-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent\)\]{--tw-ring-color:var(--accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--bg\)\]{--tw-ring-offset-color:var(--bg)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}}.placeholder\:text-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-amber-400\/60:hover{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-400\/60:hover{border-color:color-mix(in oklab,var(--color-amber-400) 60%,transparent)}}.hover\:border-emerald-500\/30:hover{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-emerald-500\/30:hover{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:bg-\[var\(--node-bg\)\]:hover{background-color:var(--node-bg)}.hover\:bg-\[var\(--surface\)\]:hover{background-color:var(--surface)}.hover\:bg-\[var\(--surface-hover\)\]:hover{background-color:var(--surface-hover)}.hover\:bg-\[var\(--text-muted\)\]:hover{background-color:var(--text-muted)}.hover\:bg-amber-500\/5:hover{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/5:hover{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--running\)\]:hover{color:var(--running)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-\[var\(--text-secondary\)\]:hover{color:var(--text-secondary)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-amber-400:focus{border-color:var(--color-amber-400)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}}:root{--bg:#0a0a0f;--bg-subtle:#111118;--surface:#16161e;--surface-hover:#1c1c26;--surface-raised:#1e1e28;--border:#2a2a3a;--border-subtle:#223;--text:#e4e4ef;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--pending:#52525b;--running:#3b82f6;--running-glow:#3b82f680;--completed:#22c55e;--completed-muted:#22c55e40;--failed:#ef4444;--failed-muted:#ef444440;--waiting:#f59e0b;--waiting-muted:#f59e0b40;--skipped:#6b7280;--accent:#6366f1;--accent-muted:#6366f140;--node-bg:#1e1e2a;--node-border:#2e2e42;--edge-color:#2e2e42;--edge-active:#3b82f6;--edge-taken:#22c55e;--minimap-bg:#0d0d14;--minimap-mask:#ffffff10;--minimap-node:#3b82f680;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.react-flow__background{background:var(--bg)!important}.react-flow__minimap{background:var(--minimap-bg)!important;border:1px solid var(--border)!important;border-radius:8px!important}.react-flow__controls{overflow:hidden;border:1px solid var(--border)!important;border-radius:8px!important;box-shadow:0 4px 12px #0006!important}.react-flow__controls-button{background:var(--surface)!important;border:none!important;border-bottom:1px solid var(--border)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important;width:32px!important;height:32px!important}.react-flow__controls-button:hover{background:var(--surface-hover)!important;color:var(--text)!important;fill:var(--text)!important}.react-flow__controls-button:last-child{border-bottom:none!important}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 var(--running-glow)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes context-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes dash-flow{to{stroke-dashoffset:-20px}}@keyframes node-activate{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes node-complete-glow{0%{box-shadow:0 0 0 0 var(--completed-muted)}50%{box-shadow:0 0 16px 4px var(--completed-muted)}to{box-shadow:0 0 #0000}}@keyframes node-fail-glow{0%{box-shadow:0 0 0 0 var(--failed-muted)}50%{box-shadow:0 0 16px 4px var(--failed-muted)}to{box-shadow:0 0 #0000}}.node-activate{animation:.3s ease-out node-activate}.node-complete{animation:.4s ease-out node-complete-glow}.node-fail{animation:.4s ease-out node-fail-glow}@keyframes tooltip-in{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}[data-panel-group-direction=horizontal]>[data-resize-handle-active],[data-panel-group-direction=vertical]>[data-resize-handle-active]{background-color:var(--accent)!important}[data-resize-handle]{transition:background-color .15s;background-color:var(--border)!important}[data-resize-handle]:hover{background-color:var(--text-muted)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))} diff --git a/src/conductor/web/static/assets/index-Cq5A-RoD.js b/src/conductor/web/static/assets/index-Cq5A-RoD.js deleted file mode 100644 index e332955..0000000 --- a/src/conductor/web/static/assets/index-Cq5A-RoD.js +++ /dev/null @@ -1,306 +0,0 @@ -var T2=Object.defineProperty;var z2=(e,n,i)=>n in e?T2(e,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[n]=i;var Nt=(e,n,i)=>z2(e,typeof n!="symbol"?n+"":n,i);function A2(e,n){for(var i=0;il[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))l(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function i(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(o){if(o.ep)return;o.ep=!0;const s=i(o);fetch(o.href,s)}})();function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Hd={exports:{}},to={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var cx;function M2(){if(cx)return to;cx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function i(l,o,s){var u=null;if(s!==void 0&&(u=""+s),o.key!==void 0&&(u=""+o.key),"key"in o){s={};for(var f in o)f!=="key"&&(s[f]=o[f])}else s=o;return o=s.ref,{$$typeof:e,type:l,key:u,ref:o!==void 0?o:null,props:s}}return to.Fragment=n,to.jsx=i,to.jsxs=i,to}var fx;function j2(){return fx||(fx=1,Hd.exports=M2()),Hd.exports}var b=j2(),Bd={exports:{}},ze={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var dx;function O2(){if(dx)return ze;dx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),y=Symbol.iterator;function v(U){return U===null||typeof U!="object"?null:(U=y&&U[y]||U["@@iterator"],typeof U=="function"?U:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,S={};function _(U,P,N){this.props=U,this.context=P,this.refs=S,this.updater=N||w}_.prototype.isReactComponent={},_.prototype.setState=function(U,P){if(typeof U!="object"&&typeof U!="function"&&U!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,U,P,"setState")},_.prototype.forceUpdate=function(U){this.updater.enqueueForceUpdate(this,U,"forceUpdate")};function z(){}z.prototype=_.prototype;function E(U,P,N){this.props=U,this.context=P,this.refs=S,this.updater=N||w}var A=E.prototype=new z;A.constructor=E,k(A,_.prototype),A.isPureReactComponent=!0;var B=Array.isArray;function T(){}var q={H:null,A:null,T:null,S:null},M=Object.prototype.hasOwnProperty;function D(U,P,N){var Y=N.ref;return{$$typeof:e,type:U,key:P,ref:Y!==void 0?Y:null,props:N}}function X(U,P){return D(U.type,P,U.props)}function H(U){return typeof U=="object"&&U!==null&&U.$$typeof===e}function I(U){var P={"=":"=0",":":"=2"};return"$"+U.replace(/[=:]/g,function(N){return P[N]})}var ee=/\/+/g;function L(U,P){return typeof U=="object"&&U!==null&&U.key!=null?I(""+U.key):P.toString(36)}function G(U){switch(U.status){case"fulfilled":return U.value;case"rejected":throw U.reason;default:switch(typeof U.status=="string"?U.then(T,T):(U.status="pending",U.then(function(P){U.status==="pending"&&(U.status="fulfilled",U.value=P)},function(P){U.status==="pending"&&(U.status="rejected",U.reason=P)})),U.status){case"fulfilled":return U.value;case"rejected":throw U.reason}}throw U}function R(U,P,N,Y,F){var K=typeof U;(K==="undefined"||K==="boolean")&&(U=null);var ne=!1;if(U===null)ne=!0;else switch(K){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(U.$$typeof){case e:case n:ne=!0;break;case m:return ne=U._init,R(ne(U._payload),P,N,Y,F)}}if(ne)return F=F(U),ne=Y===""?"."+L(U,0):Y,B(F)?(N="",ne!=null&&(N=ne.replace(ee,"$&/")+"/"),R(F,P,N,"",function(ye){return ye})):F!=null&&(H(F)&&(F=X(F,N+(F.key==null||U&&U.key===F.key?"":(""+F.key).replace(ee,"$&/")+"/")+ne)),P.push(F)),1;ne=0;var re=Y===""?".":Y+":";if(B(U))for(var se=0;se>>1,j=R[J];if(0>>1;Jo(N,Z))Yo(F,N)?(R[J]=F,R[Y]=Z,J=Y):(R[J]=N,R[P]=Z,J=P);else if(Yo(F,Z))R[J]=F,R[Y]=Z,J=Y;else break e}}return $}function o(R,$){var Z=R.sortIndex-$.sortIndex;return Z!==0?Z:R.id-$.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var u=Date,f=u.now();e.unstable_now=function(){return u.now()-f}}var d=[],h=[],m=1,p=null,y=3,v=!1,w=!1,k=!1,S=!1,_=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function A(R){for(var $=i(h);$!==null;){if($.callback===null)l(h);else if($.startTime<=R)l(h),$.sortIndex=$.expirationTime,n(d,$);else break;$=i(h)}}function B(R){if(k=!1,A(R),!w)if(i(d)!==null)w=!0,T||(T=!0,I());else{var $=i(h);$!==null&&G(B,$.startTime-R)}}var T=!1,q=-1,M=5,D=-1;function X(){return S?!0:!(e.unstable_now()-DR&&X());){var J=p.callback;if(typeof J=="function"){p.callback=null,y=p.priorityLevel;var j=J(p.expirationTime<=R);if(R=e.unstable_now(),typeof j=="function"){p.callback=j,A(R),$=!0;break t}p===i(d)&&l(d),A(R)}else l(d);p=i(d)}if(p!==null)$=!0;else{var U=i(h);U!==null&&G(B,U.startTime-R),$=!1}}break e}finally{p=null,y=Z,v=!1}$=void 0}}finally{$?I():T=!1}}}var I;if(typeof E=="function")I=function(){E(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,L=ee.port2;ee.port1.onmessage=H,I=function(){L.postMessage(null)}}else I=function(){_(H,0)};function G(R,$){q=_(function(){R(e.unstable_now())},$)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(R){R.callback=null},e.unstable_forceFrameRate=function(R){0>R||125J?(R.sortIndex=Z,n(h,R),i(d)===null&&R===i(h)&&(k?(z(q),q=-1):k=!0,G(B,Z-J))):(R.sortIndex=j,n(d,R),w||v||(w=!0,T||(T=!0,I()))),R},e.unstable_shouldYield=X,e.unstable_wrapCallback=function(R){var $=y;return function(){var Z=y;y=$;try{return R.apply(this,arguments)}finally{y=Z}}}})(Id)),Id}var mx;function L2(){return mx||(mx=1,Ud.exports=D2()),Ud.exports}var Vd={exports:{}},Yt={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var gx;function H2(){if(gx)return Yt;gx=1;var e=Ho();function n(d){var h="https://react.dev/errors/"+d;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Vd.exports=H2(),Vd.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var xx;function B2(){if(xx)return no;xx=1;var e=L2(),n=Ho(),i=Eb();function l(t){var r="https://react.dev/errors/"+t;if(1j||(t.current=J[j],J[j]=null,j--)}function N(t,r){j++,J[j]=t.current,t.current=r}var Y=U(null),F=U(null),K=U(null),ne=U(null);function re(t,r){switch(N(K,r),N(F,t),N(Y,null),r.nodeType){case 9:case 11:t=(t=r.documentElement)&&(t=t.namespaceURI)?Oy(t):0;break;default:if(t=r.tagName,r=r.namespaceURI)r=Oy(r),t=Ry(r,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}P(Y),N(Y,t)}function se(){P(Y),P(F),P(K)}function ye(t){t.memoizedState!==null&&N(ne,t);var r=Y.current,a=Ry(r,t.type);r!==a&&(N(F,t),N(Y,a))}function ve(t){F.current===t&&(P(Y),P(F)),ne.current===t&&(P(ne),Ka._currentValue=Z)}var xe,pe;function _e(t){if(xe===void 0)try{throw Error()}catch(a){var r=a.stack.trim().match(/\n( *(at )?)/);xe=r&&r[1]||"",pe=-1)":-1g||Q[c]!==le[g]){var ce=` -`+Q[c].replace(" at new "," at ");return t.displayName&&ce.includes("")&&(ce=ce.replace("",t.displayName)),ce}while(1<=c&&0<=g);break}}}finally{Me=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?_e(a):""}function st(t,r){switch(t.tag){case 26:case 27:case 5:return _e(t.type);case 16:return _e("Lazy");case 13:return t.child!==r&&r!==null?_e("Suspense Fallback"):_e("Suspense");case 19:return _e("SuspenseList");case 0:case 15:return Ce(t.type,!1);case 11:return Ce(t.type.render,!1);case 1:return Ce(t.type,!0);case 31:return _e("Activity");default:return""}}function We(t){try{var r="",a=null;do r+=st(t,a),a=t,t=t.return;while(t);return r}catch(c){return` -Error generating stack: `+c.message+` -`+c.stack}}var zt=Object.prototype.hasOwnProperty,Ut=e.unstable_scheduleCallback,Rt=e.unstable_cancelCallback,wn=e.unstable_shouldYield,Mn=e.unstable_requestPaint,At=e.unstable_now,Mr=e.unstable_getCurrentPriorityLevel,ue=e.unstable_ImmediatePriority,ge=e.unstable_UserBlockingPriority,Ne=e.unstable_NormalPriority,De=e.unstable_LowPriority,Ve=e.unstable_IdlePriority,$t=e.log,jn=e.unstable_setDisableYieldValue,Dt=null,yt=null;function It(t){if(typeof $t=="function"&&jn(t),yt&&typeof yt.setStrictMode=="function")try{yt.setStrictMode(Dt,t)}catch{}}var Ze=Math.clz32?Math.clz32:Ec,Gn=Math.log,sn=Math.LN2;function Ec(t){return t>>>=0,t===0?32:31-(Gn(t)/sn|0)|0}var Zi=256,Ki=262144,Ji=4194304;function ir(t){var r=t&42;if(r!==0)return r;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Wi(t,r,a){var c=t.pendingLanes;if(c===0)return 0;var g=0,x=t.suspendedLanes,C=t.pingedLanes;t=t.warmLanes;var O=c&134217727;return O!==0?(c=O&~x,c!==0?g=ir(c):(C&=O,C!==0?g=ir(C):a||(a=O&~t,a!==0&&(g=ir(a))))):(O=c&~x,O!==0?g=ir(O):C!==0?g=ir(C):a||(a=c&~t,a!==0&&(g=ir(a)))),g===0?0:r!==0&&r!==g&&(r&x)===0&&(x=g&-g,a=r&-r,x>=a||x===32&&(a&4194048)!==0)?r:g}function hi(t,r){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&r)===0}function Nc(t,r){switch(t){case 1:case 2:case 4:case 8:case 64:return r+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return r+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Qo(){var t=Ji;return Ji<<=1,(Ji&62914560)===0&&(Ji=4194304),t}function sa(t){for(var r=[],a=0;31>a;a++)r.push(t);return r}function pi(t,r){t.pendingLanes|=r,r!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function kc(t,r,a,c,g,x){var C=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var O=t.entanglements,Q=t.expirationTimes,le=t.hiddenUpdates;for(a=C&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Mc=/[\n"\\]/g;function Ft(t){return t.replace(Mc,function(r){return"\\"+r.charCodeAt(0).toString(16)+" "})}function yi(t,r,a,c,g,x,C,O){t.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?t.type=C:t.removeAttribute("type"),r!=null?C==="number"?(r===0&&t.value===""||t.value!=r)&&(t.value=""+Pt(r)):t.value!==""+Pt(r)&&(t.value=""+Pt(r)):C!=="submit"&&C!=="reset"||t.removeAttribute("value"),r!=null?ha(t,C,Pt(r)):a!=null?ha(t,C,Pt(a)):c!=null&&t.removeAttribute("value"),g==null&&x!=null&&(t.defaultChecked=!!x),g!=null&&(t.checked=g&&typeof g!="function"&&typeof g!="symbol"),O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"?t.name=""+Pt(O):t.removeAttribute("name")}function ss(t,r,a,c,g,x,C,O){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(t.type=x),r!=null||a!=null){if(!(x!=="submit"&&x!=="reset"||r!=null)){Hr(t);return}a=a!=null?""+Pt(a):"",r=r!=null?""+Pt(r):a,O||r===t.value||(t.value=r),t.defaultValue=r}c=c??g,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=O?t.checked:!!c,t.defaultChecked=!!c,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(t.name=C),Hr(t)}function ha(t,r,a){r==="number"&&gi(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function or(t,r,a,c){if(t=t.options,r){r={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Lc=!1;if(ur)try{var ma={};Object.defineProperty(ma,"passive",{get:function(){Lc=!0}}),window.addEventListener("test",ma,ma),window.removeEventListener("test",ma,ma)}catch{Lc=!1}var Br=null,Hc=null,cs=null;function Rm(){if(cs)return cs;var t,r=Hc,a=r.length,c,g="value"in Br?Br.value:Br.textContent,x=g.length;for(t=0;t=xa),Um=" ",Im=!1;function Vm(t,r){switch(t){case"keyup":return Z_.indexOf(r.keyCode)!==-1;case"keydown":return r.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ym(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var al=!1;function J_(t,r){switch(t){case"compositionend":return Ym(r);case"keypress":return r.which!==32?null:(Im=!0,Um);case"textInput":return t=r.data,t===Um&&Im?null:t;default:return null}}function W_(t,r){if(al)return t==="compositionend"||!Vc&&Vm(t,r)?(t=Rm(),cs=Hc=Br=null,al=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(r.ctrlKey||r.altKey||r.metaKey)||r.ctrlKey&&r.altKey){if(r.char&&1=r)return{node:a,offset:r-t};t=c}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Km(a)}}function Wm(t,r){return t&&r?t===r?!0:t&&t.nodeType===3?!1:r&&r.nodeType===3?Wm(t,r.parentNode):"contains"in t?t.contains(r):t.compareDocumentPosition?!!(t.compareDocumentPosition(r)&16):!1:!1}function eg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var r=gi(t.document);r instanceof t.HTMLIFrameElement;){try{var a=typeof r.contentWindow.location.href=="string"}catch{a=!1}if(a)t=r.contentWindow;else break;r=gi(t.document)}return r}function $c(t){var r=t&&t.nodeName&&t.nodeName.toLowerCase();return r&&(r==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||r==="textarea"||t.contentEditable==="true")}var oE=ur&&"documentMode"in document&&11>=document.documentMode,ol=null,Xc=null,Sa=null,Pc=!1;function tg(t,r,a){var c=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Pc||ol==null||ol!==gi(c)||(c=ol,"selectionStart"in c&&$c(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Sa&&wa(Sa,c)||(Sa=c,c=ru(Xc,"onSelect"),0>=C,g-=C,Xn=1<<32-Ze(r)+g|a<je?(qe=Se,Se=null):qe=Se.sibling;var $e=ae(te,Se,ie[je],fe);if($e===null){Se===null&&(Se=qe);break}t&&Se&&$e.alternate===null&&r(te,Se),W=x($e,W,je),Ge===null?Ee=$e:Ge.sibling=$e,Ge=$e,Se=qe}if(je===ie.length)return a(te,Se),Ue&&fr(te,je),Ee;if(Se===null){for(;jeje?(qe=Se,Se=null):qe=Se.sibling;var ai=ae(te,Se,$e.value,fe);if(ai===null){Se===null&&(Se=qe);break}t&&Se&&ai.alternate===null&&r(te,Se),W=x(ai,W,je),Ge===null?Ee=ai:Ge.sibling=ai,Ge=ai,Se=qe}if($e.done)return a(te,Se),Ue&&fr(te,je),Ee;if(Se===null){for(;!$e.done;je++,$e=ie.next())$e=de(te,$e.value,fe),$e!==null&&(W=x($e,W,je),Ge===null?Ee=$e:Ge.sibling=$e,Ge=$e);return Ue&&fr(te,je),Ee}for(Se=c(Se);!$e.done;je++,$e=ie.next())$e=oe(Se,te,je,$e.value,fe),$e!==null&&(t&&$e.alternate!==null&&Se.delete($e.key===null?je:$e.key),W=x($e,W,je),Ge===null?Ee=$e:Ge.sibling=$e,Ge=$e);return t&&Se.forEach(function(C2){return r(te,C2)}),Ue&&fr(te,je),Ee}function nt(te,W,ie,fe){if(typeof ie=="object"&&ie!==null&&ie.type===k&&ie.key===null&&(ie=ie.props.children),typeof ie=="object"&&ie!==null){switch(ie.$$typeof){case v:e:{for(var Ee=ie.key;W!==null;){if(W.key===Ee){if(Ee=ie.type,Ee===k){if(W.tag===7){a(te,W.sibling),fe=g(W,ie.props.children),fe.return=te,te=fe;break e}}else if(W.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===M&&Ci(Ee)===W.type){a(te,W.sibling),fe=g(W,ie.props),Ta(fe,ie),fe.return=te,te=fe;break e}a(te,W);break}else r(te,W);W=W.sibling}ie.type===k?(fe=Si(ie.props.children,te.mode,fe,ie.key),fe.return=te,te=fe):(fe=bs(ie.type,ie.key,ie.props,null,te.mode,fe),Ta(fe,ie),fe.return=te,te=fe)}return C(te);case w:e:{for(Ee=ie.key;W!==null;){if(W.key===Ee)if(W.tag===4&&W.stateNode.containerInfo===ie.containerInfo&&W.stateNode.implementation===ie.implementation){a(te,W.sibling),fe=g(W,ie.children||[]),fe.return=te,te=fe;break e}else{a(te,W);break}else r(te,W);W=W.sibling}fe=ef(ie,te.mode,fe),fe.return=te,te=fe}return C(te);case M:return ie=Ci(ie),nt(te,W,ie,fe)}if(G(ie))return be(te,W,ie,fe);if(I(ie)){if(Ee=I(ie),typeof Ee!="function")throw Error(l(150));return ie=Ee.call(ie),ke(te,W,ie,fe)}if(typeof ie.then=="function")return nt(te,W,Cs(ie),fe);if(ie.$$typeof===E)return nt(te,W,_s(te,ie),fe);Ts(te,ie)}return typeof ie=="string"&&ie!==""||typeof ie=="number"||typeof ie=="bigint"?(ie=""+ie,W!==null&&W.tag===6?(a(te,W.sibling),fe=g(W,ie),fe.return=te,te=fe):(a(te,W),fe=Wc(ie,te.mode,fe),fe.return=te,te=fe),C(te)):a(te,W)}return function(te,W,ie,fe){try{Ca=0;var Ee=nt(te,W,ie,fe);return xl=null,Ee}catch(Se){if(Se===yl||Se===Ns)throw Se;var Ge=cn(29,Se,null,te.mode);return Ge.lanes=fe,Ge.return=te,Ge}finally{}}}var zi=Eg(!0),Ng=Eg(!1),Yr=!1;function hf(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function pf(t,r){t=t.updateQueue,r.updateQueue===t&&(r.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Gr(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function $r(t,r,a){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(Fe&2)!==0){var g=c.pending;return g===null?r.next=r:(r.next=g.next,g.next=r),c.pending=r,r=vs(t),sg(t,null,a),r}return xs(t,c,r,a),vs(t)}function za(t,r,a){if(r=r.updateQueue,r!==null&&(r=r.shared,(a&4194048)!==0)){var c=r.lanes;c&=t.pendingLanes,a|=c,r.lanes=a,Ko(t,a)}}function mf(t,r){var a=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,a===c)){var g=null,x=null;if(a=a.firstBaseUpdate,a!==null){do{var C={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};x===null?g=x=C:x=x.next=C,a=a.next}while(a!==null);x===null?g=x=r:x=x.next=r}else g=x=r;a={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:x,shared:c.shared,callbacks:c.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=r:t.next=r,a.lastBaseUpdate=r}var gf=!1;function Aa(){if(gf){var t=gl;if(t!==null)throw t}}function Ma(t,r,a,c){gf=!1;var g=t.updateQueue;Yr=!1;var x=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var Q=O,le=Q.next;Q.next=null,C===null?x=le:C.next=le,C=Q;var ce=t.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=le:O.next=le,ce.lastBaseUpdate=Q))}if(x!==null){var de=g.baseState;C=0,ce=le=Q=null,O=x;do{var ae=O.lane&-536870913,oe=ae!==O.lane;if(oe?(Be&ae)===ae:(c&ae)===ae){ae!==0&&ae===ml&&(gf=!0),ce!==null&&(ce=ce.next={lane:0,tag:O.tag,payload:O.payload,callback:null,next:null});e:{var be=t,ke=O;ae=r;var nt=a;switch(ke.tag){case 1:if(be=ke.payload,typeof be=="function"){de=be.call(nt,de,ae);break e}de=be;break e;case 3:be.flags=be.flags&-65537|128;case 0:if(be=ke.payload,ae=typeof be=="function"?be.call(nt,de,ae):be,ae==null)break e;de=p({},de,ae);break e;case 2:Yr=!0}}ae=O.callback,ae!==null&&(t.flags|=64,oe&&(t.flags|=8192),oe=g.callbacks,oe===null?g.callbacks=[ae]:oe.push(ae))}else oe={lane:ae,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(le=ce=oe,Q=de):ce=ce.next=oe,C|=ae;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);ce===null&&(Q=de),g.baseState=Q,g.firstBaseUpdate=le,g.lastBaseUpdate=ce,x===null&&(g.shared.lanes=0),Zr|=C,t.lanes=C,t.memoizedState=de}}function kg(t,r){if(typeof t!="function")throw Error(l(191,t));t.call(r)}function Cg(t,r){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;tx?x:8;var C=R.T,O={};R.T=O,Df(t,!1,r,a);try{var Q=g(),le=R.S;if(le!==null&&le(O,Q),Q!==null&&typeof Q=="object"&&typeof Q.then=="function"){var ce=gE(Q,c);Ra(t,r,ce,mn(t))}else Ra(t,r,c,mn(t))}catch(de){Ra(t,r,{then:function(){},status:"rejected",reason:de},mn())}finally{$.p=x,C!==null&&O.types!==null&&(C.types=O.types),R.T=C}}function SE(){}function Of(t,r,a,c){if(t.tag!==5)throw Error(l(476));var g=l0(t).queue;i0(t,g,r,Z,a===null?SE:function(){return a0(t),a(c)})}function l0(t){var r=t.memoizedState;if(r!==null)return r;r={memoizedState:Z,baseState:Z,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:mr,lastRenderedState:Z},next:null};var a={};return r.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:mr,lastRenderedState:a},next:null},t.memoizedState=r,t=t.alternate,t!==null&&(t.memoizedState=r),r}function a0(t){var r=l0(t);r.next===null&&(r=t.alternate.memoizedState),Ra(t,r.next.queue,{},mn())}function Rf(){return Ht(Ka)}function o0(){return vt().memoizedState}function s0(){return vt().memoizedState}function _E(t){for(var r=t.return;r!==null;){switch(r.tag){case 24:case 3:var a=mn();t=Gr(a);var c=$r(r,t,a);c!==null&&(en(c,r,a),za(c,r,a)),r={cache:uf()},t.payload=r;return}r=r.return}}function EE(t,r,a){var c=mn();a={lane:c,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Bs(t)?c0(r,a):(a=Kc(t,r,a,c),a!==null&&(en(a,t,c),f0(a,r,c)))}function u0(t,r,a){var c=mn();Ra(t,r,a,c)}function Ra(t,r,a,c){var g={lane:c,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(Bs(t))c0(r,g);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=r.lastRenderedReducer,x!==null))try{var C=r.lastRenderedState,O=x(C,a);if(g.hasEagerState=!0,g.eagerState=O,un(O,C))return xs(t,r,g,0),rt===null&&ys(),!1}catch{}finally{}if(a=Kc(t,r,g,c),a!==null)return en(a,t,c),f0(a,r,c),!0}return!1}function Df(t,r,a,c){if(c={lane:2,revertLane:hd(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Bs(t)){if(r)throw Error(l(479))}else r=Kc(t,a,c,2),r!==null&&en(r,t,2)}function Bs(t){var r=t.alternate;return t===Ae||r!==null&&r===Ae}function c0(t,r){bl=Ms=!0;var a=t.pending;a===null?r.next=r:(r.next=a.next,a.next=r),t.pending=r}function f0(t,r,a){if((a&4194048)!==0){var c=r.lanes;c&=t.pendingLanes,a|=c,r.lanes=a,Ko(t,a)}}var Da={readContext:Ht,use:Rs,useCallback:pt,useContext:pt,useEffect:pt,useImperativeHandle:pt,useLayoutEffect:pt,useInsertionEffect:pt,useMemo:pt,useReducer:pt,useRef:pt,useState:pt,useDebugValue:pt,useDeferredValue:pt,useTransition:pt,useSyncExternalStore:pt,useId:pt,useHostTransitionStatus:pt,useFormState:pt,useActionState:pt,useOptimistic:pt,useMemoCache:pt,useCacheRefresh:pt};Da.useEffectEvent=pt;var d0={readContext:Ht,use:Rs,useCallback:function(t,r){return Xt().memoizedState=[t,r===void 0?null:r],t},useContext:Ht,useEffect:Qg,useImperativeHandle:function(t,r,a){a=a!=null?a.concat([t]):null,Ls(4194308,4,Wg.bind(null,r,t),a)},useLayoutEffect:function(t,r){return Ls(4194308,4,t,r)},useInsertionEffect:function(t,r){Ls(4,2,t,r)},useMemo:function(t,r){var a=Xt();r=r===void 0?null:r;var c=t();if(Ai){It(!0);try{t()}finally{It(!1)}}return a.memoizedState=[c,r],c},useReducer:function(t,r,a){var c=Xt();if(a!==void 0){var g=a(r);if(Ai){It(!0);try{a(r)}finally{It(!1)}}}else g=r;return c.memoizedState=c.baseState=g,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:g},c.queue=t,t=t.dispatch=EE.bind(null,Ae,t),[c.memoizedState,t]},useRef:function(t){var r=Xt();return t={current:t},r.memoizedState=t},useState:function(t){t=Tf(t);var r=t.queue,a=u0.bind(null,Ae,r);return r.dispatch=a,[t.memoizedState,a]},useDebugValue:Mf,useDeferredValue:function(t,r){var a=Xt();return jf(a,t,r)},useTransition:function(){var t=Tf(!1);return t=i0.bind(null,Ae,t.queue,!0,!1),Xt().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,r,a){var c=Ae,g=Xt();if(Ue){if(a===void 0)throw Error(l(407));a=a()}else{if(a=r(),rt===null)throw Error(l(349));(Be&127)!==0||Og(c,r,a)}g.memoizedState=a;var x={value:a,getSnapshot:r};return g.queue=x,Qg(Dg.bind(null,c,x,t),[t]),c.flags|=2048,Sl(9,{destroy:void 0},Rg.bind(null,c,x,a,r),null),a},useId:function(){var t=Xt(),r=rt.identifierPrefix;if(Ue){var a=Pn,c=Xn;a=(c&~(1<<32-Ze(c)-1)).toString(32)+a,r="_"+r+"R_"+a,a=js++,0<\/script>",x=x.removeChild(x.firstChild);break;case"select":x=typeof c.is=="string"?C.createElement("select",{is:c.is}):C.createElement("select"),c.multiple?x.multiple=!0:c.size&&(x.size=c.size);break;default:x=typeof c.is=="string"?C.createElement(g,{is:c.is}):C.createElement(g)}}x[Mt]=r,x[Vt]=c;e:for(C=r.child;C!==null;){if(C.tag===5||C.tag===6)x.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===r)break e;for(;C.sibling===null;){if(C.return===null||C.return===r)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}r.stateNode=x;e:switch(qt(x,g,c),g){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&yr(r)}}return ct(r),Qf(r,r.type,t===null?null:t.memoizedProps,r.pendingProps,a),null;case 6:if(t&&r.stateNode!=null)t.memoizedProps!==c&&yr(r);else{if(typeof c!="string"&&r.stateNode===null)throw Error(l(166));if(t=K.current,hl(r)){if(t=r.stateNode,a=r.memoizedProps,c=null,g=Lt,g!==null)switch(g.tag){case 27:case 5:c=g.memoizedProps}t[Mt]=r,t=!!(t.nodeValue===a||c!==null&&c.suppressHydrationWarning===!0||My(t.nodeValue,a)),t||Ir(r,!0)}else t=iu(t).createTextNode(c),t[Mt]=r,r.stateNode=t}return ct(r),null;case 31:if(a=r.memoizedState,t===null||t.memoizedState!==null){if(c=hl(r),a!==null){if(t===null){if(!c)throw Error(l(318));if(t=r.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(l(557));t[Mt]=r}else _i(),(r.flags&128)===0&&(r.memoizedState=null),r.flags|=4;ct(r),t=!1}else a=lf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return r.flags&256?(dn(r),r):(dn(r),null);if((r.flags&128)!==0)throw Error(l(558))}return ct(r),null;case 13:if(c=r.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(g=hl(r),c!==null&&c.dehydrated!==null){if(t===null){if(!g)throw Error(l(318));if(g=r.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(l(317));g[Mt]=r}else _i(),(r.flags&128)===0&&(r.memoizedState=null),r.flags|=4;ct(r),g=!1}else g=lf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=g),g=!0;if(!g)return r.flags&256?(dn(r),r):(dn(r),null)}return dn(r),(r.flags&128)!==0?(r.lanes=a,r):(a=c!==null,t=t!==null&&t.memoizedState!==null,a&&(c=r.child,g=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(g=c.alternate.memoizedState.cachePool.pool),x=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),x!==g&&(c.flags|=2048)),a!==t&&a&&(r.child.flags|=8192),Ys(r,r.updateQueue),ct(r),null);case 4:return se(),t===null&&yd(r.stateNode.containerInfo),ct(r),null;case 10:return hr(r.type),ct(r),null;case 19:if(P(xt),c=r.memoizedState,c===null)return ct(r),null;if(g=(r.flags&128)!==0,x=c.rendering,x===null)if(g)Ha(c,!1);else{if(mt!==0||t!==null&&(t.flags&128)!==0)for(t=r.child;t!==null;){if(x=As(t),x!==null){for(r.flags|=128,Ha(c,!1),t=x.updateQueue,r.updateQueue=t,Ys(r,t),r.subtreeFlags=0,t=a,a=r.child;a!==null;)ug(a,t),a=a.sibling;return N(xt,xt.current&1|2),Ue&&fr(r,c.treeForkCount),r.child}t=t.sibling}c.tail!==null&&At()>Fs&&(r.flags|=128,g=!0,Ha(c,!1),r.lanes=4194304)}else{if(!g)if(t=As(x),t!==null){if(r.flags|=128,g=!0,t=t.updateQueue,r.updateQueue=t,Ys(r,t),Ha(c,!0),c.tail===null&&c.tailMode==="hidden"&&!x.alternate&&!Ue)return ct(r),null}else 2*At()-c.renderingStartTime>Fs&&a!==536870912&&(r.flags|=128,g=!0,Ha(c,!1),r.lanes=4194304);c.isBackwards?(x.sibling=r.child,r.child=x):(t=c.last,t!==null?t.sibling=x:r.child=x,c.last=x)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=At(),t.sibling=null,a=xt.current,N(xt,g?a&1|2:a&1),Ue&&fr(r,c.treeForkCount),t):(ct(r),null);case 22:case 23:return dn(r),xf(),c=r.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(r.flags|=8192):c&&(r.flags|=8192),c?(a&536870912)!==0&&(r.flags&128)===0&&(ct(r),r.subtreeFlags&6&&(r.flags|=8192)):ct(r),a=r.updateQueue,a!==null&&Ys(r,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),c=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(c=r.memoizedState.cachePool.pool),c!==a&&(r.flags|=2048),t!==null&&P(ki),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),r.memoizedState.cache!==a&&(r.flags|=2048),hr(wt),ct(r),null;case 25:return null;case 30:return null}throw Error(l(156,r.tag))}function zE(t,r){switch(nf(r),r.tag){case 1:return t=r.flags,t&65536?(r.flags=t&-65537|128,r):null;case 3:return hr(wt),se(),t=r.flags,(t&65536)!==0&&(t&128)===0?(r.flags=t&-65537|128,r):null;case 26:case 27:case 5:return ve(r),null;case 31:if(r.memoizedState!==null){if(dn(r),r.alternate===null)throw Error(l(340));_i()}return t=r.flags,t&65536?(r.flags=t&-65537|128,r):null;case 13:if(dn(r),t=r.memoizedState,t!==null&&t.dehydrated!==null){if(r.alternate===null)throw Error(l(340));_i()}return t=r.flags,t&65536?(r.flags=t&-65537|128,r):null;case 19:return P(xt),null;case 4:return se(),null;case 10:return hr(r.type),null;case 22:case 23:return dn(r),xf(),t!==null&&P(ki),t=r.flags,t&65536?(r.flags=t&-65537|128,r):null;case 24:return hr(wt),null;case 25:return null;default:return null}}function L0(t,r){switch(nf(r),r.tag){case 3:hr(wt),se();break;case 26:case 27:case 5:ve(r);break;case 4:se();break;case 31:r.memoizedState!==null&&dn(r);break;case 13:dn(r);break;case 19:P(xt);break;case 10:hr(r.type);break;case 22:case 23:dn(r),xf(),t!==null&&P(ki);break;case 24:hr(wt)}}function Ba(t,r){try{var a=r.updateQueue,c=a!==null?a.lastEffect:null;if(c!==null){var g=c.next;a=g;do{if((a.tag&t)===t){c=void 0;var x=a.create,C=a.inst;c=x(),C.destroy=c}a=a.next}while(a!==g)}}catch(O){Je(r,r.return,O)}}function Fr(t,r,a){try{var c=r.updateQueue,g=c!==null?c.lastEffect:null;if(g!==null){var x=g.next;c=x;do{if((c.tag&t)===t){var C=c.inst,O=C.destroy;if(O!==void 0){C.destroy=void 0,g=r;var Q=a,le=O;try{le()}catch(ce){Je(g,Q,ce)}}}c=c.next}while(c!==x)}}catch(ce){Je(r,r.return,ce)}}function H0(t){var r=t.updateQueue;if(r!==null){var a=t.stateNode;try{Cg(r,a)}catch(c){Je(t,t.return,c)}}}function B0(t,r,a){a.props=Mi(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(c){Je(t,r,c)}}function qa(t,r){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof a=="function"?t.refCleanup=a(c):a.current=c}}catch(g){Je(t,r,g)}}function Fn(t,r){var a=t.ref,c=t.refCleanup;if(a!==null)if(typeof c=="function")try{c()}catch(g){Je(t,r,g)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(g){Je(t,r,g)}else a.current=null}function q0(t){var r=t.type,a=t.memoizedProps,c=t.stateNode;try{e:switch(r){case"button":case"input":case"select":case"textarea":a.autoFocus&&c.focus();break e;case"img":a.src?c.src=a.src:a.srcSet&&(c.srcset=a.srcSet)}}catch(g){Je(t,t.return,g)}}function Zf(t,r,a){try{var c=t.stateNode;KE(c,t.type,a,r),c[Vt]=r}catch(g){Je(t,t.return,g)}}function U0(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ti(t.type)||t.tag===4}function Kf(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||U0(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ti(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Jf(t,r,a){var c=t.tag;if(c===5||c===6)t=t.stateNode,r?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,r):(r=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,r.appendChild(t),a=a._reactRootContainer,a!=null||r.onclick!==null||(r.onclick=sr));else if(c!==4&&(c===27&&ti(t.type)&&(a=t.stateNode,r=null),t=t.child,t!==null))for(Jf(t,r,a),t=t.sibling;t!==null;)Jf(t,r,a),t=t.sibling}function Gs(t,r,a){var c=t.tag;if(c===5||c===6)t=t.stateNode,r?a.insertBefore(t,r):a.appendChild(t);else if(c!==4&&(c===27&&ti(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(Gs(t,r,a),t=t.sibling;t!==null;)Gs(t,r,a),t=t.sibling}function I0(t){var r=t.stateNode,a=t.memoizedProps;try{for(var c=t.type,g=r.attributes;g.length;)r.removeAttributeNode(g[0]);qt(r,c,a),r[Mt]=t,r[Vt]=a}catch(x){Je(t,t.return,x)}}var xr=!1,Et=!1,Wf=!1,V0=typeof WeakSet=="function"?WeakSet:Set,Ot=null;function AE(t,r){if(t=t.containerInfo,bd=fu,t=eg(t),$c(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else e:{a=(a=t.ownerDocument)&&a.defaultView||window;var c=a.getSelection&&a.getSelection();if(c&&c.rangeCount!==0){a=c.anchorNode;var g=c.anchorOffset,x=c.focusNode;c=c.focusOffset;try{a.nodeType,x.nodeType}catch{a=null;break e}var C=0,O=-1,Q=-1,le=0,ce=0,de=t,ae=null;t:for(;;){for(var oe;de!==a||g!==0&&de.nodeType!==3||(O=C+g),de!==x||c!==0&&de.nodeType!==3||(Q=C+c),de.nodeType===3&&(C+=de.nodeValue.length),(oe=de.firstChild)!==null;)ae=de,de=oe;for(;;){if(de===t)break t;if(ae===a&&++le===g&&(O=C),ae===x&&++ce===c&&(Q=C),(oe=de.nextSibling)!==null)break;de=ae,ae=de.parentNode}de=oe}a=O===-1||Q===-1?null:{start:O,end:Q}}else a=null}a=a||{start:0,end:0}}else a=null;for(wd={focusedElem:t,selectionRange:a},fu=!1,Ot=r;Ot!==null;)if(r=Ot,t=r.child,(r.subtreeFlags&1028)!==0&&t!==null)t.return=r,Ot=t;else for(;Ot!==null;){switch(r=Ot,x=r.alternate,t=r.flags,r.tag){case 0:if((t&4)!==0&&(t=r.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),qt(x,c,a),x[Mt]=t,bt(x),c=x;break e;case"link":var C=Fy("link","href",g).get(c+(a.href||""));if(C){for(var O=0;Ont&&(C=nt,nt=ke,ke=C);var te=Jm(O,ke),W=Jm(O,nt);if(te&&W&&(oe.rangeCount!==1||oe.anchorNode!==te.node||oe.anchorOffset!==te.offset||oe.focusNode!==W.node||oe.focusOffset!==W.offset)){var ie=de.createRange();ie.setStart(te.node,te.offset),oe.removeAllRanges(),ke>nt?(oe.addRange(ie),oe.extend(W.node,W.offset)):(ie.setEnd(W.node,W.offset),oe.addRange(ie))}}}}for(de=[],oe=O;oe=oe.parentNode;)oe.nodeType===1&&de.push({element:oe,left:oe.scrollLeft,top:oe.scrollTop});for(typeof O.focus=="function"&&O.focus(),O=0;Oa?32:a,R.T=null,a=ad,ad=null;var x=Jr,C=_r;if(jt=0,Cl=Jr=null,_r=0,(Fe&6)!==0)throw Error(l(331));var O=Fe;if(Fe|=4,W0(x.current),Z0(x,x.current,C,a),Fe=O,$a(0,!1),yt&&typeof yt.onPostCommitFiberRoot=="function")try{yt.onPostCommitFiberRoot(Dt,x)}catch{}return!0}finally{$.p=g,R.T=c,yy(t,r)}}function vy(t,r,a){r=_n(a,r),r=qf(t.stateNode,r,2),t=$r(t,r,2),t!==null&&(pi(t,2),Qn(t))}function Je(t,r,a){if(t.tag===3)vy(t,t,a);else for(;r!==null;){if(r.tag===3){vy(r,t,a);break}else if(r.tag===1){var c=r.stateNode;if(typeof r.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(Kr===null||!Kr.has(c))){t=_n(a,t),a=b0(2),c=$r(r,a,2),c!==null&&(w0(a,c,r,t),pi(c,2),Qn(c));break}}r=r.return}}function cd(t,r,a){var c=t.pingCache;if(c===null){c=t.pingCache=new OE;var g=new Set;c.set(r,g)}else g=c.get(r),g===void 0&&(g=new Set,c.set(r,g));g.has(a)||(nd=!0,g.add(a),t=BE.bind(null,t,r,a),r.then(t,t))}function BE(t,r,a){var c=t.pingCache;c!==null&&c.delete(r),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,rt===t&&(Be&a)===a&&(mt===4||mt===3&&(Be&62914560)===Be&&300>At()-Ps?(Fe&2)===0&&Tl(t,0):rd|=a,kl===Be&&(kl=0)),Qn(t)}function by(t,r){r===0&&(r=Qo()),t=wi(t,r),t!==null&&(pi(t,r),Qn(t))}function qE(t){var r=t.memoizedState,a=0;r!==null&&(a=r.retryLane),by(t,a)}function UE(t,r){var a=0;switch(t.tag){case 31:case 13:var c=t.stateNode,g=t.memoizedState;g!==null&&(a=g.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(l(314))}c!==null&&c.delete(r),by(t,a)}function IE(t,r){return Ut(t,r)}var eu=null,Al=null,fd=!1,tu=!1,dd=!1,ei=0;function Qn(t){t!==Al&&t.next===null&&(Al===null?eu=Al=t:Al=Al.next=t),tu=!0,fd||(fd=!0,YE())}function $a(t,r){if(!dd&&tu){dd=!0;do for(var a=!1,c=eu;c!==null;){if(t!==0){var g=c.pendingLanes;if(g===0)var x=0;else{var C=c.suspendedLanes,O=c.pingedLanes;x=(1<<31-Ze(42|t)+1)-1,x&=g&~(C&~O),x=x&201326741?x&201326741|1:x?x|2:0}x!==0&&(a=!0,Ey(c,x))}else x=Be,x=Wi(c,c===rt?x:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(x&3)===0||hi(c,x)||(a=!0,Ey(c,x));c=c.next}while(a);dd=!1}}function VE(){wy()}function wy(){tu=fd=!1;var t=0;ei!==0&&WE()&&(t=ei);for(var r=At(),a=null,c=eu;c!==null;){var g=c.next,x=Sy(c,r);x===0?(c.next=null,a===null?eu=g:a.next=g,g===null&&(Al=a)):(a=c,(t!==0||(x&3)!==0)&&(tu=!0)),c=g}jt!==0&&jt!==5||$a(t),ei!==0&&(ei=0)}function Sy(t,r){for(var a=t.suspendedLanes,c=t.pingedLanes,g=t.expirationTimes,x=t.pendingLanes&-62914561;0O)break;var ce=Q.transferSize,de=Q.initiatorType;ce&&jy(de)&&(Q=Q.responseEnd,C+=ce*(Q"u"?null:document;function Gy(t,r,a){var c=Ml;if(c&&typeof r=="string"&&r){var g=Ft(r);g='link[rel="'+t+'"][href="'+g+'"]',typeof a=="string"&&(g+='[crossorigin="'+a+'"]'),Yy.has(g)||(Yy.add(g),t={rel:t,crossOrigin:a,href:r},c.querySelector(g)===null&&(r=c.createElement("link"),qt(r,"link",t),bt(r),c.head.appendChild(r)))}}function s2(t){Er.D(t),Gy("dns-prefetch",t,null)}function u2(t,r){Er.C(t,r),Gy("preconnect",t,r)}function c2(t,r,a){Er.L(t,r,a);var c=Ml;if(c&&t&&r){var g='link[rel="preload"][as="'+Ft(r)+'"]';r==="image"&&a&&a.imageSrcSet?(g+='[imagesrcset="'+Ft(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(g+='[imagesizes="'+Ft(a.imageSizes)+'"]')):g+='[href="'+Ft(t)+'"]';var x=g;switch(r){case"style":x=jl(t);break;case"script":x=Ol(t)}zn.has(x)||(t=p({rel:"preload",href:r==="image"&&a&&a.imageSrcSet?void 0:t,as:r},a),zn.set(x,t),c.querySelector(g)!==null||r==="style"&&c.querySelector(Qa(x))||r==="script"&&c.querySelector(Za(x))||(r=c.createElement("link"),qt(r,"link",t),bt(r),c.head.appendChild(r)))}}function f2(t,r){Er.m(t,r);var a=Ml;if(a&&t){var c=r&&typeof r.as=="string"?r.as:"script",g='link[rel="modulepreload"][as="'+Ft(c)+'"][href="'+Ft(t)+'"]',x=g;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":x=Ol(t)}if(!zn.has(x)&&(t=p({rel:"modulepreload",href:t},r),zn.set(x,t),a.querySelector(g)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Za(x)))return}c=a.createElement("link"),qt(c,"link",t),bt(c),a.head.appendChild(c)}}}function d2(t,r,a){Er.S(t,r,a);var c=Ml;if(c&&t){var g=Dr(c).hoistableStyles,x=jl(t);r=r||"default";var C=g.get(x);if(!C){var O={loading:0,preload:null};if(C=c.querySelector(Qa(x)))O.loading=5;else{t=p({rel:"stylesheet",href:t,"data-precedence":r},a),(a=zn.get(x))&&Td(t,a);var Q=C=c.createElement("link");bt(Q),qt(Q,"link",t),Q._p=new Promise(function(le,ce){Q.onload=le,Q.onerror=ce}),Q.addEventListener("load",function(){O.loading|=1}),Q.addEventListener("error",function(){O.loading|=2}),O.loading|=4,au(C,r,c)}C={type:"stylesheet",instance:C,count:1,state:O},g.set(x,C)}}}function h2(t,r){Er.X(t,r);var a=Ml;if(a&&t){var c=Dr(a).hoistableScripts,g=Ol(t),x=c.get(g);x||(x=a.querySelector(Za(g)),x||(t=p({src:t,async:!0},r),(r=zn.get(g))&&zd(t,r),x=a.createElement("script"),bt(x),qt(x,"link",t),a.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function p2(t,r){Er.M(t,r);var a=Ml;if(a&&t){var c=Dr(a).hoistableScripts,g=Ol(t),x=c.get(g);x||(x=a.querySelector(Za(g)),x||(t=p({src:t,async:!0,type:"module"},r),(r=zn.get(g))&&zd(t,r),x=a.createElement("script"),bt(x),qt(x,"link",t),a.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function $y(t,r,a,c){var g=(g=K.current)?lu(g):null;if(!g)throw Error(l(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(r=jl(a.href),a=Dr(g).hoistableStyles,c=a.get(r),c||(c={type:"style",instance:null,count:0,state:null},a.set(r,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=jl(a.href);var x=Dr(g).hoistableStyles,C=x.get(t);if(C||(g=g.ownerDocument||g,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},x.set(t,C),(x=g.querySelector(Qa(t)))&&!x._p&&(C.instance=x,C.state.loading=5),zn.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},zn.set(t,a),x||m2(g,t,a,C.state))),r&&c===null)throw Error(l(528,""));return C}if(r&&c!==null)throw Error(l(529,""));return null;case"script":return r=a.async,a=a.src,typeof a=="string"&&r&&typeof r!="function"&&typeof r!="symbol"?(r=Ol(a),a=Dr(g).hoistableScripts,c=a.get(r),c||(c={type:"script",instance:null,count:0,state:null},a.set(r,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,t))}}function jl(t){return'href="'+Ft(t)+'"'}function Qa(t){return'link[rel="stylesheet"]['+t+"]"}function Xy(t){return p({},t,{"data-precedence":t.precedence,precedence:null})}function m2(t,r,a,c){t.querySelector('link[rel="preload"][as="style"]['+r+"]")?c.loading=1:(r=t.createElement("link"),c.preload=r,r.addEventListener("load",function(){return c.loading|=1}),r.addEventListener("error",function(){return c.loading|=2}),qt(r,"link",a),bt(r),t.head.appendChild(r))}function Ol(t){return'[src="'+Ft(t)+'"]'}function Za(t){return"script[async]"+t}function Py(t,r,a){if(r.count++,r.instance===null)switch(r.type){case"style":var c=t.querySelector('style[data-href~="'+Ft(a.href)+'"]');if(c)return r.instance=c,bt(c),c;var g=p({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),bt(c),qt(c,"style",g),au(c,a.precedence,t),r.instance=c;case"stylesheet":g=jl(a.href);var x=t.querySelector(Qa(g));if(x)return r.state.loading|=4,r.instance=x,bt(x),x;c=Xy(a),(g=zn.get(g))&&Td(c,g),x=(t.ownerDocument||t).createElement("link"),bt(x);var C=x;return C._p=new Promise(function(O,Q){C.onload=O,C.onerror=Q}),qt(x,"link",c),r.state.loading|=4,au(x,a.precedence,t),r.instance=x;case"script":return x=Ol(a.src),(g=t.querySelector(Za(x)))?(r.instance=g,bt(g),g):(c=a,(g=zn.get(x))&&(c=p({},a),zd(c,g)),t=t.ownerDocument||t,g=t.createElement("script"),bt(g),qt(g,"link",c),t.head.appendChild(g),r.instance=g);case"void":return null;default:throw Error(l(443,r.type))}else r.type==="stylesheet"&&(r.state.loading&4)===0&&(c=r.instance,r.state.loading|=4,au(c,a.precedence,t));return r.instance}function au(t,r,a){for(var c=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),g=c.length?c[c.length-1]:null,x=g,C=0;C title"):null)}function g2(t,r,a){if(a===1||r.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof r.precedence!="string"||typeof r.href!="string"||r.href==="")break;return!0;case"link":if(typeof r.rel!="string"||typeof r.href!="string"||r.href===""||r.onLoad||r.onError)break;switch(r.rel){case"stylesheet":return t=r.disabled,typeof r.precedence=="string"&&t==null;default:return!0}case"script":if(r.async&&typeof r.async!="function"&&typeof r.async!="symbol"&&!r.onLoad&&!r.onError&&r.src&&typeof r.src=="string")return!0}return!1}function Zy(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function y2(t,r,a,c){if(a.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var g=jl(c.href),x=r.querySelector(Qa(g));if(x){r=x._p,r!==null&&typeof r=="object"&&typeof r.then=="function"&&(t.count++,t=su.bind(t),r.then(t,t)),a.state.loading|=4,a.instance=x,bt(x);return}x=r.ownerDocument||r,c=Xy(c),(g=zn.get(g))&&Td(c,g),x=x.createElement("link"),bt(x);var C=x;C._p=new Promise(function(O,Q){C.onload=O,C.onerror=Q}),qt(x,"link",c),a.instance=x}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,r),(r=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=su.bind(t),r.addEventListener("load",a),r.addEventListener("error",a))}}var Ad=0;function x2(t,r){return t.stylesheets&&t.count===0&&cu(t,t.stylesheets),0Ad?50:800)+r);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(g)}}:null}function su(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)cu(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var uu=null;function cu(t,r){t.stylesheets=null,t.unsuspend!==null&&(t.count++,uu=new Map,r.forEach(v2,t),uu=null,su.call(t))}function v2(t,r){if(!(r.state.loading&4)){var a=uu.get(t);if(a)var c=a.get(null);else{a=new Map,uu.set(t,a);for(var g=t.querySelectorAll("link[data-precedence],style[data-precedence]"),x=0;x"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),qd.exports=B2(),qd.exports}var U2=q2();/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const I2=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Nb=(...e)=>e.filter((n,i,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===i).join(" ").trim();/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var V2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Y2=V.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:i=2,absoluteStrokeWidth:l,className:o="",children:s,iconNode:u,...f},d)=>V.createElement("svg",{ref:d,...V2,width:n,height:n,stroke:e,strokeWidth:l?Number(i)*24/Number(n):i,className:Nb("lucide",o),...f},[...u.map(([h,m])=>V.createElement(h,m)),...Array.isArray(s)?s:[s]]));/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pe=(e,n)=>{const i=V.forwardRef(({className:l,...o},s)=>V.createElement(Y2,{ref:s,iconNode:n,className:Nb(`lucide-${I2(e)}`,l),...o}));return i.displayName=`${e}`,i};/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const kb=Pe("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const G2=Pe("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Bi=Pe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Fi=Pe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ia=Pe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const $2=Pe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const X2=Pe("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const P2=Pe("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const F2=Pe("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Cb=Pe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Q2=Pe("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Z2=Pe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const K2=Pe("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const J2=Pe("FileOutput",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const W2=Pe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const eN=Pe("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _o=Pe("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const tN=Pe("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const nN=Pe("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Vp=Pe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const rN=Pe("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const iN=Pe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const lN=Pe("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const aN=Pe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const bx=Pe("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Tb=Pe("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const oN=Pe("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const sN=Pe("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const uN=Pe("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const cN=Pe("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Bo=Pe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const fN=Pe("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),wx=e=>{let n;const i=new Set,l=(h,m)=>{const p=typeof h=="function"?h(n):h;if(!Object.is(p,n)){const y=n;n=m??(typeof p!="object"||p===null)?p:Object.assign({},n,p),i.forEach(v=>v(n,y))}},o=()=>n,f={setState:l,getState:o,getInitialState:()=>d,subscribe:h=>(i.add(h),()=>i.delete(h))},d=n=e(l,o,f);return f},dN=(e=>e?wx(e):wx),hN=e=>e;function pN(e,n=hN){const i=Ul.useSyncExternalStore(e.subscribe,Ul.useCallback(()=>n(e.getState()),[e,n]),Ul.useCallback(()=>n(e.getInitialState()),[e,n]));return Ul.useDebugValue(i),i}const Sx=e=>{const n=dN(e),i=l=>pN(n,l);return Object.assign(i,n),i},mN=(e=>e?Sx(e):Sx);function it(e,n,i="agent"){return e[n]||(e[n]={name:n,status:"pending",type:i,activity:[]}),e[n].activity||(e[n].activity=[]),e[n]}function xu(e,n,i){it(e,n).activity.push(i)}function Xe(e,n){e[n]&&(e[n]={...e[n]})}function ro(e,n,i,l){const o=e[n];if(!(o!=null&&o.for_each_items))return;const s=o.for_each_items.find(u=>u.key===i);s&&s.activity.push(l)}const he=mN(e=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:n=>{e({_wsSend:n})},sendGateResponse:(n,i,l)=>{const o=he.getState()._wsSend;o&&o({type:"gate_response",agent_name:n,selected_value:i,additional_input:l||{}})},processEvent:n=>{const i=vu[n.type];e(l=>{const o={...l,nodes:{...l.nodes},groupProgress:{...l.groupProgress},eventLog:[...l.eventLog],activityLog:[...l.activityLog],lastEventTime:n.timestamp};i&&i(o,n.data,n.timestamp);const s=bu(n);s&&o.eventLog.push(s);const u=wu(n);return u&&o.activityLog.push(u),o})},replayState:n=>{e(i=>{const l={...i,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null};for(const o of n){const s=vu[o.type];s&&s(l,o.data,o.timestamp);const u=bu(o);u&&l.eventLog.push(u);const f=wu(o);f&&l.activityLog.push(f),l.lastEventTime=o.timestamp}return l})},selectNode:n=>{e({selectedNode:n})},setReplayMode:n=>{e(i=>{const l={...i,replayMode:!0,replayEvents:n,replayTotalEvents:n.length,replayPosition:n.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null};for(const o of n){const s=vu[o.type];s&&s(l,o.data,o.timestamp);const u=bu(o);u&&l.eventLog.push(u);const f=wu(o);f&&l.activityLog.push(f),l.lastEventTime=o.timestamp}return l})},setReplayPosition:n=>{e(i=>{const l=i.replayEvents.slice(0,n),o={...i,replayPosition:n,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,lastEventTime:null};for(const s of l){const u=vu[s.type];u&&u(o,s.data,s.timestamp);const f=bu(s);f&&o.eventLog.push(f);const d=wu(s);d&&o.activityLog.push(d),o.lastEventTime=s.timestamp}return o})},setReplayPlaying:n=>{e({replayPlaying:n})},setReplaySpeed:n=>{e({replaySpeed:n})},setWsStatus:n=>{e({wsStatus:n})},setEdgeHighlight:(n,i,l)=>{e(o=>({highlightedEdges:[...o.highlightedEdges.filter(s=>!(s.from===n&&s.to===i)),{from:n,to:i,state:l}]}))},clearEdgeHighlight:(n,i)=>{e(l=>({highlightedEdges:l.highlightedEdges.filter(o=>!(o.from===n&&o.to===i))}))}})),vu={workflow_started:(e,n,i)=>{const l=n;e.workflowStatus="running",e.workflowStartTime=i??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=l.yaml_source??null,e.conductorVersion=l.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],it(e.nodes,"$start","start"),e.nodes.$start.status="running",Xe(e.nodes,"$start");const o=new Set,s=new Set;for(const u of e.parallelGroups){for(const f of u.agents)o.add(f);s.add(u.name),it(e.nodes,u.name,"parallel_group"),e.groupProgress[u.name]={total:u.agents.length,completed:0,failed:0};for(const f of u.agents)it(e.nodes,f,"agent")}for(const u of e.forEachGroups)s.add(u.name),it(e.nodes,u.name,"for_each_group"),e.groupProgress[u.name]={total:0,completed:0,failed:0};for(const u of e.agents)if(!s.has(u.name)&&!o.has(u.name)){const f=u.type||"agent";it(e.nodes,u.name,f),u.model&&(e.nodes[u.name].model=u.model),s.add(u.name)}e.agentsTotal=s.size},agent_started:(e,n,i)=>{const l=n,o=it(e.nodes,l.agent_name);o.iteration!=null&&(o.output!=null||o.error_type!=null)&&(o.iterationHistory||(o.iterationHistory=[]),o.iterationHistory.push({iteration:o.iteration,prompt:o.prompt,output:o.output,elapsed:o.elapsed,model:o.model,tokens:o.tokens,input_tokens:o.input_tokens,output_tokens:o.output_tokens,cost_usd:o.cost_usd,activity:o.activity,error_type:o.error_type,error_message:o.error_message})),o.status="running",o.iteration=l.iteration,o.startedAt=i??Date.now()/1e3,o.activity=[],l.context_window_max!=null&&(o.context_window_max=l.context_window_max),o.prompt=void 0,o.output=void 0,o.error_type=void 0,o.error_message=void 0,Xe(e.nodes,l.agent_name)},agent_completed:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="completed",e.agentsCompleted++,l.elapsed=i.elapsed,l.model=i.model,l.tokens=i.tokens,l.input_tokens=i.input_tokens,l.output_tokens=i.output_tokens,l.cost_usd=i.cost_usd,l.output=i.output,l.output_keys=i.output_keys,l.context_window_used=i.context_window_used,l.context_window_max=i.context_window_max,i.context_window_used!=null&&i.context_window_max!=null&&i.context_window_max>0&&(l.context_pct=Math.round(i.context_window_used/i.context_window_max*100)),i.cost_usd&&(e.totalCost+=i.cost_usd),i.tokens&&(e.totalTokens+=i.tokens),Xe(e.nodes,i.agent_name)},agent_failed:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="failed",l.elapsed=i.elapsed,l.error_type=i.error_type,l.error_message=i.message;for(const o of e.routes)o.to===i.agent_name&&(e.highlightedEdges=[...e.highlightedEdges.filter(s=>!(s.from===o.from&&s.to===o.to)),{from:o.from,to:o.to,state:"failed"}]);Xe(e.nodes,i.agent_name)},agent_prompt_rendered:(e,n)=>{var s;const i=n,l=n.item_key,o=it(e.nodes,i.agent_name);if(o.prompt=i.rendered_prompt,o.context_keys=i.context_keys,l){ro(e.nodes,i.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((s=i.rendered_prompt)==null?void 0:s.slice(0,500))||null});const u=e.nodes[i.agent_name];if(u!=null&&u.for_each_items){const f=u.for_each_items.find(d=>d.key===l);f&&(f.prompt=i.rendered_prompt)}}Xe(e.nodes,i.agent_name)},agent_reasoning:(e,n)=>{const i=n,l=n.item_key,o={type:"reasoning",icon:"💭",label:"thinking",text:i.content};xu(e.nodes,i.agent_name,o),l&&ro(e.nodes,i.agent_name,l,o),Xe(e.nodes,i.agent_name)},agent_tool_start:(e,n)=>{const i=n,l=n.item_key,o={type:"tool-start",icon:"🔧",label:"tool",text:i.tool_name,detail:i.arguments||null};xu(e.nodes,i.agent_name,o),l&&ro(e.nodes,i.agent_name,l,o),Xe(e.nodes,i.agent_name)},agent_tool_complete:(e,n)=>{const i=n,l=n.item_key,o={type:"tool-complete",icon:"✓",label:"result",text:i.tool_name||"done",detail:i.result||null};xu(e.nodes,i.agent_name,o),l&&ro(e.nodes,i.agent_name,l,o),Xe(e.nodes,i.agent_name)},agent_turn_start:(e,n)=>{const i=n,l=n.item_key,o={type:"turn",icon:"⏳",label:"turn",text:`Turn ${i.turn??"?"}`};xu(e.nodes,i.agent_name,o),l&&ro(e.nodes,i.agent_name,l,o),Xe(e.nodes,i.agent_name)},agent_message:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.latest_message=i.content,Xe(e.nodes,i.agent_name)},script_started:(e,n,i)=>{const l=n,o=it(e.nodes,l.agent_name);o.status="running",o.startedAt=i??Date.now()/1e3,Xe(e.nodes,l.agent_name)},script_completed:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="completed",e.agentsCompleted++,l.elapsed=i.elapsed,l.stdout=i.stdout,l.stderr=i.stderr,l.exit_code=i.exit_code,Xe(e.nodes,i.agent_name)},script_failed:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="failed",l.elapsed=i.elapsed,l.error_type=i.error_type,l.error_message=i.message,Xe(e.nodes,i.agent_name)},gate_presented:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="waiting",l.options=i.options,l.option_details=i.option_details,l.prompt=i.prompt,Xe(e.nodes,i.agent_name)},gate_resolved:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="completed",e.agentsCompleted++,l.selected_option=i.selected_option,l.route=i.route,l.additional_input=i.additional_input,Xe(e.nodes,i.agent_name)},route_taken:(e,n)=>{const i=n;e.highlightedEdges=[...e.highlightedEdges.filter(l=>!(l.from===i.from_agent&&l.to===i.to_agent)),{from:i.from_agent,to:i.to_agent,state:"taken"}]},parallel_started:(e,n)=>{const i=n,l=it(e.nodes,i.group_name,"parallel_group");l.status="running",e.groupProgress[i.group_name]&&(e.groupProgress[i.group_name].total=i.agents.length,e.groupProgress[i.group_name].completed=0,e.groupProgress[i.group_name].failed=0),Xe(e.nodes,i.group_name)},parallel_agent_completed:(e,n)=>{const i=n;e.groupProgress[i.group_name]&&e.groupProgress[i.group_name].completed++;const l=it(e.nodes,i.agent_name);l.status="completed",l.elapsed=i.elapsed,l.model=i.model,l.tokens=i.tokens,l.cost_usd=i.cost_usd,l.context_window_used=i.context_window_used,l.context_window_max=i.context_window_max,i.context_window_used!=null&&i.context_window_max!=null&&i.context_window_max>0&&(l.context_pct=Math.round(i.context_window_used/i.context_window_max*100)),i.cost_usd&&(e.totalCost+=i.cost_usd),i.tokens&&(e.totalTokens+=i.tokens),Xe(e.nodes,i.agent_name),Xe(e.nodes,i.group_name)},parallel_agent_failed:(e,n)=>{const i=n;e.groupProgress[i.group_name]&&e.groupProgress[i.group_name].failed++;const l=it(e.nodes,i.agent_name);l.status="failed",l.elapsed=i.elapsed,l.error_type=i.error_type,l.error_message=i.message,Xe(e.nodes,i.agent_name),Xe(e.nodes,i.group_name)},parallel_completed:(e,n)=>{const i=n;e.agentsCompleted++;const l=it(e.nodes,i.group_name,"parallel_group");l.status=i.failure_count===0?"completed":"failed",Xe(e.nodes,i.group_name)},for_each_started:(e,n)=>{const i=n,l=it(e.nodes,i.group_name,"for_each_group");l.status="running",l.for_each_items=[],e.groupProgress[i.group_name]&&(e.groupProgress[i.group_name].total=i.item_count,e.groupProgress[i.group_name].completed=0,e.groupProgress[i.group_name].failed=0),Xe(e.nodes,i.group_name)},for_each_item_started:(e,n)=>{const i=n,l=it(e.nodes,i.group_name,"for_each_group");l.for_each_items||(l.for_each_items=[]),l.for_each_items.push({key:i.item_key??String(i.index),index:i.index,status:"running",activity:[]}),Xe(e.nodes,i.group_name)},for_each_item_completed:(e,n)=>{const i=n;e.groupProgress[i.group_name]&&e.groupProgress[i.group_name].completed++;const l=it(e.nodes,i.group_name,"for_each_group");if(l.for_each_items){const o=i.item_key??String(i.index),s=l.for_each_items.find(u=>u.key===o);s&&(s.status="completed",s.elapsed=i.elapsed,s.tokens=i.tokens,s.cost_usd=i.cost_usd,s.output=i.output)}Xe(e.nodes,i.group_name)},for_each_item_failed:(e,n)=>{const i=n;e.groupProgress[i.group_name]&&e.groupProgress[i.group_name].failed++;const l=it(e.nodes,i.group_name,"for_each_group");if(l.for_each_items){const o=i.item_key??String(i.index),s=l.for_each_items.find(u=>u.key===o);s&&(s.status="failed",s.elapsed=i.elapsed,s.error_type=i.error_type,s.error_message=i.message)}Xe(e.nodes,i.group_name)},for_each_completed:(e,n)=>{const i=n;e.agentsCompleted++;const l=it(e.nodes,i.group_name,"for_each_group");l.status=(i.failure_count??0)===0?"completed":"failed",l.elapsed=i.elapsed,l.success_count=i.success_count,l.failure_count=i.failure_count,Xe(e.nodes,i.group_name)},workflow_completed:(e,n)=>{const i=n;e.workflowStatus="completed",e.isPaused=!1,e.workflowOutput=i.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",Xe(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",Xe(e.nodes,"$start")),e.highlightedEdges=[]},workflow_failed:(e,n)=>{const i=n;if(e.workflowStatus="failed",e.isPaused=!1,e.workflowFailedAgent=i.agent_name||null,i.agent_name&&e.nodes[i.agent_name]){e.nodes[i.agent_name].status="failed",Xe(e.nodes,i.agent_name);for(const l of e.routes)l.to===i.agent_name&&(e.highlightedEdges=[...e.highlightedEdges.filter(o=>!(o.from===l.from&&o.to===l.to)),{from:l.from,to:l.to,state:"failed"}])}e.workflowFailure={error_type:i.error_type,message:i.message,elapsed_seconds:i.elapsed_seconds,timeout_seconds:i.timeout_seconds,current_agent:i.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",Xe(e.nodes,"$start"))},checkpoint_saved:(e,n)=>{const i=n;i.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:i.path})},agent_paused:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),Xe(e.nodes,i.agent_name),e.isPaused=!0},agent_resumed:(e,n)=>{const i=n,l=it(e.nodes,i.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),Xe(e.nodes,i.agent_name),e.isPaused=!1}};function bu(e){var l,o;const n=e.timestamp,i=e.data;switch(e.type){case"workflow_started":return{timestamp:n,level:"info",source:"workflow",message:`Workflow "${i.name||""}" started`};case"agent_started":return{timestamp:n,level:"info",source:String(i.agent_name),message:`Agent started${i.iteration!=null?` (iteration ${i.iteration})`:""}`};case"agent_completed":return{timestamp:n,level:"success",source:String(i.agent_name),message:`Agent completed${i.elapsed!=null?` in ${Du(i.elapsed)}`:""}${i.tokens!=null?` · ${i.tokens.toLocaleString()} tokens`:""}${i.cost_usd!=null?` · $${i.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:n,level:"error",source:String(i.agent_name),message:`Agent failed: ${i.message||i.error_type||"unknown error"}`};case"script_started":return{timestamp:n,level:"info",source:String(i.agent_name),message:"Script started"};case"script_completed":return{timestamp:n,level:"success",source:String(i.agent_name),message:`Script completed (exit ${i.exit_code??"?"})${i.elapsed!=null?` in ${Du(i.elapsed)}`:""}`};case"script_failed":return{timestamp:n,level:"error",source:String(i.agent_name),message:`Script failed: ${i.message||i.error_type||"unknown error"}`};case"gate_presented":return{timestamp:n,level:"warning",source:String(i.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:n,level:"success",source:String(i.agent_name),message:`Gate resolved → ${i.selected_option||"continue"}`};case"route_taken":return{timestamp:n,level:"debug",source:"router",message:`${i.from_agent} → ${i.to_agent}`};case"parallel_started":return{timestamp:n,level:"info",source:String(i.group_name),message:`Parallel group started (${((l=i.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:n,level:i.failure_count===0?"success":"error",source:String(i.group_name),message:`Parallel group completed${i.failure_count>0?` with ${i.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:n,level:"info",source:String(i.group_name),message:`For-each started (${i.item_count} items)`};case"for_each_completed":return{timestamp:n,level:(i.failure_count??0)===0?"success":"error",source:String(i.group_name),message:`For-each completed · ${i.success_count} succeeded${i.failure_count>0?` · ${i.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:n,level:"success",source:"workflow",message:`Workflow completed${i.elapsed!=null?` in ${Du(i.elapsed)}`:""}`};case"workflow_failed":return{timestamp:n,level:"error",source:"workflow",message:`Workflow failed: ${i.message||i.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:n,level:"info",source:"workflow",message:`Checkpoint saved: ${((o=i.path)==null?void 0:o.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:n,level:"warning",source:String(i.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:n,level:"info",source:String(i.agent_name),message:"Agent resumed — re-executing"};default:return null}}function Du(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),i=(e%60).toFixed(0);return`${n}m ${i}s`}function wu(e){const n=e.timestamp,i=e.data;switch(e.type){case"agent_started":return{timestamp:n,source:String(i.agent_name),type:"turn",message:`Agent started${i.iteration!=null?` (iteration ${i.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:n,source:String(i.agent_name),type:"prompt",message:"Prompt rendered",detail:io(String(i.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:n,source:String(i.agent_name),type:"reasoning",message:String(i.content||"")};case"agent_tool_start":return{timestamp:n,source:String(i.agent_name),type:"tool-start",message:`→ ${i.tool_name}`,detail:i.arguments?io(String(i.arguments),300):null};case"agent_tool_complete":return{timestamp:n,source:String(i.agent_name),type:"tool-complete",message:`← ${i.tool_name||"done"}`,detail:i.result?io(String(i.result),300):null};case"agent_turn_start":return{timestamp:n,source:String(i.agent_name),type:"turn",message:`Turn ${i.turn??"?"}`};case"agent_message":return{timestamp:n,source:String(i.agent_name),type:"message",message:io(String(i.content||""),500)};case"agent_completed":return{timestamp:n,source:String(i.agent_name),type:"turn",message:`Completed${i.elapsed!=null?` in ${Du(i.elapsed)}`:""}${i.tokens!=null?` · ${i.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:n,source:String(i.agent_name),type:"turn",message:`Failed: ${i.message||i.error_type||"unknown"}`};case"script_started":return{timestamp:n,source:String(i.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:n,source:String(i.agent_name),type:"tool-complete",message:`Script completed (exit ${i.exit_code??"?"})`,detail:i.stdout?io(String(i.stdout),300):null};case"script_failed":return{timestamp:n,source:String(i.agent_name),type:"turn",message:`Script failed: ${i.message||i.error_type||"unknown"}`};default:return null}}function io(e,n){return e.length<=n?e:e.slice(0,n)+"…"}function _x(e){const n=e.match(/^(\s*)/);return n?n[1].length:0}function gN(e){const n=new Map;for(let i=0;io)s=u;else break}s>i&&n.set(i,s)}return n}function yN(e){if(/^\s*#/.test(e))return b.jsx("span",{className:"text-emerald-500/70",children:e});const n=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(n){const[,l,o,s,u,f]=n;return b.jsxs("span",{children:[l,o??"",b.jsx("span",{className:"text-sky-400",children:s}),b.jsx("span",{className:"text-[var(--text-muted)]",children:u}),Ex(f)]})}const i=e.match(/^(\s*)(- )(.*)/);if(i){const[,l,o,s]=i;return b.jsxs("span",{children:[l,b.jsx("span",{className:"text-[var(--text-muted)]",children:o}),Ex(s)]})}return b.jsx("span",{children:e})}function Ex(e){if(!e)return"";const n=e.indexOf(" #"),i=n>=0?e.slice(0,n):e,l=n>=0?e.slice(n):"";let o=i;return/^(true|false|null|yes|no)$/i.test(i.trim())?o=b.jsx("span",{className:"text-amber-400",children:i}):/^\d+(\.\d+)?$/.test(i.trim())?o=b.jsx("span",{className:"text-amber-400",children:i}):/^["'].*["']$/.test(i.trim())?o=b.jsx("span",{className:"text-green-400",children:i}):(i.includes("|")||i.includes(">"))&&(o=b.jsx("span",{className:"text-[var(--text-secondary)]",children:i})),b.jsxs(b.Fragment,{children:[o,l&&b.jsx("span",{className:"text-emerald-500/70",children:l})]})}function xN({yaml:e,onClose:n}){const[i,l]=V.useState(new Set);V.useEffect(()=>{const d=h=>{h.key==="Escape"&&n()};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[n]);const o=V.useMemo(()=>e.split(` -`),[e]),s=V.useMemo(()=>gN(o),[o]),u=V.useCallback(d=>{l(h=>{const m=new Set(h);return m.has(d)?m.delete(d):m.add(d),m})},[]),f=V.useMemo(()=>{const d=[];let h=-1;for(let m=0;mb.jsxs("div",{className:"flex",children:[b.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?b.jsx("button",{onClick:()=>u(d),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?b.jsx(ia,{className:"w-3 h-3"}):b.jsx(Fi,{className:"w-3 h-3"})}):null}),b.jsxs("span",{className:"flex-1",children:[yN(h),p&&b.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(d),children:"···"})]})]},d))})})]})]})}function vN(){const e=he(_=>_.workflowName),n=he(_=>_.workflowStatus),i=he(_=>_.isPaused),l=he(_=>_.workflowYaml),o=he(_=>_.conductorVersion),[s,u]=V.useState(!1),[f,d]=V.useState(!1),[h,m]=V.useState(!1),[p,y]=V.useState(!1),v=n==="running"||n==="pending";V.useEffect(()=>{i||(u(!1),d(!1),m(!1))},[i]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(_){console.error("Failed to stop agent:",_),u(!1)}},k=async()=>{d(!0);try{await fetch("/api/resume",{method:"POST"})}catch(_){console.error("Failed to resume agent:",_),d(!1)}},S=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(_){console.error("Failed to kill workflow:",_),m(!1)}};return b.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(kb,{className:"w-4 h-4 text-[var(--running)]"}),b.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&b.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),b.jsxs("div",{className:"flex items-center gap-3",children:[i?b.jsxs(b.Fragment,{children:[b.jsxs("button",{onClick:k,disabled:f,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded - bg-emerald-500/10 text-emerald-400 border border-emerald-500/20 - hover:bg-emerald-500/20 hover:border-emerald-500/30 - disabled:opacity-50 disabled:cursor-not-allowed - transition-colors`,title:"Re-execute the paused agent",children:[b.jsx(Vp,{className:"w-3 h-3"}),f?"Resuming...":"Resume"]}),b.jsxs("button",{onClick:S,disabled:h,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded - bg-red-500/10 text-red-400 border border-red-500/20 - hover:bg-red-500/20 hover:border-red-500/30 - disabled:opacity-50 disabled:cursor-not-allowed - transition-colors`,title:"Stop workflow entirely (checkpoint saved for CLI resume)",children:[b.jsx(Bo,{className:"w-3 h-3"}),h?"Killing...":"Kill"]})]}):v?b.jsxs("button",{onClick:w,disabled:s,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded - bg-red-500/10 text-red-400 border border-red-500/20 - hover:bg-red-500/20 hover:border-red-500/30 - disabled:opacity-50 disabled:cursor-not-allowed - transition-colors`,children:[b.jsx(Tb,{className:"w-3 h-3"}),s?"Stopping...":"Stop"]}):null,l&&b.jsxs("button",{onClick:()=>y(!0),className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded - bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)] - hover:text-[var(--text)] hover:bg-[var(--surface)] - transition-colors`,title:"View workflow YAML configuration",children:[b.jsx(K2,{className:"w-3 h-3"}),"YAML"]}),b.jsxs("a",{href:"/api/logs",download:"conductor-logs.json",className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded - bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)] - hover:text-[var(--text)] hover:bg-[var(--surface)] - transition-colors`,title:"Download full event log as JSON",children:[b.jsx(Q2,{className:"w-3 h-3"}),"Logs"]}),b.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["v",o??"—"]})]}),p&&l&&b.jsx(xN,{yaml:l,onClose:()=>y(!1)})]})}function Ye(...e){return e.filter(Boolean).join(" ")}function ln(e){if(e==null)return"";if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),i=(e%60).toFixed(0);return`${n}m ${i}s`}function Wn(e){return e==null?"":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function Zl(e){return e==null?"":`$${e.toFixed(4)}`}function zb(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)}function bN(e,n){if(n<=0)return`${e.toLocaleString()} tokens (limit unknown)`;const i=o=>o.toLocaleString(),l=(e/n*100).toFixed(1);return`${i(e)} / ${i(n)} (${l}%)`}function Ab(){const e=he(f=>f.workflowStatus),n=he(f=>f.workflowStartTime),i=he(f=>f.replayMode),l=he(f=>f.lastEventTime),[o,s]=V.useState("—"),u=V.useRef(null);return V.useEffect(()=>{if(n!=null){if(i){u.current&&(clearInterval(u.current),u.current=null),s(ln((l??n)-n));return}if(e==="running"){const f=()=>{const d=Date.now()/1e3-n;s(ln(d))};return f(),u.current=setInterval(f,500),()=>{u.current&&clearInterval(u.current)}}else(e==="completed"||e==="failed")&&u.current&&(clearInterval(u.current),u.current=null)}},[e,n,i,l]),o}function wN(){const e=he(k=>k.workflowStatus),n=he(k=>k.agentsCompleted),i=he(k=>k.agentsTotal),l=he(k=>k.totalCost),o=he(k=>k.totalTokens),s=he(k=>k.wsStatus),u=he(k=>k.workflowFailure),f=he(k=>k.lastEventTime),d=Ab(),[h,m]=V.useState(null);V.useEffect(()=>{if(e!=="running"||f==null){m(null);return}const k=()=>{m(Math.floor(Date.now()/1e3-f))};k();const S=setInterval(k,1e3);return()=>clearInterval(S)},[e,f]);const p=e==="failed",y=(()=>{switch(e){case"pending":return"Waiting for workflow…";case"running":return"Running";case"completed":return"Completed";case"failed":{if(!u)return"Failed";const k=u.error_type||"";return k==="MaxIterationsError"?"Failed: exceeded maximum iterations":k==="TimeoutError"?"Failed: workflow timed out":u.message?`Failed: ${u.message.length>60?u.message.slice(0,57)+"...":u.message}`:`Failed: ${k}`}}})(),v={pending:"bg-[var(--pending)]",running:"bg-[var(--running)] animate-pulse",completed:"bg-[var(--completed)]",failed:"bg-[var(--failed)]"}[e],w=(()=>{switch(s){case"connected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--completed)]",children:[b.jsx(cN,{className:"w-3 h-3"}),b.jsx("span",{children:"Connected"})]});case"disconnected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--failed)]",children:[b.jsx(uN,{className:"w-3 h-3"}),b.jsx("span",{children:"Disconnected"})]});case"reconnecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--waiting)]",children:[b.jsx(_o,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Reconnecting\\u2026"})]});case"connecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-muted)]",children:[b.jsx(_o,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Connecting\\u2026"})]})}})();return b.jsxs("footer",{className:Ye("flex items-center gap-4 px-4 py-1.5 border-t text-xs flex-shrink-0 transition-colors duration-300",p?"bg-red-950/50 border-red-500/30":"bg-[var(--surface)] border-[var(--border)]"),children:[b.jsx("span",{className:Ye("w-2 h-2 rounded-full flex-shrink-0",v)}),b.jsx("span",{className:Ye(p?"text-red-300":"text-[var(--text)]"),children:y}),i>0&&b.jsxs("span",{className:Ye(p?"text-red-400/60":"text-[var(--text-muted)]"),children:[n,"/",i," agents"]}),e!=="pending"&&b.jsx("span",{className:Ye("font-mono",p?"text-red-400/60":"text-[var(--text-muted)]"),children:d}),o>0&&b.jsxs("span",{className:Ye("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total tokens used",children:[b.jsx(eN,{className:"w-3 h-3"}),b.jsx("span",{className:"font-mono",children:o.toLocaleString()})]}),l>0&&b.jsxs("span",{className:Ye("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total cost",children:[b.jsx(F2,{className:"w-3 h-3"}),b.jsxs("span",{className:"font-mono",children:["$",l.toFixed(4)]})]}),h!=null&&h>=5&&b.jsxs("span",{className:Ye("flex items-center gap-1 font-mono",h>=60?"text-amber-400":"text-[var(--text-muted)]"),title:"Time since last event from the provider",children:[b.jsx(P2,{className:"w-3 h-3"}),b.jsx("span",{children:h>=60?`${Math.floor(h/60)}m ${h%60}s idle`:`${h}s idle`})]}),b.jsx("span",{className:"flex-1"}),w]})}const SN=[1,5,10,20,50];function _N(e,n){if(n===0||e.length===0)return"+0.0s";const i=e[0].timestamp,o=e[Math.min(n,e.length)-1].timestamp-i;if(o<60)return`+${o.toFixed(1)}s`;const s=Math.floor(o/60),u=o%60;return`+${s}m${u.toFixed(0)}s`}function EN(){const e=he(p=>p.replayPosition),n=he(p=>p.replayTotalEvents),i=he(p=>p.replayPlaying),l=he(p=>p.replaySpeed),o=he(p=>p.replayEvents),s=he(p=>p.setReplayPosition),u=he(p=>p.setReplayPlaying),f=he(p=>p.setReplaySpeed),d=p=>{const y=parseInt(p.target.value,10);s(y),i&&u(!1)},h=()=>{!i&&e>=n&&s(0),u(!i)},m=n>0?e/n*100:0;return b.jsxs("footer",{className:"flex items-center gap-3 px-4 py-1.5 border-t bg-[var(--surface)] border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx("button",{onClick:h,className:"flex items-center justify-center w-6 h-6 rounded hover:bg-[var(--surface-hover)] text-[var(--text-secondary)] hover:text-[var(--text)] transition-colors",title:i?"Pause":"Play",children:i?b.jsx(nN,{className:"w-3.5 h-3.5"}):b.jsx(Vp,{className:"w-3.5 h-3.5"})}),b.jsxs("div",{className:"flex-1 relative flex items-center",children:[b.jsx("input",{type:"range",min:0,max:n,value:e,onChange:d,className:"w-full h-1 appearance-none rounded-full cursor-pointer",style:{background:`linear-gradient(to right, var(--accent) 0%, var(--accent) ${m}%, var(--border) ${m}%, var(--border) 100%)`,WebkitAppearance:"none"}}),b.jsx("style",{children:` - footer input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - width: 12px; - height: 12px; - border-radius: 50%; - background: var(--accent); - border: 2px solid var(--surface); - cursor: pointer; - box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); - } - footer input[type="range"]::-moz-range-thumb { - width: 12px; - height: 12px; - border-radius: 50%; - background: var(--accent); - border: 2px solid var(--surface); - cursor: pointer; - box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); - } - `})]}),b.jsx("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:_N(o,e)}),b.jsxs("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:["Event ",e,"/",n]}),b.jsx("div",{className:"flex items-center gap-0.5",children:SN.map(p=>b.jsxs("button",{onClick:()=>f(p),className:Ye("px-1.5 py-0.5 rounded text-xs font-mono transition-colors",l===p?"bg-[var(--accent)] text-white":"text-[var(--text-muted)] hover:text-[var(--text-secondary)] hover:bg-[var(--surface-hover)]"),children:[p,"×"]},p))})]})}const ac=V.createContext(null);ac.displayName="PanelGroupContext";const gt={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Yp=10,qi=V.useLayoutEffect,Nx=R2.useId,NN=typeof Nx=="function"?Nx:()=>null;let kN=0;function Gp(e=null){const n=NN(),i=V.useRef(e||n||null);return i.current===null&&(i.current=""+kN++),e??i.current}function Mb({children:e,className:n="",collapsedSize:i,collapsible:l,defaultSize:o,forwardedRef:s,id:u,maxSize:f,minSize:d,onCollapse:h,onExpand:m,onResize:p,order:y,style:v,tagName:w="div",...k}){const S=V.useContext(ac);if(S===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:_,expandPanel:z,getPanelSize:E,getPanelStyle:A,groupId:B,isPanelCollapsed:T,reevaluatePanelConstraints:q,registerPanel:M,resizePanel:D,unregisterPanel:X}=S,H=Gp(u),I=V.useRef({callbacks:{onCollapse:h,onExpand:m,onResize:p},constraints:{collapsedSize:i,collapsible:l,defaultSize:o,maxSize:f,minSize:d},id:H,idIsFromProps:u!==void 0,order:y});V.useRef({didLogMissingDefaultSizeWarning:!1}),qi(()=>{const{callbacks:L,constraints:G}=I.current,R={...G};I.current.id=H,I.current.idIsFromProps=u!==void 0,I.current.order=y,L.onCollapse=h,L.onExpand=m,L.onResize=p,G.collapsedSize=i,G.collapsible=l,G.defaultSize=o,G.maxSize=f,G.minSize=d,(R.collapsedSize!==G.collapsedSize||R.collapsible!==G.collapsible||R.maxSize!==G.maxSize||R.minSize!==G.minSize)&&q(I.current,R)}),qi(()=>{const L=I.current;return M(L),()=>{X(L)}},[y,H,M,X]),V.useImperativeHandle(s,()=>({collapse:()=>{_(I.current)},expand:L=>{z(I.current,L)},getId(){return H},getSize(){return E(I.current)},isCollapsed(){return T(I.current)},isExpanded(){return!T(I.current)},resize:L=>{D(I.current,L)}}),[_,z,E,T,H,D]);const ee=A(I.current,o);return V.createElement(w,{...k,children:e,className:n,id:H,style:{...ee,...v},[gt.groupId]:B,[gt.panel]:"",[gt.panelCollapsible]:l||void 0,[gt.panelId]:H,[gt.panelSize]:parseFloat(""+ee.flexGrow).toFixed(1)})}const fo=V.forwardRef((e,n)=>V.createElement(Mb,{...e,forwardedRef:n}));Mb.displayName="Panel";fo.displayName="forwardRef(Panel)";let mp=null,Lu=-1,ci=null;function CN(e,n){if(n){const i=(n&Lb)!==0,l=(n&Hb)!==0,o=(n&Bb)!==0,s=(n&qb)!==0;if(i)return o?"se-resize":s?"ne-resize":"e-resize";if(l)return o?"sw-resize":s?"nw-resize":"w-resize";if(o)return"s-resize";if(s)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function TN(){ci!==null&&(document.head.removeChild(ci),mp=null,ci=null,Lu=-1)}function Yd(e,n){var i,l;const o=CN(e,n);if(mp!==o){if(mp=o,ci===null&&(ci=document.createElement("style"),document.head.appendChild(ci)),Lu>=0){var s;(s=ci.sheet)===null||s===void 0||s.removeRule(Lu)}Lu=(i=(l=ci.sheet)===null||l===void 0?void 0:l.insertRule(`*{cursor: ${o} !important;}`))!==null&&i!==void 0?i:-1}}function jb(e){return e.type==="keydown"}function Ob(e){return e.type.startsWith("pointer")}function Rb(e){return e.type.startsWith("mouse")}function oc(e){if(Ob(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(Rb(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function zN(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function AN(e,n,i){return e.xn.x&&e.yn.y}function MN(e,n){if(e===n)throw new Error("Cannot compare node with itself");const i={a:Tx(e),b:Tx(n)};let l;for(;i.a.at(-1)===i.b.at(-1);)e=i.a.pop(),n=i.b.pop(),l=e;Re(l,"Stacking order can only be calculated for elements with a common ancestor");const o={a:Cx(kx(i.a)),b:Cx(kx(i.b))};if(o.a===o.b){const s=l.childNodes,u={a:i.a.at(-1),b:i.b.at(-1)};let f=s.length;for(;f--;){const d=s[f];if(d===u.a)return 1;if(d===u.b)return-1}}return Math.sign(o.a-o.b)}const jN=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function ON(e){var n;const i=getComputedStyle((n=Db(e))!==null&&n!==void 0?n:e).display;return i==="flex"||i==="inline-flex"}function RN(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||ON(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||jN.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function kx(e){let n=e.length;for(;n--;){const i=e[n];if(Re(i,"Missing node"),RN(i))return i}return null}function Cx(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Tx(e){const n=[];for(;e;)n.push(e),e=Db(e);return n}function Db(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const Lb=1,Hb=2,Bb=4,qb=8,DN=zN()==="coarse";let In=[],$l=!1,Li=new Map,sc=new Map;const Eo=new Set;function LN(e,n,i,l,o){var s;const{ownerDocument:u}=n,f={direction:i,element:n,hitAreaMargins:l,setResizeHandlerState:o},d=(s=Li.get(u))!==null&&s!==void 0?s:0;return Li.set(u,d+1),Eo.add(f),Gu(),function(){var m;sc.delete(e),Eo.delete(f);const p=(m=Li.get(u))!==null&&m!==void 0?m:1;if(Li.set(u,p-1),Gu(),p===1&&Li.delete(u),In.includes(f)){const y=In.indexOf(f);y>=0&&In.splice(y,1),Xp(),o("up",!0,null)}}}function HN(e){const{target:n}=e,{x:i,y:l}=oc(e);$l=!0,$p({target:n,x:i,y:l}),Gu(),In.length>0&&($u("down",e),e.preventDefault(),Ub(n)||e.stopImmediatePropagation())}function Gd(e){const{x:n,y:i}=oc(e);if($l&&e.buttons===0&&($l=!1,$u("up",e)),!$l){const{target:l}=e;$p({target:l,x:n,y:i})}$u("move",e),Xp(),In.length>0&&e.preventDefault()}function $d(e){const{target:n}=e,{x:i,y:l}=oc(e);sc.clear(),$l=!1,In.length>0&&(e.preventDefault(),Ub(n)||e.stopImmediatePropagation()),$u("up",e),$p({target:n,x:i,y:l}),Xp(),Gu()}function Ub(e){let n=e;for(;n;){if(n.hasAttribute(gt.resizeHandle))return!0;n=n.parentElement}return!1}function $p({target:e,x:n,y:i}){In.splice(0);let l=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(l=e),Eo.forEach(o=>{const{element:s,hitAreaMargins:u}=o,f=s.getBoundingClientRect(),{bottom:d,left:h,right:m,top:p}=f,y=DN?u.coarse:u.fine;if(n>=h-y&&n<=m+y&&i>=p-y&&i<=d+y){if(l!==null&&document.contains(l)&&s!==l&&!s.contains(l)&&!l.contains(s)&&MN(l,s)>0){let w=l,k=!1;for(;w&&!w.contains(s);){if(AN(w.getBoundingClientRect(),f)){k=!0;break}w=w.parentElement}if(k)return}In.push(o)}})}function Xd(e,n){sc.set(e,n)}function Xp(){let e=!1,n=!1;In.forEach(l=>{const{direction:o}=l;o==="horizontal"?e=!0:n=!0});let i=0;sc.forEach(l=>{i|=l}),e&&n?Yd("intersection",i):e?Yd("horizontal",i):n?Yd("vertical",i):TN()}let Pd=new AbortController;function Gu(){Pd.abort(),Pd=new AbortController;const e={capture:!0,signal:Pd.signal};Eo.size&&($l?(In.length>0&&Li.forEach((n,i)=>{const{body:l}=i;n>0&&(l.addEventListener("contextmenu",$d,e),l.addEventListener("pointerleave",Gd,e),l.addEventListener("pointermove",Gd,e))}),window.addEventListener("pointerup",$d,e),window.addEventListener("pointercancel",$d,e)):Li.forEach((n,i)=>{const{body:l}=i;n>0&&(l.addEventListener("pointerdown",HN,e),l.addEventListener("pointermove",Gd,e))}))}function $u(e,n){Eo.forEach(i=>{const{setResizeHandlerState:l}=i,o=In.includes(i);l(e,o,n)})}function BN(){const[e,n]=V.useState(0);return V.useCallback(()=>n(i=>i+1),[])}function Re(e,n){if(!e)throw console.error(n),Error(n)}function Vi(e,n,i=Yp){return e.toFixed(i)===n.toFixed(i)?0:e>n?1:-1}function kr(e,n,i=Yp){return Vi(e,n,i)===0}function yn(e,n,i){return Vi(e,n,i)===0}function qN(e,n,i){if(e.length!==n.length)return!1;for(let l=0;l0&&(e=e<0?0-_:_)}}}{const p=e<0?f:d,y=i[p];Re(y,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:w,minSize:k=0}=y;if(w){const S=n[p];if(Re(S!=null,`Previous layout not found for panel index ${p}`),yn(S,k)){const _=S-v;Vi(_,Math.abs(e))>0&&(e=e<0?0-_:_)}}}}{const p=e<0?1:-1;let y=e<0?d:f,v=0;for(;;){const k=n[y];Re(k!=null,`Previous layout not found for panel index ${y}`);const _=Il({panelConstraints:i,panelIndex:y,size:100})-k;if(v+=_,y+=p,y<0||y>=i.length)break}const w=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-w:w}{let y=e<0?f:d;for(;y>=0&&y=0))break;e<0?y--:y++}}if(qN(o,u))return o;{const p=e<0?d:f,y=n[p];Re(y!=null,`Previous layout not found for panel index ${p}`);const v=y+h,w=Il({panelConstraints:i,panelIndex:p,size:v});if(u[p]=w,!yn(w,v)){let k=v-w,_=e<0?d:f;for(;_>=0&&_0?_--:_++}}}const m=u.reduce((p,y)=>y+p,0);return yn(m,100)?u:o}function UN({layout:e,panelsArray:n,pivotIndices:i}){let l=0,o=100,s=0,u=0;const f=i[0];Re(f!=null,"No pivot index found"),n.forEach((p,y)=>{const{constraints:v}=p,{maxSize:w=100,minSize:k=0}=v;y===f?(l=k,o=w):(s+=k,u+=w)});const d=Math.min(o,100-s),h=Math.max(l,100-u),m=e[f];return{valueMax:d,valueMin:h,valueNow:m}}function No(e,n=document){return Array.from(n.querySelectorAll(`[${gt.resizeHandleId}][data-panel-group-id="${e}"]`))}function Ib(e,n,i=document){const o=No(e,i).findIndex(s=>s.getAttribute(gt.resizeHandleId)===n);return o??null}function Vb(e,n,i){const l=Ib(e,n,i);return l!=null?[l,l+1]:[-1,-1]}function Yb(e,n=document){var i;if(n instanceof HTMLElement&&(n==null||(i=n.dataset)===null||i===void 0?void 0:i.panelGroupId)==e)return n;const l=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return l||null}function uc(e,n=document){const i=n.querySelector(`[${gt.resizeHandleId}="${e}"]`);return i||null}function IN(e,n,i,l=document){var o,s,u,f;const d=uc(n,l),h=No(e,l),m=d?h.indexOf(d):-1,p=(o=(s=i[m])===null||s===void 0?void 0:s.id)!==null&&o!==void 0?o:null,y=(u=(f=i[m+1])===null||f===void 0?void 0:f.id)!==null&&u!==void 0?u:null;return[p,y]}function VN({committedValuesRef:e,eagerValuesRef:n,groupId:i,layout:l,panelDataArray:o,panelGroupElement:s,setLayout:u}){V.useRef({didWarnAboutMissingResizeHandle:!1}),qi(()=>{if(!s)return;const f=No(i,s);for(let d=0;d{f.forEach((d,h)=>{d.removeAttribute("aria-controls"),d.removeAttribute("aria-valuemax"),d.removeAttribute("aria-valuemin"),d.removeAttribute("aria-valuenow")})}},[i,l,o,s]),V.useEffect(()=>{if(!s)return;const f=n.current;Re(f,"Eager values not found");const{panelDataArray:d}=f,h=Yb(i,s);Re(h!=null,`No group found for id "${i}"`);const m=No(i,s);Re(m,`No resize handles found for group id "${i}"`);const p=m.map(y=>{const v=y.getAttribute(gt.resizeHandleId);Re(v,"Resize handle element has no handle id attribute");const[w,k]=IN(i,v,d,s);if(w==null||k==null)return()=>{};const S=_=>{if(!_.defaultPrevented)switch(_.key){case"Enter":{_.preventDefault();const z=d.findIndex(E=>E.id===w);if(z>=0){const E=d[z];Re(E,`No panel data found for index ${z}`);const A=l[z],{collapsedSize:B=0,collapsible:T,minSize:q=0}=E.constraints;if(A!=null&&T){const M=ho({delta:yn(A,B)?q-B:B-A,initialLayout:l,panelConstraints:d.map(D=>D.constraints),pivotIndices:Vb(i,v,s),prevLayout:l,trigger:"keyboard"});l!==M&&u(M)}}break}}};return y.addEventListener("keydown",S),()=>{y.removeEventListener("keydown",S)}});return()=>{p.forEach(y=>y())}},[s,e,n,i,l,o,u])}function zx(e,n){if(e.length!==n.length)return!1;for(let i=0;is.constraints);let l=0,o=100;for(let s=0;s{const s=e[o];Re(s,`Panel data not found for index ${o}`);const{callbacks:u,constraints:f,id:d}=s,{collapsedSize:h=0,collapsible:m}=f,p=i[d];if(p==null||l!==p){i[d]=l;const{onCollapse:y,onExpand:v,onResize:w}=u;w&&w(l,p),m&&(y||v)&&(v&&(p==null||kr(p,h))&&!kr(l,h)&&v(),y&&(p==null||!kr(p,h))&&kr(l,h)&&y())}})}function Su(e,n){if(e.length!==n.length)return!1;for(let i=0;i{i!==null&&clearTimeout(i),i=setTimeout(()=>{e(...o)},n)}}function Ax(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,i)=>{localStorage.setItem(n,i)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function $b(e){return`react-resizable-panels:${e}`}function Xb(e){return e.map(n=>{const{constraints:i,id:l,idIsFromProps:o,order:s}=n;return o?l:s?`${s}:${JSON.stringify(i)}`:JSON.stringify(i)}).sort((n,i)=>n.localeCompare(i)).join(",")}function Pb(e,n){try{const i=$b(e),l=n.getItem(i);if(l){const o=JSON.parse(l);if(typeof o=="object"&&o!=null)return o}}catch{}return null}function FN(e,n,i){var l,o;const s=(l=Pb(e,i))!==null&&l!==void 0?l:{},u=Xb(n);return(o=s[u])!==null&&o!==void 0?o:null}function QN(e,n,i,l,o){var s;const u=$b(e),f=Xb(n),d=(s=Pb(e,o))!==null&&s!==void 0?s:{};d[f]={expandToSizes:Object.fromEntries(i.entries()),layout:l};try{o.setItem(u,JSON.stringify(d))}catch(h){console.error(h)}}function Mx({layout:e,panelConstraints:n}){const i=[...e],l=i.reduce((s,u)=>s+u,0);if(i.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${i.map(s=>`${s}%`).join(", ")}`);if(!yn(l,100)&&i.length>0)for(let s=0;s(Ax(po),po.getItem(e)),setItem:(e,n)=>{Ax(po),po.setItem(e,n)}},jx={};function Fb({autoSaveId:e=null,children:n,className:i="",direction:l,forwardedRef:o,id:s=null,onLayout:u=null,keyboardResizeBy:f=null,storage:d=po,style:h,tagName:m="div",...p}){const y=Gp(s),v=V.useRef(null),[w,k]=V.useState(null),[S,_]=V.useState([]),z=BN(),E=V.useRef({}),A=V.useRef(new Map),B=V.useRef(0),T=V.useRef({autoSaveId:e,direction:l,dragState:w,id:y,keyboardResizeBy:f,onLayout:u,storage:d}),q=V.useRef({layout:S,panelDataArray:[],panelDataArrayChanged:!1});V.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),V.useImperativeHandle(o,()=>({getId:()=>T.current.id,getLayout:()=>{const{layout:N}=q.current;return N},setLayout:N=>{const{onLayout:Y}=T.current,{layout:F,panelDataArray:K}=q.current,ne=Mx({layout:N,panelConstraints:K.map(re=>re.constraints)});zx(F,ne)||(_(ne),q.current.layout=ne,Y&&Y(ne),Dl(K,ne,E.current))}}),[]),qi(()=>{T.current.autoSaveId=e,T.current.direction=l,T.current.dragState=w,T.current.id=y,T.current.onLayout=u,T.current.storage=d}),VN({committedValuesRef:T,eagerValuesRef:q,groupId:y,layout:S,panelDataArray:q.current.panelDataArray,setLayout:_,panelGroupElement:v.current}),V.useEffect(()=>{const{panelDataArray:N}=q.current;if(e){if(S.length===0||S.length!==N.length)return;let Y=jx[e];Y==null&&(Y=PN(QN,ZN),jx[e]=Y);const F=[...N],K=new Map(A.current);Y(e,F,K,S,d)}},[e,S,d]),V.useEffect(()=>{});const M=V.useCallback(N=>{const{onLayout:Y}=T.current,{layout:F,panelDataArray:K}=q.current;if(N.constraints.collapsible){const ne=K.map(ve=>ve.constraints),{collapsedSize:re=0,panelSize:se,pivotIndices:ye}=Ri(K,N,F);if(Re(se!=null,`Panel size not found for panel "${N.id}"`),!kr(se,re)){A.current.set(N.id,se);const xe=ql(K,N)===K.length-1?se-re:re-se,pe=ho({delta:xe,initialLayout:F,panelConstraints:ne,pivotIndices:ye,prevLayout:F,trigger:"imperative-api"});Su(F,pe)||(_(pe),q.current.layout=pe,Y&&Y(pe),Dl(K,pe,E.current))}}},[]),D=V.useCallback((N,Y)=>{const{onLayout:F}=T.current,{layout:K,panelDataArray:ne}=q.current;if(N.constraints.collapsible){const re=ne.map(_e=>_e.constraints),{collapsedSize:se=0,panelSize:ye=0,minSize:ve=0,pivotIndices:xe}=Ri(ne,N,K),pe=Y??ve;if(kr(ye,se)){const _e=A.current.get(N.id),Me=_e!=null&&_e>=pe?_e:pe,st=ql(ne,N)===ne.length-1?ye-Me:Me-ye,We=ho({delta:st,initialLayout:K,panelConstraints:re,pivotIndices:xe,prevLayout:K,trigger:"imperative-api"});Su(K,We)||(_(We),q.current.layout=We,F&&F(We),Dl(ne,We,E.current))}}},[]),X=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=q.current,{panelSize:K}=Ri(F,N,Y);return Re(K!=null,`Panel size not found for panel "${N.id}"`),K},[]),H=V.useCallback((N,Y)=>{const{panelDataArray:F}=q.current,K=ql(F,N);return XN({defaultSize:Y,dragState:w,layout:S,panelData:F,panelIndex:K})},[w,S]),I=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=q.current,{collapsedSize:K=0,collapsible:ne,panelSize:re}=Ri(F,N,Y);return Re(re!=null,`Panel size not found for panel "${N.id}"`),ne===!0&&kr(re,K)},[]),ee=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=q.current,{collapsedSize:K=0,collapsible:ne,panelSize:re}=Ri(F,N,Y);return Re(re!=null,`Panel size not found for panel "${N.id}"`),!ne||Vi(re,K)>0},[]),L=V.useCallback(N=>{const{panelDataArray:Y}=q.current;Y.push(N),Y.sort((F,K)=>{const ne=F.order,re=K.order;return ne==null&&re==null?0:ne==null?-1:re==null?1:ne-re}),q.current.panelDataArrayChanged=!0,z()},[z]);qi(()=>{if(q.current.panelDataArrayChanged){q.current.panelDataArrayChanged=!1;const{autoSaveId:N,onLayout:Y,storage:F}=T.current,{layout:K,panelDataArray:ne}=q.current;let re=null;if(N){const ye=FN(N,ne,F);ye&&(A.current=new Map(Object.entries(ye.expandToSizes)),re=ye.layout)}re==null&&(re=$N({panelDataArray:ne}));const se=Mx({layout:re,panelConstraints:ne.map(ye=>ye.constraints)});zx(K,se)||(_(se),q.current.layout=se,Y&&Y(se),Dl(ne,se,E.current))}}),qi(()=>{const N=q.current;return()=>{N.layout=[]}},[]);const G=V.useCallback(N=>{let Y=!1;const F=v.current;return F&&window.getComputedStyle(F,null).getPropertyValue("direction")==="rtl"&&(Y=!0),function(ne){ne.preventDefault();const re=v.current;if(!re)return()=>null;const{direction:se,dragState:ye,id:ve,keyboardResizeBy:xe,onLayout:pe}=T.current,{layout:_e,panelDataArray:Me}=q.current,{initialLayout:Ce}=ye??{},st=Vb(ve,N,re);let We=GN(ne,N,se,ye,xe,re);const zt=se==="horizontal";zt&&Y&&(We=-We);const Ut=Me.map(Mn=>Mn.constraints),Rt=ho({delta:We,initialLayout:Ce??_e,panelConstraints:Ut,pivotIndices:st,prevLayout:_e,trigger:jb(ne)?"keyboard":"mouse-or-touch"}),wn=!Su(_e,Rt);(Ob(ne)||Rb(ne))&&B.current!=We&&(B.current=We,!wn&&We!==0?zt?Xd(N,We<0?Lb:Hb):Xd(N,We<0?Bb:qb):Xd(N,0)),wn&&(_(Rt),q.current.layout=Rt,pe&&pe(Rt),Dl(Me,Rt,E.current))}},[]),R=V.useCallback((N,Y)=>{const{onLayout:F}=T.current,{layout:K,panelDataArray:ne}=q.current,re=ne.map(_e=>_e.constraints),{panelSize:se,pivotIndices:ye}=Ri(ne,N,K);Re(se!=null,`Panel size not found for panel "${N.id}"`);const xe=ql(ne,N)===ne.length-1?se-Y:Y-se,pe=ho({delta:xe,initialLayout:K,panelConstraints:re,pivotIndices:ye,prevLayout:K,trigger:"imperative-api"});Su(K,pe)||(_(pe),q.current.layout=pe,F&&F(pe),Dl(ne,pe,E.current))},[]),$=V.useCallback((N,Y)=>{const{layout:F,panelDataArray:K}=q.current,{collapsedSize:ne=0,collapsible:re}=Y,{collapsedSize:se=0,collapsible:ye,maxSize:ve=100,minSize:xe=0}=N.constraints,{panelSize:pe}=Ri(K,N,F);pe!=null&&(re&&ye&&kr(pe,ne)?kr(ne,se)||R(N,se):peve&&R(N,ve))},[R]),Z=V.useCallback((N,Y)=>{const{direction:F}=T.current,{layout:K}=q.current;if(!v.current)return;const ne=uc(N,v.current);Re(ne,`Drag handle element not found for id "${N}"`);const re=Gb(F,Y);k({dragHandleId:N,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:re,initialLayout:K})},[]),J=V.useCallback(()=>{k(null)},[]),j=V.useCallback(N=>{const{panelDataArray:Y}=q.current,F=ql(Y,N);F>=0&&(Y.splice(F,1),delete E.current[N.id],q.current.panelDataArrayChanged=!0,z())},[z]),U=V.useMemo(()=>({collapsePanel:M,direction:l,dragState:w,expandPanel:D,getPanelSize:X,getPanelStyle:H,groupId:y,isPanelCollapsed:I,isPanelExpanded:ee,reevaluatePanelConstraints:$,registerPanel:L,registerResizeHandle:G,resizePanel:R,startDragging:Z,stopDragging:J,unregisterPanel:j,panelGroupElement:v.current}),[M,w,l,D,X,H,y,I,ee,$,L,G,R,Z,J,j]),P={display:"flex",flexDirection:l==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return V.createElement(ac.Provider,{value:U},V.createElement(m,{...p,children:n,className:i,id:s,ref:v,style:{...P,...h},[gt.group]:"",[gt.groupDirection]:l,[gt.groupId]:y}))}const gp=V.forwardRef((e,n)=>V.createElement(Fb,{...e,forwardedRef:n}));Fb.displayName="PanelGroup";gp.displayName="forwardRef(PanelGroup)";function ql(e,n){return e.findIndex(i=>i===n||i.id===n.id)}function Ri(e,n,i){const l=ql(e,n),s=l===e.length-1?[l-1,l]:[l,l+1],u=i[l];return{...n.constraints,panelSize:u,pivotIndices:s}}function KN({disabled:e,handleId:n,resizeHandler:i,panelGroupElement:l}){V.useEffect(()=>{if(e||i==null||l==null)return;const o=uc(n,l);if(o==null)return;const s=u=>{if(!u.defaultPrevented)switch(u.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{u.preventDefault(),i(u);break}case"F6":{u.preventDefault();const f=o.getAttribute(gt.groupId);Re(f,`No group element found for id "${f}"`);const d=No(f,l),h=Ib(f,n,l);Re(h!==null,`No resize element found for id "${n}"`);const m=u.shiftKey?h>0?h-1:d.length-1:h+1{o.removeEventListener("keydown",s)}},[l,e,n,i])}function yp({children:e=null,className:n="",disabled:i=!1,hitAreaMargins:l,id:o,onBlur:s,onClick:u,onDragging:f,onFocus:d,onPointerDown:h,onPointerUp:m,style:p={},tabIndex:y=0,tagName:v="div",...w}){var k,S;const _=V.useRef(null),z=V.useRef({onClick:u,onDragging:f,onPointerDown:h,onPointerUp:m});V.useEffect(()=>{z.current.onClick=u,z.current.onDragging=f,z.current.onPointerDown=h,z.current.onPointerUp=m});const E=V.useContext(ac);if(E===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:A,groupId:B,registerResizeHandle:T,startDragging:q,stopDragging:M,panelGroupElement:D}=E,X=Gp(o),[H,I]=V.useState("inactive"),[ee,L]=V.useState(!1),[G,R]=V.useState(null),$=V.useRef({state:H});qi(()=>{$.current.state=H}),V.useEffect(()=>{if(i)R(null);else{const U=T(X);R(()=>U)}},[i,X,T]);const Z=(k=l==null?void 0:l.coarse)!==null&&k!==void 0?k:15,J=(S=l==null?void 0:l.fine)!==null&&S!==void 0?S:5;V.useEffect(()=>{if(i||G==null)return;const U=_.current;Re(U,"Element ref not attached");let P=!1;return LN(X,U,A,{coarse:Z,fine:J},(Y,F,K)=>{if(!F){I("inactive");return}switch(Y){case"down":{I("drag"),P=!1,Re(K,'Expected event to be defined for "down" action'),q(X,K);const{onDragging:ne,onPointerDown:re}=z.current;ne==null||ne(!0),re==null||re();break}case"move":{const{state:ne}=$.current;P=!0,ne!=="drag"&&I("hover"),Re(K,'Expected event to be defined for "move" action'),G(K);break}case"up":{I("hover"),M();const{onClick:ne,onDragging:re,onPointerUp:se}=z.current;re==null||re(!1),se==null||se(),P||ne==null||ne();break}}})},[Z,A,i,J,T,X,G,q,M]),KN({disabled:i,handleId:X,resizeHandler:G,panelGroupElement:D});const j={touchAction:"none",userSelect:"none"};return V.createElement(v,{...w,children:e,className:n,id:o,onBlur:()=>{L(!1),s==null||s()},onFocus:()=>{L(!0),d==null||d()},ref:_,role:"separator",style:{...j,...p},tabIndex:y,[gt.groupDirection]:A,[gt.groupId]:B,[gt.resizeHandle]:"",[gt.resizeHandleActive]:H==="drag"?"pointer":ee?"keyboard":void 0,[gt.resizeHandleEnabled]:!i,[gt.resizeHandleId]:X,[gt.resizeHandleState]:H})}yp.displayName="PanelResizeHandle";function Tt(e){if(typeof e=="string"||typeof e=="number")return""+e;let n="";if(Array.isArray(e))for(let i=0,l;i{}};function cc(){for(var e=0,n=arguments.length,i={},l;e=0&&(l=i.slice(o+1),i=i.slice(0,o)),i&&!n.hasOwnProperty(i))throw new Error("unknown type: "+i);return{type:i,name:l}})}Hu.prototype=cc.prototype={constructor:Hu,on:function(e,n){var i=this._,l=WN(e+"",i),o,s=-1,u=l.length;if(arguments.length<2){for(;++s0)for(var i=new Array(o),l=0,o,s;l=0&&(n=e.slice(0,i))!=="xmlns"&&(e=e.slice(i+1)),Rx.hasOwnProperty(n)?{space:Rx[n],local:e}:e}function tk(e){return function(){var n=this.ownerDocument,i=this.namespaceURI;return i===xp&&n.documentElement.namespaceURI===xp?n.createElement(e):n.createElementNS(i,e)}}function nk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Qb(e){var n=fc(e);return(n.local?nk:tk)(n)}function rk(){}function Pp(e){return e==null?rk:function(){return this.querySelector(e)}}function ik(e){typeof e!="function"&&(e=Pp(e));for(var n=this._groups,i=n.length,l=new Array(i),o=0;o=E&&(E=z+1);!(B=S[E])&&++E=0;)(u=l[o])&&(s&&u.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(u,s),s=u);return this}function zk(e){e||(e=Ak);function n(p,y){return p&&y?e(p.__data__,y.__data__):!p-!y}for(var i=this._groups,l=i.length,o=new Array(l),s=0;sn?1:e>=n?0:NaN}function Mk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function jk(){return Array.from(this)}function Ok(){for(var e=this._groups,n=0,i=e.length;n1?this.each((n==null?Gk:typeof n=="function"?Xk:$k)(e,n,i??"")):Kl(this.node(),e)}function Kl(e,n){return e.style.getPropertyValue(n)||ew(e).getComputedStyle(e,null).getPropertyValue(n)}function Fk(e){return function(){delete this[e]}}function Qk(e,n){return function(){this[e]=n}}function Zk(e,n){return function(){var i=n.apply(this,arguments);i==null?delete this[e]:this[e]=i}}function Kk(e,n){return arguments.length>1?this.each((n==null?Fk:typeof n=="function"?Zk:Qk)(e,n)):this.node()[e]}function tw(e){return e.trim().split(/^|\s+/)}function Fp(e){return e.classList||new nw(e)}function nw(e){this._node=e,this._names=tw(e.getAttribute("class")||"")}nw.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function rw(e,n){for(var i=Fp(e),l=-1,o=n.length;++l=0&&(i=n.slice(l+1),n=n.slice(0,l)),{type:n,name:i}})}function NC(e){return function(){var n=this.__on;if(n){for(var i=0,l=-1,o=n.length,s;i()=>e;function vp(e,{sourceEvent:n,subject:i,target:l,identifier:o,active:s,x:u,y:f,dx:d,dy:h,dispatch:m}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:i,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:d,enumerable:!0,configurable:!0},dy:{value:h,enumerable:!0,configurable:!0},_:{value:m}})}vp.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function DC(e){return!e.ctrlKey&&!e.button}function LC(){return this.parentNode}function HC(e,n){return n??{x:e.x,y:e.y}}function BC(){return navigator.maxTouchPoints||"ontouchstart"in this}function uw(){var e=DC,n=LC,i=HC,l=BC,o={},s=cc("start","drag","end"),u=0,f,d,h,m,p=0;function y(A){A.on("mousedown.drag",v).filter(l).on("touchstart.drag",S).on("touchmove.drag",_,RC).on("touchend.drag touchcancel.drag",z).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(A,B){if(!(m||!e.call(this,A,B))){var T=E(this,n.call(this,A,B),A,B,"mouse");T&&(xn(A.view).on("mousemove.drag",w,ko).on("mouseup.drag",k,ko),ow(A.view),Fd(A),h=!1,f=A.clientX,d=A.clientY,T("start",A))}}function w(A){if(Xl(A),!h){var B=A.clientX-f,T=A.clientY-d;h=B*B+T*T>p}o.mouse("drag",A)}function k(A){xn(A.view).on("mousemove.drag mouseup.drag",null),sw(A.view,h),Xl(A),o.mouse("end",A)}function S(A,B){if(e.call(this,A,B)){var T=A.changedTouches,q=n.call(this,A,B),M=T.length,D,X;for(D=0;D>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):i===8?Eu(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):i===4?Eu(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=UC.exec(e))?new nn(n[1],n[2],n[3],1):(n=IC.exec(e))?new nn(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=VC.exec(e))?Eu(n[1],n[2],n[3],n[4]):(n=YC.exec(e))?Eu(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=GC.exec(e))?Ix(n[1],n[2]/100,n[3]/100,1):(n=$C.exec(e))?Ix(n[1],n[2]/100,n[3]/100,n[4]):Dx.hasOwnProperty(e)?Bx(Dx[e]):e==="transparent"?new nn(NaN,NaN,NaN,0):null}function Bx(e){return new nn(e>>16&255,e>>8&255,e&255,1)}function Eu(e,n,i,l){return l<=0&&(e=n=i=NaN),new nn(e,n,i,l)}function FC(e){return e instanceof Uo||(e=Yi(e)),e?(e=e.rgb(),new nn(e.r,e.g,e.b,e.opacity)):new nn}function bp(e,n,i,l){return arguments.length===1?FC(e):new nn(e,n,i,l??1)}function nn(e,n,i,l){this.r=+e,this.g=+n,this.b=+i,this.opacity=+l}Qp(nn,bp,cw(Uo,{brighter(e){return e=e==null?Pu:Math.pow(Pu,e),new nn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Co:Math.pow(Co,e),new nn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new nn(Ui(this.r),Ui(this.g),Ui(this.b),Fu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qx,formatHex:qx,formatHex8:QC,formatRgb:Ux,toString:Ux}));function qx(){return`#${Hi(this.r)}${Hi(this.g)}${Hi(this.b)}`}function QC(){return`#${Hi(this.r)}${Hi(this.g)}${Hi(this.b)}${Hi((isNaN(this.opacity)?1:this.opacity)*255)}`}function Ux(){const e=Fu(this.opacity);return`${e===1?"rgb(":"rgba("}${Ui(this.r)}, ${Ui(this.g)}, ${Ui(this.b)}${e===1?")":`, ${e})`}`}function Fu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ui(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Hi(e){return e=Ui(e),(e<16?"0":"")+e.toString(16)}function Ix(e,n,i,l){return l<=0?e=n=i=NaN:i<=0||i>=1?e=n=NaN:n<=0&&(e=NaN),new Bn(e,n,i,l)}function fw(e){if(e instanceof Bn)return new Bn(e.h,e.s,e.l,e.opacity);if(e instanceof Uo||(e=Yi(e)),!e)return new Bn;if(e instanceof Bn)return e;e=e.rgb();var n=e.r/255,i=e.g/255,l=e.b/255,o=Math.min(n,i,l),s=Math.max(n,i,l),u=NaN,f=s-o,d=(s+o)/2;return f?(n===s?u=(i-l)/f+(i0&&d<1?0:u,new Bn(u,f,d,e.opacity)}function ZC(e,n,i,l){return arguments.length===1?fw(e):new Bn(e,n,i,l??1)}function Bn(e,n,i,l){this.h=+e,this.s=+n,this.l=+i,this.opacity=+l}Qp(Bn,ZC,cw(Uo,{brighter(e){return e=e==null?Pu:Math.pow(Pu,e),new Bn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Co:Math.pow(Co,e),new Bn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,i=this.l,l=i+(i<.5?i:1-i)*n,o=2*i-l;return new nn(Qd(e>=240?e-240:e+120,o,l),Qd(e,o,l),Qd(e<120?e+240:e-120,o,l),this.opacity)},clamp(){return new Bn(Vx(this.h),Nu(this.s),Nu(this.l),Fu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Fu(this.opacity);return`${e===1?"hsl(":"hsla("}${Vx(this.h)}, ${Nu(this.s)*100}%, ${Nu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Vx(e){return e=(e||0)%360,e<0?e+360:e}function Nu(e){return Math.max(0,Math.min(1,e||0))}function Qd(e,n,i){return(e<60?n+(i-n)*e/60:e<180?i:e<240?n+(i-n)*(240-e)/60:n)*255}const Zp=e=>()=>e;function KC(e,n){return function(i){return e+i*n}}function JC(e,n,i){return e=Math.pow(e,i),n=Math.pow(n,i)-e,i=1/i,function(l){return Math.pow(e+l*n,i)}}function WC(e){return(e=+e)==1?dw:function(n,i){return i-n?JC(n,i,e):Zp(isNaN(n)?i:n)}}function dw(e,n){var i=n-e;return i?KC(e,i):Zp(isNaN(e)?n:e)}const Qu=(function e(n){var i=WC(n);function l(o,s){var u=i((o=bp(o)).r,(s=bp(s)).r),f=i(o.g,s.g),d=i(o.b,s.b),h=dw(o.opacity,s.opacity);return function(m){return o.r=u(m),o.g=f(m),o.b=d(m),o.opacity=h(m),o+""}}return l.gamma=e,l})(1);function e3(e,n){n||(n=[]);var i=e?Math.min(n.length,e.length):0,l=n.slice(),o;return function(s){for(o=0;oi&&(s=n.slice(i,s),f[u]?f[u]+=s:f[++u]=s),(l=l[0])===(o=o[0])?f[u]?f[u]+=o:f[++u]=o:(f[++u]=null,d.push({i:u,x:Kn(l,o)})),i=Zd.lastIndex;return i180?m+=360:m-h>180&&(h+=360),y.push({i:p.push(o(p)+"rotate(",null,l)-2,x:Kn(h,m)})):m&&p.push(o(p)+"rotate("+m+l)}function f(h,m,p,y){h!==m?y.push({i:p.push(o(p)+"skewX(",null,l)-2,x:Kn(h,m)}):m&&p.push(o(p)+"skewX("+m+l)}function d(h,m,p,y,v,w){if(h!==p||m!==y){var k=v.push(o(v)+"scale(",null,",",null,")");w.push({i:k-4,x:Kn(h,p)},{i:k-2,x:Kn(m,y)})}else(p!==1||y!==1)&&v.push(o(v)+"scale("+p+","+y+")")}return function(h,m){var p=[],y=[];return h=e(h),m=e(m),s(h.translateX,h.translateY,m.translateX,m.translateY,p,y),u(h.rotate,m.rotate,p,y),f(h.skewX,m.skewX,p,y),d(h.scaleX,h.scaleY,m.scaleX,m.scaleY,p,y),h=m=null,function(v){for(var w=-1,k=y.length,S;++w=0&&e._call.call(void 0,n),e=e._next;--Jl}function $x(){Gi=(Ku=zo.now())+dc,Jl=mo=0;try{m3()}finally{Jl=0,y3(),Gi=0}}function g3(){var e=zo.now(),n=e-Ku;n>gw&&(dc-=n,Ku=e)}function y3(){for(var e,n=Zu,i,l=1/0;n;)n._call?(l>n._time&&(l=n._time),e=n,n=n._next):(i=n._next,n._next=null,n=e?e._next=i:Zu=i);go=e,_p(l)}function _p(e){if(!Jl){mo&&(mo=clearTimeout(mo));var n=e-Gi;n>24?(e<1/0&&(mo=setTimeout($x,e-zo.now()-dc)),lo&&(lo=clearInterval(lo))):(lo||(Ku=zo.now(),lo=setInterval(g3,gw)),Jl=1,yw($x))}}function Xx(e,n,i){var l=new Ju;return n=n==null?0:+n,l.restart(o=>{l.stop(),e(o+n)},n,i),l}var x3=cc("start","end","cancel","interrupt"),v3=[],vw=0,Px=1,Ep=2,qu=3,Fx=4,Np=5,Uu=6;function hc(e,n,i,l,o,s){var u=e.__transition;if(!u)e.__transition={};else if(i in u)return;b3(e,i,{name:n,index:l,group:o,on:x3,tween:v3,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:vw})}function Jp(e,n){var i=Yn(e,n);if(i.state>vw)throw new Error("too late; already scheduled");return i}function rr(e,n){var i=Yn(e,n);if(i.state>qu)throw new Error("too late; already running");return i}function Yn(e,n){var i=e.__transition;if(!i||!(i=i[n]))throw new Error("transition not found");return i}function b3(e,n,i){var l=e.__transition,o;l[n]=i,i.timer=xw(s,0,i.time);function s(h){i.state=Px,i.timer.restart(u,i.delay,i.time),i.delay<=h&&u(h-i.delay)}function u(h){var m,p,y,v;if(i.state!==Px)return d();for(m in l)if(v=l[m],v.name===i.name){if(v.state===qu)return Xx(u);v.state===Fx?(v.state=Uu,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete l[m]):+mEp&&l.state=0&&(n=n.slice(0,i)),!n||n==="start"})}function Z3(e,n,i){var l,o,s=Q3(n)?Jp:rr;return function(){var u=s(this,e),f=u.on;f!==l&&(o=(l=f).copy()).on(n,i),u.on=o}}function K3(e,n){var i=this._id;return arguments.length<2?Yn(this.node(),i).on.on(e):this.each(Z3(i,e,n))}function J3(e){return function(){var n=this.parentNode;for(var i in this.__transition)if(+i!==e)return;n&&n.removeChild(this)}}function W3(){return this.on("end.remove",J3(this._id))}function eT(e){var n=this._name,i=this._id;typeof e!="function"&&(e=Pp(e));for(var l=this._groups,o=l.length,s=new Array(o),u=0;u()=>e;function NT(e,{sourceEvent:n,target:i,transform:l,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:o}})}function Cr(e,n,i){this.k=e,this.x=n,this.y=i}Cr.prototype={constructor:Cr,scale:function(e){return e===1?this:new Cr(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new Cr(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var pc=new Cr(1,0,0);_w.prototype=Cr.prototype;function _w(e){for(;!e.__zoom;)if(!(e=e.parentNode))return pc;return e.__zoom}function Kd(e){e.stopImmediatePropagation()}function ao(e){e.preventDefault(),e.stopImmediatePropagation()}function kT(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function CT(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Qx(){return this.__zoom||pc}function TT(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function zT(){return navigator.maxTouchPoints||"ontouchstart"in this}function AT(e,n,i){var l=e.invertX(n[0][0])-i[0][0],o=e.invertX(n[1][0])-i[1][0],s=e.invertY(n[0][1])-i[0][1],u=e.invertY(n[1][1])-i[1][1];return e.translate(o>l?(l+o)/2:Math.min(0,l)||Math.max(0,o),u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u))}function Ew(){var e=kT,n=CT,i=AT,l=TT,o=zT,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,d=Bu,h=cc("start","zoom","end"),m,p,y,v=500,w=150,k=0,S=10;function _(L){L.property("__zoom",Qx).on("wheel.zoom",M,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",X).filter(o).on("touchstart.zoom",H).on("touchmove.zoom",I).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(L,G,R,$){var Z=L.selection?L.selection():L;Z.property("__zoom",Qx),L!==Z?B(L,G,R,$):Z.interrupt().each(function(){T(this,arguments).event($).start().zoom(null,typeof G=="function"?G.apply(this,arguments):G).end()})},_.scaleBy=function(L,G,R,$){_.scaleTo(L,function(){var Z=this.__zoom.k,J=typeof G=="function"?G.apply(this,arguments):G;return Z*J},R,$)},_.scaleTo=function(L,G,R,$){_.transform(L,function(){var Z=n.apply(this,arguments),J=this.__zoom,j=R==null?A(Z):typeof R=="function"?R.apply(this,arguments):R,U=J.invert(j),P=typeof G=="function"?G.apply(this,arguments):G;return i(E(z(J,P),j,U),Z,u)},R,$)},_.translateBy=function(L,G,R,$){_.transform(L,function(){return i(this.__zoom.translate(typeof G=="function"?G.apply(this,arguments):G,typeof R=="function"?R.apply(this,arguments):R),n.apply(this,arguments),u)},null,$)},_.translateTo=function(L,G,R,$,Z){_.transform(L,function(){var J=n.apply(this,arguments),j=this.__zoom,U=$==null?A(J):typeof $=="function"?$.apply(this,arguments):$;return i(pc.translate(U[0],U[1]).scale(j.k).translate(typeof G=="function"?-G.apply(this,arguments):-G,typeof R=="function"?-R.apply(this,arguments):-R),J,u)},$,Z)};function z(L,G){return G=Math.max(s[0],Math.min(s[1],G)),G===L.k?L:new Cr(G,L.x,L.y)}function E(L,G,R){var $=G[0]-R[0]*L.k,Z=G[1]-R[1]*L.k;return $===L.x&&Z===L.y?L:new Cr(L.k,$,Z)}function A(L){return[(+L[0][0]+ +L[1][0])/2,(+L[0][1]+ +L[1][1])/2]}function B(L,G,R,$){L.on("start.zoom",function(){T(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){T(this,arguments).event($).end()}).tween("zoom",function(){var Z=this,J=arguments,j=T(Z,J).event($),U=n.apply(Z,J),P=R==null?A(U):typeof R=="function"?R.apply(Z,J):R,N=Math.max(U[1][0]-U[0][0],U[1][1]-U[0][1]),Y=Z.__zoom,F=typeof G=="function"?G.apply(Z,J):G,K=d(Y.invert(P).concat(N/Y.k),F.invert(P).concat(N/F.k));return function(ne){if(ne===1)ne=F;else{var re=K(ne),se=N/re[2];ne=new Cr(se,P[0]-re[0]*se,P[1]-re[1]*se)}j.zoom(null,ne)}})}function T(L,G,R){return!R&&L.__zooming||new q(L,G)}function q(L,G){this.that=L,this.args=G,this.active=0,this.sourceEvent=null,this.extent=n.apply(L,G),this.taps=0}q.prototype={event:function(L){return L&&(this.sourceEvent=L),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(L,G){return this.mouse&&L!=="mouse"&&(this.mouse[1]=G.invert(this.mouse[0])),this.touch0&&L!=="touch"&&(this.touch0[1]=G.invert(this.touch0[0])),this.touch1&&L!=="touch"&&(this.touch1[1]=G.invert(this.touch1[0])),this.that.__zoom=G,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(L){var G=xn(this.that).datum();h.call(L,this.that,new NT(L,{sourceEvent:this.sourceEvent,target:_,transform:this.that.__zoom,dispatch:h}),G)}};function M(L,...G){if(!e.apply(this,arguments))return;var R=T(this,G).event(L),$=this.__zoom,Z=Math.max(s[0],Math.min(s[1],$.k*Math.pow(2,l.apply(this,arguments)))),J=Hn(L);if(R.wheel)(R.mouse[0][0]!==J[0]||R.mouse[0][1]!==J[1])&&(R.mouse[1]=$.invert(R.mouse[0]=J)),clearTimeout(R.wheel);else{if($.k===Z)return;R.mouse=[J,$.invert(J)],Iu(this),R.start()}ao(L),R.wheel=setTimeout(j,w),R.zoom("mouse",i(E(z($,Z),R.mouse[0],R.mouse[1]),R.extent,u));function j(){R.wheel=null,R.end()}}function D(L,...G){if(y||!e.apply(this,arguments))return;var R=L.currentTarget,$=T(this,G,!0).event(L),Z=xn(L.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",N,!0),J=Hn(L,R),j=L.clientX,U=L.clientY;ow(L.view),Kd(L),$.mouse=[J,this.__zoom.invert(J)],Iu(this),$.start();function P(Y){if(ao(Y),!$.moved){var F=Y.clientX-j,K=Y.clientY-U;$.moved=F*F+K*K>k}$.event(Y).zoom("mouse",i(E($.that.__zoom,$.mouse[0]=Hn(Y,R),$.mouse[1]),$.extent,u))}function N(Y){Z.on("mousemove.zoom mouseup.zoom",null),sw(Y.view,$.moved),ao(Y),$.event(Y).end()}}function X(L,...G){if(e.apply(this,arguments)){var R=this.__zoom,$=Hn(L.changedTouches?L.changedTouches[0]:L,this),Z=R.invert($),J=R.k*(L.shiftKey?.5:2),j=i(E(z(R,J),$,Z),n.apply(this,G),u);ao(L),f>0?xn(this).transition().duration(f).call(B,j,$,L):xn(this).call(_.transform,j,$,L)}}function H(L,...G){if(e.apply(this,arguments)){var R=L.touches,$=R.length,Z=T(this,G,L.changedTouches.length===$).event(L),J,j,U,P;for(Kd(L),j=0;j<$;++j)U=R[j],P=Hn(U,this),P=[P,this.__zoom.invert(P),U.identifier],Z.touch0?!Z.touch1&&Z.touch0[2]!==P[2]&&(Z.touch1=P,Z.taps=0):(Z.touch0=P,J=!0,Z.taps=1+!!m);m&&(m=clearTimeout(m)),J&&(Z.taps<2&&(p=P[0],m=setTimeout(function(){m=null},v)),Iu(this),Z.start())}}function I(L,...G){if(this.__zooming){var R=T(this,G).event(L),$=L.changedTouches,Z=$.length,J,j,U,P;for(ao(L),J=0;J"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:n,sourceHandle:i,targetHandle:l})=>`Couldn't create edge for ${e} handle id: "${e==="source"?i:l}", edge id: ${n}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Ao=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Nw=["Enter"," ","Escape"],kw={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:n,y:i})=>`Moved selected node ${e}. New position, x: ${n}, y: ${i}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var Wl;(function(e){e.Strict="strict",e.Loose="loose"})(Wl||(Wl={}));var Ii;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(Ii||(Ii={}));var Mo;(function(e){e.Partial="partial",e.Full="full"})(Mo||(Mo={}));const Cw={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var fi;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(fi||(fi={}));var Wu;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(Wu||(Wu={}));var we;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(we||(we={}));const Zx={[we.Left]:we.Right,[we.Right]:we.Left,[we.Top]:we.Bottom,[we.Bottom]:we.Top};function Tw(e){return e===null?null:e?"valid":"invalid"}const zw=e=>"id"in e&&"source"in e&&"target"in e,MT=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),em=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Io=(e,n=[0,0])=>{const{width:i,height:l}=Ar(e),o=e.origin??n,s=i*o[0],u=l*o[1];return{x:e.position.x-s,y:e.position.y-u}},jT=(e,n={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const i=e.reduce((l,o)=>{const s=typeof o=="string";let u=!n.nodeLookup&&!s?o:void 0;n.nodeLookup&&(u=s?n.nodeLookup.get(o):em(o)?o:n.nodeLookup.get(o.id));const f=u?ec(u,n.nodeOrigin):{x:0,y:0,x2:0,y2:0};return mc(l,f)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return gc(i)},Vo=(e,n={})=>{let i={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return e.forEach(o=>{(n.filter===void 0||n.filter(o))&&(i=mc(i,ec(o)),l=!0)}),l?gc(i):{x:0,y:0,width:0,height:0}},tm=(e,n,[i,l,o]=[0,0,1],s=!1,u=!1)=>{const f={...Go(n,[i,l,o]),width:n.width/o,height:n.height/o},d=[];for(const h of e.values()){const{measured:m,selectable:p=!0,hidden:y=!1}=h;if(u&&!p||y)continue;const v=m.width??h.width??h.initialWidth??null,w=m.height??h.height??h.initialHeight??null,k=jo(f,ta(h)),S=(v??0)*(w??0),_=s&&k>0;(!h.internals.handleBounds||_||k>=S||h.dragging)&&d.push(h)}return d},OT=(e,n)=>{const i=new Set;return e.forEach(l=>{i.add(l.id)}),n.filter(l=>i.has(l.source)||i.has(l.target))};function RT(e,n){const i=new Map,l=n!=null&&n.nodes?new Set(n.nodes.map(o=>o.id)):null;return e.forEach(o=>{o.measured.width&&o.measured.height&&((n==null?void 0:n.includeHiddenNodes)||!o.hidden)&&(!l||l.has(o.id))&&i.set(o.id,o)}),i}async function DT({nodes:e,width:n,height:i,panZoom:l,minZoom:o,maxZoom:s},u){if(e.size===0)return Promise.resolve(!0);const f=RT(e,u),d=Vo(f),h=nm(d,n,i,(u==null?void 0:u.minZoom)??o,(u==null?void 0:u.maxZoom)??s,(u==null?void 0:u.padding)??.1);return await l.setViewport(h,{duration:u==null?void 0:u.duration,ease:u==null?void 0:u.ease,interpolate:u==null?void 0:u.interpolate}),Promise.resolve(!0)}function Aw({nodeId:e,nextPosition:n,nodeLookup:i,nodeOrigin:l=[0,0],nodeExtent:o,onError:s}){const u=i.get(e),f=u.parentId?i.get(u.parentId):void 0,{x:d,y:h}=f?f.internals.positionAbsolute:{x:0,y:0},m=u.origin??l;let p=u.extent||o;if(u.extent==="parent"&&!u.expandParent)if(!f)s==null||s("005",tr.error005());else{const v=f.measured.width,w=f.measured.height;v&&w&&(p=[[d,h],[d+v,h+w]])}else f&&na(u.extent)&&(p=[[u.extent[0][0]+d,u.extent[0][1]+h],[u.extent[1][0]+d,u.extent[1][1]+h]]);const y=na(p)?$i(n,p,u.measured):n;return(u.measured.width===void 0||u.measured.height===void 0)&&(s==null||s("015",tr.error015())),{position:{x:y.x-d+(u.measured.width??0)*m[0],y:y.y-h+(u.measured.height??0)*m[1]},positionAbsolute:y}}async function LT({nodesToRemove:e=[],edgesToRemove:n=[],nodes:i,edges:l,onBeforeDelete:o}){const s=new Set(e.map(y=>y.id)),u=[];for(const y of i){if(y.deletable===!1)continue;const v=s.has(y.id),w=!v&&y.parentId&&u.find(k=>k.id===y.parentId);(v||w)&&u.push(y)}const f=new Set(n.map(y=>y.id)),d=l.filter(y=>y.deletable!==!1),m=OT(u,d);for(const y of d)f.has(y.id)&&!m.find(w=>w.id===y.id)&&m.push(y);if(!o)return{edges:m,nodes:u};const p=await o({nodes:u,edges:m});return typeof p=="boolean"?p?{edges:m,nodes:u}:{edges:[],nodes:[]}:p}const ea=(e,n=0,i=1)=>Math.min(Math.max(e,n),i),$i=(e={x:0,y:0},n,i)=>({x:ea(e.x,n[0][0],n[1][0]-((i==null?void 0:i.width)??0)),y:ea(e.y,n[0][1],n[1][1]-((i==null?void 0:i.height)??0))});function Mw(e,n,i){const{width:l,height:o}=Ar(i),{x:s,y:u}=i.internals.positionAbsolute;return $i(e,[[s,u],[s+l,u+o]],n)}const Kx=(e,n,i)=>ei?-ea(Math.abs(e-i),1,n)/n:0,jw=(e,n,i=15,l=40)=>{const o=Kx(e.x,l,n.width-l)*i,s=Kx(e.y,l,n.height-l)*i;return[o,s]},mc=(e,n)=>({x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),x2:Math.max(e.x2,n.x2),y2:Math.max(e.y2,n.y2)}),kp=({x:e,y:n,width:i,height:l})=>({x:e,y:n,x2:e+i,y2:n+l}),gc=({x:e,y:n,x2:i,y2:l})=>({x:e,y:n,width:i-e,height:l-n}),ta=(e,n=[0,0])=>{var o,s;const{x:i,y:l}=em(e)?e.internals.positionAbsolute:Io(e,n);return{x:i,y:l,width:((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},ec=(e,n=[0,0])=>{var o,s;const{x:i,y:l}=em(e)?e.internals.positionAbsolute:Io(e,n);return{x:i,y:l,x2:i+(((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0),y2:l+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},Ow=(e,n)=>gc(mc(kp(e),kp(n))),jo=(e,n)=>{const i=Math.max(0,Math.min(e.x+e.width,n.x+n.width)-Math.max(e.x,n.x)),l=Math.max(0,Math.min(e.y+e.height,n.y+n.height)-Math.max(e.y,n.y));return Math.ceil(i*l)},Jx=e=>qn(e.width)&&qn(e.height)&&qn(e.x)&&qn(e.y),qn=e=>!isNaN(e)&&isFinite(e),HT=(e,n)=>{},Yo=(e,n=[1,1])=>({x:n[0]*Math.round(e.x/n[0]),y:n[1]*Math.round(e.y/n[1])}),Go=({x:e,y:n},[i,l,o],s=!1,u=[1,1])=>{const f={x:(e-i)/o,y:(n-l)/o};return s?Yo(f,u):f},tc=({x:e,y:n},[i,l,o])=>({x:e*o+i,y:n*o+l});function Ll(e,n){if(typeof e=="number")return Math.floor((n-n/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const i=parseFloat(e);if(!Number.isNaN(i))return Math.floor(i)}if(typeof e=="string"&&e.endsWith("%")){const i=parseFloat(e);if(!Number.isNaN(i))return Math.floor(n*i*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function BT(e,n,i){if(typeof e=="string"||typeof e=="number"){const l=Ll(e,i),o=Ll(e,n);return{top:l,right:o,bottom:l,left:o,x:o*2,y:l*2}}if(typeof e=="object"){const l=Ll(e.top??e.y??0,i),o=Ll(e.bottom??e.y??0,i),s=Ll(e.left??e.x??0,n),u=Ll(e.right??e.x??0,n);return{top:l,right:u,bottom:o,left:s,x:s+u,y:l+o}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function qT(e,n,i,l,o,s){const{x:u,y:f}=tc(e,[n,i,l]),{x:d,y:h}=tc({x:e.x+e.width,y:e.y+e.height},[n,i,l]),m=o-d,p=s-h;return{left:Math.floor(u),top:Math.floor(f),right:Math.floor(m),bottom:Math.floor(p)}}const nm=(e,n,i,l,o,s)=>{const u=BT(s,n,i),f=(n-u.x)/e.width,d=(i-u.y)/e.height,h=Math.min(f,d),m=ea(h,l,o),p=e.x+e.width/2,y=e.y+e.height/2,v=n/2-p*m,w=i/2-y*m,k=qT(e,v,w,m,n,i),S={left:Math.min(k.left-u.left,0),top:Math.min(k.top-u.top,0),right:Math.min(k.right-u.right,0),bottom:Math.min(k.bottom-u.bottom,0)};return{x:v-S.left+S.right,y:w-S.top+S.bottom,zoom:m}},Oo=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function na(e){return e!=null&&e!=="parent"}function Ar(e){var n,i;return{width:((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth??0,height:((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0}}function Rw(e){var n,i;return(((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth)!==void 0&&(((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight)!==void 0}function Dw(e,n={width:0,height:0},i,l,o){const s={...e},u=l.get(i);if(u){const f=u.origin||o;s.x+=u.internals.positionAbsolute.x-(n.width??0)*f[0],s.y+=u.internals.positionAbsolute.y-(n.height??0)*f[1]}return s}function Wx(e,n){if(e.size!==n.size)return!1;for(const i of e)if(!n.has(i))return!1;return!0}function UT(){let e,n;return{promise:new Promise((l,o)=>{e=l,n=o}),resolve:e,reject:n}}function IT(e){return{...kw,...e||{}}}function vo(e,{snapGrid:n=[0,0],snapToGrid:i=!1,transform:l,containerBounds:o}){const{x:s,y:u}=Un(e),f=Go({x:s-((o==null?void 0:o.left)??0),y:u-((o==null?void 0:o.top)??0)},l),{x:d,y:h}=i?Yo(f,n):f;return{xSnapped:d,ySnapped:h,...f}}const rm=e=>({width:e.offsetWidth,height:e.offsetHeight}),Lw=e=>{var n;return((n=e==null?void 0:e.getRootNode)==null?void 0:n.call(e))||(window==null?void 0:window.document)},VT=["INPUT","SELECT","TEXTAREA"];function Hw(e){var l,o;const n=((o=(l=e.composedPath)==null?void 0:l.call(e))==null?void 0:o[0])||e.target;return(n==null?void 0:n.nodeType)!==1?!1:VT.includes(n.nodeName)||n.hasAttribute("contenteditable")||!!n.closest(".nokey")}const Bw=e=>"clientX"in e,Un=(e,n)=>{var s,u;const i=Bw(e),l=i?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,o=i?e.clientY:(u=e.touches)==null?void 0:u[0].clientY;return{x:l-((n==null?void 0:n.left)??0),y:o-((n==null?void 0:n.top)??0)}},ev=(e,n,i,l,o)=>{const s=n.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(u=>{const f=u.getBoundingClientRect();return{id:u.getAttribute("data-handleid"),type:e,nodeId:o,position:u.getAttribute("data-handlepos"),x:(f.left-i.left)/l,y:(f.top-i.top)/l,...rm(u)}})};function qw({sourceX:e,sourceY:n,targetX:i,targetY:l,sourceControlX:o,sourceControlY:s,targetControlX:u,targetControlY:f}){const d=e*.125+o*.375+u*.375+i*.125,h=n*.125+s*.375+f*.375+l*.125,m=Math.abs(d-e),p=Math.abs(h-n);return[d,h,m,p]}function Tu(e,n){return e>=0?.5*e:n*25*Math.sqrt(-e)}function tv({pos:e,x1:n,y1:i,x2:l,y2:o,c:s}){switch(e){case we.Left:return[n-Tu(n-l,s),i];case we.Right:return[n+Tu(l-n,s),i];case we.Top:return[n,i-Tu(i-o,s)];case we.Bottom:return[n,i+Tu(o-i,s)]}}function im({sourceX:e,sourceY:n,sourcePosition:i=we.Bottom,targetX:l,targetY:o,targetPosition:s=we.Top,curvature:u=.25}){const[f,d]=tv({pos:i,x1:e,y1:n,x2:l,y2:o,c:u}),[h,m]=tv({pos:s,x1:l,y1:o,x2:e,y2:n,c:u}),[p,y,v,w]=qw({sourceX:e,sourceY:n,targetX:l,targetY:o,sourceControlX:f,sourceControlY:d,targetControlX:h,targetControlY:m});return[`M${e},${n} C${f},${d} ${h},${m} ${l},${o}`,p,y,v,w]}function Uw({sourceX:e,sourceY:n,targetX:i,targetY:l}){const o=Math.abs(i-e)/2,s=i0}const $T=({source:e,sourceHandle:n,target:i,targetHandle:l})=>`xy-edge__${e}${n||""}-${i}${l||""}`,XT=(e,n)=>n.some(i=>i.source===e.source&&i.target===e.target&&(i.sourceHandle===e.sourceHandle||!i.sourceHandle&&!e.sourceHandle)&&(i.targetHandle===e.targetHandle||!i.targetHandle&&!e.targetHandle)),PT=(e,n,i={})=>{if(!e.source||!e.target)return n;const l=i.getEdgeId||$T;let o;return zw(e)?o={...e}:o={...e,id:l(e)},XT(o,n)?n:(o.sourceHandle===null&&delete o.sourceHandle,o.targetHandle===null&&delete o.targetHandle,n.concat(o))};function Iw({sourceX:e,sourceY:n,targetX:i,targetY:l}){const[o,s,u,f]=Uw({sourceX:e,sourceY:n,targetX:i,targetY:l});return[`M ${e},${n}L ${i},${l}`,o,s,u,f]}const nv={[we.Left]:{x:-1,y:0},[we.Right]:{x:1,y:0},[we.Top]:{x:0,y:-1},[we.Bottom]:{x:0,y:1}},FT=({source:e,sourcePosition:n=we.Bottom,target:i})=>n===we.Left||n===we.Right?e.xMath.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2));function QT({source:e,sourcePosition:n=we.Bottom,target:i,targetPosition:l=we.Top,center:o,offset:s,stepPosition:u}){const f=nv[n],d=nv[l],h={x:e.x+f.x*s,y:e.y+f.y*s},m={x:i.x+d.x*s,y:i.y+d.y*s},p=FT({source:h,sourcePosition:n,target:m}),y=p.x!==0?"x":"y",v=p[y];let w=[],k,S;const _={x:0,y:0},z={x:0,y:0},[,,E,A]=Uw({sourceX:e.x,sourceY:e.y,targetX:i.x,targetY:i.y});if(f[y]*d[y]===-1){y==="x"?(k=o.x??h.x+(m.x-h.x)*u,S=o.y??(h.y+m.y)/2):(k=o.x??(h.x+m.x)/2,S=o.y??h.y+(m.y-h.y)*u);const T=[{x:k,y:h.y},{x:k,y:m.y}],q=[{x:h.x,y:S},{x:m.x,y:S}];f[y]===v?w=y==="x"?T:q:w=y==="x"?q:T}else{const T=[{x:h.x,y:m.y}],q=[{x:m.x,y:h.y}];if(y==="x"?w=f.x===v?q:T:w=f.y===v?T:q,n===l){const I=Math.abs(e[y]-i[y]);if(I<=s){const ee=Math.min(s-1,s-I);f[y]===v?_[y]=(h[y]>e[y]?-1:1)*ee:z[y]=(m[y]>i[y]?-1:1)*ee}}if(n!==l){const I=y==="x"?"y":"x",ee=f[y]===d[I],L=h[I]>m[I],G=h[I]=H?(k=(M.x+D.x)/2,S=w[0].y):(k=w[0].x,S=(M.y+D.y)/2)}return[[e,{x:h.x+_.x,y:h.y+_.y},...w,{x:m.x+z.x,y:m.y+z.y},i],k,S,E,A]}function ZT(e,n,i,l){const o=Math.min(rv(e,n)/2,rv(n,i)/2,l),{x:s,y:u}=n;if(e.x===s&&s===i.x||e.y===u&&u===i.y)return`L${s} ${u}`;if(e.y===u){const h=e.x{let A="";return E>0&&Ei.id===n):e[0])||null}function Tp(e,n){return e?typeof e=="string"?e:`${n?`${n}__`:""}${Object.keys(e).sort().map(l=>`${l}=${e[l]}`).join("&")}`:""}function JT(e,{id:n,defaultColor:i,defaultMarkerStart:l,defaultMarkerEnd:o}){const s=new Set;return e.reduce((u,f)=>([f.markerStart||l,f.markerEnd||o].forEach(d=>{if(d&&typeof d=="object"){const h=Tp(d,n);s.has(h)||(u.push({id:h,color:d.color||i,...d}),s.add(h))}}),u),[]).sort((u,f)=>u.id.localeCompare(f.id))}const Vw=1e3,WT=10,lm={nodeOrigin:[0,0],nodeExtent:Ao,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},ez={...lm,checkEquality:!0};function am(e,n){const i={...e};for(const l in n)n[l]!==void 0&&(i[l]=n[l]);return i}function tz(e,n,i){const l=am(lm,i);for(const o of e.values())if(o.parentId)sm(o,e,n,l);else{const s=Io(o,l.nodeOrigin),u=na(o.extent)?o.extent:l.nodeExtent,f=$i(s,u,Ar(o));o.internals.positionAbsolute=f}}function nz(e,n){if(!e.handles)return e.measured?n==null?void 0:n.internals.handleBounds:void 0;const i=[],l=[];for(const o of e.handles){const s={id:o.id,width:o.width??1,height:o.height??1,nodeId:e.id,x:o.x,y:o.y,position:o.position,type:o.type};o.type==="source"?i.push(s):o.type==="target"&&l.push(s)}return{source:i,target:l}}function om(e){return e==="manual"}function zp(e,n,i,l={}){var h,m;const o=am(ez,l),s={i:0},u=new Map(n),f=o!=null&&o.elevateNodesOnSelect&&!om(o.zIndexMode)?Vw:0;let d=e.length>0;n.clear(),i.clear();for(const p of e){let y=u.get(p.id);if(o.checkEquality&&p===(y==null?void 0:y.internals.userNode))n.set(p.id,y);else{const v=Io(p,o.nodeOrigin),w=na(p.extent)?p.extent:o.nodeExtent,k=$i(v,w,Ar(p));y={...o.defaults,...p,measured:{width:(h=p.measured)==null?void 0:h.width,height:(m=p.measured)==null?void 0:m.height},internals:{positionAbsolute:k,handleBounds:nz(p,y),z:Yw(p,f,o.zIndexMode),userNode:p}},n.set(p.id,y)}(y.measured===void 0||y.measured.width===void 0||y.measured.height===void 0)&&!y.hidden&&(d=!1),p.parentId&&sm(y,n,i,l,s)}return d}function rz(e,n){if(!e.parentId)return;const i=n.get(e.parentId);i?i.set(e.id,e):n.set(e.parentId,new Map([[e.id,e]]))}function sm(e,n,i,l,o){const{elevateNodesOnSelect:s,nodeOrigin:u,nodeExtent:f,zIndexMode:d}=am(lm,l),h=e.parentId,m=n.get(h);if(!m){console.warn(`Parent node ${h} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}rz(e,i),o&&!m.parentId&&m.internals.rootParentIndex===void 0&&d==="auto"&&(m.internals.rootParentIndex=++o.i,m.internals.z=m.internals.z+o.i*WT),o&&m.internals.rootParentIndex!==void 0&&(o.i=m.internals.rootParentIndex);const p=s&&!om(d)?Vw:0,{x:y,y:v,z:w}=iz(e,m,u,f,p,d),{positionAbsolute:k}=e.internals,S=y!==k.x||v!==k.y;(S||w!==e.internals.z)&&n.set(e.id,{...e,internals:{...e.internals,positionAbsolute:S?{x:y,y:v}:k,z:w}})}function Yw(e,n,i){const l=qn(e.zIndex)?e.zIndex:0;return om(i)?l:l+(e.selected?n:0)}function iz(e,n,i,l,o,s){const{x:u,y:f}=n.internals.positionAbsolute,d=Ar(e),h=Io(e,i),m=na(e.extent)?$i(h,e.extent,d):h;let p=$i({x:u+m.x,y:f+m.y},l,d);e.extent==="parent"&&(p=Mw(p,d,n));const y=Yw(e,o,s),v=n.internals.z??0;return{x:p.x,y:p.y,z:v>=y?v+1:y}}function um(e,n,i,l=[0,0]){var u;const o=[],s=new Map;for(const f of e){const d=n.get(f.parentId);if(!d)continue;const h=((u=s.get(f.parentId))==null?void 0:u.expandedRect)??ta(d),m=Ow(h,f.rect);s.set(f.parentId,{expandedRect:m,parent:d})}return s.size>0&&s.forEach(({expandedRect:f,parent:d},h)=>{var E;const m=d.internals.positionAbsolute,p=Ar(d),y=d.origin??l,v=f.x0||w>0||_||z)&&(o.push({id:h,type:"position",position:{x:d.position.x-v+_,y:d.position.y-w+z}}),(E=i.get(h))==null||E.forEach(A=>{e.some(B=>B.id===A.id)||o.push({id:A.id,type:"position",position:{x:A.position.x+v,y:A.position.y+w}})})),(p.width0){const v=um(y,n,i,o);h.push(...v)}return{changes:h,updatedInternals:d}}async function az({delta:e,panZoom:n,transform:i,translateExtent:l,width:o,height:s}){if(!n||!e.x&&!e.y)return Promise.resolve(!1);const u=await n.setViewportConstrained({x:i[0]+e.x,y:i[1]+e.y,zoom:i[2]},[[0,0],[o,s]],l),f=!!u&&(u.x!==i[0]||u.y!==i[1]||u.k!==i[2]);return Promise.resolve(f)}function ov(e,n,i,l,o,s){let u=o;const f=l.get(u)||new Map;l.set(u,f.set(i,n)),u=`${o}-${e}`;const d=l.get(u)||new Map;if(l.set(u,d.set(i,n)),s){u=`${o}-${e}-${s}`;const h=l.get(u)||new Map;l.set(u,h.set(i,n))}}function Gw(e,n,i){e.clear(),n.clear();for(const l of i){const{source:o,target:s,sourceHandle:u=null,targetHandle:f=null}=l,d={edgeId:l.id,source:o,target:s,sourceHandle:u,targetHandle:f},h=`${o}-${u}--${s}-${f}`,m=`${s}-${f}--${o}-${u}`;ov("source",d,m,e,o,u),ov("target",d,h,e,s,f),n.set(l.id,l)}}function $w(e,n){if(!e.parentId)return!1;const i=n.get(e.parentId);return i?i.selected?!0:$w(i,n):!1}function sv(e,n,i){var o;let l=e;do{if((o=l==null?void 0:l.matches)!=null&&o.call(l,n))return!0;if(l===i)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function oz(e,n,i,l){const o=new Map;for(const[s,u]of e)if((u.selected||u.id===l)&&(!u.parentId||!$w(u,e))&&(u.draggable||n&&typeof u.draggable>"u")){const f=e.get(s);f&&o.set(s,{id:s,position:f.position||{x:0,y:0},distance:{x:i.x-f.internals.positionAbsolute.x,y:i.y-f.internals.positionAbsolute.y},extent:f.extent,parentId:f.parentId,origin:f.origin,expandParent:f.expandParent,internals:{positionAbsolute:f.internals.positionAbsolute||{x:0,y:0}},measured:{width:f.measured.width??0,height:f.measured.height??0}})}return o}function Jd({nodeId:e,dragItems:n,nodeLookup:i,dragging:l=!0}){var u,f,d;const o=[];for(const[h,m]of n){const p=(u=i.get(h))==null?void 0:u.internals.userNode;p&&o.push({...p,position:m.position,dragging:l})}if(!e)return[o[0],o];const s=(f=i.get(e))==null?void 0:f.internals.userNode;return[s?{...s,position:((d=n.get(e))==null?void 0:d.position)||s.position,dragging:l}:o[0],o]}function sz({dragItems:e,snapGrid:n,x:i,y:l}){const o=e.values().next().value;if(!o)return null;const s={x:i-o.distance.x,y:l-o.distance.y},u=Yo(s,n);return{x:u.x-s.x,y:u.y-s.y}}function uz({onNodeMouseDown:e,getStoreItems:n,onDragStart:i,onDrag:l,onDragStop:o}){let s={x:null,y:null},u=0,f=new Map,d=!1,h={x:0,y:0},m=null,p=!1,y=null,v=!1,w=!1,k=null;function S({noDragClassName:z,handleSelector:E,domNode:A,isSelectable:B,nodeId:T,nodeClickDistance:q=0}){y=xn(A);function M({x:I,y:ee}){const{nodeLookup:L,nodeExtent:G,snapGrid:R,snapToGrid:$,nodeOrigin:Z,onNodeDrag:J,onSelectionDrag:j,onError:U,updateNodePositions:P}=n();s={x:I,y:ee};let N=!1;const Y=f.size>1,F=Y&&G?kp(Vo(f)):null,K=Y&&$?sz({dragItems:f,snapGrid:R,x:I,y:ee}):null;for(const[ne,re]of f){if(!L.has(ne))continue;let se={x:I-re.distance.x,y:ee-re.distance.y};$&&(se=K?{x:Math.round(se.x+K.x),y:Math.round(se.y+K.y)}:Yo(se,R));let ye=null;if(Y&&G&&!re.extent&&F){const{positionAbsolute:pe}=re.internals,_e=pe.x-F.x+G[0][0],Me=pe.x+re.measured.width-F.x2+G[1][0],Ce=pe.y-F.y+G[0][1],st=pe.y+re.measured.height-F.y2+G[1][1];ye=[[_e,Ce],[Me,st]]}const{position:ve,positionAbsolute:xe}=Aw({nodeId:ne,nextPosition:se,nodeLookup:L,nodeExtent:ye||G,nodeOrigin:Z,onError:U});N=N||re.position.x!==ve.x||re.position.y!==ve.y,re.position=ve,re.internals.positionAbsolute=xe}if(w=w||N,!!N&&(P(f,!0),k&&(l||J||!T&&j))){const[ne,re]=Jd({nodeId:T,dragItems:f,nodeLookup:L});l==null||l(k,f,ne,re),J==null||J(k,ne,re),T||j==null||j(k,re)}}async function D(){if(!m)return;const{transform:I,panBy:ee,autoPanSpeed:L,autoPanOnNodeDrag:G}=n();if(!G){d=!1,cancelAnimationFrame(u);return}const[R,$]=jw(h,m,L);(R!==0||$!==0)&&(s.x=(s.x??0)-R/I[2],s.y=(s.y??0)-$/I[2],await ee({x:R,y:$})&&M(s)),u=requestAnimationFrame(D)}function X(I){var Y;const{nodeLookup:ee,multiSelectionActive:L,nodesDraggable:G,transform:R,snapGrid:$,snapToGrid:Z,selectNodesOnDrag:J,onNodeDragStart:j,onSelectionDragStart:U,unselectNodesAndEdges:P}=n();p=!0,(!J||!B)&&!L&&T&&((Y=ee.get(T))!=null&&Y.selected||P()),B&&J&&T&&(e==null||e(T));const N=vo(I.sourceEvent,{transform:R,snapGrid:$,snapToGrid:Z,containerBounds:m});if(s=N,f=oz(ee,G,N,T),f.size>0&&(i||j||!T&&U)){const[F,K]=Jd({nodeId:T,dragItems:f,nodeLookup:ee});i==null||i(I.sourceEvent,f,F,K),j==null||j(I.sourceEvent,F,K),T||U==null||U(I.sourceEvent,K)}}const H=uw().clickDistance(q).on("start",I=>{const{domNode:ee,nodeDragThreshold:L,transform:G,snapGrid:R,snapToGrid:$}=n();m=(ee==null?void 0:ee.getBoundingClientRect())||null,v=!1,w=!1,k=I.sourceEvent,L===0&&X(I),s=vo(I.sourceEvent,{transform:G,snapGrid:R,snapToGrid:$,containerBounds:m}),h=Un(I.sourceEvent,m)}).on("drag",I=>{const{autoPanOnNodeDrag:ee,transform:L,snapGrid:G,snapToGrid:R,nodeDragThreshold:$,nodeLookup:Z}=n(),J=vo(I.sourceEvent,{transform:L,snapGrid:G,snapToGrid:R,containerBounds:m});if(k=I.sourceEvent,(I.sourceEvent.type==="touchmove"&&I.sourceEvent.touches.length>1||T&&!Z.has(T))&&(v=!0),!v){if(!d&&ee&&p&&(d=!0,D()),!p){const j=Un(I.sourceEvent,m),U=j.x-h.x,P=j.y-h.y;Math.sqrt(U*U+P*P)>$&&X(I)}(s.x!==J.xSnapped||s.y!==J.ySnapped)&&f&&p&&(h=Un(I.sourceEvent,m),M(J))}}).on("end",I=>{if(!(!p||v)&&(d=!1,p=!1,cancelAnimationFrame(u),f.size>0)){const{nodeLookup:ee,updateNodePositions:L,onNodeDragStop:G,onSelectionDragStop:R}=n();if(w&&(L(f,!1),w=!1),o||G||!T&&R){const[$,Z]=Jd({nodeId:T,dragItems:f,nodeLookup:ee,dragging:!1});o==null||o(I.sourceEvent,f,$,Z),G==null||G(I.sourceEvent,$,Z),T||R==null||R(I.sourceEvent,Z)}}}).filter(I=>{const ee=I.target;return!I.button&&(!z||!sv(ee,`.${z}`,A))&&(!E||sv(ee,E,A))});y.call(H)}function _(){y==null||y.on(".drag",null)}return{update:S,destroy:_}}function cz(e,n,i){const l=[],o={x:e.x-i,y:e.y-i,width:i*2,height:i*2};for(const s of n.values())jo(o,ta(s))>0&&l.push(s);return l}const fz=250;function dz(e,n,i,l){var f,d;let o=[],s=1/0;const u=cz(e,i,n+fz);for(const h of u){const m=[...((f=h.internals.handleBounds)==null?void 0:f.source)??[],...((d=h.internals.handleBounds)==null?void 0:d.target)??[]];for(const p of m){if(l.nodeId===p.nodeId&&l.type===p.type&&l.id===p.id)continue;const{x:y,y:v}=Xi(h,p,p.position,!0),w=Math.sqrt(Math.pow(y-e.x,2)+Math.pow(v-e.y,2));w>n||(w1){const h=l.type==="source"?"target":"source";return o.find(m=>m.type===h)??o[0]}return o[0]}function Xw(e,n,i,l,o,s=!1){var h,m,p;const u=l.get(e);if(!u)return null;const f=o==="strict"?(h=u.internals.handleBounds)==null?void 0:h[n]:[...((m=u.internals.handleBounds)==null?void 0:m.source)??[],...((p=u.internals.handleBounds)==null?void 0:p.target)??[]],d=(i?f==null?void 0:f.find(y=>y.id===i):f==null?void 0:f[0])??null;return d&&s?{...d,...Xi(u,d,d.position,!0)}:d}function Pw(e,n){return e||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function hz(e,n){let i=null;return n?i=!0:e&&!n&&(i=!1),i}const Fw=()=>!0;function pz(e,{connectionMode:n,connectionRadius:i,handleId:l,nodeId:o,edgeUpdaterType:s,isTarget:u,domNode:f,nodeLookup:d,lib:h,autoPanOnConnect:m,flowId:p,panBy:y,cancelConnection:v,onConnectStart:w,onConnect:k,onConnectEnd:S,isValidConnection:_=Fw,onReconnectEnd:z,updateConnection:E,getTransform:A,getFromHandle:B,autoPanSpeed:T,dragThreshold:q=1,handleDomNode:M}){const D=Lw(e.target);let X=0,H;const{x:I,y:ee}=Un(e),L=Pw(s,M),G=f==null?void 0:f.getBoundingClientRect();let R=!1;if(!G||!L)return;const $=Xw(o,L,l,d,n);if(!$)return;let Z=Un(e,G),J=!1,j=null,U=!1,P=null;function N(){if(!m||!G)return;const[ve,xe]=jw(Z,G,T);y({x:ve,y:xe}),X=requestAnimationFrame(N)}const Y={...$,nodeId:o,type:L,position:$.position},F=d.get(o);let ne={inProgress:!0,isValid:null,from:Xi(F,Y,we.Left,!0),fromHandle:Y,fromPosition:Y.position,fromNode:F,to:Z,toHandle:null,toPosition:Zx[Y.position],toNode:null,pointer:Z};function re(){R=!0,E(ne),w==null||w(e,{nodeId:o,handleId:l,handleType:L})}q===0&&re();function se(ve){if(!R){const{x:st,y:We}=Un(ve),zt=st-I,Ut=We-ee;if(!(zt*zt+Ut*Ut>q*q))return;re()}if(!B()||!Y){ye(ve);return}const xe=A();Z=Un(ve,G),H=dz(Go(Z,xe,!1,[1,1]),i,d,Y),J||(N(),J=!0);const pe=Qw(ve,{handle:H,connectionMode:n,fromNodeId:o,fromHandleId:l,fromType:u?"target":"source",isValidConnection:_,doc:D,lib:h,flowId:p,nodeLookup:d});P=pe.handleDomNode,j=pe.connection,U=hz(!!H,pe.isValid);const _e=d.get(o),Me=_e?Xi(_e,Y,we.Left,!0):ne.from,Ce={...ne,from:Me,isValid:U,to:pe.toHandle&&U?tc({x:pe.toHandle.x,y:pe.toHandle.y},xe):Z,toHandle:pe.toHandle,toPosition:U&&pe.toHandle?pe.toHandle.position:Zx[Y.position],toNode:pe.toHandle?d.get(pe.toHandle.nodeId):null,pointer:Z};E(Ce),ne=Ce}function ye(ve){if(!("touches"in ve&&ve.touches.length>0)){if(R){(H||P)&&j&&U&&(k==null||k(j));const{inProgress:xe,...pe}=ne,_e={...pe,toPosition:ne.toHandle?ne.toPosition:null};S==null||S(ve,_e),s&&(z==null||z(ve,_e))}v(),cancelAnimationFrame(X),J=!1,U=!1,j=null,P=null,D.removeEventListener("mousemove",se),D.removeEventListener("mouseup",ye),D.removeEventListener("touchmove",se),D.removeEventListener("touchend",ye)}}D.addEventListener("mousemove",se),D.addEventListener("mouseup",ye),D.addEventListener("touchmove",se),D.addEventListener("touchend",ye)}function Qw(e,{handle:n,connectionMode:i,fromNodeId:l,fromHandleId:o,fromType:s,doc:u,lib:f,flowId:d,isValidConnection:h=Fw,nodeLookup:m}){const p=s==="target",y=n?u.querySelector(`.${f}-flow__handle[data-id="${d}-${n==null?void 0:n.nodeId}-${n==null?void 0:n.id}-${n==null?void 0:n.type}"]`):null,{x:v,y:w}=Un(e),k=u.elementFromPoint(v,w),S=k!=null&&k.classList.contains(`${f}-flow__handle`)?k:y,_={handleDomNode:S,isValid:!1,connection:null,toHandle:null};if(S){const z=Pw(void 0,S),E=S.getAttribute("data-nodeid"),A=S.getAttribute("data-handleid"),B=S.classList.contains("connectable"),T=S.classList.contains("connectableend");if(!E||!z)return _;const q={source:p?E:l,sourceHandle:p?A:o,target:p?l:E,targetHandle:p?o:A};_.connection=q;const D=B&&T&&(i===Wl.Strict?p&&z==="source"||!p&&z==="target":E!==l||A!==o);_.isValid=D&&h(q),_.toHandle=Xw(E,z,A,m,i,!0)}return _}const Ap={onPointerDown:pz,isValid:Qw};function mz({domNode:e,panZoom:n,getTransform:i,getViewScale:l}){const o=xn(e);function s({translateExtent:f,width:d,height:h,zoomStep:m=1,pannable:p=!0,zoomable:y=!0,inversePan:v=!1}){const w=E=>{if(E.sourceEvent.type!=="wheel"||!n)return;const A=i(),B=E.sourceEvent.ctrlKey&&Oo()?10:1,T=-E.sourceEvent.deltaY*(E.sourceEvent.deltaMode===1?.05:E.sourceEvent.deltaMode?1:.002)*m,q=A[2]*Math.pow(2,T*B);n.scaleTo(q)};let k=[0,0];const S=E=>{(E.sourceEvent.type==="mousedown"||E.sourceEvent.type==="touchstart")&&(k=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY])},_=E=>{const A=i();if(E.sourceEvent.type!=="mousemove"&&E.sourceEvent.type!=="touchmove"||!n)return;const B=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY],T=[B[0]-k[0],B[1]-k[1]];k=B;const q=l()*Math.max(A[2],Math.log(A[2]))*(v?-1:1),M={x:A[0]-T[0]*q,y:A[1]-T[1]*q},D=[[0,0],[d,h]];n.setViewportConstrained({x:M.x,y:M.y,zoom:A[2]},D,f)},z=Ew().on("start",S).on("zoom",p?_:null).on("zoom.wheel",y?w:null);o.call(z,{})}function u(){o.on("zoom",null)}return{update:s,destroy:u,pointer:Hn}}const yc=e=>({x:e.x,y:e.y,zoom:e.k}),Wd=({x:e,y:n,zoom:i})=>pc.translate(e,n).scale(i),Vl=(e,n)=>e.target.closest(`.${n}`),Zw=(e,n)=>n===2&&Array.isArray(e)&&e.includes(2),gz=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,eh=(e,n=0,i=gz,l=()=>{})=>{const o=typeof n=="number"&&n>0;return o||l(),o?e.transition().duration(n).ease(i).on("end",l):e},Kw=e=>{const n=e.ctrlKey&&Oo()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*n};function yz({zoomPanValues:e,noWheelClassName:n,d3Selection:i,d3Zoom:l,panOnScrollMode:o,panOnScrollSpeed:s,zoomOnPinch:u,onPanZoomStart:f,onPanZoom:d,onPanZoomEnd:h}){return m=>{if(Vl(m,n))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const p=i.property("__zoom").k||1;if(m.ctrlKey&&u){const S=Hn(m),_=Kw(m),z=p*Math.pow(2,_);l.scaleTo(i,z,S,m);return}const y=m.deltaMode===1?20:1;let v=o===Ii.Vertical?0:m.deltaX*y,w=o===Ii.Horizontal?0:m.deltaY*y;!Oo()&&m.shiftKey&&o!==Ii.Vertical&&(v=m.deltaY*y,w=0),l.translateBy(i,-(v/p)*s,-(w/p)*s,{internal:!0});const k=yc(i.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(d==null||d(m,k),e.panScrollTimeout=setTimeout(()=>{h==null||h(m,k),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,f==null||f(m,k))}}function xz({noWheelClassName:e,preventScrolling:n,d3ZoomHandler:i}){return function(l,o){const s=l.type==="wheel",u=!n&&s&&!l.ctrlKey,f=Vl(l,e);if(l.ctrlKey&&s&&f&&l.preventDefault(),u||f)return null;l.preventDefault(),i.call(this,l,o)}}function vz({zoomPanValues:e,onDraggingChange:n,onPanZoomStart:i}){return l=>{var s,u,f;if((s=l.sourceEvent)!=null&&s.internal)return;const o=yc(l.transform);e.mouseButton=((u=l.sourceEvent)==null?void 0:u.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=o,((f=l.sourceEvent)==null?void 0:f.type)==="mousedown"&&n(!0),i&&(i==null||i(l.sourceEvent,o))}}function bz({zoomPanValues:e,panOnDrag:n,onPaneContextMenu:i,onTransformChange:l,onPanZoom:o}){return s=>{var u,f;e.usedRightMouseButton=!!(i&&Zw(n,e.mouseButton??0)),(u=s.sourceEvent)!=null&&u.sync||l([s.transform.x,s.transform.y,s.transform.k]),o&&!((f=s.sourceEvent)!=null&&f.internal)&&(o==null||o(s.sourceEvent,yc(s.transform)))}}function wz({zoomPanValues:e,panOnDrag:n,panOnScroll:i,onDraggingChange:l,onPanZoomEnd:o,onPaneContextMenu:s}){return u=>{var f;if(!((f=u.sourceEvent)!=null&&f.internal)&&(e.isZoomingOrPanning=!1,s&&Zw(n,e.mouseButton??0)&&!e.usedRightMouseButton&&u.sourceEvent&&s(u.sourceEvent),e.usedRightMouseButton=!1,l(!1),o)){const d=yc(u.transform);e.prevViewport=d,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{o==null||o(u.sourceEvent,d)},i?150:0)}}}function Sz({zoomActivationKeyPressed:e,zoomOnScroll:n,zoomOnPinch:i,panOnDrag:l,panOnScroll:o,zoomOnDoubleClick:s,userSelectionActive:u,noWheelClassName:f,noPanClassName:d,lib:h,connectionInProgress:m}){return p=>{var S;const y=e||n,v=i&&p.ctrlKey,w=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(Vl(p,`${h}-flow__node`)||Vl(p,`${h}-flow__edge`)))return!0;if(!l&&!y&&!o&&!s&&!i||u||m&&!w||Vl(p,f)&&w||Vl(p,d)&&(!w||o&&w&&!e)||!i&&p.ctrlKey&&w)return!1;if(!i&&p.type==="touchstart"&&((S=p.touches)==null?void 0:S.length)>1)return p.preventDefault(),!1;if(!y&&!o&&!v&&w||!l&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(l)&&!l.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(l)&&l.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||w)&&k}}function _z({domNode:e,minZoom:n,maxZoom:i,translateExtent:l,viewport:o,onPanZoom:s,onPanZoomStart:u,onPanZoomEnd:f,onDraggingChange:d}){const h={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=e.getBoundingClientRect(),p=Ew().scaleExtent([n,i]).translateExtent(l),y=xn(e).call(p);z({x:o.x,y:o.y,zoom:ea(o.zoom,n,i)},[[0,0],[m.width,m.height]],l);const v=y.on("wheel.zoom"),w=y.on("dblclick.zoom");p.wheelDelta(Kw);function k(H,I){return y?new Promise(ee=>{p==null||p.interpolate((I==null?void 0:I.interpolate)==="linear"?xo:Bu).transform(eh(y,I==null?void 0:I.duration,I==null?void 0:I.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function S({noWheelClassName:H,noPanClassName:I,onPaneContextMenu:ee,userSelectionActive:L,panOnScroll:G,panOnDrag:R,panOnScrollMode:$,panOnScrollSpeed:Z,preventScrolling:J,zoomOnPinch:j,zoomOnScroll:U,zoomOnDoubleClick:P,zoomActivationKeyPressed:N,lib:Y,onTransformChange:F,connectionInProgress:K,paneClickDistance:ne,selectionOnDrag:re}){L&&!h.isZoomingOrPanning&&_();const se=G&&!N&&!L;p.clickDistance(re?1/0:!qn(ne)||ne<0?0:ne);const ye=se?yz({zoomPanValues:h,noWheelClassName:H,d3Selection:y,d3Zoom:p,panOnScrollMode:$,panOnScrollSpeed:Z,zoomOnPinch:j,onPanZoomStart:u,onPanZoom:s,onPanZoomEnd:f}):xz({noWheelClassName:H,preventScrolling:J,d3ZoomHandler:v});if(y.on("wheel.zoom",ye,{passive:!1}),!L){const xe=vz({zoomPanValues:h,onDraggingChange:d,onPanZoomStart:u});p.on("start",xe);const pe=bz({zoomPanValues:h,panOnDrag:R,onPaneContextMenu:!!ee,onPanZoom:s,onTransformChange:F});p.on("zoom",pe);const _e=wz({zoomPanValues:h,panOnDrag:R,panOnScroll:G,onPaneContextMenu:ee,onPanZoomEnd:f,onDraggingChange:d});p.on("end",_e)}const ve=Sz({zoomActivationKeyPressed:N,panOnDrag:R,zoomOnScroll:U,panOnScroll:G,zoomOnDoubleClick:P,zoomOnPinch:j,userSelectionActive:L,noPanClassName:I,noWheelClassName:H,lib:Y,connectionInProgress:K});p.filter(ve),P?y.on("dblclick.zoom",w):y.on("dblclick.zoom",null)}function _(){p.on("zoom",null)}async function z(H,I,ee){const L=Wd(H),G=p==null?void 0:p.constrain()(L,I,ee);return G&&await k(G),new Promise(R=>R(G))}async function E(H,I){const ee=Wd(H);return await k(ee,I),new Promise(L=>L(ee))}function A(H){if(y){const I=Wd(H),ee=y.property("__zoom");(ee.k!==H.zoom||ee.x!==H.x||ee.y!==H.y)&&(p==null||p.transform(y,I,null,{sync:!0}))}}function B(){const H=y?_w(y.node()):{x:0,y:0,k:1};return{x:H.x,y:H.y,zoom:H.k}}function T(H,I){return y?new Promise(ee=>{p==null||p.interpolate((I==null?void 0:I.interpolate)==="linear"?xo:Bu).scaleTo(eh(y,I==null?void 0:I.duration,I==null?void 0:I.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function q(H,I){return y?new Promise(ee=>{p==null||p.interpolate((I==null?void 0:I.interpolate)==="linear"?xo:Bu).scaleBy(eh(y,I==null?void 0:I.duration,I==null?void 0:I.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function M(H){p==null||p.scaleExtent(H)}function D(H){p==null||p.translateExtent(H)}function X(H){const I=!qn(H)||H<0?0:H;p==null||p.clickDistance(I)}return{update:S,destroy:_,setViewport:E,setViewportConstrained:z,getViewport:B,scaleTo:T,scaleBy:q,setScaleExtent:M,setTranslateExtent:D,syncViewport:A,setClickDistance:X}}var ra;(function(e){e.Line="line",e.Handle="handle"})(ra||(ra={}));function Ez({width:e,prevWidth:n,height:i,prevHeight:l,affectsX:o,affectsY:s}){const u=e-n,f=i-l,d=[u>0?1:u<0?-1:0,f>0?1:f<0?-1:0];return u&&o&&(d[0]=d[0]*-1),f&&s&&(d[1]=d[1]*-1),d}function uv(e){const n=e.includes("right")||e.includes("left"),i=e.includes("bottom")||e.includes("top"),l=e.includes("left"),o=e.includes("top");return{isHorizontal:n,isVertical:i,affectsX:l,affectsY:o}}function oi(e,n){return Math.max(0,n-e)}function si(e,n){return Math.max(0,e-n)}function zu(e,n,i){return Math.max(0,n-e,e-i)}function cv(e,n){return e?!n:n}function Nz(e,n,i,l,o,s,u,f){let{affectsX:d,affectsY:h}=n;const{isHorizontal:m,isVertical:p}=n,y=m&&p,{xSnapped:v,ySnapped:w}=i,{minWidth:k,maxWidth:S,minHeight:_,maxHeight:z}=l,{x:E,y:A,width:B,height:T,aspectRatio:q}=e;let M=Math.floor(m?v-e.pointerX:0),D=Math.floor(p?w-e.pointerY:0);const X=B+(d?-M:M),H=T+(h?-D:D),I=-s[0]*B,ee=-s[1]*T;let L=zu(X,k,S),G=zu(H,_,z);if(u){let Z=0,J=0;d&&M<0?Z=oi(E+M+I,u[0][0]):!d&&M>0&&(Z=si(E+X+I,u[1][0])),h&&D<0?J=oi(A+D+ee,u[0][1]):!h&&D>0&&(J=si(A+H+ee,u[1][1])),L=Math.max(L,Z),G=Math.max(G,J)}if(f){let Z=0,J=0;d&&M>0?Z=si(E+M,f[0][0]):!d&&M<0&&(Z=oi(E+X,f[1][0])),h&&D>0?J=si(A+D,f[0][1]):!h&&D<0&&(J=oi(A+H,f[1][1])),L=Math.max(L,Z),G=Math.max(G,J)}if(o){if(m){const Z=zu(X/q,_,z)*q;if(L=Math.max(L,Z),u){let J=0;!d&&!h||d&&!h&&y?J=si(A+ee+X/q,u[1][1])*q:J=oi(A+ee+(d?M:-M)/q,u[0][1])*q,L=Math.max(L,J)}if(f){let J=0;!d&&!h||d&&!h&&y?J=oi(A+X/q,f[1][1])*q:J=si(A+(d?M:-M)/q,f[0][1])*q,L=Math.max(L,J)}}if(p){const Z=zu(H*q,k,S)/q;if(G=Math.max(G,Z),u){let J=0;!d&&!h||h&&!d&&y?J=si(E+H*q+I,u[1][0])/q:J=oi(E+(h?D:-D)*q+I,u[0][0])/q,G=Math.max(G,J)}if(f){let J=0;!d&&!h||h&&!d&&y?J=oi(E+H*q,f[1][0])/q:J=si(E+(h?D:-D)*q,f[0][0])/q,G=Math.max(G,J)}}}D=D+(D<0?G:-G),M=M+(M<0?L:-L),o&&(y?X>H*q?D=(cv(d,h)?-M:M)/q:M=(cv(d,h)?-D:D)*q:m?(D=M/q,h=d):(M=D*q,d=h));const R=d?E+M:E,$=h?A+D:A;return{width:B+(d?-M:M),height:T+(h?-D:D),x:s[0]*M*(d?-1:1)+R,y:s[1]*D*(h?-1:1)+$}}const Jw={width:0,height:0,x:0,y:0},kz={...Jw,pointerX:0,pointerY:0,aspectRatio:1};function Cz(e){return[[0,0],[e.measured.width,e.measured.height]]}function Tz(e,n,i){const l=n.position.x+e.position.x,o=n.position.y+e.position.y,s=e.measured.width??0,u=e.measured.height??0,f=i[0]*s,d=i[1]*u;return[[l-f,o-d],[l+s-f,o+u-d]]}function zz({domNode:e,nodeId:n,getStoreItems:i,onChange:l,onEnd:o}){const s=xn(e);let u={controlDirection:uv("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function f({controlPosition:h,boundaries:m,keepAspectRatio:p,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:S}){let _={...Jw},z={...kz};u={boundaries:m,resizeDirection:y,keepAspectRatio:p,controlDirection:uv(h)};let E,A=null,B=[],T,q,M,D=!1;const X=uw().on("start",H=>{const{nodeLookup:I,transform:ee,snapGrid:L,snapToGrid:G,nodeOrigin:R,paneDomNode:$}=i();if(E=I.get(n),!E)return;A=($==null?void 0:$.getBoundingClientRect())??null;const{xSnapped:Z,ySnapped:J}=vo(H.sourceEvent,{transform:ee,snapGrid:L,snapToGrid:G,containerBounds:A});_={width:E.measured.width??0,height:E.measured.height??0,x:E.position.x??0,y:E.position.y??0},z={..._,pointerX:Z,pointerY:J,aspectRatio:_.width/_.height},T=void 0,E.parentId&&(E.extent==="parent"||E.expandParent)&&(T=I.get(E.parentId),q=T&&E.extent==="parent"?Cz(T):void 0),B=[],M=void 0;for(const[j,U]of I)if(U.parentId===n&&(B.push({id:j,position:{...U.position},extent:U.extent}),U.extent==="parent"||U.expandParent)){const P=Tz(U,E,U.origin??R);M?M=[[Math.min(P[0][0],M[0][0]),Math.min(P[0][1],M[0][1])],[Math.max(P[1][0],M[1][0]),Math.max(P[1][1],M[1][1])]]:M=P}v==null||v(H,{..._})}).on("drag",H=>{const{transform:I,snapGrid:ee,snapToGrid:L,nodeOrigin:G}=i(),R=vo(H.sourceEvent,{transform:I,snapGrid:ee,snapToGrid:L,containerBounds:A}),$=[];if(!E)return;const{x:Z,y:J,width:j,height:U}=_,P={},N=E.origin??G,{width:Y,height:F,x:K,y:ne}=Nz(z,u.controlDirection,R,u.boundaries,u.keepAspectRatio,N,q,M),re=Y!==j,se=F!==U,ye=K!==Z&&re,ve=ne!==J&&se;if(!ye&&!ve&&!re&&!se)return;if((ye||ve||N[0]===1||N[1]===1)&&(P.x=ye?K:_.x,P.y=ve?ne:_.y,_.x=P.x,_.y=P.y,B.length>0)){const Me=K-Z,Ce=ne-J;for(const st of B)st.position={x:st.position.x-Me+N[0]*(Y-j),y:st.position.y-Ce+N[1]*(F-U)},$.push(st)}if((re||se)&&(P.width=re&&(!u.resizeDirection||u.resizeDirection==="horizontal")?Y:_.width,P.height=se&&(!u.resizeDirection||u.resizeDirection==="vertical")?F:_.height,_.width=P.width,_.height=P.height),T&&E.expandParent){const Me=N[0]*(P.width??0);P.x&&P.x{D&&(k==null||k(H,{..._}),o==null||o({..._}),D=!1)});s.call(X)}function d(){s.on(".drag",null)}return{update:f,destroy:d}}var th={exports:{}},nh={},rh={exports:{}},ih={};/** - * @license React - * use-sync-external-store-shim.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var fv;function Az(){if(fv)return ih;fv=1;var e=Ho();function n(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var i=typeof Object.is=="function"?Object.is:n,l=e.useState,o=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function f(p,y){var v=y(),w=l({inst:{value:v,getSnapshot:y}}),k=w[0].inst,S=w[1];return s(function(){k.value=v,k.getSnapshot=y,d(k)&&S({inst:k})},[p,v,y]),o(function(){return d(k)&&S({inst:k}),p(function(){d(k)&&S({inst:k})})},[p]),u(v),v}function d(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!i(p,v)}catch{return!0}}function h(p,y){return y()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?h:f;return ih.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,ih}var dv;function Mz(){return dv||(dv=1,rh.exports=Az()),rh.exports}/** - * @license React - * use-sync-external-store-shim/with-selector.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var hv;function jz(){if(hv)return nh;hv=1;var e=Ho(),n=Mz();function i(h,m){return h===m&&(h!==0||1/h===1/m)||h!==h&&m!==m}var l=typeof Object.is=="function"?Object.is:i,o=n.useSyncExternalStore,s=e.useRef,u=e.useEffect,f=e.useMemo,d=e.useDebugValue;return nh.useSyncExternalStoreWithSelector=function(h,m,p,y,v){var w=s(null);if(w.current===null){var k={hasValue:!1,value:null};w.current=k}else k=w.current;w=f(function(){function _(T){if(!z){if(z=!0,E=T,T=y(T),v!==void 0&&k.hasValue){var q=k.value;if(v(q,T))return A=q}return A=T}if(q=A,l(E,T))return q;var M=y(T);return v!==void 0&&v(q,M)?(E=T,q):(E=T,A=M)}var z=!1,E,A,B=p===void 0?null:p;return[function(){return _(m())},B===null?void 0:function(){return _(B())}]},[m,p,y,v]);var S=o(h,w[0],w[1]);return u(function(){k.hasValue=!0,k.value=S},[S]),d(S),S},nh}var pv;function Oz(){return pv||(pv=1,th.exports=jz()),th.exports}var Rz=Oz();const Dz=Lo(Rz),Lz={},mv=e=>{let n;const i=new Set,l=(m,p)=>{const y=typeof m=="function"?m(n):m;if(!Object.is(y,n)){const v=n;n=p??(typeof y!="object"||y===null)?y:Object.assign({},n,y),i.forEach(w=>w(n,v))}},o=()=>n,d={setState:l,getState:o,getInitialState:()=>h,subscribe:m=>(i.add(m),()=>i.delete(m)),destroy:()=>{(Lz?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),i.clear()}},h=n=e(l,o,d);return d},Hz=e=>e?mv(e):mv,{useDebugValue:Bz}=Ul,{useSyncExternalStoreWithSelector:qz}=Dz,Uz=e=>e;function Ww(e,n=Uz,i){const l=qz(e.subscribe,e.getState,e.getServerState||e.getInitialState,n,i);return Bz(l),l}const gv=(e,n)=>{const i=Hz(e),l=(o,s=n)=>Ww(i,o,s);return Object.assign(l,i),l},Iz=(e,n)=>e?gv(e,n):gv;function dt(e,n){if(Object.is(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(const[l,o]of e)if(!Object.is(o,n.get(l)))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(const l of e)if(!n.has(l))return!1;return!0}const i=Object.keys(e);if(i.length!==Object.keys(n).length)return!1;for(const l of i)if(!Object.prototype.hasOwnProperty.call(n,l)||!Object.is(e[l],n[l]))return!1;return!0}var Vz=Eb();const xc=V.createContext(null),Yz=xc.Provider,eS=tr.error001();function Ie(e,n){const i=V.useContext(xc);if(i===null)throw new Error(eS);return Ww(i,e,n)}function ht(){const e=V.useContext(xc);if(e===null)throw new Error(eS);return V.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const yv={display:"none"},Gz={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},tS="react-flow__node-desc",nS="react-flow__edge-desc",$z="react-flow__aria-live",Xz=e=>e.ariaLiveMessage,Pz=e=>e.ariaLabelConfig;function Fz({rfId:e}){const n=Ie(Xz);return b.jsx("div",{id:`${$z}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Gz,children:n})}function Qz({rfId:e,disableKeyboardA11y:n}){const i=Ie(Pz);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${tS}-${e}`,style:yv,children:n?i["node.a11yDescription.default"]:i["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${nS}-${e}`,style:yv,children:i["edge.a11yDescription.default"]}),!n&&b.jsx(Fz,{rfId:e})]})}const vc=V.forwardRef(({position:e="top-left",children:n,className:i,style:l,...o},s)=>{const u=`${e}`.split("-");return b.jsx("div",{className:Tt(["react-flow__panel",i,...u]),style:l,ref:s,...o,children:n})});vc.displayName="Panel";function Zz({proOptions:e,position:n="bottom-right"}){return e!=null&&e.hideAttribution?null:b.jsx(vc,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:b.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const Kz=e=>{const n=[],i=[];for(const[,l]of e.nodeLookup)l.selected&&n.push(l.internals.userNode);for(const[,l]of e.edgeLookup)l.selected&&i.push(l);return{selectedNodes:n,selectedEdges:i}},Au=e=>e.id;function Jz(e,n){return dt(e.selectedNodes.map(Au),n.selectedNodes.map(Au))&&dt(e.selectedEdges.map(Au),n.selectedEdges.map(Au))}function Wz({onSelectionChange:e}){const n=ht(),{selectedNodes:i,selectedEdges:l}=Ie(Kz,Jz);return V.useEffect(()=>{const o={nodes:i,edges:l};e==null||e(o),n.getState().onSelectionChangeHandlers.forEach(s=>s(o))},[i,l,e]),null}const eA=e=>!!e.onSelectionChangeHandlers;function tA({onSelectionChange:e}){const n=Ie(eA);return e||n?b.jsx(Wz,{onSelectionChange:e}):null}const rS=[0,0],nA={x:0,y:0,zoom:1},rA=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],xv=[...rA,"rfId"],iA=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),vv={translateExtent:Ao,nodeOrigin:rS,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function lA(e){const{setNodes:n,setEdges:i,setMinZoom:l,setMaxZoom:o,setTranslateExtent:s,setNodeExtent:u,reset:f,setDefaultNodesAndEdges:d}=Ie(iA,dt),h=ht();V.useEffect(()=>(d(e.defaultNodes,e.defaultEdges),()=>{m.current=vv,f()}),[]);const m=V.useRef(vv);return V.useEffect(()=>{for(const p of xv){const y=e[p],v=m.current[p];y!==v&&(typeof e[p]>"u"||(p==="nodes"?n(y):p==="edges"?i(y):p==="minZoom"?l(y):p==="maxZoom"?o(y):p==="translateExtent"?s(y):p==="nodeExtent"?u(y):p==="ariaLabelConfig"?h.setState({ariaLabelConfig:IT(y)}):p==="fitView"?h.setState({fitViewQueued:y}):p==="fitViewOptions"?h.setState({fitViewOptions:y}):h.setState({[p]:y})))}m.current=e},xv.map(p=>e[p])),null}function bv(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function aA(e){var l;const[n,i]=V.useState(e==="system"?null:e);return V.useEffect(()=>{if(e!=="system"){i(e);return}const o=bv(),s=()=>i(o!=null&&o.matches?"dark":"light");return s(),o==null||o.addEventListener("change",s),()=>{o==null||o.removeEventListener("change",s)}},[e]),n!==null?n:(l=bv())!=null&&l.matches?"dark":"light"}const wv=typeof document<"u"?document:null;function Ro(e=null,n={target:wv,actInsideInputWithModifier:!0}){const[i,l]=V.useState(!1),o=V.useRef(!1),s=V.useRef(new Set([])),[u,f]=V.useMemo(()=>{if(e!==null){const h=(Array.isArray(e)?e:[e]).filter(p=>typeof p=="string").map(p=>p.replace("+",` -`).replace(` - -`,` -+`).split(` -`)),m=h.reduce((p,y)=>p.concat(...y),[]);return[h,m]}return[[],[]]},[e]);return V.useEffect(()=>{const d=(n==null?void 0:n.target)??wv,h=(n==null?void 0:n.actInsideInputWithModifier)??!0;if(e!==null){const m=v=>{var S,_;if(o.current=v.ctrlKey||v.metaKey||v.shiftKey||v.altKey,(!o.current||o.current&&!h)&&Hw(v))return!1;const k=_v(v.code,f);if(s.current.add(v[k]),Sv(u,s.current,!1)){const z=((_=(S=v.composedPath)==null?void 0:S.call(v))==null?void 0:_[0])||v.target,E=(z==null?void 0:z.nodeName)==="BUTTON"||(z==null?void 0:z.nodeName)==="A";n.preventDefault!==!1&&(o.current||!E)&&v.preventDefault(),l(!0)}},p=v=>{const w=_v(v.code,f);Sv(u,s.current,!0)?(l(!1),s.current.clear()):s.current.delete(v[w]),v.key==="Meta"&&s.current.clear(),o.current=!1},y=()=>{s.current.clear(),l(!1)};return d==null||d.addEventListener("keydown",m),d==null||d.addEventListener("keyup",p),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{d==null||d.removeEventListener("keydown",m),d==null||d.removeEventListener("keyup",p),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,l]),i}function Sv(e,n,i){return e.filter(l=>i||l.length===n.size).some(l=>l.every(o=>n.has(o)))}function _v(e,n){return n.includes(e)?"code":"key"}const oA=()=>{const e=ht();return V.useMemo(()=>({zoomIn:n=>{const{panZoom:i}=e.getState();return i?i.scaleBy(1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomOut:n=>{const{panZoom:i}=e.getState();return i?i.scaleBy(1/1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomTo:(n,i)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(n,{duration:i==null?void 0:i.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(n,i)=>{const{transform:[l,o,s],panZoom:u}=e.getState();return u?(await u.setViewport({x:n.x??l,y:n.y??o,zoom:n.zoom??s},i),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[n,i,l]=e.getState().transform;return{x:n,y:i,zoom:l}},setCenter:async(n,i,l)=>e.getState().setCenter(n,i,l),fitBounds:async(n,i)=>{const{width:l,height:o,minZoom:s,maxZoom:u,panZoom:f}=e.getState(),d=nm(n,l,o,s,u,(i==null?void 0:i.padding)??.1);return f?(await f.setViewport(d,{duration:i==null?void 0:i.duration,ease:i==null?void 0:i.ease,interpolate:i==null?void 0:i.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(n,i={})=>{const{transform:l,snapGrid:o,snapToGrid:s,domNode:u}=e.getState();if(!u)return n;const{x:f,y:d}=u.getBoundingClientRect(),h={x:n.x-f,y:n.y-d},m=i.snapGrid??o,p=i.snapToGrid??s;return Go(h,l,p,m)},flowToScreenPosition:n=>{const{transform:i,domNode:l}=e.getState();if(!l)return n;const{x:o,y:s}=l.getBoundingClientRect(),u=tc(n,i);return{x:u.x+o,y:u.y+s}}}),[])};function iS(e,n){const i=[],l=new Map,o=[];for(const s of e)if(s.type==="add"){o.push(s);continue}else if(s.type==="remove"||s.type==="replace")l.set(s.id,[s]);else{const u=l.get(s.id);u?u.push(s):l.set(s.id,[s])}for(const s of n){const u=l.get(s.id);if(!u){i.push(s);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){i.push({...u[0].item});continue}const f={...s};for(const d of u)sA(d,f);i.push(f)}return o.length&&o.forEach(s=>{s.index!==void 0?i.splice(s.index,0,{...s.item}):i.push({...s.item})}),i}function sA(e,n){switch(e.type){case"select":{n.selected=e.selected;break}case"position":{typeof e.position<"u"&&(n.position=e.position),typeof e.dragging<"u"&&(n.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(n.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(n.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(n.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(n.resizing=e.resizing);break}}}function lS(e,n){return iS(e,n)}function aS(e,n){return iS(e,n)}function Di(e,n){return{id:e,type:"select",selected:n}}function Yl(e,n=new Set,i=!1){const l=[];for(const[o,s]of e){const u=n.has(o);!(s.selected===void 0&&!u)&&s.selected!==u&&(i&&(s.selected=u),l.push(Di(s.id,u)))}return l}function Ev({items:e=[],lookup:n}){var o;const i=[],l=new Map(e.map(s=>[s.id,s]));for(const[s,u]of e.entries()){const f=n.get(u.id),d=((o=f==null?void 0:f.internals)==null?void 0:o.userNode)??f;d!==void 0&&d!==u&&i.push({id:u.id,item:u,type:"replace"}),d===void 0&&i.push({item:u,type:"add",index:s})}for(const[s]of n)l.get(s)===void 0&&i.push({id:s,type:"remove"});return i}function Nv(e){return{id:e.id,type:"remove"}}const kv=e=>MT(e),uA=e=>zw(e);function oS(e){return V.forwardRef(e)}const cA=typeof window<"u"?V.useLayoutEffect:V.useEffect;function Cv(e){const[n,i]=V.useState(BigInt(0)),[l]=V.useState(()=>fA(()=>i(o=>o+BigInt(1))));return cA(()=>{const o=l.get();o.length&&(e(o),l.reset())},[n]),l}function fA(e){let n=[];return{get:()=>n,reset:()=>{n=[]},push:i=>{n.push(i),e()}}}const sS=V.createContext(null);function dA({children:e}){const n=ht(),i=V.useCallback(f=>{const{nodes:d=[],setNodes:h,hasDefaultNodes:m,onNodesChange:p,nodeLookup:y,fitViewQueued:v,onNodesChangeMiddlewareMap:w}=n.getState();let k=d;for(const _ of f)k=typeof _=="function"?_(k):_;let S=Ev({items:k,lookup:y});for(const _ of w.values())S=_(S);m&&h(k),S.length>0?p==null||p(S):v&&window.requestAnimationFrame(()=>{const{fitViewQueued:_,nodes:z,setNodes:E}=n.getState();_&&E(z)})},[]),l=Cv(i),o=V.useCallback(f=>{const{edges:d=[],setEdges:h,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:y}=n.getState();let v=d;for(const w of f)v=typeof w=="function"?w(v):w;m?h(v):p&&p(Ev({items:v,lookup:y}))},[]),s=Cv(o),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:s}),[]);return b.jsx(sS.Provider,{value:u,children:e})}function hA(){const e=V.useContext(sS);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const pA=e=>!!e.panZoom;function $o(){const e=oA(),n=ht(),i=hA(),l=Ie(pA),o=V.useMemo(()=>{const s=p=>n.getState().nodeLookup.get(p),u=p=>{i.nodeQueue.push(p)},f=p=>{i.edgeQueue.push(p)},d=p=>{var _,z;const{nodeLookup:y,nodeOrigin:v}=n.getState(),w=kv(p)?p:y.get(p.id),k=w.parentId?Dw(w.position,w.measured,w.parentId,y,v):w.position,S={...w,position:k,width:((_=w.measured)==null?void 0:_.width)??w.width,height:((z=w.measured)==null?void 0:z.height)??w.height};return ta(S)},h=(p,y,v={replace:!1})=>{u(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&kv(S)?S:{...k,...S}}return k}))},m=(p,y,v={replace:!1})=>{f(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&uA(S)?S:{...k,...S}}return k}))};return{getNodes:()=>n.getState().nodes.map(p=>({...p})),getNode:p=>{var y;return(y=s(p))==null?void 0:y.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:p=[]}=n.getState();return p.map(y=>({...y}))},getEdge:p=>n.getState().edgeLookup.get(p),setNodes:u,setEdges:f,addNodes:p=>{const y=Array.isArray(p)?p:[p];i.nodeQueue.push(v=>[...v,...y])},addEdges:p=>{const y=Array.isArray(p)?p:[p];i.edgeQueue.push(v=>[...v,...y])},toObject:()=>{const{nodes:p=[],edges:y=[],transform:v}=n.getState(),[w,k,S]=v;return{nodes:p.map(_=>({..._})),edges:y.map(_=>({..._})),viewport:{x:w,y:k,zoom:S}}},deleteElements:async({nodes:p=[],edges:y=[]})=>{const{nodes:v,edges:w,onNodesDelete:k,onEdgesDelete:S,triggerNodeChanges:_,triggerEdgeChanges:z,onDelete:E,onBeforeDelete:A}=n.getState(),{nodes:B,edges:T}=await LT({nodesToRemove:p,edgesToRemove:y,nodes:v,edges:w,onBeforeDelete:A}),q=T.length>0,M=B.length>0;if(q){const D=T.map(Nv);S==null||S(T),z(D)}if(M){const D=B.map(Nv);k==null||k(B),_(D)}return(M||q)&&(E==null||E({nodes:B,edges:T})),{deletedNodes:B,deletedEdges:T}},getIntersectingNodes:(p,y=!0,v)=>{const w=Jx(p),k=w?p:d(p),S=v!==void 0;return k?(v||n.getState().nodes).filter(_=>{const z=n.getState().nodeLookup.get(_.id);if(z&&!w&&(_.id===p.id||!z.internals.positionAbsolute))return!1;const E=ta(S?_:z),A=jo(E,k);return y&&A>0||A>=E.width*E.height||A>=k.width*k.height}):[]},isNodeIntersecting:(p,y,v=!0)=>{const k=Jx(p)?p:d(p);if(!k)return!1;const S=jo(k,y);return v&&S>0||S>=y.width*y.height||S>=k.width*k.height},updateNode:h,updateNodeData:(p,y,v={replace:!1})=>{h(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},updateEdge:m,updateEdgeData:(p,y,v={replace:!1})=>{m(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},getNodesBounds:p=>{const{nodeLookup:y,nodeOrigin:v}=n.getState();return jT(p,{nodeLookup:y,nodeOrigin:v})},getHandleConnections:({type:p,id:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}-${p}${y?`-${y}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}${p?y?`-${p}-${y}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const y=n.getState().fitViewResolver??UT();return n.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:y}),i.nodeQueue.push(v=>[...v]),y.promise}}},[]);return V.useMemo(()=>({...o,...e,viewportInitialized:l}),[l])}const Tv=e=>e.selected,mA=typeof window<"u"?window:void 0;function gA({deleteKeyCode:e,multiSelectionKeyCode:n}){const i=ht(),{deleteElements:l}=$o(),o=Ro(e,{actInsideInputWithModifier:!1}),s=Ro(n,{target:mA});V.useEffect(()=>{if(o){const{edges:u,nodes:f}=i.getState();l({nodes:f.filter(Tv),edges:u.filter(Tv)}),i.setState({nodesSelectionActive:!1})}},[o]),V.useEffect(()=>{i.setState({multiSelectionActive:s})},[s])}function yA(e){const n=ht();V.useEffect(()=>{const i=()=>{var o,s,u,f;if(!e.current||!(((s=(o=e.current).checkVisibility)==null?void 0:s.call(o))??!0))return!1;const l=rm(e.current);(l.height===0||l.width===0)&&((f=(u=n.getState()).onError)==null||f.call(u,"004",tr.error004())),n.setState({width:l.width||500,height:l.height||500})};if(e.current){i(),window.addEventListener("resize",i);const l=new ResizeObserver(()=>i());return l.observe(e.current),()=>{window.removeEventListener("resize",i),l&&e.current&&l.unobserve(e.current)}}},[])}const bc={position:"absolute",width:"100%",height:"100%",top:0,left:0},xA=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function vA({onPaneContextMenu:e,zoomOnScroll:n=!0,zoomOnPinch:i=!0,panOnScroll:l=!1,panOnScrollSpeed:o=.5,panOnScrollMode:s=Ii.Free,zoomOnDoubleClick:u=!0,panOnDrag:f=!0,defaultViewport:d,translateExtent:h,minZoom:m,maxZoom:p,zoomActivationKeyCode:y,preventScrolling:v=!0,children:w,noWheelClassName:k,noPanClassName:S,onViewportChange:_,isControlledViewport:z,paneClickDistance:E,selectionOnDrag:A}){const B=ht(),T=V.useRef(null),{userSelectionActive:q,lib:M,connectionInProgress:D}=Ie(xA,dt),X=Ro(y),H=V.useRef();yA(T);const I=V.useCallback(ee=>{_==null||_({x:ee[0],y:ee[1],zoom:ee[2]}),z||B.setState({transform:ee})},[_,z]);return V.useEffect(()=>{if(T.current){H.current=_z({domNode:T.current,minZoom:m,maxZoom:p,translateExtent:h,viewport:d,onDraggingChange:R=>B.setState($=>$.paneDragging===R?$:{paneDragging:R}),onPanZoomStart:(R,$)=>{const{onViewportChangeStart:Z,onMoveStart:J}=B.getState();J==null||J(R,$),Z==null||Z($)},onPanZoom:(R,$)=>{const{onViewportChange:Z,onMove:J}=B.getState();J==null||J(R,$),Z==null||Z($)},onPanZoomEnd:(R,$)=>{const{onViewportChangeEnd:Z,onMoveEnd:J}=B.getState();J==null||J(R,$),Z==null||Z($)}});const{x:ee,y:L,zoom:G}=H.current.getViewport();return B.setState({panZoom:H.current,transform:[ee,L,G],domNode:T.current.closest(".react-flow")}),()=>{var R;(R=H.current)==null||R.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=H.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:n,zoomOnPinch:i,panOnScroll:l,panOnScrollSpeed:o,panOnScrollMode:s,zoomOnDoubleClick:u,panOnDrag:f,zoomActivationKeyPressed:X,preventScrolling:v,noPanClassName:S,userSelectionActive:q,noWheelClassName:k,lib:M,onTransformChange:I,connectionInProgress:D,selectionOnDrag:A,paneClickDistance:E})},[e,n,i,l,o,s,u,f,X,v,S,q,k,M,I,D,A,E]),b.jsx("div",{className:"react-flow__renderer",ref:T,style:bc,children:w})}const bA=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function wA(){const{userSelectionActive:e,userSelectionRect:n}=Ie(bA,dt);return e&&n?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const lh=(e,n)=>i=>{i.target===n.current&&(e==null||e(i))},SA=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function _A({isSelecting:e,selectionKeyPressed:n,selectionMode:i=Mo.Full,panOnDrag:l,paneClickDistance:o,selectionOnDrag:s,onSelectionStart:u,onSelectionEnd:f,onPaneClick:d,onPaneContextMenu:h,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:y,onPaneMouseLeave:v,children:w}){const k=ht(),{userSelectionActive:S,elementsSelectable:_,dragging:z,connectionInProgress:E}=Ie(SA,dt),A=_&&(e||S),B=V.useRef(null),T=V.useRef(),q=V.useRef(new Set),M=V.useRef(new Set),D=V.useRef(!1),X=Z=>{if(D.current||E){D.current=!1;return}d==null||d(Z),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},H=Z=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Z.preventDefault();return}h==null||h(Z)},I=m?Z=>m(Z):void 0,ee=Z=>{D.current&&(Z.stopPropagation(),D.current=!1)},L=Z=>{var F,K;const{domNode:J}=k.getState();if(T.current=J==null?void 0:J.getBoundingClientRect(),!T.current)return;const j=Z.target===B.current;if(!j&&!!Z.target.closest(".nokey")||!e||!(s&&j||n)||Z.button!==0||!Z.isPrimary)return;(K=(F=Z.target)==null?void 0:F.setPointerCapture)==null||K.call(F,Z.pointerId),D.current=!1;const{x:N,y:Y}=Un(Z.nativeEvent,T.current);k.setState({userSelectionRect:{width:0,height:0,startX:N,startY:Y,x:N,y:Y}}),j||(Z.stopPropagation(),Z.preventDefault())},G=Z=>{const{userSelectionRect:J,transform:j,nodeLookup:U,edgeLookup:P,connectionLookup:N,triggerNodeChanges:Y,triggerEdgeChanges:F,defaultEdgeOptions:K,resetSelectedElements:ne}=k.getState();if(!T.current||!J)return;const{x:re,y:se}=Un(Z.nativeEvent,T.current),{startX:ye,startY:ve}=J;if(!D.current){const Ce=n?0:o;if(Math.hypot(re-ye,se-ve)<=Ce)return;ne(),u==null||u(Z)}D.current=!0;const xe={startX:ye,startY:ve,x:reCe.id)),M.current=new Set;const Me=(K==null?void 0:K.selectable)??!0;for(const Ce of q.current){const st=N.get(Ce);if(st)for(const{edgeId:We}of st.values()){const zt=P.get(We);zt&&(zt.selectable??Me)&&M.current.add(We)}}if(!Wx(pe,q.current)){const Ce=Yl(U,q.current,!0);Y(Ce)}if(!Wx(_e,M.current)){const Ce=Yl(P,M.current);F(Ce)}k.setState({userSelectionRect:xe,userSelectionActive:!0,nodesSelectionActive:!1})},R=Z=>{var J,j;Z.button===0&&((j=(J=Z.target)==null?void 0:J.releasePointerCapture)==null||j.call(J,Z.pointerId),!S&&Z.target===B.current&&k.getState().userSelectionRect&&(X==null||X(Z)),k.setState({userSelectionActive:!1,userSelectionRect:null}),D.current&&(f==null||f(Z),k.setState({nodesSelectionActive:q.current.size>0})))},$=l===!0||Array.isArray(l)&&l.includes(0);return b.jsxs("div",{className:Tt(["react-flow__pane",{draggable:$,dragging:z,selection:e}]),onClick:A?void 0:lh(X,B),onContextMenu:lh(H,B),onWheel:lh(I,B),onPointerEnter:A?void 0:p,onPointerMove:A?G:y,onPointerUp:A?R:void 0,onPointerDownCapture:A?L:void 0,onClickCapture:A?ee:void 0,onPointerLeave:v,ref:B,style:bc,children:[w,b.jsx(wA,{})]})}function Mp({id:e,store:n,unselect:i=!1,nodeRef:l}){const{addSelectedNodes:o,unselectNodesAndEdges:s,multiSelectionActive:u,nodeLookup:f,onError:d}=n.getState(),h=f.get(e);if(!h){d==null||d("012",tr.error012(e));return}n.setState({nodesSelectionActive:!1}),h.selected?(i||h.selected&&u)&&(s({nodes:[h],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):o([e])}function uS({nodeRef:e,disabled:n=!1,noDragClassName:i,handleSelector:l,nodeId:o,isSelectable:s,nodeClickDistance:u}){const f=ht(),[d,h]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=uz({getStoreItems:()=>f.getState(),onNodeMouseDown:p=>{Mp({id:p,store:f,nodeRef:e})},onDragStart:()=>{h(!0)},onDragStop:()=>{h(!1)}})},[]),V.useEffect(()=>{if(!(n||!e.current||!m.current))return m.current.update({noDragClassName:i,handleSelector:l,domNode:e.current,isSelectable:s,nodeId:o,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[i,l,n,s,e,o,u]),d}const EA=e=>n=>n.selected&&(n.draggable||e&&typeof n.draggable>"u");function cS(){const e=ht();return V.useCallback(i=>{const{nodeExtent:l,snapToGrid:o,snapGrid:s,nodesDraggable:u,onError:f,updateNodePositions:d,nodeLookup:h,nodeOrigin:m}=e.getState(),p=new Map,y=EA(u),v=o?s[0]:5,w=o?s[1]:5,k=i.direction.x*v*i.factor,S=i.direction.y*w*i.factor;for(const[,_]of h){if(!y(_))continue;let z={x:_.internals.positionAbsolute.x+k,y:_.internals.positionAbsolute.y+S};o&&(z=Yo(z,s));const{position:E,positionAbsolute:A}=Aw({nodeId:_.id,nextPosition:z,nodeLookup:h,nodeExtent:l,nodeOrigin:m,onError:f});_.position=E,_.internals.positionAbsolute=A,p.set(_.id,_)}d(p)},[])}const cm=V.createContext(null),NA=cm.Provider;cm.Consumer;const fS=()=>V.useContext(cm),kA=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),CA=(e,n,i)=>l=>{const{connectionClickStartHandle:o,connectionMode:s,connection:u}=l,{fromHandle:f,toHandle:d,isValid:h}=u,m=(d==null?void 0:d.nodeId)===e&&(d==null?void 0:d.id)===n&&(d==null?void 0:d.type)===i;return{connectingFrom:(f==null?void 0:f.nodeId)===e&&(f==null?void 0:f.id)===n&&(f==null?void 0:f.type)===i,connectingTo:m,clickConnecting:(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.id)===n&&(o==null?void 0:o.type)===i,isPossibleEndHandle:s===Wl.Strict?(f==null?void 0:f.type)!==i:e!==(f==null?void 0:f.nodeId)||n!==(f==null?void 0:f.id),connectionInProcess:!!f,clickConnectionInProcess:!!o,valid:m&&h}};function TA({type:e="source",position:n=we.Top,isValidConnection:i,isConnectable:l=!0,isConnectableStart:o=!0,isConnectableEnd:s=!0,id:u,onConnect:f,children:d,className:h,onMouseDown:m,onTouchStart:p,...y},v){var G,R;const w=u||null,k=e==="target",S=ht(),_=fS(),{connectOnClick:z,noPanClassName:E,rfId:A}=Ie(kA,dt),{connectingFrom:B,connectingTo:T,clickConnecting:q,isPossibleEndHandle:M,connectionInProcess:D,clickConnectionInProcess:X,valid:H}=Ie(CA(_,w,e),dt);_||(R=(G=S.getState()).onError)==null||R.call(G,"010",tr.error010());const I=$=>{const{defaultEdgeOptions:Z,onConnect:J,hasDefaultEdges:j}=S.getState(),U={...Z,...$};if(j){const{edges:P,setEdges:N}=S.getState();N(PT(U,P))}J==null||J(U),f==null||f(U)},ee=$=>{if(!_)return;const Z=Bw($.nativeEvent);if(o&&(Z&&$.button===0||!Z)){const J=S.getState();Ap.onPointerDown($.nativeEvent,{handleDomNode:$.currentTarget,autoPanOnConnect:J.autoPanOnConnect,connectionMode:J.connectionMode,connectionRadius:J.connectionRadius,domNode:J.domNode,nodeLookup:J.nodeLookup,lib:J.lib,isTarget:k,handleId:w,nodeId:_,flowId:J.rfId,panBy:J.panBy,cancelConnection:J.cancelConnection,onConnectStart:J.onConnectStart,onConnectEnd:(...j)=>{var U,P;return(P=(U=S.getState()).onConnectEnd)==null?void 0:P.call(U,...j)},updateConnection:J.updateConnection,onConnect:I,isValidConnection:i||((...j)=>{var U,P;return((P=(U=S.getState()).isValidConnection)==null?void 0:P.call(U,...j))??!0}),getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,autoPanSpeed:J.autoPanSpeed,dragThreshold:J.connectionDragThreshold})}Z?m==null||m($):p==null||p($)},L=$=>{const{onClickConnectStart:Z,onClickConnectEnd:J,connectionClickStartHandle:j,connectionMode:U,isValidConnection:P,lib:N,rfId:Y,nodeLookup:F,connection:K}=S.getState();if(!_||!j&&!o)return;if(!j){Z==null||Z($.nativeEvent,{nodeId:_,handleId:w,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:_,type:e,id:w}});return}const ne=Lw($.target),re=i||P,{connection:se,isValid:ye}=Ap.isValid($.nativeEvent,{handle:{nodeId:_,id:w,type:e},connectionMode:U,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:re,flowId:Y,doc:ne,lib:N,nodeLookup:F});ye&&se&&I(se);const ve=structuredClone(K);delete ve.inProgress,ve.toPosition=ve.toHandle?ve.toHandle.position:null,J==null||J($,ve),S.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":w,"data-nodeid":_,"data-handlepos":n,"data-id":`${A}-${_}-${w}-${e}`,className:Tt(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",E,h,{source:!k,target:k,connectable:l,connectablestart:o,connectableend:s,clickconnecting:q,connectingfrom:B,connectingto:T,valid:H,connectionindicator:l&&(!D||M)&&(D||X?s:o)}]),onMouseDown:ee,onTouchStart:ee,onClick:z?L:void 0,ref:v,...y,children:d})}const an=V.memo(oS(TA));function zA({data:e,isConnectable:n,sourcePosition:i=we.Bottom}){return b.jsxs(b.Fragment,{children:[e==null?void 0:e.label,b.jsx(an,{type:"source",position:i,isConnectable:n})]})}function AA({data:e,isConnectable:n,targetPosition:i=we.Top,sourcePosition:l=we.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:i,isConnectable:n}),e==null?void 0:e.label,b.jsx(an,{type:"source",position:l,isConnectable:n})]})}function MA(){return null}function jA({data:e,isConnectable:n,targetPosition:i=we.Top}){return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:i,isConnectable:n}),e==null?void 0:e.label]})}const nc={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},zv={input:zA,default:AA,output:jA,group:MA};function OA(e){var n,i,l,o;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((n=e.style)==null?void 0:n.width),height:e.height??e.initialHeight??((i=e.style)==null?void 0:i.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((o=e.style)==null?void 0:o.height)}}const RA=e=>{const{width:n,height:i,x:l,y:o}=Vo(e.nodeLookup,{filter:s=>!!s.selected});return{width:qn(n)?n:null,height:qn(i)?i:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${o}px)`}};function DA({onSelectionContextMenu:e,noPanClassName:n,disableKeyboardA11y:i}){const l=ht(),{width:o,height:s,transformString:u,userSelectionActive:f}=Ie(RA,dt),d=cS(),h=V.useRef(null);V.useEffect(()=>{var v;i||(v=h.current)==null||v.focus({preventScroll:!0})},[i]);const m=!f&&o!==null&&s!==null;if(uS({nodeRef:h,disabled:!m}),!m)return null;const p=e?v=>{const w=l.getState().nodes.filter(k=>k.selected);e(v,w)}:void 0,y=v=>{Object.prototype.hasOwnProperty.call(nc,v.key)&&(v.preventDefault(),d({direction:nc[v.key],factor:v.shiftKey?4:1}))};return b.jsx("div",{className:Tt(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:b.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:i?void 0:-1,onKeyDown:i?void 0:y,style:{width:o,height:s}})})}const Av=typeof window<"u"?window:void 0,LA=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function dS({children:e,onPaneClick:n,onPaneMouseEnter:i,onPaneMouseMove:l,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:u,paneClickDistance:f,deleteKeyCode:d,selectionKeyCode:h,selectionOnDrag:m,selectionMode:p,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:w,panActivationKeyCode:k,zoomActivationKeyCode:S,elementsSelectable:_,zoomOnScroll:z,zoomOnPinch:E,panOnScroll:A,panOnScrollSpeed:B,panOnScrollMode:T,zoomOnDoubleClick:q,panOnDrag:M,defaultViewport:D,translateExtent:X,minZoom:H,maxZoom:I,preventScrolling:ee,onSelectionContextMenu:L,noWheelClassName:G,noPanClassName:R,disableKeyboardA11y:$,onViewportChange:Z,isControlledViewport:J}){const{nodesSelectionActive:j,userSelectionActive:U}=Ie(LA,dt),P=Ro(h,{target:Av}),N=Ro(k,{target:Av}),Y=N||M,F=N||A,K=m&&Y!==!0,ne=P||U||K;return gA({deleteKeyCode:d,multiSelectionKeyCode:w}),b.jsx(vA,{onPaneContextMenu:s,elementsSelectable:_,zoomOnScroll:z,zoomOnPinch:E,panOnScroll:F,panOnScrollSpeed:B,panOnScrollMode:T,zoomOnDoubleClick:q,panOnDrag:!P&&Y,defaultViewport:D,translateExtent:X,minZoom:H,maxZoom:I,zoomActivationKeyCode:S,preventScrolling:ee,noWheelClassName:G,noPanClassName:R,onViewportChange:Z,isControlledViewport:J,paneClickDistance:f,selectionOnDrag:K,children:b.jsxs(_A,{onSelectionStart:y,onSelectionEnd:v,onPaneClick:n,onPaneMouseEnter:i,onPaneMouseMove:l,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:u,panOnDrag:Y,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:P,paneClickDistance:f,selectionOnDrag:K,children:[e,j&&b.jsx(DA,{onSelectionContextMenu:L,noPanClassName:R,disableKeyboardA11y:$})]})})}dS.displayName="FlowRenderer";const HA=V.memo(dS),BA=e=>n=>e?tm(n.nodeLookup,{x:0,y:0,width:n.width,height:n.height},n.transform,!0).map(i=>i.id):Array.from(n.nodeLookup.keys());function qA(e){return Ie(V.useCallback(BA(e),[e]),dt)}const UA=e=>e.updateNodeInternals;function IA(){const e=Ie(UA),[n]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(i=>{const l=new Map;i.forEach(o=>{const s=o.target.getAttribute("data-id");l.set(s,{id:s,nodeElement:o.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{n==null||n.disconnect()},[n]),n}function VA({node:e,nodeType:n,hasDimensions:i,resizeObserver:l}){const o=ht(),s=V.useRef(null),u=V.useRef(null),f=V.useRef(e.sourcePosition),d=V.useRef(e.targetPosition),h=V.useRef(n),m=i&&!!e.internals.handleBounds;return V.useEffect(()=>{s.current&&!e.hidden&&(!m||u.current!==s.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(s.current),u.current=s.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(s.current){const p=h.current!==n,y=f.current!==e.sourcePosition,v=d.current!==e.targetPosition;(p||y||v)&&(h.current=n,f.current=e.sourcePosition,d.current=e.targetPosition,o.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,n,e.sourcePosition,e.targetPosition]),s}function YA({id:e,onClick:n,onMouseEnter:i,onMouseMove:l,onMouseLeave:o,onContextMenu:s,onDoubleClick:u,nodesDraggable:f,elementsSelectable:d,nodesConnectable:h,nodesFocusable:m,resizeObserver:p,noDragClassName:y,noPanClassName:v,disableKeyboardA11y:w,rfId:k,nodeTypes:S,nodeClickDistance:_,onError:z}){const{node:E,internals:A,isParent:B}=Ie(re=>{const se=re.nodeLookup.get(e),ye=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:ye}},dt);let T=E.type||"default",q=(S==null?void 0:S[T])||zv[T];q===void 0&&(z==null||z("003",tr.error003(T)),T="default",q=(S==null?void 0:S.default)||zv.default);const M=!!(E.draggable||f&&typeof E.draggable>"u"),D=!!(E.selectable||d&&typeof E.selectable>"u"),X=!!(E.connectable||h&&typeof E.connectable>"u"),H=!!(E.focusable||m&&typeof E.focusable>"u"),I=ht(),ee=Rw(E),L=VA({node:E,nodeType:T,hasDimensions:ee,resizeObserver:p}),G=uS({nodeRef:L,disabled:E.hidden||!M,noDragClassName:y,handleSelector:E.dragHandle,nodeId:e,isSelectable:D,nodeClickDistance:_}),R=cS();if(E.hidden)return null;const $=Ar(E),Z=OA(E),J=D||M||n||i||l||o,j=i?re=>i(re,{...A.userNode}):void 0,U=l?re=>l(re,{...A.userNode}):void 0,P=o?re=>o(re,{...A.userNode}):void 0,N=s?re=>s(re,{...A.userNode}):void 0,Y=u?re=>u(re,{...A.userNode}):void 0,F=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:ye}=I.getState();D&&(!se||!M||ye>0)&&Mp({id:e,store:I,nodeRef:L}),n&&n(re,{...A.userNode})},K=re=>{if(!(Hw(re.nativeEvent)||w)){if(Nw.includes(re.key)&&D){const se=re.key==="Escape";Mp({id:e,store:I,unselect:se,nodeRef:L})}else if(M&&E.selected&&Object.prototype.hasOwnProperty.call(nc,re.key)){re.preventDefault();const{ariaLabelConfig:se}=I.getState();I.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~A.positionAbsolute.x,y:~~A.positionAbsolute.y})}),R({direction:nc[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=L.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:ye,autoPanOnNodeFocus:ve,setCenter:xe}=I.getState();if(!ve)return;tm(new Map([[e,E]]),{x:0,y:0,width:se,height:ye},re,!0).length>0||xe(E.position.x+$.width/2,E.position.y+$.height/2,{zoom:re[2]})};return b.jsx("div",{className:Tt(["react-flow__node",`react-flow__node-${T}`,{[v]:M},E.className,{selected:E.selected,selectable:D,parent:B,draggable:M,dragging:G}]),ref:L,style:{zIndex:A.z,transform:`translate(${A.positionAbsolute.x}px,${A.positionAbsolute.y}px)`,pointerEvents:J?"all":"none",visibility:ee?"visible":"hidden",...E.style,...Z},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:U,onMouseLeave:P,onContextMenu:N,onClick:F,onDoubleClick:Y,onKeyDown:H?K:void 0,tabIndex:H?0:void 0,onFocus:H?ne:void 0,role:E.ariaRole??(H?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${tS}-${k}`,"aria-label":E.ariaLabel,...E.domAttributes,children:b.jsx(NA,{value:e,children:b.jsx(q,{id:e,data:E.data,type:T,positionAbsoluteX:A.positionAbsolute.x,positionAbsoluteY:A.positionAbsolute.y,selected:E.selected??!1,selectable:D,draggable:M,deletable:E.deletable??!0,isConnectable:X,sourcePosition:E.sourcePosition,targetPosition:E.targetPosition,dragging:G,dragHandle:E.dragHandle,zIndex:A.z,parentId:E.parentId,...$})})})}var GA=V.memo(YA);const $A=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function hS(e){const{nodesDraggable:n,nodesConnectable:i,nodesFocusable:l,elementsSelectable:o,onError:s}=Ie($A,dt),u=qA(e.onlyRenderVisibleElements),f=IA();return b.jsx("div",{className:"react-flow__nodes",style:bc,children:u.map(d=>b.jsx(GA,{id:d,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:f,nodesDraggable:n,nodesConnectable:i,nodesFocusable:l,elementsSelectable:o,nodeClickDistance:e.nodeClickDistance,onError:s},d))})}hS.displayName="NodeRenderer";const XA=V.memo(hS);function PA(e){return Ie(V.useCallback(i=>{if(!e)return i.edges.map(o=>o.id);const l=[];if(i.width&&i.height)for(const o of i.edges){const s=i.nodeLookup.get(o.source),u=i.nodeLookup.get(o.target);s&&u&>({sourceNode:s,targetNode:u,width:i.width,height:i.height,transform:i.transform})&&l.push(o.id)}return l},[e]),dt)}const FA=({color:e="none",strokeWidth:n=1})=>{const i={strokeWidth:n,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:i,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},QA=({color:e="none",strokeWidth:n=1})=>{const i={strokeWidth:n,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:i,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Mv={[Wu.Arrow]:FA,[Wu.ArrowClosed]:QA};function ZA(e){const n=ht();return V.useMemo(()=>{var o,s;return Object.prototype.hasOwnProperty.call(Mv,e)?Mv[e]:((s=(o=n.getState()).onError)==null||s.call(o,"009",tr.error009(e)),null)},[e])}const KA=({id:e,type:n,color:i,width:l=12.5,height:o=12.5,markerUnits:s="strokeWidth",strokeWidth:u,orient:f="auto-start-reverse"})=>{const d=ZA(n);return d?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${o}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:f,refX:"0",refY:"0",children:b.jsx(d,{color:i,strokeWidth:u})}):null},pS=({defaultColor:e,rfId:n})=>{const i=Ie(s=>s.edges),l=Ie(s=>s.defaultEdgeOptions),o=V.useMemo(()=>JT(i,{id:n,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[i,l,n,e]);return o.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:o.map(s=>b.jsx(KA,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};pS.displayName="MarkerDefinitions";var JA=V.memo(pS);function mS({x:e,y:n,label:i,labelStyle:l,labelShowBg:o=!0,labelBgStyle:s,labelBgPadding:u=[2,4],labelBgBorderRadius:f=2,children:d,className:h,...m}){const[p,y]=V.useState({x:1,y:0,width:0,height:0}),v=Tt(["react-flow__edge-textwrapper",h]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const k=w.current.getBBox();y({x:k.x,y:k.y,width:k.width,height:k.height})}},[i]),i?b.jsxs("g",{transform:`translate(${e-p.width/2} ${n-p.height/2})`,className:v,visibility:p.width?"visible":"hidden",...m,children:[o&&b.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:s,rx:f,ry:f}),b.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:i}),d]}):null}mS.displayName="EdgeText";const WA=V.memo(mS);function Xo({path:e,labelX:n,labelY:i,label:l,labelStyle:o,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:d,interactionWidth:h=20,...m}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...m,d:e,fill:"none",className:Tt(["react-flow__edge-path",m.className])}),h?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}):null,l&&qn(n)&&qn(i)?b.jsx(WA,{x:n,y:i,label:l,labelStyle:o,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:d}):null]})}function jv({pos:e,x1:n,y1:i,x2:l,y2:o}){return e===we.Left||e===we.Right?[.5*(n+l),i]:[n,.5*(i+o)]}function gS({sourceX:e,sourceY:n,sourcePosition:i=we.Bottom,targetX:l,targetY:o,targetPosition:s=we.Top}){const[u,f]=jv({pos:i,x1:e,y1:n,x2:l,y2:o}),[d,h]=jv({pos:s,x1:l,y1:o,x2:e,y2:n}),[m,p,y,v]=qw({sourceX:e,sourceY:n,targetX:l,targetY:o,sourceControlX:u,sourceControlY:f,targetControlX:d,targetControlY:h});return[`M${e},${n} C${u},${f} ${d},${h} ${l},${o}`,m,p,y,v]}function yS(e){return V.memo(({id:n,sourceX:i,sourceY:l,targetX:o,targetY:s,sourcePosition:u,targetPosition:f,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})=>{const[z,E,A]=gS({sourceX:i,sourceY:l,sourcePosition:u,targetX:o,targetY:s,targetPosition:f}),B=e.isInternal?void 0:n;return b.jsx(Xo,{id:B,path:z,labelX:E,labelY:A,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})})}const eM=yS({isInternal:!1}),xS=yS({isInternal:!0});eM.displayName="SimpleBezierEdge";xS.displayName="SimpleBezierEdgeInternal";function vS(e){return V.memo(({id:n,sourceX:i,sourceY:l,targetX:o,targetY:s,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,sourcePosition:v=we.Bottom,targetPosition:w=we.Top,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:z})=>{const[E,A,B]=Cp({sourceX:i,sourceY:l,sourcePosition:v,targetX:o,targetY:s,targetPosition:w,borderRadius:_==null?void 0:_.borderRadius,offset:_==null?void 0:_.offset,stepPosition:_==null?void 0:_.stepPosition}),T=e.isInternal?void 0:n;return b.jsx(Xo,{id:T,path:E,labelX:A,labelY:B,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:k,markerStart:S,interactionWidth:z})})}const bS=vS({isInternal:!1}),wS=vS({isInternal:!0});bS.displayName="SmoothStepEdge";wS.displayName="SmoothStepEdgeInternal";function SS(e){return V.memo(({id:n,...i})=>{var o;const l=e.isInternal?void 0:n;return b.jsx(bS,{...i,id:l,pathOptions:V.useMemo(()=>{var s;return{borderRadius:0,offset:(s=i.pathOptions)==null?void 0:s.offset}},[(o=i.pathOptions)==null?void 0:o.offset])})})}const tM=SS({isInternal:!1}),_S=SS({isInternal:!0});tM.displayName="StepEdge";_S.displayName="StepEdgeInternal";function ES(e){return V.memo(({id:n,sourceX:i,sourceY:l,targetX:o,targetY:s,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[S,_,z]=Iw({sourceX:i,sourceY:l,targetX:o,targetY:s}),E=e.isInternal?void 0:n;return b.jsx(Xo,{id:E,path:S,labelX:_,labelY:z,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})})}const nM=ES({isInternal:!1}),NS=ES({isInternal:!0});nM.displayName="StraightEdge";NS.displayName="StraightEdgeInternal";function kS(e){return V.memo(({id:n,sourceX:i,sourceY:l,targetX:o,targetY:s,sourcePosition:u=we.Bottom,targetPosition:f=we.Top,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:z})=>{const[E,A,B]=im({sourceX:i,sourceY:l,sourcePosition:u,targetX:o,targetY:s,targetPosition:f,curvature:_==null?void 0:_.curvature}),T=e.isInternal?void 0:n;return b.jsx(Xo,{id:T,path:E,labelX:A,labelY:B,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:z})})}const rM=kS({isInternal:!1}),CS=kS({isInternal:!0});rM.displayName="BezierEdge";CS.displayName="BezierEdgeInternal";const Ov={default:CS,straight:NS,step:_S,smoothstep:wS,simplebezier:xS},Rv={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},iM=(e,n,i)=>i===we.Left?e-n:i===we.Right?e+n:e,lM=(e,n,i)=>i===we.Top?e-n:i===we.Bottom?e+n:e,Dv="react-flow__edgeupdater";function Lv({position:e,centerX:n,centerY:i,radius:l=10,onMouseDown:o,onMouseEnter:s,onMouseOut:u,type:f}){return b.jsx("circle",{onMouseDown:o,onMouseEnter:s,onMouseOut:u,className:Tt([Dv,`${Dv}-${f}`]),cx:iM(n,l,e),cy:lM(i,l,e),r:l,stroke:"transparent",fill:"transparent"})}function aM({isReconnectable:e,reconnectRadius:n,edge:i,sourceX:l,sourceY:o,targetX:s,targetY:u,sourcePosition:f,targetPosition:d,onReconnect:h,onReconnectStart:m,onReconnectEnd:p,setReconnecting:y,setUpdateHover:v}){const w=ht(),k=(A,B)=>{if(A.button!==0)return;const{autoPanOnConnect:T,domNode:q,connectionMode:M,connectionRadius:D,lib:X,onConnectStart:H,cancelConnection:I,nodeLookup:ee,rfId:L,panBy:G,updateConnection:R}=w.getState(),$=B.type==="target",Z=(U,P)=>{y(!1),p==null||p(U,i,B.type,P)},J=U=>h==null?void 0:h(i,U),j=(U,P)=>{y(!0),m==null||m(A,i,B.type),H==null||H(U,P)};Ap.onPointerDown(A.nativeEvent,{autoPanOnConnect:T,connectionMode:M,connectionRadius:D,domNode:q,handleId:B.id,nodeId:B.nodeId,nodeLookup:ee,isTarget:$,edgeUpdaterType:B.type,lib:X,flowId:L,cancelConnection:I,panBy:G,isValidConnection:(...U)=>{var P,N;return((N=(P=w.getState()).isValidConnection)==null?void 0:N.call(P,...U))??!0},onConnect:J,onConnectStart:j,onConnectEnd:(...U)=>{var P,N;return(N=(P=w.getState()).onConnectEnd)==null?void 0:N.call(P,...U)},onReconnectEnd:Z,updateConnection:R,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:A.currentTarget})},S=A=>k(A,{nodeId:i.target,id:i.targetHandle??null,type:"target"}),_=A=>k(A,{nodeId:i.source,id:i.sourceHandle??null,type:"source"}),z=()=>v(!0),E=()=>v(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(Lv,{position:f,centerX:l,centerY:o,radius:n,onMouseDown:S,onMouseEnter:z,onMouseOut:E,type:"source"}),(e===!0||e==="target")&&b.jsx(Lv,{position:d,centerX:s,centerY:u,radius:n,onMouseDown:_,onMouseEnter:z,onMouseOut:E,type:"target"})]})}function oM({id:e,edgesFocusable:n,edgesReconnectable:i,elementsSelectable:l,onClick:o,onDoubleClick:s,onContextMenu:u,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,rfId:w,edgeTypes:k,noPanClassName:S,onError:_,disableKeyboardA11y:z}){let E=Ie(xe=>xe.edgeLookup.get(e));const A=Ie(xe=>xe.defaultEdgeOptions);E=A?{...A,...E}:E;let B=E.type||"default",T=(k==null?void 0:k[B])||Ov[B];T===void 0&&(_==null||_("011",tr.error011(B)),B="default",T=(k==null?void 0:k.default)||Ov.default);const q=!!(E.focusable||n&&typeof E.focusable>"u"),M=typeof p<"u"&&(E.reconnectable||i&&typeof E.reconnectable>"u"),D=!!(E.selectable||l&&typeof E.selectable>"u"),X=V.useRef(null),[H,I]=V.useState(!1),[ee,L]=V.useState(!1),G=ht(),{zIndex:R,sourceX:$,sourceY:Z,targetX:J,targetY:j,sourcePosition:U,targetPosition:P}=Ie(V.useCallback(xe=>{const pe=xe.nodeLookup.get(E.source),_e=xe.nodeLookup.get(E.target);if(!pe||!_e)return{zIndex:E.zIndex,...Rv};const Me=KT({id:e,sourceNode:pe,targetNode:_e,sourceHandle:E.sourceHandle||null,targetHandle:E.targetHandle||null,connectionMode:xe.connectionMode,onError:_});return{zIndex:YT({selected:E.selected,zIndex:E.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:xe.elevateEdgesOnSelect,zIndexMode:xe.zIndexMode}),...Me||Rv}},[E.source,E.target,E.sourceHandle,E.targetHandle,E.selected,E.zIndex]),dt),N=V.useMemo(()=>E.markerStart?`url('#${Tp(E.markerStart,w)}')`:void 0,[E.markerStart,w]),Y=V.useMemo(()=>E.markerEnd?`url('#${Tp(E.markerEnd,w)}')`:void 0,[E.markerEnd,w]);if(E.hidden||$===null||Z===null||J===null||j===null)return null;const F=xe=>{var Ce;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:Me}=G.getState();D&&(G.setState({nodesSelectionActive:!1}),E.selected&&Me?(_e({nodes:[],edges:[E]}),(Ce=X.current)==null||Ce.blur()):pe([e])),o&&o(xe,E)},K=s?xe=>{s(xe,{...E})}:void 0,ne=u?xe=>{u(xe,{...E})}:void 0,re=f?xe=>{f(xe,{...E})}:void 0,se=d?xe=>{d(xe,{...E})}:void 0,ye=h?xe=>{h(xe,{...E})}:void 0,ve=xe=>{var pe;if(!z&&Nw.includes(xe.key)&&D){const{unselectNodesAndEdges:_e,addSelectedEdges:Me}=G.getState();xe.key==="Escape"?((pe=X.current)==null||pe.blur(),_e({edges:[E]})):Me([e])}};return b.jsx("svg",{style:{zIndex:R},children:b.jsxs("g",{className:Tt(["react-flow__edge",`react-flow__edge-${B}`,E.className,S,{selected:E.selected,animated:E.animated,inactive:!D&&!o,updating:H,selectable:D}]),onClick:F,onDoubleClick:K,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:ye,onKeyDown:q?ve:void 0,tabIndex:q?0:void 0,role:E.ariaRole??(q?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":E.ariaLabel===null?void 0:E.ariaLabel||`Edge from ${E.source} to ${E.target}`,"aria-describedby":q?`${nS}-${w}`:void 0,ref:X,...E.domAttributes,children:[!ee&&b.jsx(T,{id:e,source:E.source,target:E.target,type:E.type,selected:E.selected,animated:E.animated,selectable:D,deletable:E.deletable??!0,label:E.label,labelStyle:E.labelStyle,labelShowBg:E.labelShowBg,labelBgStyle:E.labelBgStyle,labelBgPadding:E.labelBgPadding,labelBgBorderRadius:E.labelBgBorderRadius,sourceX:$,sourceY:Z,targetX:J,targetY:j,sourcePosition:U,targetPosition:P,data:E.data,style:E.style,sourceHandleId:E.sourceHandle,targetHandleId:E.targetHandle,markerStart:N,markerEnd:Y,pathOptions:"pathOptions"in E?E.pathOptions:void 0,interactionWidth:E.interactionWidth}),M&&b.jsx(aM,{edge:E,isReconnectable:M,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,sourceX:$,sourceY:Z,targetX:J,targetY:j,sourcePosition:U,targetPosition:P,setUpdateHover:I,setReconnecting:L})]})})}var sM=V.memo(oM);const uM=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function TS({defaultMarkerColor:e,onlyRenderVisibleElements:n,rfId:i,edgeTypes:l,noPanClassName:o,onReconnect:s,onEdgeContextMenu:u,onEdgeMouseEnter:f,onEdgeMouseMove:d,onEdgeMouseLeave:h,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,disableKeyboardA11y:k}){const{edgesFocusable:S,edgesReconnectable:_,elementsSelectable:z,onError:E}=Ie(uM,dt),A=PA(n);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(JA,{defaultColor:e,rfId:i}),A.map(B=>b.jsx(sM,{id:B,edgesFocusable:S,edgesReconnectable:_,elementsSelectable:z,noPanClassName:o,onReconnect:s,onContextMenu:u,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,onClick:m,reconnectRadius:p,onDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,rfId:i,onError:E,edgeTypes:l,disableKeyboardA11y:k},B))]})}TS.displayName="EdgeRenderer";const cM=V.memo(TS),fM=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function dM({children:e}){const n=Ie(fM);return b.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}function hM(e){const n=$o(),i=V.useRef(!1);V.useEffect(()=>{!i.current&&n.viewportInitialized&&e&&(setTimeout(()=>e(n),1),i.current=!0)},[e,n.viewportInitialized])}const pM=e=>{var n;return(n=e.panZoom)==null?void 0:n.syncViewport};function mM(e){const n=Ie(pM),i=ht();return V.useEffect(()=>{e&&(n==null||n(e),i.setState({transform:[e.x,e.y,e.zoom]}))},[e,n]),null}function gM(e){return e.connection.inProgress?{...e.connection,to:Go(e.connection.to,e.transform)}:{...e.connection}}function yM(e){return gM}function xM(e){const n=yM();return Ie(n,dt)}const vM=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function bM({containerStyle:e,style:n,type:i,component:l}){const{nodesConnectable:o,width:s,height:u,isValid:f,inProgress:d}=Ie(vM,dt);return!(s&&o&&d)?null:b.jsx("svg",{style:e,width:s,height:u,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:Tt(["react-flow__connection",Tw(f)]),children:b.jsx(zS,{style:n,type:i,CustomComponent:l,isValid:f})})})}const zS=({style:e,type:n=fi.Bezier,CustomComponent:i,isValid:l})=>{const{inProgress:o,from:s,fromNode:u,fromHandle:f,fromPosition:d,to:h,toNode:m,toHandle:p,toPosition:y,pointer:v}=xM();if(!o)return;if(i)return b.jsx(i,{connectionLineType:n,connectionLineStyle:e,fromNode:u,fromHandle:f,fromX:s.x,fromY:s.y,toX:h.x,toY:h.y,fromPosition:d,toPosition:y,connectionStatus:Tw(l),toNode:m,toHandle:p,pointer:v});let w="";const k={sourceX:s.x,sourceY:s.y,sourcePosition:d,targetX:h.x,targetY:h.y,targetPosition:y};switch(n){case fi.Bezier:[w]=im(k);break;case fi.SimpleBezier:[w]=gS(k);break;case fi.Step:[w]=Cp({...k,borderRadius:0});break;case fi.SmoothStep:[w]=Cp(k);break;default:[w]=Iw(k)}return b.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};zS.displayName="ConnectionLine";const wM={};function Hv(e=wM){V.useRef(e),ht(),V.useEffect(()=>{},[e])}function SM(){ht(),V.useRef(!1),V.useEffect(()=>{},[])}function AS({nodeTypes:e,edgeTypes:n,onInit:i,onNodeClick:l,onEdgeClick:o,onNodeDoubleClick:s,onEdgeDoubleClick:u,onNodeMouseEnter:f,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:y,onSelectionEnd:v,connectionLineType:w,connectionLineStyle:k,connectionLineComponent:S,connectionLineContainerStyle:_,selectionKeyCode:z,selectionOnDrag:E,selectionMode:A,multiSelectionKeyCode:B,panActivationKeyCode:T,zoomActivationKeyCode:q,deleteKeyCode:M,onlyRenderVisibleElements:D,elementsSelectable:X,defaultViewport:H,translateExtent:I,minZoom:ee,maxZoom:L,preventScrolling:G,defaultMarkerColor:R,zoomOnScroll:$,zoomOnPinch:Z,panOnScroll:J,panOnScrollSpeed:j,panOnScrollMode:U,zoomOnDoubleClick:P,panOnDrag:N,onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:K,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:ye,nodeClickDistance:ve,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,onReconnect:st,onReconnectStart:We,onReconnectEnd:zt,noDragClassName:Ut,noWheelClassName:Rt,noPanClassName:wn,disableKeyboardA11y:Mn,nodeExtent:At,rfId:Mr,viewport:ue,onViewportChange:ge}){return Hv(e),Hv(n),SM(),hM(i),mM(ue),b.jsx(HA,{onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:K,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:ye,deleteKeyCode:M,selectionKeyCode:z,selectionOnDrag:E,selectionMode:A,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:B,panActivationKeyCode:T,zoomActivationKeyCode:q,elementsSelectable:X,zoomOnScroll:$,zoomOnPinch:Z,zoomOnDoubleClick:P,panOnScroll:J,panOnScrollSpeed:j,panOnScrollMode:U,panOnDrag:N,defaultViewport:H,translateExtent:I,minZoom:ee,maxZoom:L,onSelectionContextMenu:p,preventScrolling:G,noDragClassName:Ut,noWheelClassName:Rt,noPanClassName:wn,disableKeyboardA11y:Mn,onViewportChange:ge,isControlledViewport:!!ue,children:b.jsxs(dM,{children:[b.jsx(cM,{edgeTypes:n,onEdgeClick:o,onEdgeDoubleClick:u,onReconnect:st,onReconnectStart:We,onReconnectEnd:zt,onlyRenderVisibleElements:D,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,defaultMarkerColor:R,noPanClassName:wn,disableKeyboardA11y:Mn,rfId:Mr}),b.jsx(bM,{style:k,type:w,component:S,containerStyle:_}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(XA,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:s,onNodeMouseEnter:f,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:D,noPanClassName:wn,noDragClassName:Ut,disableKeyboardA11y:Mn,nodeExtent:At,rfId:Mr}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}AS.displayName="GraphView";const _M=V.memo(AS),Bv=({nodes:e,edges:n,defaultNodes:i,defaultEdges:l,width:o,height:s,fitView:u,fitViewOptions:f,minZoom:d=.5,maxZoom:h=2,nodeOrigin:m,nodeExtent:p,zIndexMode:y="basic"}={})=>{const v=new Map,w=new Map,k=new Map,S=new Map,_=l??n??[],z=i??e??[],E=m??[0,0],A=p??Ao;Gw(k,S,_);const B=zp(z,v,w,{nodeOrigin:E,nodeExtent:A,zIndexMode:y});let T=[0,0,1];if(u&&o&&s){const q=Vo(v,{filter:H=>!!((H.width||H.initialWidth)&&(H.height||H.initialHeight))}),{x:M,y:D,zoom:X}=nm(q,o,s,d,h,(f==null?void 0:f.padding)??.1);T=[M,D,X]}return{rfId:"1",width:o??0,height:s??0,transform:T,nodes:z,nodesInitialized:B,nodeLookup:v,parentLookup:w,edges:_,edgeLookup:S,connectionLookup:k,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:i!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:d,maxZoom:h,translateExtent:Ao,nodeExtent:A,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Wl.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:E,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:f,fitViewResolver:null,connection:{...Cw},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:HT,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:kw,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},EM=({nodes:e,edges:n,defaultNodes:i,defaultEdges:l,width:o,height:s,fitView:u,fitViewOptions:f,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y})=>Iz((v,w)=>{async function k(){const{nodeLookup:S,panZoom:_,fitViewOptions:z,fitViewResolver:E,width:A,height:B,minZoom:T,maxZoom:q}=w();_&&(await DT({nodes:S,width:A,height:B,panZoom:_,minZoom:T,maxZoom:q},z),E==null||E.resolve(!0),v({fitViewResolver:null}))}return{...Bv({nodes:e,edges:n,width:o,height:s,fitView:u,fitViewOptions:f,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,defaultNodes:i,defaultEdges:l,zIndexMode:y}),setNodes:S=>{const{nodeLookup:_,parentLookup:z,nodeOrigin:E,elevateNodesOnSelect:A,fitViewQueued:B,zIndexMode:T}=w(),q=zp(S,_,z,{nodeOrigin:E,nodeExtent:p,elevateNodesOnSelect:A,checkEquality:!0,zIndexMode:T});B&&q?(k(),v({nodes:S,nodesInitialized:q,fitViewQueued:!1,fitViewOptions:void 0})):v({nodes:S,nodesInitialized:q})},setEdges:S=>{const{connectionLookup:_,edgeLookup:z}=w();Gw(_,z,S),v({edges:S})},setDefaultNodesAndEdges:(S,_)=>{if(S){const{setNodes:z}=w();z(S),v({hasDefaultNodes:!0})}if(_){const{setEdges:z}=w();z(_),v({hasDefaultEdges:!0})}},updateNodeInternals:S=>{const{triggerNodeChanges:_,nodeLookup:z,parentLookup:E,domNode:A,nodeOrigin:B,nodeExtent:T,debug:q,fitViewQueued:M,zIndexMode:D}=w(),{changes:X,updatedInternals:H}=lz(S,z,E,A,B,T,D);H&&(tz(z,E,{nodeOrigin:B,nodeExtent:T,zIndexMode:D}),M?(k(),v({fitViewQueued:!1,fitViewOptions:void 0})):v({}),(X==null?void 0:X.length)>0&&(q&&console.log("React Flow: trigger node changes",X),_==null||_(X)))},updateNodePositions:(S,_=!1)=>{const z=[];let E=[];const{nodeLookup:A,triggerNodeChanges:B,connection:T,updateConnection:q,onNodesChangeMiddlewareMap:M}=w();for(const[D,X]of S){const H=A.get(D),I=!!(H!=null&&H.expandParent&&(H!=null&&H.parentId)&&(X!=null&&X.position)),ee={id:D,type:"position",position:I?{x:Math.max(0,X.position.x),y:Math.max(0,X.position.y)}:X.position,dragging:_};if(H&&T.inProgress&&T.fromNode.id===H.id){const L=Xi(H,T.fromHandle,we.Left,!0);q({...T,from:L})}I&&H.parentId&&z.push({id:D,parentId:H.parentId,rect:{...X.internals.positionAbsolute,width:X.measured.width??0,height:X.measured.height??0}}),E.push(ee)}if(z.length>0){const{parentLookup:D,nodeOrigin:X}=w(),H=um(z,A,D,X);E.push(...H)}for(const D of M.values())E=D(E);B(E)},triggerNodeChanges:S=>{const{onNodesChange:_,setNodes:z,nodes:E,hasDefaultNodes:A,debug:B}=w();if(S!=null&&S.length){if(A){const T=lS(S,E);z(T)}B&&console.log("React Flow: trigger node changes",S),_==null||_(S)}},triggerEdgeChanges:S=>{const{onEdgesChange:_,setEdges:z,edges:E,hasDefaultEdges:A,debug:B}=w();if(S!=null&&S.length){if(A){const T=aS(S,E);z(T)}B&&console.log("React Flow: trigger edge changes",S),_==null||_(S)}},addSelectedNodes:S=>{const{multiSelectionActive:_,edgeLookup:z,nodeLookup:E,triggerNodeChanges:A,triggerEdgeChanges:B}=w();if(_){const T=S.map(q=>Di(q,!0));A(T);return}A(Yl(E,new Set([...S]),!0)),B(Yl(z))},addSelectedEdges:S=>{const{multiSelectionActive:_,edgeLookup:z,nodeLookup:E,triggerNodeChanges:A,triggerEdgeChanges:B}=w();if(_){const T=S.map(q=>Di(q,!0));B(T);return}B(Yl(z,new Set([...S]))),A(Yl(E,new Set,!0))},unselectNodesAndEdges:({nodes:S,edges:_}={})=>{const{edges:z,nodes:E,nodeLookup:A,triggerNodeChanges:B,triggerEdgeChanges:T}=w(),q=S||E,M=_||z,D=[];for(const H of q){if(!H.selected)continue;const I=A.get(H.id);I&&(I.selected=!1),D.push(Di(H.id,!1))}const X=[];for(const H of M)H.selected&&X.push(Di(H.id,!1));B(D),T(X)},setMinZoom:S=>{const{panZoom:_,maxZoom:z}=w();_==null||_.setScaleExtent([S,z]),v({minZoom:S})},setMaxZoom:S=>{const{panZoom:_,minZoom:z}=w();_==null||_.setScaleExtent([z,S]),v({maxZoom:S})},setTranslateExtent:S=>{var _;(_=w().panZoom)==null||_.setTranslateExtent(S),v({translateExtent:S})},resetSelectedElements:()=>{const{edges:S,nodes:_,triggerNodeChanges:z,triggerEdgeChanges:E,elementsSelectable:A}=w();if(!A)return;const B=_.reduce((q,M)=>M.selected?[...q,Di(M.id,!1)]:q,[]),T=S.reduce((q,M)=>M.selected?[...q,Di(M.id,!1)]:q,[]);z(B),E(T)},setNodeExtent:S=>{const{nodes:_,nodeLookup:z,parentLookup:E,nodeOrigin:A,elevateNodesOnSelect:B,nodeExtent:T,zIndexMode:q}=w();S[0][0]===T[0][0]&&S[0][1]===T[0][1]&&S[1][0]===T[1][0]&&S[1][1]===T[1][1]||(zp(_,z,E,{nodeOrigin:A,nodeExtent:S,elevateNodesOnSelect:B,checkEquality:!1,zIndexMode:q}),v({nodeExtent:S}))},panBy:S=>{const{transform:_,width:z,height:E,panZoom:A,translateExtent:B}=w();return az({delta:S,panZoom:A,transform:_,translateExtent:B,width:z,height:E})},setCenter:async(S,_,z)=>{const{width:E,height:A,maxZoom:B,panZoom:T}=w();if(!T)return Promise.resolve(!1);const q=typeof(z==null?void 0:z.zoom)<"u"?z.zoom:B;return await T.setViewport({x:E/2-S*q,y:A/2-_*q,zoom:q},{duration:z==null?void 0:z.duration,ease:z==null?void 0:z.ease,interpolate:z==null?void 0:z.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{v({connection:{...Cw}})},updateConnection:S=>{v({connection:S})},reset:()=>v({...Bv()})}},Object.is);function NM({initialNodes:e,initialEdges:n,defaultNodes:i,defaultEdges:l,initialWidth:o,initialHeight:s,initialMinZoom:u,initialMaxZoom:f,initialFitViewOptions:d,fitView:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y,children:v}){const[w]=V.useState(()=>EM({nodes:e,edges:n,defaultNodes:i,defaultEdges:l,width:o,height:s,fitView:h,minZoom:u,maxZoom:f,fitViewOptions:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y}));return b.jsx(Yz,{value:w,children:b.jsx(dA,{children:v})})}function kM({children:e,nodes:n,edges:i,defaultNodes:l,defaultEdges:o,width:s,height:u,fitView:f,fitViewOptions:d,minZoom:h,maxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v}){return V.useContext(xc)?b.jsx(b.Fragment,{children:e}):b.jsx(NM,{initialNodes:n,initialEdges:i,defaultNodes:l,defaultEdges:o,initialWidth:s,initialHeight:u,fitView:f,initialFitViewOptions:d,initialMinZoom:h,initialMaxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v,children:e})}const CM={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function TM({nodes:e,edges:n,defaultNodes:i,defaultEdges:l,className:o,nodeTypes:s,edgeTypes:u,onNodeClick:f,onEdgeClick:d,onInit:h,onMove:m,onMoveStart:p,onMoveEnd:y,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,onNodeMouseEnter:z,onNodeMouseMove:E,onNodeMouseLeave:A,onNodeContextMenu:B,onNodeDoubleClick:T,onNodeDragStart:q,onNodeDrag:M,onNodeDragStop:D,onNodesDelete:X,onEdgesDelete:H,onDelete:I,onSelectionChange:ee,onSelectionDragStart:L,onSelectionDrag:G,onSelectionDragStop:R,onSelectionContextMenu:$,onSelectionStart:Z,onSelectionEnd:J,onBeforeDelete:j,connectionMode:U,connectionLineType:P=fi.Bezier,connectionLineStyle:N,connectionLineComponent:Y,connectionLineContainerStyle:F,deleteKeyCode:K="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Mo.Full,panActivationKeyCode:ye="Space",multiSelectionKeyCode:ve=Oo()?"Meta":"Control",zoomActivationKeyCode:xe=Oo()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Ce,nodesDraggable:st,autoPanOnNodeFocus:We,nodesConnectable:zt,nodesFocusable:Ut,nodeOrigin:Rt=rS,edgesFocusable:wn,edgesReconnectable:Mn,elementsSelectable:At=!0,defaultViewport:Mr=nA,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=Ao,preventScrolling:De=!0,nodeExtent:Ve,defaultMarkerColor:$t="#b1b1b7",zoomOnScroll:jn=!0,zoomOnPinch:Dt=!0,panOnScroll:yt=!1,panOnScrollSpeed:It=.5,panOnScrollMode:Ze=Ii.Free,zoomOnDoubleClick:Gn=!0,panOnDrag:sn=!0,onPaneClick:Ec,onPaneMouseEnter:Zi,onPaneMouseMove:Ki,onPaneMouseLeave:Ji,onPaneScroll:ir,onPaneContextMenu:Wi,paneClickDistance:hi=1,nodeClickDistance:Nc=0,children:Qo,onReconnect:sa,onReconnectStart:pi,onReconnectEnd:kc,onEdgeContextMenu:Zo,onEdgeDoubleClick:Ko,onEdgeMouseEnter:Jo,onEdgeMouseMove:ua,onEdgeMouseLeave:ca,reconnectRadius:Wo=10,onNodesChange:es,onEdgesChange:$n,noDragClassName:Mt="nodrag",noWheelClassName:Vt="nowheel",noPanClassName:lr="nopan",fitView:el,fitViewOptions:ts,connectOnClick:Cc,attributionPosition:ns,proOptions:mi,defaultEdgeOptions:fa,elevateNodesOnSelect:jr=!0,elevateEdgesOnSelect:Or=!1,disableKeyboardA11y:Rr=!1,autoPanOnConnect:Dr,autoPanOnNodeDrag:bt,autoPanSpeed:rs,connectionRadius:is,isValidConnection:ar,onError:Lr,style:Tc,id:da,nodeDragThreshold:ls,connectionDragThreshold:zc,viewport:tl,onViewportChange:nl,width:On,height:Pt,colorMode:as="light",debug:Ac,onScroll:Hr,ariaLabelConfig:os,zIndexMode:gi="basic",...Mc},Ft){const yi=da||"1",ss=aA(as),ha=V.useCallback(or=>{or.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),Hr==null||Hr(or)},[Hr]);return b.jsx("div",{"data-testid":"rf__wrapper",...Mc,onScroll:ha,style:{...Tc,...CM},ref:Ft,className:Tt(["react-flow",o,ss]),id:da,role:"application",children:b.jsxs(kM,{nodes:e,edges:n,width:On,height:Pt,fitView:el,fitViewOptions:ts,minZoom:ue,maxZoom:ge,nodeOrigin:Rt,nodeExtent:Ve,zIndexMode:gi,children:[b.jsx(_M,{onInit:h,onNodeClick:f,onEdgeClick:d,onNodeMouseEnter:z,onNodeMouseMove:E,onNodeMouseLeave:A,onNodeContextMenu:B,onNodeDoubleClick:T,nodeTypes:s,edgeTypes:u,connectionLineType:P,connectionLineStyle:N,connectionLineComponent:Y,connectionLineContainerStyle:F,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:K,multiSelectionKeyCode:ve,panActivationKeyCode:ye,zoomActivationKeyCode:xe,onlyRenderVisibleElements:Me,defaultViewport:Mr,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:De,zoomOnScroll:jn,zoomOnPinch:Dt,zoomOnDoubleClick:Gn,panOnScroll:yt,panOnScrollSpeed:It,panOnScrollMode:Ze,panOnDrag:sn,onPaneClick:Ec,onPaneMouseEnter:Zi,onPaneMouseMove:Ki,onPaneMouseLeave:Ji,onPaneScroll:ir,onPaneContextMenu:Wi,paneClickDistance:hi,nodeClickDistance:Nc,onSelectionContextMenu:$,onSelectionStart:Z,onSelectionEnd:J,onReconnect:sa,onReconnectStart:pi,onReconnectEnd:kc,onEdgeContextMenu:Zo,onEdgeDoubleClick:Ko,onEdgeMouseEnter:Jo,onEdgeMouseMove:ua,onEdgeMouseLeave:ca,reconnectRadius:Wo,defaultMarkerColor:$t,noDragClassName:Mt,noWheelClassName:Vt,noPanClassName:lr,rfId:yi,disableKeyboardA11y:Rr,nodeExtent:Ve,viewport:tl,onViewportChange:nl}),b.jsx(lA,{nodes:e,edges:n,defaultNodes:i,defaultEdges:l,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,nodesDraggable:st,autoPanOnNodeFocus:We,nodesConnectable:zt,nodesFocusable:Ut,edgesFocusable:wn,edgesReconnectable:Mn,elementsSelectable:At,elevateNodesOnSelect:jr,elevateEdgesOnSelect:Or,minZoom:ue,maxZoom:ge,nodeExtent:Ve,onNodesChange:es,onEdgesChange:$n,snapToGrid:pe,snapGrid:_e,connectionMode:U,translateExtent:Ne,connectOnClick:Cc,defaultEdgeOptions:fa,fitView:el,fitViewOptions:ts,onNodesDelete:X,onEdgesDelete:H,onDelete:I,onNodeDragStart:q,onNodeDrag:M,onNodeDragStop:D,onSelectionDrag:G,onSelectionDragStart:L,onSelectionDragStop:R,onMove:m,onMoveStart:p,onMoveEnd:y,noPanClassName:lr,nodeOrigin:Rt,rfId:yi,autoPanOnConnect:Dr,autoPanOnNodeDrag:bt,autoPanSpeed:rs,onError:Lr,connectionRadius:is,isValidConnection:ar,selectNodesOnDrag:Ce,nodeDragThreshold:ls,connectionDragThreshold:zc,onBeforeDelete:j,debug:Ac,ariaLabelConfig:os,zIndexMode:gi}),b.jsx(tA,{onSelectionChange:ee}),Qo,b.jsx(Zz,{proOptions:mi,position:ns}),b.jsx(Qz,{rfId:yi,disableKeyboardA11y:Rr})]})})}var zM=oS(TM);const AM=e=>{var n;return(n=e.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function MM({children:e}){const n=Ie(AM);return n?Vz.createPortal(e,n):null}function jM(e){const[n,i]=V.useState(e),l=V.useCallback(o=>i(s=>lS(o,s)),[]);return[n,i,l]}function OM(e){const[n,i]=V.useState(e),l=V.useCallback(o=>i(s=>aS(o,s)),[]);return[n,i,l]}function RM({dimensions:e,lineWidth:n,variant:i,className:l}){return b.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:Tt(["react-flow__background-pattern",i,l])})}function DM({radius:e,className:n}){return b.jsx("circle",{cx:e,cy:e,r:e,className:Tt(["react-flow__background-pattern","dots",n])})}var Tr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Tr||(Tr={}));const LM={[Tr.Dots]:1,[Tr.Lines]:1,[Tr.Cross]:6},HM=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function MS({id:e,variant:n=Tr.Dots,gap:i=20,size:l,lineWidth:o=1,offset:s=0,color:u,bgColor:f,style:d,className:h,patternClassName:m}){const p=V.useRef(null),{transform:y,patternId:v}=Ie(HM,dt),w=l||LM[n],k=n===Tr.Dots,S=n===Tr.Cross,_=Array.isArray(i)?i:[i,i],z=[_[0]*y[2]||1,_[1]*y[2]||1],E=w*y[2],A=Array.isArray(s)?s:[s,s],B=S?[E,E]:z,T=[A[0]*y[2]||1+B[0]/2,A[1]*y[2]||1+B[1]/2],q=`${v}${e||""}`;return b.jsxs("svg",{className:Tt(["react-flow__background",h]),style:{...d,...bc,"--xy-background-color-props":f,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[b.jsx("pattern",{id:q,x:y[0]%z[0],y:y[1]%z[1],width:z[0],height:z[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`,children:k?b.jsx(DM,{radius:E/2,className:m}):b.jsx(RM,{dimensions:B,lineWidth:o,variant:n,className:m})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${q})`})]})}MS.displayName="Background";const BM=V.memo(MS);function qM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function UM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function IM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function VM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function YM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Mu({children:e,className:n,...i}){return b.jsx("button",{type:"button",className:Tt(["react-flow__controls-button",n]),...i,children:e})}const GM=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function jS({style:e,showZoom:n=!0,showFitView:i=!0,showInteractive:l=!0,fitViewOptions:o,onZoomIn:s,onZoomOut:u,onFitView:f,onInteractiveChange:d,className:h,children:m,position:p="bottom-left",orientation:y="vertical","aria-label":v}){const w=ht(),{isInteractive:k,minZoomReached:S,maxZoomReached:_,ariaLabelConfig:z}=Ie(GM,dt),{zoomIn:E,zoomOut:A,fitView:B}=$o(),T=()=>{E(),s==null||s()},q=()=>{A(),u==null||u()},M=()=>{B(o),f==null||f()},D=()=>{w.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),d==null||d(!k)},X=y==="horizontal"?"horizontal":"vertical";return b.jsxs(vc,{className:Tt(["react-flow__controls",X,h]),position:p,style:e,"data-testid":"rf__controls","aria-label":v??z["controls.ariaLabel"],children:[n&&b.jsxs(b.Fragment,{children:[b.jsx(Mu,{onClick:T,className:"react-flow__controls-zoomin",title:z["controls.zoomIn.ariaLabel"],"aria-label":z["controls.zoomIn.ariaLabel"],disabled:_,children:b.jsx(qM,{})}),b.jsx(Mu,{onClick:q,className:"react-flow__controls-zoomout",title:z["controls.zoomOut.ariaLabel"],"aria-label":z["controls.zoomOut.ariaLabel"],disabled:S,children:b.jsx(UM,{})})]}),i&&b.jsx(Mu,{className:"react-flow__controls-fitview",onClick:M,title:z["controls.fitView.ariaLabel"],"aria-label":z["controls.fitView.ariaLabel"],children:b.jsx(IM,{})}),l&&b.jsx(Mu,{className:"react-flow__controls-interactive",onClick:D,title:z["controls.interactive.ariaLabel"],"aria-label":z["controls.interactive.ariaLabel"],children:k?b.jsx(YM,{}):b.jsx(VM,{})}),m]})}jS.displayName="Controls";const $M=V.memo(jS);function XM({id:e,x:n,y:i,width:l,height:o,style:s,color:u,strokeColor:f,strokeWidth:d,className:h,borderRadius:m,shapeRendering:p,selected:y,onClick:v}){const{background:w,backgroundColor:k}=s||{},S=u||w||k;return b.jsx("rect",{className:Tt(["react-flow__minimap-node",{selected:y},h]),x:n,y:i,rx:m,ry:m,width:l,height:o,style:{fill:S,stroke:f,strokeWidth:d},shapeRendering:p,onClick:v?_=>v(_,e):void 0})}const PM=V.memo(XM),FM=e=>e.nodes.map(n=>n.id),ah=e=>e instanceof Function?e:()=>e;function QM({nodeStrokeColor:e,nodeColor:n,nodeClassName:i="",nodeBorderRadius:l=5,nodeStrokeWidth:o,nodeComponent:s=PM,onClick:u}){const f=Ie(FM,dt),d=ah(n),h=ah(e),m=ah(i),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:f.map(y=>b.jsx(KM,{id:y,nodeColorFunc:d,nodeStrokeColorFunc:h,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:o,NodeComponent:s,onClick:u,shapeRendering:p},y))})}function ZM({id:e,nodeColorFunc:n,nodeStrokeColorFunc:i,nodeClassNameFunc:l,nodeBorderRadius:o,nodeStrokeWidth:s,shapeRendering:u,NodeComponent:f,onClick:d}){const{node:h,x:m,y:p,width:y,height:v}=Ie(w=>{const k=w.nodeLookup.get(e);if(!k)return{node:void 0,x:0,y:0,width:0,height:0};const S=k.internals.userNode,{x:_,y:z}=k.internals.positionAbsolute,{width:E,height:A}=Ar(S);return{node:S,x:_,y:z,width:E,height:A}},dt);return!h||h.hidden||!Rw(h)?null:b.jsx(f,{x:m,y:p,width:y,height:v,style:h.style,selected:!!h.selected,className:l(h),color:n(h),borderRadius:o,strokeColor:i(h),strokeWidth:s,shapeRendering:u,onClick:d,id:h.id})}const KM=V.memo(ZM);var JM=V.memo(QM);const WM=200,ej=150,tj=e=>!e.hidden,nj=e=>{const n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:e.nodeLookup.size>0?Ow(Vo(e.nodeLookup,{filter:tj}),n):n,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},rj="react-flow__minimap-desc";function OS({style:e,className:n,nodeStrokeColor:i,nodeColor:l,nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:f,bgColor:d,maskColor:h,maskStrokeColor:m,maskStrokeWidth:p,position:y="bottom-right",onClick:v,onNodeClick:w,pannable:k=!1,zoomable:S=!1,ariaLabel:_,inversePan:z,zoomStep:E=1,offsetScale:A=5}){const B=ht(),T=V.useRef(null),{boundingRect:q,viewBB:M,rfId:D,panZoom:X,translateExtent:H,flowWidth:I,flowHeight:ee,ariaLabelConfig:L}=Ie(nj,dt),G=(e==null?void 0:e.width)??WM,R=(e==null?void 0:e.height)??ej,$=q.width/G,Z=q.height/R,J=Math.max($,Z),j=J*G,U=J*R,P=A*J,N=q.x-(j-q.width)/2-P,Y=q.y-(U-q.height)/2-P,F=j+P*2,K=U+P*2,ne=`${rj}-${D}`,re=V.useRef(0),se=V.useRef();re.current=J,V.useEffect(()=>{if(T.current&&X)return se.current=mz({domNode:T.current,panZoom:X,getTransform:()=>B.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[X]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:H,width:I,height:ee,inversePan:z,pannable:k,zoomStep:E,zoomable:S})},[k,S,z,E,H,I,ee]);const ye=v?pe=>{var Ce;const[_e,Me]=((Ce=se.current)==null?void 0:Ce.pointer(pe))||[0,0];v(pe,{x:_e,y:Me})}:void 0,ve=w?V.useCallback((pe,_e)=>{const Me=B.getState().nodeLookup.get(_e).internals.userNode;w(pe,Me)},[]):void 0,xe=_??L["minimap.ariaLabel"];return b.jsx(vc,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*J:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof i=="string"?i:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:Tt(["react-flow__minimap",n]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:G,height:R,viewBox:`${N} ${Y} ${F} ${K}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:T,onClick:ye,children:[xe&&b.jsx("title",{id:ne,children:xe}),b.jsx(JM,{onClick:ve,nodeColor:l,nodeStrokeColor:i,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:u,nodeComponent:f}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${N-P},${Y-P}h${F+P*2}v${K+P*2}h${-F-P*2}z - M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}OS.displayName="MiniMap";const ij=V.memo(OS),lj=e=>n=>e?`${Math.max(1/n.transform[2],1)}`:void 0,aj={[ra.Line]:"right",[ra.Handle]:"bottom-right"};function oj({nodeId:e,position:n,variant:i=ra.Handle,className:l,style:o=void 0,children:s,color:u,minWidth:f=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:y,autoScale:v=!0,shouldResize:w,onResizeStart:k,onResize:S,onResizeEnd:_}){const z=fS(),E=typeof e=="string"?e:z,A=ht(),B=V.useRef(null),T=i===ra.Handle,q=Ie(V.useCallback(lj(T&&v),[T,v]),dt),M=V.useRef(null),D=n??aj[i];V.useEffect(()=>{if(!(!B.current||!E))return M.current||(M.current=zz({domNode:B.current,nodeId:E,getStoreItems:()=>{const{nodeLookup:H,transform:I,snapGrid:ee,snapToGrid:L,nodeOrigin:G,domNode:R}=A.getState();return{nodeLookup:H,transform:I,snapGrid:ee,snapToGrid:L,nodeOrigin:G,paneDomNode:R}},onChange:(H,I)=>{const{triggerNodeChanges:ee,nodeLookup:L,parentLookup:G,nodeOrigin:R}=A.getState(),$=[],Z={x:H.x,y:H.y},J=L.get(E);if(J&&J.expandParent&&J.parentId){const j=J.origin??R,U=H.width??J.measured.width??0,P=H.height??J.measured.height??0,N={id:J.id,parentId:J.parentId,rect:{width:U,height:P,...Dw({x:H.x??J.position.x,y:H.y??J.position.y},{width:U,height:P},J.parentId,L,j)}},Y=um([N],L,G,R);$.push(...Y),Z.x=H.x?Math.max(j[0]*U,H.x):void 0,Z.y=H.y?Math.max(j[1]*P,H.y):void 0}if(Z.x!==void 0&&Z.y!==void 0){const j={id:E,type:"position",position:{...Z}};$.push(j)}if(H.width!==void 0&&H.height!==void 0){const U={id:E,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:H.width,height:H.height}};$.push(U)}for(const j of I){const U={...j,type:"position"};$.push(U)}ee($)},onEnd:({width:H,height:I})=>{const ee={id:E,type:"dimensions",resizing:!1,dimensions:{width:H,height:I}};A.getState().triggerNodeChanges([ee])}})),M.current.update({controlPosition:D,boundaries:{minWidth:f,minHeight:d,maxWidth:h,maxHeight:m},keepAspectRatio:p,resizeDirection:y,onResizeStart:k,onResize:S,onResizeEnd:_,shouldResize:w}),()=>{var H;(H=M.current)==null||H.destroy()}},[D,f,d,h,m,p,k,S,_,w]);const X=D.split("-");return b.jsx("div",{className:Tt(["react-flow__resize-control","nodrag",...X,i,l]),ref:B,style:{...o,scale:q,...u&&{[T?"backgroundColor":"borderColor"]:u}},children:s})}V.memo(oj);var oh,qv;function fm(){if(qv)return oh;qv=1;var e="\0",n="\0",i="";class l{constructor(m){Nt(this,"_isDirected",!0);Nt(this,"_isMultigraph",!1);Nt(this,"_isCompound",!1);Nt(this,"_label");Nt(this,"_defaultNodeLabelFn",()=>{});Nt(this,"_defaultEdgeLabelFn",()=>{});Nt(this,"_nodes",{});Nt(this,"_in",{});Nt(this,"_preds",{});Nt(this,"_out",{});Nt(this,"_sucs",{});Nt(this,"_edgeObjs",{});Nt(this,"_edgeLabels",{});Nt(this,"_nodeCount",0);Nt(this,"_edgeCount",0);Nt(this,"_parent");Nt(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var y=arguments,v=this;return m.forEach(function(w){y.length>1?v.setNode(w,p):v.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=n,this._children[m]={},this._children[n][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var y=v=>p.removeEdge(p._edgeObjs[v]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(v){p.setParent(v)}),delete this._children[m]),Object.keys(this._in[m]).forEach(y),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(y),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=n;else{p+="";for(var y=p;y!==void 0;y=this.parent(y))if(y===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==n)return p}}children(m=n){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===n)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const v=new Set(p);for(var y of this.successors(m))v.add(y);return Array.from(v.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var y=this;Object.entries(this._nodes).forEach(function([k,S]){m(k)&&p.setNode(k,S)}),Object.values(this._edgeObjs).forEach(function(k){p.hasNode(k.v)&&p.hasNode(k.w)&&p.setEdge(k,y.edge(k))});var v={};function w(k){var S=y.parent(k);return S===void 0||p.hasNode(S)?(v[k]=S,S):S in v?v[S]:w(S)}return this._isCompound&&p.nodes().forEach(k=>p.setParent(k,w(k))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var y=this,v=arguments;return m.reduce(function(w,k){return v.length>1?y.setEdge(w,k,p):y.setEdge(w,k),k}),this}setEdge(){var m,p,y,v,w=!1,k=arguments[0];typeof k=="object"&&k!==null&&"v"in k?(m=k.v,p=k.w,y=k.name,arguments.length===2&&(v=arguments[1],w=!0)):(m=k,p=arguments[1],y=arguments[3],arguments.length>2&&(v=arguments[2],w=!0)),m=""+m,p=""+p,y!==void 0&&(y=""+y);var S=u(this._isDirected,m,p,y);if(Object.hasOwn(this._edgeLabels,S))return w&&(this._edgeLabels[S]=v),this;if(y!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[S]=w?v:this._defaultEdgeLabelFn(m,p,y);var _=f(this._isDirected,m,p,y);return m=_.v,p=_.w,Object.freeze(_),this._edgeObjs[S]=_,o(this._preds[p],m),o(this._sucs[m],p),this._in[p][S]=_,this._out[m][S]=_,this._edgeCount++,this}edge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return this._edgeLabels[v]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return Object.hasOwn(this._edgeLabels,v)}removeEdge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y),w=this._edgeObjs[v];return w&&(m=w.v,p=w.w,delete this._edgeLabels[v],delete this._edgeObjs[v],s(this._preds[p],m),s(this._sucs[m],p),delete this._in[p][v],delete this._out[m][v],this._edgeCount--),this}inEdges(m,p){var y=this._in[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.v===p):v}}outEdges(m,p){var y=this._out[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.w===p):v}}nodeEdges(m,p){var y=this.inEdges(m,p);if(y)return y.concat(this.outEdges(m,p))}}function o(h,m){h[m]?h[m]++:h[m]=1}function s(h,m){--h[m]||delete h[m]}function u(h,m,p,y){var v=""+m,w=""+p;if(!h&&v>w){var k=v;v=w,w=k}return v+i+w+i+(y===void 0?e:y)}function f(h,m,p,y){var v=""+m,w=""+p;if(!h&&v>w){var k=v;v=w,w=k}var S={v,w};return y&&(S.name=y),S}function d(h,m){return u(h,m.v,m.w,m.name)}return oh=l,oh}var sh,Uv;function sj(){return Uv||(Uv=1,sh="2.2.4"),sh}var uh,Iv;function uj(){return Iv||(Iv=1,uh={Graph:fm(),version:sj()}),uh}var ch,Vv;function cj(){if(Vv)return ch;Vv=1;var e=fm();ch={write:n,read:o};function n(s){var u={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:i(s),edges:l(s)};return s.graph()!==void 0&&(u.value=structuredClone(s.graph())),u}function i(s){return s.nodes().map(function(u){var f=s.node(u),d=s.parent(u),h={v:u};return f!==void 0&&(h.value=f),d!==void 0&&(h.parent=d),h})}function l(s){return s.edges().map(function(u){var f=s.edge(u),d={v:u.v,w:u.w};return u.name!==void 0&&(d.name=u.name),f!==void 0&&(d.value=f),d})}function o(s){var u=new e(s.options).setGraph(s.value);return s.nodes.forEach(function(f){u.setNode(f.v,f.value),f.parent&&u.setParent(f.v,f.parent)}),s.edges.forEach(function(f){u.setEdge({v:f.v,w:f.w,name:f.name},f.value)}),u}return ch}var fh,Yv;function fj(){if(Yv)return fh;Yv=1,fh=e;function e(n){var i={},l=[],o;function s(u){Object.hasOwn(i,u)||(i[u]=!0,o.push(u),n.successors(u).forEach(s),n.predecessors(u).forEach(s))}return n.nodes().forEach(function(u){o=[],s(u),o.length&&l.push(o)}),l}return fh}var dh,Gv;function RS(){if(Gv)return dh;Gv=1;class e{constructor(){Nt(this,"_arr",[]);Nt(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(i){return i.key})}has(i){return Object.hasOwn(this._keyIndices,i)}priority(i){var l=this._keyIndices[i];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(i,l){var o=this._keyIndices;if(i=String(i),!Object.hasOwn(o,i)){var s=this._arr,u=s.length;return o[i]=u,s.push({key:i,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var i=this._arr.pop();return delete this._keyIndices[i.key],this._heapify(0),i.key}decrease(i,l){var o=this._keyIndices[i];if(l>this._arr[o].priority)throw new Error("New priority is greater than current priority. Key: "+i+" Old: "+this._arr[o].priority+" New: "+l);this._arr[o].priority=l,this._decrease(o)}_heapify(i){var l=this._arr,o=2*i,s=o+1,u=i;o>1,!(l[s].priority1;function i(o,s,u,f){return l(o,String(s),u||n,f||function(d){return o.outEdges(d)})}function l(o,s,u,f){var d={},h=new e,m,p,y=function(v){var w=v.v!==m?v.v:v.w,k=d[w],S=u(v),_=p.distance+S;if(S<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+S);_0&&(m=h.removeMin(),p=d[m],p.distance!==Number.POSITIVE_INFINITY);)f(m).forEach(y);return d}return hh}var ph,Xv;function dj(){if(Xv)return ph;Xv=1;var e=DS();ph=n;function n(i,l,o){return i.nodes().reduce(function(s,u){return s[u]=e(i,u,l,o),s},{})}return ph}var mh,Pv;function LS(){if(Pv)return mh;Pv=1,mh=e;function e(n){var i=0,l=[],o={},s=[];function u(f){var d=o[f]={onStack:!0,lowlink:i,index:i++};if(l.push(f),n.successors(f).forEach(function(p){Object.hasOwn(o,p)?o[p].onStack&&(d.lowlink=Math.min(d.lowlink,o[p].index)):(u(p),d.lowlink=Math.min(d.lowlink,o[p].lowlink))}),d.lowlink===d.index){var h=[],m;do m=l.pop(),o[m].onStack=!1,h.push(m);while(f!==m);s.push(h)}}return n.nodes().forEach(function(f){Object.hasOwn(o,f)||u(f)}),s}return mh}var gh,Fv;function hj(){if(Fv)return gh;Fv=1;var e=LS();gh=n;function n(i){return e(i).filter(function(l){return l.length>1||l.length===1&&i.hasEdge(l[0],l[0])})}return gh}var yh,Qv;function pj(){if(Qv)return yh;Qv=1,yh=n;var e=()=>1;function n(l,o,s){return i(l,o||e,s||function(u){return l.outEdges(u)})}function i(l,o,s){var u={},f=l.nodes();return f.forEach(function(d){u[d]={},u[d][d]={distance:0},f.forEach(function(h){d!==h&&(u[d][h]={distance:Number.POSITIVE_INFINITY})}),s(d).forEach(function(h){var m=h.v===d?h.w:h.v,p=o(h);u[d][m]={distance:p,predecessor:d}})}),f.forEach(function(d){var h=u[d];f.forEach(function(m){var p=u[m];f.forEach(function(y){var v=p[d],w=h[y],k=p[y],S=v.distance+w.distance;So.successors(p):p=>o.neighbors(p),d=u==="post"?n:i,h=[],m={};return s.forEach(p=>{if(!o.hasNode(p))throw new Error("Graph does not have node: "+p);d(p,f,m,h)}),h}function n(o,s,u,f){for(var d=[[o,!1]];d.length>0;){var h=d.pop();h[1]?f.push(h[0]):Object.hasOwn(u,h[0])||(u[h[0]]=!0,d.push([h[0],!0]),l(s(h[0]),m=>d.push([m,!1])))}}function i(o,s,u,f){for(var d=[o];d.length>0;){var h=d.pop();Object.hasOwn(u,h)||(u[h]=!0,f.push(h),l(s(h),m=>d.push(m)))}}function l(o,s){for(var u=o.length;u--;)s(o[u],u,o);return o}return bh}var wh,Wv;function gj(){if(Wv)return wh;Wv=1;var e=BS();wh=n;function n(i,l){return e(i,l,"post")}return wh}var Sh,e1;function yj(){if(e1)return Sh;e1=1;var e=BS();Sh=n;function n(i,l){return e(i,l,"pre")}return Sh}var _h,t1;function xj(){if(t1)return _h;t1=1;var e=fm(),n=RS();_h=i;function i(l,o){var s=new e,u={},f=new n,d;function h(p){var y=p.v===d?p.w:p.v,v=f.priority(y);if(v!==void 0){var w=o(p);w0;){if(d=f.removeMin(),Object.hasOwn(u,d))s.setEdge(d,u[d]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(d).forEach(h)}return s}return _h}var Eh,n1;function vj(){return n1||(n1=1,Eh={components:fj(),dijkstra:DS(),dijkstraAll:dj(),findCycles:hj(),floydWarshall:pj(),isAcyclic:mj(),postorder:gj(),preorder:yj(),prim:xj(),tarjan:LS(),topsort:HS()}),Eh}var Nh,r1;function Vn(){if(r1)return Nh;r1=1;var e=uj();return Nh={Graph:e.Graph,json:cj(),alg:vj(),version:e.version},Nh}var kh,i1;function bj(){if(i1)return kh;i1=1;class e{constructor(){let o={};o._next=o._prev=o,this._sentinel=o}dequeue(){let o=this._sentinel,s=o._prev;if(s!==o)return n(s),s}enqueue(o){let s=this._sentinel;o._prev&&o._next&&n(o),o._next=s._next,s._next._prev=o,s._next=o,o._prev=s}toString(){let o=[],s=this._sentinel,u=s._prev;for(;u!==s;)o.push(JSON.stringify(u,i)),u=u._prev;return"["+o.join(", ")+"]"}}function n(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function i(l,o){if(l!=="_next"&&l!=="_prev")return o}return kh=e,kh}var Ch,l1;function wj(){if(l1)return Ch;l1=1;let e=Vn().Graph,n=bj();Ch=l;let i=()=>1;function l(h,m){if(h.nodeCount()<=1)return[];let p=u(h,m||i);return o(p.graph,p.buckets,p.zeroIdx).flatMap(v=>h.outEdges(v.v,v.w))}function o(h,m,p){let y=[],v=m[m.length-1],w=m[0],k;for(;h.nodeCount();){for(;k=w.dequeue();)s(h,m,p,k);for(;k=v.dequeue();)s(h,m,p,k);if(h.nodeCount()){for(let S=m.length-2;S>0;--S)if(k=m[S].dequeue(),k){y=y.concat(s(h,m,p,k,!0));break}}}return y}function s(h,m,p,y,v){let w=v?[]:void 0;return h.inEdges(y.v).forEach(k=>{let S=h.edge(k),_=h.node(k.v);v&&w.push({v:k.v,w:k.w}),_.out-=S,f(m,p,_)}),h.outEdges(y.v).forEach(k=>{let S=h.edge(k),_=k.w,z=h.node(_);z.in-=S,f(m,p,z)}),h.removeNode(y.v),w}function u(h,m){let p=new e,y=0,v=0;h.nodes().forEach(S=>{p.setNode(S,{v:S,in:0,out:0})}),h.edges().forEach(S=>{let _=p.edge(S.v,S.w)||0,z=m(S),E=_+z;p.setEdge(S.v,S.w,E),v=Math.max(v,p.node(S.v).out+=z),y=Math.max(y,p.node(S.w).in+=z)});let w=d(v+y+3).map(()=>new n),k=y+1;return p.nodes().forEach(S=>{f(w,k,p.node(S))}),{graph:p,buckets:w,zeroIdx:k}}function f(h,m,p){p.out?p.in?h[p.out-p.in+m].enqueue(p):h[h.length-1].enqueue(p):h[0].enqueue(p)}function d(h){const m=[];for(let p=0;pD.setNode(X,M.node(X))),M.edges().forEach(X=>{let H=D.edge(X.v,X.w)||{weight:0,minlen:1},I=M.edge(X);D.setEdge(X.v,X.w,{weight:H.weight+I.weight,minlen:Math.max(H.minlen,I.minlen)})}),D}function l(M){let D=new e({multigraph:M.isMultigraph()}).setGraph(M.graph());return M.nodes().forEach(X=>{M.children(X).length||D.setNode(X,M.node(X))}),M.edges().forEach(X=>{D.setEdge(X,M.edge(X))}),D}function o(M){let D=M.nodes().map(X=>{let H={};return M.outEdges(X).forEach(I=>{H[I.w]=(H[I.w]||0)+M.edge(I).weight}),H});return q(M.nodes(),D)}function s(M){let D=M.nodes().map(X=>{let H={};return M.inEdges(X).forEach(I=>{H[I.v]=(H[I.v]||0)+M.edge(I).weight}),H});return q(M.nodes(),D)}function u(M,D){let X=M.x,H=M.y,I=D.x-X,ee=D.y-H,L=M.width/2,G=M.height/2;if(!I&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let R,$;return Math.abs(ee)*L>Math.abs(I)*G?(ee<0&&(G=-G),R=G*I/ee,$=G):(I<0&&(L=-L),R=L,$=L*ee/I),{x:X+R,y:H+$}}function f(M){let D=A(w(M)+1).map(()=>[]);return M.nodes().forEach(X=>{let H=M.node(X),I=H.rank;I!==void 0&&(D[I][H.order]=X)}),D}function d(M){let D=M.nodes().map(H=>{let I=M.node(H).rank;return I===void 0?Number.MAX_VALUE:I}),X=v(Math.min,D);M.nodes().forEach(H=>{let I=M.node(H);Object.hasOwn(I,"rank")&&(I.rank-=X)})}function h(M){let D=M.nodes().map(L=>M.node(L).rank),X=v(Math.min,D),H=[];M.nodes().forEach(L=>{let G=M.node(L).rank-X;H[G]||(H[G]=[]),H[G].push(L)});let I=0,ee=M.graph().nodeRankFactor;Array.from(H).forEach((L,G)=>{L===void 0&&G%ee!==0?--I:L!==void 0&&I&&L.forEach(R=>M.node(R).rank+=I)})}function m(M,D,X,H){let I={width:0,height:0};return arguments.length>=4&&(I.rank=X,I.order=H),n(M,"border",I,D)}function p(M,D=y){const X=[];for(let H=0;Hy){const X=p(D);return M.apply(null,X.map(H=>M.apply(null,H)))}else return M.apply(null,D)}function w(M){const X=M.nodes().map(H=>{let I=M.node(H).rank;return I===void 0?Number.MIN_VALUE:I});return v(Math.max,X)}function k(M,D){let X={lhs:[],rhs:[]};return M.forEach(H=>{D(H)?X.lhs.push(H):X.rhs.push(H)}),X}function S(M,D){let X=Date.now();try{return D()}finally{console.log(M+" time: "+(Date.now()-X)+"ms")}}function _(M,D){return D()}let z=0;function E(M){var D=++z;return M+(""+D)}function A(M,D,X=1){D==null&&(D=M,M=0);let H=ee=>eeDH[D]),Object.entries(M).reduce((H,[I,ee])=>(H[I]=X(ee,I),H),{})}function q(M,D){return M.reduce((X,H,I)=>(X[H]=D[I],X),{})}return Th}var zh,o1;function Sj(){if(o1)return zh;o1=1;let e=wj(),n=Ct().uniqueId;zh={run:i,undo:o};function i(s){(s.graph().acyclicer==="greedy"?e(s,f(s)):l(s)).forEach(d=>{let h=s.edge(d);s.removeEdge(d),h.forwardName=d.name,h.reversed=!0,s.setEdge(d.w,d.v,h,n("rev"))});function f(d){return h=>d.edge(h).weight}}function l(s){let u=[],f={},d={};function h(m){Object.hasOwn(d,m)||(d[m]=!0,f[m]=!0,s.outEdges(m).forEach(p=>{Object.hasOwn(f,p.w)?u.push(p):h(p.w)}),delete f[m])}return s.nodes().forEach(h),u}function o(s){s.edges().forEach(u=>{let f=s.edge(u);if(f.reversed){s.removeEdge(u);let d=f.forwardName;delete f.reversed,delete f.forwardName,s.setEdge(u.w,u.v,f,d)}})}return zh}var Ah,s1;function _j(){if(s1)return Ah;s1=1;let e=Ct();Ah={run:n,undo:l};function n(o){o.graph().dummyChains=[],o.edges().forEach(s=>i(o,s))}function i(o,s){let u=s.v,f=o.node(u).rank,d=s.w,h=o.node(d).rank,m=s.name,p=o.edge(s),y=p.labelRank;if(h===f+1)return;o.removeEdge(s);let v,w,k;for(k=0,++f;f{let u=o.node(s),f=u.edgeLabel,d;for(o.setEdge(u.edgeObj,f);u.dummy;)d=o.successors(s)[0],o.removeNode(s),f.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(f.x=u.x,f.y=u.y,f.width=u.width,f.height=u.height),s=d,u=o.node(s)})}return Ah}var Mh,u1;function rc(){if(u1)return Mh;u1=1;const{applyWithChunking:e}=Ct();Mh={longestPath:n,slack:i};function n(l){var o={};function s(u){var f=l.node(u);if(Object.hasOwn(o,u))return f.rank;o[u]=!0;let d=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:s(m.w)-l.edge(m).minlen);var h=e(Math.min,d);return h===Number.POSITIVE_INFINITY&&(h=0),f.rank=h}l.sources().forEach(s)}function i(l,o){return l.node(o.w).rank-l.node(o.v).rank-l.edge(o).minlen}return Mh}var jh,c1;function qS(){if(c1)return jh;c1=1;var e=Vn().Graph,n=rc().slack;jh=i;function i(u){var f=new e({directed:!1}),d=u.nodes()[0],h=u.nodeCount();f.setNode(d,{});for(var m,p;l(f,u){var p=m.v,y=h===p?m.w:p;!u.hasNode(y)&&!n(f,m)&&(u.setNode(y,{}),u.setEdge(h,y,{}),d(y))})}return u.nodes().forEach(d),u.nodeCount()}function o(u,f){return f.edges().reduce((h,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=n(f,m)),pf.node(h).rank+=d)}return jh}var Oh,f1;function Ej(){if(f1)return Oh;f1=1;var e=qS(),n=rc().slack,i=rc().longestPath,l=Vn().alg.preorder,o=Vn().alg.postorder,s=Ct().simplify;Oh=u,u.initLowLimValues=m,u.initCutValues=f,u.calcCutValue=h,u.leaveEdge=y,u.enterEdge=v,u.exchangeEdges=w;function u(z){z=s(z),i(z);var E=e(z);m(E),f(E,z);for(var A,B;A=y(E);)B=v(E,z,A),w(E,z,A,B)}function f(z,E){var A=o(z,z.nodes());A=A.slice(0,A.length-1),A.forEach(B=>d(z,E,B))}function d(z,E,A){var B=z.node(A),T=B.parent;z.edge(A,T).cutvalue=h(z,E,A)}function h(z,E,A){var B=z.node(A),T=B.parent,q=!0,M=E.edge(A,T),D=0;return M||(q=!1,M=E.edge(T,A)),D=M.weight,E.nodeEdges(A).forEach(X=>{var H=X.v===A,I=H?X.w:X.v;if(I!==T){var ee=H===q,L=E.edge(X).weight;if(D+=ee?L:-L,S(z,A,I)){var G=z.edge(A,I).cutvalue;D+=ee?-G:G}}}),D}function m(z,E){arguments.length<2&&(E=z.nodes()[0]),p(z,{},1,E)}function p(z,E,A,B,T){var q=A,M=z.node(B);return E[B]=!0,z.neighbors(B).forEach(D=>{Object.hasOwn(E,D)||(A=p(z,E,A,D,B))}),M.low=q,M.lim=A++,T?M.parent=T:delete M.parent,A}function y(z){return z.edges().find(E=>z.edge(E).cutvalue<0)}function v(z,E,A){var B=A.v,T=A.w;E.hasEdge(B,T)||(B=A.w,T=A.v);var q=z.node(B),M=z.node(T),D=q,X=!1;q.lim>M.lim&&(D=M,X=!0);var H=E.edges().filter(I=>X===_(z,z.node(I.v),D)&&X!==_(z,z.node(I.w),D));return H.reduce((I,ee)=>n(E,ee)!E.node(T).parent),B=l(z,A);B=B.slice(1),B.forEach(T=>{var q=z.node(T).parent,M=E.edge(T,q),D=!1;M||(M=E.edge(q,T),D=!0),E.node(T).rank=E.node(q).rank+(D?M.minlen:-M.minlen)})}function S(z,E,A){return z.hasEdge(E,A)}function _(z,E,A){return A.low<=E.lim&&E.lim<=A.lim}return Oh}var Rh,d1;function Nj(){if(d1)return Rh;d1=1;var e=rc(),n=e.longestPath,i=qS(),l=Ej();Rh=o;function o(d){var h=d.graph().ranker;if(h instanceof Function)return h(d);switch(d.graph().ranker){case"network-simplex":f(d);break;case"tight-tree":u(d);break;case"longest-path":s(d);break;case"none":break;default:f(d)}}var s=n;function u(d){n(d),i(d)}function f(d){l(d)}return Rh}var Dh,h1;function kj(){if(h1)return Dh;h1=1,Dh=e;function e(l){let o=i(l);l.graph().dummyChains.forEach(s=>{let u=l.node(s),f=u.edgeObj,d=n(l,o,f.v,f.w),h=d.path,m=d.lca,p=0,y=h[p],v=!0;for(;s!==f.w;){if(u=l.node(s),v){for(;(y=h[p])!==m&&l.node(y).maxRankh||m>o[p].lim));for(y=p,p=u;(p=l.parent(p))!==y;)d.push(p);return{path:f.concat(d.reverse()),lca:y}}function i(l){let o={},s=0;function u(f){let d=s;l.children(f).forEach(u),o[f]={low:d,lim:s++}}return l.children().forEach(u),o}return Dh}var Lh,p1;function Cj(){if(p1)return Lh;p1=1;let e=Ct();Lh={run:n,cleanup:s};function n(u){let f=e.addDummyNode(u,"root",{},"_root"),d=l(u),h=Object.values(d),m=e.applyWithChunking(Math.max,h)-1,p=2*m+1;u.graph().nestingRoot=f,u.edges().forEach(v=>u.edge(v).minlen*=p);let y=o(u)+1;u.children().forEach(v=>i(u,f,p,y,m,d,v)),u.graph().nodeRankFactor=p}function i(u,f,d,h,m,p,y){let v=u.children(y);if(!v.length){y!==f&&u.setEdge(f,y,{weight:0,minlen:d});return}let w=e.addBorderNode(u,"_bt"),k=e.addBorderNode(u,"_bb"),S=u.node(y);u.setParent(w,y),S.borderTop=w,u.setParent(k,y),S.borderBottom=k,v.forEach(_=>{i(u,f,d,h,m,p,_);let z=u.node(_),E=z.borderTop?z.borderTop:_,A=z.borderBottom?z.borderBottom:_,B=z.borderTop?h:2*h,T=E!==A?1:m-p[y]+1;u.setEdge(w,E,{weight:B,minlen:T,nestingEdge:!0}),u.setEdge(A,k,{weight:B,minlen:T,nestingEdge:!0})}),u.parent(y)||u.setEdge(f,w,{weight:0,minlen:m+p[y]})}function l(u){var f={};function d(h,m){var p=u.children(h);p&&p.length&&p.forEach(y=>d(y,m+1)),f[h]=m}return u.children().forEach(h=>d(h,1)),f}function o(u){return u.edges().reduce((f,d)=>f+u.edge(d).weight,0)}function s(u){var f=u.graph();u.removeNode(f.nestingRoot),delete f.nestingRoot,u.edges().forEach(d=>{var h=u.edge(d);h.nestingEdge&&u.removeEdge(d)})}return Lh}var Hh,m1;function Tj(){if(m1)return Hh;m1=1;let e=Ct();Hh=n;function n(l){function o(s){let u=l.children(s),f=l.node(s);if(u.length&&u.forEach(o),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let d=f.minRank,h=f.maxRank+1;dl(d.node(h))),d.edges().forEach(h=>l(d.edge(h)))}function l(d){let h=d.width;d.width=d.height,d.height=h}function o(d){d.nodes().forEach(h=>s(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(s),Object.hasOwn(m,"y")&&s(m)})}function s(d){d.y=-d.y}function u(d){d.nodes().forEach(h=>f(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(f),Object.hasOwn(m,"x")&&f(m)})}function f(d){let h=d.x;d.x=d.y,d.y=h}return Bh}var qh,y1;function Aj(){if(y1)return qh;y1=1;let e=Ct();qh=n;function n(i){let l={},o=i.nodes().filter(m=>!i.children(m).length),s=o.map(m=>i.node(m).rank),u=e.applyWithChunking(Math.max,s),f=e.range(u+1).map(()=>[]);function d(m){if(l[m])return;l[m]=!0;let p=i.node(m);f[p.rank].push(m),i.successors(m).forEach(d)}return o.sort((m,p)=>i.node(m).rank-i.node(p).rank).forEach(d),f}return qh}var Uh,x1;function Mj(){if(x1)return Uh;x1=1;let e=Ct().zipObject;Uh=n;function n(l,o){let s=0;for(let u=1;uv)),f=o.flatMap(y=>l.outEdges(y).map(v=>({pos:u[v.w],weight:l.edge(v).weight})).sort((v,w)=>v.pos-w.pos)),d=1;for(;d{let v=y.pos+d;m[v]+=y.weight;let w=0;for(;v>0;)v%2&&(w+=m[v+1]),v=v-1>>1,m[v]+=y.weight;p+=y.weight*w}),p}return Uh}var Ih,v1;function jj(){if(v1)return Ih;v1=1,Ih=e;function e(n,i=[]){return i.map(l=>{let o=n.inEdges(l);if(o.length){let s=o.reduce((u,f)=>{let d=n.edge(f),h=n.node(f.v);return{sum:u.sum+d.weight*h.order,weight:u.weight+d.weight}},{sum:0,weight:0});return{v:l,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:l}})}return Ih}var Vh,b1;function Oj(){if(b1)return Vh;b1=1;let e=Ct();Vh=n;function n(o,s){let u={};o.forEach((d,h)=>{let m=u[d.v]={indegree:0,in:[],out:[],vs:[d.v],i:h};d.barycenter!==void 0&&(m.barycenter=d.barycenter,m.weight=d.weight)}),s.edges().forEach(d=>{let h=u[d.v],m=u[d.w];h!==void 0&&m!==void 0&&(m.indegree++,h.out.push(u[d.w]))});let f=Object.values(u).filter(d=>!d.indegree);return i(f)}function i(o){let s=[];function u(d){return h=>{h.merged||(h.barycenter===void 0||d.barycenter===void 0||h.barycenter>=d.barycenter)&&l(d,h)}}function f(d){return h=>{h.in.push(d),--h.indegree===0&&o.push(h)}}for(;o.length;){let d=o.pop();s.push(d),d.in.reverse().forEach(u(d)),d.out.forEach(f(d))}return s.filter(d=>!d.merged).map(d=>e.pick(d,["vs","i","barycenter","weight"]))}function l(o,s){let u=0,f=0;o.weight&&(u+=o.barycenter*o.weight,f+=o.weight),s.weight&&(u+=s.barycenter*s.weight,f+=s.weight),o.vs=s.vs.concat(o.vs),o.barycenter=u/f,o.weight=f,o.i=Math.min(s.i,o.i),s.merged=!0}return Vh}var Yh,w1;function Rj(){if(w1)return Yh;w1=1;let e=Ct();Yh=n;function n(o,s){let u=e.partition(o,w=>Object.hasOwn(w,"barycenter")),f=u.lhs,d=u.rhs.sort((w,k)=>k.i-w.i),h=[],m=0,p=0,y=0;f.sort(l(!!s)),y=i(h,d,y),f.forEach(w=>{y+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,y=i(h,d,y)});let v={vs:h.flat(!0)};return p&&(v.barycenter=m/p,v.weight=p),v}function i(o,s,u){let f;for(;s.length&&(f=s[s.length-1]).i<=u;)s.pop(),o.push(f.vs),u++;return u}function l(o){return(s,u)=>s.barycenteru.barycenter?1:o?u.i-s.i:s.i-u.i}return Yh}var Gh,S1;function Dj(){if(S1)return Gh;S1=1;let e=jj(),n=Oj(),i=Rj();Gh=l;function l(u,f,d,h){let m=u.children(f),p=u.node(f),y=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,w={};y&&(m=m.filter(z=>z!==y&&z!==v));let k=e(u,m);k.forEach(z=>{if(u.children(z.v).length){let E=l(u,z.v,d,h);w[z.v]=E,Object.hasOwn(E,"barycenter")&&s(z,E)}});let S=n(k,d);o(S,w);let _=i(S,h);if(y&&(_.vs=[y,_.vs,v].flat(!0),u.predecessors(y).length)){let z=u.node(u.predecessors(y)[0]),E=u.node(u.predecessors(v)[0]);Object.hasOwn(_,"barycenter")||(_.barycenter=0,_.weight=0),_.barycenter=(_.barycenter*_.weight+z.order+E.order)/(_.weight+2),_.weight+=2}return _}function o(u,f){u.forEach(d=>{d.vs=d.vs.flatMap(h=>f[h]?f[h].vs:h)})}function s(u,f){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+f.barycenter*f.weight)/(u.weight+f.weight),u.weight+=f.weight):(u.barycenter=f.barycenter,u.weight=f.weight)}return Gh}var $h,_1;function Lj(){if(_1)return $h;_1=1;let e=Vn().Graph,n=Ct();$h=i;function i(o,s,u,f){f||(f=o.nodes());let d=l(o),h=new e({compound:!0}).setGraph({root:d}).setDefaultNodeLabel(m=>o.node(m));return f.forEach(m=>{let p=o.node(m),y=o.parent(m);(p.rank===s||p.minRank<=s&&s<=p.maxRank)&&(h.setNode(m),h.setParent(m,y||d),o[u](m).forEach(v=>{let w=v.v===m?v.w:v.v,k=h.edge(w,m),S=k!==void 0?k.weight:0;h.setEdge(w,m,{weight:o.edge(v).weight+S})}),Object.hasOwn(p,"minRank")&&h.setNode(m,{borderLeft:p.borderLeft[s],borderRight:p.borderRight[s]}))}),h}function l(o){for(var s;o.hasNode(s=n.uniqueId("_root")););return s}return $h}var Xh,E1;function Hj(){if(E1)return Xh;E1=1,Xh=e;function e(n,i,l){let o={},s;l.forEach(u=>{let f=n.parent(u),d,h;for(;f;){if(d=n.parent(f),d?(h=o[d],o[d]=f):(h=s,s=f),h&&h!==f){i.setEdge(h,f);return}f=d}})}return Xh}var Ph,N1;function Bj(){if(N1)return Ph;N1=1;let e=Aj(),n=Mj(),i=Dj(),l=Lj(),o=Hj(),s=Vn().Graph,u=Ct();Ph=f;function f(p,y){if(y&&typeof y.customOrder=="function"){y.customOrder(p,f);return}let v=u.maxRank(p),w=d(p,u.range(1,v+1),"inEdges"),k=d(p,u.range(v-1,-1,-1),"outEdges"),S=e(p);if(m(p,S),y&&y.disableOptimalOrderHeuristic)return;let _=Number.POSITIVE_INFINITY,z;for(let E=0,A=0;A<4;++E,++A){h(E%2?w:k,E%4>=2),S=u.buildLayerMatrix(p);let B=n(p,S);B<_&&(A=0,z=Object.assign({},S),_=B)}m(p,z)}function d(p,y,v){const w=new Map,k=(S,_)=>{w.has(S)||w.set(S,[]),w.get(S).push(_)};for(const S of p.nodes()){const _=p.node(S);if(typeof _.rank=="number"&&k(_.rank,S),typeof _.minRank=="number"&&typeof _.maxRank=="number")for(let z=_.minRank;z<=_.maxRank;z++)z!==_.rank&&k(z,S)}return y.map(function(S){return l(p,S,v,w.get(S)||[])})}function h(p,y){let v=new s;p.forEach(function(w){let k=w.graph().root,S=i(w,k,v,y);S.vs.forEach((_,z)=>w.node(_).order=z),o(w,v,S.vs)})}function m(p,y){Object.values(y).forEach(v=>v.forEach((w,k)=>p.node(w).order=k))}return Ph}var Fh,k1;function qj(){if(k1)return Fh;k1=1;let e=Vn().Graph,n=Ct();Fh={positionX:v,findType1Conflicts:i,findType2Conflicts:l,addConflict:s,hasConflict:u,verticalAlignment:f,horizontalCompaction:d,alignCoordinates:p,findSmallestWidthAlignment:m,balance:y};function i(S,_){let z={};function E(A,B){let T=0,q=0,M=A.length,D=B[B.length-1];return B.forEach((X,H)=>{let I=o(S,X),ee=I?S.node(I).order:M;(I||X===D)&&(B.slice(q,H+1).forEach(L=>{S.predecessors(L).forEach(G=>{let R=S.node(G),$=R.order;(${X=B[H],S.node(X).dummy&&S.predecessors(X).forEach(I=>{let ee=S.node(I);ee.dummy&&(ee.orderD)&&s(z,I,X)})})}function A(B,T){let q=-1,M,D=0;return T.forEach((X,H)=>{if(S.node(X).dummy==="border"){let I=S.predecessors(X);I.length&&(M=S.node(I[0]).order,E(T,D,H,q,M),D=H,q=M)}E(T,D,T.length,M,B.length)}),T}return _.length&&_.reduce(A),z}function o(S,_){if(S.node(_).dummy)return S.predecessors(_).find(z=>S.node(z).dummy)}function s(S,_,z){if(_>z){let A=_;_=z,z=A}let E=S[_];E||(S[_]=E={}),E[z]=!0}function u(S,_,z){if(_>z){let E=_;_=z,z=E}return!!S[_]&&Object.hasOwn(S[_],z)}function f(S,_,z,E){let A={},B={},T={};return _.forEach(q=>{q.forEach((M,D)=>{A[M]=M,B[M]=M,T[M]=D})}),_.forEach(q=>{let M=-1;q.forEach(D=>{let X=E(D);if(X.length){X=X.sort((I,ee)=>T[I]-T[ee]);let H=(X.length-1)/2;for(let I=Math.floor(H),ee=Math.ceil(H);I<=ee;++I){let L=X[I];B[D]===D&&MMath.max(I,B[ee.v]+T.edge(ee)),0)}function X(H){let I=T.outEdges(H).reduce((L,G)=>Math.min(L,B[G.w]-T.edge(G)),Number.POSITIVE_INFINITY),ee=S.node(H);I!==Number.POSITIVE_INFINITY&&ee.borderType!==q&&(B[H]=Math.max(B[H],I))}return M(D,T.predecessors.bind(T)),M(X,T.successors.bind(T)),Object.keys(E).forEach(H=>B[H]=B[z[H]]),B}function h(S,_,z,E){let A=new e,B=S.graph(),T=w(B.nodesep,B.edgesep,E);return _.forEach(q=>{let M;q.forEach(D=>{let X=z[D];if(A.setNode(X),M){var H=z[M],I=A.edge(H,X);A.setEdge(H,X,Math.max(T(S,D,M),I||0))}M=D})}),A}function m(S,_){return Object.values(_).reduce((z,E)=>{let A=Number.NEGATIVE_INFINITY,B=Number.POSITIVE_INFINITY;Object.entries(E).forEach(([q,M])=>{let D=k(S,q)/2;A=Math.max(M+D,A),B=Math.min(M-D,B)});const T=A-B;return T{["l","r"].forEach(T=>{let q=B+T,M=S[q];if(M===_)return;let D=Object.values(M),X=E-n.applyWithChunking(Math.min,D);T!=="l"&&(X=A-n.applyWithChunking(Math.max,D)),X&&(S[q]=n.mapValues(M,H=>H+X))})})}function y(S,_){return n.mapValues(S.ul,(z,E)=>{if(_)return S[_.toLowerCase()][E];{let A=Object.values(S).map(B=>B[E]).sort((B,T)=>B-T);return(A[1]+A[2])/2}})}function v(S){let _=n.buildLayerMatrix(S),z=Object.assign(i(S,_),l(S,_)),E={},A;["u","d"].forEach(T=>{A=T==="u"?_:Object.values(_).reverse(),["l","r"].forEach(q=>{q==="r"&&(A=A.map(H=>Object.values(H).reverse()));let M=(T==="u"?S.predecessors:S.successors).bind(S),D=f(S,A,z,M),X=d(S,A,D.root,D.align,q==="r");q==="r"&&(X=n.mapValues(X,H=>-H)),E[T+q]=X})});let B=m(S,E);return p(E,B),y(E,S.graph().align)}function w(S,_,z){return(E,A,B)=>{let T=E.node(A),q=E.node(B),M=0,D;if(M+=T.width/2,Object.hasOwn(T,"labelpos"))switch(T.labelpos.toLowerCase()){case"l":D=-T.width/2;break;case"r":D=T.width/2;break}if(D&&(M+=z?D:-D),D=0,M+=(T.dummy?_:S)/2,M+=(q.dummy?_:S)/2,M+=q.width/2,Object.hasOwn(q,"labelpos"))switch(q.labelpos.toLowerCase()){case"l":D=q.width/2;break;case"r":D=-q.width/2;break}return D&&(M+=z?D:-D),D=0,M}}function k(S,_){return S.node(_).width}return Fh}var Qh,C1;function Uj(){if(C1)return Qh;C1=1;let e=Ct(),n=qj().positionX;Qh=i;function i(o){o=e.asNonCompoundGraph(o),l(o),Object.entries(n(o)).forEach(([s,u])=>o.node(s).x=u)}function l(o){let s=e.buildLayerMatrix(o),u=o.graph().ranksep,f=0;s.forEach(d=>{const h=d.reduce((m,p)=>{const y=o.node(p).height;return m>y?m:y},0);d.forEach(m=>o.node(m).y=f+h/2),f+=h+u})}return Qh}var Zh,T1;function Ij(){if(T1)return Zh;T1=1;let e=Sj(),n=_j(),i=Nj(),l=Ct().normalizeRanks,o=kj(),s=Ct().removeEmptyRanks,u=Cj(),f=Tj(),d=zj(),h=Bj(),m=Uj(),p=Ct(),y=Vn().Graph;Zh=v;function v(N,Y){let F=Y&&Y.debugTiming?p.time:p.notime;F("layout",()=>{let K=F(" buildLayoutGraph",()=>M(N));F(" runLayout",()=>w(K,F,Y)),F(" updateInputGraph",()=>k(N,K))})}function w(N,Y,F){Y(" makeSpaceForEdgeLabels",()=>D(N)),Y(" removeSelfEdges",()=>Z(N)),Y(" acyclic",()=>e.run(N)),Y(" nestingGraph.run",()=>u.run(N)),Y(" rank",()=>i(p.asNonCompoundGraph(N))),Y(" injectEdgeLabelProxies",()=>X(N)),Y(" removeEmptyRanks",()=>s(N)),Y(" nestingGraph.cleanup",()=>u.cleanup(N)),Y(" normalizeRanks",()=>l(N)),Y(" assignRankMinMax",()=>H(N)),Y(" removeEdgeLabelProxies",()=>I(N)),Y(" normalize.run",()=>n.run(N)),Y(" parentDummyChains",()=>o(N)),Y(" addBorderSegments",()=>f(N)),Y(" order",()=>h(N,F)),Y(" insertSelfEdges",()=>J(N)),Y(" adjustCoordinateSystem",()=>d.adjust(N)),Y(" position",()=>m(N)),Y(" positionSelfEdges",()=>j(N)),Y(" removeBorderNodes",()=>$(N)),Y(" normalize.undo",()=>n.undo(N)),Y(" fixupEdgeLabelCoords",()=>G(N)),Y(" undoCoordinateSystem",()=>d.undo(N)),Y(" translateGraph",()=>ee(N)),Y(" assignNodeIntersects",()=>L(N)),Y(" reversePoints",()=>R(N)),Y(" acyclic.undo",()=>e.undo(N))}function k(N,Y){N.nodes().forEach(F=>{let K=N.node(F),ne=Y.node(F);K&&(K.x=ne.x,K.y=ne.y,K.rank=ne.rank,Y.children(F).length&&(K.width=ne.width,K.height=ne.height))}),N.edges().forEach(F=>{let K=N.edge(F),ne=Y.edge(F);K.points=ne.points,Object.hasOwn(ne,"x")&&(K.x=ne.x,K.y=ne.y)}),N.graph().width=Y.graph().width,N.graph().height=Y.graph().height}let S=["nodesep","edgesep","ranksep","marginx","marginy"],_={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},z=["acyclicer","ranker","rankdir","align"],E=["width","height","rank"],A={width:0,height:0},B=["minlen","weight","width","height","labeloffset"],T={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},q=["labelpos"];function M(N){let Y=new y({multigraph:!0,compound:!0}),F=P(N.graph());return Y.setGraph(Object.assign({},_,U(F,S),p.pick(F,z))),N.nodes().forEach(K=>{let ne=P(N.node(K));const re=U(ne,E);Object.keys(A).forEach(se=>{re[se]===void 0&&(re[se]=A[se])}),Y.setNode(K,re),Y.setParent(K,N.parent(K))}),N.edges().forEach(K=>{let ne=P(N.edge(K));Y.setEdge(K,Object.assign({},T,U(ne,B),p.pick(ne,q)))}),Y}function D(N){let Y=N.graph();Y.ranksep/=2,N.edges().forEach(F=>{let K=N.edge(F);K.minlen*=2,K.labelpos.toLowerCase()!=="c"&&(Y.rankdir==="TB"||Y.rankdir==="BT"?K.width+=K.labeloffset:K.height+=K.labeloffset)})}function X(N){N.edges().forEach(Y=>{let F=N.edge(Y);if(F.width&&F.height){let K=N.node(Y.v),re={rank:(N.node(Y.w).rank-K.rank)/2+K.rank,e:Y};p.addDummyNode(N,"edge-proxy",re,"_ep")}})}function H(N){let Y=0;N.nodes().forEach(F=>{let K=N.node(F);K.borderTop&&(K.minRank=N.node(K.borderTop).rank,K.maxRank=N.node(K.borderBottom).rank,Y=Math.max(Y,K.maxRank))}),N.graph().maxRank=Y}function I(N){N.nodes().forEach(Y=>{let F=N.node(Y);F.dummy==="edge-proxy"&&(N.edge(F.e).labelRank=F.rank,N.removeNode(Y))})}function ee(N){let Y=Number.POSITIVE_INFINITY,F=0,K=Number.POSITIVE_INFINITY,ne=0,re=N.graph(),se=re.marginx||0,ye=re.marginy||0;function ve(xe){let pe=xe.x,_e=xe.y,Me=xe.width,Ce=xe.height;Y=Math.min(Y,pe-Me/2),F=Math.max(F,pe+Me/2),K=Math.min(K,_e-Ce/2),ne=Math.max(ne,_e+Ce/2)}N.nodes().forEach(xe=>ve(N.node(xe))),N.edges().forEach(xe=>{let pe=N.edge(xe);Object.hasOwn(pe,"x")&&ve(pe)}),Y-=se,K-=ye,N.nodes().forEach(xe=>{let pe=N.node(xe);pe.x-=Y,pe.y-=K}),N.edges().forEach(xe=>{let pe=N.edge(xe);pe.points.forEach(_e=>{_e.x-=Y,_e.y-=K}),Object.hasOwn(pe,"x")&&(pe.x-=Y),Object.hasOwn(pe,"y")&&(pe.y-=K)}),re.width=F-Y+se,re.height=ne-K+ye}function L(N){N.edges().forEach(Y=>{let F=N.edge(Y),K=N.node(Y.v),ne=N.node(Y.w),re,se;F.points?(re=F.points[0],se=F.points[F.points.length-1]):(F.points=[],re=ne,se=K),F.points.unshift(p.intersectRect(K,re)),F.points.push(p.intersectRect(ne,se))})}function G(N){N.edges().forEach(Y=>{let F=N.edge(Y);if(Object.hasOwn(F,"x"))switch((F.labelpos==="l"||F.labelpos==="r")&&(F.width-=F.labeloffset),F.labelpos){case"l":F.x-=F.width/2+F.labeloffset;break;case"r":F.x+=F.width/2+F.labeloffset;break}})}function R(N){N.edges().forEach(Y=>{let F=N.edge(Y);F.reversed&&F.points.reverse()})}function $(N){N.nodes().forEach(Y=>{if(N.children(Y).length){let F=N.node(Y),K=N.node(F.borderTop),ne=N.node(F.borderBottom),re=N.node(F.borderLeft[F.borderLeft.length-1]),se=N.node(F.borderRight[F.borderRight.length-1]);F.width=Math.abs(se.x-re.x),F.height=Math.abs(ne.y-K.y),F.x=re.x+F.width/2,F.y=K.y+F.height/2}}),N.nodes().forEach(Y=>{N.node(Y).dummy==="border"&&N.removeNode(Y)})}function Z(N){N.edges().forEach(Y=>{if(Y.v===Y.w){var F=N.node(Y.v);F.selfEdges||(F.selfEdges=[]),F.selfEdges.push({e:Y,label:N.edge(Y)}),N.removeEdge(Y)}})}function J(N){var Y=p.buildLayerMatrix(N);Y.forEach(F=>{var K=0;F.forEach((ne,re)=>{var se=N.node(ne);se.order=re+K,(se.selfEdges||[]).forEach(ye=>{p.addDummyNode(N,"selfedge",{width:ye.label.width,height:ye.label.height,rank:se.rank,order:re+ ++K,e:ye.e,label:ye.label},"_se")}),delete se.selfEdges})})}function j(N){N.nodes().forEach(Y=>{var F=N.node(Y);if(F.dummy==="selfedge"){var K=N.node(F.e.v),ne=K.x+K.width/2,re=K.y,se=F.x-ne,ye=K.height/2;N.setEdge(F.e,F.label),N.removeNode(Y),F.label.points=[{x:ne+2*se/3,y:re-ye},{x:ne+5*se/6,y:re-ye},{x:ne+se,y:re},{x:ne+5*se/6,y:re+ye},{x:ne+2*se/3,y:re+ye}],F.label.x=F.x,F.label.y=F.y}})}function U(N,Y){return p.mapValues(p.pick(N,Y),Number)}function P(N){var Y={};return N&&Object.entries(N).forEach(([F,K])=>{typeof F=="string"&&(F=F.toLowerCase()),Y[F]=K}),Y}return Zh}var Kh,z1;function Vj(){if(z1)return Kh;z1=1;let e=Ct(),n=Vn().Graph;Kh={debugOrdering:i};function i(l){let o=e.buildLayerMatrix(l),s=new n({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{s.setNode(u,{label:u}),s.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>s.setEdge(u.v,u.w,{},u.name)),o.forEach((u,f)=>{let d="layer"+f;s.setNode(d,{rank:"same"}),u.reduce((h,m)=>(s.setEdge(h,m,{style:"invis"}),m))}),s}return Kh}var Jh,A1;function Yj(){return A1||(A1=1,Jh="1.1.8"),Jh}var Wh,M1;function Gj(){return M1||(M1=1,Wh={graphlib:Vn(),layout:Ij(),debug:Vj(),util:{time:Ct().time,notime:Ct().notime},version:Yj()}),Wh}var $j=Gj();const j1=Lo($j),yo=200,Gl=56,O1=20,R1=40,Xj=20,D1=12;function Pj(e,n,i,l,o,s,u){const f=[],d=[],h=new Set,m=new Set,p=new Map;for(const v of i)for(const w of v.agents)m.add(w),p.set(w,v.name);for(const v of i){const w=o[v.name],k=v.agents.length,S=yo+O1*2,_=R1+k*Gl+(k-1)*D1+Xj;f.push({id:v.name,type:"groupNode",position:{x:0,y:0},data:{label:v.name,type:"parallel_group",status:(w==null?void 0:w.status)||"pending",groupName:v.name,progress:s[v.name]},style:{width:S,height:_}});for(let z=0;z$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}for(const v of n)d.push({id:`${v.from}->${v.to}`,source:v.from,target:v.to,type:"animatedEdge",data:{when:v.when},animated:!1});return Fj(f,d),{nodes:f,edges:d}}function Fj(e,n){var l,o,s,u;const i=new j1.graphlib.Graph;i.setDefaultEdgeLabel(()=>({})),i.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const f of e){if(f.parentId)continue;const d=f.type==="groupNode",h=d&&((l=f.style)==null?void 0:l.width)||yo,m=d&&((o=f.style)==null?void 0:o.height)||Gl;i.setNode(f.id,{width:h,height:m})}for(const f of n)i.hasNode(f.source)&&i.hasNode(f.target)&&i.setEdge(f.source,f.target);j1.layout(i);for(const f of e){if(f.parentId)continue;const d=i.node(f.id);if(!d)continue;const h=f.type==="groupNode",m=h&&((s=f.style)==null?void 0:s.width)||yo,p=h&&((u=f.style)==null?void 0:u.height)||Gl;f.position={x:d.x-m/2,y:d.y-p/2}}}const lt={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},Qj=70,L1=90;function dm({data:e,children:n}){const[i,l]=V.useState(!1),o=V.useRef(null),s=V.useCallback(()=>{o.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{o.current&&clearTimeout(o.current),l(!1)},[]),f=lt[e.status]||lt.pending;return b.jsxs("div",{className:"relative",onMouseEnter:s,onMouseLeave:u,children:[n,i&&b.jsxs("div",{className:Ye("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[b.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),b.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:f}}),b.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&b.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:ln(e.elapsed)})]}),e.model&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),b.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Wn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&b.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Wn(e.inputTokens),"↑ ",Wn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:Zl(e.costUsd)})]}),e.exitCode!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),b.jsx("span",{className:Ye("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&b.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),b.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const Zj=V.memo(function({data:n,id:i,selected:l}){const o=n,u=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.status})||o.status||"pending",f=lt[u]||lt.pending,d=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.elapsed}),h=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.model}),m=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.tokens}),p=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.input_tokens}),y=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.output_tokens}),v=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.cost_usd}),w=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.iteration}),k=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.error_type}),S=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.error_message}),_=he(B=>{var T;return(T=B.nodes[i])==null?void 0:T.context_pct}),z=Kj(i,u),E=Jj(u),A=(()=>{if(u==="failed"&&S)return{text:S.length>40?S.slice(0,37)+"...":S,className:"text-red-400"};if(u==="running")return{text:z,className:"text-[var(--text-muted)]"};if(u==="completed"){const B=[];return d!=null&&B.push(ln(d)),m!=null&&B.push(`${Wn(m)} tok`),v!=null&&B.push(Zl(v)),{text:B.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:we.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(dm,{data:{status:u,elapsed:d,model:h,tokens:m,inputTokens:p,outputTokens:y,costUsd:v,iteration:w,errorType:k,errorMessage:S},children:b.jsxs("div",{className:Ye("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]",E),style:{borderColor:f},children:[b.jsx("div",{className:Ye("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx(G2,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:o.label}),w!=null&&w>1&&b.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${f}25`,color:f},children:["x",w]})]}),A.text&&b.jsx("span",{className:Ye("text-[10px] truncate leading-tight",A.className),children:A.text})]}),_!=null&&b.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:b.jsx("div",{className:Ye("h-full transition-all duration-500",_>=L1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(_,100)}%`,backgroundColor:_>=L1?"#ef4444":_>=Qj?"#f59e0b":"#22c55e"}})})]})}),b.jsx(an,{type:"source",position:we.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function Kj(e,n){const i=he(d=>{var h;return(h=d.nodes[e])==null?void 0:h.startedAt}),l=he(d=>d.replayMode),o=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const m=i??o??0;u(ln((o??m)-m));return}const d=i!=null?i*1e3:Date.now(),h=()=>{const m=(Date.now()-d)/1e3;u(ln(m))};return h(),f.current=setInterval(h,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,i,l,o]),s}function Jj(e){const n=V.useRef(e),[i,l]=V.useState("");return V.useEffect(()=>{const o=n.current;if(n.current=e,o===e)return;e==="running"?l("node-activate"):o==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),i}const Wj=V.memo(function({data:n,id:i,selected:l}){const o=n,u=he(k=>{var S;return(S=k.nodes[i])==null?void 0:S.status})||o.status||"pending",f=lt[u]||lt.pending,d=he(k=>{var S;return(S=k.nodes[i])==null?void 0:S.elapsed}),h=he(k=>{var S;return(S=k.nodes[i])==null?void 0:S.exit_code}),m=he(k=>{var S;return(S=k.nodes[i])==null?void 0:S.error_type}),p=he(k=>{var S;return(S=k.nodes[i])==null?void 0:S.error_message}),y=e4(i,u),v=t4(u),w=(()=>{if(u==="failed"&&p)return{text:p.length>40?p.slice(0,37)+"...":p,className:"text-red-400"};if(u==="running")return{text:y,className:"text-[var(--text-muted)]"};if(u==="completed"){const k=[];return d!=null&&k.push(ln(d)),h!=null&&k.push(`exit ${h}`),{text:k.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:we.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(dm,{data:{status:u,elapsed:d,exitCode:h,errorType:m,errorMessage:p},children:b.jsxs("div",{className:Ye("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]",v),style:{borderColor:f},children:[b.jsx("div",{className:Ye("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx(oN,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:o.label}),w.text&&b.jsx("span",{className:Ye("text-[10px] truncate leading-tight",w.className),children:w.text})]})]})}),b.jsx(an,{type:"source",position:we.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function e4(e,n){const i=he(d=>{var h;return(h=d.nodes[e])==null?void 0:h.startedAt}),l=he(d=>d.replayMode),o=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const m=i??o??0;u(ln((o??m)-m));return}const d=i!=null?i*1e3:Date.now(),h=()=>{const m=(Date.now()-d)/1e3;u(ln(m))};return h(),f.current=setInterval(h,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,i,l,o]),s}function t4(e){const n=V.useRef(e),[i,l]=V.useState("");return V.useEffect(()=>{const o=n.current;if(n.current=e,o===e)return;e==="running"?l("node-activate"):o==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),i}const n4=V.memo(function({data:n,id:i,selected:l}){const o=n,u=he(m=>{var p;return(p=m.nodes[i])==null?void 0:p.status})||o.status||"pending",f=lt[u]||lt.pending,d=he(m=>{var p;return(p=m.nodes[i])==null?void 0:p.selected_option}),h=r4(u);return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:we.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(dm,{data:{status:u,selectedOption:d},children:b.jsxs("div",{className:Ye("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]",h),style:{borderColor:f},children:[b.jsx("div",{className:Ye("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="waiting"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx(aN,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:o.label}),u==="waiting"&&b.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),u==="completed"&&d&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:d})]})]})}),b.jsx(an,{type:"source",position:we.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function r4(e){const n=V.useRef(e),[i,l]=V.useState("");return V.useEffect(()=>{const o=n.current;if(n.current=e,o===e)return;e==="running"||e==="waiting"?l("node-activate"):(o==="running"||o==="waiting")&&e==="completed"&&l("node-complete");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),i}const i4=V.memo(function({data:n,id:i,selected:l}){const o=n,u=o.type==="for_each_group"?rN:W2,f=o.progress,h=he(k=>{var S;return(S=k.nodes[i])==null?void 0:S.status})||o.status||"pending",m=lt[h]||lt.pending,p=l4(h),y=f?`${f.completed+f.failed}/${f.total}${f.failed>0?` (${f.failed} failed)`:""}`:null,v=f&&f.total>0?(f.completed+f.failed)/f.total*100:0,w=f!=null&&f.failed>0;return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:we.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsxs("div",{className:Ye("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",h==="running"&&"shadow-[0_0_16px_var(--running-glow)]",p),style:{borderColor:m,minHeight:"100%"},children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(u,{className:"w-3.5 h-3.5",style:{color:m}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:o.label})]}),y&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:y}),f&&f.total>0&&h==="running"&&b.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${v}%`,backgroundColor:w?"var(--failed)":"var(--completed)"}})})]}),b.jsx(an,{type:"source",position:we.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function l4(e){const n=V.useRef(e),[i,l]=V.useState("");return V.useEffect(()=>{const o=n.current;if(n.current=e,o===e)return;e==="running"?l("node-activate"):o==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),i}const a4=V.memo(function({data:n,selected:i}){const o=n.status||"pending",s=o==="completed",u=o==="failed",f=!s&&!u,d=s?lt.completed:u?lt.failed:lt.pending;return b.jsxs(b.Fragment,{children:[b.jsx(an,{type:"target",position:we.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx("div",{className:Ye("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",s?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",i&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:d},children:s?b.jsx(Bi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?b.jsx(Tb,{className:"w-3.5 h-3.5 text-white",fill:"white"}):b.jsx(Bi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:f?lt.pending:d}})})]})}),o4=V.memo(function({data:n,selected:i}){const o=n.status||"pending",s=lt[o]||lt.pending,u=o==="running"||o==="completed";return b.jsxs(b.Fragment,{children:[b.jsx("div",{className:Ye("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",i&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:s},children:b.jsx(Vp,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":s}})}),b.jsx(an,{type:"source",position:we.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),s4=V.memo(function({id:n,sourceX:i,sourceY:l,targetX:o,targetY:s,sourcePosition:u,targetPosition:f,source:d,target:h,data:m}){const p=he(D=>D.highlightedEdges),y=V.useMemo(()=>p.find(D=>D.from===d&&D.to===h),[p,d,h]),[v,w,k]=im({sourceX:i,sourceY:l,targetX:o,targetY:s,sourcePosition:u,targetPosition:f}),S=m==null?void 0:m.when,_=!!S,z=(y==null?void 0:y.state)==="taken",E=(y==null?void 0:y.state)==="highlighted",A=(y==null?void 0:y.state)==="failed";let B="var(--edge-color)",T=2,q;A?(B="var(--failed)",T=3):z?(B="var(--edge-taken)",T=3):E&&(B="var(--edge-active)",T=3),_&&!z&&!E&&!A&&(q="6 3");const M=A?"failed":z?"taken":E?"active":"default";return b.jsxs(b.Fragment,{children:[b.jsx(Xo,{id:n,path:v,style:{stroke:B,strokeWidth:T,strokeDasharray:q,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${M})`}),_&&b.jsx(MM,{children:b.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${k}px)`,pointerEvents:"all"},children:b.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:A?"var(--failed)":z?"var(--edge-taken)":"var(--surface)",color:A||z?"var(--bg)":"var(--text-muted)",border:`1px solid ${A?"var(--failed)":z?"var(--edge-taken)":"var(--border)"}`},title:S,children:S})})}),z&&b.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:b.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:v})}),A&&b.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:b.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:v})})]})});function u4(){const e=he(u=>u.workflowStatus),n=he(u=>u.workflowFailure),i=he(u=>u.workflowFailedAgent),l=he(u=>u.selectNode);if(e!=="failed"||!n)return null;const o=n.message||n.error_type||"Unknown error",s=n.error_type==="TimeoutError";return b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Ye("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[b.jsx(sN,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsxs("div",{className:"flex flex-col min-w-0",children:[b.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),b.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:o}),s&&n.current_agent&&b.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",n.current_agent]}),n.checkpoint_path&&b.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:n.checkpoint_path,children:["Checkpoint: ",n.checkpoint_path.split("/").pop()]})]}),i&&b.jsxs("button",{onClick:()=>l(i),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[b.jsx(Z2,{className:"w-3 h-3"}),"View"]})]})})}function c4(){const[e,n]=V.useState(!1),i=he(d=>d.workflowStatus),l=he(d=>d.totalCost),o=he(d=>d.totalTokens),s=he(d=>d.agentsCompleted),u=he(d=>d.agentsTotal),f=Ab();return i!=="completed"||e?null:b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Ye("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[b.jsx(X2,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),b.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[b.jsx("span",{children:f}),u>0&&b.jsxs("span",{children:[s,"/",u," agents"]}),o>0&&b.jsxs("span",{children:[Wn(o)," tok"]}),l>0&&b.jsx("span",{children:Zl(l)})]}),b.jsx("button",{onClick:()=>n(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:b.jsx(Bo,{className:"w-3.5 h-3.5"})})]})})}const f4={agentNode:Zj,scriptNode:Wj,gateNode:n4,groupNode:i4,endNode:a4,startNode:o4},d4={animatedEdge:s4},h4={type:"animatedEdge"};function p4(){return b.jsx("svg",{style:{position:"absolute",width:0,height:0},children:b.jsxs("defs",{children:[b.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),b.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),b.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),b.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function m4(){const e=he(M=>M.agents),n=he(M=>M.routes),i=he(M=>M.parallelGroups),l=he(M=>M.forEachGroups),o=he(M=>M.nodes),s=he(M=>M.groupProgress),u=he(M=>M.selectNode),f=he(M=>M.selectedNode),d=he(M=>M.workflowStatus),h=he(M=>M.entryPoint),m=he(M=>M.wsStatus),p=he(M=>M.workflowFailedAgent),[y,v,w]=jM([]),[k,S,_]=OM([]),z=V.useRef(!1);V.useEffect(()=>{if(e.length===0||z.current)return;z.current=!0;const{nodes:M,edges:D}=Pj(e,n,i,l,o,s,h);v(M),S(D)},[e,n,i,l,o,s,h,v,S]),V.useEffect(()=>{z.current&&v(M=>M.map(D=>{const X=o[D.id];if(!X)return D;const H=X.status||"pending",I=D.data.status;if(H!==I){const ee={...D.data,status:H};return D.data.groupName&&s[D.data.groupName]&&(ee.progress=s[D.data.groupName]),{...D,data:ee}}if(D.data.groupName&&s[D.data.groupName]){const ee=D.data.progress,L=s[D.data.groupName];if(L&&(!ee||ee.completed!==L.completed||ee.failed!==L.failed))return{...D,data:{...D.data,progress:L}}}return D}))},[o,s,v]);const E=V.useCallback((M,D)=>{D.type==="groupNode"&&D.data.type!=="for_each_group"||u(D.id)},[u]),A=V.useCallback(()=>{u(null)},[u]),B=V.useCallback(M=>{var X;const D=((X=M.data)==null?void 0:X.status)||"pending";return lt[D]||lt.pending},[]);V.useEffect(()=>{v(M=>M.map(D=>({...D,selected:D.id===f})))},[f,v]),V.useEffect(()=>{d==="failed"&&p&&u(p)},[d,p,u]);const T=d==="pending"&&e.length===0,q=(()=>{switch(m){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return b.jsxs("div",{className:"w-full h-full relative",children:[b.jsx(p4,{}),b.jsx(u4,{}),b.jsx(c4,{}),T&&b.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[b.jsxs("div",{className:"relative mb-3",children:[b.jsx(fN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),b.jsx(_o,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),b.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:q})]}),b.jsxs(zM,{nodes:y,edges:k,onNodesChange:w,onEdgesChange:_,onNodeClick:E,onPaneClick:A,nodeTypes:f4,edgeTypes:d4,defaultEdgeOptions:h4,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[b.jsx(BM,{variant:Tr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),b.jsx(ij,{nodeColor:B,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),b.jsx($M,{showInteractive:!1,children:b.jsx(g4,{})}),b.jsx(y4,{})]})]})}function g4(){const{fitView:e}=$o(),n=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return b.jsx("button",{onClick:n,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:b.jsx(tN,{className:"w-3.5 h-3.5"})})}function y4(){const{fitView:e}=$o();return V.useEffect(()=>{const n=i=>{var o;const l=(o=i.target)==null?void 0:o.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||i.key==="f"&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e]),null}function la({items:e}){const n=e.filter(i=>i.value!=null&&i.value!=="");return n.length===0?null:b.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:n.map(({label:i,value:l})=>b.jsxs("div",{className:"contents",children:[b.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:i}),b.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},i))})}function US(e){const n=[];return e.elapsed!=null&&n.push({label:"Elapsed",value:ln(e.elapsed)}),e.model&&n.push({label:"Model",value:e.model}),e.tokens!=null&&n.push({label:"Tokens",value:Wn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&n.push({label:"In / Out",value:`${Wn(e.input_tokens)} / ${Wn(e.output_tokens)}`}),e.cost_usd!=null&&n.push({label:"Cost",value:Zl(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&n.push({label:"Context",value:bN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&n.push({label:"Iteration",value:e.iteration}),e.error_type&&n.push({label:"Error",value:e.error_type}),e.error_message&&n.push({label:"Message",value:e.error_message}),n}function Pi({output:e,title:n="Output",defaultExpanded:i=!0,maxHeight:l="300px"}){const[o,s]=V.useState(i),[u,f]=V.useState(!1),d=zb(e);if(!d)return null;const h=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(d),f(!0),setTimeout(()=>f(!1),2e3)};return b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsxs("button",{onClick:()=>s(!o),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[o?b.jsx(Fi,{className:"w-3 h-3"}):b.jsx(ia,{className:"w-3 h-3"}),n]}),o&&b.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?b.jsx(Bi,{className:"w-3 h-3 text-[var(--completed)]"}):b.jsx(Cb,{className:"w-3 h-3"})})]}),o&&b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:h?b.jsx(x4,{text:d}):d})]})}function x4({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((i,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:i},l)}const o=i.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:o}},l)})})}function hm({activity:e,defaultExpanded:n=!0}){const[i,l]=V.useState(n),o=V.useRef(null);return V.useEffect(()=>{o.current&&i&&(o.current.scrollTop=o.current.scrollHeight)},[e.length,i]),e.length===0?null:b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("button",{onClick:()=>l(!i),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[i?b.jsx(Fi,{className:"w-3 h-3"}):b.jsx(ia,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),i&&b.jsx("div",{ref:o,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((s,u)=>b.jsx(v4,{entry:s},u))})]})}function v4({entry:e}){const n={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return b.jsxs("div",{className:Ye("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[b.jsxs("div",{className:"flex items-start gap-1.5",children:[b.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),b.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),b.jsx("span",{className:Ye("break-words",n[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&b.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function b4({node:e}){const n=e.status,i=lt[n]||lt.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${i}20`,color:i},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?b.jsx(H1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:n,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):b.jsxs(b.Fragment,{children:[b.jsx(la,{items:US(e)}),e.prompt&&b.jsx(Pi,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),b.jsx(hm,{activity:e.activity,defaultExpanded:n!=="completed"}),e.output!=null&&b.jsx(Pi,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(o=>b.jsx(H1,{label:`Iteration ${o.iteration}`,defaultExpanded:!1,status:n,snapshot:o},o.iteration))]})}function H1({label:e,defaultExpanded:n,snapshot:i,status:l}){const[o,s]=V.useState(n);return b.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[b.jsxs("button",{onClick:()=>s(!o),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[o?b.jsx(Fi,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(ia,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),i.elapsed!=null&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:w4(i.elapsed)})]}),o&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[b.jsx(la,{items:US(i)}),i.prompt&&b.jsx(Pi,{output:i.prompt,title:"Input / Prompt",defaultExpanded:!1}),b.jsx(hm,{activity:i.activity,defaultExpanded:n&&l!=="completed"}),i.output!=null&&b.jsx(Pi,{output:i.output,title:"Output",defaultExpanded:!0}),i.error_type&&b.jsxs("div",{className:"text-xs text-red-400",children:[b.jsx("span",{className:"font-semibold",children:i.error_type}),i.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",i.error_message]})]})]})]})}function w4(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),i=(e%60).toFixed(0);return`${n}m ${i}s`}function S4({node:e}){const n=e.status,i=lt[n]||lt.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:ln(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let o="";return e.stdout&&(o+=e.stdout),e.stderr&&(o+=(o?` - ---- stderr --- -`:"")+e.stderr),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${i}20`,color:i},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Script"})]}),b.jsx(la,{items:l}),o&&b.jsx(Pi,{output:o,title:"Output"})]})}function _4(e,n){const i={};return(e[e.length-1]===""?[...e,""]:e).join((i.padRight?" ":"")+","+(i.padLeft===!1?"":" ")).trim()}const E4=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,N4=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,k4={};function B1(e,n){return(k4.jsx?N4:E4).test(e)}const C4=/[ \t\n\f\r]/g;function T4(e){return typeof e=="object"?e.type==="text"?q1(e.value):!1:q1(e)}function q1(e){return e.replace(C4,"")===""}class Po{constructor(n,i,l){this.normal=i,this.property=n,l&&(this.space=l)}}Po.prototype.normal={};Po.prototype.property={};Po.prototype.space=void 0;function IS(e,n){const i={},l={};for(const o of e)Object.assign(i,o.property),Object.assign(l,o.normal);return new Po(i,l,n)}function jp(e){return e.toLowerCase()}class on{constructor(n,i){this.attribute=i,this.property=n}}on.prototype.attribute="";on.prototype.booleanish=!1;on.prototype.boolean=!1;on.prototype.commaOrSpaceSeparated=!1;on.prototype.commaSeparated=!1;on.prototype.defined=!1;on.prototype.mustUseProperty=!1;on.prototype.number=!1;on.prototype.overloadedBoolean=!1;on.prototype.property="";on.prototype.spaceSeparated=!1;on.prototype.space=void 0;let z4=0;const Oe=Qi(),kt=Qi(),Op=Qi(),me=Qi(),at=Qi(),Fl=Qi(),gn=Qi();function Qi(){return 2**++z4}const Rp=Object.freeze(Object.defineProperty({__proto__:null,boolean:Oe,booleanish:kt,commaOrSpaceSeparated:gn,commaSeparated:Fl,number:me,overloadedBoolean:Op,spaceSeparated:at},Symbol.toStringTag,{value:"Module"})),ep=Object.keys(Rp);class pm extends on{constructor(n,i,l,o){let s=-1;if(super(n,i),U1(this,"space",o),typeof l=="number")for(;++s4&&i.slice(0,4)==="data"&&R4.test(n)){if(n.charAt(4)==="-"){const s=n.slice(5).replace(I1,H4);l="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=n.slice(4);if(!I1.test(s)){let u=s.replace(O4,L4);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}o=pm}return new o(l,n)}function L4(e){return"-"+e.toLowerCase()}function H4(e){return e.charAt(1).toUpperCase()}const B4=IS([VS,A4,$S,XS,PS],"html"),mm=IS([VS,M4,$S,XS,PS],"svg");function q4(e){return e.join(" ").trim()}var Hl={},tp,V1;function U4(){if(V1)return tp;V1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,i=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,f=/^\s+|\s+$/g,d=` -`,h="/",m="*",p="",y="comment",v="declaration";function w(S,_){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];_=_||{};var z=1,E=1;function A(L){var G=L.match(n);G&&(z+=G.length);var R=L.lastIndexOf(d);E=~R?L.length-R:E+L.length}function B(){var L={line:z,column:E};return function(G){return G.position=new T(L),D(),G}}function T(L){this.start=L,this.end={line:z,column:E},this.source=_.source}T.prototype.content=S;function q(L){var G=new Error(_.source+":"+z+":"+E+": "+L);if(G.reason=L,G.filename=_.source,G.line=z,G.column=E,G.source=S,!_.silent)throw G}function M(L){var G=L.exec(S);if(G){var R=G[0];return A(R),S=S.slice(R.length),G}}function D(){M(i)}function X(L){var G;for(L=L||[];G=H();)G!==!1&&L.push(G);return L}function H(){var L=B();if(!(h!=S.charAt(0)||m!=S.charAt(1))){for(var G=2;p!=S.charAt(G)&&(m!=S.charAt(G)||h!=S.charAt(G+1));)++G;if(G+=2,p===S.charAt(G-1))return q("End of comment missing");var R=S.slice(2,G-2);return E+=2,A(R),S=S.slice(G),E+=2,L({type:y,comment:R})}}function I(){var L=B(),G=M(l);if(G){if(H(),!M(o))return q("property missing ':'");var R=M(s),$=L({type:v,property:k(G[0].replace(e,p)),value:R?k(R[0].replace(e,p)):p});return M(u),$}}function ee(){var L=[];X(L);for(var G;G=I();)G!==!1&&(L.push(G),X(L));return L}return D(),ee()}function k(S){return S?S.replace(f,p):p}return tp=w,tp}var Y1;function I4(){if(Y1)return Hl;Y1=1;var e=Hl&&Hl.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.default=i;const n=e(U4());function i(l,o){let s=null;if(!l||typeof l!="string")return s;const u=(0,n.default)(l),f=typeof o=="function";return u.forEach(d=>{if(d.type!=="declaration")return;const{property:h,value:m}=d;f?o(h,m,d):m&&(s=s||{},s[h]=m)}),s}return Hl}var oo={},G1;function V4(){if(G1)return oo;G1=1,Object.defineProperty(oo,"__esModule",{value:!0}),oo.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,i=/^[^-]+$/,l=/^-(webkit|moz|ms|o|khtml)-/,o=/^-(ms)-/,s=function(h){return!h||i.test(h)||e.test(h)},u=function(h,m){return m.toUpperCase()},f=function(h,m){return"".concat(m,"-")},d=function(h,m){return m===void 0&&(m={}),s(h)?h:(h=h.toLowerCase(),m.reactCompat?h=h.replace(o,f):h=h.replace(l,f),h.replace(n,u))};return oo.camelCase=d,oo}var so,$1;function Y4(){if($1)return so;$1=1;var e=so&&so.__importDefault||function(o){return o&&o.__esModule?o:{default:o}},n=e(I4()),i=V4();function l(o,s){var u={};return!o||typeof o!="string"||(0,n.default)(o,function(f,d){f&&d&&(u[(0,i.camelCase)(f,s)]=d)}),u}return l.default=l,so=l,so}var G4=Y4();const $4=Lo(G4),FS=QS("end"),gm=QS("start");function QS(e){return n;function n(i){const l=i&&i.position&&i.position[e]||{};if(typeof l.line=="number"&&l.line>0&&typeof l.column=="number"&&l.column>0)return{line:l.line,column:l.column,offset:typeof l.offset=="number"&&l.offset>-1?l.offset:void 0}}}function X4(e){const n=gm(e),i=FS(e);if(n&&i)return{start:n,end:i}}function bo(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?X1(e.position):"start"in e||"end"in e?X1(e):"line"in e||"column"in e?Dp(e):""}function Dp(e){return P1(e&&e.line)+":"+P1(e&&e.column)}function X1(e){return Dp(e&&e.start)+"-"+Dp(e&&e.end)}function P1(e){return e&&typeof e=="number"?e:1}class Gt extends Error{constructor(n,i,l){super(),typeof i=="string"&&(l=i,i=void 0);let o="",s={},u=!1;if(i&&("line"in i&&"column"in i?s={place:i}:"start"in i&&"end"in i?s={place:i}:"type"in i?s={ancestors:[i],place:i.position}:s={...i}),typeof n=="string"?o=n:!s.cause&&n&&(u=!0,o=n.message,s.cause=n),!s.ruleId&&!s.source&&typeof l=="string"){const d=l.indexOf(":");d===-1?s.ruleId=l:(s.source=l.slice(0,d),s.ruleId=l.slice(d+1))}if(!s.place&&s.ancestors&&s.ancestors){const d=s.ancestors[s.ancestors.length-1];d&&(s.place=d.position)}const f=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=f?f.column:void 0,this.fatal=void 0,this.file="",this.message=o,this.line=f?f.line:void 0,this.name=bo(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=u&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Gt.prototype.file="";Gt.prototype.name="";Gt.prototype.reason="";Gt.prototype.message="";Gt.prototype.stack="";Gt.prototype.column=void 0;Gt.prototype.line=void 0;Gt.prototype.ancestors=void 0;Gt.prototype.cause=void 0;Gt.prototype.fatal=void 0;Gt.prototype.place=void 0;Gt.prototype.ruleId=void 0;Gt.prototype.source=void 0;const ym={}.hasOwnProperty,P4=new Map,F4=/[A-Z]/g,Q4=new Set(["table","tbody","thead","tfoot","tr"]),Z4=new Set(["td","th"]),ZS="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function K4(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const i=n.filePath||void 0;let l;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");l=l5(i,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");l=i5(i,n.jsx,n.jsxs)}const o={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:l,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:i,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?mm:B4,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},s=KS(o,e,void 0);return s&&typeof s!="string"?s:o.create(e,o.Fragment,{children:s||void 0},void 0)}function KS(e,n,i){if(n.type==="element")return J4(e,n,i);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return W4(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return t5(e,n,i);if(n.type==="mdxjsEsm")return e5(e,n);if(n.type==="root")return n5(e,n,i);if(n.type==="text")return r5(e,n)}function J4(e,n,i){const l=e.schema;let o=l;n.tagName.toLowerCase()==="svg"&&l.space==="html"&&(o=mm,e.schema=o),e.ancestors.push(n);const s=WS(e,n.tagName,!1),u=a5(e,n);let f=vm(e,n);return Q4.has(n.tagName)&&(f=f.filter(function(d){return typeof d=="string"?!T4(d):!0})),JS(e,u,s,n),xm(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,i)}function W4(e,n){if(n.data&&n.data.estree&&e.evaluater){const l=n.data.estree.body[0];return l.type,e.evaluater.evaluateExpression(l.expression)}Do(e,n.position)}function e5(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);Do(e,n.position)}function t5(e,n,i){const l=e.schema;let o=l;n.name==="svg"&&l.space==="html"&&(o=mm,e.schema=o),e.ancestors.push(n);const s=n.name===null?e.Fragment:WS(e,n.name,!0),u=o5(e,n),f=vm(e,n);return JS(e,u,s,n),xm(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,i)}function n5(e,n,i){const l={};return xm(l,vm(e,n)),e.create(n,e.Fragment,l,i)}function r5(e,n){return n.value}function JS(e,n,i,l){typeof i!="string"&&i!==e.Fragment&&e.passNode&&(n.node=l)}function xm(e,n){if(n.length>0){const i=n.length>1?n:n[0];i&&(e.children=i)}}function i5(e,n,i){return l;function l(o,s,u,f){const h=Array.isArray(u.children)?i:n;return f?h(s,u,f):h(s,u)}}function l5(e,n){return i;function i(l,o,s,u){const f=Array.isArray(s.children),d=gm(l);return n(o,s,u,f,{columnNumber:d?d.column-1:void 0,fileName:e,lineNumber:d?d.line:void 0},void 0)}}function a5(e,n){const i={};let l,o;for(o in n.properties)if(o!=="children"&&ym.call(n.properties,o)){const s=s5(e,o,n.properties[o]);if(s){const[u,f]=s;e.tableCellAlignToStyle&&u==="align"&&typeof f=="string"&&Z4.has(n.tagName)?l=f:i[u]=f}}if(l){const s=i.style||(i.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=l}return i}function o5(e,n){const i={};for(const l of n.attributes)if(l.type==="mdxJsxExpressionAttribute")if(l.data&&l.data.estree&&e.evaluater){const s=l.data.estree.body[0];s.type;const u=s.expression;u.type;const f=u.properties[0];f.type,Object.assign(i,e.evaluater.evaluateExpression(f.argument))}else Do(e,n.position);else{const o=l.name;let s;if(l.value&&typeof l.value=="object")if(l.value.data&&l.value.data.estree&&e.evaluater){const f=l.value.data.estree.body[0];f.type,s=e.evaluater.evaluateExpression(f.expression)}else Do(e,n.position);else s=l.value===null?!0:l.value;i[o]=s}return i}function vm(e,n){const i=[];let l=-1;const o=e.passKeys?new Map:P4;for(;++lo?0:o+n:n=n>o?o:n,i=i>0?i:0,l.length<1e4)u=Array.from(l),u.unshift(n,i),e.splice(...u);else for(i&&e.splice(n,i);s0?(nr(e,e.length,0,n),e):n}const Z1={}.hasOwnProperty;function g5(e){const n={};let i=-1;for(;++i13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"�":String.fromCodePoint(i)}function Ql(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Jn=di(/[A-Za-z]/),vn=di(/[\dA-Za-z]/),v5=di(/[#-'*+\--9=?A-Z^-~]/);function Lp(e){return e!==null&&(e<32||e===127)}const Hp=di(/\d/),b5=di(/[\dA-Fa-f]/),w5=di(/[!-/:-@[-`{-~]/);function Te(e){return e!==null&&e<-2}function rn(e){return e!==null&&(e<0||e===32)}function Qe(e){return e===-2||e===-1||e===32}const S5=di(new RegExp("\\p{P}|\\p{S}","u")),_5=di(/\s/);function di(e){return n;function n(i){return i!==null&&i>-1&&e.test(String.fromCharCode(i))}}function oa(e){const n=[];let i=-1,l=0,o=0;for(;++i55295&&s<57344){const f=e.charCodeAt(i+1);s<56320&&f>56319&&f<57344?(u=String.fromCharCode(s,f),o=1):u="�"}else u=String.fromCharCode(s);u&&(n.push(e.slice(l,i),encodeURIComponent(u)),l=i+o+1,u=""),o&&(i+=o,o=0)}return n.join("")+e.slice(l)}function ot(e,n,i,l){const o=l?l-1:Number.POSITIVE_INFINITY;let s=0;return u;function u(d){return Qe(d)?(e.enter(i),f(d)):n(d)}function f(d){return Qe(d)&&s++u))return;const q=n.events.length;let M=q,D,X;for(;M--;)if(n.events[M][0]==="exit"&&n.events[M][1].type==="chunkFlow"){if(D){X=n.events[M][1].end;break}D=!0}for(_(l),T=q;TE;){const B=i[A];n.containerState=B[1],B[0].exit.call(n,e)}i.length=E}function z(){o.write([null]),s=void 0,o=void 0,n.containerState._closeFlow=void 0}}function T5(e,n,i){return ot(e,e.attempt(this.parser.constructs.document,n,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function J1(e){if(e===null||rn(e)||_5(e))return 1;if(S5(e))return 2}function wm(e,n,i){const l=[];let o=-1;for(;++o1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;const p={...e[l][1].end},y={...e[i][1].start};W1(p,-d),W1(y,d),u={type:d>1?"strongSequence":"emphasisSequence",start:p,end:{...e[l][1].end}},f={type:d>1?"strongSequence":"emphasisSequence",start:{...e[i][1].start},end:y},s={type:d>1?"strongText":"emphasisText",start:{...e[l][1].end},end:{...e[i][1].start}},o={type:d>1?"strong":"emphasis",start:{...u.start},end:{...f.end}},e[l][1].end={...u.start},e[i][1].start={...f.end},h=[],e[l][1].end.offset-e[l][1].start.offset&&(h=An(h,[["enter",e[l][1],n],["exit",e[l][1],n]])),h=An(h,[["enter",o,n],["enter",u,n],["exit",u,n],["enter",s,n]]),h=An(h,wm(n.parser.constructs.insideSpan.null,e.slice(l+1,i),n)),h=An(h,[["exit",s,n],["enter",f,n],["exit",f,n],["exit",o,n]]),e[i][1].end.offset-e[i][1].start.offset?(m=2,h=An(h,[["enter",e[i][1],n],["exit",e[i][1],n]])):m=0,nr(e,l-1,i-l+3,h),i=l+h.length-m-2;break}}for(i=-1;++i0&&Qe(T)?ot(e,z,"linePrefix",s+1)(T):z(T)}function z(T){return T===null||Te(T)?e.check(eb,k,A)(T):(e.enter("codeFlowValue"),E(T))}function E(T){return T===null||Te(T)?(e.exit("codeFlowValue"),z(T)):(e.consume(T),E)}function A(T){return e.exit("codeFenced"),n(T)}function B(T,q,M){let D=0;return X;function X(G){return T.enter("lineEnding"),T.consume(G),T.exit("lineEnding"),H}function H(G){return T.enter("codeFencedFence"),Qe(G)?ot(T,I,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(G):I(G)}function I(G){return G===f?(T.enter("codeFencedFenceSequence"),ee(G)):M(G)}function ee(G){return G===f?(D++,T.consume(G),ee):D>=u?(T.exit("codeFencedFenceSequence"),Qe(G)?ot(T,L,"whitespace")(G):L(G)):M(G)}function L(G){return G===null||Te(G)?(T.exit("codeFencedFence"),q(G)):M(G)}}}function U5(e,n,i){const l=this;return o;function o(u){return u===null?i(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s)}function s(u){return l.parser.lazy[l.now().line]?i(u):n(u)}}const rp={name:"codeIndented",tokenize:V5},I5={partial:!0,tokenize:Y5};function V5(e,n,i){const l=this;return o;function o(h){return e.enter("codeIndented"),ot(e,s,"linePrefix",5)(h)}function s(h){const m=l.events[l.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?u(h):i(h)}function u(h){return h===null?d(h):Te(h)?e.attempt(I5,u,d)(h):(e.enter("codeFlowValue"),f(h))}function f(h){return h===null||Te(h)?(e.exit("codeFlowValue"),u(h)):(e.consume(h),f)}function d(h){return e.exit("codeIndented"),n(h)}}function Y5(e,n,i){const l=this;return o;function o(u){return l.parser.lazy[l.now().line]?i(u):Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),o):ot(e,s,"linePrefix",5)(u)}function s(u){const f=l.events[l.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?n(u):Te(u)?o(u):i(u)}}const G5={name:"codeText",previous:X5,resolve:$5,tokenize:P5};function $5(e){let n=e.length-4,i=3,l,o;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(l=i;++l=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return nthis.left.length?this.right.slice(this.right.length-l+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-l+this.left.length).reverse())}splice(n,i,l){const o=i||0;this.setCursor(Math.trunc(n));const s=this.right.splice(this.right.length-o,Number.POSITIVE_INFINITY);return l&&uo(this.left,l),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),uo(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),uo(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n=4?n(u):e.interrupt(l.parser.constructs.flow,i,n)(u)}}function a_(e,n,i,l,o,s,u,f,d){const h=d||Number.POSITIVE_INFINITY;let m=0;return p;function p(_){return _===60?(e.enter(l),e.enter(o),e.enter(s),e.consume(_),e.exit(s),y):_===null||_===32||_===41||Lp(_)?i(_):(e.enter(l),e.enter(u),e.enter(f),e.enter("chunkString",{contentType:"string"}),k(_))}function y(_){return _===62?(e.enter(s),e.consume(_),e.exit(s),e.exit(o),e.exit(l),n):(e.enter(f),e.enter("chunkString",{contentType:"string"}),v(_))}function v(_){return _===62?(e.exit("chunkString"),e.exit(f),y(_)):_===null||_===60||Te(_)?i(_):(e.consume(_),_===92?w:v)}function w(_){return _===60||_===62||_===92?(e.consume(_),v):v(_)}function k(_){return!m&&(_===null||_===41||rn(_))?(e.exit("chunkString"),e.exit(f),e.exit(u),e.exit(l),n(_)):m999||v===null||v===91||v===93&&!d||v===94&&!f&&"_hiddenFootnoteSupport"in u.parser.constructs?i(v):v===93?(e.exit(s),e.enter(o),e.consume(v),e.exit(o),e.exit(l),n):Te(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===null||v===91||v===93||Te(v)||f++>999?(e.exit("chunkString"),m(v)):(e.consume(v),d||(d=!Qe(v)),v===92?y:p)}function y(v){return v===91||v===92||v===93?(e.consume(v),f++,p):p(v)}}function s_(e,n,i,l,o,s){let u;return f;function f(y){return y===34||y===39||y===40?(e.enter(l),e.enter(o),e.consume(y),e.exit(o),u=y===40?41:y,d):i(y)}function d(y){return y===u?(e.enter(o),e.consume(y),e.exit(o),e.exit(l),n):(e.enter(s),h(y))}function h(y){return y===u?(e.exit(s),d(u)):y===null?i(y):Te(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),ot(e,h,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===u||y===null||Te(y)?(e.exit("chunkString"),h(y)):(e.consume(y),y===92?p:m)}function p(y){return y===u||y===92?(e.consume(y),m):m(y)}}function wo(e,n){let i;return l;function l(o){return Te(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i=!0,l):Qe(o)?ot(e,l,i?"linePrefix":"lineSuffix")(o):n(o)}}const tO={name:"definition",tokenize:rO},nO={partial:!0,tokenize:iO};function rO(e,n,i){const l=this;let o;return s;function s(v){return e.enter("definition"),u(v)}function u(v){return o_.call(l,e,f,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(v)}function f(v){return o=Ql(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),v===58?(e.enter("definitionMarker"),e.consume(v),e.exit("definitionMarker"),d):i(v)}function d(v){return rn(v)?wo(e,h)(v):h(v)}function h(v){return a_(e,m,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(v)}function m(v){return e.attempt(nO,p,p)(v)}function p(v){return Qe(v)?ot(e,y,"whitespace")(v):y(v)}function y(v){return v===null||Te(v)?(e.exit("definition"),l.parser.defined.push(o),n(v)):i(v)}}function iO(e,n,i){return l;function l(f){return rn(f)?wo(e,o)(f):i(f)}function o(f){return s_(e,s,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(f)}function s(f){return Qe(f)?ot(e,u,"whitespace")(f):u(f)}function u(f){return f===null||Te(f)?n(f):i(f)}}const lO={name:"hardBreakEscape",tokenize:aO};function aO(e,n,i){return l;function l(s){return e.enter("hardBreakEscape"),e.consume(s),o}function o(s){return Te(s)?(e.exit("hardBreakEscape"),n(s)):i(s)}}const oO={name:"headingAtx",resolve:sO,tokenize:uO};function sO(e,n){let i=e.length-2,l=3,o,s;return e[l][1].type==="whitespace"&&(l+=2),i-2>l&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(l===i-1||i-4>l&&e[i-2][1].type==="whitespace")&&(i-=l+1===i?2:4),i>l&&(o={type:"atxHeadingText",start:e[l][1].start,end:e[i][1].end},s={type:"chunkText",start:e[l][1].start,end:e[i][1].end,contentType:"text"},nr(e,l,i-l+1,[["enter",o,n],["enter",s,n],["exit",s,n],["exit",o,n]])),e}function uO(e,n,i){let l=0;return o;function o(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),u(m)}function u(m){return m===35&&l++<6?(e.consume(m),u):m===null||rn(m)?(e.exit("atxHeadingSequence"),f(m)):i(m)}function f(m){return m===35?(e.enter("atxHeadingSequence"),d(m)):m===null||Te(m)?(e.exit("atxHeading"),n(m)):Qe(m)?ot(e,f,"whitespace")(m):(e.enter("atxHeadingText"),h(m))}function d(m){return m===35?(e.consume(m),d):(e.exit("atxHeadingSequence"),f(m))}function h(m){return m===null||m===35||rn(m)?(e.exit("atxHeadingText"),f(m)):(e.consume(m),h)}}const cO=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],nb=["pre","script","style","textarea"],fO={concrete:!0,name:"htmlFlow",resolveTo:pO,tokenize:mO},dO={partial:!0,tokenize:yO},hO={partial:!0,tokenize:gO};function pO(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function mO(e,n,i){const l=this;let o,s,u,f,d;return h;function h(N){return m(N)}function m(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),p}function p(N){return N===33?(e.consume(N),y):N===47?(e.consume(N),s=!0,k):N===63?(e.consume(N),o=3,l.interrupt?n:j):Jn(N)?(e.consume(N),u=String.fromCharCode(N),S):i(N)}function y(N){return N===45?(e.consume(N),o=2,v):N===91?(e.consume(N),o=5,f=0,w):Jn(N)?(e.consume(N),o=4,l.interrupt?n:j):i(N)}function v(N){return N===45?(e.consume(N),l.interrupt?n:j):i(N)}function w(N){const Y="CDATA[";return N===Y.charCodeAt(f++)?(e.consume(N),f===Y.length?l.interrupt?n:I:w):i(N)}function k(N){return Jn(N)?(e.consume(N),u=String.fromCharCode(N),S):i(N)}function S(N){if(N===null||N===47||N===62||rn(N)){const Y=N===47,F=u.toLowerCase();return!Y&&!s&&nb.includes(F)?(o=1,l.interrupt?n(N):I(N)):cO.includes(u.toLowerCase())?(o=6,Y?(e.consume(N),_):l.interrupt?n(N):I(N)):(o=7,l.interrupt&&!l.parser.lazy[l.now().line]?i(N):s?z(N):E(N))}return N===45||vn(N)?(e.consume(N),u+=String.fromCharCode(N),S):i(N)}function _(N){return N===62?(e.consume(N),l.interrupt?n:I):i(N)}function z(N){return Qe(N)?(e.consume(N),z):X(N)}function E(N){return N===47?(e.consume(N),X):N===58||N===95||Jn(N)?(e.consume(N),A):Qe(N)?(e.consume(N),E):X(N)}function A(N){return N===45||N===46||N===58||N===95||vn(N)?(e.consume(N),A):B(N)}function B(N){return N===61?(e.consume(N),T):Qe(N)?(e.consume(N),B):E(N)}function T(N){return N===null||N===60||N===61||N===62||N===96?i(N):N===34||N===39?(e.consume(N),d=N,q):Qe(N)?(e.consume(N),T):M(N)}function q(N){return N===d?(e.consume(N),d=null,D):N===null||Te(N)?i(N):(e.consume(N),q)}function M(N){return N===null||N===34||N===39||N===47||N===60||N===61||N===62||N===96||rn(N)?B(N):(e.consume(N),M)}function D(N){return N===47||N===62||Qe(N)?E(N):i(N)}function X(N){return N===62?(e.consume(N),H):i(N)}function H(N){return N===null||Te(N)?I(N):Qe(N)?(e.consume(N),H):i(N)}function I(N){return N===45&&o===2?(e.consume(N),R):N===60&&o===1?(e.consume(N),$):N===62&&o===4?(e.consume(N),U):N===63&&o===3?(e.consume(N),j):N===93&&o===5?(e.consume(N),J):Te(N)&&(o===6||o===7)?(e.exit("htmlFlowData"),e.check(dO,P,ee)(N)):N===null||Te(N)?(e.exit("htmlFlowData"),ee(N)):(e.consume(N),I)}function ee(N){return e.check(hO,L,P)(N)}function L(N){return e.enter("lineEnding"),e.consume(N),e.exit("lineEnding"),G}function G(N){return N===null||Te(N)?ee(N):(e.enter("htmlFlowData"),I(N))}function R(N){return N===45?(e.consume(N),j):I(N)}function $(N){return N===47?(e.consume(N),u="",Z):I(N)}function Z(N){if(N===62){const Y=u.toLowerCase();return nb.includes(Y)?(e.consume(N),U):I(N)}return Jn(N)&&u.length<8?(e.consume(N),u+=String.fromCharCode(N),Z):I(N)}function J(N){return N===93?(e.consume(N),j):I(N)}function j(N){return N===62?(e.consume(N),U):N===45&&o===2?(e.consume(N),j):I(N)}function U(N){return N===null||Te(N)?(e.exit("htmlFlowData"),P(N)):(e.consume(N),U)}function P(N){return e.exit("htmlFlow"),n(N)}}function gO(e,n,i){const l=this;return o;function o(u){return Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s):i(u)}function s(u){return l.parser.lazy[l.now().line]?i(u):n(u)}}function yO(e,n,i){return l;function l(o){return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),e.attempt(wc,n,i)}}const xO={name:"htmlText",tokenize:vO};function vO(e,n,i){const l=this;let o,s,u;return f;function f(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),d}function d(j){return j===33?(e.consume(j),h):j===47?(e.consume(j),B):j===63?(e.consume(j),E):Jn(j)?(e.consume(j),M):i(j)}function h(j){return j===45?(e.consume(j),m):j===91?(e.consume(j),s=0,w):Jn(j)?(e.consume(j),z):i(j)}function m(j){return j===45?(e.consume(j),v):i(j)}function p(j){return j===null?i(j):j===45?(e.consume(j),y):Te(j)?(u=p,$(j)):(e.consume(j),p)}function y(j){return j===45?(e.consume(j),v):p(j)}function v(j){return j===62?R(j):j===45?y(j):p(j)}function w(j){const U="CDATA[";return j===U.charCodeAt(s++)?(e.consume(j),s===U.length?k:w):i(j)}function k(j){return j===null?i(j):j===93?(e.consume(j),S):Te(j)?(u=k,$(j)):(e.consume(j),k)}function S(j){return j===93?(e.consume(j),_):k(j)}function _(j){return j===62?R(j):j===93?(e.consume(j),_):k(j)}function z(j){return j===null||j===62?R(j):Te(j)?(u=z,$(j)):(e.consume(j),z)}function E(j){return j===null?i(j):j===63?(e.consume(j),A):Te(j)?(u=E,$(j)):(e.consume(j),E)}function A(j){return j===62?R(j):E(j)}function B(j){return Jn(j)?(e.consume(j),T):i(j)}function T(j){return j===45||vn(j)?(e.consume(j),T):q(j)}function q(j){return Te(j)?(u=q,$(j)):Qe(j)?(e.consume(j),q):R(j)}function M(j){return j===45||vn(j)?(e.consume(j),M):j===47||j===62||rn(j)?D(j):i(j)}function D(j){return j===47?(e.consume(j),R):j===58||j===95||Jn(j)?(e.consume(j),X):Te(j)?(u=D,$(j)):Qe(j)?(e.consume(j),D):R(j)}function X(j){return j===45||j===46||j===58||j===95||vn(j)?(e.consume(j),X):H(j)}function H(j){return j===61?(e.consume(j),I):Te(j)?(u=H,$(j)):Qe(j)?(e.consume(j),H):D(j)}function I(j){return j===null||j===60||j===61||j===62||j===96?i(j):j===34||j===39?(e.consume(j),o=j,ee):Te(j)?(u=I,$(j)):Qe(j)?(e.consume(j),I):(e.consume(j),L)}function ee(j){return j===o?(e.consume(j),o=void 0,G):j===null?i(j):Te(j)?(u=ee,$(j)):(e.consume(j),ee)}function L(j){return j===null||j===34||j===39||j===60||j===61||j===96?i(j):j===47||j===62||rn(j)?D(j):(e.consume(j),L)}function G(j){return j===47||j===62||rn(j)?D(j):i(j)}function R(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),n):i(j)}function $(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),Z}function Z(j){return Qe(j)?ot(e,J,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):J(j)}function J(j){return e.enter("htmlTextData"),u(j)}}const Sm={name:"labelEnd",resolveAll:_O,resolveTo:EO,tokenize:NO},bO={tokenize:kO},wO={tokenize:CO},SO={tokenize:TO};function _O(e){let n=-1;const i=[];for(;++n=3&&(h===null||Te(h))?(e.exit("thematicBreak"),n(h)):i(h)}function d(h){return h===o?(e.consume(h),l++,d):(e.exit("thematicBreakSequence"),Qe(h)?ot(e,f,"whitespace")(h):f(h))}}const tn={continuation:{tokenize:BO},exit:UO,name:"list",tokenize:HO},DO={partial:!0,tokenize:IO},LO={partial:!0,tokenize:qO};function HO(e,n,i){const l=this,o=l.events[l.events.length-1];let s=o&&o[1].type==="linePrefix"?o[2].sliceSerialize(o[1],!0).length:0,u=0;return f;function f(v){const w=l.containerState.type||(v===42||v===43||v===45?"listUnordered":"listOrdered");if(w==="listUnordered"?!l.containerState.marker||v===l.containerState.marker:Hp(v)){if(l.containerState.type||(l.containerState.type=w,e.enter(w,{_container:!0})),w==="listUnordered")return e.enter("listItemPrefix"),v===42||v===45?e.check(Vu,i,h)(v):h(v);if(!l.interrupt||v===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),d(v)}return i(v)}function d(v){return Hp(v)&&++u<10?(e.consume(v),d):(!l.interrupt||u<2)&&(l.containerState.marker?v===l.containerState.marker:v===41||v===46)?(e.exit("listItemValue"),h(v)):i(v)}function h(v){return e.enter("listItemMarker"),e.consume(v),e.exit("listItemMarker"),l.containerState.marker=l.containerState.marker||v,e.check(wc,l.interrupt?i:m,e.attempt(DO,y,p))}function m(v){return l.containerState.initialBlankLine=!0,s++,y(v)}function p(v){return Qe(v)?(e.enter("listItemPrefixWhitespace"),e.consume(v),e.exit("listItemPrefixWhitespace"),y):i(v)}function y(v){return l.containerState.size=s+l.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(v)}}function BO(e,n,i){const l=this;return l.containerState._closeFlow=void 0,e.check(wc,o,s);function o(f){return l.containerState.furtherBlankLines=l.containerState.furtherBlankLines||l.containerState.initialBlankLine,ot(e,n,"listItemIndent",l.containerState.size+1)(f)}function s(f){return l.containerState.furtherBlankLines||!Qe(f)?(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,u(f)):(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,e.attempt(LO,n,u)(f))}function u(f){return l.containerState._closeFlow=!0,l.interrupt=void 0,ot(e,e.attempt(tn,n,i),"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(f)}}function qO(e,n,i){const l=this;return ot(e,o,"listItemIndent",l.containerState.size+1);function o(s){const u=l.events[l.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===l.containerState.size?n(s):i(s)}}function UO(e){e.exit(this.containerState.type)}function IO(e,n,i){const l=this;return ot(e,o,"listItemPrefixWhitespace",l.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function o(s){const u=l.events[l.events.length-1];return!Qe(s)&&u&&u[1].type==="listItemPrefixWhitespace"?n(s):i(s)}}const rb={name:"setextUnderline",resolveTo:VO,tokenize:YO};function VO(e,n){let i=e.length,l,o,s;for(;i--;)if(e[i][0]==="enter"){if(e[i][1].type==="content"){l=i;break}e[i][1].type==="paragraph"&&(o=i)}else e[i][1].type==="content"&&e.splice(i,1),!s&&e[i][1].type==="definition"&&(s=i);const u={type:"setextHeading",start:{...e[l][1].start},end:{...e[e.length-1][1].end}};return e[o][1].type="setextHeadingText",s?(e.splice(o,0,["enter",u,n]),e.splice(s+1,0,["exit",e[l][1],n]),e[l][1].end={...e[s][1].end}):e[l][1]=u,e.push(["exit",u,n]),e}function YO(e,n,i){const l=this;let o;return s;function s(h){let m=l.events.length,p;for(;m--;)if(l.events[m][1].type!=="lineEnding"&&l.events[m][1].type!=="linePrefix"&&l.events[m][1].type!=="content"){p=l.events[m][1].type==="paragraph";break}return!l.parser.lazy[l.now().line]&&(l.interrupt||p)?(e.enter("setextHeadingLine"),o=h,u(h)):i(h)}function u(h){return e.enter("setextHeadingLineSequence"),f(h)}function f(h){return h===o?(e.consume(h),f):(e.exit("setextHeadingLineSequence"),Qe(h)?ot(e,d,"lineSuffix")(h):d(h))}function d(h){return h===null||Te(h)?(e.exit("setextHeadingLine"),n(h)):i(h)}}const GO={tokenize:$O};function $O(e){const n=this,i=e.attempt(wc,l,e.attempt(this.parser.constructs.flowInitial,o,ot(e,e.attempt(this.parser.constructs.flow,o,e.attempt(Z5,o)),"linePrefix")));return i;function l(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),n.currentConstruct=void 0,i}function o(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),n.currentConstruct=void 0,i}}const XO={resolveAll:c_()},PO=u_("string"),FO=u_("text");function u_(e){return{resolveAll:c_(e==="text"?QO:void 0),tokenize:n};function n(i){const l=this,o=this.parser.constructs[e],s=i.attempt(o,u,f);return u;function u(m){return h(m)?s(m):f(m)}function f(m){if(m===null){i.consume(m);return}return i.enter("data"),i.consume(m),d}function d(m){return h(m)?(i.exit("data"),s(m)):(i.consume(m),d)}function h(m){if(m===null)return!0;const p=o[m];let y=-1;if(p)for(;++y-1){const f=u[0];typeof f=="string"?u[0]=f.slice(l):u.shift()}s>0&&u.push(e[o].slice(0,s))}return u}function sR(e,n){let i=-1;const l=[];let o;for(;++i0){const $t=Ne.tokenStack[Ne.tokenStack.length-1];($t[1]||lb).call(Ne,void 0,$t[0])}for(ge.position={start:ui(ue.length>0?ue[0][1].start:{line:1,column:1,offset:0}),end:ui(ue.length>0?ue[ue.length-2][1].end:{line:1,column:1,offset:0})},Ve=-1;++Ve0&&(l.className=["language-"+o[0]]);let s={type:"element",tagName:"code",properties:l,children:[{type:"text",value:i}]};return n.meta&&(s.data={meta:n.meta}),e.patch(n,s),s=e.applyData(n,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(n,s),s}function SR(e,n){const i={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function _R(e,n){const i={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function ER(e,n){const i=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",l=String(n.identifier).toUpperCase(),o=oa(l.toLowerCase()),s=e.footnoteOrder.indexOf(l);let u,f=e.footnoteCounts.get(l);f===void 0?(f=0,e.footnoteOrder.push(l),u=e.footnoteOrder.length):u=s+1,f+=1,e.footnoteCounts.set(l,f);const d={type:"element",tagName:"a",properties:{href:"#"+i+"fn-"+o,id:i+"fnref-"+o+(f>1?"-"+f:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,d);const h={type:"element",tagName:"sup",properties:{},children:[d]};return e.patch(n,h),e.applyData(n,h)}function NR(e,n){const i={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,i),e.applyData(n,i)}function kR(e,n){if(e.options.allowDangerousHtml){const i={type:"raw",value:n.value};return e.patch(n,i),e.applyData(n,i)}}function h_(e,n){const i=n.referenceType;let l="]";if(i==="collapsed"?l+="[]":i==="full"&&(l+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+l}];const o=e.all(n),s=o[0];s&&s.type==="text"?s.value="["+s.value:o.unshift({type:"text",value:"["});const u=o[o.length-1];return u&&u.type==="text"?u.value+=l:o.push({type:"text",value:l}),o}function CR(e,n){const i=String(n.identifier).toUpperCase(),l=e.definitionById.get(i);if(!l)return h_(e,n);const o={src:oa(l.url||""),alt:n.alt};l.title!==null&&l.title!==void 0&&(o.title=l.title);const s={type:"element",tagName:"img",properties:o,children:[]};return e.patch(n,s),e.applyData(n,s)}function TR(e,n){const i={src:oa(n.url)};n.alt!==null&&n.alt!==void 0&&(i.alt=n.alt),n.title!==null&&n.title!==void 0&&(i.title=n.title);const l={type:"element",tagName:"img",properties:i,children:[]};return e.patch(n,l),e.applyData(n,l)}function zR(e,n){const i={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,i);const l={type:"element",tagName:"code",properties:{},children:[i]};return e.patch(n,l),e.applyData(n,l)}function AR(e,n){const i=String(n.identifier).toUpperCase(),l=e.definitionById.get(i);if(!l)return h_(e,n);const o={href:oa(l.url||"")};l.title!==null&&l.title!==void 0&&(o.title=l.title);const s={type:"element",tagName:"a",properties:o,children:e.all(n)};return e.patch(n,s),e.applyData(n,s)}function MR(e,n){const i={href:oa(n.url)};n.title!==null&&n.title!==void 0&&(i.title=n.title);const l={type:"element",tagName:"a",properties:i,children:e.all(n)};return e.patch(n,l),e.applyData(n,l)}function jR(e,n,i){const l=e.all(n),o=i?OR(i):p_(n),s={},u=[];if(typeof n.checked=="boolean"){const m=l[0];let p;m&&m.type==="element"&&m.tagName==="p"?p=m:(p={type:"element",tagName:"p",properties:{},children:[]},l.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let f=-1;for(;++f1}function RR(e,n){const i={},l=e.all(n);let o=-1;for(typeof n.start=="number"&&n.start!==1&&(i.start=n.start);++o0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(i,!0)},f=gm(n.children[1]),d=FS(n.children[n.children.length-1]);f&&d&&(u.position={start:f,end:d}),o.push(u)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(o,!0)};return e.patch(n,s),e.applyData(n,s)}function qR(e,n,i){const l=i?i.children:void 0,s=(l?l.indexOf(n):1)===0?"th":"td",u=i&&i.type==="table"?i.align:void 0,f=u?u.length:n.children.length;let d=-1;const h=[];for(;++d0,!0),l[0]),o=l.index+l[0].length,l=i.exec(n);return s.push(sb(n.slice(o),o>0,!1)),s.join("")}function sb(e,n,i){let l=0,o=e.length;if(n){let s=e.codePointAt(l);for(;s===ab||s===ob;)l++,s=e.codePointAt(l)}if(i){let s=e.codePointAt(o-1);for(;s===ab||s===ob;)o--,s=e.codePointAt(o-1)}return o>l?e.slice(l,o):""}function VR(e,n){const i={type:"text",value:IR(String(n.value))};return e.patch(n,i),e.applyData(n,i)}function YR(e,n){const i={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,i),e.applyData(n,i)}const GR={blockquote:vR,break:bR,code:wR,delete:SR,emphasis:_R,footnoteReference:ER,heading:NR,html:kR,imageReference:CR,image:TR,inlineCode:zR,linkReference:AR,link:MR,listItem:jR,list:RR,paragraph:DR,root:LR,strong:HR,table:BR,tableCell:UR,tableRow:qR,text:VR,thematicBreak:YR,toml:ju,yaml:ju,definition:ju,footnoteDefinition:ju};function ju(){}const m_=-1,Sc=0,So=1,ic=2,_m=3,Em=4,Nm=5,km=6,g_=7,y_=8,ub=typeof self=="object"?self:globalThis,$R=(e,n)=>{const i=(o,s)=>(e.set(s,o),o),l=o=>{if(e.has(o))return e.get(o);const[s,u]=n[o];switch(s){case Sc:case m_:return i(u,o);case So:{const f=i([],o);for(const d of u)f.push(l(d));return f}case ic:{const f=i({},o);for(const[d,h]of u)f[l(d)]=l(h);return f}case _m:return i(new Date(u),o);case Em:{const{source:f,flags:d}=u;return i(new RegExp(f,d),o)}case Nm:{const f=i(new Map,o);for(const[d,h]of u)f.set(l(d),l(h));return f}case km:{const f=i(new Set,o);for(const d of u)f.add(l(d));return f}case g_:{const{name:f,message:d}=u;return i(new ub[f](d),o)}case y_:return i(BigInt(u),o);case"BigInt":return i(Object(BigInt(u)),o);case"ArrayBuffer":return i(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:f}=new Uint8Array(u);return i(new DataView(f),u)}}return i(new ub[s](u),o)};return l},cb=e=>$R(new Map,e)(0),Bl="",{toString:XR}={},{keys:PR}=Object,co=e=>{const n=typeof e;if(n!=="object"||!e)return[Sc,n];const i=XR.call(e).slice(8,-1);switch(i){case"Array":return[So,Bl];case"Object":return[ic,Bl];case"Date":return[_m,Bl];case"RegExp":return[Em,Bl];case"Map":return[Nm,Bl];case"Set":return[km,Bl];case"DataView":return[So,i]}return i.includes("Array")?[So,i]:i.includes("Error")?[g_,i]:[ic,i]},Ou=([e,n])=>e===Sc&&(n==="function"||n==="symbol"),FR=(e,n,i,l)=>{const o=(u,f)=>{const d=l.push(u)-1;return i.set(f,d),d},s=u=>{if(i.has(u))return i.get(u);let[f,d]=co(u);switch(f){case Sc:{let m=u;switch(d){case"bigint":f=y_,m=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+d);m=null;break;case"undefined":return o([m_],u)}return o([f,m],u)}case So:{if(d){let y=u;return d==="DataView"?y=new Uint8Array(u.buffer):d==="ArrayBuffer"&&(y=new Uint8Array(u)),o([d,[...y]],u)}const m=[],p=o([f,m],u);for(const y of u)m.push(s(y));return p}case ic:{if(d)switch(d){case"BigInt":return o([d,u.toString()],u);case"Boolean":case"Number":case"String":return o([d,u.valueOf()],u)}if(n&&"toJSON"in u)return s(u.toJSON());const m=[],p=o([f,m],u);for(const y of PR(u))(e||!Ou(co(u[y])))&&m.push([s(y),s(u[y])]);return p}case _m:return o([f,u.toISOString()],u);case Em:{const{source:m,flags:p}=u;return o([f,{source:m,flags:p}],u)}case Nm:{const m=[],p=o([f,m],u);for(const[y,v]of u)(e||!(Ou(co(y))||Ou(co(v))))&&m.push([s(y),s(v)]);return p}case km:{const m=[],p=o([f,m],u);for(const y of u)(e||!Ou(co(y)))&&m.push(s(y));return p}}const{message:h}=u;return o([f,{name:d,message:h}],u)};return s},fb=(e,{json:n,lossy:i}={})=>{const l=[];return FR(!(n||i),!!n,new Map,l)(e),l},lc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?cb(fb(e,n)):structuredClone(e):(e,n)=>cb(fb(e,n));function QR(e,n){const i=[{type:"text",value:"↩"}];return n>1&&i.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),i}function ZR(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function KR(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",i=e.options.footnoteBackContent||QR,l=e.options.footnoteBackLabel||ZR,o=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},f=[];let d=-1;for(;++d0&&w.push({type:"text",value:" "});let z=typeof i=="string"?i:i(d,v);typeof z=="string"&&(z={type:"text",value:z}),w.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+y+(v>1?"-"+v:""),dataFootnoteBackref:"",ariaLabel:typeof l=="string"?l:l(d,v),className:["data-footnote-backref"]},children:Array.isArray(z)?z:[z]})}const S=m[m.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const z=S.children[S.children.length-1];z&&z.type==="text"?z.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...w)}else m.push(...w);const _={type:"element",tagName:"li",properties:{id:n+"fn-"+y},children:e.wrap(m,!0)};e.patch(h,_),f.push(_)}if(f.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...lc(u),id:"footnote-label"},children:[{type:"text",value:o}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(f,!0)},{type:"text",value:` -`}]}}const x_=(function(e){if(e==null)return tD;if(typeof e=="function")return _c(e);if(typeof e=="object")return Array.isArray(e)?JR(e):WR(e);if(typeof e=="string")return eD(e);throw new Error("Expected function, string, or object as test")});function JR(e){const n=[];let i=-1;for(;++i":""))+")"})}return y;function y(){let v=v_,w,k,S;if((!n||s(d,h,m[m.length-1]||void 0))&&(v=aD(i(d,m)),v[0]===db))return v;if("children"in d&&d.children){const _=d;if(_.children&&v[0]!==iD)for(k=(l?_.children.length:-1)+u,S=m.concat(_);k>-1&&k<_.children.length;){const z=_.children[k];if(w=f(z,k,S)(),w[0]===db)return w;k=typeof w[1]=="number"?w[1]:k+u}}return v}}}function aD(e){return Array.isArray(e)?e:typeof e=="number"?[rD,e]:e==null?v_:[e]}function b_(e,n,i,l){let o,s,u;typeof n=="function"&&typeof i!="function"?(s=void 0,u=n,o=i):(s=n,u=i,o=l),lD(e,s,f,o);function f(d,h){const m=h[h.length-1],p=m?m.children.indexOf(d):void 0;return u(d,p,m)}}const qp={}.hasOwnProperty,oD={};function sD(e,n){const i=n||oD,l=new Map,o=new Map,s=new Map,u={...GR,...i.handlers},f={all:h,applyData:cD,definitionById:l,footnoteById:o,footnoteCounts:s,footnoteOrder:[],handlers:u,one:d,options:i,patch:uD,wrap:dD};return b_(e,function(m){if(m.type==="definition"||m.type==="footnoteDefinition"){const p=m.type==="definition"?l:o,y=String(m.identifier).toUpperCase();p.has(y)||p.set(y,m)}}),f;function d(m,p){const y=m.type,v=f.handlers[y];if(qp.call(f.handlers,y)&&v)return v(f,m,p);if(f.options.passThrough&&f.options.passThrough.includes(y)){if("children"in m){const{children:k,...S}=m,_=lc(S);return _.children=f.all(m),_}return lc(m)}return(f.options.unknownHandler||fD)(f,m,p)}function h(m){const p=[];if("children"in m){const y=m.children;let v=-1;for(;++v0&&i.push({type:"text",value:` -`}),i}function hb(e){let n=0,i=e.charCodeAt(n);for(;i===9||i===32;)n++,i=e.charCodeAt(n);return e.slice(n)}function pb(e,n){const i=sD(e,n),l=i.one(e,void 0),o=KR(i),s=Array.isArray(l)?{type:"root",children:l}:l||{type:"root",children:[]};return o&&s.children.push({type:"text",value:` -`},o),s}function hD(e,n){return e&&"run"in e?async function(i,l){const o=pb(i,{file:l,...n});await e.run(o,l)}:function(i,l){return pb(i,{file:l,...e||n})}}function mb(e){if(e)throw e}var lp,gb;function pD(){if(gb)return lp;gb=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=function(h){return typeof Array.isArray=="function"?Array.isArray(h):n.call(h)==="[object Array]"},s=function(h){if(!h||n.call(h)!=="[object Object]")return!1;var m=e.call(h,"constructor"),p=h.constructor&&h.constructor.prototype&&e.call(h.constructor.prototype,"isPrototypeOf");if(h.constructor&&!m&&!p)return!1;var y;for(y in h);return typeof y>"u"||e.call(h,y)},u=function(h,m){i&&m.name==="__proto__"?i(h,m.name,{enumerable:!0,configurable:!0,value:m.newValue,writable:!0}):h[m.name]=m.newValue},f=function(h,m){if(m==="__proto__")if(e.call(h,m)){if(l)return l(h,m).value}else return;return h[m]};return lp=function d(){var h,m,p,y,v,w,k=arguments[0],S=1,_=arguments.length,z=!1;for(typeof k=="boolean"&&(z=k,k=arguments[1]||{},S=2),(k==null||typeof k!="object"&&typeof k!="function")&&(k={});S<_;++S)if(h=arguments[S],h!=null)for(m in h)p=f(k,m),y=f(h,m),k!==y&&(z&&y&&(s(y)||(v=o(y)))?(v?(v=!1,w=p&&o(p)?p:[]):w=p&&s(p)?p:{},u(k,{name:m,newValue:d(z,w,y)})):typeof y<"u"&&u(k,{name:m,newValue:y}));return k},lp}var mD=pD();const ap=Lo(mD);function Up(e){if(typeof e!="object"||e===null)return!1;const n=Object.getPrototypeOf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function gD(){const e=[],n={run:i,use:l};return n;function i(...o){let s=-1;const u=o.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);f(null,...o);function f(d,...h){const m=e[++s];let p=-1;if(d){u(d);return}for(;++pu.length;let d;f&&u.push(o);try{d=e.apply(this,u)}catch(h){const m=h;if(f&&i)throw m;return o(m)}f||(d&&d.then&&typeof d.then=="function"?d.then(s,o):d instanceof Error?o(d):s(d))}function o(u,...f){i||(i=!0,n(u,...f))}function s(u){o(null,u)}}const Zn={basename:xD,dirname:vD,extname:bD,join:wD,sep:"/"};function xD(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Fo(e);let i=0,l=-1,o=e.length,s;if(n===void 0||n.length===0||n.length>e.length){for(;o--;)if(e.codePointAt(o)===47){if(s){i=o+1;break}}else l<0&&(s=!0,l=o+1);return l<0?"":e.slice(i,l)}if(n===e)return"";let u=-1,f=n.length-1;for(;o--;)if(e.codePointAt(o)===47){if(s){i=o+1;break}}else u<0&&(s=!0,u=o+1),f>-1&&(e.codePointAt(o)===n.codePointAt(f--)?f<0&&(l=o):(f=-1,l=u));return i===l?l=u:l<0&&(l=e.length),e.slice(i,l)}function vD(e){if(Fo(e),e.length===0)return".";let n=-1,i=e.length,l;for(;--i;)if(e.codePointAt(i)===47){if(l){n=i;break}}else l||(l=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function bD(e){Fo(e);let n=e.length,i=-1,l=0,o=-1,s=0,u;for(;n--;){const f=e.codePointAt(n);if(f===47){if(u){l=n+1;break}continue}i<0&&(u=!0,i=n+1),f===46?o<0?o=n:s!==1&&(s=1):o>-1&&(s=-1)}return o<0||i<0||s===0||s===1&&o===i-1&&o===l+1?"":e.slice(o,i)}function wD(...e){let n=-1,i;for(;++n0&&e.codePointAt(e.length-1)===47&&(i+="/"),n?"/"+i:i}function _D(e,n){let i="",l=0,o=-1,s=0,u=-1,f,d;for(;++u<=e.length;){if(u2){if(d=i.lastIndexOf("/"),d!==i.length-1){d<0?(i="",l=0):(i=i.slice(0,d),l=i.length-1-i.lastIndexOf("/")),o=u,s=0;continue}}else if(i.length>0){i="",l=0,o=u,s=0;continue}}n&&(i=i.length>0?i+"/..":"..",l=2)}else i.length>0?i+="/"+e.slice(o+1,u):i=e.slice(o+1,u),l=u-o-1;o=u,s=0}else f===46&&s>-1?s++:s=-1}return i}function Fo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const ED={cwd:ND};function ND(){return"/"}function Ip(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function kD(e){if(typeof e=="string")e=new URL(e);else if(!Ip(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return CD(e)}function CD(e){if(e.hostname!==""){const l=new TypeError('File URL host must be "localhost" or empty on darwin');throw l.code="ERR_INVALID_FILE_URL_HOST",l}const n=e.pathname;let i=-1;for(;++i0){let[v,...w]=m;const k=l[y][1];Up(k)&&Up(v)&&(v=ap(!0,k,v)),l[y]=[h,v,...w]}}}}const MD=new Cm().freeze();function cp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function fp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function dp(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function xb(e){if(!Up(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function vb(e,n,i){if(!i)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Ru(e){return jD(e)?e:new w_(e)}function jD(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function OD(e){return typeof e=="string"||RD(e)}function RD(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const DD="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",bb=[],wb={allowDangerousHtml:!0},LD=/^(https?|ircs?|mailto|xmpp)$/i,HD=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function BD(e){const n=qD(e),i=UD(e);return ID(n.runSync(n.parse(i),i),e)}function qD(e){const n=e.rehypePlugins||bb,i=e.remarkPlugins||bb,l=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...wb}:wb;return MD().use(xR).use(i).use(hD,l).use(n)}function UD(e){const n=e.children||"",i=new w_;return typeof n=="string"&&(i.value=n),i}function ID(e,n){const i=n.allowedElements,l=n.allowElement,o=n.components,s=n.disallowedElements,u=n.skipHtml,f=n.unwrapDisallowed,d=n.urlTransform||VD;for(const m of HD)Object.hasOwn(n,m.from)&&(""+m.from+(m.to?"use `"+m.to+"` instead":"remove it")+DD+m.id,void 0);return b_(e,h),K4(e,{Fragment:b.Fragment,components:o,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function h(m,p,y){if(m.type==="raw"&&y&&typeof p=="number")return u?y.children.splice(p,1):y.children[p]={type:"text",value:m.value},p;if(m.type==="element"){let v;for(v in np)if(Object.hasOwn(np,v)&&Object.hasOwn(m.properties,v)){const w=m.properties[v],k=np[v];(k===null||k.includes(m.tagName))&&(m.properties[v]=d(String(w||""),v,m))}}if(m.type==="element"){let v=i?!i.includes(m.tagName):s?s.includes(m.tagName):!1;if(!v&&l&&typeof p=="number"&&(v=!l(m,p,y)),v&&y&&typeof p=="number")return f&&m.children?y.children.splice(p,1,...m.children):y.children.splice(p,1),p}}}function VD(e){const n=e.indexOf(":"),i=e.indexOf("?"),l=e.indexOf("#"),o=e.indexOf("/");return n===-1||o!==-1&&n>o||i!==-1&&n>i||l!==-1&&n>l||LD.test(e.slice(0,n))?e:""}function YD({node:e}){const n=he(E=>E.sendGateResponse),i=he(E=>E.wsStatus),[l,o]=V.useState(null),[s,u]=V.useState(""),[f,d]=V.useState(null),[h,m]=V.useState(!1),p=e.status==="waiting",y=e.status==="completed";V.useEffect(()=>{p&&(o(null),u(""),d(null),m(!1))},[p]);const v=p&&i==="connected"&&l===null,w=(E,A)=>{if(v){if(A){o(E),d(A);return}o(E),m(!0),n(e.name,E)}},k=()=>{if(l===null||f===null)return;const E={[f]:s};m(!0),n(e.name,l,E),d(null)},S=e.option_details,_=S==null?void 0:S.find(E=>E.value===e.selected_option),z=(_==null?void 0:_.label)||e.selected_option;return b.jsxs("div",{className:"space-y-3",children:[p&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30",children:[b.jsxs("span",{className:"relative flex h-2.5 w-2.5 flex-shrink-0",children:[b.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),b.jsx("span",{className:"relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"})]}),b.jsx("span",{className:"text-xs font-semibold text-amber-400 tracking-wide",children:"Decision Required"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-amber-500/50 pl-3 py-0.5",children:b.jsx(hp,{text:e.prompt,muted:!1})}),S&&S.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsx("div",{className:"flex flex-col gap-1.5",children:S.map(E=>{const A=l===E.value,B=l!==null&&!A;return b.jsx("button",{disabled:!v&&!A,onClick:()=>w(E.value,E.prompt_for),className:`w-full text-left px-3 py-2.5 rounded-lg border transition-all duration-150 ${A?"border-green-500/60 bg-green-500/10":B?"border-[var(--border)] opacity-40 cursor-default":"border-[var(--border)] bg-[var(--surface)] hover:border-amber-400/60 hover:bg-amber-500/5 cursor-pointer group"}`,children:b.jsxs("div",{className:"flex items-center gap-2.5",children:[b.jsx("div",{className:"flex-shrink-0",children:A?b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",children:b.jsx(Bi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}):b.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-colors ${B?"border-[var(--border)]":"border-[var(--border)] group-hover:border-amber-400"}`})}),b.jsx("div",{className:"flex-1 min-w-0",children:b.jsx("span",{className:`text-xs font-medium ${A?"text-green-400":"text-[var(--text)]"}`,children:E.label})}),E.route&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0",children:["→ ",E.route]})]})},E.value)})}),h&&!f&&b.jsxs("div",{className:"flex items-center gap-2 px-1",children:[b.jsx(_o,{className:"w-3 h-3 text-green-400 animate-spin"}),b.jsx("span",{className:"text-[10px] text-green-400",children:"Sending..."})]}),v&&b.jsx("p",{className:"text-[10px] text-[var(--text-muted)] px-1",children:"Select an option to continue the workflow"})]}),!S&&e.options&&e.options.length>0&&b.jsxs("div",{className:"space-y-1.5",children:[b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:"Options"}),b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded border border-[var(--border)] text-[var(--text-muted)]",children:E},E))})]}),f&&b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--bg)] overflow-hidden",children:[b.jsx("div",{className:"px-3 py-2 border-b border-[var(--border)] bg-[var(--surface)]",children:b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:f})}),b.jsxs("div",{className:"p-3 space-y-2",children:[b.jsx("input",{type:"text",value:s,onChange:E=>u(E.target.value),onKeyDown:E=>E.key==="Enter"&&k(),placeholder:`Enter ${f}...`,className:"w-full text-xs px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--bg)] text-[var(--text)] outline-none focus:border-amber-400 transition-colors",autoFocus:!0}),b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:"Press Enter or click Submit"}),b.jsxs("button",{onClick:k,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-amber-500 text-white hover:bg-amber-600 transition-colors font-medium",children:[b.jsx(lN,{className:"w-3 h-3"}),"Submit"]})]})]})]})]}),y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-green-500/10 border border-green-500/30",children:[b.jsx(Bi,{className:"w-3.5 h-3.5 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-green-400 tracking-wide",children:"Decision Completed"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(hp,{text:e.prompt,muted:!0})}),z&&b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0",children:b.jsx(Bi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)]",children:z}),e.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",e.route]})]}),S&&S.length>1&&b.jsx("div",{className:"space-y-1",children:S.filter(E=>E.value!==e.selected_option).map(E=>b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg opacity-35",children:[b.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-[var(--border)] flex-shrink-0"}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:E.label}),E.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",E.route]})]},E.value))}),!S&&e.options&&e.options.length>0&&b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsxs("span",{className:`text-[11px] px-2.5 py-1 rounded-lg border ${E===e.selected_option?"border-green-500/30 text-green-400 bg-green-500/5":"border-[var(--border)] text-[var(--text-muted)] opacity-40"}`,children:[E===e.selected_option&&"✓ ",E]},E))}),b.jsx(GD,{node:e})]}),!p&&!y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Human Gate"}),b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] capitalize",children:["(",e.status,")"]})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(hp,{text:e.prompt,muted:!0})})]})]})}function hp({text:e,muted:n}){const i=n?"text-[var(--text-muted)]":"text-[var(--text)]";return b.jsx("div",{className:`gate-markdown text-xs leading-relaxed ${i}`,children:b.jsx(BD,{components:{h1:({children:l})=>b.jsx("h1",{className:"text-sm font-bold mb-2 mt-1",children:l}),h2:({children:l})=>b.jsx("h2",{className:"text-xs font-bold mb-1.5 mt-1",children:l}),h3:({children:l})=>b.jsx("h3",{className:"text-xs font-semibold mb-1 mt-1",children:l}),p:({children:l})=>b.jsx("p",{className:"mb-1.5 last:mb-0",children:l}),ul:({children:l})=>b.jsx("ul",{className:"list-disc list-inside mb-1.5 space-y-0.5",children:l}),ol:({children:l})=>b.jsx("ol",{className:"list-decimal list-inside mb-1.5 space-y-0.5",children:l}),li:({children:l})=>b.jsx("li",{children:l}),code:({children:l,className:o})=>(o==null?void 0:o.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-2 py-1.5 font-mono text-[11px] my-1 overflow-x-auto whitespace-pre",children:l}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:l}),pre:({children:l})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-2.5 py-2 font-mono text-[11px] my-1.5 overflow-x-auto",children:l}),strong:({children:l})=>b.jsx("strong",{className:"font-semibold",children:l}),em:({children:l})=>b.jsx("em",{className:"italic",children:l}),a:({href:l,children:o})=>b.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:o}),blockquote:({children:l})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-2.5 my-1.5 opacity-80",children:l}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-2"})},children:e})})}function GD({node:e}){const n=[];if(e.route&&n.push({label:"Route",value:`→ ${e.route}`}),e.additional_input){const i=typeof e.additional_input=="object"?JSON.stringify(e.additional_input):e.additional_input;n.push({label:"Additional Input",value:i})}return n.length===0?null:b.jsx(la,{items:n})}function $D({node:e}){const n=e.status,i=lt[n]||lt.pending,o=he(m=>m.groupProgress)[e.name],s=e.type==="for_each_group",[u,f]=V.useState(!0),d=[];e.elapsed!=null&&d.push({label:"Elapsed",value:ln(e.elapsed)}),o&&(d.push({label:"Total",value:o.total}),d.push({label:"Completed",value:o.completed}),o.failed>0&&d.push({label:"Failed",value:o.failed})),e.success_count!=null&&d.push({label:"Success",value:e.success_count}),e.failure_count!=null&&d.push({label:"Failures",value:e.failure_count});const h=e.for_each_items;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${i}20`,color:i},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:s?"For-Each Group":"Parallel Group"})]}),o&&o.total>0&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-[10px] text-[var(--text-muted)]",children:[b.jsx("span",{children:"Progress"}),b.jsxs("span",{children:[o.completed+o.failed,"/",o.total]})]}),b.jsx("div",{className:"h-1.5 bg-[var(--bg)] rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${(o.completed+o.failed)/o.total*100}%`,background:o.failed>0?`linear-gradient(90deg, var(--completed) ${o.completed/(o.completed+o.failed)*100}%, var(--failed) 0%)`:"var(--completed)"}})})]}),b.jsx(la,{items:d}),s&&h&&h.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold hover:text-[var(--text)] transition-colors",children:[u?b.jsx(Fi,{className:"w-3 h-3"}):b.jsx(ia,{className:"w-3 h-3"}),"Items (",h.length,")"]}),u&&b.jsx("div",{className:"space-y-1",children:h.map(m=>b.jsx(PD,{item:m},`${m.key}-${m.index}`))})]})]})}const XD={running:lt.running,completed:lt.completed,failed:lt.failed};function PD({item:e}){const[n,i]=V.useState(e.status==="running"),l=XD[e.status],o=!!(e.prompt||e.output!=null||e.activity&&e.activity.length>0||e.error_type),s=[];return e.elapsed!=null&&s.push({label:"Elapsed",value:ln(e.elapsed)}),e.tokens!=null&&s.push({label:"Tokens",value:Wn(e.tokens)}),e.cost_usd!=null&&s.push({label:"Cost",value:Zl(e.cost_usd)}),b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--surface)] overflow-hidden",children:[b.jsxs("button",{onClick:()=>o&&i(!n),className:"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--node-bg)] transition-colors",disabled:!o,children:[o?n?b.jsx(Fi,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(ia,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):e.status==="running"?b.jsx(_o,{className:"w-3 h-3 animate-spin flex-shrink-0",style:{color:l}}):b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0 ml-0.5 mr-0.5",style:{backgroundColor:l}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1 min-w-0",children:e.key}),!n&&(e.elapsed!=null||e.tokens!=null||e.cost_usd!=null)&&b.jsxs("span",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)] flex-shrink-0",children:[e.elapsed!=null&&b.jsx("span",{children:ln(e.elapsed)}),e.tokens!=null&&b.jsx("span",{children:Wn(e.tokens)}),e.cost_usd!=null&&b.jsx("span",{children:Zl(e.cost_usd)})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${l}20`,color:l},children:e.status})]}),n&&o&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[s.length>0&&b.jsx(la,{items:s}),e.prompt&&b.jsx(Pi,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!1}),e.activity&&e.activity.length>0&&b.jsx(hm,{activity:e.activity,defaultExpanded:e.status!=="completed"}),e.output!=null&&b.jsx(Pi,{output:e.output,title:"Output",defaultExpanded:!0}),e.status==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]})]})]})}function FD(){const e=he(f=>f.selectedNode),n=he(f=>f.nodes),i=he(f=>f.selectNode),[l,o]=V.useState(!1);V.useEffect(()=>(requestAnimationFrame(()=>o(!0)),()=>o(!1)),[e]);const s=e?n[e]:null;if(!e||!s)return b.jsxs("div",{className:"h-full flex flex-col bg-[var(--surface)]",children:[b.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Detail"})}),b.jsx("div",{className:"flex-1 flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Click a node to view details"})})]});const u=(()=>{switch(s.type){case"script":return S4;case"human_gate":return YD;case"parallel_group":case"for_each_group":return $D;default:return b4}})();return b.jsxs("div",{className:Ye("h-full flex flex-col bg-[var(--surface)] transition-all duration-150 ease-out",l?"translate-x-0 opacity-100":"translate-x-4 opacity-0"),children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)] flex-shrink-0",children:[b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] truncate",children:e}),b.jsx("button",{onClick:()=>i(null),className:"p-1 rounded hover:bg-[var(--surface-hover)] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Close panel",children:b.jsx(Bo,{className:"w-4 h-4"})})]}),b.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:b.jsx(u,{node:s})})]})}function Yu(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function QD(){const e=he(S=>S.eventLog),n=he(S=>S.activityLog),i=he(S=>S.workflowOutput),l=he(S=>S.workflowStatus),[o,s]=V.useState("log"),[u,f]=V.useState(!1),[d,h]=V.useState(0),[m,p]=V.useState(0),y=V.useCallback(S=>{s(S),S==="log"&&h(e.length),S==="activity"&&p(n.length)},[e.length,n.length]);V.useEffect(()=>{o==="log"&&h(e.length)},[o,e.length]),V.useEffect(()=>{o==="activity"&&p(n.length)},[o,n.length]),V.useEffect(()=>{l==="completed"&&i!=null&&s("output")},[l,i]);const v=i!=null,w=o!=="log"?Math.max(0,e.length-d):0,k=o!=="activity"?Math.max(0,n.length-m):0;return u?b.jsx("div",{className:"flex items-center bg-[var(--surface)] border-t border-[var(--border)] px-3 py-1",children:b.jsxs("button",{onClick:()=>f(!1),className:"flex items-center gap-1.5 text-xs text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",children:[b.jsx($2,{className:"w-3 h-3"}),b.jsx(bx,{className:"w-3 h-3"}),b.jsx("span",{children:"Output"}),n.length>0&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)]",children:["(",n.length,")"]})]})}):b.jsxs("div",{className:"flex flex-col h-full bg-[var(--surface)] border-t border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center justify-between px-2 flex-shrink-0 border-b border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center gap-0.5",children:[b.jsx(pp,{active:o==="log",onClick:()=>y("log"),icon:b.jsx(bx,{className:"w-3 h-3"}),label:"Log",count:e.length,unread:w}),b.jsx(pp,{active:o==="activity",onClick:()=>y("activity"),icon:b.jsx(kb,{className:"w-3 h-3"}),label:"Activity",count:n.length,unread:k}),b.jsx(pp,{active:o==="output",onClick:()=>y("output"),icon:b.jsx(J2,{className:"w-3 h-3"}),label:"Output",badge:v?l==="failed"?"error":"success":void 0})]}),b.jsx("button",{onClick:()=>f(!0),className:"p-1 rounded text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors",title:"Collapse panel",children:b.jsx(Fi,{className:"w-3.5 h-3.5"})})]}),b.jsx("div",{className:"flex-1 overflow-hidden",children:o==="activity"?b.jsx(ZD,{entries:n}):o==="log"?b.jsx(KD,{entries:e}):b.jsx(JD,{output:i,status:l})})]})}function pp({active:e,onClick:n,icon:i,label:l,count:o,badge:s,unread:u}){return b.jsxs("button",{onClick:n,className:Ye("relative flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors border-b-2 -mb-px",e?"text-[var(--text)] border-[var(--accent)]":"text-[var(--text-muted)] border-transparent hover:text-[var(--text-secondary)]"),children:[i,b.jsx("span",{children:l}),o!=null&&o>0&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums",children:o}),s&&b.jsx("span",{className:Ye("w-1.5 h-1.5 rounded-full",s==="success"?"bg-[var(--completed)]":"bg-[var(--failed)]")}),!e&&u!=null&&u>0&&b.jsx("span",{className:"absolute -top-0.5 -right-0.5 flex h-3.5 min-w-[14px] items-center justify-center rounded-full bg-[var(--accent)] px-1",children:b.jsx("span",{className:"text-[8px] font-bold text-white leading-none tabular-nums",children:u>99?"99+":u})})]})}const Sb={reasoning:{color:"text-indigo-400/70",label:"THINK",labelColor:"text-indigo-500"},"tool-start":{color:"text-blue-400",label:"TOOL →",labelColor:"text-blue-500"},"tool-complete":{color:"text-green-400",label:"TOOL ←",labelColor:"text-green-600"},turn:{color:"text-amber-400",label:"STEP",labelColor:"text-amber-500"},message:{color:"text-[var(--text)]",label:"MSG",labelColor:"text-[var(--text-muted)]"},prompt:{color:"text-cyan-400/70",label:"PROMPT",labelColor:"text-cyan-600"}};function ZD({entries:e}){const n=V.useRef(null),i=V.useRef(!0),l=he(d=>d.selectNode),[o,s]=V.useState(""),u=V.useCallback(()=>{const d=n.current;if(!d)return;const h=d.scrollHeight-d.scrollTop-d.clientHeight<30;i.current=h},[]),f=V.useMemo(()=>{if(!o)return e;const d=o.toLowerCase();return e.filter(h=>h.source.toLowerCase().includes(d)||Yu(h.message).toLowerCase().includes(d))},[e,o]);return V.useEffect(()=>{n.current&&i.current&&(n.current.scrollTop=n.current.scrollHeight)},[f.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for agent activity…"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx(iN,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("input",{type:"text",value:o,onChange:d=>s(d.target.value),placeholder:"Filter by agent or message…",className:"flex-1 bg-transparent text-[11px] text-[var(--text)] placeholder:text-[var(--text-muted)] outline-none min-w-0"}),o&&b.jsxs(b.Fragment,{children:[b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums flex-shrink-0",children:[f.length," of ",e.length]}),b.jsx("button",{onClick:()=>s(""),className:"text-[var(--text-muted)] hover:text-[var(--text)] transition-colors flex-shrink-0",title:"Clear filter",children:b.jsx(Bo,{className:"w-3 h-3"})})]})]}),b.jsxs("div",{ref:n,onScroll:u,className:"flex-1 overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:[f.map((d,h)=>{const m=Sb[d.type]||Sb.message,p=S_(d.timestamp);return b.jsxs("div",{className:"group",children:[b.jsxs("div",{className:"flex gap-1.5 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:p}),b.jsx("span",{className:Ye("flex-shrink-0 w-[5ch] text-[10px] font-semibold tabular-nums select-none",m.labelColor),children:m.label}),b.jsx("button",{onClick:()=>l(d.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${d.source}`,children:d.source}),b.jsx("span",{className:Ye("break-words min-w-0",m.color,d.type==="reasoning"&&"italic"),children:Yu(d.message)})]}),d.detail&&b.jsx("div",{className:"ml-[calc(7ch+5ch+8ch+1rem)] px-2 py-1 my-0.5 bg-[var(--bg)] rounded text-[10px] text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto border-l-2 border-[var(--border)]",children:Yu(d.detail)})]},h)}),o&&f.length===0&&b.jsx("div",{className:"flex items-center justify-center py-4",children:b.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:['No matches for "',o,'"']})})]})]})}const _b={info:{color:"text-blue-400",icon:"›"},success:{color:"text-green-400",icon:"✓"},error:{color:"text-red-400",icon:"✗"},warning:{color:"text-amber-400",icon:"⚠"},debug:{color:"text-[var(--text-muted)]",icon:"·"}};function KD({entries:e}){const n=V.useRef(null),i=V.useRef(!0),l=he(s=>s.selectNode),o=V.useCallback(()=>{const s=n.current;if(!s)return;const u=s.scrollHeight-s.scrollTop-s.clientHeight<30;i.current=u},[]);return V.useEffect(()=>{n.current&&i.current&&(n.current.scrollTop=n.current.scrollHeight)},[e.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for events…"})}):b.jsx("div",{ref:n,onScroll:o,className:"h-full overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:e.map((s,u)=>{const f=_b[s.level]||_b.info,d=S_(s.timestamp);return b.jsxs("div",{className:"flex gap-2 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:d}),b.jsx("span",{className:Ye("flex-shrink-0 w-3 text-center select-none",f.color),children:f.icon}),b.jsx("button",{onClick:()=>l(s.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${s.source}`,children:s.source}),b.jsx("span",{className:Ye("break-words",s.level==="error"?"text-red-400":s.level==="success"?"text-green-400":"text-[var(--text)]"),children:Yu(s.message)})]},u)})})}function S_(e){const n=new Date(e*1e3),i=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),o=n.getSeconds().toString().padStart(2,"0");return`${i}:${l}:${o}`}function JD({output:e,status:n}){const[i,l]=V.useState(!1),o=zb(e),s=async()=>{o&&(await navigator.clipboard.writeText(o),l(!0),setTimeout(()=>l(!1),2e3))};return e==null?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n==="running"?"Workflow running — output will appear when complete…":n==="failed"?"Workflow failed — no output produced":"No output yet"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center justify-between px-3 py-1 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] uppercase tracking-wider font-semibold",children:"Workflow Result"}),b.jsx("button",{onClick:s,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors px-1.5 py-0.5 rounded hover:bg-[var(--surface-hover)]",title:"Copy to clipboard",children:i?b.jsxs(b.Fragment,{children:[b.jsx(Bi,{className:"w-3 h-3 text-[var(--completed)]"}),b.jsx("span",{className:"text-[var(--completed)]",children:"Copied"})]}):b.jsxs(b.Fragment,{children:[b.jsx(Cb,{className:"w-3 h-3"}),b.jsx("span",{children:"Copy"})]})})]}),b.jsx("div",{className:"flex-1 overflow-auto px-3 py-2",children:b.jsx("pre",{className:"font-mono text-[11px] leading-relaxed text-[var(--text)] whitespace-pre-wrap break-words",children:typeof e=="object"?b.jsx(WD,{text:o}):o})})]})}function WD({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((i,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:i},l)}const o=i.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:o}},l)})})}function e6(){const e=he(n=>n.selectedNode);return b.jsxs(gp,{direction:"vertical",className:"flex-1 overflow-hidden",children:[b.jsx(fo,{defaultSize:70,minSize:30,children:b.jsxs(gp,{direction:"horizontal",className:"h-full",children:[b.jsx(fo,{defaultSize:e?65:100,minSize:40,children:b.jsx(m4,{})}),e&&b.jsxs(b.Fragment,{children:[b.jsx(yp,{className:"w-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-col-resize"}),b.jsx(fo,{defaultSize:35,minSize:20,maxSize:60,children:b.jsx(FD,{})})]})]})}),b.jsx(yp,{className:"h-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-row-resize"}),b.jsx(fo,{defaultSize:30,minSize:5,maxSize:70,collapsible:!0,children:b.jsx(QD,{})})]})}const t6=3e4;function n6(){const e=he(p=>p.processEvent),n=he(p=>p.replayState),i=he(p=>p.setWsStatus),l=he(p=>p.setWsSend),o=V.useRef(null),s=V.useRef(1e3),u=V.useRef(null),f=V.useRef(null),d=V.useRef(()=>{}),h=V.useCallback(()=>{i("reconnecting"),u.current=setTimeout(()=>{s.current=Math.min(s.current*2,t6),d.current()},s.current)},[i]),m=V.useCallback(()=>{i("connecting"),f.current&&f.current.abort();const p=new AbortController;f.current=p,fetch("/api/state",{signal:p.signal}).then(y=>y.json()).then(y=>{y&&y.length>0&&n(y);const w=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{const k=new WebSocket(w);o.current=k,k.onopen=()=>{s.current=1e3,i("connected"),l(S=>{k.readyState===WebSocket.OPEN&&k.send(JSON.stringify(S))})},k.onmessage=S=>{try{const _=JSON.parse(S.data);e(_)}catch(_){console.error("Failed to parse WebSocket message:",_)}},k.onclose=()=>{i("disconnected"),l(null),o.current=null,h()},k.onerror=()=>{}}catch{h()}}).catch(y=>{p.signal.aborted||(console.error("Failed to fetch state:",y),h())})},[e,n,i,l,h]);d.current=m,V.useEffect(()=>(m(),()=>{f.current&&f.current.abort(),u.current&&clearTimeout(u.current),o.current&&o.current.close(),l(null)}),[m,l])}function r6(){const e=he(h=>h.setReplayMode),n=he(h=>h.setWsStatus),i=he(h=>h.replayPlaying),l=he(h=>h.replayPosition),o=he(h=>h.replayTotalEvents),s=he(h=>h.replaySpeed),u=he(h=>h.replayEvents),f=he(h=>h.setReplayPosition);V.useEffect(()=>{n("connecting"),fetch("/api/state").then(h=>h.json()).then(h=>{e(h),n("connected")}).catch(h=>{console.error("Failed to load replay events:",h),n("disconnected")})},[e,n]);const d=V.useRef(null);V.useEffect(()=>{if(!i||l>=o){d.current&&clearTimeout(d.current),i&&l>=o&&he.getState().setReplayPlaying(!1);return}const h=u[l-1],m=u[l];let p=100;if(h&&m){const y=(m.timestamp-h.timestamp)*1e3;p=Math.max(16,Math.min(y/s,2e3))}return d.current=setTimeout(()=>{f(l+1)},p),()=>{d.current&&clearTimeout(d.current)}},[i,l,o,s,u,f])}function i6(){return n6(),null}function l6(){return r6(),null}function a6(){const[e,n]=V.useState(null),i=he(s=>s.replayMode),l=he(s=>s.selectNode),o=he(s=>s.workflowName);return V.useEffect(()=>{fetch("/api/replay/info").then(s=>{s.ok?n(!0):n(!1)}).catch(()=>n(!1))},[]),V.useEffect(()=>{document.title=o?`Conductor — ${o}`:"Conductor Dashboard"},[o]),V.useEffect(()=>{const s=u=>{u.key==="Escape"&&l(null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[l]),e===null?null:b.jsxs("div",{className:"h-full flex flex-col bg-[var(--bg)]",children:[e?b.jsx(l6,{}):b.jsx(i6,{}),b.jsx(vN,{}),b.jsx(e6,{}),i?b.jsx(EN,{}):b.jsx(wN,{})]})}U2.createRoot(document.getElementById("root")).render(b.jsx(V.StrictMode,{children:b.jsx(a6,{})})); diff --git a/src/conductor/web/static/assets/index-DHEpYuxn.css b/src/conductor/web/static/assets/index-DHEpYuxn.css deleted file mode 100644 index 9961ba5..0000000 --- a/src/conductor/web/static/assets/index-DHEpYuxn.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-950:oklch(25.8% .092 26.042);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-\[4\.25rem\]{margin-left:4.25rem}.ml-\[calc\(7ch\+5ch\+8ch\+1rem\)\]{margin-left:calc(20ch + 1rem)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.\!h-2{height:calc(var(--spacing) * 2)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[90\%\]{height:90%}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-\[400px\]{max-height:400px}.\!w-2{width:calc(var(--spacing) * 2)!important}.w-0{width:calc(var(--spacing) * 0)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-\[3px\]{width:3px}.w-\[5ch\]{width:5ch}.w-\[80\%\]{width:80%}.w-full{width:100%}.max-w-\[16ch\]{max-width:16ch}.max-w-\[140px\]{max-width:140px}.max-w-\[220px\]{max-width:220px}.max-w-\[260px\]{max-width:260px}.max-w-\[560px\]{max-width:560px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8ch\]{min-width:8ch}.min-w-\[14px\]{min-width:14px}.min-w-\[140px\]{min-width:140px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[banner-in_200ms_ease-out\]{animation:.2s ease-out banner-in}.animate-\[context-pulse_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite context-pulse}.animate-\[tooltip-in_150ms_ease-out\]{animation:.15s ease-out tooltip-in}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-\[6px\]{border-inline-style:var(--tw-border-style);border-inline-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-green-500\/60{border-color:#00c75899}@supports (color:color-mix(in lab,red,red)){.border-green-500\/60{border-color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.border-transparent{border-color:#0000}.border-x-transparent{border-inline-color:#0000}.border-t-\[var\(--border\)\]{border-top-color:var(--border)}.\!bg-\[var\(--border\)\]{background-color:var(--border)!important}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--completed\)\]{background-color:var(--completed)}.bg-\[var\(--failed\)\]{background-color:var(--failed)}.bg-\[var\(--node-bg\)\]{background-color:var(--node-bg)}.bg-\[var\(--pending\)\]{background-color:var(--pending)}.bg-\[var\(--running\)\]{background-color:var(--running)}.bg-\[var\(--surface\)\],.bg-\[var\(--surface\)\]\/80{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface\)\]\/80{background-color:color-mix(in oklab,var(--surface) 80%,transparent)}}.bg-\[var\(--surface-hover\)\]{background-color:var(--surface-hover)}.bg-\[var\(--surface-raised\)\]{background-color:var(--surface-raised)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-950\/90{background-color:#032e15e6}@supports (color:color-mix(in lab,red,red)){.bg-green-950\/90{background-color:color-mix(in oklab,var(--color-green-950) 90%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-950\/50{background-color:#46080980}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/50{background-color:color-mix(in oklab,var(--color-red-950) 50%,transparent)}}.bg-red-950\/90{background-color:#460809e6}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/90{background-color:color-mix(in oklab,var(--color-red-950) 90%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-px{padding-top:1px}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--completed\)\]{color:var(--completed)}.text-\[var\(--failed\)\]{color:var(--failed)}.text-\[var\(--running\)\]{color:var(--running)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--waiting\)\]{color:var(--waiting)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-400\/70{color:#00d2efb3}@supports (color:color-mix(in lab,red,red)){.text-cyan-400\/70{color:color-mix(in oklab,var(--color-cyan-400) 70%,transparent)}}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400) 80%,transparent)}}.text-green-500\/60{color:#00c75899}@supports (color:color-mix(in lab,red,red)){.text-green-500\/60{color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-indigo-400\/70{color:#7d87ffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/70{color:color-mix(in oklab,var(--color-indigo-400) 70%,transparent)}}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400) 80%,transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--completed-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--running-glow\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--waiting-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--waiting-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--completed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--failed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--failed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--running-glow\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-500\/10{--tw-shadow-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-500\/10{--tw-shadow-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.shadow-red-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent\)\]{--tw-ring-color:var(--accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--bg\)\]{--tw-ring-offset-color:var(--bg)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}}.placeholder\:text-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-amber-400\/60:hover{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-400\/60:hover{border-color:color-mix(in oklab,var(--color-amber-400) 60%,transparent)}}.hover\:border-emerald-500\/30:hover{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-emerald-500\/30:hover{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:bg-\[var\(--node-bg\)\]:hover{background-color:var(--node-bg)}.hover\:bg-\[var\(--surface\)\]:hover{background-color:var(--surface)}.hover\:bg-\[var\(--surface-hover\)\]:hover{background-color:var(--surface-hover)}.hover\:bg-\[var\(--text-muted\)\]:hover{background-color:var(--text-muted)}.hover\:bg-amber-500\/5:hover{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/5:hover{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-\[var\(--text-secondary\)\]:hover{color:var(--text-secondary)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-amber-400:focus{border-color:var(--color-amber-400)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}}:root{--bg:#0a0a0f;--bg-subtle:#111118;--surface:#16161e;--surface-hover:#1c1c26;--surface-raised:#1e1e28;--border:#2a2a3a;--border-subtle:#223;--text:#e4e4ef;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--pending:#52525b;--running:#3b82f6;--running-glow:#3b82f680;--completed:#22c55e;--completed-muted:#22c55e40;--failed:#ef4444;--failed-muted:#ef444440;--waiting:#f59e0b;--waiting-muted:#f59e0b40;--skipped:#6b7280;--accent:#6366f1;--accent-muted:#6366f140;--node-bg:#1e1e2a;--node-border:#2e2e42;--edge-color:#2e2e42;--edge-active:#3b82f6;--edge-taken:#22c55e;--minimap-bg:#0d0d14;--minimap-mask:#ffffff10;--minimap-node:#3b82f680;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.react-flow__background{background:var(--bg)!important}.react-flow__minimap{background:var(--minimap-bg)!important;border:1px solid var(--border)!important;border-radius:8px!important}.react-flow__controls{overflow:hidden;border:1px solid var(--border)!important;border-radius:8px!important;box-shadow:0 4px 12px #0006!important}.react-flow__controls-button{background:var(--surface)!important;border:none!important;border-bottom:1px solid var(--border)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important;width:32px!important;height:32px!important}.react-flow__controls-button:hover{background:var(--surface-hover)!important;color:var(--text)!important;fill:var(--text)!important}.react-flow__controls-button:last-child{border-bottom:none!important}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 var(--running-glow)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes context-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes dash-flow{to{stroke-dashoffset:-20px}}@keyframes node-activate{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes node-complete-glow{0%{box-shadow:0 0 0 0 var(--completed-muted)}50%{box-shadow:0 0 16px 4px var(--completed-muted)}to{box-shadow:0 0 #0000}}@keyframes node-fail-glow{0%{box-shadow:0 0 0 0 var(--failed-muted)}50%{box-shadow:0 0 16px 4px var(--failed-muted)}to{box-shadow:0 0 #0000}}.node-activate{animation:.3s ease-out node-activate}.node-complete{animation:.4s ease-out node-complete-glow}.node-fail{animation:.4s ease-out node-fail-glow}@keyframes tooltip-in{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}[data-panel-group-direction=horizontal]>[data-resize-handle-active],[data-panel-group-direction=vertical]>[data-resize-handle-active]{background-color:var(--accent)!important}[data-resize-handle]{transition:background-color .15s;background-color:var(--border)!important}[data-resize-handle]:hover{background-color:var(--text-muted)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))} diff --git a/src/conductor/web/static/index.html b/src/conductor/web/static/index.html index e2d4383..177fab7 100644 --- a/src/conductor/web/static/index.html +++ b/src/conductor/web/static/index.html @@ -1,14 +1,14 @@ - - - - - - - Conductor Dashboard - - - - -
- - + + + + + + + Conductor Dashboard + + + + +
+ + From 593a052b8526c65e3129a8ddcbe7b50ef006818b Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 12:58:03 -0700 Subject: [PATCH 25/42] fix(composition): forward parent agent outputs to sub-workflow context When a parent workflow calls a sub-workflow via type: workflow, the child engine now inherits the parent's agent outputs in its context. This allows sub-workflow agents to access parent agent state (e.g., task_manager.output, pr_group_manager.output) by declaring them in their input: list, even when input_mapping doesn't cover all fields. Previously, sub-workflow agents could only access workflow.input.* (populated via input_mapping) and their own sibling agents' outputs. Parent agent outputs were lost at the sub-workflow boundary, causing nested sub-workflows to see default values (0, '') instead of the actual parent state. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 0dfd198..217f581 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -569,6 +569,14 @@ async def _execute_subworkflow( _subworkflow_depth=self._subworkflow_depth + 1, ) + # Inject parent agent outputs into the child workflow's context. + # This allows sub-workflow agents that declare parent agents in their + # input: list (e.g., task_manager.output?) to access parent state + # even when input_mapping doesn't cover all fields. + for key, value in context.items(): + if key not in ("workflow", "context") and isinstance(value, dict): + child_engine.context.agent_outputs[key] = value.get("output", value) + return await child_engine.run(sub_inputs) def _get_context_window_for_agent(self, agent: AgentDef) -> int | None: From 9e9263ff1bea002b5eb98075bc2da468859ea6db Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Wed, 22 Apr 2026 16:07:02 -0700 Subject: [PATCH 26/42] fix: Stop button now reliably stops subworkflows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a subworkflow agent is running, the shared interrupt_event was being silently consumed by _check_interrupt() in web mode (line 857: 'if self._web_dashboard is not None: return None'). This meant Stop would pause the current agent but then resume and continue — the interrupt never propagated to the parent engine. Two fixes: 1. _check_interrupt(): when _subworkflow_depth > 0, raise InterruptError instead of silently consuming the interrupt. This unwinds the child engine back to the parent's _execute_subworkflow try/except, stopping the workflow. 2. _handle_web_pause(): in subworkflows, also watch interrupt_event alongside resume/kill/disconnect events. A second Stop click while an agent is paused now raises InterruptError immediately, without requiring Resume first. Root-level (depth 0) behavior is unchanged — Stop still pauses the current agent with Resume/Kill options in the dashboard. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 484192b..a7a9c11 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -851,10 +851,11 @@ async def _check_interrupt(self, current_agent_name: str) -> InterruptResult | N # In web mode, the interrupt was already handled at the provider level # (partial output → _handle_web_pause). Consume the stale flag silently. - # We check for dashboard presence only (not has_connections) because in - # --web/--web-bg mode the CLI interactive handler is never appropriate, - # even if clients are transiently disconnected. + # EXCEPTION: in subworkflows (depth > 0), propagate the interrupt so it + # unwinds the child engine back to the parent, stopping the workflow. if self._web_dashboard is not None: + if self._subworkflow_depth > 0: + raise InterruptError(agent_name=current_agent_name) return None # Build output preview from last stored output @@ -958,6 +959,15 @@ async def _handle_web_pause(self, agent_name: str, partial_output: AgentOutput) disconnect_task = asyncio.create_task(disconnect_event.wait()) tasks = {resume_task, kill_task, disconnect_task} + # In subworkflows, also watch the interrupt_event so that a second + # Stop click while paused will stop the workflow without requiring + # the user to first Resume then wait for the next between-agent check. + stop_task = None + if self._subworkflow_depth > 0 and self._interrupt_event is not None: + self._interrupt_event.clear() + stop_task = asyncio.create_task(self._interrupt_event.wait()) + tasks.add(stop_task) + # If any event was set between clear() and task creation, the task # will already be done — no need to wait, but we still fall through # to the normal done/pending handling below. @@ -981,6 +991,12 @@ async def _handle_web_pause(self, agent_name: str, partial_output: AgentOutput) if kill_task in done: raise InterruptError(agent_name=agent_name) + # Stop-while-paused in a subworkflow: treat as interrupt + if stop_task is not None and stop_task in done: + if self._interrupt_event is not None: + self._interrupt_event.clear() + raise InterruptError(agent_name=agent_name) + if disconnect_task in done: logger.info( "All dashboard clients disconnected while '%s' was paused — auto-resuming", From 44ac6010cc8458445b966cd81814ff83a41418f5 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Thu, 23 Apr 2026 16:54:16 -0700 Subject: [PATCH 27/42] feat: enrich human gates with Markdown rendering and file links - Terminal gates: wrap prompt text in Rich Markdown for proper heading, bold, list, and link rendering in the CLI - Web dashboard: add GET /api/files/{path} endpoint to serve local files relative to the workflow root with security guards (path traversal protection, extension allowlist, 1MB size limit) - Web dashboard: add FileViewer modal component for viewing linked files with Markdown rendering support - Web dashboard: intercept relative links in gate prompts to open the FileViewer instead of navigating away; external URLs still open in new tabs - Tests: 13 file API security tests + 3 gate Markdown rendering tests (79 total tests pass across both test suites) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/cli/run.py | 8 +- src/conductor/gates/human.py | 5 +- .../src/components/detail/FileViewer.tsx | 188 +++++++++++ .../src/components/detail/GateDetail.tsx | 72 +++- src/conductor/web/server.py | 85 ++++- .../web/static/assets/index-CG932CnX.css | 1 + .../web/static/assets/index-Cd7LhUP_.css | 1 - .../{index-BrYWLhxG.js => index-DMGDz4Zm.js} | 139 ++++---- .../web/static/assets/index-EthNg1L-.js | 311 ------------------ src/conductor/web/static/index.html | 4 +- tests/test_gates/test_human.py | 65 +++- tests/test_web/test_server.py | 126 ++++++- 12 files changed, 599 insertions(+), 406 deletions(-) create mode 100644 src/conductor/web/frontend/src/components/detail/FileViewer.tsx create mode 100644 src/conductor/web/static/assets/index-CG932CnX.css delete mode 100644 src/conductor/web/static/assets/index-Cd7LhUP_.css rename src/conductor/web/static/assets/{index-BrYWLhxG.js => index-DMGDz4Zm.js} (61%) delete mode 100644 src/conductor/web/static/assets/index-EthNg1L-.js diff --git a/src/conductor/cli/run.py b/src/conductor/cli/run.py index bac9eba..d6ff0c3 100644 --- a/src/conductor/cli/run.py +++ b/src/conductor/cli/run.py @@ -1034,7 +1034,13 @@ async def run_workflow_async( from conductor.web.server import WebDashboard bg_mode = web_bg or os.environ.get("CONDUCTOR_WEB_BG") == "1" - dashboard = WebDashboard(emitter, host="127.0.0.1", port=web_port, bg=bg_mode) + dashboard = WebDashboard( + emitter, + host="127.0.0.1", + port=web_port, + bg=bg_mode, + workflow_root=Path(workflow_path).resolve().parent, + ) try: await dashboard.start() diff --git a/src/conductor/gates/human.py b/src/conductor/gates/human.py index 01e920a..0afcf55 100644 --- a/src/conductor/gates/human.py +++ b/src/conductor/gates/human.py @@ -11,6 +11,7 @@ from typing import TYPE_CHECKING, Any from rich.console import Console +from rich.markdown import Markdown as RichMarkdown from rich.panel import Panel from rich.prompt import IntPrompt, Prompt @@ -131,11 +132,11 @@ async def _display_and_select( Returns: The selected GateOption. """ - # Display the prompt in a styled panel + # Display the prompt in a styled panel (render as Markdown for rich formatting) self.console.print() self.console.print( Panel( - prompt_text, + RichMarkdown(prompt_text), title="[bold cyan]Decision Required[/bold cyan]", border_style="cyan", ) diff --git a/src/conductor/web/frontend/src/components/detail/FileViewer.tsx b/src/conductor/web/frontend/src/components/detail/FileViewer.tsx new file mode 100644 index 0000000..43c9996 --- /dev/null +++ b/src/conductor/web/frontend/src/components/detail/FileViewer.tsx @@ -0,0 +1,188 @@ +import { useState, useEffect, useCallback } from 'react'; +import ReactMarkdown from 'react-markdown'; +import { X, FileText, Loader2, AlertTriangle } from 'lucide-react'; + +interface FileViewerProps { + /** Relative file path to fetch from the workflow root */ + filePath: string; + /** Called when the viewer should be closed */ + onClose: () => void; +} + +interface FileData { + path: string; + content: string; + size: number; + extension: string; +} + +const MARKDOWN_EXTENSIONS = new Set(['.md', '.markdown', '.mdx']); + +export function FileViewer({ filePath, onClose }: FileViewerProps) { + const [data, setData] = useState(null); + const [error, setError] = useState(null); + const [loading, setLoading] = useState(true); + + const fetchFile = useCallback(async () => { + setLoading(true); + setError(null); + try { + const encoded = filePath + .split('/') + .map((seg) => encodeURIComponent(seg)) + .join('/'); + const res = await fetch(`/api/files/${encoded}`); + if (!res.ok) { + const body = await res.json().catch(() => ({})); + setError(body.error || `HTTP ${res.status}`); + return; + } + const json: FileData = await res.json(); + setData(json); + } catch (e) { + setError(e instanceof Error ? e.message : 'Failed to load file'); + } finally { + setLoading(false); + } + }, [filePath]); + + useEffect(() => { + fetchFile(); + }, [fetchFile]); + + // Close on Escape + useEffect(() => { + const handleKey = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + window.addEventListener('keydown', handleKey); + return () => window.removeEventListener('keydown', handleKey); + }, [onClose]); + + const isMarkdown = data ? MARKDOWN_EXTENSIONS.has(data.extension) : false; + + return ( +
+
+ {/* Header */} +
+ + + {filePath} + + {data && ( + + {formatSize(data.size)} + + )} + +
+ + {/* Body */} +
+ {loading && ( +
+ +
+ )} + + {error && ( +
+ + {error} +
+ )} + + {data && !error && ( + isMarkdown ? ( +
+ +
+ ) : ( +
+                {data.content}
+              
+ ) + )} +
+
+
+ ); +} + +function MarkdownContent({ content }: { content: string }) { + return ( +

{children}

, + h2: ({ children }) =>

{children}

, + h3: ({ children }) =>

{children}

, + p: ({ children }) =>

{children}

, + ul: ({ children }) =>
    {children}
, + ol: ({ children }) =>
    {children}
, + li: ({ children }) =>
  • {children}
  • , + code: ({ children, className }) => { + const isBlock = className?.includes('language-'); + if (isBlock) { + return ( + + {children} + + ); + } + return ( + + {children} + + ); + }, + pre: ({ children }) => ( +
    +            {children}
    +          
    + ), + strong: ({ children }) => {children}, + em: ({ children }) => {children}, + a: ({ href, children }) => ( + + {children} + + ), + blockquote: ({ children }) => ( +
    {children}
    + ), + hr: () =>
    , + table: ({ children }) => ( +
    + {children}
    +
    + ), + th: ({ children }) => ( + {children} + ), + td: ({ children }) => ( + {children} + ), + }} + > + {content} +
    + ); +} + +function formatSize(bytes: number): string { + if (bytes < 1024) return `${bytes} B`; + if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; + return `${(bytes / (1024 * 1024)).toFixed(1)} MB`; +} diff --git a/src/conductor/web/frontend/src/components/detail/GateDetail.tsx b/src/conductor/web/frontend/src/components/detail/GateDetail.tsx index 7544a09..f366c33 100644 --- a/src/conductor/web/frontend/src/components/detail/GateDetail.tsx +++ b/src/conductor/web/frontend/src/components/detail/GateDetail.tsx @@ -1,7 +1,8 @@ import { useState, useEffect } from 'react'; import ReactMarkdown from 'react-markdown'; -import { Check, Loader2, Send } from 'lucide-react'; +import { Check, Loader2, Send, FileText } from 'lucide-react'; import { MetadataGrid } from './MetadataGrid'; +import { FileViewer } from './FileViewer'; import type { NodeData } from '@/stores/workflow-store'; import { useWorkflowStore } from '@/stores/workflow-store'; @@ -17,6 +18,7 @@ export function GateDetail({ node }: GateDetailProps) { const [promptForValue, setPromptForValue] = useState(''); const [pendingPromptFor, setPendingPromptFor] = useState(null); const [isSending, setIsSending] = useState(false); + const [viewingFile, setViewingFile] = useState(null); const isWaiting = node.status === 'waiting'; const isCompleted = node.status === 'completed'; @@ -83,7 +85,7 @@ export function GateDetail({ node }: GateDetailProps) { {/* Prompt callout */} {node.prompt && (
    - +
    )} @@ -233,7 +235,7 @@ export function GateDetail({ node }: GateDetailProps) { {/* Prompt (dimmed, for context) */} {node.prompt && (
    - +
    )} @@ -308,17 +310,41 @@ export function GateDetail({ node }: GateDetailProps) { {node.prompt && (
    - +
    )} )} + + {/* File viewer modal */} + {viewingFile && ( + setViewingFile(null)} /> + )} ); } +/** Returns true if the href looks like a relative file path (not a URL, anchor, or scheme). */ +function isRelativeFileLink(href: string | undefined): href is string { + if (!href) return false; + // Reject URLs with schemes, protocol-relative, anchor-only, absolute paths + if (/^[a-z][a-z0-9+.-]*:/i.test(href)) return false; // http:, mailto:, javascript:, file:, etc. + if (href.startsWith('//')) return false; // protocol-relative + if (href.startsWith('#')) return false; // anchor-only + if (href.startsWith('/') || href.startsWith('\\')) return false; // absolute + return true; +} + /** Renders prompt text as markdown with dashboard-consistent styling. */ -function PromptMarkdown({ text, muted }: { text: string; muted: boolean }) { +function PromptMarkdown({ + text, + muted, + onFileClick, +}: { + text: string; + muted: boolean; + onFileClick?: (path: string) => void; +}) { const textColor = muted ? 'text-[var(--text-muted)]' : 'text-[var(--text)]'; return ( @@ -372,17 +398,31 @@ function PromptMarkdown({ text, muted }: { text: string; muted: boolean }) { {children} ), em: ({ children }) => {children}, - // Links - a: ({ href, children }) => ( - - {children} - - ), + // Links — intercept relative file links + a: ({ href, children }) => { + if (onFileClick && isRelativeFileLink(href)) { + return ( + + ); + } + return ( + + {children} + + ); + }, // Blockquote blockquote: ({ children }) => (
    diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index e5e2e43..5d4a78c 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -27,7 +27,7 @@ from pathlib import Path from typing import Any -from fastapi import FastAPI, WebSocket, WebSocketDisconnect +from fastapi import FastAPI, Request, WebSocket, WebSocketDisconnect from fastapi.responses import FileResponse, JSONResponse from fastapi.staticfiles import StaticFiles @@ -40,6 +40,14 @@ # Grace period (seconds) before auto-shutdown in --web-bg mode _BG_GRACE_SECONDS = 30 +# File API: allowed text extensions and max file size +_FILE_ALLOWED_EXTENSIONS = frozenset({ + ".md", ".txt", ".yaml", ".yml", ".json", ".log", + ".py", ".ts", ".js", ".tsx", ".jsx", ".css", ".html", + ".toml", ".cfg", ".ini", ".csv", ".xml", ".sh", ".bat", ".ps1", +}) +_FILE_MAX_SIZE = 1 * 1024 * 1024 # 1 MB + class WebDashboard: """Real-time web dashboard for workflow visualization. @@ -63,11 +71,13 @@ def __init__( host: str = "127.0.0.1", port: int = 0, bg: bool = False, + workflow_root: Path | None = None, ) -> None: self._emitter = emitter self._host = host self._port = port self._bg = bg + self._workflow_root = workflow_root.resolve() if workflow_root else None # State self._event_history: list[dict[str, Any]] = [] @@ -212,6 +222,79 @@ async def resume_agent() -> JSONResponse: self._resume_event.set() return JSONResponse({"status": "resuming"}) + @app.get("/api/files/{file_path:path}") + async def get_file(file_path: str) -> JSONResponse: + """Serve a local file relative to the workflow root directory. + + Used by the web dashboard to render files linked in human gate + Markdown prompts (e.g. ``[plan](./plans/design.md)``). + + Security: rejects absolute paths, path traversal, disallowed + extensions, and files larger than 1 MB. + """ + if self._workflow_root is None: + return JSONResponse( + {"error": "No workflow root configured"}, + status_code=404, + ) + + # Reject absolute, drive-qualified, UNC, and scheme-prefixed paths + if ( + file_path.startswith(("/", "\\")) + or "://" in file_path + or (len(file_path) >= 2 and file_path[1] == ":") + ): + return JSONResponse( + {"error": "Absolute paths are not allowed"}, + status_code=403, + ) + + try: + target = (self._workflow_root / file_path).resolve(strict=True) + except (OSError, ValueError): + return JSONResponse({"error": "File not found"}, status_code=404) + + # Containment check — target must be inside workflow root + try: + target.relative_to(self._workflow_root) + except ValueError: + return JSONResponse( + {"error": "Access denied — path outside workflow directory"}, + status_code=403, + ) + + # Extension allowlist + if target.suffix.lower() not in _FILE_ALLOWED_EXTENSIONS: + return JSONResponse( + {"error": f"File type '{target.suffix}' is not supported"}, + status_code=403, + ) + + # Size check + file_size = target.stat().st_size + if file_size > _FILE_MAX_SIZE: + return JSONResponse( + {"error": f"File too large ({file_size:,} bytes, max {_FILE_MAX_SIZE:,})"}, + status_code=413, + ) + + # Read as text + try: + content = target.read_text(encoding="utf-8") + except (UnicodeDecodeError, OSError) as e: + return JSONResponse( + {"error": f"Cannot read file: {e}"}, + status_code=422, + ) + + rel_path = str(target.relative_to(self._workflow_root)).replace("\\", "/") + return JSONResponse({ + "path": rel_path, + "content": content, + "size": file_size, + "extension": target.suffix.lower(), + }) + @app.websocket("/ws") async def websocket_endpoint(ws: WebSocket) -> None: await ws.accept() diff --git a/src/conductor/web/static/assets/index-CG932CnX.css b/src/conductor/web/static/assets/index-CG932CnX.css new file mode 100644 index 0000000..913eebe --- /dev/null +++ b/src/conductor/web/static/assets/index-CG932CnX.css @@ -0,0 +1 @@ +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-950:oklch(25.8% .092 26.042);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-\[4\.25rem\]{margin-left:4.25rem}.ml-\[calc\(7ch\+5ch\+8ch\+1rem\)\]{margin-left:calc(20ch + 1rem)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.\!h-2{height:calc(var(--spacing) * 2)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[90\%\]{height:90%}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[400px\]{max-height:400px}.min-h-0{min-height:calc(var(--spacing) * 0)}.\!w-2{width:calc(var(--spacing) * 2)!important}.w-0{width:calc(var(--spacing) * 0)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-\[3px\]{width:3px}.w-\[5ch\]{width:5ch}.w-\[80\%\]{width:80%}.w-\[90vw\]{width:90vw}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[16ch\]{max-width:16ch}.max-w-\[140px\]{max-width:140px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[560px\]{max-width:560px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8ch\]{min-width:8ch}.min-w-\[14px\]{min-width:14px}.min-w-\[140px\]{min-width:140px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[banner-in_200ms_ease-out\]{animation:.2s ease-out banner-in}.animate-\[context-pulse_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite context-pulse}.animate-\[tooltip-in_150ms_ease-out\]{animation:.15s ease-out tooltip-in}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-\[6px\]{border-inline-style:var(--tw-border-style);border-inline-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-green-500\/60{border-color:#00c75899}@supports (color:color-mix(in lab,red,red)){.border-green-500\/60{border-color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.border-transparent{border-color:#0000}.border-x-transparent{border-inline-color:#0000}.border-t-\[var\(--border\)\]{border-top-color:var(--border)}.\!bg-\[var\(--border\)\]{background-color:var(--border)!important}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--completed\)\]{background-color:var(--completed)}.bg-\[var\(--failed\)\]{background-color:var(--failed)}.bg-\[var\(--node-bg\)\]{background-color:var(--node-bg)}.bg-\[var\(--pending\)\]{background-color:var(--pending)}.bg-\[var\(--running\)\]{background-color:var(--running)}.bg-\[var\(--surface\)\],.bg-\[var\(--surface\)\]\/80{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface\)\]\/80{background-color:color-mix(in oklab,var(--surface) 80%,transparent)}}.bg-\[var\(--surface-hover\)\]{background-color:var(--surface-hover)}.bg-\[var\(--surface-raised\)\]{background-color:var(--surface-raised)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-950\/90{background-color:#032e15e6}@supports (color:color-mix(in lab,red,red)){.bg-green-950\/90{background-color:color-mix(in oklab,var(--color-green-950) 90%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-950\/50{background-color:#46080980}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/50{background-color:color-mix(in oklab,var(--color-red-950) 50%,transparent)}}.bg-red-950\/90{background-color:#460809e6}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/90{background-color:color-mix(in oklab,var(--color-red-950) 90%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-px{padding-top:1px}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--completed\)\]{color:var(--completed)}.text-\[var\(--failed\)\]{color:var(--failed)}.text-\[var\(--running\)\]{color:var(--running)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--waiting\)\]{color:var(--waiting)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-400\/70{color:#00d2efb3}@supports (color:color-mix(in lab,red,red)){.text-cyan-400\/70{color:color-mix(in oklab,var(--color-cyan-400) 70%,transparent)}}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400) 80%,transparent)}}.text-green-500\/60{color:#00c75899}@supports (color:color-mix(in lab,red,red)){.text-green-500\/60{color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-indigo-400\/70{color:#7d87ffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/70{color:color-mix(in oklab,var(--color-indigo-400) 70%,transparent)}}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400) 80%,transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--completed-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--running-glow\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--waiting-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--waiting-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--completed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--failed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--failed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--running-glow\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-500\/10{--tw-shadow-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-500\/10{--tw-shadow-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.shadow-red-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent\)\]{--tw-ring-color:var(--accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--bg\)\]{--tw-ring-offset-color:var(--bg)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}}.placeholder\:text-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-amber-400\/60:hover{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-400\/60:hover{border-color:color-mix(in oklab,var(--color-amber-400) 60%,transparent)}}.hover\:border-emerald-500\/30:hover{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-emerald-500\/30:hover{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:bg-\[var\(--node-bg\)\]:hover{background-color:var(--node-bg)}.hover\:bg-\[var\(--surface\)\]:hover{background-color:var(--surface)}.hover\:bg-\[var\(--surface-hover\)\]:hover{background-color:var(--surface-hover)}.hover\:bg-\[var\(--text-muted\)\]:hover{background-color:var(--text-muted)}.hover\:bg-amber-500\/5:hover{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/5:hover{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--running\)\]:hover{color:var(--running)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-\[var\(--text-secondary\)\]:hover{color:var(--text-secondary)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-amber-400:focus{border-color:var(--color-amber-400)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}}:root{--bg:#0a0a0f;--bg-subtle:#111118;--surface:#16161e;--surface-hover:#1c1c26;--surface-raised:#1e1e28;--border:#2a2a3a;--border-subtle:#223;--text:#e4e4ef;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--pending:#52525b;--running:#3b82f6;--running-glow:#3b82f680;--completed:#22c55e;--completed-muted:#22c55e40;--failed:#ef4444;--failed-muted:#ef444440;--waiting:#f59e0b;--waiting-muted:#f59e0b40;--skipped:#6b7280;--accent:#6366f1;--accent-muted:#6366f140;--node-bg:#1e1e2a;--node-border:#2e2e42;--edge-color:#2e2e42;--edge-active:#3b82f6;--edge-taken:#22c55e;--minimap-bg:#0d0d14;--minimap-mask:#ffffff10;--minimap-node:#3b82f680;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.react-flow__background{background:var(--bg)!important}.react-flow__minimap{background:var(--minimap-bg)!important;border:1px solid var(--border)!important;border-radius:8px!important}.react-flow__controls{overflow:hidden;border:1px solid var(--border)!important;border-radius:8px!important;box-shadow:0 4px 12px #0006!important}.react-flow__controls-button{background:var(--surface)!important;border:none!important;border-bottom:1px solid var(--border)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important;width:32px!important;height:32px!important}.react-flow__controls-button:hover{background:var(--surface-hover)!important;color:var(--text)!important;fill:var(--text)!important}.react-flow__controls-button:last-child{border-bottom:none!important}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 var(--running-glow)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes context-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes dash-flow{to{stroke-dashoffset:-20px}}@keyframes node-activate{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes node-complete-glow{0%{box-shadow:0 0 0 0 var(--completed-muted)}50%{box-shadow:0 0 16px 4px var(--completed-muted)}to{box-shadow:0 0 #0000}}@keyframes node-fail-glow{0%{box-shadow:0 0 0 0 var(--failed-muted)}50%{box-shadow:0 0 16px 4px var(--failed-muted)}to{box-shadow:0 0 #0000}}.node-activate{animation:.3s ease-out node-activate}.node-complete{animation:.4s ease-out node-complete-glow}.node-fail{animation:.4s ease-out node-fail-glow}@keyframes tooltip-in{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}[data-panel-group-direction=horizontal]>[data-resize-handle-active],[data-panel-group-direction=vertical]>[data-resize-handle-active]{background-color:var(--accent)!important}[data-resize-handle]{transition:background-color .15s;background-color:var(--border)!important}[data-resize-handle]:hover{background-color:var(--text-muted)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))} diff --git a/src/conductor/web/static/assets/index-Cd7LhUP_.css b/src/conductor/web/static/assets/index-Cd7LhUP_.css deleted file mode 100644 index 2c6ce8c..0000000 --- a/src/conductor/web/static/assets/index-Cd7LhUP_.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-950:oklch(25.8% .092 26.042);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-\[4\.25rem\]{margin-left:4.25rem}.ml-\[calc\(7ch\+5ch\+8ch\+1rem\)\]{margin-left:calc(20ch + 1rem)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.\!h-2{height:calc(var(--spacing) * 2)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[90\%\]{height:90%}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-\[400px\]{max-height:400px}.\!w-2{width:calc(var(--spacing) * 2)!important}.w-0{width:calc(var(--spacing) * 0)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-\[3px\]{width:3px}.w-\[5ch\]{width:5ch}.w-\[80\%\]{width:80%}.w-full{width:100%}.max-w-\[16ch\]{max-width:16ch}.max-w-\[140px\]{max-width:140px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[560px\]{max-width:560px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8ch\]{min-width:8ch}.min-w-\[14px\]{min-width:14px}.min-w-\[140px\]{min-width:140px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[banner-in_200ms_ease-out\]{animation:.2s ease-out banner-in}.animate-\[context-pulse_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite context-pulse}.animate-\[tooltip-in_150ms_ease-out\]{animation:.15s ease-out tooltip-in}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-\[6px\]{border-inline-style:var(--tw-border-style);border-inline-width:6px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-green-500\/60{border-color:#00c75899}@supports (color:color-mix(in lab,red,red)){.border-green-500\/60{border-color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab,red,red)){.border-red-500\/40{border-color:color-mix(in oklab,var(--color-red-500) 40%,transparent)}}.border-transparent{border-color:#0000}.border-x-transparent{border-inline-color:#0000}.border-t-\[var\(--border\)\]{border-top-color:var(--border)}.\!bg-\[var\(--border\)\]{background-color:var(--border)!important}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--completed\)\]{background-color:var(--completed)}.bg-\[var\(--failed\)\]{background-color:var(--failed)}.bg-\[var\(--node-bg\)\]{background-color:var(--node-bg)}.bg-\[var\(--pending\)\]{background-color:var(--pending)}.bg-\[var\(--running\)\]{background-color:var(--running)}.bg-\[var\(--surface\)\],.bg-\[var\(--surface\)\]\/80{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface\)\]\/80{background-color:color-mix(in oklab,var(--surface) 80%,transparent)}}.bg-\[var\(--surface-hover\)\]{background-color:var(--surface-hover)}.bg-\[var\(--surface-raised\)\]{background-color:var(--surface-raised)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-950\/90{background-color:#032e15e6}@supports (color:color-mix(in lab,red,red)){.bg-green-950\/90{background-color:color-mix(in oklab,var(--color-green-950) 90%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-950\/50{background-color:#46080980}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/50{background-color:color-mix(in oklab,var(--color-red-950) 50%,transparent)}}.bg-red-950\/90{background-color:#460809e6}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/90{background-color:color-mix(in oklab,var(--color-red-950) 90%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-px{padding-top:1px}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--completed\)\]{color:var(--completed)}.text-\[var\(--failed\)\]{color:var(--failed)}.text-\[var\(--running\)\]{color:var(--running)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--waiting\)\]{color:var(--waiting)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-400\/70{color:#00d2efb3}@supports (color:color-mix(in lab,red,red)){.text-cyan-400\/70{color:color-mix(in oklab,var(--color-cyan-400) 70%,transparent)}}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400) 80%,transparent)}}.text-green-500\/60{color:#00c75899}@supports (color:color-mix(in lab,red,red)){.text-green-500\/60{color:color-mix(in oklab,var(--color-green-500) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-indigo-400\/70{color:#7d87ffb3}@supports (color:color-mix(in lab,red,red)){.text-indigo-400\/70{color:color-mix(in oklab,var(--color-indigo-400) 70%,transparent)}}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400) 80%,transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--completed-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--running-glow\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_var\(--waiting-muted\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,var(--waiting-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--completed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--completed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--failed-muted\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--failed-muted));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_var\(--running-glow\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,var(--running-glow));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-500\/10{--tw-shadow-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-500\/10{--tw-shadow-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.shadow-red-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent\)\]{--tw-ring-color:var(--accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--bg\)\]{--tw-ring-offset-color:var(--bg)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}}.placeholder\:text-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:border-amber-400\/60:hover{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-400\/60:hover{border-color:color-mix(in oklab,var(--color-amber-400) 60%,transparent)}}.hover\:border-emerald-500\/30:hover{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-emerald-500\/30:hover{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:bg-\[var\(--node-bg\)\]:hover{background-color:var(--node-bg)}.hover\:bg-\[var\(--surface\)\]:hover{background-color:var(--surface)}.hover\:bg-\[var\(--surface-hover\)\]:hover{background-color:var(--surface-hover)}.hover\:bg-\[var\(--text-muted\)\]:hover{background-color:var(--text-muted)}.hover\:bg-amber-500\/5:hover{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/5:hover{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-emerald-500\/20:hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/20:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-red-500\/30:hover{background-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/30:hover{background-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--running\)\]:hover{color:var(--running)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-\[var\(--text-secondary\)\]:hover{color:var(--text-secondary)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-amber-400:focus{border-color:var(--color-amber-400)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}}:root{--bg:#0a0a0f;--bg-subtle:#111118;--surface:#16161e;--surface-hover:#1c1c26;--surface-raised:#1e1e28;--border:#2a2a3a;--border-subtle:#223;--text:#e4e4ef;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--pending:#52525b;--running:#3b82f6;--running-glow:#3b82f680;--completed:#22c55e;--completed-muted:#22c55e40;--failed:#ef4444;--failed-muted:#ef444440;--waiting:#f59e0b;--waiting-muted:#f59e0b40;--skipped:#6b7280;--accent:#6366f1;--accent-muted:#6366f140;--node-bg:#1e1e2a;--node-border:#2e2e42;--edge-color:#2e2e42;--edge-active:#3b82f6;--edge-taken:#22c55e;--minimap-bg:#0d0d14;--minimap-mask:#ffffff10;--minimap-node:#3b82f680;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.react-flow__background{background:var(--bg)!important}.react-flow__minimap{background:var(--minimap-bg)!important;border:1px solid var(--border)!important;border-radius:8px!important}.react-flow__controls{overflow:hidden;border:1px solid var(--border)!important;border-radius:8px!important;box-shadow:0 4px 12px #0006!important}.react-flow__controls-button{background:var(--surface)!important;border:none!important;border-bottom:1px solid var(--border)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important;width:32px!important;height:32px!important}.react-flow__controls-button:hover{background:var(--surface-hover)!important;color:var(--text)!important;fill:var(--text)!important}.react-flow__controls-button:last-child{border-bottom:none!important}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 var(--running-glow)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}@keyframes subtle-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes context-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes dash-flow{to{stroke-dashoffset:-20px}}@keyframes node-activate{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes node-complete-glow{0%{box-shadow:0 0 0 0 var(--completed-muted)}50%{box-shadow:0 0 16px 4px var(--completed-muted)}to{box-shadow:0 0 #0000}}@keyframes node-fail-glow{0%{box-shadow:0 0 0 0 var(--failed-muted)}50%{box-shadow:0 0 16px 4px var(--failed-muted)}to{box-shadow:0 0 #0000}}.node-activate{animation:.3s ease-out node-activate}.node-complete{animation:.4s ease-out node-complete-glow}.node-fail{animation:.4s ease-out node-fail-glow}@keyframes tooltip-in{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}[data-panel-group-direction=horizontal]>[data-resize-handle-active],[data-panel-group-direction=vertical]>[data-resize-handle-active]{background-color:var(--accent)!important}[data-resize-handle]{transition:background-color .15s;background-color:var(--border)!important}[data-resize-handle]:hover{background-color:var(--text-muted)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))} diff --git a/src/conductor/web/static/assets/index-BrYWLhxG.js b/src/conductor/web/static/assets/index-DMGDz4Zm.js similarity index 61% rename from src/conductor/web/static/assets/index-BrYWLhxG.js rename to src/conductor/web/static/assets/index-DMGDz4Zm.js index e8e9302..798491c 100644 --- a/src/conductor/web/static/assets/index-BrYWLhxG.js +++ b/src/conductor/web/static/assets/index-DMGDz4Zm.js @@ -1,4 +1,4 @@ -var L2=Object.defineProperty;var H2=(e,n,r)=>n in e?L2(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;var kt=(e,n,r)=>H2(e,typeof n!="symbol"?n+"":n,r);function B2(e,n){for(var r=0;rl[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();function qo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Vd={exports:{}},io={};/** +var q2=Object.defineProperty;var U2=(e,n,r)=>n in e?q2(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;var kt=(e,n,r)=>U2(e,typeof n!="symbol"?n+"":n,r);function I2(e,n){for(var r=0;rl[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();function Uo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Vd={exports:{}},ao={};/** * @license React * react-jsx-runtime.production.js * @@ -6,7 +6,7 @@ var L2=Object.defineProperty;var H2=(e,n,r)=>n in e?L2(e,n,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var mx;function q2(){if(mx)return io;mx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(l,a,s){var u=null;if(s!==void 0&&(u=""+s),a.key!==void 0&&(u=""+a.key),"key"in a){s={};for(var f in a)f!=="key"&&(s[f]=a[f])}else s=a;return a=s.ref,{$$typeof:e,type:l,key:u,ref:a!==void 0?a:null,props:s}}return io.Fragment=n,io.jsx=r,io.jsxs=r,io}var gx;function U2(){return gx||(gx=1,Vd.exports=q2()),Vd.exports}var b=U2(),Gd={exports:{}},ze={};/** + */var mx;function V2(){if(mx)return ao;mx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(l,a,s){var u=null;if(s!==void 0&&(u=""+s),a.key!==void 0&&(u=""+a.key),"key"in a){s={};for(var f in a)f!=="key"&&(s[f]=a[f])}else s=a;return a=s.ref,{$$typeof:e,type:l,key:u,ref:a!==void 0?a:null,props:s}}return ao.Fragment=n,ao.jsx=r,ao.jsxs=r,ao}var gx;function G2(){return gx||(gx=1,Vd.exports=V2()),Vd.exports}var b=G2(),Gd={exports:{}},ze={};/** * @license React * react.production.js * @@ -14,7 +14,7 @@ var L2=Object.defineProperty;var H2=(e,n,r)=>n in e?L2(e,n,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var yx;function I2(){if(yx)return ze;yx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),y=Symbol.iterator;function v(B){return B===null||typeof B!="object"?null:(B=y&&B[y]||B["@@iterator"],typeof B=="function"?B:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,S={};function _(B,P,N){this.props=B,this.context=P,this.refs=S,this.updater=N||w}_.prototype.isReactComponent={},_.prototype.setState=function(B,P){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,P,"setState")},_.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function T(){}T.prototype=_.prototype;function E(B,P,N){this.props=B,this.context=P,this.refs=S,this.updater=N||w}var z=E.prototype=new T;z.constructor=E,k(z,_.prototype),z.isPureReactComponent=!0;var I=Array.isArray;function A(){}var L={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function U(B,P,N){var Y=N.ref;return{$$typeof:e,type:B,key:P,ref:Y!==void 0?Y:null,props:N}}function X(B,P){return U(B.type,P,B.props)}function H(B){return typeof B=="object"&&B!==null&&B.$$typeof===e}function q(B){var P={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(N){return P[N]})}var ee=/\/+/g;function R(B,P){return typeof B=="object"&&B!==null&&B.key!=null?q(""+B.key):P.toString(36)}function G(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(A,A):(B.status="pending",B.then(function(P){B.status==="pending"&&(B.status="fulfilled",B.value=P)},function(P){B.status==="pending"&&(B.status="rejected",B.reason=P)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function M(B,P,N,Y,F){var J=typeof B;(J==="undefined"||J==="boolean")&&(B=null);var ne=!1;if(B===null)ne=!0;else switch(J){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(B.$$typeof){case e:case n:ne=!0;break;case m:return ne=B._init,M(ne(B._payload),P,N,Y,F)}}if(ne)return F=F(B),ne=Y===""?"."+R(B,0):Y,I(F)?(N="",ne!=null&&(N=ne.replace(ee,"$&/")+"/"),M(F,P,N,"",function(ye){return ye})):F!=null&&(H(F)&&(F=X(F,N+(F.key==null||B&&B.key===F.key?"":(""+F.key).replace(ee,"$&/")+"/")+ne)),P.push(F)),1;ne=0;var re=Y===""?".":Y+":";if(I(B))for(var se=0;sen in e?L2(e,n,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var vx;function G2(){return vx||(vx=1,(function(e){function n(M,$){var Q=M.length;M.push($);e:for(;0>>1,j=M[K];if(0>>1;Ka(N,Q))Ya(F,N)?(M[K]=F,M[Y]=Q,K=Y):(M[K]=N,M[P]=Q,K=P);else if(Ya(F,Q))M[K]=F,M[Y]=Q,K=Y;else break e}}return $}function a(M,$){var Q=M.sortIndex-$.sortIndex;return Q!==0?Q:M.id-$.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var u=Date,f=u.now();e.unstable_now=function(){return u.now()-f}}var h=[],d=[],m=1,p=null,y=3,v=!1,w=!1,k=!1,S=!1,_=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function z(M){for(var $=r(d);$!==null;){if($.callback===null)l(d);else if($.startTime<=M)l(d),$.sortIndex=$.expirationTime,n(h,$);else break;$=r(d)}}function I(M){if(k=!1,z(M),!w)if(r(h)!==null)w=!0,A||(A=!0,q());else{var $=r(d);$!==null&&G(I,$.startTime-M)}}var A=!1,L=-1,D=5,U=-1;function X(){return S?!0:!(e.unstable_now()-UM&&X());){var K=p.callback;if(typeof K=="function"){p.callback=null,y=p.priorityLevel;var j=K(p.expirationTime<=M);if(M=e.unstable_now(),typeof j=="function"){p.callback=j,z(M),$=!0;break t}p===r(h)&&l(h),z(M)}else l(h);p=r(h)}if(p!==null)$=!0;else{var B=r(d);B!==null&&G(I,B.startTime-M),$=!1}}break e}finally{p=null,y=Q,v=!1}$=void 0}}finally{$?q():A=!1}}}var q;if(typeof E=="function")q=function(){E(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,R=ee.port2;ee.port1.onmessage=H,q=function(){R.postMessage(null)}}else q=function(){_(H,0)};function G(M,$){L=_(function(){M(e.unstable_now())},$)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_forceFrameRate=function(M){0>M||125K?(M.sortIndex=Q,n(d,M),r(h)===null&&M===r(d)&&(k?(T(L),L=-1):k=!0,G(I,Q-K))):(M.sortIndex=j,n(h,M),w||v||(w=!0,A||(A=!0,q()))),M},e.unstable_shouldYield=X,e.unstable_wrapCallback=function(M){var $=y;return function(){var Q=y;y=$;try{return M.apply(this,arguments)}finally{y=Q}}}})(Pd)),Pd}var bx;function Y2(){return bx||(bx=1,$d.exports=G2()),$d.exports}var Xd={exports:{}},Yt={};/** + */var vx;function P2(){return vx||(vx=1,(function(e){function n(j,$){var Q=j.length;j.push($);e:for(;0>>1,M=j[K];if(0>>1;Ka(E,Q))Ya(F,E)?(j[K]=F,j[Y]=Q,K=Y):(j[K]=E,j[P]=Q,K=P);else if(Ya(F,Q))j[K]=F,j[Y]=Q,K=Y;else break e}}return $}function a(j,$){var Q=j.sortIndex-$.sortIndex;return Q!==0?Q:j.id-$.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var u=Date,f=u.now();e.unstable_now=function(){return u.now()-f}}var h=[],d=[],m=1,p=null,y=3,v=!1,w=!1,k=!1,_=!1,S=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function A(j){for(var $=r(d);$!==null;){if($.callback===null)l(d);else if($.startTime<=j)l(d),$.sortIndex=$.expirationTime,n(h,$);else break;$=r(d)}}function R(j){if(k=!1,A(j),!w)if(r(h)!==null)w=!0,z||(z=!0,U());else{var $=r(d);$!==null&&G(R,$.startTime-j)}}var z=!1,L=-1,D=5,I=-1;function X(){return _?!0:!(e.unstable_now()-Ij&&X());){var K=p.callback;if(typeof K=="function"){p.callback=null,y=p.priorityLevel;var M=K(p.expirationTime<=j);if(j=e.unstable_now(),typeof M=="function"){p.callback=M,A(j),$=!0;break t}p===r(h)&&l(h),A(j)}else l(h);p=r(h)}if(p!==null)$=!0;else{var q=r(d);q!==null&&G(R,q.startTime-j),$=!1}}break e}finally{p=null,y=Q,v=!1}$=void 0}}finally{$?U():z=!1}}}var U;if(typeof N=="function")U=function(){N(B)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,H=ee.port2;ee.port1.onmessage=B,U=function(){H.postMessage(null)}}else U=function(){S(B,0)};function G(j,$){L=S(function(){j(e.unstable_now())},$)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(j){j.callback=null},e.unstable_forceFrameRate=function(j){0>j||125K?(j.sortIndex=Q,n(d,j),r(h)===null&&j===r(d)&&(k?(T(L),L=-1):k=!0,G(R,Q-K))):(j.sortIndex=M,n(h,j),w||v||(w=!0,z||(z=!0,U()))),j},e.unstable_shouldYield=X,e.unstable_wrapCallback=function(j){var $=y;return function(){var Q=y;y=$;try{return j.apply(this,arguments)}finally{y=Q}}}})(Pd)),Pd}var bx;function X2(){return bx||(bx=1,$d.exports=P2()),$d.exports}var Xd={exports:{}},Yt={};/** * @license React * react-dom.production.js * @@ -30,7 +30,7 @@ var L2=Object.defineProperty;var H2=(e,n,r)=>n in e?L2(e,n,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var wx;function $2(){if(wx)return Yt;wx=1;var e=Uo();function n(h){var d="https://react.dev/errors/"+h;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Xd.exports=$2(),Xd.exports}/** + */var wx;function F2(){if(wx)return Yt;wx=1;var e=Io();function n(h){var d="https://react.dev/errors/"+h;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Xd.exports=F2(),Xd.exports}/** * @license React * react-dom-client.production.js * @@ -38,219 +38,224 @@ var L2=Object.defineProperty;var H2=(e,n,r)=>n in e?L2(e,n,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var _x;function P2(){if(_x)return lo;_x=1;var e=Y2(),n=Uo(),r=zb();function l(t){var i="https://react.dev/errors/"+t;if(1j||(t.current=K[j],K[j]=null,j--)}function N(t,i){j++,K[j]=t.current,t.current=i}var Y=B(null),F=B(null),J=B(null),ne=B(null);function re(t,i){switch(N(J,i),N(F,t),N(Y,null),i.nodeType){case 9:case 11:t=(t=i.documentElement)&&(t=t.namespaceURI)?By(t):0;break;default:if(t=i.tagName,i=i.namespaceURI)i=By(i),t=qy(i,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}P(Y),N(Y,t)}function se(){P(Y),P(F),P(J)}function ye(t){t.memoizedState!==null&&N(ne,t);var i=Y.current,o=qy(i,t.type);i!==o&&(N(F,t),N(Y,o))}function ve(t){F.current===t&&(P(Y),P(F)),ne.current===t&&(P(ne),eo._currentValue=Q)}var xe,pe;function _e(t){if(xe===void 0)try{throw Error()}catch(o){var i=o.stack.trim().match(/\n( *(at )?)/);xe=i&&i[1]||"",pe=-1M||(t.current=K[M],K[M]=null,M--)}function E(t,i){M++,K[M]=t.current,t.current=i}var Y=q(null),F=q(null),J=q(null),ne=q(null);function re(t,i){switch(E(J,i),E(F,t),E(Y,null),i.nodeType){case 9:case 11:t=(t=i.documentElement)&&(t=t.namespaceURI)?By(t):0;break;default:if(t=i.tagName,i=i.namespaceURI)i=By(i),t=qy(i,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}P(Y),E(Y,t)}function se(){P(Y),P(F),P(J)}function ye(t){t.memoizedState!==null&&E(ne,t);var i=Y.current,o=qy(i,t.type);i!==o&&(E(F,t),E(Y,o))}function ve(t){F.current===t&&(P(Y),P(F)),ne.current===t&&(P(ne),no._currentValue=Q)}var xe,pe;function _e(t){if(xe===void 0)try{throw Error()}catch(o){var i=o.stack.trim().match(/\n( *(at )?)/);xe=i&&i[1]||"",pe=-1)":-1g||Z[c]!==le[g]){var ce=` -`+Z[c].replace(" at new "," at ");return t.displayName&&ce.includes("")&&(ce=ce.replace("",t.displayName)),ce}while(1<=c&&0<=g);break}}}finally{Me=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?_e(o):""}function ut(t,i){switch(t.tag){case 26:case 27:case 5:return _e(t.type);case 16:return _e("Lazy");case 13:return t.child!==i&&i!==null?_e("Suspense Fallback"):_e("Suspense");case 19:return _e("SuspenseList");case 0:case 15:return Ce(t.type,!1);case 11:return Ce(t.type.render,!1);case 1:return Ce(t.type,!0);case 31:return _e("Activity");default:return""}}function tt(t){try{var i="",o=null;do i+=ut(t,o),o=t,t=t.return;while(t);return i}catch(c){return` +`+Z[c].replace(" at new "," at ");return t.displayName&&ce.includes("")&&(ce=ce.replace("",t.displayName)),ce}while(1<=c&&0<=g);break}}}finally{je=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?_e(o):""}function ut(t,i){switch(t.tag){case 26:case 27:case 5:return _e(t.type);case 16:return _e("Lazy");case 13:return t.child!==i&&i!==null?_e("Suspense Fallback"):_e("Suspense");case 19:return _e("SuspenseList");case 0:case 15:return Ce(t.type,!1);case 11:return Ce(t.type.render,!1);case 1:return Ce(t.type,!0);case 31:return _e("Activity");default:return""}}function tt(t){try{var i="",o=null;do i+=ut(t,o),o=t,t=t.return;while(t);return i}catch(c){return` Error generating stack: `+c.message+` -`+c.stack}}var At=Object.prototype.hasOwnProperty,It=e.unstable_scheduleCallback,Rt=e.unstable_cancelCallback,Sn=e.unstable_shouldYield,jn=e.unstable_requestPaint,Mt=e.unstable_now,Or=e.unstable_getCurrentPriorityLevel,ue=e.unstable_ImmediatePriority,ge=e.unstable_UserBlockingPriority,Ne=e.unstable_NormalPriority,Re=e.unstable_LowPriority,Ye=e.unstable_IdlePriority,Xt=e.log,On=e.unstable_setDisableYieldValue,Lt=null,xt=null;function Vt(t){if(typeof Xt=="function"&&On(t),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(Lt,t)}catch{}}var Je=Math.clz32?Math.clz32:zc,Pn=Math.log,un=Math.LN2;function zc(t){return t>>>=0,t===0?32:31-(Pn(t)/un|0)|0}var nl=256,rl=262144,il=4194304;function lr(t){var i=t&42;if(i!==0)return i;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function ll(t,i,o){var c=t.pendingLanes;if(c===0)return 0;var g=0,x=t.suspendedLanes,C=t.pingedLanes;t=t.warmLanes;var O=c&134217727;return O!==0?(c=O&~x,c!==0?g=lr(c):(C&=O,C!==0?g=lr(C):o||(o=O&~t,o!==0&&(g=lr(o))))):(O=c&~x,O!==0?g=lr(O):C!==0?g=lr(C):o||(o=c&~t,o!==0&&(g=lr(o)))),g===0?0:i!==0&&i!==g&&(i&x)===0&&(x=g&-g,o=i&-i,x>=o||x===32&&(o&4194048)!==0)?i:g}function yi(t,i){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&i)===0}function Ac(t,i){switch(t){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Wo(){var t=il;return il<<=1,(il&62914560)===0&&(il=4194304),t}function fa(t){for(var i=[],o=0;31>o;o++)i.push(t);return i}function xi(t,i){t.pendingLanes|=i,i!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Mc(t,i,o,c,g,x){var C=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var O=t.entanglements,Z=t.expirationTimes,le=t.hiddenUpdates;for(o=C&~o;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Lc=/[\n"\\]/g;function Kt(t){return t.replace(Lc,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function wi(t,i,o,c,g,x,C,O){t.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?t.type=C:t.removeAttribute("type"),i!=null?C==="number"?(i===0&&t.value===""||t.value!=i)&&(t.value=""+Zt(i)):t.value!==""+Zt(i)&&(t.value=""+Zt(i)):C!=="submit"&&C!=="reset"||t.removeAttribute("value"),i!=null?ga(t,C,Zt(i)):o!=null?ga(t,C,Zt(o)):c!=null&&t.removeAttribute("value"),g==null&&x!=null&&(t.defaultChecked=!!x),g!=null&&(t.checked=g&&typeof g!="function"&&typeof g!="symbol"),O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"?t.name=""+Zt(O):t.removeAttribute("name")}function ds(t,i,o,c,g,x,C,O){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(t.type=x),i!=null||o!=null){if(!(x!=="submit"&&x!=="reset"||i!=null)){qr(t);return}o=o!=null?""+Zt(o):"",i=i!=null?""+Zt(i):o,O||i===t.value||(t.value=i),t.defaultValue=i}c=c??g,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=O?t.checked:!!c,t.defaultChecked=!!c,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(t.name=C),qr(t)}function ga(t,i,o){i==="number"&&bi(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function sr(t,i,o,c){if(t=t.options,i){i={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ic=!1;if(cr)try{var xa={};Object.defineProperty(xa,"passive",{get:function(){Ic=!0}}),window.addEventListener("test",xa,xa),window.removeEventListener("test",xa,xa)}catch{Ic=!1}var Ur=null,Vc=null,ps=null;function qm(){if(ps)return ps;var t,i=Vc,o=i.length,c,g="value"in Ur?Ur.value:Ur.textContent,x=g.length;for(t=0;t=wa),$m=" ",Pm=!1;function Xm(t,i){switch(t){case"keyup":return iE.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var dl=!1;function aE(t,i){switch(t){case"compositionend":return Fm(i);case"keypress":return i.which!==32?null:(Pm=!0,$m);case"textInput":return t=i.data,t===$m&&Pm?null:t;default:return null}}function oE(t,i){if(dl)return t==="compositionend"||!Xc&&Xm(t,i)?(t=qm(),ps=Vc=Ur=null,dl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:o,offset:i-t};t=c}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=ng(o)}}function ig(t,i){return t&&i?t===i?!0:t&&t.nodeType===3?!1:i&&i.nodeType===3?ig(t,i.parentNode):"contains"in t?t.contains(i):t.compareDocumentPosition?!!(t.compareDocumentPosition(i)&16):!1:!1}function lg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var i=bi(t.document);i instanceof t.HTMLIFrameElement;){try{var o=typeof i.contentWindow.location.href=="string"}catch{o=!1}if(o)t=i.contentWindow;else break;i=bi(t.document)}return i}function Zc(t){var i=t&&t.nodeName&&t.nodeName.toLowerCase();return i&&(i==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||i==="textarea"||t.contentEditable==="true")}var mE=cr&&"documentMode"in document&&11>=document.documentMode,hl=null,Kc=null,Na=null,Jc=!1;function ag(t,i,o){var c=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Jc||hl==null||hl!==bi(c)||(c=hl,"selectionStart"in c&&Zc(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Na&&Ea(Na,c)||(Na=c,c=ou(Kc,"onSelect"),0>=C,g-=C,Fn=1<<32-Je(i)+g|o<je?(Ue=Se,Se=null):Ue=Se.sibling;var Fe=ae(te,Se,ie[je],fe);if(Fe===null){Se===null&&(Se=Ue);break}t&&Se&&Fe.alternate===null&&i(te,Se),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe,Se=Ue}if(je===ie.length)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;jeje?(Ue=Se,Se=null):Ue=Se.sibling;var si=ae(te,Se,Fe.value,fe);if(si===null){Se===null&&(Se=Ue);break}t&&Se&&si.alternate===null&&i(te,Se),W=x(si,W,je),Xe===null?Ee=si:Xe.sibling=si,Xe=si,Se=Ue}if(Fe.done)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;!Fe.done;je++,Fe=ie.next())Fe=de(te,Fe.value,fe),Fe!==null&&(W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return Ve&&dr(te,je),Ee}for(Se=c(Se);!Fe.done;je++,Fe=ie.next())Fe=oe(Se,te,je,Fe.value,fe),Fe!==null&&(t&&Fe.alternate!==null&&Se.delete(Fe.key===null?je:Fe.key),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return t&&Se.forEach(function(R2){return i(te,R2)}),Ve&&dr(te,je),Ee}function it(te,W,ie,fe){if(typeof ie=="object"&&ie!==null&&ie.type===k&&ie.key===null&&(ie=ie.props.children),typeof ie=="object"&&ie!==null){switch(ie.$$typeof){case v:e:{for(var Ee=ie.key;W!==null;){if(W.key===Ee){if(Ee=ie.type,Ee===k){if(W.tag===7){o(te,W.sibling),fe=g(W,ie.props.children),fe.return=te,te=fe;break e}}else if(W.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&Mi(Ee)===W.type){o(te,W.sibling),fe=g(W,ie.props),Ma(fe,ie),fe.return=te,te=fe;break e}o(te,W);break}else i(te,W);W=W.sibling}ie.type===k?(fe=ki(ie.props.children,te.mode,fe,ie.key),fe.return=te,te=fe):(fe=Es(ie.type,ie.key,ie.props,null,te.mode,fe),Ma(fe,ie),fe.return=te,te=fe)}return C(te);case w:e:{for(Ee=ie.key;W!==null;){if(W.key===Ee)if(W.tag===4&&W.stateNode.containerInfo===ie.containerInfo&&W.stateNode.implementation===ie.implementation){o(te,W.sibling),fe=g(W,ie.children||[]),fe.return=te,te=fe;break e}else{o(te,W);break}else i(te,W);W=W.sibling}fe=af(ie,te.mode,fe),fe.return=te,te=fe}return C(te);case D:return ie=Mi(ie),it(te,W,ie,fe)}if(G(ie))return we(te,W,ie,fe);if(q(ie)){if(Ee=q(ie),typeof Ee!="function")throw Error(l(150));return ie=Ee.call(ie),ke(te,W,ie,fe)}if(typeof ie.then=="function")return it(te,W,Ms(ie),fe);if(ie.$$typeof===E)return it(te,W,Cs(te,ie),fe);js(te,ie)}return typeof ie=="string"&&ie!==""||typeof ie=="number"||typeof ie=="bigint"?(ie=""+ie,W!==null&&W.tag===6?(o(te,W.sibling),fe=g(W,ie),fe.return=te,te=fe):(o(te,W),fe=lf(ie,te.mode,fe),fe.return=te,te=fe),C(te)):o(te,W)}return function(te,W,ie,fe){try{Aa=0;var Ee=it(te,W,ie,fe);return El=null,Ee}catch(Se){if(Se===_l||Se===zs)throw Se;var Xe=fn(29,Se,null,te.mode);return Xe.lanes=fe,Xe.return=te,Xe}finally{}}}var Oi=zg(!0),Ag=zg(!1),$r=!1;function xf(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vf(t,i){t=t.updateQueue,i.updateQueue===t&&(i.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Pr(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Xr(t,i,o){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(Ze&2)!==0){var g=c.pending;return g===null?i.next=i:(i.next=g.next,g.next=i),c.pending=i,i=_s(t),hg(t,null,o),i}return Ss(t,c,i,o),_s(t)}function ja(t,i,o){if(i=i.updateQueue,i!==null&&(i=i.shared,(o&4194048)!==0)){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,ts(t,o)}}function bf(t,i){var o=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,o===c)){var g=null,x=null;if(o=o.firstBaseUpdate,o!==null){do{var C={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};x===null?g=x=C:x=x.next=C,o=o.next}while(o!==null);x===null?g=x=i:x=x.next=i}else g=x=i;o={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:x,shared:c.shared,callbacks:c.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=i:t.next=i,o.lastBaseUpdate=i}var wf=!1;function Oa(){if(wf){var t=Sl;if(t!==null)throw t}}function Da(t,i,o,c){wf=!1;var g=t.updateQueue;$r=!1;var x=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var Z=O,le=Z.next;Z.next=null,C===null?x=le:C.next=le,C=Z;var ce=t.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=le:O.next=le,ce.lastBaseUpdate=Z))}if(x!==null){var de=g.baseState;C=0,ce=le=Z=null,O=x;do{var ae=O.lane&-536870913,oe=ae!==O.lane;if(oe?(qe&ae)===ae:(c&ae)===ae){ae!==0&&ae===wl&&(wf=!0),ce!==null&&(ce=ce.next={lane:0,tag:O.tag,payload:O.payload,callback:null,next:null});e:{var we=t,ke=O;ae=i;var it=o;switch(ke.tag){case 1:if(we=ke.payload,typeof we=="function"){de=we.call(it,de,ae);break e}de=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=ke.payload,ae=typeof we=="function"?we.call(it,de,ae):we,ae==null)break e;de=p({},de,ae);break e;case 2:$r=!0}}ae=O.callback,ae!==null&&(t.flags|=64,oe&&(t.flags|=8192),oe=g.callbacks,oe===null?g.callbacks=[ae]:oe.push(ae))}else oe={lane:ae,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(le=ce=oe,Z=de):ce=ce.next=oe,C|=ae;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);ce===null&&(Z=de),g.baseState=Z,g.firstBaseUpdate=le,g.lastBaseUpdate=ce,x===null&&(g.shared.lanes=0),Jr|=C,t.lanes=C,t.memoizedState=de}}function Mg(t,i){if(typeof t!="function")throw Error(l(191,t));t.call(i)}function jg(t,i){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;tx?x:8;var C=M.T,O={};M.T=O,Uf(t,!1,i,o);try{var Z=g(),le=M.S;if(le!==null&&le(O,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var ce=EE(Z,c);Ha(t,i,ce,gn(t))}else Ha(t,i,c,gn(t))}catch(de){Ha(t,i,{then:function(){},status:"rejected",reason:de},gn())}finally{$.p=x,C!==null&&O.types!==null&&(C.types=O.types),M.T=C}}function AE(){}function Bf(t,i,o,c){if(t.tag!==5)throw Error(l(476));var g=c0(t).queue;u0(t,g,i,Q,o===null?AE:function(){return f0(t),o(c)})}function c0(t){var i=t.memoizedState;if(i!==null)return i;i={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:Q},next:null};var o={};return i.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:o},next:null},t.memoizedState=i,t=t.alternate,t!==null&&(t.memoizedState=i),i}function f0(t){var i=c0(t);i.next===null&&(i=t.alternate.memoizedState),Ha(t,i.next.queue,{},gn())}function qf(){return Bt(eo)}function d0(){return bt().memoizedState}function h0(){return bt().memoizedState}function ME(t){for(var i=t.return;i!==null;){switch(i.tag){case 24:case 3:var o=gn();t=Pr(o);var c=Xr(i,t,o);c!==null&&(rn(c,i,o),ja(c,i,o)),i={cache:pf()},t.payload=i;return}i=i.return}}function jE(t,i,o){var c=gn();o={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Vs(t)?m0(i,o):(o=nf(t,i,o,c),o!==null&&(rn(o,t,c),g0(o,i,c)))}function p0(t,i,o){var c=gn();Ha(t,i,o,c)}function Ha(t,i,o,c){var g={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Vs(t))m0(i,g);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=i.lastRenderedReducer,x!==null))try{var C=i.lastRenderedState,O=x(C,o);if(g.hasEagerState=!0,g.eagerState=O,cn(O,C))return Ss(t,i,g,0),lt===null&&ws(),!1}catch{}finally{}if(o=nf(t,i,g,c),o!==null)return rn(o,t,c),g0(o,i,c),!0}return!1}function Uf(t,i,o,c){if(c={lane:2,revertLane:xd(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Vs(t)){if(i)throw Error(l(479))}else i=nf(t,o,c,2),i!==null&&rn(i,t,2)}function Vs(t){var i=t.alternate;return t===Ae||i!==null&&i===Ae}function m0(t,i){kl=Rs=!0;var o=t.pending;o===null?i.next=i:(i.next=o.next,o.next=i),t.pending=i}function g0(t,i,o){if((o&4194048)!==0){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,ts(t,o)}}var Ba={readContext:Bt,use:Bs,useCallback:mt,useContext:mt,useEffect:mt,useImperativeHandle:mt,useLayoutEffect:mt,useInsertionEffect:mt,useMemo:mt,useReducer:mt,useRef:mt,useState:mt,useDebugValue:mt,useDeferredValue:mt,useTransition:mt,useSyncExternalStore:mt,useId:mt,useHostTransitionStatus:mt,useFormState:mt,useActionState:mt,useOptimistic:mt,useMemoCache:mt,useCacheRefresh:mt};Ba.useEffectEvent=mt;var y0={readContext:Bt,use:Bs,useCallback:function(t,i){return Ft().memoizedState=[t,i===void 0?null:i],t},useContext:Bt,useEffect:e0,useImperativeHandle:function(t,i,o){o=o!=null?o.concat([t]):null,Us(4194308,4,i0.bind(null,i,t),o)},useLayoutEffect:function(t,i){return Us(4194308,4,t,i)},useInsertionEffect:function(t,i){Us(4,2,t,i)},useMemo:function(t,i){var o=Ft();i=i===void 0?null:i;var c=t();if(Di){Vt(!0);try{t()}finally{Vt(!1)}}return o.memoizedState=[c,i],c},useReducer:function(t,i,o){var c=Ft();if(o!==void 0){var g=o(i);if(Di){Vt(!0);try{o(i)}finally{Vt(!1)}}}else g=i;return c.memoizedState=c.baseState=g,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:g},c.queue=t,t=t.dispatch=jE.bind(null,Ae,t),[c.memoizedState,t]},useRef:function(t){var i=Ft();return t={current:t},i.memoizedState=t},useState:function(t){t=Of(t);var i=t.queue,o=p0.bind(null,Ae,i);return i.dispatch=o,[t.memoizedState,o]},useDebugValue:Lf,useDeferredValue:function(t,i){var o=Ft();return Hf(o,t,i)},useTransition:function(){var t=Of(!1);return t=u0.bind(null,Ae,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,i,o){var c=Ae,g=Ft();if(Ve){if(o===void 0)throw Error(l(407));o=o()}else{if(o=i(),lt===null)throw Error(l(349));(qe&127)!==0||Bg(c,i,o)}g.memoizedState=o;var x={value:o,getSnapshot:i};return g.queue=x,e0(Ug.bind(null,c,x,t),[t]),c.flags|=2048,Tl(9,{destroy:void 0},qg.bind(null,c,x,o,i),null),o},useId:function(){var t=Ft(),i=lt.identifierPrefix;if(Ve){var o=Qn,c=Fn;o=(c&~(1<<32-Je(c)-1)).toString(32)+o,i="_"+i+"R_"+o,o=Ls++,0<\/script>",x=x.removeChild(x.firstChild);break;case"select":x=typeof c.is=="string"?C.createElement("select",{is:c.is}):C.createElement("select"),c.multiple?x.multiple=!0:c.size&&(x.size=c.size);break;default:x=typeof c.is=="string"?C.createElement(g,{is:c.is}):C.createElement(g)}}x[jt]=i,x[Gt]=c;e:for(C=i.child;C!==null;){if(C.tag===5||C.tag===6)x.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===i)break e;for(;C.sibling===null;){if(C.return===null||C.return===i)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}i.stateNode=x;e:switch(Ut(x,g,c),g){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&xr(i)}}return ft(i),ed(i,i.type,t===null?null:t.memoizedProps,i.pendingProps,o),null;case 6:if(t&&i.stateNode!=null)t.memoizedProps!==c&&xr(i);else{if(typeof c!="string"&&i.stateNode===null)throw Error(l(166));if(t=J.current,vl(i)){if(t=i.stateNode,o=i.memoizedProps,c=null,g=Ht,g!==null)switch(g.tag){case 27:case 5:c=g.memoizedProps}t[jt]=i,t=!!(t.nodeValue===o||c!==null&&c.suppressHydrationWarning===!0||Ly(t.nodeValue,o)),t||Gr(i,!0)}else t=su(t).createTextNode(c),t[jt]=i,i.stateNode=t}return ft(i),null;case 31:if(o=i.memoizedState,t===null||t.memoizedState!==null){if(c=vl(i),o!==null){if(t===null){if(!c)throw Error(l(318));if(t=i.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(l(557));t[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),t=!1}else o=cf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return i.flags&256?(hn(i),i):(hn(i),null);if((i.flags&128)!==0)throw Error(l(558))}return ft(i),null;case 13:if(c=i.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(g=vl(i),c!==null&&c.dehydrated!==null){if(t===null){if(!g)throw Error(l(318));if(g=i.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(l(317));g[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),g=!1}else g=cf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=g),g=!0;if(!g)return i.flags&256?(hn(i),i):(hn(i),null)}return hn(i),(i.flags&128)!==0?(i.lanes=o,i):(o=c!==null,t=t!==null&&t.memoizedState!==null,o&&(c=i.child,g=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(g=c.alternate.memoizedState.cachePool.pool),x=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),x!==g&&(c.flags|=2048)),o!==t&&o&&(i.child.flags|=8192),Xs(i,i.updateQueue),ft(i),null);case 4:return se(),t===null&&Sd(i.stateNode.containerInfo),ft(i),null;case 10:return pr(i.type),ft(i),null;case 19:if(P(vt),c=i.memoizedState,c===null)return ft(i),null;if(g=(i.flags&128)!==0,x=c.rendering,x===null)if(g)Ua(c,!1);else{if(gt!==0||t!==null&&(t.flags&128)!==0)for(t=i.child;t!==null;){if(x=Ds(t),x!==null){for(i.flags|=128,Ua(c,!1),t=x.updateQueue,i.updateQueue=t,Xs(i,t),i.subtreeFlags=0,t=o,o=i.child;o!==null;)pg(o,t),o=o.sibling;return N(vt,vt.current&1|2),Ve&&dr(i,c.treeForkCount),i.child}t=t.sibling}c.tail!==null&&Mt()>Js&&(i.flags|=128,g=!0,Ua(c,!1),i.lanes=4194304)}else{if(!g)if(t=Ds(x),t!==null){if(i.flags|=128,g=!0,t=t.updateQueue,i.updateQueue=t,Xs(i,t),Ua(c,!0),c.tail===null&&c.tailMode==="hidden"&&!x.alternate&&!Ve)return ft(i),null}else 2*Mt()-c.renderingStartTime>Js&&o!==536870912&&(i.flags|=128,g=!0,Ua(c,!1),i.lanes=4194304);c.isBackwards?(x.sibling=i.child,i.child=x):(t=c.last,t!==null?t.sibling=x:i.child=x,c.last=x)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=Mt(),t.sibling=null,o=vt.current,N(vt,g?o&1|2:o&1),Ve&&dr(i,c.treeForkCount),t):(ft(i),null);case 22:case 23:return hn(i),_f(),c=i.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(i.flags|=8192):c&&(i.flags|=8192),c?(o&536870912)!==0&&(i.flags&128)===0&&(ft(i),i.subtreeFlags&6&&(i.flags|=8192)):ft(i),o=i.updateQueue,o!==null&&Xs(i,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==o&&(i.flags|=2048),t!==null&&P(Ai),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),i.memoizedState.cache!==o&&(i.flags|=2048),pr(St),ft(i),null;case 25:return null;case 30:return null}throw Error(l(156,i.tag))}function HE(t,i){switch(sf(i),i.tag){case 1:return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 3:return pr(St),se(),t=i.flags,(t&65536)!==0&&(t&128)===0?(i.flags=t&-65537|128,i):null;case 26:case 27:case 5:return ve(i),null;case 31:if(i.memoizedState!==null){if(hn(i),i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 13:if(hn(i),t=i.memoizedState,t!==null&&t.dehydrated!==null){if(i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 19:return P(vt),null;case 4:return se(),null;case 10:return pr(i.type),null;case 22:case 23:return hn(i),_f(),t!==null&&P(Ai),t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 24:return pr(St),null;case 25:return null;default:return null}}function I0(t,i){switch(sf(i),i.tag){case 3:pr(St),se();break;case 26:case 27:case 5:ve(i);break;case 4:se();break;case 31:i.memoizedState!==null&&hn(i);break;case 13:hn(i);break;case 19:P(vt);break;case 10:pr(i.type);break;case 22:case 23:hn(i),_f(),t!==null&&P(Ai);break;case 24:pr(St)}}function Ia(t,i){try{var o=i.updateQueue,c=o!==null?o.lastEffect:null;if(c!==null){var g=c.next;o=g;do{if((o.tag&t)===t){c=void 0;var x=o.create,C=o.inst;c=x(),C.destroy=c}o=o.next}while(o!==g)}}catch(O){et(i,i.return,O)}}function Zr(t,i,o){try{var c=i.updateQueue,g=c!==null?c.lastEffect:null;if(g!==null){var x=g.next;c=x;do{if((c.tag&t)===t){var C=c.inst,O=C.destroy;if(O!==void 0){C.destroy=void 0,g=i;var Z=o,le=O;try{le()}catch(ce){et(g,Z,ce)}}}c=c.next}while(c!==x)}}catch(ce){et(i,i.return,ce)}}function V0(t){var i=t.updateQueue;if(i!==null){var o=t.stateNode;try{jg(i,o)}catch(c){et(t,t.return,c)}}}function G0(t,i,o){o.props=Ri(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(c){et(t,i,c)}}function Va(t,i){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof o=="function"?t.refCleanup=o(c):o.current=c}}catch(g){et(t,i,g)}}function Zn(t,i){var o=t.ref,c=t.refCleanup;if(o!==null)if(typeof c=="function")try{c()}catch(g){et(t,i,g)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(g){et(t,i,g)}else o.current=null}function Y0(t){var i=t.type,o=t.memoizedProps,c=t.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":o.autoFocus&&c.focus();break e;case"img":o.src?c.src=o.src:o.srcSet&&(c.srcset=o.srcSet)}}catch(g){et(t,t.return,g)}}function td(t,i,o){try{var c=t.stateNode;l2(c,t.type,o,i),c[Gt]=i}catch(g){et(t,t.return,g)}}function $0(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ri(t.type)||t.tag===4}function nd(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||$0(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ri(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function rd(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,i):(i=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,i.appendChild(t),o=o._reactRootContainer,o!=null||i.onclick!==null||(i.onclick=ur));else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode,i=null),t=t.child,t!==null))for(rd(t,i,o),t=t.sibling;t!==null;)rd(t,i,o),t=t.sibling}function Fs(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?o.insertBefore(t,i):o.appendChild(t);else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Fs(t,i,o),t=t.sibling;t!==null;)Fs(t,i,o),t=t.sibling}function P0(t){var i=t.stateNode,o=t.memoizedProps;try{for(var c=t.type,g=i.attributes;g.length;)i.removeAttributeNode(g[0]);Ut(i,c,o),i[jt]=t,i[Gt]=o}catch(x){et(t,t.return,x)}}var vr=!1,Nt=!1,id=!1,X0=typeof WeakSet=="function"?WeakSet:Set,Dt=null;function BE(t,i){if(t=t.containerInfo,Nd=mu,t=lg(t),Zc(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var c=o.getSelection&&o.getSelection();if(c&&c.rangeCount!==0){o=c.anchorNode;var g=c.anchorOffset,x=c.focusNode;c=c.focusOffset;try{o.nodeType,x.nodeType}catch{o=null;break e}var C=0,O=-1,Z=-1,le=0,ce=0,de=t,ae=null;t:for(;;){for(var oe;de!==o||g!==0&&de.nodeType!==3||(O=C+g),de!==x||c!==0&&de.nodeType!==3||(Z=C+c),de.nodeType===3&&(C+=de.nodeValue.length),(oe=de.firstChild)!==null;)ae=de,de=oe;for(;;){if(de===t)break t;if(ae===o&&++le===g&&(O=C),ae===x&&++ce===c&&(Z=C),(oe=de.nextSibling)!==null)break;de=ae,ae=de.parentNode}de=oe}o=O===-1||Z===-1?null:{start:O,end:Z}}else o=null}o=o||{start:0,end:0}}else o=null;for(kd={focusedElem:t,selectionRange:o},mu=!1,Dt=i;Dt!==null;)if(i=Dt,t=i.child,(i.subtreeFlags&1028)!==0&&t!==null)t.return=i,Dt=t;else for(;Dt!==null;){switch(i=Dt,x=i.alternate,t=i.flags,i.tag){case 0:if((t&4)!==0&&(t=i.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o title"))),Ut(x,c,o),x[jt]=t,wt(x),c=x;break e;case"link":var C=Wy("link","href",g).get(c+(o.href||""));if(C){for(var O=0;Oit&&(C=it,it=ke,ke=C);var te=rg(O,ke),W=rg(O,it);if(te&&W&&(oe.rangeCount!==1||oe.anchorNode!==te.node||oe.anchorOffset!==te.offset||oe.focusNode!==W.node||oe.focusOffset!==W.offset)){var ie=de.createRange();ie.setStart(te.node,te.offset),oe.removeAllRanges(),ke>it?(oe.addRange(ie),oe.extend(W.node,W.offset)):(ie.setEnd(W.node,W.offset),oe.addRange(ie))}}}}for(de=[],oe=O;oe=oe.parentNode;)oe.nodeType===1&&de.push({element:oe,left:oe.scrollLeft,top:oe.scrollTop});for(typeof O.focus=="function"&&O.focus(),O=0;Oo?32:o,M.T=null,o=fd,fd=null;var x=ei,C=Er;if(Ot=0,Ol=ei=null,Er=0,(Ze&6)!==0)throw Error(l(331));var O=Ze;if(Ze|=4,iy(x.current),ty(x,x.current,C,o),Ze=O,Fa(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(Lt,x)}catch{}return!0}finally{$.p=g,M.T=c,Sy(t,i)}}function Ey(t,i,o){i=En(o,i),i=Yf(t.stateNode,i,2),t=Xr(t,i,2),t!==null&&(xi(t,2),Kn(t))}function et(t,i,o){if(t.tag===3)Ey(t,t,o);else for(;i!==null;){if(i.tag===3){Ey(i,t,o);break}else if(i.tag===1){var c=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(Wr===null||!Wr.has(c))){t=En(o,t),o=N0(2),c=Xr(i,o,2),c!==null&&(k0(o,c,i,t),xi(c,2),Kn(c));break}}i=i.return}}function md(t,i,o){var c=t.pingCache;if(c===null){c=t.pingCache=new IE;var g=new Set;c.set(i,g)}else g=c.get(i),g===void 0&&(g=new Set,c.set(i,g));g.has(o)||(od=!0,g.add(o),t=PE.bind(null,t,i,o),i.then(t,t))}function PE(t,i,o){var c=t.pingCache;c!==null&&c.delete(i),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,lt===t&&(qe&o)===o&&(gt===4||gt===3&&(qe&62914560)===qe&&300>Mt()-Ks?(Ze&2)===0&&Dl(t,0):sd|=o,jl===qe&&(jl=0)),Kn(t)}function Ny(t,i){i===0&&(i=Wo()),t=Ni(t,i),t!==null&&(xi(t,i),Kn(t))}function XE(t){var i=t.memoizedState,o=0;i!==null&&(o=i.retryLane),Ny(t,o)}function FE(t,i){var o=0;switch(t.tag){case 31:case 13:var c=t.stateNode,g=t.memoizedState;g!==null&&(o=g.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(l(314))}c!==null&&c.delete(i),Ny(t,o)}function QE(t,i){return It(t,i)}var iu=null,Ll=null,gd=!1,lu=!1,yd=!1,ni=0;function Kn(t){t!==Ll&&t.next===null&&(Ll===null?iu=Ll=t:Ll=Ll.next=t),lu=!0,gd||(gd=!0,KE())}function Fa(t,i){if(!yd&&lu){yd=!0;do for(var o=!1,c=iu;c!==null;){if(t!==0){var g=c.pendingLanes;if(g===0)var x=0;else{var C=c.suspendedLanes,O=c.pingedLanes;x=(1<<31-Je(42|t)+1)-1,x&=g&~(C&~O),x=x&201326741?x&201326741|1:x?x|2:0}x!==0&&(o=!0,zy(c,x))}else x=qe,x=ll(c,c===lt?x:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(x&3)===0||yi(c,x)||(o=!0,zy(c,x));c=c.next}while(o);yd=!1}}function ZE(){ky()}function ky(){lu=gd=!1;var t=0;ni!==0&&o2()&&(t=ni);for(var i=Mt(),o=null,c=iu;c!==null;){var g=c.next,x=Cy(c,i);x===0?(c.next=null,o===null?iu=g:o.next=g,g===null&&(Ll=o)):(o=c,(t!==0||(x&3)!==0)&&(lu=!0)),c=g}Ot!==0&&Ot!==5||Fa(t),ni!==0&&(ni=0)}function Cy(t,i){for(var o=t.suspendedLanes,c=t.pingedLanes,g=t.expirationTimes,x=t.pendingLanes&-62914561;0O)break;var ce=Z.transferSize,de=Z.initiatorType;ce&&Hy(de)&&(Z=Z.responseEnd,C+=ce*(Z"u"?null:document;function Qy(t,i,o){var c=Hl;if(c&&typeof i=="string"&&i){var g=Kt(i);g='link[rel="'+t+'"][href="'+g+'"]',typeof o=="string"&&(g+='[crossorigin="'+o+'"]'),Fy.has(g)||(Fy.add(g),t={rel:t,crossOrigin:o,href:i},c.querySelector(g)===null&&(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function g2(t){Nr.D(t),Qy("dns-prefetch",t,null)}function y2(t,i){Nr.C(t,i),Qy("preconnect",t,i)}function x2(t,i,o){Nr.L(t,i,o);var c=Hl;if(c&&t&&i){var g='link[rel="preload"][as="'+Kt(i)+'"]';i==="image"&&o&&o.imageSrcSet?(g+='[imagesrcset="'+Kt(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(g+='[imagesizes="'+Kt(o.imageSizes)+'"]')):g+='[href="'+Kt(t)+'"]';var x=g;switch(i){case"style":x=Bl(t);break;case"script":x=ql(t)}An.has(x)||(t=p({rel:"preload",href:i==="image"&&o&&o.imageSrcSet?void 0:t,as:i},o),An.set(x,t),c.querySelector(g)!==null||i==="style"&&c.querySelector(Ja(x))||i==="script"&&c.querySelector(Wa(x))||(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function v2(t,i){Nr.m(t,i);var o=Hl;if(o&&t){var c=i&&typeof i.as=="string"?i.as:"script",g='link[rel="modulepreload"][as="'+Kt(c)+'"][href="'+Kt(t)+'"]',x=g;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":x=ql(t)}if(!An.has(x)&&(t=p({rel:"modulepreload",href:t},i),An.set(x,t),o.querySelector(g)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Wa(x)))return}c=o.createElement("link"),Ut(c,"link",t),wt(c),o.head.appendChild(c)}}}function b2(t,i,o){Nr.S(t,i,o);var c=Hl;if(c&&t){var g=Hr(c).hoistableStyles,x=Bl(t);i=i||"default";var C=g.get(x);if(!C){var O={loading:0,preload:null};if(C=c.querySelector(Ja(x)))O.loading=5;else{t=p({rel:"stylesheet",href:t,"data-precedence":i},o),(o=An.get(x))&&Od(t,o);var Z=C=c.createElement("link");wt(Z),Ut(Z,"link",t),Z._p=new Promise(function(le,ce){Z.onload=le,Z.onerror=ce}),Z.addEventListener("load",function(){O.loading|=1}),Z.addEventListener("error",function(){O.loading|=2}),O.loading|=4,cu(C,i,c)}C={type:"stylesheet",instance:C,count:1,state:O},g.set(x,C)}}}function w2(t,i){Nr.X(t,i);var o=Hl;if(o&&t){var c=Hr(o).hoistableScripts,g=ql(t),x=c.get(g);x||(x=o.querySelector(Wa(g)),x||(t=p({src:t,async:!0},i),(i=An.get(g))&&Dd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function S2(t,i){Nr.M(t,i);var o=Hl;if(o&&t){var c=Hr(o).hoistableScripts,g=ql(t),x=c.get(g);x||(x=o.querySelector(Wa(g)),x||(t=p({src:t,async:!0,type:"module"},i),(i=An.get(g))&&Dd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function Zy(t,i,o,c){var g=(g=J.current)?uu(g):null;if(!g)throw Error(l(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(i=Bl(o.href),o=Hr(g).hoistableStyles,c=o.get(i),c||(c={type:"style",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=Bl(o.href);var x=Hr(g).hoistableStyles,C=x.get(t);if(C||(g=g.ownerDocument||g,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},x.set(t,C),(x=g.querySelector(Ja(t)))&&!x._p&&(C.instance=x,C.state.loading=5),An.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},An.set(t,o),x||_2(g,t,o,C.state))),i&&c===null)throw Error(l(528,""));return C}if(i&&c!==null)throw Error(l(529,""));return null;case"script":return i=o.async,o=o.src,typeof o=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=ql(o),o=Hr(g).hoistableScripts,c=o.get(i),c||(c={type:"script",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,t))}}function Bl(t){return'href="'+Kt(t)+'"'}function Ja(t){return'link[rel="stylesheet"]['+t+"]"}function Ky(t){return p({},t,{"data-precedence":t.precedence,precedence:null})}function _2(t,i,o,c){t.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(i=t.createElement("link"),c.preload=i,i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),Ut(i,"link",o),wt(i),t.head.appendChild(i))}function ql(t){return'[src="'+Kt(t)+'"]'}function Wa(t){return"script[async]"+t}function Jy(t,i,o){if(i.count++,i.instance===null)switch(i.type){case"style":var c=t.querySelector('style[data-href~="'+Kt(o.href)+'"]');if(c)return i.instance=c,wt(c),c;var g=p({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),wt(c),Ut(c,"style",g),cu(c,o.precedence,t),i.instance=c;case"stylesheet":g=Bl(o.href);var x=t.querySelector(Ja(g));if(x)return i.state.loading|=4,i.instance=x,wt(x),x;c=Ky(o),(g=An.get(g))&&Od(c,g),x=(t.ownerDocument||t).createElement("link"),wt(x);var C=x;return C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),i.state.loading|=4,cu(x,o.precedence,t),i.instance=x;case"script":return x=ql(o.src),(g=t.querySelector(Wa(x)))?(i.instance=g,wt(g),g):(c=o,(g=An.get(x))&&(c=p({},o),Dd(c,g)),t=t.ownerDocument||t,g=t.createElement("script"),wt(g),Ut(g,"link",c),t.head.appendChild(g),i.instance=g);case"void":return null;default:throw Error(l(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(c=i.instance,i.state.loading|=4,cu(c,o.precedence,t));return i.instance}function cu(t,i,o){for(var c=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),g=c.length?c[c.length-1]:null,x=g,C=0;C title"):null)}function E2(t,i,o){if(o===1||i.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return t=i.disabled,typeof i.precedence=="string"&&t==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function tx(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function N2(t,i,o,c){if(o.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var g=Bl(c.href),x=i.querySelector(Ja(g));if(x){i=x._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(t.count++,t=du.bind(t),i.then(t,t)),o.state.loading|=4,o.instance=x,wt(x);return}x=i.ownerDocument||i,c=Ky(c),(g=An.get(g))&&Od(c,g),x=x.createElement("link"),wt(x);var C=x;C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),o.instance=x}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,i),(i=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=du.bind(t),i.addEventListener("load",o),i.addEventListener("error",o))}}var Rd=0;function k2(t,i){return t.stylesheets&&t.count===0&&pu(t,t.stylesheets),0Rd?50:800)+i);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(g)}}:null}function du(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)pu(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var hu=null;function pu(t,i){t.stylesheets=null,t.unsuspend!==null&&(t.count++,hu=new Map,i.forEach(C2,t),hu=null,du.call(t))}function C2(t,i){if(!(i.state.loading&4)){var o=hu.get(t);if(o)var c=o.get(null);else{o=new Map,hu.set(t,o);for(var g=t.querySelectorAll("link[data-precedence],style[data-precedence]"),x=0;x"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Yd.exports=P2(),Yd.exports}var F2=X2();/** +`+c.stack}}var At=Object.prototype.hasOwnProperty,It=e.unstable_scheduleCallback,Rt=e.unstable_cancelCallback,Sn=e.unstable_shouldYield,Mn=e.unstable_requestPaint,jt=e.unstable_now,Or=e.unstable_getCurrentPriorityLevel,ue=e.unstable_ImmediatePriority,ge=e.unstable_UserBlockingPriority,Ne=e.unstable_NormalPriority,Re=e.unstable_LowPriority,Ye=e.unstable_IdlePriority,Xt=e.log,On=e.unstable_setDisableYieldValue,Lt=null,xt=null;function Vt(t){if(typeof Xt=="function"&&On(t),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(Lt,t)}catch{}}var Je=Math.clz32?Math.clz32:zc,Pn=Math.log,un=Math.LN2;function zc(t){return t>>>=0,t===0?32:31-(Pn(t)/un|0)|0}var nl=256,rl=262144,il=4194304;function lr(t){var i=t&42;if(i!==0)return i;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function ll(t,i,o){var c=t.pendingLanes;if(c===0)return 0;var g=0,x=t.suspendedLanes,C=t.pingedLanes;t=t.warmLanes;var O=c&134217727;return O!==0?(c=O&~x,c!==0?g=lr(c):(C&=O,C!==0?g=lr(C):o||(o=O&~t,o!==0&&(g=lr(o))))):(O=c&~x,O!==0?g=lr(O):C!==0?g=lr(C):o||(o=c&~t,o!==0&&(g=lr(o)))),g===0?0:i!==0&&i!==g&&(i&x)===0&&(x=g&-g,o=i&-i,x>=o||x===32&&(o&4194048)!==0)?i:g}function yi(t,i){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&i)===0}function Ac(t,i){switch(t){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Wo(){var t=il;return il<<=1,(il&62914560)===0&&(il=4194304),t}function ha(t){for(var i=[],o=0;31>o;o++)i.push(t);return i}function xi(t,i){t.pendingLanes|=i,i!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function jc(t,i,o,c,g,x){var C=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var O=t.entanglements,Z=t.expirationTimes,le=t.hiddenUpdates;for(o=C&~o;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Lc=/[\n"\\]/g;function Kt(t){return t.replace(Lc,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function wi(t,i,o,c,g,x,C,O){t.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?t.type=C:t.removeAttribute("type"),i!=null?C==="number"?(i===0&&t.value===""||t.value!=i)&&(t.value=""+Zt(i)):t.value!==""+Zt(i)&&(t.value=""+Zt(i)):C!=="submit"&&C!=="reset"||t.removeAttribute("value"),i!=null?xa(t,C,Zt(i)):o!=null?xa(t,C,Zt(o)):c!=null&&t.removeAttribute("value"),g==null&&x!=null&&(t.defaultChecked=!!x),g!=null&&(t.checked=g&&typeof g!="function"&&typeof g!="symbol"),O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"?t.name=""+Zt(O):t.removeAttribute("name")}function ds(t,i,o,c,g,x,C,O){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(t.type=x),i!=null||o!=null){if(!(x!=="submit"&&x!=="reset"||i!=null)){qr(t);return}o=o!=null?""+Zt(o):"",i=i!=null?""+Zt(i):o,O||i===t.value||(t.value=i),t.defaultValue=i}c=c??g,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=O?t.checked:!!c,t.defaultChecked=!!c,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(t.name=C),qr(t)}function xa(t,i,o){i==="number"&&bi(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function sr(t,i,o,c){if(t=t.options,i){i={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ic=!1;if(cr)try{var ba={};Object.defineProperty(ba,"passive",{get:function(){Ic=!0}}),window.addEventListener("test",ba,ba),window.removeEventListener("test",ba,ba)}catch{Ic=!1}var Ur=null,Vc=null,ps=null;function qm(){if(ps)return ps;var t,i=Vc,o=i.length,c,g="value"in Ur?Ur.value:Ur.textContent,x=g.length;for(t=0;t=_a),$m=" ",Pm=!1;function Xm(t,i){switch(t){case"keyup":return oE.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var dl=!1;function uE(t,i){switch(t){case"compositionend":return Fm(i);case"keypress":return i.which!==32?null:(Pm=!0,$m);case"textInput":return t=i.data,t===$m&&Pm?null:t;default:return null}}function cE(t,i){if(dl)return t==="compositionend"||!Xc&&Xm(t,i)?(t=qm(),ps=Vc=Ur=null,dl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:o,offset:i-t};t=c}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=ng(o)}}function ig(t,i){return t&&i?t===i?!0:t&&t.nodeType===3?!1:i&&i.nodeType===3?ig(t,i.parentNode):"contains"in t?t.contains(i):t.compareDocumentPosition?!!(t.compareDocumentPosition(i)&16):!1:!1}function lg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var i=bi(t.document);i instanceof t.HTMLIFrameElement;){try{var o=typeof i.contentWindow.location.href=="string"}catch{o=!1}if(o)t=i.contentWindow;else break;i=bi(t.document)}return i}function Zc(t){var i=t&&t.nodeName&&t.nodeName.toLowerCase();return i&&(i==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||i==="textarea"||t.contentEditable==="true")}var xE=cr&&"documentMode"in document&&11>=document.documentMode,hl=null,Kc=null,Ca=null,Jc=!1;function ag(t,i,o){var c=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Jc||hl==null||hl!==bi(c)||(c=hl,"selectionStart"in c&&Zc(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Ca&&ka(Ca,c)||(Ca=c,c=ou(Kc,"onSelect"),0>=C,g-=C,Fn=1<<32-Je(i)+g|o<Me?(Ue=Se,Se=null):Ue=Se.sibling;var Fe=ae(te,Se,ie[Me],fe);if(Fe===null){Se===null&&(Se=Ue);break}t&&Se&&Fe.alternate===null&&i(te,Se),W=x(Fe,W,Me),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe,Se=Ue}if(Me===ie.length)return o(te,Se),Ve&&dr(te,Me),Ee;if(Se===null){for(;MeMe?(Ue=Se,Se=null):Ue=Se.sibling;var si=ae(te,Se,Fe.value,fe);if(si===null){Se===null&&(Se=Ue);break}t&&Se&&si.alternate===null&&i(te,Se),W=x(si,W,Me),Xe===null?Ee=si:Xe.sibling=si,Xe=si,Se=Ue}if(Fe.done)return o(te,Se),Ve&&dr(te,Me),Ee;if(Se===null){for(;!Fe.done;Me++,Fe=ie.next())Fe=de(te,Fe.value,fe),Fe!==null&&(W=x(Fe,W,Me),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return Ve&&dr(te,Me),Ee}for(Se=c(Se);!Fe.done;Me++,Fe=ie.next())Fe=oe(Se,te,Me,Fe.value,fe),Fe!==null&&(t&&Fe.alternate!==null&&Se.delete(Fe.key===null?Me:Fe.key),W=x(Fe,W,Me),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return t&&Se.forEach(function(B2){return i(te,B2)}),Ve&&dr(te,Me),Ee}function it(te,W,ie,fe){if(typeof ie=="object"&&ie!==null&&ie.type===k&&ie.key===null&&(ie=ie.props.children),typeof ie=="object"&&ie!==null){switch(ie.$$typeof){case v:e:{for(var Ee=ie.key;W!==null;){if(W.key===Ee){if(Ee=ie.type,Ee===k){if(W.tag===7){o(te,W.sibling),fe=g(W,ie.props.children),fe.return=te,te=fe;break e}}else if(W.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&ji(Ee)===W.type){o(te,W.sibling),fe=g(W,ie.props),Oa(fe,ie),fe.return=te,te=fe;break e}o(te,W);break}else i(te,W);W=W.sibling}ie.type===k?(fe=ki(ie.props.children,te.mode,fe,ie.key),fe.return=te,te=fe):(fe=Es(ie.type,ie.key,ie.props,null,te.mode,fe),Oa(fe,ie),fe.return=te,te=fe)}return C(te);case w:e:{for(Ee=ie.key;W!==null;){if(W.key===Ee)if(W.tag===4&&W.stateNode.containerInfo===ie.containerInfo&&W.stateNode.implementation===ie.implementation){o(te,W.sibling),fe=g(W,ie.children||[]),fe.return=te,te=fe;break e}else{o(te,W);break}else i(te,W);W=W.sibling}fe=af(ie,te.mode,fe),fe.return=te,te=fe}return C(te);case D:return ie=ji(ie),it(te,W,ie,fe)}if(G(ie))return we(te,W,ie,fe);if(U(ie)){if(Ee=U(ie),typeof Ee!="function")throw Error(l(150));return ie=Ee.call(ie),ke(te,W,ie,fe)}if(typeof ie.then=="function")return it(te,W,js(ie),fe);if(ie.$$typeof===N)return it(te,W,Cs(te,ie),fe);Ms(te,ie)}return typeof ie=="string"&&ie!==""||typeof ie=="number"||typeof ie=="bigint"?(ie=""+ie,W!==null&&W.tag===6?(o(te,W.sibling),fe=g(W,ie),fe.return=te,te=fe):(o(te,W),fe=lf(ie,te.mode,fe),fe.return=te,te=fe),C(te)):o(te,W)}return function(te,W,ie,fe){try{Ma=0;var Ee=it(te,W,ie,fe);return El=null,Ee}catch(Se){if(Se===_l||Se===zs)throw Se;var Xe=fn(29,Se,null,te.mode);return Xe.lanes=fe,Xe.return=te,Xe}finally{}}}var Oi=zg(!0),Ag=zg(!1),$r=!1;function xf(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vf(t,i){t=t.updateQueue,i.updateQueue===t&&(i.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Pr(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Xr(t,i,o){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(Ze&2)!==0){var g=c.pending;return g===null?i.next=i:(i.next=g.next,g.next=i),c.pending=i,i=_s(t),hg(t,null,o),i}return Ss(t,c,i,o),_s(t)}function Da(t,i,o){if(i=i.updateQueue,i!==null&&(i=i.shared,(o&4194048)!==0)){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,ts(t,o)}}function bf(t,i){var o=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,o===c)){var g=null,x=null;if(o=o.firstBaseUpdate,o!==null){do{var C={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};x===null?g=x=C:x=x.next=C,o=o.next}while(o!==null);x===null?g=x=i:x=x.next=i}else g=x=i;o={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:x,shared:c.shared,callbacks:c.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=i:t.next=i,o.lastBaseUpdate=i}var wf=!1;function Ra(){if(wf){var t=Sl;if(t!==null)throw t}}function La(t,i,o,c){wf=!1;var g=t.updateQueue;$r=!1;var x=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var Z=O,le=Z.next;Z.next=null,C===null?x=le:C.next=le,C=Z;var ce=t.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=le:O.next=le,ce.lastBaseUpdate=Z))}if(x!==null){var de=g.baseState;C=0,ce=le=Z=null,O=x;do{var ae=O.lane&-536870913,oe=ae!==O.lane;if(oe?(qe&ae)===ae:(c&ae)===ae){ae!==0&&ae===wl&&(wf=!0),ce!==null&&(ce=ce.next={lane:0,tag:O.tag,payload:O.payload,callback:null,next:null});e:{var we=t,ke=O;ae=i;var it=o;switch(ke.tag){case 1:if(we=ke.payload,typeof we=="function"){de=we.call(it,de,ae);break e}de=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=ke.payload,ae=typeof we=="function"?we.call(it,de,ae):we,ae==null)break e;de=p({},de,ae);break e;case 2:$r=!0}}ae=O.callback,ae!==null&&(t.flags|=64,oe&&(t.flags|=8192),oe=g.callbacks,oe===null?g.callbacks=[ae]:oe.push(ae))}else oe={lane:ae,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(le=ce=oe,Z=de):ce=ce.next=oe,C|=ae;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);ce===null&&(Z=de),g.baseState=Z,g.firstBaseUpdate=le,g.lastBaseUpdate=ce,x===null&&(g.shared.lanes=0),Jr|=C,t.lanes=C,t.memoizedState=de}}function jg(t,i){if(typeof t!="function")throw Error(l(191,t));t.call(i)}function Mg(t,i){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;tx?x:8;var C=j.T,O={};j.T=O,Uf(t,!1,i,o);try{var Z=g(),le=j.S;if(le!==null&&le(O,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var ce=CE(Z,c);qa(t,i,ce,gn(t))}else qa(t,i,c,gn(t))}catch(de){qa(t,i,{then:function(){},status:"rejected",reason:de},gn())}finally{$.p=x,C!==null&&O.types!==null&&(C.types=O.types),j.T=C}}function OE(){}function Bf(t,i,o,c){if(t.tag!==5)throw Error(l(476));var g=c0(t).queue;u0(t,g,i,Q,o===null?OE:function(){return f0(t),o(c)})}function c0(t){var i=t.memoizedState;if(i!==null)return i;i={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:Q},next:null};var o={};return i.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:o},next:null},t.memoizedState=i,t=t.alternate,t!==null&&(t.memoizedState=i),i}function f0(t){var i=c0(t);i.next===null&&(i=t.alternate.memoizedState),qa(t,i.next.queue,{},gn())}function qf(){return Bt(no)}function d0(){return bt().memoizedState}function h0(){return bt().memoizedState}function DE(t){for(var i=t.return;i!==null;){switch(i.tag){case 24:case 3:var o=gn();t=Pr(o);var c=Xr(i,t,o);c!==null&&(rn(c,i,o),Da(c,i,o)),i={cache:pf()},t.payload=i;return}i=i.return}}function RE(t,i,o){var c=gn();o={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Vs(t)?m0(i,o):(o=nf(t,i,o,c),o!==null&&(rn(o,t,c),g0(o,i,c)))}function p0(t,i,o){var c=gn();qa(t,i,o,c)}function qa(t,i,o,c){var g={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Vs(t))m0(i,g);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=i.lastRenderedReducer,x!==null))try{var C=i.lastRenderedState,O=x(C,o);if(g.hasEagerState=!0,g.eagerState=O,cn(O,C))return Ss(t,i,g,0),lt===null&&ws(),!1}catch{}finally{}if(o=nf(t,i,g,c),o!==null)return rn(o,t,c),g0(o,i,c),!0}return!1}function Uf(t,i,o,c){if(c={lane:2,revertLane:xd(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Vs(t)){if(i)throw Error(l(479))}else i=nf(t,o,c,2),i!==null&&rn(i,t,2)}function Vs(t){var i=t.alternate;return t===Ae||i!==null&&i===Ae}function m0(t,i){kl=Rs=!0;var o=t.pending;o===null?i.next=i:(i.next=o.next,o.next=i),t.pending=i}function g0(t,i,o){if((o&4194048)!==0){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,ts(t,o)}}var Ua={readContext:Bt,use:Bs,useCallback:mt,useContext:mt,useEffect:mt,useImperativeHandle:mt,useLayoutEffect:mt,useInsertionEffect:mt,useMemo:mt,useReducer:mt,useRef:mt,useState:mt,useDebugValue:mt,useDeferredValue:mt,useTransition:mt,useSyncExternalStore:mt,useId:mt,useHostTransitionStatus:mt,useFormState:mt,useActionState:mt,useOptimistic:mt,useMemoCache:mt,useCacheRefresh:mt};Ua.useEffectEvent=mt;var y0={readContext:Bt,use:Bs,useCallback:function(t,i){return Ft().memoizedState=[t,i===void 0?null:i],t},useContext:Bt,useEffect:e0,useImperativeHandle:function(t,i,o){o=o!=null?o.concat([t]):null,Us(4194308,4,i0.bind(null,i,t),o)},useLayoutEffect:function(t,i){return Us(4194308,4,t,i)},useInsertionEffect:function(t,i){Us(4,2,t,i)},useMemo:function(t,i){var o=Ft();i=i===void 0?null:i;var c=t();if(Di){Vt(!0);try{t()}finally{Vt(!1)}}return o.memoizedState=[c,i],c},useReducer:function(t,i,o){var c=Ft();if(o!==void 0){var g=o(i);if(Di){Vt(!0);try{o(i)}finally{Vt(!1)}}}else g=i;return c.memoizedState=c.baseState=g,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:g},c.queue=t,t=t.dispatch=RE.bind(null,Ae,t),[c.memoizedState,t]},useRef:function(t){var i=Ft();return t={current:t},i.memoizedState=t},useState:function(t){t=Of(t);var i=t.queue,o=p0.bind(null,Ae,i);return i.dispatch=o,[t.memoizedState,o]},useDebugValue:Lf,useDeferredValue:function(t,i){var o=Ft();return Hf(o,t,i)},useTransition:function(){var t=Of(!1);return t=u0.bind(null,Ae,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,i,o){var c=Ae,g=Ft();if(Ve){if(o===void 0)throw Error(l(407));o=o()}else{if(o=i(),lt===null)throw Error(l(349));(qe&127)!==0||Bg(c,i,o)}g.memoizedState=o;var x={value:o,getSnapshot:i};return g.queue=x,e0(Ug.bind(null,c,x,t),[t]),c.flags|=2048,Tl(9,{destroy:void 0},qg.bind(null,c,x,o,i),null),o},useId:function(){var t=Ft(),i=lt.identifierPrefix;if(Ve){var o=Qn,c=Fn;o=(c&~(1<<32-Je(c)-1)).toString(32)+o,i="_"+i+"R_"+o,o=Ls++,0<\/script>",x=x.removeChild(x.firstChild);break;case"select":x=typeof c.is=="string"?C.createElement("select",{is:c.is}):C.createElement("select"),c.multiple?x.multiple=!0:c.size&&(x.size=c.size);break;default:x=typeof c.is=="string"?C.createElement(g,{is:c.is}):C.createElement(g)}}x[Mt]=i,x[Gt]=c;e:for(C=i.child;C!==null;){if(C.tag===5||C.tag===6)x.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===i)break e;for(;C.sibling===null;){if(C.return===null||C.return===i)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}i.stateNode=x;e:switch(Ut(x,g,c),g){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&xr(i)}}return ft(i),ed(i,i.type,t===null?null:t.memoizedProps,i.pendingProps,o),null;case 6:if(t&&i.stateNode!=null)t.memoizedProps!==c&&xr(i);else{if(typeof c!="string"&&i.stateNode===null)throw Error(l(166));if(t=J.current,vl(i)){if(t=i.stateNode,o=i.memoizedProps,c=null,g=Ht,g!==null)switch(g.tag){case 27:case 5:c=g.memoizedProps}t[Mt]=i,t=!!(t.nodeValue===o||c!==null&&c.suppressHydrationWarning===!0||Ly(t.nodeValue,o)),t||Gr(i,!0)}else t=su(t).createTextNode(c),t[Mt]=i,i.stateNode=t}return ft(i),null;case 31:if(o=i.memoizedState,t===null||t.memoizedState!==null){if(c=vl(i),o!==null){if(t===null){if(!c)throw Error(l(318));if(t=i.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(l(557));t[Mt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),t=!1}else o=cf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return i.flags&256?(hn(i),i):(hn(i),null);if((i.flags&128)!==0)throw Error(l(558))}return ft(i),null;case 13:if(c=i.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(g=vl(i),c!==null&&c.dehydrated!==null){if(t===null){if(!g)throw Error(l(318));if(g=i.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(l(317));g[Mt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),g=!1}else g=cf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=g),g=!0;if(!g)return i.flags&256?(hn(i),i):(hn(i),null)}return hn(i),(i.flags&128)!==0?(i.lanes=o,i):(o=c!==null,t=t!==null&&t.memoizedState!==null,o&&(c=i.child,g=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(g=c.alternate.memoizedState.cachePool.pool),x=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),x!==g&&(c.flags|=2048)),o!==t&&o&&(i.child.flags|=8192),Xs(i,i.updateQueue),ft(i),null);case 4:return se(),t===null&&Sd(i.stateNode.containerInfo),ft(i),null;case 10:return pr(i.type),ft(i),null;case 19:if(P(vt),c=i.memoizedState,c===null)return ft(i),null;if(g=(i.flags&128)!==0,x=c.rendering,x===null)if(g)Va(c,!1);else{if(gt!==0||t!==null&&(t.flags&128)!==0)for(t=i.child;t!==null;){if(x=Ds(t),x!==null){for(i.flags|=128,Va(c,!1),t=x.updateQueue,i.updateQueue=t,Xs(i,t),i.subtreeFlags=0,t=o,o=i.child;o!==null;)pg(o,t),o=o.sibling;return E(vt,vt.current&1|2),Ve&&dr(i,c.treeForkCount),i.child}t=t.sibling}c.tail!==null&&jt()>Js&&(i.flags|=128,g=!0,Va(c,!1),i.lanes=4194304)}else{if(!g)if(t=Ds(x),t!==null){if(i.flags|=128,g=!0,t=t.updateQueue,i.updateQueue=t,Xs(i,t),Va(c,!0),c.tail===null&&c.tailMode==="hidden"&&!x.alternate&&!Ve)return ft(i),null}else 2*jt()-c.renderingStartTime>Js&&o!==536870912&&(i.flags|=128,g=!0,Va(c,!1),i.lanes=4194304);c.isBackwards?(x.sibling=i.child,i.child=x):(t=c.last,t!==null?t.sibling=x:i.child=x,c.last=x)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=jt(),t.sibling=null,o=vt.current,E(vt,g?o&1|2:o&1),Ve&&dr(i,c.treeForkCount),t):(ft(i),null);case 22:case 23:return hn(i),_f(),c=i.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(i.flags|=8192):c&&(i.flags|=8192),c?(o&536870912)!==0&&(i.flags&128)===0&&(ft(i),i.subtreeFlags&6&&(i.flags|=8192)):ft(i),o=i.updateQueue,o!==null&&Xs(i,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==o&&(i.flags|=2048),t!==null&&P(Ai),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),i.memoizedState.cache!==o&&(i.flags|=2048),pr(St),ft(i),null;case 25:return null;case 30:return null}throw Error(l(156,i.tag))}function UE(t,i){switch(sf(i),i.tag){case 1:return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 3:return pr(St),se(),t=i.flags,(t&65536)!==0&&(t&128)===0?(i.flags=t&-65537|128,i):null;case 26:case 27:case 5:return ve(i),null;case 31:if(i.memoizedState!==null){if(hn(i),i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 13:if(hn(i),t=i.memoizedState,t!==null&&t.dehydrated!==null){if(i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 19:return P(vt),null;case 4:return se(),null;case 10:return pr(i.type),null;case 22:case 23:return hn(i),_f(),t!==null&&P(Ai),t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 24:return pr(St),null;case 25:return null;default:return null}}function I0(t,i){switch(sf(i),i.tag){case 3:pr(St),se();break;case 26:case 27:case 5:ve(i);break;case 4:se();break;case 31:i.memoizedState!==null&&hn(i);break;case 13:hn(i);break;case 19:P(vt);break;case 10:pr(i.type);break;case 22:case 23:hn(i),_f(),t!==null&&P(Ai);break;case 24:pr(St)}}function Ga(t,i){try{var o=i.updateQueue,c=o!==null?o.lastEffect:null;if(c!==null){var g=c.next;o=g;do{if((o.tag&t)===t){c=void 0;var x=o.create,C=o.inst;c=x(),C.destroy=c}o=o.next}while(o!==g)}}catch(O){et(i,i.return,O)}}function Zr(t,i,o){try{var c=i.updateQueue,g=c!==null?c.lastEffect:null;if(g!==null){var x=g.next;c=x;do{if((c.tag&t)===t){var C=c.inst,O=C.destroy;if(O!==void 0){C.destroy=void 0,g=i;var Z=o,le=O;try{le()}catch(ce){et(g,Z,ce)}}}c=c.next}while(c!==x)}}catch(ce){et(i,i.return,ce)}}function V0(t){var i=t.updateQueue;if(i!==null){var o=t.stateNode;try{Mg(i,o)}catch(c){et(t,t.return,c)}}}function G0(t,i,o){o.props=Ri(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(c){et(t,i,c)}}function Ya(t,i){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof o=="function"?t.refCleanup=o(c):o.current=c}}catch(g){et(t,i,g)}}function Zn(t,i){var o=t.ref,c=t.refCleanup;if(o!==null)if(typeof c=="function")try{c()}catch(g){et(t,i,g)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(g){et(t,i,g)}else o.current=null}function Y0(t){var i=t.type,o=t.memoizedProps,c=t.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":o.autoFocus&&c.focus();break e;case"img":o.src?c.src=o.src:o.srcSet&&(c.srcset=o.srcSet)}}catch(g){et(t,t.return,g)}}function td(t,i,o){try{var c=t.stateNode;s2(c,t.type,o,i),c[Gt]=i}catch(g){et(t,t.return,g)}}function $0(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ri(t.type)||t.tag===4}function nd(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||$0(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ri(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function rd(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,i):(i=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,i.appendChild(t),o=o._reactRootContainer,o!=null||i.onclick!==null||(i.onclick=ur));else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode,i=null),t=t.child,t!==null))for(rd(t,i,o),t=t.sibling;t!==null;)rd(t,i,o),t=t.sibling}function Fs(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?o.insertBefore(t,i):o.appendChild(t);else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Fs(t,i,o),t=t.sibling;t!==null;)Fs(t,i,o),t=t.sibling}function P0(t){var i=t.stateNode,o=t.memoizedProps;try{for(var c=t.type,g=i.attributes;g.length;)i.removeAttributeNode(g[0]);Ut(i,c,o),i[Mt]=t,i[Gt]=o}catch(x){et(t,t.return,x)}}var vr=!1,Nt=!1,id=!1,X0=typeof WeakSet=="function"?WeakSet:Set,Dt=null;function IE(t,i){if(t=t.containerInfo,Nd=mu,t=lg(t),Zc(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var c=o.getSelection&&o.getSelection();if(c&&c.rangeCount!==0){o=c.anchorNode;var g=c.anchorOffset,x=c.focusNode;c=c.focusOffset;try{o.nodeType,x.nodeType}catch{o=null;break e}var C=0,O=-1,Z=-1,le=0,ce=0,de=t,ae=null;t:for(;;){for(var oe;de!==o||g!==0&&de.nodeType!==3||(O=C+g),de!==x||c!==0&&de.nodeType!==3||(Z=C+c),de.nodeType===3&&(C+=de.nodeValue.length),(oe=de.firstChild)!==null;)ae=de,de=oe;for(;;){if(de===t)break t;if(ae===o&&++le===g&&(O=C),ae===x&&++ce===c&&(Z=C),(oe=de.nextSibling)!==null)break;de=ae,ae=de.parentNode}de=oe}o=O===-1||Z===-1?null:{start:O,end:Z}}else o=null}o=o||{start:0,end:0}}else o=null;for(kd={focusedElem:t,selectionRange:o},mu=!1,Dt=i;Dt!==null;)if(i=Dt,t=i.child,(i.subtreeFlags&1028)!==0&&t!==null)t.return=i,Dt=t;else for(;Dt!==null;){switch(i=Dt,x=i.alternate,t=i.flags,i.tag){case 0:if((t&4)!==0&&(t=i.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o title"))),Ut(x,c,o),x[Mt]=t,wt(x),c=x;break e;case"link":var C=Wy("link","href",g).get(c+(o.href||""));if(C){for(var O=0;Oit&&(C=it,it=ke,ke=C);var te=rg(O,ke),W=rg(O,it);if(te&&W&&(oe.rangeCount!==1||oe.anchorNode!==te.node||oe.anchorOffset!==te.offset||oe.focusNode!==W.node||oe.focusOffset!==W.offset)){var ie=de.createRange();ie.setStart(te.node,te.offset),oe.removeAllRanges(),ke>it?(oe.addRange(ie),oe.extend(W.node,W.offset)):(ie.setEnd(W.node,W.offset),oe.addRange(ie))}}}}for(de=[],oe=O;oe=oe.parentNode;)oe.nodeType===1&&de.push({element:oe,left:oe.scrollLeft,top:oe.scrollTop});for(typeof O.focus=="function"&&O.focus(),O=0;Oo?32:o,j.T=null,o=fd,fd=null;var x=ei,C=Er;if(Ot=0,Ol=ei=null,Er=0,(Ze&6)!==0)throw Error(l(331));var O=Ze;if(Ze|=4,iy(x.current),ty(x,x.current,C,o),Ze=O,Za(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(Lt,x)}catch{}return!0}finally{$.p=g,j.T=c,Sy(t,i)}}function Ey(t,i,o){i=En(o,i),i=Yf(t.stateNode,i,2),t=Xr(t,i,2),t!==null&&(xi(t,2),Kn(t))}function et(t,i,o){if(t.tag===3)Ey(t,t,o);else for(;i!==null;){if(i.tag===3){Ey(i,t,o);break}else if(i.tag===1){var c=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(Wr===null||!Wr.has(c))){t=En(o,t),o=N0(2),c=Xr(i,o,2),c!==null&&(k0(o,c,i,t),xi(c,2),Kn(c));break}}i=i.return}}function md(t,i,o){var c=t.pingCache;if(c===null){c=t.pingCache=new YE;var g=new Set;c.set(i,g)}else g=c.get(i),g===void 0&&(g=new Set,c.set(i,g));g.has(o)||(od=!0,g.add(o),t=QE.bind(null,t,i,o),i.then(t,t))}function QE(t,i,o){var c=t.pingCache;c!==null&&c.delete(i),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,lt===t&&(qe&o)===o&&(gt===4||gt===3&&(qe&62914560)===qe&&300>jt()-Ks?(Ze&2)===0&&Dl(t,0):sd|=o,Ml===qe&&(Ml=0)),Kn(t)}function Ny(t,i){i===0&&(i=Wo()),t=Ni(t,i),t!==null&&(xi(t,i),Kn(t))}function ZE(t){var i=t.memoizedState,o=0;i!==null&&(o=i.retryLane),Ny(t,o)}function KE(t,i){var o=0;switch(t.tag){case 31:case 13:var c=t.stateNode,g=t.memoizedState;g!==null&&(o=g.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(l(314))}c!==null&&c.delete(i),Ny(t,o)}function JE(t,i){return It(t,i)}var iu=null,Ll=null,gd=!1,lu=!1,yd=!1,ni=0;function Kn(t){t!==Ll&&t.next===null&&(Ll===null?iu=Ll=t:Ll=Ll.next=t),lu=!0,gd||(gd=!0,e2())}function Za(t,i){if(!yd&&lu){yd=!0;do for(var o=!1,c=iu;c!==null;){if(t!==0){var g=c.pendingLanes;if(g===0)var x=0;else{var C=c.suspendedLanes,O=c.pingedLanes;x=(1<<31-Je(42|t)+1)-1,x&=g&~(C&~O),x=x&201326741?x&201326741|1:x?x|2:0}x!==0&&(o=!0,zy(c,x))}else x=qe,x=ll(c,c===lt?x:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(x&3)===0||yi(c,x)||(o=!0,zy(c,x));c=c.next}while(o);yd=!1}}function WE(){ky()}function ky(){lu=gd=!1;var t=0;ni!==0&&c2()&&(t=ni);for(var i=jt(),o=null,c=iu;c!==null;){var g=c.next,x=Cy(c,i);x===0?(c.next=null,o===null?iu=g:o.next=g,g===null&&(Ll=o)):(o=c,(t!==0||(x&3)!==0)&&(lu=!0)),c=g}Ot!==0&&Ot!==5||Za(t),ni!==0&&(ni=0)}function Cy(t,i){for(var o=t.suspendedLanes,c=t.pingedLanes,g=t.expirationTimes,x=t.pendingLanes&-62914561;0O)break;var ce=Z.transferSize,de=Z.initiatorType;ce&&Hy(de)&&(Z=Z.responseEnd,C+=ce*(Z"u"?null:document;function Qy(t,i,o){var c=Hl;if(c&&typeof i=="string"&&i){var g=Kt(i);g='link[rel="'+t+'"][href="'+g+'"]',typeof o=="string"&&(g+='[crossorigin="'+o+'"]'),Fy.has(g)||(Fy.add(g),t={rel:t,crossOrigin:o,href:i},c.querySelector(g)===null&&(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function v2(t){Nr.D(t),Qy("dns-prefetch",t,null)}function b2(t,i){Nr.C(t,i),Qy("preconnect",t,i)}function w2(t,i,o){Nr.L(t,i,o);var c=Hl;if(c&&t&&i){var g='link[rel="preload"][as="'+Kt(i)+'"]';i==="image"&&o&&o.imageSrcSet?(g+='[imagesrcset="'+Kt(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(g+='[imagesizes="'+Kt(o.imageSizes)+'"]')):g+='[href="'+Kt(t)+'"]';var x=g;switch(i){case"style":x=Bl(t);break;case"script":x=ql(t)}An.has(x)||(t=p({rel:"preload",href:i==="image"&&o&&o.imageSrcSet?void 0:t,as:i},o),An.set(x,t),c.querySelector(g)!==null||i==="style"&&c.querySelector(eo(x))||i==="script"&&c.querySelector(to(x))||(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function S2(t,i){Nr.m(t,i);var o=Hl;if(o&&t){var c=i&&typeof i.as=="string"?i.as:"script",g='link[rel="modulepreload"][as="'+Kt(c)+'"][href="'+Kt(t)+'"]',x=g;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":x=ql(t)}if(!An.has(x)&&(t=p({rel:"modulepreload",href:t},i),An.set(x,t),o.querySelector(g)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(to(x)))return}c=o.createElement("link"),Ut(c,"link",t),wt(c),o.head.appendChild(c)}}}function _2(t,i,o){Nr.S(t,i,o);var c=Hl;if(c&&t){var g=Hr(c).hoistableStyles,x=Bl(t);i=i||"default";var C=g.get(x);if(!C){var O={loading:0,preload:null};if(C=c.querySelector(eo(x)))O.loading=5;else{t=p({rel:"stylesheet",href:t,"data-precedence":i},o),(o=An.get(x))&&Od(t,o);var Z=C=c.createElement("link");wt(Z),Ut(Z,"link",t),Z._p=new Promise(function(le,ce){Z.onload=le,Z.onerror=ce}),Z.addEventListener("load",function(){O.loading|=1}),Z.addEventListener("error",function(){O.loading|=2}),O.loading|=4,cu(C,i,c)}C={type:"stylesheet",instance:C,count:1,state:O},g.set(x,C)}}}function E2(t,i){Nr.X(t,i);var o=Hl;if(o&&t){var c=Hr(o).hoistableScripts,g=ql(t),x=c.get(g);x||(x=o.querySelector(to(g)),x||(t=p({src:t,async:!0},i),(i=An.get(g))&&Dd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function N2(t,i){Nr.M(t,i);var o=Hl;if(o&&t){var c=Hr(o).hoistableScripts,g=ql(t),x=c.get(g);x||(x=o.querySelector(to(g)),x||(t=p({src:t,async:!0,type:"module"},i),(i=An.get(g))&&Dd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function Zy(t,i,o,c){var g=(g=J.current)?uu(g):null;if(!g)throw Error(l(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(i=Bl(o.href),o=Hr(g).hoistableStyles,c=o.get(i),c||(c={type:"style",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=Bl(o.href);var x=Hr(g).hoistableStyles,C=x.get(t);if(C||(g=g.ownerDocument||g,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},x.set(t,C),(x=g.querySelector(eo(t)))&&!x._p&&(C.instance=x,C.state.loading=5),An.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},An.set(t,o),x||k2(g,t,o,C.state))),i&&c===null)throw Error(l(528,""));return C}if(i&&c!==null)throw Error(l(529,""));return null;case"script":return i=o.async,o=o.src,typeof o=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=ql(o),o=Hr(g).hoistableScripts,c=o.get(i),c||(c={type:"script",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,t))}}function Bl(t){return'href="'+Kt(t)+'"'}function eo(t){return'link[rel="stylesheet"]['+t+"]"}function Ky(t){return p({},t,{"data-precedence":t.precedence,precedence:null})}function k2(t,i,o,c){t.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(i=t.createElement("link"),c.preload=i,i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),Ut(i,"link",o),wt(i),t.head.appendChild(i))}function ql(t){return'[src="'+Kt(t)+'"]'}function to(t){return"script[async]"+t}function Jy(t,i,o){if(i.count++,i.instance===null)switch(i.type){case"style":var c=t.querySelector('style[data-href~="'+Kt(o.href)+'"]');if(c)return i.instance=c,wt(c),c;var g=p({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),wt(c),Ut(c,"style",g),cu(c,o.precedence,t),i.instance=c;case"stylesheet":g=Bl(o.href);var x=t.querySelector(eo(g));if(x)return i.state.loading|=4,i.instance=x,wt(x),x;c=Ky(o),(g=An.get(g))&&Od(c,g),x=(t.ownerDocument||t).createElement("link"),wt(x);var C=x;return C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),i.state.loading|=4,cu(x,o.precedence,t),i.instance=x;case"script":return x=ql(o.src),(g=t.querySelector(to(x)))?(i.instance=g,wt(g),g):(c=o,(g=An.get(x))&&(c=p({},o),Dd(c,g)),t=t.ownerDocument||t,g=t.createElement("script"),wt(g),Ut(g,"link",c),t.head.appendChild(g),i.instance=g);case"void":return null;default:throw Error(l(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(c=i.instance,i.state.loading|=4,cu(c,o.precedence,t));return i.instance}function cu(t,i,o){for(var c=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),g=c.length?c[c.length-1]:null,x=g,C=0;C title"):null)}function C2(t,i,o){if(o===1||i.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return t=i.disabled,typeof i.precedence=="string"&&t==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function tx(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function T2(t,i,o,c){if(o.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var g=Bl(c.href),x=i.querySelector(eo(g));if(x){i=x._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(t.count++,t=du.bind(t),i.then(t,t)),o.state.loading|=4,o.instance=x,wt(x);return}x=i.ownerDocument||i,c=Ky(c),(g=An.get(g))&&Od(c,g),x=x.createElement("link"),wt(x);var C=x;C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),o.instance=x}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,i),(i=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=du.bind(t),i.addEventListener("load",o),i.addEventListener("error",o))}}var Rd=0;function z2(t,i){return t.stylesheets&&t.count===0&&pu(t,t.stylesheets),0Rd?50:800)+i);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(g)}}:null}function du(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)pu(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var hu=null;function pu(t,i){t.stylesheets=null,t.unsuspend!==null&&(t.count++,hu=new Map,i.forEach(A2,t),hu=null,du.call(t))}function A2(t,i){if(!(i.state.loading&4)){var o=hu.get(t);if(o)var c=o.get(null);else{o=new Map,hu.set(t,o);for(var g=t.querySelectorAll("link[data-precedence],style[data-precedence]"),x=0;x"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Yd.exports=Q2(),Yd.exports}var K2=Z2();/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Q2=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ab=(...e)=>e.filter((n,r,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===r).join(" ").trim();/** + */const J2=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ab=(...e)=>e.filter((n,r,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===r).join(" ").trim();/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */var Z2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + */var W2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const K2=V.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:a="",children:s,iconNode:u,...f},h)=>V.createElement("svg",{ref:h,...Z2,width:n,height:n,stroke:e,strokeWidth:l?Number(r)*24/Number(n):r,className:Ab("lucide",a),...f},[...u.map(([d,m])=>V.createElement(d,m)),...Array.isArray(s)?s:[s]]));/** + */const eN=V.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:a="",children:s,iconNode:u,...f},h)=>V.createElement("svg",{ref:h,...W2,width:n,height:n,stroke:e,strokeWidth:l?Number(r)*24/Number(n):r,className:Ab("lucide",a),...f},[...u.map(([d,m])=>V.createElement(d,m)),...Array.isArray(s)?s:[s]]));/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Pe=(e,n)=>{const r=V.forwardRef(({className:l,...a},s)=>V.createElement(K2,{ref:s,iconNode:n,className:Ab(`lucide-${Q2(e)}`,l),...a}));return r.displayName=`${e}`,r};/** + */const $e=(e,n)=>{const r=V.forwardRef(({className:l,...a},s)=>V.createElement(eN,{ref:s,iconNode:n,className:Ab(`lucide-${J2(e)}`,l),...a}));return r.displayName=`${e}`,r};/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Mb=Pe("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** + */const jb=$e("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const J2=Pe("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** + */const tN=$e("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Vi=Pe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** + */const Vi=$e("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Ji=Pe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** + */const Ji=$e("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Mr=Pe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** + */const jr=$e("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const W2=Pe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** + */const nN=$e("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const eN=Pe("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + */const rN=$e("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const tN=Pe("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** + */const iN=$e("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const jb=Pe("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** + */const Mb=$e("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Ob=Pe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + */const Ob=$e("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const nN=Pe("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** + */const lN=$e("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const rN=Pe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + */const aN=$e("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const iN=Pe("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** + */const oN=$e("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const lN=Pe("FileOutput",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]]);/** + */const sN=$e("FileOutput",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const aN=Pe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** + */const Db=$e("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Db=Pe("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** + */const uN=$e("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Xp=Pe("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** + */const Rb=$e("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const ko=Pe("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** + */const Xp=$e("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const oN=Pe("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** + */const na=$e("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const sN=Pe("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** + */const cN=$e("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Fp=Pe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** + */const fN=$e("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const uN=Pe("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** + */const Fp=$e("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const cN=Pe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + */const dN=$e("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const fN=Pe("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** + */const hN=$e("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const dN=Pe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + */const pN=$e("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Nx=Pe("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** + */const mN=$e("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Rb=Pe("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + */const Nx=$e("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const hN=Pe("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** + */const Lb=$e("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const pN=Pe("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + */const gN=$e("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const mN=Pe("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + */const Hb=$e("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const gN=Pe("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** + */const yN=$e("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Io=Pe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** + */const xN=$e("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** * @license lucide-react v0.469.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const yN=Pe("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),kx=e=>{let n;const r=new Set,l=(d,m)=>{const p=typeof d=="function"?d(n):d;if(!Object.is(p,n)){const y=n;n=m??(typeof p!="object"||p===null)?p:Object.assign({},n,p),r.forEach(v=>v(n,y))}},a=()=>n,f={setState:l,getState:a,getInitialState:()=>h,subscribe:d=>(r.add(d),()=>r.delete(d))},h=n=e(l,a,f);return f},xN=(e=>e?kx(e):kx),vN=e=>e;function bN(e,n=vN){const r=Pl.useSyncExternalStore(e.subscribe,Pl.useCallback(()=>n(e.getState()),[e,n]),Pl.useCallback(()=>n(e.getInitialState()),[e,n]));return Pl.useDebugValue(r),r}const Cx=e=>{const n=xN(e),r=l=>bN(n,l);return Object.assign(r,n),r},wN=(e=>e?Cx(e):Cx);function Qe(e,n,r="agent"){return e[n]||(e[n]={name:n,status:"pending",type:r,activity:[]}),e[n].activity||(e[n].activity=[]),e[n]}function Su(e,n,r){Qe(e,n).activity.push(r)}function Ie(e,n){e[n]&&(e[n]={...e[n]})}function ao(e,n,r,l){const a=e[n];if(!(a!=null&&a.for_each_items))return;const s=a.for_each_items.find(u=>u.key===r);s&&s.activity.push(l)}function SN(e,n,r){return{parentAgent:e,iteration:n,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function di(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;l=0;l--){const a=e[l];if(a.parentAgent===n&&(r==null||a.iteration===r))return{ctx:a,index:l}}return null}const he=wN((e,n)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const s=he.getState()._wsSend;s&&s({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},processEvent:r=>{const l=_u[r.type];e(a=>{const s={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(s,r.data,r.timestamp);const u=Eu(r);u&&s.eventLog.push(u);const f=Nu(r);return f&&s.activityLog.push(f),s})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const s of r){const u=_u[s.type];u&&u(a,s.data,s.timestamp);const f=Eu(s);f&&a.eventLog.push(f);const h=Nu(s);h&&a.activityLog.push(h),a.lastEventTime=s.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const s of r){const u=_u[s.type];u&&u(a,s.data,s.timestamp);const f=Eu(s);f&&a.eventLog.push(f);const h=Nu(s);h&&a.activityLog.push(h),a.lastEventTime=s.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),s={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,lastEventTime:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const f=_u[u.type];f&&f(s,u.data,u.timestamp);const h=Eu(u);h&&s.eventLog.push(h);const d=Nu(u);d&&s.activityLog.push(d),s.lastEventTime=u.timestamp}return s})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(s=>({highlightedEdges:[...s.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(s=>!(s.from===r&&s.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:(r,l)=>{const a=n(),s=a.viewContextPath;let u;if(s.length===0)u=a.subworkflowContexts;else{const h=di(a.subworkflowContexts,s);if(!h)return;u=h.children}const f=_N(u,r,l);f&&e({viewContextPath:[...s,f.index],selectedNode:null})},getViewedContext:()=>{const r=n();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=di(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=n(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let s=0;s0){const n=di(e.subworkflowContexts,e.activeContextPath);if(n)return{nodes:n.nodes,groupProgress:n.groupProgress,routes:n.routes,highlightedEdges:n.highlightedEdges,addCost:r=>{n.totalCost+=r,e.totalCost+=r},addTokens:r=>{n.totalTokens+=r,e.totalTokens+=r},incrCompleted:()=>{n.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:n=>{e.totalCost+=n},addTokens:n=>{e.totalTokens+=n},incrCompleted:()=>{e.agentsCompleted++}}}const _u={workflow_started:(e,n,r)=>{const l=n;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=n.yaml_source??null,e.conductorVersion=n.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],Qe(e.nodes,"$start","start"),e.nodes.$start.status="running",Ie(e.nodes,"$start");const a=new Set,s=new Set;for(const u of e.parallelGroups){for(const f of u.agents)a.add(f);s.add(u.name),Qe(e.nodes,u.name,"parallel_group"),e.groupProgress[u.name]={total:u.agents.length,completed:0,failed:0};for(const f of u.agents)Qe(e.nodes,f,"agent")}for(const u of e.forEachGroups)s.add(u.name),Qe(e.nodes,u.name,"for_each_group"),e.groupProgress[u.name]={total:0,completed:0,failed:0};for(const u of e.agents)if(!s.has(u.name)&&!a.has(u.name)){const f=u.type||"agent";Qe(e.nodes,u.name,f),u.model&&(e.nodes[u.name].model=u.model),s.add(u.name)}e.agentsTotal=s.size}else{const a=di(e.subworkflowContexts,e.activeContextPath);if(a){a.workflowName=l.name||"",a.status="running",a.entryPoint=l.entry_point||null,a.agents=l.agents||[],a.routes=l.routes||[],a.parallelGroups=l.parallel_groups||[],a.forEachGroups=l.for_each_groups||[],Qe(a.nodes,"$start","start"),a.nodes.$start.status="running";const s=new Set,u=new Set;for(const f of a.parallelGroups){for(const h of f.agents)s.add(h);u.add(f.name),Qe(a.nodes,f.name,"parallel_group"),a.groupProgress[f.name]={total:f.agents.length,completed:0,failed:0};for(const h of f.agents)Qe(a.nodes,h,"agent")}for(const f of a.forEachGroups)u.add(f.name),Qe(a.nodes,f.name,"for_each_group"),a.groupProgress[f.name]={total:0,completed:0,failed:0};for(const f of a.agents)if(!u.has(f.name)&&!s.has(f.name)){const h=f.type||"agent";Qe(a.nodes,f.name,h),f.model&&(a.nodes[f.name].model=f.model),u.add(f.name)}a.agentsTotal=u.size}}e.wfDepth++},agent_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.iteration!=null&&(s.output!=null||s.error_type!=null)&&(s.iterationHistory||(s.iterationHistory=[]),s.iterationHistory.push({iteration:s.iteration,prompt:s.prompt,output:s.output,elapsed:s.elapsed,model:s.model,tokens:s.tokens,input_tokens:s.input_tokens,output_tokens:s.output_tokens,cost_usd:s.cost_usd,activity:s.activity,error_type:s.error_type,error_message:s.error_message})),s.status="running",s.iteration=l.iteration,s.startedAt=r??Date.now()/1e3,s.activity=[],l.context_window_max!=null&&(s.context_window_max=l.context_window_max),s.prompt=void 0,s.output=void 0,s.error_type=void 0,s.error_message=void 0,Ie(a.nodes,l.agent_name)},agent_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name)},agent_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const s of l.routes)s.to===r.agent_name&&l.highlightedEdges.push({from:s.from,to:s.to,state:"failed"});Ie(l.nodes,r.agent_name)},agent_prompt_rendered:(e,n)=>{var u;const r=n,l=n.item_key,a=at(e),s=Qe(a.nodes,r.agent_name);if(s.prompt=r.rendered_prompt,s.context_keys=r.context_keys,l){ao(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const f=a.nodes[r.agent_name];if(f!=null&&f.for_each_items){const h=f.for_each_items.find(d=>d.key===l);h&&(h.prompt=r.rendered_prompt)}}Ie(a.nodes,r.agent_name)},agent_reasoning:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"reasoning",icon:"💭",label:"thinking",text:r.content};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_complete:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_turn_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};Su(a.nodes,r.agent_name,s),l&&ao(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_message:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.latest_message=r.content,Ie(l.nodes,r.agent_name)},script_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.status="running",s.startedAt=r??Date.now()/1e3,Ie(a.nodes,l.agent_name)},script_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,Ie(l.nodes,r.agent_name)},script_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name)},gate_presented:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,Ie(l.nodes,r.agent_name)},gate_resolved:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,Ie(l.nodes,r.agent_name)},route_taken:(e,n)=>{const r=n;at(e).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},parallel_agent_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_agent_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",Ie(l.nodes,r.group_name)},for_each_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},for_each_item_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),Ie(l.nodes,r.group_name)},for_each_item_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}Ie(l.nodes,r.group_name)},for_each_item_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}Ie(l.nodes,r.group_name)},for_each_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,Ie(l.nodes,r.group_name)},workflow_completed:(e,n)=>{if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const r=n;e.workflowStatus="completed",e.isPaused=!1,e.workflowOutput=r.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",Ie(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start")),e.highlightedEdges=[]}else{const r=di(e.subworkflowContexts,e.activeContextPath);if(r){const l=n;r.status="completed",r.workflowOutput=l.output??null,r.nodes.$end&&(r.nodes.$end.status="completed"),r.nodes.$start&&(r.nodes.$start.status="completed"),r.highlightedEdges=[]}e.activeContextPath=e.activeContextPath.slice(0,-1)}},workflow_failed:(e,n)=>{e.wfDepth=Math.max(0,e.wfDepth-1);const r=n;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",Ie(e.nodes,r.agent_name);for(const l of e.routes)l.to===r.agent_name&&e.highlightedEdges.push({from:l.from,to:l.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start"))}else{const l=di(e.subworkflowContexts,e.activeContextPath);l&&(l.status="failed",l.workflowFailure={error_type:r.error_type,message:r.message}),e.activeContextPath=e.activeContextPath.slice(0,-1)}},subworkflow_started:(e,n)=>{const r=n,l=SN(r.agent_name,r.iteration??1,r.workflow);if(e.activeContextPath.length===0)e.subworkflowContexts.push(l),e.activeContextPath=[e.subworkflowContexts.length-1];else{const s=di(e.subworkflowContexts,e.activeContextPath);s&&(s.children.push(l),e.activeContextPath=[...e.activeContextPath,s.children.length-1])}const a=e.activeContextPath.slice(0,-1);if(a.length===0){const s=e.nodes[r.agent_name];s&&(s.status="running",Ie(e.nodes,r.agent_name))}else{const s=di(e.subworkflowContexts,a);if(s){const u=s.nodes[r.agent_name];u&&(u.status="running",Ie(s.nodes,r.agent_name))}}},subworkflow_completed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="completed",a.elapsed=r.elapsed,l.incrCompleted(),Ie(l.nodes,r.agent_name))},subworkflow_failed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name))},checkpoint_saved:(e,n)=>{const r=n;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),Ie(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),Ie(e.nodes,r.agent_name),e.isPaused=!1}};function Eu(e){var l,a;const n=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:n,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:n,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:n,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:n,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:n,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:n,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:n,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};default:return null}}function qu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Nu(e){const n=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:n,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:oo(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:n,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:n,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?oo(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?oo(String(r.result),300):null};case"agent_turn_start":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:n,source:String(r.agent_name),type:"message",message:oo(String(r.content||""),500)};case"agent_completed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?oo(String(r.stdout),300):null};case"script_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function oo(e,n){return e.length<=n?e:e.slice(0,n)+"…"}function Tx(e){const n=e.match(/^(\s*)/);return n?n[1].length:0}function EN(e){const n=new Map;for(let r=0;ra)s=u;else break}s>r&&n.set(r,s)}return n}function NN(e){if(/^\s*#/.test(e))return b.jsx("span",{className:"text-emerald-500/70",children:e});const n=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(n){const[,l,a,s,u,f]=n;return b.jsxs("span",{children:[l,a??"",b.jsx("span",{className:"text-sky-400",children:s}),b.jsx("span",{className:"text-[var(--text-muted)]",children:u}),zx(f)]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,s]=r;return b.jsxs("span",{children:[l,b.jsx("span",{className:"text-[var(--text-muted)]",children:a}),zx(s)]})}return b.jsx("span",{children:e})}function zx(e){if(!e)return"";const n=e.indexOf(" #"),r=n>=0?e.slice(0,n):e,l=n>=0?e.slice(n):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=b.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=b.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),b.jsxs(b.Fragment,{children:[a,l&&b.jsx("span",{className:"text-emerald-500/70",children:l})]})}function kN({yaml:e,onClose:n}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const h=d=>{d.key==="Escape"&&n()};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[n]);const a=V.useMemo(()=>e.split(` -`),[e]),s=V.useMemo(()=>EN(a),[a]),u=V.useCallback(h=>{l(d=>{const m=new Set(d);return m.has(h)?m.delete(h):m.add(h),m})},[]),f=V.useMemo(()=>{const h=[];let d=-1;for(let m=0;mb.jsxs("div",{className:"flex",children:[b.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?b.jsx("button",{onClick:()=>u(h),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?b.jsx(Mr,{className:"w-3 h-3"}):b.jsx(Ji,{className:"w-3 h-3"})}):null}),b.jsxs("span",{className:"flex-1",children:[NN(d),p&&b.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(h),children:"···"})]})]},h))})})]})]})}function CN(){const e=he(_=>_.workflowName),n=he(_=>_.workflowStatus),r=he(_=>_.isPaused),l=he(_=>_.workflowYaml),a=he(_=>_.conductorVersion),[s,u]=V.useState(!1),[f,h]=V.useState(!1),[d,m]=V.useState(!1),[p,y]=V.useState(!1),v=n==="running"||n==="pending";V.useEffect(()=>{r||(u(!1),h(!1),m(!1))},[r]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(_){console.error("Failed to stop agent:",_),u(!1)}},k=async()=>{h(!0);try{await fetch("/api/resume",{method:"POST"})}catch(_){console.error("Failed to resume agent:",_),h(!1)}},S=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(_){console.error("Failed to kill workflow:",_),m(!1)}};return b.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(Mb,{className:"w-4 h-4 text-[var(--running)]"}),b.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&b.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),b.jsxs("div",{className:"flex items-center gap-3",children:[r?b.jsxs(b.Fragment,{children:[b.jsxs("button",{onClick:k,disabled:f,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + */const ca=$e("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** + * @license lucide-react v0.469.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vN=$e("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),kx=e=>{let n;const r=new Set,l=(d,m)=>{const p=typeof d=="function"?d(n):d;if(!Object.is(p,n)){const y=n;n=m??(typeof p!="object"||p===null)?p:Object.assign({},n,p),r.forEach(v=>v(n,y))}},a=()=>n,f={setState:l,getState:a,getInitialState:()=>h,subscribe:d=>(r.add(d),()=>r.delete(d))},h=n=e(l,a,f);return f},bN=(e=>e?kx(e):kx),wN=e=>e;function SN(e,n=wN){const r=Pl.useSyncExternalStore(e.subscribe,Pl.useCallback(()=>n(e.getState()),[e,n]),Pl.useCallback(()=>n(e.getInitialState()),[e,n]));return Pl.useDebugValue(r),r}const Cx=e=>{const n=bN(e),r=l=>SN(n,l);return Object.assign(r,n),r},_N=(e=>e?Cx(e):Cx);function Qe(e,n,r="agent"){return e[n]||(e[n]={name:n,status:"pending",type:r,activity:[]}),e[n].activity||(e[n].activity=[]),e[n]}function Su(e,n,r){Qe(e,n).activity.push(r)}function Ie(e,n){e[n]&&(e[n]={...e[n]})}function so(e,n,r,l){const a=e[n];if(!(a!=null&&a.for_each_items))return;const s=a.for_each_items.find(u=>u.key===r);s&&s.activity.push(l)}function EN(e,n,r){return{parentAgent:e,iteration:n,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function di(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;l=0;l--){const a=e[l];if(a.parentAgent===n&&(r==null||a.iteration===r))return{ctx:a,index:l}}return null}const he=_N((e,n)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const s=he.getState()._wsSend;s&&s({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},processEvent:r=>{const l=_u[r.type];e(a=>{const s={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(s,r.data,r.timestamp);const u=Eu(r);u&&s.eventLog.push(u);const f=Nu(r);return f&&s.activityLog.push(f),s})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const s of r){const u=_u[s.type];u&&u(a,s.data,s.timestamp);const f=Eu(s);f&&a.eventLog.push(f);const h=Nu(s);h&&a.activityLog.push(h),a.lastEventTime=s.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const s of r){const u=_u[s.type];u&&u(a,s.data,s.timestamp);const f=Eu(s);f&&a.eventLog.push(f);const h=Nu(s);h&&a.activityLog.push(h),a.lastEventTime=s.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),s={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,lastEventTime:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const f=_u[u.type];f&&f(s,u.data,u.timestamp);const h=Eu(u);h&&s.eventLog.push(h);const d=Nu(u);d&&s.activityLog.push(d),s.lastEventTime=u.timestamp}return s})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(s=>({highlightedEdges:[...s.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(s=>!(s.from===r&&s.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:(r,l)=>{const a=n(),s=a.viewContextPath;let u;if(s.length===0)u=a.subworkflowContexts;else{const h=di(a.subworkflowContexts,s);if(!h)return;u=h.children}const f=NN(u,r,l);f&&e({viewContextPath:[...s,f.index],selectedNode:null})},getViewedContext:()=>{const r=n();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=di(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=n(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let s=0;s0){const n=di(e.subworkflowContexts,e.activeContextPath);if(n)return{nodes:n.nodes,groupProgress:n.groupProgress,routes:n.routes,highlightedEdges:n.highlightedEdges,addCost:r=>{n.totalCost+=r,e.totalCost+=r},addTokens:r=>{n.totalTokens+=r,e.totalTokens+=r},incrCompleted:()=>{n.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:n=>{e.totalCost+=n},addTokens:n=>{e.totalTokens+=n},incrCompleted:()=>{e.agentsCompleted++}}}const _u={workflow_started:(e,n,r)=>{const l=n;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=n.yaml_source??null,e.conductorVersion=n.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],Qe(e.nodes,"$start","start"),e.nodes.$start.status="running",Ie(e.nodes,"$start");const a=new Set,s=new Set;for(const u of e.parallelGroups){for(const f of u.agents)a.add(f);s.add(u.name),Qe(e.nodes,u.name,"parallel_group"),e.groupProgress[u.name]={total:u.agents.length,completed:0,failed:0};for(const f of u.agents)Qe(e.nodes,f,"agent")}for(const u of e.forEachGroups)s.add(u.name),Qe(e.nodes,u.name,"for_each_group"),e.groupProgress[u.name]={total:0,completed:0,failed:0};for(const u of e.agents)if(!s.has(u.name)&&!a.has(u.name)){const f=u.type||"agent";Qe(e.nodes,u.name,f),u.model&&(e.nodes[u.name].model=u.model),s.add(u.name)}e.agentsTotal=s.size}else{const a=di(e.subworkflowContexts,e.activeContextPath);if(a){a.workflowName=l.name||"",a.status="running",a.entryPoint=l.entry_point||null,a.agents=l.agents||[],a.routes=l.routes||[],a.parallelGroups=l.parallel_groups||[],a.forEachGroups=l.for_each_groups||[],Qe(a.nodes,"$start","start"),a.nodes.$start.status="running";const s=new Set,u=new Set;for(const f of a.parallelGroups){for(const h of f.agents)s.add(h);u.add(f.name),Qe(a.nodes,f.name,"parallel_group"),a.groupProgress[f.name]={total:f.agents.length,completed:0,failed:0};for(const h of f.agents)Qe(a.nodes,h,"agent")}for(const f of a.forEachGroups)u.add(f.name),Qe(a.nodes,f.name,"for_each_group"),a.groupProgress[f.name]={total:0,completed:0,failed:0};for(const f of a.agents)if(!u.has(f.name)&&!s.has(f.name)){const h=f.type||"agent";Qe(a.nodes,f.name,h),f.model&&(a.nodes[f.name].model=f.model),u.add(f.name)}a.agentsTotal=u.size}}e.wfDepth++},agent_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.iteration!=null&&(s.output!=null||s.error_type!=null)&&(s.iterationHistory||(s.iterationHistory=[]),s.iterationHistory.push({iteration:s.iteration,prompt:s.prompt,output:s.output,elapsed:s.elapsed,model:s.model,tokens:s.tokens,input_tokens:s.input_tokens,output_tokens:s.output_tokens,cost_usd:s.cost_usd,activity:s.activity,error_type:s.error_type,error_message:s.error_message})),s.status="running",s.iteration=l.iteration,s.startedAt=r??Date.now()/1e3,s.activity=[],l.context_window_max!=null&&(s.context_window_max=l.context_window_max),s.prompt=void 0,s.output=void 0,s.error_type=void 0,s.error_message=void 0,Ie(a.nodes,l.agent_name)},agent_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name)},agent_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const s of l.routes)s.to===r.agent_name&&l.highlightedEdges.push({from:s.from,to:s.to,state:"failed"});Ie(l.nodes,r.agent_name)},agent_prompt_rendered:(e,n)=>{var u;const r=n,l=n.item_key,a=at(e),s=Qe(a.nodes,r.agent_name);if(s.prompt=r.rendered_prompt,s.context_keys=r.context_keys,l){so(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const f=a.nodes[r.agent_name];if(f!=null&&f.for_each_items){const h=f.for_each_items.find(d=>d.key===l);h&&(h.prompt=r.rendered_prompt)}}Ie(a.nodes,r.agent_name)},agent_reasoning:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"reasoning",icon:"💭",label:"thinking",text:r.content};Su(a.nodes,r.agent_name,s),l&&so(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};Su(a.nodes,r.agent_name,s),l&&so(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_complete:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};Su(a.nodes,r.agent_name,s),l&&so(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_turn_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};Su(a.nodes,r.agent_name,s),l&&so(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_message:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.latest_message=r.content,Ie(l.nodes,r.agent_name)},script_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.status="running",s.startedAt=r??Date.now()/1e3,Ie(a.nodes,l.agent_name)},script_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,Ie(l.nodes,r.agent_name)},script_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name)},gate_presented:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,Ie(l.nodes,r.agent_name)},gate_resolved:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,Ie(l.nodes,r.agent_name)},route_taken:(e,n)=>{const r=n;at(e).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},parallel_agent_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_agent_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",Ie(l.nodes,r.group_name)},for_each_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},for_each_item_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),Ie(l.nodes,r.group_name)},for_each_item_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}Ie(l.nodes,r.group_name)},for_each_item_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}Ie(l.nodes,r.group_name)},for_each_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,Ie(l.nodes,r.group_name)},workflow_completed:(e,n)=>{if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const r=n;e.workflowStatus="completed",e.isPaused=!1,e.workflowOutput=r.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",Ie(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start")),e.highlightedEdges=[]}else{const r=di(e.subworkflowContexts,e.activeContextPath);if(r){const l=n;r.status="completed",r.workflowOutput=l.output??null,r.nodes.$end&&(r.nodes.$end.status="completed"),r.nodes.$start&&(r.nodes.$start.status="completed"),r.highlightedEdges=[]}e.activeContextPath=e.activeContextPath.slice(0,-1)}},workflow_failed:(e,n)=>{e.wfDepth=Math.max(0,e.wfDepth-1);const r=n;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",Ie(e.nodes,r.agent_name);for(const l of e.routes)l.to===r.agent_name&&e.highlightedEdges.push({from:l.from,to:l.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start"))}else{const l=di(e.subworkflowContexts,e.activeContextPath);l&&(l.status="failed",l.workflowFailure={error_type:r.error_type,message:r.message}),e.activeContextPath=e.activeContextPath.slice(0,-1)}},subworkflow_started:(e,n)=>{const r=n,l=EN(r.agent_name,r.iteration??1,r.workflow);if(e.activeContextPath.length===0)e.subworkflowContexts.push(l),e.activeContextPath=[e.subworkflowContexts.length-1];else{const s=di(e.subworkflowContexts,e.activeContextPath);s&&(s.children.push(l),e.activeContextPath=[...e.activeContextPath,s.children.length-1])}const a=e.activeContextPath.slice(0,-1);if(a.length===0){const s=e.nodes[r.agent_name];s&&(s.status="running",Ie(e.nodes,r.agent_name))}else{const s=di(e.subworkflowContexts,a);if(s){const u=s.nodes[r.agent_name];u&&(u.status="running",Ie(s.nodes,r.agent_name))}}},subworkflow_completed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="completed",a.elapsed=r.elapsed,l.incrCompleted(),Ie(l.nodes,r.agent_name))},subworkflow_failed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name))},checkpoint_saved:(e,n)=>{const r=n;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),Ie(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),Ie(e.nodes,r.agent_name),e.isPaused=!1}};function Eu(e){var l,a;const n=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:n,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:n,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:n,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:n,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:n,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:n,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:n,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};default:return null}}function qu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Nu(e){const n=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:n,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:uo(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:n,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:n,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?uo(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?uo(String(r.result),300):null};case"agent_turn_start":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:n,source:String(r.agent_name),type:"message",message:uo(String(r.content||""),500)};case"agent_completed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?uo(String(r.stdout),300):null};case"script_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function uo(e,n){return e.length<=n?e:e.slice(0,n)+"…"}function Tx(e){const n=e.match(/^(\s*)/);return n?n[1].length:0}function kN(e){const n=new Map;for(let r=0;ra)s=u;else break}s>r&&n.set(r,s)}return n}function CN(e){if(/^\s*#/.test(e))return b.jsx("span",{className:"text-emerald-500/70",children:e});const n=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(n){const[,l,a,s,u,f]=n;return b.jsxs("span",{children:[l,a??"",b.jsx("span",{className:"text-sky-400",children:s}),b.jsx("span",{className:"text-[var(--text-muted)]",children:u}),zx(f)]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,s]=r;return b.jsxs("span",{children:[l,b.jsx("span",{className:"text-[var(--text-muted)]",children:a}),zx(s)]})}return b.jsx("span",{children:e})}function zx(e){if(!e)return"";const n=e.indexOf(" #"),r=n>=0?e.slice(0,n):e,l=n>=0?e.slice(n):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=b.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=b.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),b.jsxs(b.Fragment,{children:[a,l&&b.jsx("span",{className:"text-emerald-500/70",children:l})]})}function TN({yaml:e,onClose:n}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const h=d=>{d.key==="Escape"&&n()};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[n]);const a=V.useMemo(()=>e.split(` +`),[e]),s=V.useMemo(()=>kN(a),[a]),u=V.useCallback(h=>{l(d=>{const m=new Set(d);return m.has(h)?m.delete(h):m.add(h),m})},[]),f=V.useMemo(()=>{const h=[];let d=-1;for(let m=0;mb.jsxs("div",{className:"flex",children:[b.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?b.jsx("button",{onClick:()=>u(h),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?b.jsx(jr,{className:"w-3 h-3"}):b.jsx(Ji,{className:"w-3 h-3"})}):null}),b.jsxs("span",{className:"flex-1",children:[CN(d),p&&b.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(h),children:"···"})]})]},h))})})]})]})}function zN(){const e=he(S=>S.workflowName),n=he(S=>S.workflowStatus),r=he(S=>S.isPaused),l=he(S=>S.workflowYaml),a=he(S=>S.conductorVersion),[s,u]=V.useState(!1),[f,h]=V.useState(!1),[d,m]=V.useState(!1),[p,y]=V.useState(!1),v=n==="running"||n==="pending";V.useEffect(()=>{r||(u(!1),h(!1),m(!1))},[r]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(S){console.error("Failed to stop agent:",S),u(!1)}},k=async()=>{h(!0);try{await fetch("/api/resume",{method:"POST"})}catch(S){console.error("Failed to resume agent:",S),h(!1)}},_=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(S){console.error("Failed to kill workflow:",S),m(!1)}};return b.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(jb,{className:"w-4 h-4 text-[var(--running)]"}),b.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&b.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),b.jsxs("div",{className:"flex items-center gap-3",children:[r?b.jsxs(b.Fragment,{children:[b.jsxs("button",{onClick:k,disabled:f,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\r hover:bg-emerald-500/20 hover:border-emerald-500/30\r disabled:opacity-50 disabled:cursor-not-allowed\r - transition-colors`,title:"Re-execute the paused agent",children:[b.jsx(Fp,{className:"w-3 h-3"}),f?"Resuming...":"Resume"]}),b.jsxs("button",{onClick:S,disabled:d,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + transition-colors`,title:"Re-execute the paused agent",children:[b.jsx(Fp,{className:"w-3 h-3"}),f?"Resuming...":"Resume"]}),b.jsxs("button",{onClick:_,disabled:d,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r bg-red-500/10 text-red-400 border border-red-500/20\r hover:bg-red-500/20 hover:border-red-500/30\r disabled:opacity-50 disabled:cursor-not-allowed\r - transition-colors`,title:"Stop workflow entirely (checkpoint saved for CLI resume)",children:[b.jsx(Io,{className:"w-3 h-3"}),d?"Killing...":"Kill"]})]}):v?b.jsxs("button",{onClick:w,disabled:s,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + transition-colors`,title:"Stop workflow entirely (checkpoint saved for CLI resume)",children:[b.jsx(ca,{className:"w-3 h-3"}),d?"Killing...":"Kill"]})]}):v?b.jsxs("button",{onClick:w,disabled:s,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r bg-red-500/10 text-red-400 border border-red-500/20\r hover:bg-red-500/20 hover:border-red-500/30\r disabled:opacity-50 disabled:cursor-not-allowed\r - transition-colors`,children:[b.jsx(Rb,{className:"w-3 h-3"}),s?"Stopping...":"Stop"]}):null,l&&b.jsxs("button",{onClick:()=>y(!0),className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + transition-colors`,children:[b.jsx(Lb,{className:"w-3 h-3"}),s?"Stopping...":"Stop"]}):null,l&&b.jsxs("button",{onClick:()=>y(!0),className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r hover:text-[var(--text)] hover:bg-[var(--surface)]\r - transition-colors`,title:"View workflow YAML configuration",children:[b.jsx(iN,{className:"w-3 h-3"}),"YAML"]}),b.jsxs("a",{href:"/api/logs",download:"conductor-logs.json",className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r + transition-colors`,title:"View workflow YAML configuration",children:[b.jsx(oN,{className:"w-3 h-3"}),"YAML"]}),b.jsxs("a",{href:"/api/logs",download:"conductor-logs.json",className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r hover:text-[var(--text)] hover:bg-[var(--surface)]\r - transition-colors`,title:"Download full event log as JSON",children:[b.jsx(nN,{className:"w-3 h-3"}),"Logs"]}),b.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["v",a??"—"]})]}),p&&l&&b.jsx(kN,{yaml:l,onClose:()=>y(!1)})]})}function TN(){const e=he(s=>s.getBreadcrumbs),n=he(s=>s.navigateToContext),r=he(s=>s.viewContextPath);if(he(s=>s.subworkflowContexts).length===0&&r.length===0)return null;const a=e();return b.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5 bg-[var(--surface)] border-b border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx(Xp,{className:"w-3 h-3 text-[var(--text-muted)] mr-1"}),a.map((s,u)=>{const f=u===a.length-1,h=JSON.stringify(s.path)===JSON.stringify(r);return b.jsxs("span",{className:"flex items-center gap-1",children:[u>0&&b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)]"}),f?b.jsx("span",{className:"font-semibold text-[var(--text)]",children:s.label}):b.jsx("button",{onClick:()=>n(s.path),className:`hover:text-[var(--running)] transition-colors ${h?"text-[var(--text)] font-medium":"text-[var(--text-muted)]"}`,children:s.label})]},u)})]})}function Be(...e){return e.filter(Boolean).join(" ")}function Qt(e){if(e==null)return"";if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Vn(e){return e==null?"":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function mi(e){return e==null?"":`$${e.toFixed(4)}`}function Lb(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)}function zN(e,n){if(n<=0)return`${e.toLocaleString()} tokens (limit unknown)`;const r=a=>a.toLocaleString(),l=(e/n*100).toFixed(1);return`${r(e)} / ${r(n)} (${l}%)`}function Hb(){const e=he(f=>f.workflowStatus),n=he(f=>f.workflowStartTime),r=he(f=>f.replayMode),l=he(f=>f.lastEventTime),[a,s]=V.useState("—"),u=V.useRef(null);return V.useEffect(()=>{if(n!=null){if(r){u.current&&(clearInterval(u.current),u.current=null),s(Qt((l??n)-n));return}if(e==="running"){const f=()=>{const h=Date.now()/1e3-n;s(Qt(h))};return f(),u.current=setInterval(f,500),()=>{u.current&&clearInterval(u.current)}}else(e==="completed"||e==="failed")&&u.current&&(clearInterval(u.current),u.current=null)}},[e,n,r,l]),a}function AN(){const e=he(k=>k.workflowStatus),n=he(k=>k.agentsCompleted),r=he(k=>k.agentsTotal),l=he(k=>k.totalCost),a=he(k=>k.totalTokens),s=he(k=>k.wsStatus),u=he(k=>k.workflowFailure),f=he(k=>k.lastEventTime),h=Hb(),[d,m]=V.useState(null);V.useEffect(()=>{if(e!=="running"||f==null){m(null);return}const k=()=>{m(Math.floor(Date.now()/1e3-f))};k();const S=setInterval(k,1e3);return()=>clearInterval(S)},[e,f]);const p=e==="failed",y=(()=>{switch(e){case"pending":return"Waiting for workflow…";case"running":return"Running";case"completed":return"Completed";case"failed":{if(!u)return"Failed";const k=u.error_type||"";return k==="MaxIterationsError"?"Failed: exceeded maximum iterations":k==="TimeoutError"?"Failed: workflow timed out":u.message?`Failed: ${u.message.length>60?u.message.slice(0,57)+"...":u.message}`:`Failed: ${k}`}}})(),v={pending:"bg-[var(--pending)]",running:"bg-[var(--running)] animate-pulse",completed:"bg-[var(--completed)]",failed:"bg-[var(--failed)]"}[e],w=(()=>{switch(s){case"connected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--completed)]",children:[b.jsx(gN,{className:"w-3 h-3"}),b.jsx("span",{children:"Connected"})]});case"disconnected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--failed)]",children:[b.jsx(mN,{className:"w-3 h-3"}),b.jsx("span",{children:"Disconnected"})]});case"reconnecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--waiting)]",children:[b.jsx(ko,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Reconnecting\\u2026"})]});case"connecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-muted)]",children:[b.jsx(ko,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Connecting\\u2026"})]})}})();return b.jsxs("footer",{className:Be("flex items-center gap-4 px-4 py-1.5 border-t text-xs flex-shrink-0 transition-colors duration-300",p?"bg-red-950/50 border-red-500/30":"bg-[var(--surface)] border-[var(--border)]"),children:[b.jsx("span",{className:Be("w-2 h-2 rounded-full flex-shrink-0",v)}),b.jsx("span",{className:Be(p?"text-red-300":"text-[var(--text)]"),children:y}),r>0&&b.jsxs("span",{className:Be(p?"text-red-400/60":"text-[var(--text-muted)]"),children:[n,"/",r," agents"]}),e!=="pending"&&b.jsx("span",{className:Be("font-mono",p?"text-red-400/60":"text-[var(--text-muted)]"),children:h}),a>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total tokens used",children:[b.jsx(Db,{className:"w-3 h-3"}),b.jsx("span",{className:"font-mono",children:a.toLocaleString()})]}),l>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total cost",children:[b.jsx(jb,{className:"w-3 h-3"}),b.jsxs("span",{className:"font-mono",children:["$",l.toFixed(4)]})]}),d!=null&&d>=5&&b.jsxs("span",{className:Be("flex items-center gap-1 font-mono",d>=60?"text-amber-400":"text-[var(--text-muted)]"),title:"Time since last event from the provider",children:[b.jsx(tN,{className:"w-3 h-3"}),b.jsx("span",{children:d>=60?`${Math.floor(d/60)}m ${d%60}s idle`:`${d}s idle`})]}),b.jsx("span",{className:"flex-1"}),w]})}const MN=[1,5,10,20,50];function jN(e,n){if(n===0||e.length===0)return"+0.0s";const r=e[0].timestamp,a=e[Math.min(n,e.length)-1].timestamp-r;if(a<60)return`+${a.toFixed(1)}s`;const s=Math.floor(a/60),u=a%60;return`+${s}m${u.toFixed(0)}s`}function ON(){const e=he(p=>p.replayPosition),n=he(p=>p.replayTotalEvents),r=he(p=>p.replayPlaying),l=he(p=>p.replaySpeed),a=he(p=>p.replayEvents),s=he(p=>p.setReplayPosition),u=he(p=>p.setReplayPlaying),f=he(p=>p.setReplaySpeed),h=p=>{const y=parseInt(p.target.value,10);s(y),r&&u(!1)},d=()=>{!r&&e>=n&&s(0),u(!r)},m=n>0?e/n*100:0;return b.jsxs("footer",{className:"flex items-center gap-3 px-4 py-1.5 border-t bg-[var(--surface)] border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx("button",{onClick:d,className:"flex items-center justify-center w-6 h-6 rounded hover:bg-[var(--surface-hover)] text-[var(--text-secondary)] hover:text-[var(--text)] transition-colors",title:r?"Pause":"Play",children:r?b.jsx(sN,{className:"w-3.5 h-3.5"}):b.jsx(Fp,{className:"w-3.5 h-3.5"})}),b.jsxs("div",{className:"flex-1 relative flex items-center",children:[b.jsx("input",{type:"range",min:0,max:n,value:e,onChange:h,className:"w-full h-1 appearance-none rounded-full cursor-pointer",style:{background:`linear-gradient(to right, var(--accent) 0%, var(--accent) ${m}%, var(--border) ${m}%, var(--border) 100%)`,WebkitAppearance:"none"}}),b.jsx("style",{children:` + transition-colors`,title:"Download full event log as JSON",children:[b.jsx(lN,{className:"w-3 h-3"}),"Logs"]}),b.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["v",a??"—"]})]}),p&&l&&b.jsx(TN,{yaml:l,onClose:()=>y(!1)})]})}function AN(){const e=he(s=>s.getBreadcrumbs),n=he(s=>s.navigateToContext),r=he(s=>s.viewContextPath);if(he(s=>s.subworkflowContexts).length===0&&r.length===0)return null;const a=e();return b.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5 bg-[var(--surface)] border-b border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx(Xp,{className:"w-3 h-3 text-[var(--text-muted)] mr-1"}),a.map((s,u)=>{const f=u===a.length-1,h=JSON.stringify(s.path)===JSON.stringify(r);return b.jsxs("span",{className:"flex items-center gap-1",children:[u>0&&b.jsx(jr,{className:"w-3 h-3 text-[var(--text-muted)]"}),f?b.jsx("span",{className:"font-semibold text-[var(--text)]",children:s.label}):b.jsx("button",{onClick:()=>n(s.path),className:`hover:text-[var(--running)] transition-colors ${h?"text-[var(--text)] font-medium":"text-[var(--text-muted)]"}`,children:s.label})]},u)})]})}function Be(...e){return e.filter(Boolean).join(" ")}function Qt(e){if(e==null)return"";if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Vn(e){return e==null?"":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function mi(e){return e==null?"":`$${e.toFixed(4)}`}function Bb(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)}function jN(e,n){if(n<=0)return`${e.toLocaleString()} tokens (limit unknown)`;const r=a=>a.toLocaleString(),l=(e/n*100).toFixed(1);return`${r(e)} / ${r(n)} (${l}%)`}function qb(){const e=he(f=>f.workflowStatus),n=he(f=>f.workflowStartTime),r=he(f=>f.replayMode),l=he(f=>f.lastEventTime),[a,s]=V.useState("—"),u=V.useRef(null);return V.useEffect(()=>{if(n!=null){if(r){u.current&&(clearInterval(u.current),u.current=null),s(Qt((l??n)-n));return}if(e==="running"){const f=()=>{const h=Date.now()/1e3-n;s(Qt(h))};return f(),u.current=setInterval(f,500),()=>{u.current&&clearInterval(u.current)}}else(e==="completed"||e==="failed")&&u.current&&(clearInterval(u.current),u.current=null)}},[e,n,r,l]),a}function MN(){const e=he(k=>k.workflowStatus),n=he(k=>k.agentsCompleted),r=he(k=>k.agentsTotal),l=he(k=>k.totalCost),a=he(k=>k.totalTokens),s=he(k=>k.wsStatus),u=he(k=>k.workflowFailure),f=he(k=>k.lastEventTime),h=qb(),[d,m]=V.useState(null);V.useEffect(()=>{if(e!=="running"||f==null){m(null);return}const k=()=>{m(Math.floor(Date.now()/1e3-f))};k();const _=setInterval(k,1e3);return()=>clearInterval(_)},[e,f]);const p=e==="failed",y=(()=>{switch(e){case"pending":return"Waiting for workflow…";case"running":return"Running";case"completed":return"Completed";case"failed":{if(!u)return"Failed";const k=u.error_type||"";return k==="MaxIterationsError"?"Failed: exceeded maximum iterations":k==="TimeoutError"?"Failed: workflow timed out":u.message?`Failed: ${u.message.length>60?u.message.slice(0,57)+"...":u.message}`:`Failed: ${k}`}}})(),v={pending:"bg-[var(--pending)]",running:"bg-[var(--running)] animate-pulse",completed:"bg-[var(--completed)]",failed:"bg-[var(--failed)]"}[e],w=(()=>{switch(s){case"connected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--completed)]",children:[b.jsx(xN,{className:"w-3 h-3"}),b.jsx("span",{children:"Connected"})]});case"disconnected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--failed)]",children:[b.jsx(yN,{className:"w-3 h-3"}),b.jsx("span",{children:"Disconnected"})]});case"reconnecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--waiting)]",children:[b.jsx(na,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Reconnecting\\u2026"})]});case"connecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-muted)]",children:[b.jsx(na,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Connecting\\u2026"})]})}})();return b.jsxs("footer",{className:Be("flex items-center gap-4 px-4 py-1.5 border-t text-xs flex-shrink-0 transition-colors duration-300",p?"bg-red-950/50 border-red-500/30":"bg-[var(--surface)] border-[var(--border)]"),children:[b.jsx("span",{className:Be("w-2 h-2 rounded-full flex-shrink-0",v)}),b.jsx("span",{className:Be(p?"text-red-300":"text-[var(--text)]"),children:y}),r>0&&b.jsxs("span",{className:Be(p?"text-red-400/60":"text-[var(--text-muted)]"),children:[n,"/",r," agents"]}),e!=="pending"&&b.jsx("span",{className:Be("font-mono",p?"text-red-400/60":"text-[var(--text-muted)]"),children:h}),a>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total tokens used",children:[b.jsx(Rb,{className:"w-3 h-3"}),b.jsx("span",{className:"font-mono",children:a.toLocaleString()})]}),l>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total cost",children:[b.jsx(Mb,{className:"w-3 h-3"}),b.jsxs("span",{className:"font-mono",children:["$",l.toFixed(4)]})]}),d!=null&&d>=5&&b.jsxs("span",{className:Be("flex items-center gap-1 font-mono",d>=60?"text-amber-400":"text-[var(--text-muted)]"),title:"Time since last event from the provider",children:[b.jsx(iN,{className:"w-3 h-3"}),b.jsx("span",{children:d>=60?`${Math.floor(d/60)}m ${d%60}s idle`:`${d}s idle`})]}),b.jsx("span",{className:"flex-1"}),w]})}const ON=[1,5,10,20,50];function DN(e,n){if(n===0||e.length===0)return"+0.0s";const r=e[0].timestamp,a=e[Math.min(n,e.length)-1].timestamp-r;if(a<60)return`+${a.toFixed(1)}s`;const s=Math.floor(a/60),u=a%60;return`+${s}m${u.toFixed(0)}s`}function RN(){const e=he(p=>p.replayPosition),n=he(p=>p.replayTotalEvents),r=he(p=>p.replayPlaying),l=he(p=>p.replaySpeed),a=he(p=>p.replayEvents),s=he(p=>p.setReplayPosition),u=he(p=>p.setReplayPlaying),f=he(p=>p.setReplaySpeed),h=p=>{const y=parseInt(p.target.value,10);s(y),r&&u(!1)},d=()=>{!r&&e>=n&&s(0),u(!r)},m=n>0?e/n*100:0;return b.jsxs("footer",{className:"flex items-center gap-3 px-4 py-1.5 border-t bg-[var(--surface)] border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx("button",{onClick:d,className:"flex items-center justify-center w-6 h-6 rounded hover:bg-[var(--surface-hover)] text-[var(--text-secondary)] hover:text-[var(--text)] transition-colors",title:r?"Pause":"Play",children:r?b.jsx(fN,{className:"w-3.5 h-3.5"}):b.jsx(Fp,{className:"w-3.5 h-3.5"})}),b.jsxs("div",{className:"flex-1 relative flex items-center",children:[b.jsx("input",{type:"range",min:0,max:n,value:e,onChange:h,className:"w-full h-1 appearance-none rounded-full cursor-pointer",style:{background:`linear-gradient(to right, var(--accent) 0%, var(--accent) ${m}%, var(--border) ${m}%, var(--border) 100%)`,WebkitAppearance:"none"}}),b.jsx("style",{children:` footer input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; @@ -270,7 +275,7 @@ Error generating stack: `+c.message+` cursor: pointer; box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); } - `})]}),b.jsx("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:jN(a,e)}),b.jsxs("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:["Event ",e,"/",n]}),b.jsx("div",{className:"flex items-center gap-0.5",children:MN.map(p=>b.jsxs("button",{onClick:()=>f(p),className:Be("px-1.5 py-0.5 rounded text-xs font-mono transition-colors",l===p?"bg-[var(--accent)] text-white":"text-[var(--text-muted)] hover:text-[var(--text-secondary)] hover:bg-[var(--surface-hover)]"),children:[p,"×"]},p))})]})}const cc=V.createContext(null);cc.displayName="PanelGroupContext";const yt={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Qp=10,Gi=V.useLayoutEffect,Ax=V2.useId,DN=typeof Ax=="function"?Ax:()=>null;let RN=0;function Zp(e=null){const n=DN(),r=V.useRef(e||n||null);return r.current===null&&(r.current=""+RN++),e??r.current}function Bb({children:e,className:n="",collapsedSize:r,collapsible:l,defaultSize:a,forwardedRef:s,id:u,maxSize:f,minSize:h,onCollapse:d,onExpand:m,onResize:p,order:y,style:v,tagName:w="div",...k}){const S=V.useContext(cc);if(S===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:_,expandPanel:T,getPanelSize:E,getPanelStyle:z,groupId:I,isPanelCollapsed:A,reevaluatePanelConstraints:L,registerPanel:D,resizePanel:U,unregisterPanel:X}=S,H=Zp(u),q=V.useRef({callbacks:{onCollapse:d,onExpand:m,onResize:p},constraints:{collapsedSize:r,collapsible:l,defaultSize:a,maxSize:f,minSize:h},id:H,idIsFromProps:u!==void 0,order:y});V.useRef({didLogMissingDefaultSizeWarning:!1}),Gi(()=>{const{callbacks:R,constraints:G}=q.current,M={...G};q.current.id=H,q.current.idIsFromProps=u!==void 0,q.current.order=y,R.onCollapse=d,R.onExpand=m,R.onResize=p,G.collapsedSize=r,G.collapsible=l,G.defaultSize=a,G.maxSize=f,G.minSize=h,(M.collapsedSize!==G.collapsedSize||M.collapsible!==G.collapsible||M.maxSize!==G.maxSize||M.minSize!==G.minSize)&&L(q.current,M)}),Gi(()=>{const R=q.current;return D(R),()=>{X(R)}},[y,H,D,X]),V.useImperativeHandle(s,()=>({collapse:()=>{_(q.current)},expand:R=>{T(q.current,R)},getId(){return H},getSize(){return E(q.current)},isCollapsed(){return A(q.current)},isExpanded(){return!A(q.current)},resize:R=>{U(q.current,R)}}),[_,T,E,A,H,U]);const ee=z(q.current,a);return V.createElement(w,{...k,children:e,className:n,id:H,style:{...ee,...v},[yt.groupId]:I,[yt.panel]:"",[yt.panelCollapsible]:l||void 0,[yt.panelId]:H,[yt.panelSize]:parseFloat(""+ee.flexGrow).toFixed(1)})}const mo=V.forwardRef((e,n)=>V.createElement(Bb,{...e,forwardedRef:n}));Bb.displayName="Panel";mo.displayName="forwardRef(Panel)";let bp=null,Uu=-1,hi=null;function LN(e,n){if(n){const r=(n&Gb)!==0,l=(n&Yb)!==0,a=(n&$b)!==0,s=(n&Pb)!==0;if(r)return a?"se-resize":s?"ne-resize":"e-resize";if(l)return a?"sw-resize":s?"nw-resize":"w-resize";if(a)return"s-resize";if(s)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function HN(){hi!==null&&(document.head.removeChild(hi),bp=null,hi=null,Uu=-1)}function Fd(e,n){var r,l;const a=LN(e,n);if(bp!==a){if(bp=a,hi===null&&(hi=document.createElement("style"),document.head.appendChild(hi)),Uu>=0){var s;(s=hi.sheet)===null||s===void 0||s.removeRule(Uu)}Uu=(r=(l=hi.sheet)===null||l===void 0?void 0:l.insertRule(`*{cursor: ${a} !important;}`))!==null&&r!==void 0?r:-1}}function qb(e){return e.type==="keydown"}function Ub(e){return e.type.startsWith("pointer")}function Ib(e){return e.type.startsWith("mouse")}function fc(e){if(Ub(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(Ib(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function BN(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function qN(e,n,r){return e.xn.x&&e.yn.y}function UN(e,n){if(e===n)throw new Error("Cannot compare node with itself");const r={a:Ox(e),b:Ox(n)};let l;for(;r.a.at(-1)===r.b.at(-1);)e=r.a.pop(),n=r.b.pop(),l=e;De(l,"Stacking order can only be calculated for elements with a common ancestor");const a={a:jx(Mx(r.a)),b:jx(Mx(r.b))};if(a.a===a.b){const s=l.childNodes,u={a:r.a.at(-1),b:r.b.at(-1)};let f=s.length;for(;f--;){const h=s[f];if(h===u.a)return 1;if(h===u.b)return-1}}return Math.sign(a.a-a.b)}const IN=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function VN(e){var n;const r=getComputedStyle((n=Vb(e))!==null&&n!==void 0?n:e).display;return r==="flex"||r==="inline-flex"}function GN(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||VN(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||IN.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function Mx(e){let n=e.length;for(;n--;){const r=e[n];if(De(r,"Missing node"),GN(r))return r}return null}function jx(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Ox(e){const n=[];for(;e;)n.push(e),e=Vb(e);return n}function Vb(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const Gb=1,Yb=2,$b=4,Pb=8,YN=BN()==="coarse";let Gn=[],Kl=!1,Ui=new Map,dc=new Map;const Co=new Set;function $N(e,n,r,l,a){var s;const{ownerDocument:u}=n,f={direction:r,element:n,hitAreaMargins:l,setResizeHandlerState:a},h=(s=Ui.get(u))!==null&&s!==void 0?s:0;return Ui.set(u,h+1),Co.add(f),Fu(),function(){var m;dc.delete(e),Co.delete(f);const p=(m=Ui.get(u))!==null&&m!==void 0?m:1;if(Ui.set(u,p-1),Fu(),p===1&&Ui.delete(u),Gn.includes(f)){const y=Gn.indexOf(f);y>=0&&Gn.splice(y,1),Jp(),a("up",!0,null)}}}function PN(e){const{target:n}=e,{x:r,y:l}=fc(e);Kl=!0,Kp({target:n,x:r,y:l}),Fu(),Gn.length>0&&(Qu("down",e),e.preventDefault(),Xb(n)||e.stopImmediatePropagation())}function Qd(e){const{x:n,y:r}=fc(e);if(Kl&&e.buttons===0&&(Kl=!1,Qu("up",e)),!Kl){const{target:l}=e;Kp({target:l,x:n,y:r})}Qu("move",e),Jp(),Gn.length>0&&e.preventDefault()}function Zd(e){const{target:n}=e,{x:r,y:l}=fc(e);dc.clear(),Kl=!1,Gn.length>0&&(e.preventDefault(),Xb(n)||e.stopImmediatePropagation()),Qu("up",e),Kp({target:n,x:r,y:l}),Jp(),Fu()}function Xb(e){let n=e;for(;n;){if(n.hasAttribute(yt.resizeHandle))return!0;n=n.parentElement}return!1}function Kp({target:e,x:n,y:r}){Gn.splice(0);let l=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(l=e),Co.forEach(a=>{const{element:s,hitAreaMargins:u}=a,f=s.getBoundingClientRect(),{bottom:h,left:d,right:m,top:p}=f,y=YN?u.coarse:u.fine;if(n>=d-y&&n<=m+y&&r>=p-y&&r<=h+y){if(l!==null&&document.contains(l)&&s!==l&&!s.contains(l)&&!l.contains(s)&&UN(l,s)>0){let w=l,k=!1;for(;w&&!w.contains(s);){if(qN(w.getBoundingClientRect(),f)){k=!0;break}w=w.parentElement}if(k)return}Gn.push(a)}})}function Kd(e,n){dc.set(e,n)}function Jp(){let e=!1,n=!1;Gn.forEach(l=>{const{direction:a}=l;a==="horizontal"?e=!0:n=!0});let r=0;dc.forEach(l=>{r|=l}),e&&n?Fd("intersection",r):e?Fd("horizontal",r):n?Fd("vertical",r):HN()}let Jd=new AbortController;function Fu(){Jd.abort(),Jd=new AbortController;const e={capture:!0,signal:Jd.signal};Co.size&&(Kl?(Gn.length>0&&Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("contextmenu",Zd,e),l.addEventListener("pointerleave",Qd,e),l.addEventListener("pointermove",Qd,e))}),window.addEventListener("pointerup",Zd,e),window.addEventListener("pointercancel",Zd,e)):Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("pointerdown",PN,e),l.addEventListener("pointermove",Qd,e))}))}function Qu(e,n){Co.forEach(r=>{const{setResizeHandlerState:l}=r,a=Gn.includes(r);l(e,a,n)})}function XN(){const[e,n]=V.useState(0);return V.useCallback(()=>n(r=>r+1),[])}function De(e,n){if(!e)throw console.error(n),Error(n)}function Pi(e,n,r=Qp){return e.toFixed(r)===n.toFixed(r)?0:e>n?1:-1}function Cr(e,n,r=Qp){return Pi(e,n,r)===0}function xn(e,n,r){return Pi(e,n,r)===0}function FN(e,n,r){if(e.length!==n.length)return!1;for(let l=0;l0&&(e=e<0?0-_:_)}}}{const p=e<0?f:h,y=r[p];De(y,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:w,minSize:k=0}=y;if(w){const S=n[p];if(De(S!=null,`Previous layout not found for panel index ${p}`),xn(S,k)){const _=S-v;Pi(_,Math.abs(e))>0&&(e=e<0?0-_:_)}}}}{const p=e<0?1:-1;let y=e<0?h:f,v=0;for(;;){const k=n[y];De(k!=null,`Previous layout not found for panel index ${y}`);const _=Xl({panelConstraints:r,panelIndex:y,size:100})-k;if(v+=_,y+=p,y<0||y>=r.length)break}const w=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-w:w}{let y=e<0?f:h;for(;y>=0&&y=0))break;e<0?y--:y++}}if(FN(a,u))return a;{const p=e<0?h:f,y=n[p];De(y!=null,`Previous layout not found for panel index ${p}`);const v=y+d,w=Xl({panelConstraints:r,panelIndex:p,size:v});if(u[p]=w,!xn(w,v)){let k=v-w,_=e<0?h:f;for(;_>=0&&_0?_--:_++}}}const m=u.reduce((p,y)=>y+p,0);return xn(m,100)?u:a}function QN({layout:e,panelsArray:n,pivotIndices:r}){let l=0,a=100,s=0,u=0;const f=r[0];De(f!=null,"No pivot index found"),n.forEach((p,y)=>{const{constraints:v}=p,{maxSize:w=100,minSize:k=0}=v;y===f?(l=k,a=w):(s+=k,u+=w)});const h=Math.min(a,100-s),d=Math.max(l,100-u),m=e[f];return{valueMax:h,valueMin:d,valueNow:m}}function To(e,n=document){return Array.from(n.querySelectorAll(`[${yt.resizeHandleId}][data-panel-group-id="${e}"]`))}function Fb(e,n,r=document){const a=To(e,r).findIndex(s=>s.getAttribute(yt.resizeHandleId)===n);return a??null}function Qb(e,n,r){const l=Fb(e,n,r);return l!=null?[l,l+1]:[-1,-1]}function Zb(e,n=document){var r;if(n instanceof HTMLElement&&(n==null||(r=n.dataset)===null||r===void 0?void 0:r.panelGroupId)==e)return n;const l=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return l||null}function hc(e,n=document){const r=n.querySelector(`[${yt.resizeHandleId}="${e}"]`);return r||null}function ZN(e,n,r,l=document){var a,s,u,f;const h=hc(n,l),d=To(e,l),m=h?d.indexOf(h):-1,p=(a=(s=r[m])===null||s===void 0?void 0:s.id)!==null&&a!==void 0?a:null,y=(u=(f=r[m+1])===null||f===void 0?void 0:f.id)!==null&&u!==void 0?u:null;return[p,y]}function KN({committedValuesRef:e,eagerValuesRef:n,groupId:r,layout:l,panelDataArray:a,panelGroupElement:s,setLayout:u}){V.useRef({didWarnAboutMissingResizeHandle:!1}),Gi(()=>{if(!s)return;const f=To(r,s);for(let h=0;h{f.forEach((h,d)=>{h.removeAttribute("aria-controls"),h.removeAttribute("aria-valuemax"),h.removeAttribute("aria-valuemin"),h.removeAttribute("aria-valuenow")})}},[r,l,a,s]),V.useEffect(()=>{if(!s)return;const f=n.current;De(f,"Eager values not found");const{panelDataArray:h}=f,d=Zb(r,s);De(d!=null,`No group found for id "${r}"`);const m=To(r,s);De(m,`No resize handles found for group id "${r}"`);const p=m.map(y=>{const v=y.getAttribute(yt.resizeHandleId);De(v,"Resize handle element has no handle id attribute");const[w,k]=ZN(r,v,h,s);if(w==null||k==null)return()=>{};const S=_=>{if(!_.defaultPrevented)switch(_.key){case"Enter":{_.preventDefault();const T=h.findIndex(E=>E.id===w);if(T>=0){const E=h[T];De(E,`No panel data found for index ${T}`);const z=l[T],{collapsedSize:I=0,collapsible:A,minSize:L=0}=E.constraints;if(z!=null&&A){const D=go({delta:xn(z,I)?L-I:I-z,initialLayout:l,panelConstraints:h.map(U=>U.constraints),pivotIndices:Qb(r,v,s),prevLayout:l,trigger:"keyboard"});l!==D&&u(D)}}break}}};return y.addEventListener("keydown",S),()=>{y.removeEventListener("keydown",S)}});return()=>{p.forEach(y=>y())}},[s,e,n,r,l,a,u])}function Dx(e,n){if(e.length!==n.length)return!1;for(let r=0;rs.constraints);let l=0,a=100;for(let s=0;s{const s=e[a];De(s,`Panel data not found for index ${a}`);const{callbacks:u,constraints:f,id:h}=s,{collapsedSize:d=0,collapsible:m}=f,p=r[h];if(p==null||l!==p){r[h]=l;const{onCollapse:y,onExpand:v,onResize:w}=u;w&&w(l,p),m&&(y||v)&&(v&&(p==null||Cr(p,d))&&!Cr(l,d)&&v(),y&&(p==null||!Cr(p,d))&&Cr(l,d)&&y())}})}function ku(e,n){if(e.length!==n.length)return!1;for(let r=0;r{r!==null&&clearTimeout(r),r=setTimeout(()=>{e(...a)},n)}}function Rx(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,r)=>{localStorage.setItem(n,r)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function Jb(e){return`react-resizable-panels:${e}`}function Wb(e){return e.map(n=>{const{constraints:r,id:l,idIsFromProps:a,order:s}=n;return a?l:s?`${s}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((n,r)=>n.localeCompare(r)).join(",")}function ew(e,n){try{const r=Jb(e),l=n.getItem(r);if(l){const a=JSON.parse(l);if(typeof a=="object"&&a!=null)return a}}catch{}return null}function rk(e,n,r){var l,a;const s=(l=ew(e,r))!==null&&l!==void 0?l:{},u=Wb(n);return(a=s[u])!==null&&a!==void 0?a:null}function ik(e,n,r,l,a){var s;const u=Jb(e),f=Wb(n),h=(s=ew(e,a))!==null&&s!==void 0?s:{};h[f]={expandToSizes:Object.fromEntries(r.entries()),layout:l};try{a.setItem(u,JSON.stringify(h))}catch(d){console.error(d)}}function Lx({layout:e,panelConstraints:n}){const r=[...e],l=r.reduce((s,u)=>s+u,0);if(r.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${r.map(s=>`${s}%`).join(", ")}`);if(!xn(l,100)&&r.length>0)for(let s=0;s(Rx(yo),yo.getItem(e)),setItem:(e,n)=>{Rx(yo),yo.setItem(e,n)}},Hx={};function tw({autoSaveId:e=null,children:n,className:r="",direction:l,forwardedRef:a,id:s=null,onLayout:u=null,keyboardResizeBy:f=null,storage:h=yo,style:d,tagName:m="div",...p}){const y=Zp(s),v=V.useRef(null),[w,k]=V.useState(null),[S,_]=V.useState([]),T=XN(),E=V.useRef({}),z=V.useRef(new Map),I=V.useRef(0),A=V.useRef({autoSaveId:e,direction:l,dragState:w,id:y,keyboardResizeBy:f,onLayout:u,storage:h}),L=V.useRef({layout:S,panelDataArray:[],panelDataArrayChanged:!1});V.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),V.useImperativeHandle(a,()=>({getId:()=>A.current.id,getLayout:()=>{const{layout:N}=L.current;return N},setLayout:N=>{const{onLayout:Y}=A.current,{layout:F,panelDataArray:J}=L.current,ne=Lx({layout:N,panelConstraints:J.map(re=>re.constraints)});Dx(F,ne)||(_(ne),L.current.layout=ne,Y&&Y(ne),Il(J,ne,E.current))}}),[]),Gi(()=>{A.current.autoSaveId=e,A.current.direction=l,A.current.dragState=w,A.current.id=y,A.current.onLayout=u,A.current.storage=h}),KN({committedValuesRef:A,eagerValuesRef:L,groupId:y,layout:S,panelDataArray:L.current.panelDataArray,setLayout:_,panelGroupElement:v.current}),V.useEffect(()=>{const{panelDataArray:N}=L.current;if(e){if(S.length===0||S.length!==N.length)return;let Y=Hx[e];Y==null&&(Y=nk(ik,lk),Hx[e]=Y);const F=[...N],J=new Map(z.current);Y(e,F,J,S,h)}},[e,S,h]),V.useEffect(()=>{});const D=V.useCallback(N=>{const{onLayout:Y}=A.current,{layout:F,panelDataArray:J}=L.current;if(N.constraints.collapsible){const ne=J.map(ve=>ve.constraints),{collapsedSize:re=0,panelSize:se,pivotIndices:ye}=Bi(J,N,F);if(De(se!=null,`Panel size not found for panel "${N.id}"`),!Cr(se,re)){z.current.set(N.id,se);const xe=$l(J,N)===J.length-1?se-re:re-se,pe=go({delta:xe,initialLayout:F,panelConstraints:ne,pivotIndices:ye,prevLayout:F,trigger:"imperative-api"});ku(F,pe)||(_(pe),L.current.layout=pe,Y&&Y(pe),Il(J,pe,E.current))}}},[]),U=V.useCallback((N,Y)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=L.current;if(N.constraints.collapsible){const re=ne.map(_e=>_e.constraints),{collapsedSize:se=0,panelSize:ye=0,minSize:ve=0,pivotIndices:xe}=Bi(ne,N,J),pe=Y??ve;if(Cr(ye,se)){const _e=z.current.get(N.id),Me=_e!=null&&_e>=pe?_e:pe,ut=$l(ne,N)===ne.length-1?ye-Me:Me-ye,tt=go({delta:ut,initialLayout:J,panelConstraints:re,pivotIndices:xe,prevLayout:J,trigger:"imperative-api"});ku(J,tt)||(_(tt),L.current.layout=tt,F&&F(tt),Il(ne,tt,E.current))}}},[]),X=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=L.current,{panelSize:J}=Bi(F,N,Y);return De(J!=null,`Panel size not found for panel "${N.id}"`),J},[]),H=V.useCallback((N,Y)=>{const{panelDataArray:F}=L.current,J=$l(F,N);return tk({defaultSize:Y,dragState:w,layout:S,panelData:F,panelIndex:J})},[w,S]),q=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=L.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,Y);return De(re!=null,`Panel size not found for panel "${N.id}"`),ne===!0&&Cr(re,J)},[]),ee=V.useCallback(N=>{const{layout:Y,panelDataArray:F}=L.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,Y);return De(re!=null,`Panel size not found for panel "${N.id}"`),!ne||Pi(re,J)>0},[]),R=V.useCallback(N=>{const{panelDataArray:Y}=L.current;Y.push(N),Y.sort((F,J)=>{const ne=F.order,re=J.order;return ne==null&&re==null?0:ne==null?-1:re==null?1:ne-re}),L.current.panelDataArrayChanged=!0,T()},[T]);Gi(()=>{if(L.current.panelDataArrayChanged){L.current.panelDataArrayChanged=!1;const{autoSaveId:N,onLayout:Y,storage:F}=A.current,{layout:J,panelDataArray:ne}=L.current;let re=null;if(N){const ye=rk(N,ne,F);ye&&(z.current=new Map(Object.entries(ye.expandToSizes)),re=ye.layout)}re==null&&(re=ek({panelDataArray:ne}));const se=Lx({layout:re,panelConstraints:ne.map(ye=>ye.constraints)});Dx(J,se)||(_(se),L.current.layout=se,Y&&Y(se),Il(ne,se,E.current))}}),Gi(()=>{const N=L.current;return()=>{N.layout=[]}},[]);const G=V.useCallback(N=>{let Y=!1;const F=v.current;return F&&window.getComputedStyle(F,null).getPropertyValue("direction")==="rtl"&&(Y=!0),function(ne){ne.preventDefault();const re=v.current;if(!re)return()=>null;const{direction:se,dragState:ye,id:ve,keyboardResizeBy:xe,onLayout:pe}=A.current,{layout:_e,panelDataArray:Me}=L.current,{initialLayout:Ce}=ye??{},ut=Qb(ve,N,re);let tt=WN(ne,N,se,ye,xe,re);const At=se==="horizontal";At&&Y&&(tt=-tt);const It=Me.map(jn=>jn.constraints),Rt=go({delta:tt,initialLayout:Ce??_e,panelConstraints:It,pivotIndices:ut,prevLayout:_e,trigger:qb(ne)?"keyboard":"mouse-or-touch"}),Sn=!ku(_e,Rt);(Ub(ne)||Ib(ne))&&I.current!=tt&&(I.current=tt,!Sn&&tt!==0?At?Kd(N,tt<0?Gb:Yb):Kd(N,tt<0?$b:Pb):Kd(N,0)),Sn&&(_(Rt),L.current.layout=Rt,pe&&pe(Rt),Il(Me,Rt,E.current))}},[]),M=V.useCallback((N,Y)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=L.current,re=ne.map(_e=>_e.constraints),{panelSize:se,pivotIndices:ye}=Bi(ne,N,J);De(se!=null,`Panel size not found for panel "${N.id}"`);const xe=$l(ne,N)===ne.length-1?se-Y:Y-se,pe=go({delta:xe,initialLayout:J,panelConstraints:re,pivotIndices:ye,prevLayout:J,trigger:"imperative-api"});ku(J,pe)||(_(pe),L.current.layout=pe,F&&F(pe),Il(ne,pe,E.current))},[]),$=V.useCallback((N,Y)=>{const{layout:F,panelDataArray:J}=L.current,{collapsedSize:ne=0,collapsible:re}=Y,{collapsedSize:se=0,collapsible:ye,maxSize:ve=100,minSize:xe=0}=N.constraints,{panelSize:pe}=Bi(J,N,F);pe!=null&&(re&&ye&&Cr(pe,ne)?Cr(ne,se)||M(N,se):peve&&M(N,ve))},[M]),Q=V.useCallback((N,Y)=>{const{direction:F}=A.current,{layout:J}=L.current;if(!v.current)return;const ne=hc(N,v.current);De(ne,`Drag handle element not found for id "${N}"`);const re=Kb(F,Y);k({dragHandleId:N,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:re,initialLayout:J})},[]),K=V.useCallback(()=>{k(null)},[]),j=V.useCallback(N=>{const{panelDataArray:Y}=L.current,F=$l(Y,N);F>=0&&(Y.splice(F,1),delete E.current[N.id],L.current.panelDataArrayChanged=!0,T())},[T]),B=V.useMemo(()=>({collapsePanel:D,direction:l,dragState:w,expandPanel:U,getPanelSize:X,getPanelStyle:H,groupId:y,isPanelCollapsed:q,isPanelExpanded:ee,reevaluatePanelConstraints:$,registerPanel:R,registerResizeHandle:G,resizePanel:M,startDragging:Q,stopDragging:K,unregisterPanel:j,panelGroupElement:v.current}),[D,w,l,U,X,H,y,q,ee,$,R,G,M,Q,K,j]),P={display:"flex",flexDirection:l==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return V.createElement(cc.Provider,{value:B},V.createElement(m,{...p,children:n,className:r,id:s,ref:v,style:{...P,...d},[yt.group]:"",[yt.groupDirection]:l,[yt.groupId]:y}))}const wp=V.forwardRef((e,n)=>V.createElement(tw,{...e,forwardedRef:n}));tw.displayName="PanelGroup";wp.displayName="forwardRef(PanelGroup)";function $l(e,n){return e.findIndex(r=>r===n||r.id===n.id)}function Bi(e,n,r){const l=$l(e,n),s=l===e.length-1?[l-1,l]:[l,l+1],u=r[l];return{...n.constraints,panelSize:u,pivotIndices:s}}function ak({disabled:e,handleId:n,resizeHandler:r,panelGroupElement:l}){V.useEffect(()=>{if(e||r==null||l==null)return;const a=hc(n,l);if(a==null)return;const s=u=>{if(!u.defaultPrevented)switch(u.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{u.preventDefault(),r(u);break}case"F6":{u.preventDefault();const f=a.getAttribute(yt.groupId);De(f,`No group element found for id "${f}"`);const h=To(f,l),d=Fb(f,n,l);De(d!==null,`No resize element found for id "${n}"`);const m=u.shiftKey?d>0?d-1:h.length-1:d+1{a.removeEventListener("keydown",s)}},[l,e,n,r])}function Sp({children:e=null,className:n="",disabled:r=!1,hitAreaMargins:l,id:a,onBlur:s,onClick:u,onDragging:f,onFocus:h,onPointerDown:d,onPointerUp:m,style:p={},tabIndex:y=0,tagName:v="div",...w}){var k,S;const _=V.useRef(null),T=V.useRef({onClick:u,onDragging:f,onPointerDown:d,onPointerUp:m});V.useEffect(()=>{T.current.onClick=u,T.current.onDragging=f,T.current.onPointerDown=d,T.current.onPointerUp=m});const E=V.useContext(cc);if(E===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:z,groupId:I,registerResizeHandle:A,startDragging:L,stopDragging:D,panelGroupElement:U}=E,X=Zp(a),[H,q]=V.useState("inactive"),[ee,R]=V.useState(!1),[G,M]=V.useState(null),$=V.useRef({state:H});Gi(()=>{$.current.state=H}),V.useEffect(()=>{if(r)M(null);else{const B=A(X);M(()=>B)}},[r,X,A]);const Q=(k=l==null?void 0:l.coarse)!==null&&k!==void 0?k:15,K=(S=l==null?void 0:l.fine)!==null&&S!==void 0?S:5;V.useEffect(()=>{if(r||G==null)return;const B=_.current;De(B,"Element ref not attached");let P=!1;return $N(X,B,z,{coarse:Q,fine:K},(Y,F,J)=>{if(!F){q("inactive");return}switch(Y){case"down":{q("drag"),P=!1,De(J,'Expected event to be defined for "down" action'),L(X,J);const{onDragging:ne,onPointerDown:re}=T.current;ne==null||ne(!0),re==null||re();break}case"move":{const{state:ne}=$.current;P=!0,ne!=="drag"&&q("hover"),De(J,'Expected event to be defined for "move" action'),G(J);break}case"up":{q("hover"),D();const{onClick:ne,onDragging:re,onPointerUp:se}=T.current;re==null||re(!1),se==null||se(),P||ne==null||ne();break}}})},[Q,z,r,K,A,X,G,L,D]),ak({disabled:r,handleId:X,resizeHandler:G,panelGroupElement:U});const j={touchAction:"none",userSelect:"none"};return V.createElement(v,{...w,children:e,className:n,id:a,onBlur:()=>{R(!1),s==null||s()},onFocus:()=>{R(!0),h==null||h()},ref:_,role:"separator",style:{...j,...p},tabIndex:y,[yt.groupDirection]:z,[yt.groupId]:I,[yt.resizeHandle]:"",[yt.resizeHandleActive]:H==="drag"?"pointer":ee?"keyboard":void 0,[yt.resizeHandleEnabled]:!r,[yt.resizeHandleId]:X,[yt.resizeHandleState]:H})}Sp.displayName="PanelResizeHandle";function zt(e){if(typeof e=="string"||typeof e=="number")return""+e;let n="";if(Array.isArray(e))for(let r=0,l;r{}};function pc(){for(var e=0,n=arguments.length,r={},l;e=0&&(l=r.slice(a+1),r=r.slice(0,a)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:l}})}Iu.prototype=pc.prototype={constructor:Iu,on:function(e,n){var r=this._,l=sk(e+"",r),a,s=-1,u=l.length;if(arguments.length<2){for(;++s0)for(var r=new Array(a),l=0,a,s;l=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),qx.hasOwnProperty(n)?{space:qx[n],local:e}:e}function ck(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===_p&&n.documentElement.namespaceURI===_p?n.createElement(e):n.createElementNS(r,e)}}function fk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function nw(e){var n=mc(e);return(n.local?fk:ck)(n)}function dk(){}function Wp(e){return e==null?dk:function(){return this.querySelector(e)}}function hk(e){typeof e!="function"&&(e=Wp(e));for(var n=this._groups,r=n.length,l=new Array(r),a=0;a=E&&(E=T+1);!(I=S[E])&&++E=0;)(u=l[a])&&(s&&u.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(u,s),s=u);return this}function Bk(e){e||(e=qk);function n(p,y){return p&&y?e(p.__data__,y.__data__):!p-!y}for(var r=this._groups,l=r.length,a=new Array(l),s=0;sn?1:e>=n?0:NaN}function Uk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Ik(){return Array.from(this)}function Vk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?Wk:typeof n=="function"?tC:eC)(e,n,r??"")):na(this.node(),e)}function na(e,n){return e.style.getPropertyValue(n)||ow(e).getComputedStyle(e,null).getPropertyValue(n)}function rC(e){return function(){delete this[e]}}function iC(e,n){return function(){this[e]=n}}function lC(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function aC(e,n){return arguments.length>1?this.each((n==null?rC:typeof n=="function"?lC:iC)(e,n)):this.node()[e]}function sw(e){return e.trim().split(/^|\s+/)}function em(e){return e.classList||new uw(e)}function uw(e){this._node=e,this._names=sw(e.getAttribute("class")||"")}uw.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function cw(e,n){for(var r=em(e),l=-1,a=n.length;++l=0&&(r=n.slice(l+1),n=n.slice(0,l)),{type:n,name:r}})}function DC(e){return function(){var n=this.__on;if(n){for(var r=0,l=-1,a=n.length,s;r()=>e;function Ep(e,{sourceEvent:n,subject:r,target:l,identifier:a,active:s,x:u,y:f,dx:h,dy:d,dispatch:m}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:h,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:m}})}Ep.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function YC(e){return!e.ctrlKey&&!e.button}function $C(){return this.parentNode}function PC(e,n){return n??{x:e.x,y:e.y}}function XC(){return navigator.maxTouchPoints||"ontouchstart"in this}function gw(){var e=YC,n=$C,r=PC,l=XC,a={},s=pc("start","drag","end"),u=0,f,h,d,m,p=0;function y(z){z.on("mousedown.drag",v).filter(l).on("touchstart.drag",S).on("touchmove.drag",_,GC).on("touchend.drag touchcancel.drag",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(z,I){if(!(m||!e.call(this,z,I))){var A=E(this,n.call(this,z,I),z,I,"mouse");A&&(vn(z.view).on("mousemove.drag",w,zo).on("mouseup.drag",k,zo),pw(z.view),Wd(z),d=!1,f=z.clientX,h=z.clientY,A("start",z))}}function w(z){if(Jl(z),!d){var I=z.clientX-f,A=z.clientY-h;d=I*I+A*A>p}a.mouse("drag",z)}function k(z){vn(z.view).on("mousemove.drag mouseup.drag",null),mw(z.view,d),Jl(z),a.mouse("end",z)}function S(z,I){if(e.call(this,z,I)){var A=z.changedTouches,L=n.call(this,z,I),D=A.length,U,X;for(U=0;U>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?Tu(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?Tu(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=QC.exec(e))?new an(n[1],n[2],n[3],1):(n=ZC.exec(e))?new an(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=KC.exec(e))?Tu(n[1],n[2],n[3],n[4]):(n=JC.exec(e))?Tu(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=WC.exec(e))?Px(n[1],n[2]/100,n[3]/100,1):(n=e3.exec(e))?Px(n[1],n[2]/100,n[3]/100,n[4]):Ux.hasOwnProperty(e)?Gx(Ux[e]):e==="transparent"?new an(NaN,NaN,NaN,0):null}function Gx(e){return new an(e>>16&255,e>>8&255,e&255,1)}function Tu(e,n,r,l){return l<=0&&(e=n=r=NaN),new an(e,n,r,l)}function r3(e){return e instanceof Go||(e=Xi(e)),e?(e=e.rgb(),new an(e.r,e.g,e.b,e.opacity)):new an}function Np(e,n,r,l){return arguments.length===1?r3(e):new an(e,n,r,l??1)}function an(e,n,r,l){this.r=+e,this.g=+n,this.b=+r,this.opacity=+l}tm(an,Np,yw(Go,{brighter(e){return e=e==null?Ku:Math.pow(Ku,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ao:Math.pow(Ao,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new an(Yi(this.r),Yi(this.g),Yi(this.b),Ju(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yx,formatHex:Yx,formatHex8:i3,formatRgb:$x,toString:$x}));function Yx(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}`}function i3(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}${Ii((isNaN(this.opacity)?1:this.opacity)*255)}`}function $x(){const e=Ju(this.opacity);return`${e===1?"rgb(":"rgba("}${Yi(this.r)}, ${Yi(this.g)}, ${Yi(this.b)}${e===1?")":`, ${e})`}`}function Ju(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Yi(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ii(e){return e=Yi(e),(e<16?"0":"")+e.toString(16)}function Px(e,n,r,l){return l<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new qn(e,n,r,l)}function xw(e){if(e instanceof qn)return new qn(e.h,e.s,e.l,e.opacity);if(e instanceof Go||(e=Xi(e)),!e)return new qn;if(e instanceof qn)return e;e=e.rgb();var n=e.r/255,r=e.g/255,l=e.b/255,a=Math.min(n,r,l),s=Math.max(n,r,l),u=NaN,f=s-a,h=(s+a)/2;return f?(n===s?u=(r-l)/f+(r0&&h<1?0:u,new qn(u,f,h,e.opacity)}function l3(e,n,r,l){return arguments.length===1?xw(e):new qn(e,n,r,l??1)}function qn(e,n,r,l){this.h=+e,this.s=+n,this.l=+r,this.opacity=+l}tm(qn,l3,yw(Go,{brighter(e){return e=e==null?Ku:Math.pow(Ku,e),new qn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ao:Math.pow(Ao,e),new qn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,l=r+(r<.5?r:1-r)*n,a=2*r-l;return new an(eh(e>=240?e-240:e+120,a,l),eh(e,a,l),eh(e<120?e+240:e-120,a,l),this.opacity)},clamp(){return new qn(Xx(this.h),zu(this.s),zu(this.l),Ju(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Ju(this.opacity);return`${e===1?"hsl(":"hsla("}${Xx(this.h)}, ${zu(this.s)*100}%, ${zu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Xx(e){return e=(e||0)%360,e<0?e+360:e}function zu(e){return Math.max(0,Math.min(1,e||0))}function eh(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const nm=e=>()=>e;function a3(e,n){return function(r){return e+r*n}}function o3(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(l){return Math.pow(e+l*n,r)}}function s3(e){return(e=+e)==1?vw:function(n,r){return r-n?o3(n,r,e):nm(isNaN(n)?r:n)}}function vw(e,n){var r=n-e;return r?a3(e,r):nm(isNaN(e)?n:e)}const Wu=(function e(n){var r=s3(n);function l(a,s){var u=r((a=Np(a)).r,(s=Np(s)).r),f=r(a.g,s.g),h=r(a.b,s.b),d=vw(a.opacity,s.opacity);return function(m){return a.r=u(m),a.g=f(m),a.b=h(m),a.opacity=d(m),a+""}}return l.gamma=e,l})(1);function u3(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,l=n.slice(),a;return function(s){for(a=0;ar&&(s=n.slice(r,s),f[u]?f[u]+=s:f[++u]=s),(l=l[0])===(a=a[0])?f[u]?f[u]+=a:f[++u]=a:(f[++u]=null,h.push({i:u,x:Wn(l,a)})),r=th.lastIndex;return r180?m+=360:m-d>180&&(d+=360),y.push({i:p.push(a(p)+"rotate(",null,l)-2,x:Wn(d,m)})):m&&p.push(a(p)+"rotate("+m+l)}function f(d,m,p,y){d!==m?y.push({i:p.push(a(p)+"skewX(",null,l)-2,x:Wn(d,m)}):m&&p.push(a(p)+"skewX("+m+l)}function h(d,m,p,y,v,w){if(d!==p||m!==y){var k=v.push(a(v)+"scale(",null,",",null,")");w.push({i:k-4,x:Wn(d,p)},{i:k-2,x:Wn(m,y)})}else(p!==1||y!==1)&&v.push(a(v)+"scale("+p+","+y+")")}return function(d,m){var p=[],y=[];return d=e(d),m=e(m),s(d.translateX,d.translateY,m.translateX,m.translateY,p,y),u(d.rotate,m.rotate,p,y),f(d.skewX,m.skewX,p,y),h(d.scaleX,d.scaleY,m.scaleX,m.scaleY,p,y),d=m=null,function(v){for(var w=-1,k=y.length,S;++w=0&&e._call.call(void 0,n),e=e._next;--ra}function Zx(){Fi=(tc=jo.now())+gc,ra=xo=0;try{E3()}finally{ra=0,k3(),Fi=0}}function N3(){var e=jo.now(),n=e-tc;n>_w&&(gc-=n,tc=e)}function k3(){for(var e,n=ec,r,l=1/0;n;)n._call?(l>n._time&&(l=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:ec=r);vo=e,Tp(l)}function Tp(e){if(!ra){xo&&(xo=clearTimeout(xo));var n=e-Fi;n>24?(e<1/0&&(xo=setTimeout(Zx,e-jo.now()-gc)),so&&(so=clearInterval(so))):(so||(tc=jo.now(),so=setInterval(N3,_w)),ra=1,Ew(Zx))}}function Kx(e,n,r){var l=new nc;return n=n==null?0:+n,l.restart(a=>{l.stop(),e(a+n)},n,r),l}var C3=pc("start","end","cancel","interrupt"),T3=[],kw=0,Jx=1,zp=2,Gu=3,Wx=4,Ap=5,Yu=6;function yc(e,n,r,l,a,s){var u=e.__transition;if(!u)e.__transition={};else if(r in u)return;z3(e,r,{name:n,index:l,group:a,on:C3,tween:T3,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:kw})}function im(e,n){var r=$n(e,n);if(r.state>kw)throw new Error("too late; already scheduled");return r}function ir(e,n){var r=$n(e,n);if(r.state>Gu)throw new Error("too late; already running");return r}function $n(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function z3(e,n,r){var l=e.__transition,a;l[n]=r,r.timer=Nw(s,0,r.time);function s(d){r.state=Jx,r.timer.restart(u,r.delay,r.time),r.delay<=d&&u(d-r.delay)}function u(d){var m,p,y,v;if(r.state!==Jx)return h();for(m in l)if(v=l[m],v.name===r.name){if(v.state===Gu)return Kx(u);v.state===Wx?(v.state=Yu,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete l[m]):+mzp&&l.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function lT(e,n,r){var l,a,s=iT(n)?im:ir;return function(){var u=s(this,e),f=u.on;f!==l&&(a=(l=f).copy()).on(n,r),u.on=a}}function aT(e,n){var r=this._id;return arguments.length<2?$n(this.node(),r).on.on(e):this.each(lT(r,e,n))}function oT(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function sT(){return this.on("end.remove",oT(this._id))}function uT(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Wp(e));for(var l=this._groups,a=l.length,s=new Array(a),u=0;u()=>e;function DT(e,{sourceEvent:n,target:r,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function Tr(e,n,r){this.k=e,this.x=n,this.y=r}Tr.prototype={constructor:Tr,scale:function(e){return e===1?this:new Tr(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new Tr(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var xc=new Tr(1,0,0);Aw.prototype=Tr.prototype;function Aw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return xc;return e.__zoom}function nh(e){e.stopImmediatePropagation()}function uo(e){e.preventDefault(),e.stopImmediatePropagation()}function RT(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function LT(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function ev(){return this.__zoom||xc}function HT(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function BT(){return navigator.maxTouchPoints||"ontouchstart"in this}function qT(e,n,r){var l=e.invertX(n[0][0])-r[0][0],a=e.invertX(n[1][0])-r[1][0],s=e.invertY(n[0][1])-r[0][1],u=e.invertY(n[1][1])-r[1][1];return e.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u))}function Mw(){var e=RT,n=LT,r=qT,l=HT,a=BT,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,h=Vu,d=pc("start","zoom","end"),m,p,y,v=500,w=150,k=0,S=10;function _(R){R.property("__zoom",ev).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",U).on("dblclick.zoom",X).filter(a).on("touchstart.zoom",H).on("touchmove.zoom",q).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(R,G,M,$){var Q=R.selection?R.selection():R;Q.property("__zoom",ev),R!==Q?I(R,G,M,$):Q.interrupt().each(function(){A(this,arguments).event($).start().zoom(null,typeof G=="function"?G.apply(this,arguments):G).end()})},_.scaleBy=function(R,G,M,$){_.scaleTo(R,function(){var Q=this.__zoom.k,K=typeof G=="function"?G.apply(this,arguments):G;return Q*K},M,$)},_.scaleTo=function(R,G,M,$){_.transform(R,function(){var Q=n.apply(this,arguments),K=this.__zoom,j=M==null?z(Q):typeof M=="function"?M.apply(this,arguments):M,B=K.invert(j),P=typeof G=="function"?G.apply(this,arguments):G;return r(E(T(K,P),j,B),Q,u)},M,$)},_.translateBy=function(R,G,M,$){_.transform(R,function(){return r(this.__zoom.translate(typeof G=="function"?G.apply(this,arguments):G,typeof M=="function"?M.apply(this,arguments):M),n.apply(this,arguments),u)},null,$)},_.translateTo=function(R,G,M,$,Q){_.transform(R,function(){var K=n.apply(this,arguments),j=this.__zoom,B=$==null?z(K):typeof $=="function"?$.apply(this,arguments):$;return r(xc.translate(B[0],B[1]).scale(j.k).translate(typeof G=="function"?-G.apply(this,arguments):-G,typeof M=="function"?-M.apply(this,arguments):-M),K,u)},$,Q)};function T(R,G){return G=Math.max(s[0],Math.min(s[1],G)),G===R.k?R:new Tr(G,R.x,R.y)}function E(R,G,M){var $=G[0]-M[0]*R.k,Q=G[1]-M[1]*R.k;return $===R.x&&Q===R.y?R:new Tr(R.k,$,Q)}function z(R){return[(+R[0][0]+ +R[1][0])/2,(+R[0][1]+ +R[1][1])/2]}function I(R,G,M,$){R.on("start.zoom",function(){A(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event($).end()}).tween("zoom",function(){var Q=this,K=arguments,j=A(Q,K).event($),B=n.apply(Q,K),P=M==null?z(B):typeof M=="function"?M.apply(Q,K):M,N=Math.max(B[1][0]-B[0][0],B[1][1]-B[0][1]),Y=Q.__zoom,F=typeof G=="function"?G.apply(Q,K):G,J=h(Y.invert(P).concat(N/Y.k),F.invert(P).concat(N/F.k));return function(ne){if(ne===1)ne=F;else{var re=J(ne),se=N/re[2];ne=new Tr(se,P[0]-re[0]*se,P[1]-re[1]*se)}j.zoom(null,ne)}})}function A(R,G,M){return!M&&R.__zooming||new L(R,G)}function L(R,G){this.that=R,this.args=G,this.active=0,this.sourceEvent=null,this.extent=n.apply(R,G),this.taps=0}L.prototype={event:function(R){return R&&(this.sourceEvent=R),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(R,G){return this.mouse&&R!=="mouse"&&(this.mouse[1]=G.invert(this.mouse[0])),this.touch0&&R!=="touch"&&(this.touch0[1]=G.invert(this.touch0[0])),this.touch1&&R!=="touch"&&(this.touch1[1]=G.invert(this.touch1[0])),this.that.__zoom=G,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(R){var G=vn(this.that).datum();d.call(R,this.that,new DT(R,{sourceEvent:this.sourceEvent,target:_,transform:this.that.__zoom,dispatch:d}),G)}};function D(R,...G){if(!e.apply(this,arguments))return;var M=A(this,G).event(R),$=this.__zoom,Q=Math.max(s[0],Math.min(s[1],$.k*Math.pow(2,l.apply(this,arguments)))),K=Bn(R);if(M.wheel)(M.mouse[0][0]!==K[0]||M.mouse[0][1]!==K[1])&&(M.mouse[1]=$.invert(M.mouse[0]=K)),clearTimeout(M.wheel);else{if($.k===Q)return;M.mouse=[K,$.invert(K)],$u(this),M.start()}uo(R),M.wheel=setTimeout(j,w),M.zoom("mouse",r(E(T($,Q),M.mouse[0],M.mouse[1]),M.extent,u));function j(){M.wheel=null,M.end()}}function U(R,...G){if(y||!e.apply(this,arguments))return;var M=R.currentTarget,$=A(this,G,!0).event(R),Q=vn(R.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",N,!0),K=Bn(R,M),j=R.clientX,B=R.clientY;pw(R.view),nh(R),$.mouse=[K,this.__zoom.invert(K)],$u(this),$.start();function P(Y){if(uo(Y),!$.moved){var F=Y.clientX-j,J=Y.clientY-B;$.moved=F*F+J*J>k}$.event(Y).zoom("mouse",r(E($.that.__zoom,$.mouse[0]=Bn(Y,M),$.mouse[1]),$.extent,u))}function N(Y){Q.on("mousemove.zoom mouseup.zoom",null),mw(Y.view,$.moved),uo(Y),$.event(Y).end()}}function X(R,...G){if(e.apply(this,arguments)){var M=this.__zoom,$=Bn(R.changedTouches?R.changedTouches[0]:R,this),Q=M.invert($),K=M.k*(R.shiftKey?.5:2),j=r(E(T(M,K),$,Q),n.apply(this,G),u);uo(R),f>0?vn(this).transition().duration(f).call(I,j,$,R):vn(this).call(_.transform,j,$,R)}}function H(R,...G){if(e.apply(this,arguments)){var M=R.touches,$=M.length,Q=A(this,G,R.changedTouches.length===$).event(R),K,j,B,P;for(nh(R),j=0;j<$;++j)B=M[j],P=Bn(B,this),P=[P,this.__zoom.invert(P),B.identifier],Q.touch0?!Q.touch1&&Q.touch0[2]!==P[2]&&(Q.touch1=P,Q.taps=0):(Q.touch0=P,K=!0,Q.taps=1+!!m);m&&(m=clearTimeout(m)),K&&(Q.taps<2&&(p=P[0],m=setTimeout(function(){m=null},v)),$u(this),Q.start())}}function q(R,...G){if(this.__zooming){var M=A(this,G).event(R),$=R.changedTouches,Q=$.length,K,j,B,P;for(uo(R),K=0;K"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:n,sourceHandle:r,targetHandle:l})=>`Couldn't create edge for ${e} handle id: "${e==="source"?r:l}", edge id: ${n}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Oo=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],jw=["Enter"," ","Escape"],Ow={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:n,y:r})=>`Moved selected node ${e}. New position, x: ${n}, y: ${r}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var ia;(function(e){e.Strict="strict",e.Loose="loose"})(ia||(ia={}));var $i;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})($i||($i={}));var Do;(function(e){e.Partial="partial",e.Full="full"})(Do||(Do={}));const Dw={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var pi;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(pi||(pi={}));var rc;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(rc||(rc={}));var be;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(be||(be={}));const tv={[be.Left]:be.Right,[be.Right]:be.Left,[be.Top]:be.Bottom,[be.Bottom]:be.Top};function Rw(e){return e===null?null:e?"valid":"invalid"}const Lw=e=>"id"in e&&"source"in e&&"target"in e,UT=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),am=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Yo=(e,n=[0,0])=>{const{width:r,height:l}=jr(e),a=e.origin??n,s=r*a[0],u=l*a[1];return{x:e.position.x-s,y:e.position.y-u}},IT=(e,n={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const r=e.reduce((l,a)=>{const s=typeof a=="string";let u=!n.nodeLookup&&!s?a:void 0;n.nodeLookup&&(u=s?n.nodeLookup.get(a):am(a)?a:n.nodeLookup.get(a.id));const f=u?ic(u,n.nodeOrigin):{x:0,y:0,x2:0,y2:0};return vc(l,f)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return bc(r)},$o=(e,n={})=>{let r={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return e.forEach(a=>{(n.filter===void 0||n.filter(a))&&(r=vc(r,ic(a)),l=!0)}),l?bc(r):{x:0,y:0,width:0,height:0}},om=(e,n,[r,l,a]=[0,0,1],s=!1,u=!1)=>{const f={...Xo(n,[r,l,a]),width:n.width/a,height:n.height/a},h=[];for(const d of e.values()){const{measured:m,selectable:p=!0,hidden:y=!1}=d;if(u&&!p||y)continue;const v=m.width??d.width??d.initialWidth??null,w=m.height??d.height??d.initialHeight??null,k=Ro(f,aa(d)),S=(v??0)*(w??0),_=s&&k>0;(!d.internals.handleBounds||_||k>=S||d.dragging)&&h.push(d)}return h},VT=(e,n)=>{const r=new Set;return e.forEach(l=>{r.add(l.id)}),n.filter(l=>r.has(l.source)||r.has(l.target))};function GT(e,n){const r=new Map,l=n!=null&&n.nodes?new Set(n.nodes.map(a=>a.id)):null;return e.forEach(a=>{a.measured.width&&a.measured.height&&((n==null?void 0:n.includeHiddenNodes)||!a.hidden)&&(!l||l.has(a.id))&&r.set(a.id,a)}),r}async function YT({nodes:e,width:n,height:r,panZoom:l,minZoom:a,maxZoom:s},u){if(e.size===0)return Promise.resolve(!0);const f=GT(e,u),h=$o(f),d=sm(h,n,r,(u==null?void 0:u.minZoom)??a,(u==null?void 0:u.maxZoom)??s,(u==null?void 0:u.padding)??.1);return await l.setViewport(d,{duration:u==null?void 0:u.duration,ease:u==null?void 0:u.ease,interpolate:u==null?void 0:u.interpolate}),Promise.resolve(!0)}function Hw({nodeId:e,nextPosition:n,nodeLookup:r,nodeOrigin:l=[0,0],nodeExtent:a,onError:s}){const u=r.get(e),f=u.parentId?r.get(u.parentId):void 0,{x:h,y:d}=f?f.internals.positionAbsolute:{x:0,y:0},m=u.origin??l;let p=u.extent||a;if(u.extent==="parent"&&!u.expandParent)if(!f)s==null||s("005",nr.error005());else{const v=f.measured.width,w=f.measured.height;v&&w&&(p=[[h,d],[h+v,d+w]])}else f&&oa(u.extent)&&(p=[[u.extent[0][0]+h,u.extent[0][1]+d],[u.extent[1][0]+h,u.extent[1][1]+d]]);const y=oa(p)?Qi(n,p,u.measured):n;return(u.measured.width===void 0||u.measured.height===void 0)&&(s==null||s("015",nr.error015())),{position:{x:y.x-h+(u.measured.width??0)*m[0],y:y.y-d+(u.measured.height??0)*m[1]},positionAbsolute:y}}async function $T({nodesToRemove:e=[],edgesToRemove:n=[],nodes:r,edges:l,onBeforeDelete:a}){const s=new Set(e.map(y=>y.id)),u=[];for(const y of r){if(y.deletable===!1)continue;const v=s.has(y.id),w=!v&&y.parentId&&u.find(k=>k.id===y.parentId);(v||w)&&u.push(y)}const f=new Set(n.map(y=>y.id)),h=l.filter(y=>y.deletable!==!1),m=VT(u,h);for(const y of h)f.has(y.id)&&!m.find(w=>w.id===y.id)&&m.push(y);if(!a)return{edges:m,nodes:u};const p=await a({nodes:u,edges:m});return typeof p=="boolean"?p?{edges:m,nodes:u}:{edges:[],nodes:[]}:p}const la=(e,n=0,r=1)=>Math.min(Math.max(e,n),r),Qi=(e={x:0,y:0},n,r)=>({x:la(e.x,n[0][0],n[1][0]-((r==null?void 0:r.width)??0)),y:la(e.y,n[0][1],n[1][1]-((r==null?void 0:r.height)??0))});function Bw(e,n,r){const{width:l,height:a}=jr(r),{x:s,y:u}=r.internals.positionAbsolute;return Qi(e,[[s,u],[s+l,u+a]],n)}const nv=(e,n,r)=>er?-la(Math.abs(e-r),1,n)/n:0,qw=(e,n,r=15,l=40)=>{const a=nv(e.x,l,n.width-l)*r,s=nv(e.y,l,n.height-l)*r;return[a,s]},vc=(e,n)=>({x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),x2:Math.max(e.x2,n.x2),y2:Math.max(e.y2,n.y2)}),Mp=({x:e,y:n,width:r,height:l})=>({x:e,y:n,x2:e+r,y2:n+l}),bc=({x:e,y:n,x2:r,y2:l})=>({x:e,y:n,width:r-e,height:l-n}),aa=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=am(e)?e.internals.positionAbsolute:Yo(e,n);return{x:r,y:l,width:((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},ic=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=am(e)?e.internals.positionAbsolute:Yo(e,n);return{x:r,y:l,x2:r+(((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0),y2:l+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},Uw=(e,n)=>bc(vc(Mp(e),Mp(n))),Ro=(e,n)=>{const r=Math.max(0,Math.min(e.x+e.width,n.x+n.width)-Math.max(e.x,n.x)),l=Math.max(0,Math.min(e.y+e.height,n.y+n.height)-Math.max(e.y,n.y));return Math.ceil(r*l)},rv=e=>Un(e.width)&&Un(e.height)&&Un(e.x)&&Un(e.y),Un=e=>!isNaN(e)&&isFinite(e),PT=(e,n)=>{},Po=(e,n=[1,1])=>({x:n[0]*Math.round(e.x/n[0]),y:n[1]*Math.round(e.y/n[1])}),Xo=({x:e,y:n},[r,l,a],s=!1,u=[1,1])=>{const f={x:(e-r)/a,y:(n-l)/a};return s?Po(f,u):f},lc=({x:e,y:n},[r,l,a])=>({x:e*a+r,y:n*a+l});function Vl(e,n){if(typeof e=="number")return Math.floor((n-n/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(r)}if(typeof e=="string"&&e.endsWith("%")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(n*r*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function XT(e,n,r){if(typeof e=="string"||typeof e=="number"){const l=Vl(e,r),a=Vl(e,n);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof e=="object"){const l=Vl(e.top??e.y??0,r),a=Vl(e.bottom??e.y??0,r),s=Vl(e.left??e.x??0,n),u=Vl(e.right??e.x??0,n);return{top:l,right:u,bottom:a,left:s,x:s+u,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function FT(e,n,r,l,a,s){const{x:u,y:f}=lc(e,[n,r,l]),{x:h,y:d}=lc({x:e.x+e.width,y:e.y+e.height},[n,r,l]),m=a-h,p=s-d;return{left:Math.floor(u),top:Math.floor(f),right:Math.floor(m),bottom:Math.floor(p)}}const sm=(e,n,r,l,a,s)=>{const u=XT(s,n,r),f=(n-u.x)/e.width,h=(r-u.y)/e.height,d=Math.min(f,h),m=la(d,l,a),p=e.x+e.width/2,y=e.y+e.height/2,v=n/2-p*m,w=r/2-y*m,k=FT(e,v,w,m,n,r),S={left:Math.min(k.left-u.left,0),top:Math.min(k.top-u.top,0),right:Math.min(k.right-u.right,0),bottom:Math.min(k.bottom-u.bottom,0)};return{x:v-S.left+S.right,y:w-S.top+S.bottom,zoom:m}},Lo=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function oa(e){return e!=null&&e!=="parent"}function jr(e){var n,r;return{width:((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth??0,height:((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight??0}}function Iw(e){var n,r;return(((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth)!==void 0&&(((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight)!==void 0}function Vw(e,n={width:0,height:0},r,l,a){const s={...e},u=l.get(r);if(u){const f=u.origin||a;s.x+=u.internals.positionAbsolute.x-(n.width??0)*f[0],s.y+=u.internals.positionAbsolute.y-(n.height??0)*f[1]}return s}function iv(e,n){if(e.size!==n.size)return!1;for(const r of e)if(!n.has(r))return!1;return!0}function QT(){let e,n;return{promise:new Promise((l,a)=>{e=l,n=a}),resolve:e,reject:n}}function ZT(e){return{...Ow,...e||{}}}function So(e,{snapGrid:n=[0,0],snapToGrid:r=!1,transform:l,containerBounds:a}){const{x:s,y:u}=In(e),f=Xo({x:s-((a==null?void 0:a.left)??0),y:u-((a==null?void 0:a.top)??0)},l),{x:h,y:d}=r?Po(f,n):f;return{xSnapped:h,ySnapped:d,...f}}const um=e=>({width:e.offsetWidth,height:e.offsetHeight}),Gw=e=>{var n;return((n=e==null?void 0:e.getRootNode)==null?void 0:n.call(e))||(window==null?void 0:window.document)},KT=["INPUT","SELECT","TEXTAREA"];function Yw(e){var l,a;const n=((a=(l=e.composedPath)==null?void 0:l.call(e))==null?void 0:a[0])||e.target;return(n==null?void 0:n.nodeType)!==1?!1:KT.includes(n.nodeName)||n.hasAttribute("contenteditable")||!!n.closest(".nokey")}const $w=e=>"clientX"in e,In=(e,n)=>{var s,u;const r=$w(e),l=r?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,a=r?e.clientY:(u=e.touches)==null?void 0:u[0].clientY;return{x:l-((n==null?void 0:n.left)??0),y:a-((n==null?void 0:n.top)??0)}},lv=(e,n,r,l,a)=>{const s=n.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(u=>{const f=u.getBoundingClientRect();return{id:u.getAttribute("data-handleid"),type:e,nodeId:a,position:u.getAttribute("data-handlepos"),x:(f.left-r.left)/l,y:(f.top-r.top)/l,...um(u)}})};function Pw({sourceX:e,sourceY:n,targetX:r,targetY:l,sourceControlX:a,sourceControlY:s,targetControlX:u,targetControlY:f}){const h=e*.125+a*.375+u*.375+r*.125,d=n*.125+s*.375+f*.375+l*.125,m=Math.abs(h-e),p=Math.abs(d-n);return[h,d,m,p]}function ju(e,n){return e>=0?.5*e:n*25*Math.sqrt(-e)}function av({pos:e,x1:n,y1:r,x2:l,y2:a,c:s}){switch(e){case be.Left:return[n-ju(n-l,s),r];case be.Right:return[n+ju(l-n,s),r];case be.Top:return[n,r-ju(r-a,s)];case be.Bottom:return[n,r+ju(a-r,s)]}}function cm({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top,curvature:u=.25}){const[f,h]=av({pos:r,x1:e,y1:n,x2:l,y2:a,c:u}),[d,m]=av({pos:s,x1:l,y1:a,x2:e,y2:n,c:u}),[p,y,v,w]=Pw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:f,sourceControlY:h,targetControlX:d,targetControlY:m});return[`M${e},${n} C${f},${h} ${d},${m} ${l},${a}`,p,y,v,w]}function Xw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const a=Math.abs(r-e)/2,s=r0}const ez=({source:e,sourceHandle:n,target:r,targetHandle:l})=>`xy-edge__${e}${n||""}-${r}${l||""}`,tz=(e,n)=>n.some(r=>r.source===e.source&&r.target===e.target&&(r.sourceHandle===e.sourceHandle||!r.sourceHandle&&!e.sourceHandle)&&(r.targetHandle===e.targetHandle||!r.targetHandle&&!e.targetHandle)),nz=(e,n,r={})=>{if(!e.source||!e.target)return n;const l=r.getEdgeId||ez;let a;return Lw(e)?a={...e}:a={...e,id:l(e)},tz(a,n)?n:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,n.concat(a))};function Fw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const[a,s,u,f]=Xw({sourceX:e,sourceY:n,targetX:r,targetY:l});return[`M ${e},${n}L ${r},${l}`,a,s,u,f]}const ov={[be.Left]:{x:-1,y:0},[be.Right]:{x:1,y:0},[be.Top]:{x:0,y:-1},[be.Bottom]:{x:0,y:1}},rz=({source:e,sourcePosition:n=be.Bottom,target:r})=>n===be.Left||n===be.Right?e.xMath.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2));function iz({source:e,sourcePosition:n=be.Bottom,target:r,targetPosition:l=be.Top,center:a,offset:s,stepPosition:u}){const f=ov[n],h=ov[l],d={x:e.x+f.x*s,y:e.y+f.y*s},m={x:r.x+h.x*s,y:r.y+h.y*s},p=rz({source:d,sourcePosition:n,target:m}),y=p.x!==0?"x":"y",v=p[y];let w=[],k,S;const _={x:0,y:0},T={x:0,y:0},[,,E,z]=Xw({sourceX:e.x,sourceY:e.y,targetX:r.x,targetY:r.y});if(f[y]*h[y]===-1){y==="x"?(k=a.x??d.x+(m.x-d.x)*u,S=a.y??(d.y+m.y)/2):(k=a.x??(d.x+m.x)/2,S=a.y??d.y+(m.y-d.y)*u);const A=[{x:k,y:d.y},{x:k,y:m.y}],L=[{x:d.x,y:S},{x:m.x,y:S}];f[y]===v?w=y==="x"?A:L:w=y==="x"?L:A}else{const A=[{x:d.x,y:m.y}],L=[{x:m.x,y:d.y}];if(y==="x"?w=f.x===v?L:A:w=f.y===v?A:L,n===l){const q=Math.abs(e[y]-r[y]);if(q<=s){const ee=Math.min(s-1,s-q);f[y]===v?_[y]=(d[y]>e[y]?-1:1)*ee:T[y]=(m[y]>r[y]?-1:1)*ee}}if(n!==l){const q=y==="x"?"y":"x",ee=f[y]===h[q],R=d[q]>m[q],G=d[q]=H?(k=(D.x+U.x)/2,S=w[0].y):(k=w[0].x,S=(D.y+U.y)/2)}return[[e,{x:d.x+_.x,y:d.y+_.y},...w,{x:m.x+T.x,y:m.y+T.y},r],k,S,E,z]}function lz(e,n,r,l){const a=Math.min(sv(e,n)/2,sv(n,r)/2,l),{x:s,y:u}=n;if(e.x===s&&s===r.x||e.y===u&&u===r.y)return`L${s} ${u}`;if(e.y===u){const d=e.x{let z="";return E>0&&Er.id===n):e[0])||null}function Op(e,n){return e?typeof e=="string"?e:`${n?`${n}__`:""}${Object.keys(e).sort().map(l=>`${l}=${e[l]}`).join("&")}`:""}function oz(e,{id:n,defaultColor:r,defaultMarkerStart:l,defaultMarkerEnd:a}){const s=new Set;return e.reduce((u,f)=>([f.markerStart||l,f.markerEnd||a].forEach(h=>{if(h&&typeof h=="object"){const d=Op(h,n);s.has(d)||(u.push({id:d,color:h.color||r,...h}),s.add(d))}}),u),[]).sort((u,f)=>u.id.localeCompare(f.id))}const Qw=1e3,sz=10,fm={nodeOrigin:[0,0],nodeExtent:Oo,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},uz={...fm,checkEquality:!0};function dm(e,n){const r={...e};for(const l in n)n[l]!==void 0&&(r[l]=n[l]);return r}function cz(e,n,r){const l=dm(fm,r);for(const a of e.values())if(a.parentId)pm(a,e,n,l);else{const s=Yo(a,l.nodeOrigin),u=oa(a.extent)?a.extent:l.nodeExtent,f=Qi(s,u,jr(a));a.internals.positionAbsolute=f}}function fz(e,n){if(!e.handles)return e.measured?n==null?void 0:n.internals.handleBounds:void 0;const r=[],l=[];for(const a of e.handles){const s={id:a.id,width:a.width??1,height:a.height??1,nodeId:e.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?r.push(s):a.type==="target"&&l.push(s)}return{source:r,target:l}}function hm(e){return e==="manual"}function Dp(e,n,r,l={}){var d,m;const a=dm(uz,l),s={i:0},u=new Map(n),f=a!=null&&a.elevateNodesOnSelect&&!hm(a.zIndexMode)?Qw:0;let h=e.length>0;n.clear(),r.clear();for(const p of e){let y=u.get(p.id);if(a.checkEquality&&p===(y==null?void 0:y.internals.userNode))n.set(p.id,y);else{const v=Yo(p,a.nodeOrigin),w=oa(p.extent)?p.extent:a.nodeExtent,k=Qi(v,w,jr(p));y={...a.defaults,...p,measured:{width:(d=p.measured)==null?void 0:d.width,height:(m=p.measured)==null?void 0:m.height},internals:{positionAbsolute:k,handleBounds:fz(p,y),z:Zw(p,f,a.zIndexMode),userNode:p}},n.set(p.id,y)}(y.measured===void 0||y.measured.width===void 0||y.measured.height===void 0)&&!y.hidden&&(h=!1),p.parentId&&pm(y,n,r,l,s)}return h}function dz(e,n){if(!e.parentId)return;const r=n.get(e.parentId);r?r.set(e.id,e):n.set(e.parentId,new Map([[e.id,e]]))}function pm(e,n,r,l,a){const{elevateNodesOnSelect:s,nodeOrigin:u,nodeExtent:f,zIndexMode:h}=dm(fm,l),d=e.parentId,m=n.get(d);if(!m){console.warn(`Parent node ${d} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}dz(e,r),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&h==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*sz),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const p=s&&!hm(h)?Qw:0,{x:y,y:v,z:w}=hz(e,m,u,f,p,h),{positionAbsolute:k}=e.internals,S=y!==k.x||v!==k.y;(S||w!==e.internals.z)&&n.set(e.id,{...e,internals:{...e.internals,positionAbsolute:S?{x:y,y:v}:k,z:w}})}function Zw(e,n,r){const l=Un(e.zIndex)?e.zIndex:0;return hm(r)?l:l+(e.selected?n:0)}function hz(e,n,r,l,a,s){const{x:u,y:f}=n.internals.positionAbsolute,h=jr(e),d=Yo(e,r),m=oa(e.extent)?Qi(d,e.extent,h):d;let p=Qi({x:u+m.x,y:f+m.y},l,h);e.extent==="parent"&&(p=Bw(p,h,n));const y=Zw(e,a,s),v=n.internals.z??0;return{x:p.x,y:p.y,z:v>=y?v+1:y}}function mm(e,n,r,l=[0,0]){var u;const a=[],s=new Map;for(const f of e){const h=n.get(f.parentId);if(!h)continue;const d=((u=s.get(f.parentId))==null?void 0:u.expandedRect)??aa(h),m=Uw(d,f.rect);s.set(f.parentId,{expandedRect:m,parent:h})}return s.size>0&&s.forEach(({expandedRect:f,parent:h},d)=>{var E;const m=h.internals.positionAbsolute,p=jr(h),y=h.origin??l,v=f.x0||w>0||_||T)&&(a.push({id:d,type:"position",position:{x:h.position.x-v+_,y:h.position.y-w+T}}),(E=r.get(d))==null||E.forEach(z=>{e.some(I=>I.id===z.id)||a.push({id:z.id,type:"position",position:{x:z.position.x+v,y:z.position.y+w}})})),(p.width0){const v=mm(y,n,r,a);d.push(...v)}return{changes:d,updatedInternals:h}}async function mz({delta:e,panZoom:n,transform:r,translateExtent:l,width:a,height:s}){if(!n||!e.x&&!e.y)return Promise.resolve(!1);const u=await n.setViewportConstrained({x:r[0]+e.x,y:r[1]+e.y,zoom:r[2]},[[0,0],[a,s]],l),f=!!u&&(u.x!==r[0]||u.y!==r[1]||u.k!==r[2]);return Promise.resolve(f)}function dv(e,n,r,l,a,s){let u=a;const f=l.get(u)||new Map;l.set(u,f.set(r,n)),u=`${a}-${e}`;const h=l.get(u)||new Map;if(l.set(u,h.set(r,n)),s){u=`${a}-${e}-${s}`;const d=l.get(u)||new Map;l.set(u,d.set(r,n))}}function Kw(e,n,r){e.clear(),n.clear();for(const l of r){const{source:a,target:s,sourceHandle:u=null,targetHandle:f=null}=l,h={edgeId:l.id,source:a,target:s,sourceHandle:u,targetHandle:f},d=`${a}-${u}--${s}-${f}`,m=`${s}-${f}--${a}-${u}`;dv("source",h,m,e,a,u),dv("target",h,d,e,s,f),n.set(l.id,l)}}function Jw(e,n){if(!e.parentId)return!1;const r=n.get(e.parentId);return r?r.selected?!0:Jw(r,n):!1}function hv(e,n,r){var a;let l=e;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,n))return!0;if(l===r)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function gz(e,n,r,l){const a=new Map;for(const[s,u]of e)if((u.selected||u.id===l)&&(!u.parentId||!Jw(u,e))&&(u.draggable||n&&typeof u.draggable>"u")){const f=e.get(s);f&&a.set(s,{id:s,position:f.position||{x:0,y:0},distance:{x:r.x-f.internals.positionAbsolute.x,y:r.y-f.internals.positionAbsolute.y},extent:f.extent,parentId:f.parentId,origin:f.origin,expandParent:f.expandParent,internals:{positionAbsolute:f.internals.positionAbsolute||{x:0,y:0}},measured:{width:f.measured.width??0,height:f.measured.height??0}})}return a}function rh({nodeId:e,dragItems:n,nodeLookup:r,dragging:l=!0}){var u,f,h;const a=[];for(const[d,m]of n){const p=(u=r.get(d))==null?void 0:u.internals.userNode;p&&a.push({...p,position:m.position,dragging:l})}if(!e)return[a[0],a];const s=(f=r.get(e))==null?void 0:f.internals.userNode;return[s?{...s,position:((h=n.get(e))==null?void 0:h.position)||s.position,dragging:l}:a[0],a]}function yz({dragItems:e,snapGrid:n,x:r,y:l}){const a=e.values().next().value;if(!a)return null;const s={x:r-a.distance.x,y:l-a.distance.y},u=Po(s,n);return{x:u.x-s.x,y:u.y-s.y}}function xz({onNodeMouseDown:e,getStoreItems:n,onDragStart:r,onDrag:l,onDragStop:a}){let s={x:null,y:null},u=0,f=new Map,h=!1,d={x:0,y:0},m=null,p=!1,y=null,v=!1,w=!1,k=null;function S({noDragClassName:T,handleSelector:E,domNode:z,isSelectable:I,nodeId:A,nodeClickDistance:L=0}){y=vn(z);function D({x:q,y:ee}){const{nodeLookup:R,nodeExtent:G,snapGrid:M,snapToGrid:$,nodeOrigin:Q,onNodeDrag:K,onSelectionDrag:j,onError:B,updateNodePositions:P}=n();s={x:q,y:ee};let N=!1;const Y=f.size>1,F=Y&&G?Mp($o(f)):null,J=Y&&$?yz({dragItems:f,snapGrid:M,x:q,y:ee}):null;for(const[ne,re]of f){if(!R.has(ne))continue;let se={x:q-re.distance.x,y:ee-re.distance.y};$&&(se=J?{x:Math.round(se.x+J.x),y:Math.round(se.y+J.y)}:Po(se,M));let ye=null;if(Y&&G&&!re.extent&&F){const{positionAbsolute:pe}=re.internals,_e=pe.x-F.x+G[0][0],Me=pe.x+re.measured.width-F.x2+G[1][0],Ce=pe.y-F.y+G[0][1],ut=pe.y+re.measured.height-F.y2+G[1][1];ye=[[_e,Ce],[Me,ut]]}const{position:ve,positionAbsolute:xe}=Hw({nodeId:ne,nextPosition:se,nodeLookup:R,nodeExtent:ye||G,nodeOrigin:Q,onError:B});N=N||re.position.x!==ve.x||re.position.y!==ve.y,re.position=ve,re.internals.positionAbsolute=xe}if(w=w||N,!!N&&(P(f,!0),k&&(l||K||!A&&j))){const[ne,re]=rh({nodeId:A,dragItems:f,nodeLookup:R});l==null||l(k,f,ne,re),K==null||K(k,ne,re),A||j==null||j(k,re)}}async function U(){if(!m)return;const{transform:q,panBy:ee,autoPanSpeed:R,autoPanOnNodeDrag:G}=n();if(!G){h=!1,cancelAnimationFrame(u);return}const[M,$]=qw(d,m,R);(M!==0||$!==0)&&(s.x=(s.x??0)-M/q[2],s.y=(s.y??0)-$/q[2],await ee({x:M,y:$})&&D(s)),u=requestAnimationFrame(U)}function X(q){var Y;const{nodeLookup:ee,multiSelectionActive:R,nodesDraggable:G,transform:M,snapGrid:$,snapToGrid:Q,selectNodesOnDrag:K,onNodeDragStart:j,onSelectionDragStart:B,unselectNodesAndEdges:P}=n();p=!0,(!K||!I)&&!R&&A&&((Y=ee.get(A))!=null&&Y.selected||P()),I&&K&&A&&(e==null||e(A));const N=So(q.sourceEvent,{transform:M,snapGrid:$,snapToGrid:Q,containerBounds:m});if(s=N,f=gz(ee,G,N,A),f.size>0&&(r||j||!A&&B)){const[F,J]=rh({nodeId:A,dragItems:f,nodeLookup:ee});r==null||r(q.sourceEvent,f,F,J),j==null||j(q.sourceEvent,F,J),A||B==null||B(q.sourceEvent,J)}}const H=gw().clickDistance(L).on("start",q=>{const{domNode:ee,nodeDragThreshold:R,transform:G,snapGrid:M,snapToGrid:$}=n();m=(ee==null?void 0:ee.getBoundingClientRect())||null,v=!1,w=!1,k=q.sourceEvent,R===0&&X(q),s=So(q.sourceEvent,{transform:G,snapGrid:M,snapToGrid:$,containerBounds:m}),d=In(q.sourceEvent,m)}).on("drag",q=>{const{autoPanOnNodeDrag:ee,transform:R,snapGrid:G,snapToGrid:M,nodeDragThreshold:$,nodeLookup:Q}=n(),K=So(q.sourceEvent,{transform:R,snapGrid:G,snapToGrid:M,containerBounds:m});if(k=q.sourceEvent,(q.sourceEvent.type==="touchmove"&&q.sourceEvent.touches.length>1||A&&!Q.has(A))&&(v=!0),!v){if(!h&&ee&&p&&(h=!0,U()),!p){const j=In(q.sourceEvent,m),B=j.x-d.x,P=j.y-d.y;Math.sqrt(B*B+P*P)>$&&X(q)}(s.x!==K.xSnapped||s.y!==K.ySnapped)&&f&&p&&(d=In(q.sourceEvent,m),D(K))}}).on("end",q=>{if(!(!p||v)&&(h=!1,p=!1,cancelAnimationFrame(u),f.size>0)){const{nodeLookup:ee,updateNodePositions:R,onNodeDragStop:G,onSelectionDragStop:M}=n();if(w&&(R(f,!1),w=!1),a||G||!A&&M){const[$,Q]=rh({nodeId:A,dragItems:f,nodeLookup:ee,dragging:!1});a==null||a(q.sourceEvent,f,$,Q),G==null||G(q.sourceEvent,$,Q),A||M==null||M(q.sourceEvent,Q)}}}).filter(q=>{const ee=q.target;return!q.button&&(!T||!hv(ee,`.${T}`,z))&&(!E||hv(ee,E,z))});y.call(H)}function _(){y==null||y.on(".drag",null)}return{update:S,destroy:_}}function vz(e,n,r){const l=[],a={x:e.x-r,y:e.y-r,width:r*2,height:r*2};for(const s of n.values())Ro(a,aa(s))>0&&l.push(s);return l}const bz=250;function wz(e,n,r,l){var f,h;let a=[],s=1/0;const u=vz(e,r,n+bz);for(const d of u){const m=[...((f=d.internals.handleBounds)==null?void 0:f.source)??[],...((h=d.internals.handleBounds)==null?void 0:h.target)??[]];for(const p of m){if(l.nodeId===p.nodeId&&l.type===p.type&&l.id===p.id)continue;const{x:y,y:v}=Zi(d,p,p.position,!0),w=Math.sqrt(Math.pow(y-e.x,2)+Math.pow(v-e.y,2));w>n||(w1){const d=l.type==="source"?"target":"source";return a.find(m=>m.type===d)??a[0]}return a[0]}function Ww(e,n,r,l,a,s=!1){var d,m,p;const u=l.get(e);if(!u)return null;const f=a==="strict"?(d=u.internals.handleBounds)==null?void 0:d[n]:[...((m=u.internals.handleBounds)==null?void 0:m.source)??[],...((p=u.internals.handleBounds)==null?void 0:p.target)??[]],h=(r?f==null?void 0:f.find(y=>y.id===r):f==null?void 0:f[0])??null;return h&&s?{...h,...Zi(u,h,h.position,!0)}:h}function eS(e,n){return e||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function Sz(e,n){let r=null;return n?r=!0:e&&!n&&(r=!1),r}const tS=()=>!0;function _z(e,{connectionMode:n,connectionRadius:r,handleId:l,nodeId:a,edgeUpdaterType:s,isTarget:u,domNode:f,nodeLookup:h,lib:d,autoPanOnConnect:m,flowId:p,panBy:y,cancelConnection:v,onConnectStart:w,onConnect:k,onConnectEnd:S,isValidConnection:_=tS,onReconnectEnd:T,updateConnection:E,getTransform:z,getFromHandle:I,autoPanSpeed:A,dragThreshold:L=1,handleDomNode:D}){const U=Gw(e.target);let X=0,H;const{x:q,y:ee}=In(e),R=eS(s,D),G=f==null?void 0:f.getBoundingClientRect();let M=!1;if(!G||!R)return;const $=Ww(a,R,l,h,n);if(!$)return;let Q=In(e,G),K=!1,j=null,B=!1,P=null;function N(){if(!m||!G)return;const[ve,xe]=qw(Q,G,A);y({x:ve,y:xe}),X=requestAnimationFrame(N)}const Y={...$,nodeId:a,type:R,position:$.position},F=h.get(a);let ne={inProgress:!0,isValid:null,from:Zi(F,Y,be.Left,!0),fromHandle:Y,fromPosition:Y.position,fromNode:F,to:Q,toHandle:null,toPosition:tv[Y.position],toNode:null,pointer:Q};function re(){M=!0,E(ne),w==null||w(e,{nodeId:a,handleId:l,handleType:R})}L===0&&re();function se(ve){if(!M){const{x:ut,y:tt}=In(ve),At=ut-q,It=tt-ee;if(!(At*At+It*It>L*L))return;re()}if(!I()||!Y){ye(ve);return}const xe=z();Q=In(ve,G),H=wz(Xo(Q,xe,!1,[1,1]),r,h,Y),K||(N(),K=!0);const pe=nS(ve,{handle:H,connectionMode:n,fromNodeId:a,fromHandleId:l,fromType:u?"target":"source",isValidConnection:_,doc:U,lib:d,flowId:p,nodeLookup:h});P=pe.handleDomNode,j=pe.connection,B=Sz(!!H,pe.isValid);const _e=h.get(a),Me=_e?Zi(_e,Y,be.Left,!0):ne.from,Ce={...ne,from:Me,isValid:B,to:pe.toHandle&&B?lc({x:pe.toHandle.x,y:pe.toHandle.y},xe):Q,toHandle:pe.toHandle,toPosition:B&&pe.toHandle?pe.toHandle.position:tv[Y.position],toNode:pe.toHandle?h.get(pe.toHandle.nodeId):null,pointer:Q};E(Ce),ne=Ce}function ye(ve){if(!("touches"in ve&&ve.touches.length>0)){if(M){(H||P)&&j&&B&&(k==null||k(j));const{inProgress:xe,...pe}=ne,_e={...pe,toPosition:ne.toHandle?ne.toPosition:null};S==null||S(ve,_e),s&&(T==null||T(ve,_e))}v(),cancelAnimationFrame(X),K=!1,B=!1,j=null,P=null,U.removeEventListener("mousemove",se),U.removeEventListener("mouseup",ye),U.removeEventListener("touchmove",se),U.removeEventListener("touchend",ye)}}U.addEventListener("mousemove",se),U.addEventListener("mouseup",ye),U.addEventListener("touchmove",se),U.addEventListener("touchend",ye)}function nS(e,{handle:n,connectionMode:r,fromNodeId:l,fromHandleId:a,fromType:s,doc:u,lib:f,flowId:h,isValidConnection:d=tS,nodeLookup:m}){const p=s==="target",y=n?u.querySelector(`.${f}-flow__handle[data-id="${h}-${n==null?void 0:n.nodeId}-${n==null?void 0:n.id}-${n==null?void 0:n.type}"]`):null,{x:v,y:w}=In(e),k=u.elementFromPoint(v,w),S=k!=null&&k.classList.contains(`${f}-flow__handle`)?k:y,_={handleDomNode:S,isValid:!1,connection:null,toHandle:null};if(S){const T=eS(void 0,S),E=S.getAttribute("data-nodeid"),z=S.getAttribute("data-handleid"),I=S.classList.contains("connectable"),A=S.classList.contains("connectableend");if(!E||!T)return _;const L={source:p?E:l,sourceHandle:p?z:a,target:p?l:E,targetHandle:p?a:z};_.connection=L;const U=I&&A&&(r===ia.Strict?p&&T==="source"||!p&&T==="target":E!==l||z!==a);_.isValid=U&&d(L),_.toHandle=Ww(E,T,z,m,r,!0)}return _}const Rp={onPointerDown:_z,isValid:nS};function Ez({domNode:e,panZoom:n,getTransform:r,getViewScale:l}){const a=vn(e);function s({translateExtent:f,width:h,height:d,zoomStep:m=1,pannable:p=!0,zoomable:y=!0,inversePan:v=!1}){const w=E=>{if(E.sourceEvent.type!=="wheel"||!n)return;const z=r(),I=E.sourceEvent.ctrlKey&&Lo()?10:1,A=-E.sourceEvent.deltaY*(E.sourceEvent.deltaMode===1?.05:E.sourceEvent.deltaMode?1:.002)*m,L=z[2]*Math.pow(2,A*I);n.scaleTo(L)};let k=[0,0];const S=E=>{(E.sourceEvent.type==="mousedown"||E.sourceEvent.type==="touchstart")&&(k=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY])},_=E=>{const z=r();if(E.sourceEvent.type!=="mousemove"&&E.sourceEvent.type!=="touchmove"||!n)return;const I=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY],A=[I[0]-k[0],I[1]-k[1]];k=I;const L=l()*Math.max(z[2],Math.log(z[2]))*(v?-1:1),D={x:z[0]-A[0]*L,y:z[1]-A[1]*L},U=[[0,0],[h,d]];n.setViewportConstrained({x:D.x,y:D.y,zoom:z[2]},U,f)},T=Mw().on("start",S).on("zoom",p?_:null).on("zoom.wheel",y?w:null);a.call(T,{})}function u(){a.on("zoom",null)}return{update:s,destroy:u,pointer:Bn}}const wc=e=>({x:e.x,y:e.y,zoom:e.k}),ih=({x:e,y:n,zoom:r})=>xc.translate(e,n).scale(r),Fl=(e,n)=>e.target.closest(`.${n}`),rS=(e,n)=>n===2&&Array.isArray(e)&&e.includes(2),Nz=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,lh=(e,n=0,r=Nz,l=()=>{})=>{const a=typeof n=="number"&&n>0;return a||l(),a?e.transition().duration(n).ease(r).on("end",l):e},iS=e=>{const n=e.ctrlKey&&Lo()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*n};function kz({zoomPanValues:e,noWheelClassName:n,d3Selection:r,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:s,zoomOnPinch:u,onPanZoomStart:f,onPanZoom:h,onPanZoomEnd:d}){return m=>{if(Fl(m,n))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const p=r.property("__zoom").k||1;if(m.ctrlKey&&u){const S=Bn(m),_=iS(m),T=p*Math.pow(2,_);l.scaleTo(r,T,S,m);return}const y=m.deltaMode===1?20:1;let v=a===$i.Vertical?0:m.deltaX*y,w=a===$i.Horizontal?0:m.deltaY*y;!Lo()&&m.shiftKey&&a!==$i.Vertical&&(v=m.deltaY*y,w=0),l.translateBy(r,-(v/p)*s,-(w/p)*s,{internal:!0});const k=wc(r.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(h==null||h(m,k),e.panScrollTimeout=setTimeout(()=>{d==null||d(m,k),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,f==null||f(m,k))}}function Cz({noWheelClassName:e,preventScrolling:n,d3ZoomHandler:r}){return function(l,a){const s=l.type==="wheel",u=!n&&s&&!l.ctrlKey,f=Fl(l,e);if(l.ctrlKey&&s&&f&&l.preventDefault(),u||f)return null;l.preventDefault(),r.call(this,l,a)}}function Tz({zoomPanValues:e,onDraggingChange:n,onPanZoomStart:r}){return l=>{var s,u,f;if((s=l.sourceEvent)!=null&&s.internal)return;const a=wc(l.transform);e.mouseButton=((u=l.sourceEvent)==null?void 0:u.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=a,((f=l.sourceEvent)==null?void 0:f.type)==="mousedown"&&n(!0),r&&(r==null||r(l.sourceEvent,a))}}function zz({zoomPanValues:e,panOnDrag:n,onPaneContextMenu:r,onTransformChange:l,onPanZoom:a}){return s=>{var u,f;e.usedRightMouseButton=!!(r&&rS(n,e.mouseButton??0)),(u=s.sourceEvent)!=null&&u.sync||l([s.transform.x,s.transform.y,s.transform.k]),a&&!((f=s.sourceEvent)!=null&&f.internal)&&(a==null||a(s.sourceEvent,wc(s.transform)))}}function Az({zoomPanValues:e,panOnDrag:n,panOnScroll:r,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:s}){return u=>{var f;if(!((f=u.sourceEvent)!=null&&f.internal)&&(e.isZoomingOrPanning=!1,s&&rS(n,e.mouseButton??0)&&!e.usedRightMouseButton&&u.sourceEvent&&s(u.sourceEvent),e.usedRightMouseButton=!1,l(!1),a)){const h=wc(u.transform);e.prevViewport=h,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{a==null||a(u.sourceEvent,h)},r?150:0)}}}function Mz({zoomActivationKeyPressed:e,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:l,panOnScroll:a,zoomOnDoubleClick:s,userSelectionActive:u,noWheelClassName:f,noPanClassName:h,lib:d,connectionInProgress:m}){return p=>{var S;const y=e||n,v=r&&p.ctrlKey,w=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(Fl(p,`${d}-flow__node`)||Fl(p,`${d}-flow__edge`)))return!0;if(!l&&!y&&!a&&!s&&!r||u||m&&!w||Fl(p,f)&&w||Fl(p,h)&&(!w||a&&w&&!e)||!r&&p.ctrlKey&&w)return!1;if(!r&&p.type==="touchstart"&&((S=p.touches)==null?void 0:S.length)>1)return p.preventDefault(),!1;if(!y&&!a&&!v&&w||!l&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(l)&&!l.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(l)&&l.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||w)&&k}}function jz({domNode:e,minZoom:n,maxZoom:r,translateExtent:l,viewport:a,onPanZoom:s,onPanZoomStart:u,onPanZoomEnd:f,onDraggingChange:h}){const d={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=e.getBoundingClientRect(),p=Mw().scaleExtent([n,r]).translateExtent(l),y=vn(e).call(p);T({x:a.x,y:a.y,zoom:la(a.zoom,n,r)},[[0,0],[m.width,m.height]],l);const v=y.on("wheel.zoom"),w=y.on("dblclick.zoom");p.wheelDelta(iS);function k(H,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?wo:Vu).transform(lh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function S({noWheelClassName:H,noPanClassName:q,onPaneContextMenu:ee,userSelectionActive:R,panOnScroll:G,panOnDrag:M,panOnScrollMode:$,panOnScrollSpeed:Q,preventScrolling:K,zoomOnPinch:j,zoomOnScroll:B,zoomOnDoubleClick:P,zoomActivationKeyPressed:N,lib:Y,onTransformChange:F,connectionInProgress:J,paneClickDistance:ne,selectionOnDrag:re}){R&&!d.isZoomingOrPanning&&_();const se=G&&!N&&!R;p.clickDistance(re?1/0:!Un(ne)||ne<0?0:ne);const ye=se?kz({zoomPanValues:d,noWheelClassName:H,d3Selection:y,d3Zoom:p,panOnScrollMode:$,panOnScrollSpeed:Q,zoomOnPinch:j,onPanZoomStart:u,onPanZoom:s,onPanZoomEnd:f}):Cz({noWheelClassName:H,preventScrolling:K,d3ZoomHandler:v});if(y.on("wheel.zoom",ye,{passive:!1}),!R){const xe=Tz({zoomPanValues:d,onDraggingChange:h,onPanZoomStart:u});p.on("start",xe);const pe=zz({zoomPanValues:d,panOnDrag:M,onPaneContextMenu:!!ee,onPanZoom:s,onTransformChange:F});p.on("zoom",pe);const _e=Az({zoomPanValues:d,panOnDrag:M,panOnScroll:G,onPaneContextMenu:ee,onPanZoomEnd:f,onDraggingChange:h});p.on("end",_e)}const ve=Mz({zoomActivationKeyPressed:N,panOnDrag:M,zoomOnScroll:B,panOnScroll:G,zoomOnDoubleClick:P,zoomOnPinch:j,userSelectionActive:R,noPanClassName:q,noWheelClassName:H,lib:Y,connectionInProgress:J});p.filter(ve),P?y.on("dblclick.zoom",w):y.on("dblclick.zoom",null)}function _(){p.on("zoom",null)}async function T(H,q,ee){const R=ih(H),G=p==null?void 0:p.constrain()(R,q,ee);return G&&await k(G),new Promise(M=>M(G))}async function E(H,q){const ee=ih(H);return await k(ee,q),new Promise(R=>R(ee))}function z(H){if(y){const q=ih(H),ee=y.property("__zoom");(ee.k!==H.zoom||ee.x!==H.x||ee.y!==H.y)&&(p==null||p.transform(y,q,null,{sync:!0}))}}function I(){const H=y?Aw(y.node()):{x:0,y:0,k:1};return{x:H.x,y:H.y,zoom:H.k}}function A(H,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?wo:Vu).scaleTo(lh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function L(H,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?wo:Vu).scaleBy(lh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),H)}):Promise.resolve(!1)}function D(H){p==null||p.scaleExtent(H)}function U(H){p==null||p.translateExtent(H)}function X(H){const q=!Un(H)||H<0?0:H;p==null||p.clickDistance(q)}return{update:S,destroy:_,setViewport:E,setViewportConstrained:T,getViewport:I,scaleTo:A,scaleBy:L,setScaleExtent:D,setTranslateExtent:U,syncViewport:z,setClickDistance:X}}var sa;(function(e){e.Line="line",e.Handle="handle"})(sa||(sa={}));function Oz({width:e,prevWidth:n,height:r,prevHeight:l,affectsX:a,affectsY:s}){const u=e-n,f=r-l,h=[u>0?1:u<0?-1:0,f>0?1:f<0?-1:0];return u&&a&&(h[0]=h[0]*-1),f&&s&&(h[1]=h[1]*-1),h}function pv(e){const n=e.includes("right")||e.includes("left"),r=e.includes("bottom")||e.includes("top"),l=e.includes("left"),a=e.includes("top");return{isHorizontal:n,isVertical:r,affectsX:l,affectsY:a}}function ui(e,n){return Math.max(0,n-e)}function ci(e,n){return Math.max(0,e-n)}function Ou(e,n,r){return Math.max(0,n-e,e-r)}function mv(e,n){return e?!n:n}function Dz(e,n,r,l,a,s,u,f){let{affectsX:h,affectsY:d}=n;const{isHorizontal:m,isVertical:p}=n,y=m&&p,{xSnapped:v,ySnapped:w}=r,{minWidth:k,maxWidth:S,minHeight:_,maxHeight:T}=l,{x:E,y:z,width:I,height:A,aspectRatio:L}=e;let D=Math.floor(m?v-e.pointerX:0),U=Math.floor(p?w-e.pointerY:0);const X=I+(h?-D:D),H=A+(d?-U:U),q=-s[0]*I,ee=-s[1]*A;let R=Ou(X,k,S),G=Ou(H,_,T);if(u){let Q=0,K=0;h&&D<0?Q=ui(E+D+q,u[0][0]):!h&&D>0&&(Q=ci(E+X+q,u[1][0])),d&&U<0?K=ui(z+U+ee,u[0][1]):!d&&U>0&&(K=ci(z+H+ee,u[1][1])),R=Math.max(R,Q),G=Math.max(G,K)}if(f){let Q=0,K=0;h&&D>0?Q=ci(E+D,f[0][0]):!h&&D<0&&(Q=ui(E+X,f[1][0])),d&&U>0?K=ci(z+U,f[0][1]):!d&&U<0&&(K=ui(z+H,f[1][1])),R=Math.max(R,Q),G=Math.max(G,K)}if(a){if(m){const Q=Ou(X/L,_,T)*L;if(R=Math.max(R,Q),u){let K=0;!h&&!d||h&&!d&&y?K=ci(z+ee+X/L,u[1][1])*L:K=ui(z+ee+(h?D:-D)/L,u[0][1])*L,R=Math.max(R,K)}if(f){let K=0;!h&&!d||h&&!d&&y?K=ui(z+X/L,f[1][1])*L:K=ci(z+(h?D:-D)/L,f[0][1])*L,R=Math.max(R,K)}}if(p){const Q=Ou(H*L,k,S)/L;if(G=Math.max(G,Q),u){let K=0;!h&&!d||d&&!h&&y?K=ci(E+H*L+q,u[1][0])/L:K=ui(E+(d?U:-U)*L+q,u[0][0])/L,G=Math.max(G,K)}if(f){let K=0;!h&&!d||d&&!h&&y?K=ui(E+H*L,f[1][0])/L:K=ci(E+(d?U:-U)*L,f[0][0])/L,G=Math.max(G,K)}}}U=U+(U<0?G:-G),D=D+(D<0?R:-R),a&&(y?X>H*L?U=(mv(h,d)?-D:D)/L:D=(mv(h,d)?-U:U)*L:m?(U=D/L,d=h):(D=U*L,h=d));const M=h?E+D:E,$=d?z+U:z;return{width:I+(h?-D:D),height:A+(d?-U:U),x:s[0]*D*(h?-1:1)+M,y:s[1]*U*(d?-1:1)+$}}const lS={width:0,height:0,x:0,y:0},Rz={...lS,pointerX:0,pointerY:0,aspectRatio:1};function Lz(e){return[[0,0],[e.measured.width,e.measured.height]]}function Hz(e,n,r){const l=n.position.x+e.position.x,a=n.position.y+e.position.y,s=e.measured.width??0,u=e.measured.height??0,f=r[0]*s,h=r[1]*u;return[[l-f,a-h],[l+s-f,a+u-h]]}function Bz({domNode:e,nodeId:n,getStoreItems:r,onChange:l,onEnd:a}){const s=vn(e);let u={controlDirection:pv("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function f({controlPosition:d,boundaries:m,keepAspectRatio:p,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:S}){let _={...lS},T={...Rz};u={boundaries:m,resizeDirection:y,keepAspectRatio:p,controlDirection:pv(d)};let E,z=null,I=[],A,L,D,U=!1;const X=gw().on("start",H=>{const{nodeLookup:q,transform:ee,snapGrid:R,snapToGrid:G,nodeOrigin:M,paneDomNode:$}=r();if(E=q.get(n),!E)return;z=($==null?void 0:$.getBoundingClientRect())??null;const{xSnapped:Q,ySnapped:K}=So(H.sourceEvent,{transform:ee,snapGrid:R,snapToGrid:G,containerBounds:z});_={width:E.measured.width??0,height:E.measured.height??0,x:E.position.x??0,y:E.position.y??0},T={..._,pointerX:Q,pointerY:K,aspectRatio:_.width/_.height},A=void 0,E.parentId&&(E.extent==="parent"||E.expandParent)&&(A=q.get(E.parentId),L=A&&E.extent==="parent"?Lz(A):void 0),I=[],D=void 0;for(const[j,B]of q)if(B.parentId===n&&(I.push({id:j,position:{...B.position},extent:B.extent}),B.extent==="parent"||B.expandParent)){const P=Hz(B,E,B.origin??M);D?D=[[Math.min(P[0][0],D[0][0]),Math.min(P[0][1],D[0][1])],[Math.max(P[1][0],D[1][0]),Math.max(P[1][1],D[1][1])]]:D=P}v==null||v(H,{..._})}).on("drag",H=>{const{transform:q,snapGrid:ee,snapToGrid:R,nodeOrigin:G}=r(),M=So(H.sourceEvent,{transform:q,snapGrid:ee,snapToGrid:R,containerBounds:z}),$=[];if(!E)return;const{x:Q,y:K,width:j,height:B}=_,P={},N=E.origin??G,{width:Y,height:F,x:J,y:ne}=Dz(T,u.controlDirection,M,u.boundaries,u.keepAspectRatio,N,L,D),re=Y!==j,se=F!==B,ye=J!==Q&&re,ve=ne!==K&&se;if(!ye&&!ve&&!re&&!se)return;if((ye||ve||N[0]===1||N[1]===1)&&(P.x=ye?J:_.x,P.y=ve?ne:_.y,_.x=P.x,_.y=P.y,I.length>0)){const Me=J-Q,Ce=ne-K;for(const ut of I)ut.position={x:ut.position.x-Me+N[0]*(Y-j),y:ut.position.y-Ce+N[1]*(F-B)},$.push(ut)}if((re||se)&&(P.width=re&&(!u.resizeDirection||u.resizeDirection==="horizontal")?Y:_.width,P.height=se&&(!u.resizeDirection||u.resizeDirection==="vertical")?F:_.height,_.width=P.width,_.height=P.height),A&&E.expandParent){const Me=N[0]*(P.width??0);P.x&&P.x{U&&(k==null||k(H,{..._}),a==null||a({..._}),U=!1)});s.call(X)}function h(){s.on(".drag",null)}return{update:f,destroy:h}}var ah={exports:{}},oh={},sh={exports:{}},uh={};/** + `})]}),b.jsx("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:DN(a,e)}),b.jsxs("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:["Event ",e,"/",n]}),b.jsx("div",{className:"flex items-center gap-0.5",children:ON.map(p=>b.jsxs("button",{onClick:()=>f(p),className:Be("px-1.5 py-0.5 rounded text-xs font-mono transition-colors",l===p?"bg-[var(--accent)] text-white":"text-[var(--text-muted)] hover:text-[var(--text-secondary)] hover:bg-[var(--surface-hover)]"),children:[p,"×"]},p))})]})}const cc=V.createContext(null);cc.displayName="PanelGroupContext";const yt={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Qp=10,Gi=V.useLayoutEffect,Ax=$2.useId,LN=typeof Ax=="function"?Ax:()=>null;let HN=0;function Zp(e=null){const n=LN(),r=V.useRef(e||n||null);return r.current===null&&(r.current=""+HN++),e??r.current}function Ub({children:e,className:n="",collapsedSize:r,collapsible:l,defaultSize:a,forwardedRef:s,id:u,maxSize:f,minSize:h,onCollapse:d,onExpand:m,onResize:p,order:y,style:v,tagName:w="div",...k}){const _=V.useContext(cc);if(_===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:S,expandPanel:T,getPanelSize:N,getPanelStyle:A,groupId:R,isPanelCollapsed:z,reevaluatePanelConstraints:L,registerPanel:D,resizePanel:I,unregisterPanel:X}=_,B=Zp(u),U=V.useRef({callbacks:{onCollapse:d,onExpand:m,onResize:p},constraints:{collapsedSize:r,collapsible:l,defaultSize:a,maxSize:f,minSize:h},id:B,idIsFromProps:u!==void 0,order:y});V.useRef({didLogMissingDefaultSizeWarning:!1}),Gi(()=>{const{callbacks:H,constraints:G}=U.current,j={...G};U.current.id=B,U.current.idIsFromProps=u!==void 0,U.current.order=y,H.onCollapse=d,H.onExpand=m,H.onResize=p,G.collapsedSize=r,G.collapsible=l,G.defaultSize=a,G.maxSize=f,G.minSize=h,(j.collapsedSize!==G.collapsedSize||j.collapsible!==G.collapsible||j.maxSize!==G.maxSize||j.minSize!==G.minSize)&&L(U.current,j)}),Gi(()=>{const H=U.current;return D(H),()=>{X(H)}},[y,B,D,X]),V.useImperativeHandle(s,()=>({collapse:()=>{S(U.current)},expand:H=>{T(U.current,H)},getId(){return B},getSize(){return N(U.current)},isCollapsed(){return z(U.current)},isExpanded(){return!z(U.current)},resize:H=>{I(U.current,H)}}),[S,T,N,z,B,I]);const ee=A(U.current,a);return V.createElement(w,{...k,children:e,className:n,id:B,style:{...ee,...v},[yt.groupId]:R,[yt.panel]:"",[yt.panelCollapsible]:l||void 0,[yt.panelId]:B,[yt.panelSize]:parseFloat(""+ee.flexGrow).toFixed(1)})}const yo=V.forwardRef((e,n)=>V.createElement(Ub,{...e,forwardedRef:n}));Ub.displayName="Panel";yo.displayName="forwardRef(Panel)";let bp=null,Uu=-1,hi=null;function BN(e,n){if(n){const r=(n&$b)!==0,l=(n&Pb)!==0,a=(n&Xb)!==0,s=(n&Fb)!==0;if(r)return a?"se-resize":s?"ne-resize":"e-resize";if(l)return a?"sw-resize":s?"nw-resize":"w-resize";if(a)return"s-resize";if(s)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function qN(){hi!==null&&(document.head.removeChild(hi),bp=null,hi=null,Uu=-1)}function Fd(e,n){var r,l;const a=BN(e,n);if(bp!==a){if(bp=a,hi===null&&(hi=document.createElement("style"),document.head.appendChild(hi)),Uu>=0){var s;(s=hi.sheet)===null||s===void 0||s.removeRule(Uu)}Uu=(r=(l=hi.sheet)===null||l===void 0?void 0:l.insertRule(`*{cursor: ${a} !important;}`))!==null&&r!==void 0?r:-1}}function Ib(e){return e.type==="keydown"}function Vb(e){return e.type.startsWith("pointer")}function Gb(e){return e.type.startsWith("mouse")}function fc(e){if(Vb(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(Gb(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function UN(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function IN(e,n,r){return e.xn.x&&e.yn.y}function VN(e,n){if(e===n)throw new Error("Cannot compare node with itself");const r={a:Ox(e),b:Ox(n)};let l;for(;r.a.at(-1)===r.b.at(-1);)e=r.a.pop(),n=r.b.pop(),l=e;De(l,"Stacking order can only be calculated for elements with a common ancestor");const a={a:Mx(jx(r.a)),b:Mx(jx(r.b))};if(a.a===a.b){const s=l.childNodes,u={a:r.a.at(-1),b:r.b.at(-1)};let f=s.length;for(;f--;){const h=s[f];if(h===u.a)return 1;if(h===u.b)return-1}}return Math.sign(a.a-a.b)}const GN=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function YN(e){var n;const r=getComputedStyle((n=Yb(e))!==null&&n!==void 0?n:e).display;return r==="flex"||r==="inline-flex"}function $N(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||YN(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||GN.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function jx(e){let n=e.length;for(;n--;){const r=e[n];if(De(r,"Missing node"),$N(r))return r}return null}function Mx(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Ox(e){const n=[];for(;e;)n.push(e),e=Yb(e);return n}function Yb(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const $b=1,Pb=2,Xb=4,Fb=8,PN=UN()==="coarse";let Gn=[],Kl=!1,Ui=new Map,dc=new Map;const To=new Set;function XN(e,n,r,l,a){var s;const{ownerDocument:u}=n,f={direction:r,element:n,hitAreaMargins:l,setResizeHandlerState:a},h=(s=Ui.get(u))!==null&&s!==void 0?s:0;return Ui.set(u,h+1),To.add(f),Fu(),function(){var m;dc.delete(e),To.delete(f);const p=(m=Ui.get(u))!==null&&m!==void 0?m:1;if(Ui.set(u,p-1),Fu(),p===1&&Ui.delete(u),Gn.includes(f)){const y=Gn.indexOf(f);y>=0&&Gn.splice(y,1),Jp(),a("up",!0,null)}}}function FN(e){const{target:n}=e,{x:r,y:l}=fc(e);Kl=!0,Kp({target:n,x:r,y:l}),Fu(),Gn.length>0&&(Qu("down",e),e.preventDefault(),Qb(n)||e.stopImmediatePropagation())}function Qd(e){const{x:n,y:r}=fc(e);if(Kl&&e.buttons===0&&(Kl=!1,Qu("up",e)),!Kl){const{target:l}=e;Kp({target:l,x:n,y:r})}Qu("move",e),Jp(),Gn.length>0&&e.preventDefault()}function Zd(e){const{target:n}=e,{x:r,y:l}=fc(e);dc.clear(),Kl=!1,Gn.length>0&&(e.preventDefault(),Qb(n)||e.stopImmediatePropagation()),Qu("up",e),Kp({target:n,x:r,y:l}),Jp(),Fu()}function Qb(e){let n=e;for(;n;){if(n.hasAttribute(yt.resizeHandle))return!0;n=n.parentElement}return!1}function Kp({target:e,x:n,y:r}){Gn.splice(0);let l=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(l=e),To.forEach(a=>{const{element:s,hitAreaMargins:u}=a,f=s.getBoundingClientRect(),{bottom:h,left:d,right:m,top:p}=f,y=PN?u.coarse:u.fine;if(n>=d-y&&n<=m+y&&r>=p-y&&r<=h+y){if(l!==null&&document.contains(l)&&s!==l&&!s.contains(l)&&!l.contains(s)&&VN(l,s)>0){let w=l,k=!1;for(;w&&!w.contains(s);){if(IN(w.getBoundingClientRect(),f)){k=!0;break}w=w.parentElement}if(k)return}Gn.push(a)}})}function Kd(e,n){dc.set(e,n)}function Jp(){let e=!1,n=!1;Gn.forEach(l=>{const{direction:a}=l;a==="horizontal"?e=!0:n=!0});let r=0;dc.forEach(l=>{r|=l}),e&&n?Fd("intersection",r):e?Fd("horizontal",r):n?Fd("vertical",r):qN()}let Jd=new AbortController;function Fu(){Jd.abort(),Jd=new AbortController;const e={capture:!0,signal:Jd.signal};To.size&&(Kl?(Gn.length>0&&Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("contextmenu",Zd,e),l.addEventListener("pointerleave",Qd,e),l.addEventListener("pointermove",Qd,e))}),window.addEventListener("pointerup",Zd,e),window.addEventListener("pointercancel",Zd,e)):Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("pointerdown",FN,e),l.addEventListener("pointermove",Qd,e))}))}function Qu(e,n){To.forEach(r=>{const{setResizeHandlerState:l}=r,a=Gn.includes(r);l(e,a,n)})}function QN(){const[e,n]=V.useState(0);return V.useCallback(()=>n(r=>r+1),[])}function De(e,n){if(!e)throw console.error(n),Error(n)}function Pi(e,n,r=Qp){return e.toFixed(r)===n.toFixed(r)?0:e>n?1:-1}function Cr(e,n,r=Qp){return Pi(e,n,r)===0}function xn(e,n,r){return Pi(e,n,r)===0}function ZN(e,n,r){if(e.length!==n.length)return!1;for(let l=0;l0&&(e=e<0?0-S:S)}}}{const p=e<0?f:h,y=r[p];De(y,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:w,minSize:k=0}=y;if(w){const _=n[p];if(De(_!=null,`Previous layout not found for panel index ${p}`),xn(_,k)){const S=_-v;Pi(S,Math.abs(e))>0&&(e=e<0?0-S:S)}}}}{const p=e<0?1:-1;let y=e<0?h:f,v=0;for(;;){const k=n[y];De(k!=null,`Previous layout not found for panel index ${y}`);const S=Xl({panelConstraints:r,panelIndex:y,size:100})-k;if(v+=S,y+=p,y<0||y>=r.length)break}const w=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-w:w}{let y=e<0?f:h;for(;y>=0&&y=0))break;e<0?y--:y++}}if(ZN(a,u))return a;{const p=e<0?h:f,y=n[p];De(y!=null,`Previous layout not found for panel index ${p}`);const v=y+d,w=Xl({panelConstraints:r,panelIndex:p,size:v});if(u[p]=w,!xn(w,v)){let k=v-w,S=e<0?h:f;for(;S>=0&&S0?S--:S++}}}const m=u.reduce((p,y)=>y+p,0);return xn(m,100)?u:a}function KN({layout:e,panelsArray:n,pivotIndices:r}){let l=0,a=100,s=0,u=0;const f=r[0];De(f!=null,"No pivot index found"),n.forEach((p,y)=>{const{constraints:v}=p,{maxSize:w=100,minSize:k=0}=v;y===f?(l=k,a=w):(s+=k,u+=w)});const h=Math.min(a,100-s),d=Math.max(l,100-u),m=e[f];return{valueMax:h,valueMin:d,valueNow:m}}function zo(e,n=document){return Array.from(n.querySelectorAll(`[${yt.resizeHandleId}][data-panel-group-id="${e}"]`))}function Zb(e,n,r=document){const a=zo(e,r).findIndex(s=>s.getAttribute(yt.resizeHandleId)===n);return a??null}function Kb(e,n,r){const l=Zb(e,n,r);return l!=null?[l,l+1]:[-1,-1]}function Jb(e,n=document){var r;if(n instanceof HTMLElement&&(n==null||(r=n.dataset)===null||r===void 0?void 0:r.panelGroupId)==e)return n;const l=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return l||null}function hc(e,n=document){const r=n.querySelector(`[${yt.resizeHandleId}="${e}"]`);return r||null}function JN(e,n,r,l=document){var a,s,u,f;const h=hc(n,l),d=zo(e,l),m=h?d.indexOf(h):-1,p=(a=(s=r[m])===null||s===void 0?void 0:s.id)!==null&&a!==void 0?a:null,y=(u=(f=r[m+1])===null||f===void 0?void 0:f.id)!==null&&u!==void 0?u:null;return[p,y]}function WN({committedValuesRef:e,eagerValuesRef:n,groupId:r,layout:l,panelDataArray:a,panelGroupElement:s,setLayout:u}){V.useRef({didWarnAboutMissingResizeHandle:!1}),Gi(()=>{if(!s)return;const f=zo(r,s);for(let h=0;h{f.forEach((h,d)=>{h.removeAttribute("aria-controls"),h.removeAttribute("aria-valuemax"),h.removeAttribute("aria-valuemin"),h.removeAttribute("aria-valuenow")})}},[r,l,a,s]),V.useEffect(()=>{if(!s)return;const f=n.current;De(f,"Eager values not found");const{panelDataArray:h}=f,d=Jb(r,s);De(d!=null,`No group found for id "${r}"`);const m=zo(r,s);De(m,`No resize handles found for group id "${r}"`);const p=m.map(y=>{const v=y.getAttribute(yt.resizeHandleId);De(v,"Resize handle element has no handle id attribute");const[w,k]=JN(r,v,h,s);if(w==null||k==null)return()=>{};const _=S=>{if(!S.defaultPrevented)switch(S.key){case"Enter":{S.preventDefault();const T=h.findIndex(N=>N.id===w);if(T>=0){const N=h[T];De(N,`No panel data found for index ${T}`);const A=l[T],{collapsedSize:R=0,collapsible:z,minSize:L=0}=N.constraints;if(A!=null&&z){const D=xo({delta:xn(A,R)?L-R:R-A,initialLayout:l,panelConstraints:h.map(I=>I.constraints),pivotIndices:Kb(r,v,s),prevLayout:l,trigger:"keyboard"});l!==D&&u(D)}}break}}};return y.addEventListener("keydown",_),()=>{y.removeEventListener("keydown",_)}});return()=>{p.forEach(y=>y())}},[s,e,n,r,l,a,u])}function Dx(e,n){if(e.length!==n.length)return!1;for(let r=0;rs.constraints);let l=0,a=100;for(let s=0;s{const s=e[a];De(s,`Panel data not found for index ${a}`);const{callbacks:u,constraints:f,id:h}=s,{collapsedSize:d=0,collapsible:m}=f,p=r[h];if(p==null||l!==p){r[h]=l;const{onCollapse:y,onExpand:v,onResize:w}=u;w&&w(l,p),m&&(y||v)&&(v&&(p==null||Cr(p,d))&&!Cr(l,d)&&v(),y&&(p==null||!Cr(p,d))&&Cr(l,d)&&y())}})}function ku(e,n){if(e.length!==n.length)return!1;for(let r=0;r{r!==null&&clearTimeout(r),r=setTimeout(()=>{e(...a)},n)}}function Rx(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,r)=>{localStorage.setItem(n,r)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function ew(e){return`react-resizable-panels:${e}`}function tw(e){return e.map(n=>{const{constraints:r,id:l,idIsFromProps:a,order:s}=n;return a?l:s?`${s}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((n,r)=>n.localeCompare(r)).join(",")}function nw(e,n){try{const r=ew(e),l=n.getItem(r);if(l){const a=JSON.parse(l);if(typeof a=="object"&&a!=null)return a}}catch{}return null}function lk(e,n,r){var l,a;const s=(l=nw(e,r))!==null&&l!==void 0?l:{},u=tw(n);return(a=s[u])!==null&&a!==void 0?a:null}function ak(e,n,r,l,a){var s;const u=ew(e),f=tw(n),h=(s=nw(e,a))!==null&&s!==void 0?s:{};h[f]={expandToSizes:Object.fromEntries(r.entries()),layout:l};try{a.setItem(u,JSON.stringify(h))}catch(d){console.error(d)}}function Lx({layout:e,panelConstraints:n}){const r=[...e],l=r.reduce((s,u)=>s+u,0);if(r.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${r.map(s=>`${s}%`).join(", ")}`);if(!xn(l,100)&&r.length>0)for(let s=0;s(Rx(vo),vo.getItem(e)),setItem:(e,n)=>{Rx(vo),vo.setItem(e,n)}},Hx={};function rw({autoSaveId:e=null,children:n,className:r="",direction:l,forwardedRef:a,id:s=null,onLayout:u=null,keyboardResizeBy:f=null,storage:h=vo,style:d,tagName:m="div",...p}){const y=Zp(s),v=V.useRef(null),[w,k]=V.useState(null),[_,S]=V.useState([]),T=QN(),N=V.useRef({}),A=V.useRef(new Map),R=V.useRef(0),z=V.useRef({autoSaveId:e,direction:l,dragState:w,id:y,keyboardResizeBy:f,onLayout:u,storage:h}),L=V.useRef({layout:_,panelDataArray:[],panelDataArrayChanged:!1});V.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),V.useImperativeHandle(a,()=>({getId:()=>z.current.id,getLayout:()=>{const{layout:E}=L.current;return E},setLayout:E=>{const{onLayout:Y}=z.current,{layout:F,panelDataArray:J}=L.current,ne=Lx({layout:E,panelConstraints:J.map(re=>re.constraints)});Dx(F,ne)||(S(ne),L.current.layout=ne,Y&&Y(ne),Il(J,ne,N.current))}}),[]),Gi(()=>{z.current.autoSaveId=e,z.current.direction=l,z.current.dragState=w,z.current.id=y,z.current.onLayout=u,z.current.storage=h}),WN({committedValuesRef:z,eagerValuesRef:L,groupId:y,layout:_,panelDataArray:L.current.panelDataArray,setLayout:S,panelGroupElement:v.current}),V.useEffect(()=>{const{panelDataArray:E}=L.current;if(e){if(_.length===0||_.length!==E.length)return;let Y=Hx[e];Y==null&&(Y=ik(ak,ok),Hx[e]=Y);const F=[...E],J=new Map(A.current);Y(e,F,J,_,h)}},[e,_,h]),V.useEffect(()=>{});const D=V.useCallback(E=>{const{onLayout:Y}=z.current,{layout:F,panelDataArray:J}=L.current;if(E.constraints.collapsible){const ne=J.map(ve=>ve.constraints),{collapsedSize:re=0,panelSize:se,pivotIndices:ye}=Bi(J,E,F);if(De(se!=null,`Panel size not found for panel "${E.id}"`),!Cr(se,re)){A.current.set(E.id,se);const xe=$l(J,E)===J.length-1?se-re:re-se,pe=xo({delta:xe,initialLayout:F,panelConstraints:ne,pivotIndices:ye,prevLayout:F,trigger:"imperative-api"});ku(F,pe)||(S(pe),L.current.layout=pe,Y&&Y(pe),Il(J,pe,N.current))}}},[]),I=V.useCallback((E,Y)=>{const{onLayout:F}=z.current,{layout:J,panelDataArray:ne}=L.current;if(E.constraints.collapsible){const re=ne.map(_e=>_e.constraints),{collapsedSize:se=0,panelSize:ye=0,minSize:ve=0,pivotIndices:xe}=Bi(ne,E,J),pe=Y??ve;if(Cr(ye,se)){const _e=A.current.get(E.id),je=_e!=null&&_e>=pe?_e:pe,ut=$l(ne,E)===ne.length-1?ye-je:je-ye,tt=xo({delta:ut,initialLayout:J,panelConstraints:re,pivotIndices:xe,prevLayout:J,trigger:"imperative-api"});ku(J,tt)||(S(tt),L.current.layout=tt,F&&F(tt),Il(ne,tt,N.current))}}},[]),X=V.useCallback(E=>{const{layout:Y,panelDataArray:F}=L.current,{panelSize:J}=Bi(F,E,Y);return De(J!=null,`Panel size not found for panel "${E.id}"`),J},[]),B=V.useCallback((E,Y)=>{const{panelDataArray:F}=L.current,J=$l(F,E);return rk({defaultSize:Y,dragState:w,layout:_,panelData:F,panelIndex:J})},[w,_]),U=V.useCallback(E=>{const{layout:Y,panelDataArray:F}=L.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,E,Y);return De(re!=null,`Panel size not found for panel "${E.id}"`),ne===!0&&Cr(re,J)},[]),ee=V.useCallback(E=>{const{layout:Y,panelDataArray:F}=L.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,E,Y);return De(re!=null,`Panel size not found for panel "${E.id}"`),!ne||Pi(re,J)>0},[]),H=V.useCallback(E=>{const{panelDataArray:Y}=L.current;Y.push(E),Y.sort((F,J)=>{const ne=F.order,re=J.order;return ne==null&&re==null?0:ne==null?-1:re==null?1:ne-re}),L.current.panelDataArrayChanged=!0,T()},[T]);Gi(()=>{if(L.current.panelDataArrayChanged){L.current.panelDataArrayChanged=!1;const{autoSaveId:E,onLayout:Y,storage:F}=z.current,{layout:J,panelDataArray:ne}=L.current;let re=null;if(E){const ye=lk(E,ne,F);ye&&(A.current=new Map(Object.entries(ye.expandToSizes)),re=ye.layout)}re==null&&(re=nk({panelDataArray:ne}));const se=Lx({layout:re,panelConstraints:ne.map(ye=>ye.constraints)});Dx(J,se)||(S(se),L.current.layout=se,Y&&Y(se),Il(ne,se,N.current))}}),Gi(()=>{const E=L.current;return()=>{E.layout=[]}},[]);const G=V.useCallback(E=>{let Y=!1;const F=v.current;return F&&window.getComputedStyle(F,null).getPropertyValue("direction")==="rtl"&&(Y=!0),function(ne){ne.preventDefault();const re=v.current;if(!re)return()=>null;const{direction:se,dragState:ye,id:ve,keyboardResizeBy:xe,onLayout:pe}=z.current,{layout:_e,panelDataArray:je}=L.current,{initialLayout:Ce}=ye??{},ut=Kb(ve,E,re);let tt=tk(ne,E,se,ye,xe,re);const At=se==="horizontal";At&&Y&&(tt=-tt);const It=je.map(Mn=>Mn.constraints),Rt=xo({delta:tt,initialLayout:Ce??_e,panelConstraints:It,pivotIndices:ut,prevLayout:_e,trigger:Ib(ne)?"keyboard":"mouse-or-touch"}),Sn=!ku(_e,Rt);(Vb(ne)||Gb(ne))&&R.current!=tt&&(R.current=tt,!Sn&&tt!==0?At?Kd(E,tt<0?$b:Pb):Kd(E,tt<0?Xb:Fb):Kd(E,0)),Sn&&(S(Rt),L.current.layout=Rt,pe&&pe(Rt),Il(je,Rt,N.current))}},[]),j=V.useCallback((E,Y)=>{const{onLayout:F}=z.current,{layout:J,panelDataArray:ne}=L.current,re=ne.map(_e=>_e.constraints),{panelSize:se,pivotIndices:ye}=Bi(ne,E,J);De(se!=null,`Panel size not found for panel "${E.id}"`);const xe=$l(ne,E)===ne.length-1?se-Y:Y-se,pe=xo({delta:xe,initialLayout:J,panelConstraints:re,pivotIndices:ye,prevLayout:J,trigger:"imperative-api"});ku(J,pe)||(S(pe),L.current.layout=pe,F&&F(pe),Il(ne,pe,N.current))},[]),$=V.useCallback((E,Y)=>{const{layout:F,panelDataArray:J}=L.current,{collapsedSize:ne=0,collapsible:re}=Y,{collapsedSize:se=0,collapsible:ye,maxSize:ve=100,minSize:xe=0}=E.constraints,{panelSize:pe}=Bi(J,E,F);pe!=null&&(re&&ye&&Cr(pe,ne)?Cr(ne,se)||j(E,se):peve&&j(E,ve))},[j]),Q=V.useCallback((E,Y)=>{const{direction:F}=z.current,{layout:J}=L.current;if(!v.current)return;const ne=hc(E,v.current);De(ne,`Drag handle element not found for id "${E}"`);const re=Wb(F,Y);k({dragHandleId:E,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:re,initialLayout:J})},[]),K=V.useCallback(()=>{k(null)},[]),M=V.useCallback(E=>{const{panelDataArray:Y}=L.current,F=$l(Y,E);F>=0&&(Y.splice(F,1),delete N.current[E.id],L.current.panelDataArrayChanged=!0,T())},[T]),q=V.useMemo(()=>({collapsePanel:D,direction:l,dragState:w,expandPanel:I,getPanelSize:X,getPanelStyle:B,groupId:y,isPanelCollapsed:U,isPanelExpanded:ee,reevaluatePanelConstraints:$,registerPanel:H,registerResizeHandle:G,resizePanel:j,startDragging:Q,stopDragging:K,unregisterPanel:M,panelGroupElement:v.current}),[D,w,l,I,X,B,y,U,ee,$,H,G,j,Q,K,M]),P={display:"flex",flexDirection:l==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return V.createElement(cc.Provider,{value:q},V.createElement(m,{...p,children:n,className:r,id:s,ref:v,style:{...P,...d},[yt.group]:"",[yt.groupDirection]:l,[yt.groupId]:y}))}const wp=V.forwardRef((e,n)=>V.createElement(rw,{...e,forwardedRef:n}));rw.displayName="PanelGroup";wp.displayName="forwardRef(PanelGroup)";function $l(e,n){return e.findIndex(r=>r===n||r.id===n.id)}function Bi(e,n,r){const l=$l(e,n),s=l===e.length-1?[l-1,l]:[l,l+1],u=r[l];return{...n.constraints,panelSize:u,pivotIndices:s}}function sk({disabled:e,handleId:n,resizeHandler:r,panelGroupElement:l}){V.useEffect(()=>{if(e||r==null||l==null)return;const a=hc(n,l);if(a==null)return;const s=u=>{if(!u.defaultPrevented)switch(u.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{u.preventDefault(),r(u);break}case"F6":{u.preventDefault();const f=a.getAttribute(yt.groupId);De(f,`No group element found for id "${f}"`);const h=zo(f,l),d=Zb(f,n,l);De(d!==null,`No resize element found for id "${n}"`);const m=u.shiftKey?d>0?d-1:h.length-1:d+1{a.removeEventListener("keydown",s)}},[l,e,n,r])}function Sp({children:e=null,className:n="",disabled:r=!1,hitAreaMargins:l,id:a,onBlur:s,onClick:u,onDragging:f,onFocus:h,onPointerDown:d,onPointerUp:m,style:p={},tabIndex:y=0,tagName:v="div",...w}){var k,_;const S=V.useRef(null),T=V.useRef({onClick:u,onDragging:f,onPointerDown:d,onPointerUp:m});V.useEffect(()=>{T.current.onClick=u,T.current.onDragging=f,T.current.onPointerDown=d,T.current.onPointerUp=m});const N=V.useContext(cc);if(N===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:A,groupId:R,registerResizeHandle:z,startDragging:L,stopDragging:D,panelGroupElement:I}=N,X=Zp(a),[B,U]=V.useState("inactive"),[ee,H]=V.useState(!1),[G,j]=V.useState(null),$=V.useRef({state:B});Gi(()=>{$.current.state=B}),V.useEffect(()=>{if(r)j(null);else{const q=z(X);j(()=>q)}},[r,X,z]);const Q=(k=l==null?void 0:l.coarse)!==null&&k!==void 0?k:15,K=(_=l==null?void 0:l.fine)!==null&&_!==void 0?_:5;V.useEffect(()=>{if(r||G==null)return;const q=S.current;De(q,"Element ref not attached");let P=!1;return XN(X,q,A,{coarse:Q,fine:K},(Y,F,J)=>{if(!F){U("inactive");return}switch(Y){case"down":{U("drag"),P=!1,De(J,'Expected event to be defined for "down" action'),L(X,J);const{onDragging:ne,onPointerDown:re}=T.current;ne==null||ne(!0),re==null||re();break}case"move":{const{state:ne}=$.current;P=!0,ne!=="drag"&&U("hover"),De(J,'Expected event to be defined for "move" action'),G(J);break}case"up":{U("hover"),D();const{onClick:ne,onDragging:re,onPointerUp:se}=T.current;re==null||re(!1),se==null||se(),P||ne==null||ne();break}}})},[Q,A,r,K,z,X,G,L,D]),sk({disabled:r,handleId:X,resizeHandler:G,panelGroupElement:I});const M={touchAction:"none",userSelect:"none"};return V.createElement(v,{...w,children:e,className:n,id:a,onBlur:()=>{H(!1),s==null||s()},onFocus:()=>{H(!0),h==null||h()},ref:S,role:"separator",style:{...M,...p},tabIndex:y,[yt.groupDirection]:A,[yt.groupId]:R,[yt.resizeHandle]:"",[yt.resizeHandleActive]:B==="drag"?"pointer":ee?"keyboard":void 0,[yt.resizeHandleEnabled]:!r,[yt.resizeHandleId]:X,[yt.resizeHandleState]:B})}Sp.displayName="PanelResizeHandle";function zt(e){if(typeof e=="string"||typeof e=="number")return""+e;let n="";if(Array.isArray(e))for(let r=0,l;r{}};function pc(){for(var e=0,n=arguments.length,r={},l;e=0&&(l=r.slice(a+1),r=r.slice(0,a)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:l}})}Iu.prototype=pc.prototype={constructor:Iu,on:function(e,n){var r=this._,l=ck(e+"",r),a,s=-1,u=l.length;if(arguments.length<2){for(;++s0)for(var r=new Array(a),l=0,a,s;l=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),qx.hasOwnProperty(n)?{space:qx[n],local:e}:e}function dk(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===_p&&n.documentElement.namespaceURI===_p?n.createElement(e):n.createElementNS(r,e)}}function hk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function iw(e){var n=mc(e);return(n.local?hk:dk)(n)}function pk(){}function Wp(e){return e==null?pk:function(){return this.querySelector(e)}}function mk(e){typeof e!="function"&&(e=Wp(e));for(var n=this._groups,r=n.length,l=new Array(r),a=0;a=N&&(N=T+1);!(R=_[N])&&++N=0;)(u=l[a])&&(s&&u.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(u,s),s=u);return this}function Uk(e){e||(e=Ik);function n(p,y){return p&&y?e(p.__data__,y.__data__):!p-!y}for(var r=this._groups,l=r.length,a=new Array(l),s=0;sn?1:e>=n?0:NaN}function Vk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Gk(){return Array.from(this)}function Yk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?tC:typeof n=="function"?rC:nC)(e,n,r??"")):ra(this.node(),e)}function ra(e,n){return e.style.getPropertyValue(n)||uw(e).getComputedStyle(e,null).getPropertyValue(n)}function lC(e){return function(){delete this[e]}}function aC(e,n){return function(){this[e]=n}}function oC(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function sC(e,n){return arguments.length>1?this.each((n==null?lC:typeof n=="function"?oC:aC)(e,n)):this.node()[e]}function cw(e){return e.trim().split(/^|\s+/)}function em(e){return e.classList||new fw(e)}function fw(e){this._node=e,this._names=cw(e.getAttribute("class")||"")}fw.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function dw(e,n){for(var r=em(e),l=-1,a=n.length;++l=0&&(r=n.slice(l+1),n=n.slice(0,l)),{type:n,name:r}})}function LC(e){return function(){var n=this.__on;if(n){for(var r=0,l=-1,a=n.length,s;r()=>e;function Ep(e,{sourceEvent:n,subject:r,target:l,identifier:a,active:s,x:u,y:f,dx:h,dy:d,dispatch:m}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:h,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:m}})}Ep.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function PC(e){return!e.ctrlKey&&!e.button}function XC(){return this.parentNode}function FC(e,n){return n??{x:e.x,y:e.y}}function QC(){return navigator.maxTouchPoints||"ontouchstart"in this}function xw(){var e=PC,n=XC,r=FC,l=QC,a={},s=pc("start","drag","end"),u=0,f,h,d,m,p=0;function y(A){A.on("mousedown.drag",v).filter(l).on("touchstart.drag",_).on("touchmove.drag",S,$C).on("touchend.drag touchcancel.drag",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(A,R){if(!(m||!e.call(this,A,R))){var z=N(this,n.call(this,A,R),A,R,"mouse");z&&(vn(A.view).on("mousemove.drag",w,Ao).on("mouseup.drag",k,Ao),gw(A.view),Wd(A),d=!1,f=A.clientX,h=A.clientY,z("start",A))}}function w(A){if(Jl(A),!d){var R=A.clientX-f,z=A.clientY-h;d=R*R+z*z>p}a.mouse("drag",A)}function k(A){vn(A.view).on("mousemove.drag mouseup.drag",null),yw(A.view,d),Jl(A),a.mouse("end",A)}function _(A,R){if(e.call(this,A,R)){var z=A.changedTouches,L=n.call(this,A,R),D=z.length,I,X;for(I=0;I>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?Tu(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?Tu(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=KC.exec(e))?new an(n[1],n[2],n[3],1):(n=JC.exec(e))?new an(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=WC.exec(e))?Tu(n[1],n[2],n[3],n[4]):(n=e3.exec(e))?Tu(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=t3.exec(e))?Px(n[1],n[2]/100,n[3]/100,1):(n=n3.exec(e))?Px(n[1],n[2]/100,n[3]/100,n[4]):Ux.hasOwnProperty(e)?Gx(Ux[e]):e==="transparent"?new an(NaN,NaN,NaN,0):null}function Gx(e){return new an(e>>16&255,e>>8&255,e&255,1)}function Tu(e,n,r,l){return l<=0&&(e=n=r=NaN),new an(e,n,r,l)}function l3(e){return e instanceof Go||(e=Xi(e)),e?(e=e.rgb(),new an(e.r,e.g,e.b,e.opacity)):new an}function Np(e,n,r,l){return arguments.length===1?l3(e):new an(e,n,r,l??1)}function an(e,n,r,l){this.r=+e,this.g=+n,this.b=+r,this.opacity=+l}tm(an,Np,vw(Go,{brighter(e){return e=e==null?Ku:Math.pow(Ku,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?jo:Math.pow(jo,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new an(Yi(this.r),Yi(this.g),Yi(this.b),Ju(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yx,formatHex:Yx,formatHex8:a3,formatRgb:$x,toString:$x}));function Yx(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}`}function a3(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}${Ii((isNaN(this.opacity)?1:this.opacity)*255)}`}function $x(){const e=Ju(this.opacity);return`${e===1?"rgb(":"rgba("}${Yi(this.r)}, ${Yi(this.g)}, ${Yi(this.b)}${e===1?")":`, ${e})`}`}function Ju(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Yi(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ii(e){return e=Yi(e),(e<16?"0":"")+e.toString(16)}function Px(e,n,r,l){return l<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new qn(e,n,r,l)}function bw(e){if(e instanceof qn)return new qn(e.h,e.s,e.l,e.opacity);if(e instanceof Go||(e=Xi(e)),!e)return new qn;if(e instanceof qn)return e;e=e.rgb();var n=e.r/255,r=e.g/255,l=e.b/255,a=Math.min(n,r,l),s=Math.max(n,r,l),u=NaN,f=s-a,h=(s+a)/2;return f?(n===s?u=(r-l)/f+(r0&&h<1?0:u,new qn(u,f,h,e.opacity)}function o3(e,n,r,l){return arguments.length===1?bw(e):new qn(e,n,r,l??1)}function qn(e,n,r,l){this.h=+e,this.s=+n,this.l=+r,this.opacity=+l}tm(qn,o3,vw(Go,{brighter(e){return e=e==null?Ku:Math.pow(Ku,e),new qn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?jo:Math.pow(jo,e),new qn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,l=r+(r<.5?r:1-r)*n,a=2*r-l;return new an(eh(e>=240?e-240:e+120,a,l),eh(e,a,l),eh(e<120?e+240:e-120,a,l),this.opacity)},clamp(){return new qn(Xx(this.h),zu(this.s),zu(this.l),Ju(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Ju(this.opacity);return`${e===1?"hsl(":"hsla("}${Xx(this.h)}, ${zu(this.s)*100}%, ${zu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Xx(e){return e=(e||0)%360,e<0?e+360:e}function zu(e){return Math.max(0,Math.min(1,e||0))}function eh(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const nm=e=>()=>e;function s3(e,n){return function(r){return e+r*n}}function u3(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(l){return Math.pow(e+l*n,r)}}function c3(e){return(e=+e)==1?ww:function(n,r){return r-n?u3(n,r,e):nm(isNaN(n)?r:n)}}function ww(e,n){var r=n-e;return r?s3(e,r):nm(isNaN(e)?n:e)}const Wu=(function e(n){var r=c3(n);function l(a,s){var u=r((a=Np(a)).r,(s=Np(s)).r),f=r(a.g,s.g),h=r(a.b,s.b),d=ww(a.opacity,s.opacity);return function(m){return a.r=u(m),a.g=f(m),a.b=h(m),a.opacity=d(m),a+""}}return l.gamma=e,l})(1);function f3(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,l=n.slice(),a;return function(s){for(a=0;ar&&(s=n.slice(r,s),f[u]?f[u]+=s:f[++u]=s),(l=l[0])===(a=a[0])?f[u]?f[u]+=a:f[++u]=a:(f[++u]=null,h.push({i:u,x:Wn(l,a)})),r=th.lastIndex;return r180?m+=360:m-d>180&&(d+=360),y.push({i:p.push(a(p)+"rotate(",null,l)-2,x:Wn(d,m)})):m&&p.push(a(p)+"rotate("+m+l)}function f(d,m,p,y){d!==m?y.push({i:p.push(a(p)+"skewX(",null,l)-2,x:Wn(d,m)}):m&&p.push(a(p)+"skewX("+m+l)}function h(d,m,p,y,v,w){if(d!==p||m!==y){var k=v.push(a(v)+"scale(",null,",",null,")");w.push({i:k-4,x:Wn(d,p)},{i:k-2,x:Wn(m,y)})}else(p!==1||y!==1)&&v.push(a(v)+"scale("+p+","+y+")")}return function(d,m){var p=[],y=[];return d=e(d),m=e(m),s(d.translateX,d.translateY,m.translateX,m.translateY,p,y),u(d.rotate,m.rotate,p,y),f(d.skewX,m.skewX,p,y),h(d.scaleX,d.scaleY,m.scaleX,m.scaleY,p,y),d=m=null,function(v){for(var w=-1,k=y.length,_;++w=0&&e._call.call(void 0,n),e=e._next;--ia}function Zx(){Fi=(tc=Oo.now())+gc,ia=bo=0;try{k3()}finally{ia=0,T3(),Fi=0}}function C3(){var e=Oo.now(),n=e-tc;n>Nw&&(gc-=n,tc=e)}function T3(){for(var e,n=ec,r,l=1/0;n;)n._call?(l>n._time&&(l=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:ec=r);wo=e,Tp(l)}function Tp(e){if(!ia){bo&&(bo=clearTimeout(bo));var n=e-Fi;n>24?(e<1/0&&(bo=setTimeout(Zx,e-Oo.now()-gc)),co&&(co=clearInterval(co))):(co||(tc=Oo.now(),co=setInterval(C3,Nw)),ia=1,kw(Zx))}}function Kx(e,n,r){var l=new nc;return n=n==null?0:+n,l.restart(a=>{l.stop(),e(a+n)},n,r),l}var z3=pc("start","end","cancel","interrupt"),A3=[],Tw=0,Jx=1,zp=2,Gu=3,Wx=4,Ap=5,Yu=6;function yc(e,n,r,l,a,s){var u=e.__transition;if(!u)e.__transition={};else if(r in u)return;j3(e,r,{name:n,index:l,group:a,on:z3,tween:A3,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Tw})}function im(e,n){var r=$n(e,n);if(r.state>Tw)throw new Error("too late; already scheduled");return r}function ir(e,n){var r=$n(e,n);if(r.state>Gu)throw new Error("too late; already running");return r}function $n(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function j3(e,n,r){var l=e.__transition,a;l[n]=r,r.timer=Cw(s,0,r.time);function s(d){r.state=Jx,r.timer.restart(u,r.delay,r.time),r.delay<=d&&u(d-r.delay)}function u(d){var m,p,y,v;if(r.state!==Jx)return h();for(m in l)if(v=l[m],v.name===r.name){if(v.state===Gu)return Kx(u);v.state===Wx?(v.state=Yu,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete l[m]):+mzp&&l.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function oT(e,n,r){var l,a,s=aT(n)?im:ir;return function(){var u=s(this,e),f=u.on;f!==l&&(a=(l=f).copy()).on(n,r),u.on=a}}function sT(e,n){var r=this._id;return arguments.length<2?$n(this.node(),r).on.on(e):this.each(oT(r,e,n))}function uT(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function cT(){return this.on("end.remove",uT(this._id))}function fT(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Wp(e));for(var l=this._groups,a=l.length,s=new Array(a),u=0;u()=>e;function LT(e,{sourceEvent:n,target:r,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function Tr(e,n,r){this.k=e,this.x=n,this.y=r}Tr.prototype={constructor:Tr,scale:function(e){return e===1?this:new Tr(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new Tr(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var xc=new Tr(1,0,0);Mw.prototype=Tr.prototype;function Mw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return xc;return e.__zoom}function nh(e){e.stopImmediatePropagation()}function fo(e){e.preventDefault(),e.stopImmediatePropagation()}function HT(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function BT(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function ev(){return this.__zoom||xc}function qT(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function UT(){return navigator.maxTouchPoints||"ontouchstart"in this}function IT(e,n,r){var l=e.invertX(n[0][0])-r[0][0],a=e.invertX(n[1][0])-r[1][0],s=e.invertY(n[0][1])-r[0][1],u=e.invertY(n[1][1])-r[1][1];return e.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u))}function Ow(){var e=HT,n=BT,r=IT,l=qT,a=UT,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,h=Vu,d=pc("start","zoom","end"),m,p,y,v=500,w=150,k=0,_=10;function S(H){H.property("__zoom",ev).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",I).on("dblclick.zoom",X).filter(a).on("touchstart.zoom",B).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}S.transform=function(H,G,j,$){var Q=H.selection?H.selection():H;Q.property("__zoom",ev),H!==Q?R(H,G,j,$):Q.interrupt().each(function(){z(this,arguments).event($).start().zoom(null,typeof G=="function"?G.apply(this,arguments):G).end()})},S.scaleBy=function(H,G,j,$){S.scaleTo(H,function(){var Q=this.__zoom.k,K=typeof G=="function"?G.apply(this,arguments):G;return Q*K},j,$)},S.scaleTo=function(H,G,j,$){S.transform(H,function(){var Q=n.apply(this,arguments),K=this.__zoom,M=j==null?A(Q):typeof j=="function"?j.apply(this,arguments):j,q=K.invert(M),P=typeof G=="function"?G.apply(this,arguments):G;return r(N(T(K,P),M,q),Q,u)},j,$)},S.translateBy=function(H,G,j,$){S.transform(H,function(){return r(this.__zoom.translate(typeof G=="function"?G.apply(this,arguments):G,typeof j=="function"?j.apply(this,arguments):j),n.apply(this,arguments),u)},null,$)},S.translateTo=function(H,G,j,$,Q){S.transform(H,function(){var K=n.apply(this,arguments),M=this.__zoom,q=$==null?A(K):typeof $=="function"?$.apply(this,arguments):$;return r(xc.translate(q[0],q[1]).scale(M.k).translate(typeof G=="function"?-G.apply(this,arguments):-G,typeof j=="function"?-j.apply(this,arguments):-j),K,u)},$,Q)};function T(H,G){return G=Math.max(s[0],Math.min(s[1],G)),G===H.k?H:new Tr(G,H.x,H.y)}function N(H,G,j){var $=G[0]-j[0]*H.k,Q=G[1]-j[1]*H.k;return $===H.x&&Q===H.y?H:new Tr(H.k,$,Q)}function A(H){return[(+H[0][0]+ +H[1][0])/2,(+H[0][1]+ +H[1][1])/2]}function R(H,G,j,$){H.on("start.zoom",function(){z(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){z(this,arguments).event($).end()}).tween("zoom",function(){var Q=this,K=arguments,M=z(Q,K).event($),q=n.apply(Q,K),P=j==null?A(q):typeof j=="function"?j.apply(Q,K):j,E=Math.max(q[1][0]-q[0][0],q[1][1]-q[0][1]),Y=Q.__zoom,F=typeof G=="function"?G.apply(Q,K):G,J=h(Y.invert(P).concat(E/Y.k),F.invert(P).concat(E/F.k));return function(ne){if(ne===1)ne=F;else{var re=J(ne),se=E/re[2];ne=new Tr(se,P[0]-re[0]*se,P[1]-re[1]*se)}M.zoom(null,ne)}})}function z(H,G,j){return!j&&H.__zooming||new L(H,G)}function L(H,G){this.that=H,this.args=G,this.active=0,this.sourceEvent=null,this.extent=n.apply(H,G),this.taps=0}L.prototype={event:function(H){return H&&(this.sourceEvent=H),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(H,G){return this.mouse&&H!=="mouse"&&(this.mouse[1]=G.invert(this.mouse[0])),this.touch0&&H!=="touch"&&(this.touch0[1]=G.invert(this.touch0[0])),this.touch1&&H!=="touch"&&(this.touch1[1]=G.invert(this.touch1[0])),this.that.__zoom=G,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(H){var G=vn(this.that).datum();d.call(H,this.that,new LT(H,{sourceEvent:this.sourceEvent,target:S,transform:this.that.__zoom,dispatch:d}),G)}};function D(H,...G){if(!e.apply(this,arguments))return;var j=z(this,G).event(H),$=this.__zoom,Q=Math.max(s[0],Math.min(s[1],$.k*Math.pow(2,l.apply(this,arguments)))),K=Bn(H);if(j.wheel)(j.mouse[0][0]!==K[0]||j.mouse[0][1]!==K[1])&&(j.mouse[1]=$.invert(j.mouse[0]=K)),clearTimeout(j.wheel);else{if($.k===Q)return;j.mouse=[K,$.invert(K)],$u(this),j.start()}fo(H),j.wheel=setTimeout(M,w),j.zoom("mouse",r(N(T($,Q),j.mouse[0],j.mouse[1]),j.extent,u));function M(){j.wheel=null,j.end()}}function I(H,...G){if(y||!e.apply(this,arguments))return;var j=H.currentTarget,$=z(this,G,!0).event(H),Q=vn(H.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",E,!0),K=Bn(H,j),M=H.clientX,q=H.clientY;gw(H.view),nh(H),$.mouse=[K,this.__zoom.invert(K)],$u(this),$.start();function P(Y){if(fo(Y),!$.moved){var F=Y.clientX-M,J=Y.clientY-q;$.moved=F*F+J*J>k}$.event(Y).zoom("mouse",r(N($.that.__zoom,$.mouse[0]=Bn(Y,j),$.mouse[1]),$.extent,u))}function E(Y){Q.on("mousemove.zoom mouseup.zoom",null),yw(Y.view,$.moved),fo(Y),$.event(Y).end()}}function X(H,...G){if(e.apply(this,arguments)){var j=this.__zoom,$=Bn(H.changedTouches?H.changedTouches[0]:H,this),Q=j.invert($),K=j.k*(H.shiftKey?.5:2),M=r(N(T(j,K),$,Q),n.apply(this,G),u);fo(H),f>0?vn(this).transition().duration(f).call(R,M,$,H):vn(this).call(S.transform,M,$,H)}}function B(H,...G){if(e.apply(this,arguments)){var j=H.touches,$=j.length,Q=z(this,G,H.changedTouches.length===$).event(H),K,M,q,P;for(nh(H),M=0;M<$;++M)q=j[M],P=Bn(q,this),P=[P,this.__zoom.invert(P),q.identifier],Q.touch0?!Q.touch1&&Q.touch0[2]!==P[2]&&(Q.touch1=P,Q.taps=0):(Q.touch0=P,K=!0,Q.taps=1+!!m);m&&(m=clearTimeout(m)),K&&(Q.taps<2&&(p=P[0],m=setTimeout(function(){m=null},v)),$u(this),Q.start())}}function U(H,...G){if(this.__zooming){var j=z(this,G).event(H),$=H.changedTouches,Q=$.length,K,M,q,P;for(fo(H),K=0;K"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:n,sourceHandle:r,targetHandle:l})=>`Couldn't create edge for ${e} handle id: "${e==="source"?r:l}", edge id: ${n}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Do=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Dw=["Enter"," ","Escape"],Rw={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:n,y:r})=>`Moved selected node ${e}. New position, x: ${n}, y: ${r}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var la;(function(e){e.Strict="strict",e.Loose="loose"})(la||(la={}));var $i;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})($i||($i={}));var Ro;(function(e){e.Partial="partial",e.Full="full"})(Ro||(Ro={}));const Lw={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var pi;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(pi||(pi={}));var rc;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(rc||(rc={}));var be;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(be||(be={}));const tv={[be.Left]:be.Right,[be.Right]:be.Left,[be.Top]:be.Bottom,[be.Bottom]:be.Top};function Hw(e){return e===null?null:e?"valid":"invalid"}const Bw=e=>"id"in e&&"source"in e&&"target"in e,VT=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),am=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Yo=(e,n=[0,0])=>{const{width:r,height:l}=Mr(e),a=e.origin??n,s=r*a[0],u=l*a[1];return{x:e.position.x-s,y:e.position.y-u}},GT=(e,n={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const r=e.reduce((l,a)=>{const s=typeof a=="string";let u=!n.nodeLookup&&!s?a:void 0;n.nodeLookup&&(u=s?n.nodeLookup.get(a):am(a)?a:n.nodeLookup.get(a.id));const f=u?ic(u,n.nodeOrigin):{x:0,y:0,x2:0,y2:0};return vc(l,f)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return bc(r)},$o=(e,n={})=>{let r={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return e.forEach(a=>{(n.filter===void 0||n.filter(a))&&(r=vc(r,ic(a)),l=!0)}),l?bc(r):{x:0,y:0,width:0,height:0}},om=(e,n,[r,l,a]=[0,0,1],s=!1,u=!1)=>{const f={...Xo(n,[r,l,a]),width:n.width/a,height:n.height/a},h=[];for(const d of e.values()){const{measured:m,selectable:p=!0,hidden:y=!1}=d;if(u&&!p||y)continue;const v=m.width??d.width??d.initialWidth??null,w=m.height??d.height??d.initialHeight??null,k=Lo(f,oa(d)),_=(v??0)*(w??0),S=s&&k>0;(!d.internals.handleBounds||S||k>=_||d.dragging)&&h.push(d)}return h},YT=(e,n)=>{const r=new Set;return e.forEach(l=>{r.add(l.id)}),n.filter(l=>r.has(l.source)||r.has(l.target))};function $T(e,n){const r=new Map,l=n!=null&&n.nodes?new Set(n.nodes.map(a=>a.id)):null;return e.forEach(a=>{a.measured.width&&a.measured.height&&((n==null?void 0:n.includeHiddenNodes)||!a.hidden)&&(!l||l.has(a.id))&&r.set(a.id,a)}),r}async function PT({nodes:e,width:n,height:r,panZoom:l,minZoom:a,maxZoom:s},u){if(e.size===0)return Promise.resolve(!0);const f=$T(e,u),h=$o(f),d=sm(h,n,r,(u==null?void 0:u.minZoom)??a,(u==null?void 0:u.maxZoom)??s,(u==null?void 0:u.padding)??.1);return await l.setViewport(d,{duration:u==null?void 0:u.duration,ease:u==null?void 0:u.ease,interpolate:u==null?void 0:u.interpolate}),Promise.resolve(!0)}function qw({nodeId:e,nextPosition:n,nodeLookup:r,nodeOrigin:l=[0,0],nodeExtent:a,onError:s}){const u=r.get(e),f=u.parentId?r.get(u.parentId):void 0,{x:h,y:d}=f?f.internals.positionAbsolute:{x:0,y:0},m=u.origin??l;let p=u.extent||a;if(u.extent==="parent"&&!u.expandParent)if(!f)s==null||s("005",nr.error005());else{const v=f.measured.width,w=f.measured.height;v&&w&&(p=[[h,d],[h+v,d+w]])}else f&&sa(u.extent)&&(p=[[u.extent[0][0]+h,u.extent[0][1]+d],[u.extent[1][0]+h,u.extent[1][1]+d]]);const y=sa(p)?Qi(n,p,u.measured):n;return(u.measured.width===void 0||u.measured.height===void 0)&&(s==null||s("015",nr.error015())),{position:{x:y.x-h+(u.measured.width??0)*m[0],y:y.y-d+(u.measured.height??0)*m[1]},positionAbsolute:y}}async function XT({nodesToRemove:e=[],edgesToRemove:n=[],nodes:r,edges:l,onBeforeDelete:a}){const s=new Set(e.map(y=>y.id)),u=[];for(const y of r){if(y.deletable===!1)continue;const v=s.has(y.id),w=!v&&y.parentId&&u.find(k=>k.id===y.parentId);(v||w)&&u.push(y)}const f=new Set(n.map(y=>y.id)),h=l.filter(y=>y.deletable!==!1),m=YT(u,h);for(const y of h)f.has(y.id)&&!m.find(w=>w.id===y.id)&&m.push(y);if(!a)return{edges:m,nodes:u};const p=await a({nodes:u,edges:m});return typeof p=="boolean"?p?{edges:m,nodes:u}:{edges:[],nodes:[]}:p}const aa=(e,n=0,r=1)=>Math.min(Math.max(e,n),r),Qi=(e={x:0,y:0},n,r)=>({x:aa(e.x,n[0][0],n[1][0]-((r==null?void 0:r.width)??0)),y:aa(e.y,n[0][1],n[1][1]-((r==null?void 0:r.height)??0))});function Uw(e,n,r){const{width:l,height:a}=Mr(r),{x:s,y:u}=r.internals.positionAbsolute;return Qi(e,[[s,u],[s+l,u+a]],n)}const nv=(e,n,r)=>er?-aa(Math.abs(e-r),1,n)/n:0,Iw=(e,n,r=15,l=40)=>{const a=nv(e.x,l,n.width-l)*r,s=nv(e.y,l,n.height-l)*r;return[a,s]},vc=(e,n)=>({x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),x2:Math.max(e.x2,n.x2),y2:Math.max(e.y2,n.y2)}),jp=({x:e,y:n,width:r,height:l})=>({x:e,y:n,x2:e+r,y2:n+l}),bc=({x:e,y:n,x2:r,y2:l})=>({x:e,y:n,width:r-e,height:l-n}),oa=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=am(e)?e.internals.positionAbsolute:Yo(e,n);return{x:r,y:l,width:((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},ic=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=am(e)?e.internals.positionAbsolute:Yo(e,n);return{x:r,y:l,x2:r+(((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0),y2:l+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},Vw=(e,n)=>bc(vc(jp(e),jp(n))),Lo=(e,n)=>{const r=Math.max(0,Math.min(e.x+e.width,n.x+n.width)-Math.max(e.x,n.x)),l=Math.max(0,Math.min(e.y+e.height,n.y+n.height)-Math.max(e.y,n.y));return Math.ceil(r*l)},rv=e=>Un(e.width)&&Un(e.height)&&Un(e.x)&&Un(e.y),Un=e=>!isNaN(e)&&isFinite(e),FT=(e,n)=>{},Po=(e,n=[1,1])=>({x:n[0]*Math.round(e.x/n[0]),y:n[1]*Math.round(e.y/n[1])}),Xo=({x:e,y:n},[r,l,a],s=!1,u=[1,1])=>{const f={x:(e-r)/a,y:(n-l)/a};return s?Po(f,u):f},lc=({x:e,y:n},[r,l,a])=>({x:e*a+r,y:n*a+l});function Vl(e,n){if(typeof e=="number")return Math.floor((n-n/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(r)}if(typeof e=="string"&&e.endsWith("%")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(n*r*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function QT(e,n,r){if(typeof e=="string"||typeof e=="number"){const l=Vl(e,r),a=Vl(e,n);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof e=="object"){const l=Vl(e.top??e.y??0,r),a=Vl(e.bottom??e.y??0,r),s=Vl(e.left??e.x??0,n),u=Vl(e.right??e.x??0,n);return{top:l,right:u,bottom:a,left:s,x:s+u,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function ZT(e,n,r,l,a,s){const{x:u,y:f}=lc(e,[n,r,l]),{x:h,y:d}=lc({x:e.x+e.width,y:e.y+e.height},[n,r,l]),m=a-h,p=s-d;return{left:Math.floor(u),top:Math.floor(f),right:Math.floor(m),bottom:Math.floor(p)}}const sm=(e,n,r,l,a,s)=>{const u=QT(s,n,r),f=(n-u.x)/e.width,h=(r-u.y)/e.height,d=Math.min(f,h),m=aa(d,l,a),p=e.x+e.width/2,y=e.y+e.height/2,v=n/2-p*m,w=r/2-y*m,k=ZT(e,v,w,m,n,r),_={left:Math.min(k.left-u.left,0),top:Math.min(k.top-u.top,0),right:Math.min(k.right-u.right,0),bottom:Math.min(k.bottom-u.bottom,0)};return{x:v-_.left+_.right,y:w-_.top+_.bottom,zoom:m}},Ho=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function sa(e){return e!=null&&e!=="parent"}function Mr(e){var n,r;return{width:((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth??0,height:((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight??0}}function Gw(e){var n,r;return(((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth)!==void 0&&(((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight)!==void 0}function Yw(e,n={width:0,height:0},r,l,a){const s={...e},u=l.get(r);if(u){const f=u.origin||a;s.x+=u.internals.positionAbsolute.x-(n.width??0)*f[0],s.y+=u.internals.positionAbsolute.y-(n.height??0)*f[1]}return s}function iv(e,n){if(e.size!==n.size)return!1;for(const r of e)if(!n.has(r))return!1;return!0}function KT(){let e,n;return{promise:new Promise((l,a)=>{e=l,n=a}),resolve:e,reject:n}}function JT(e){return{...Rw,...e||{}}}function Eo(e,{snapGrid:n=[0,0],snapToGrid:r=!1,transform:l,containerBounds:a}){const{x:s,y:u}=In(e),f=Xo({x:s-((a==null?void 0:a.left)??0),y:u-((a==null?void 0:a.top)??0)},l),{x:h,y:d}=r?Po(f,n):f;return{xSnapped:h,ySnapped:d,...f}}const um=e=>({width:e.offsetWidth,height:e.offsetHeight}),$w=e=>{var n;return((n=e==null?void 0:e.getRootNode)==null?void 0:n.call(e))||(window==null?void 0:window.document)},WT=["INPUT","SELECT","TEXTAREA"];function Pw(e){var l,a;const n=((a=(l=e.composedPath)==null?void 0:l.call(e))==null?void 0:a[0])||e.target;return(n==null?void 0:n.nodeType)!==1?!1:WT.includes(n.nodeName)||n.hasAttribute("contenteditable")||!!n.closest(".nokey")}const Xw=e=>"clientX"in e,In=(e,n)=>{var s,u;const r=Xw(e),l=r?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,a=r?e.clientY:(u=e.touches)==null?void 0:u[0].clientY;return{x:l-((n==null?void 0:n.left)??0),y:a-((n==null?void 0:n.top)??0)}},lv=(e,n,r,l,a)=>{const s=n.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(u=>{const f=u.getBoundingClientRect();return{id:u.getAttribute("data-handleid"),type:e,nodeId:a,position:u.getAttribute("data-handlepos"),x:(f.left-r.left)/l,y:(f.top-r.top)/l,...um(u)}})};function Fw({sourceX:e,sourceY:n,targetX:r,targetY:l,sourceControlX:a,sourceControlY:s,targetControlX:u,targetControlY:f}){const h=e*.125+a*.375+u*.375+r*.125,d=n*.125+s*.375+f*.375+l*.125,m=Math.abs(h-e),p=Math.abs(d-n);return[h,d,m,p]}function Mu(e,n){return e>=0?.5*e:n*25*Math.sqrt(-e)}function av({pos:e,x1:n,y1:r,x2:l,y2:a,c:s}){switch(e){case be.Left:return[n-Mu(n-l,s),r];case be.Right:return[n+Mu(l-n,s),r];case be.Top:return[n,r-Mu(r-a,s)];case be.Bottom:return[n,r+Mu(a-r,s)]}}function cm({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top,curvature:u=.25}){const[f,h]=av({pos:r,x1:e,y1:n,x2:l,y2:a,c:u}),[d,m]=av({pos:s,x1:l,y1:a,x2:e,y2:n,c:u}),[p,y,v,w]=Fw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:f,sourceControlY:h,targetControlX:d,targetControlY:m});return[`M${e},${n} C${f},${h} ${d},${m} ${l},${a}`,p,y,v,w]}function Qw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const a=Math.abs(r-e)/2,s=r0}const nz=({source:e,sourceHandle:n,target:r,targetHandle:l})=>`xy-edge__${e}${n||""}-${r}${l||""}`,rz=(e,n)=>n.some(r=>r.source===e.source&&r.target===e.target&&(r.sourceHandle===e.sourceHandle||!r.sourceHandle&&!e.sourceHandle)&&(r.targetHandle===e.targetHandle||!r.targetHandle&&!e.targetHandle)),iz=(e,n,r={})=>{if(!e.source||!e.target)return n;const l=r.getEdgeId||nz;let a;return Bw(e)?a={...e}:a={...e,id:l(e)},rz(a,n)?n:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,n.concat(a))};function Zw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const[a,s,u,f]=Qw({sourceX:e,sourceY:n,targetX:r,targetY:l});return[`M ${e},${n}L ${r},${l}`,a,s,u,f]}const ov={[be.Left]:{x:-1,y:0},[be.Right]:{x:1,y:0},[be.Top]:{x:0,y:-1},[be.Bottom]:{x:0,y:1}},lz=({source:e,sourcePosition:n=be.Bottom,target:r})=>n===be.Left||n===be.Right?e.xMath.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2));function az({source:e,sourcePosition:n=be.Bottom,target:r,targetPosition:l=be.Top,center:a,offset:s,stepPosition:u}){const f=ov[n],h=ov[l],d={x:e.x+f.x*s,y:e.y+f.y*s},m={x:r.x+h.x*s,y:r.y+h.y*s},p=lz({source:d,sourcePosition:n,target:m}),y=p.x!==0?"x":"y",v=p[y];let w=[],k,_;const S={x:0,y:0},T={x:0,y:0},[,,N,A]=Qw({sourceX:e.x,sourceY:e.y,targetX:r.x,targetY:r.y});if(f[y]*h[y]===-1){y==="x"?(k=a.x??d.x+(m.x-d.x)*u,_=a.y??(d.y+m.y)/2):(k=a.x??(d.x+m.x)/2,_=a.y??d.y+(m.y-d.y)*u);const z=[{x:k,y:d.y},{x:k,y:m.y}],L=[{x:d.x,y:_},{x:m.x,y:_}];f[y]===v?w=y==="x"?z:L:w=y==="x"?L:z}else{const z=[{x:d.x,y:m.y}],L=[{x:m.x,y:d.y}];if(y==="x"?w=f.x===v?L:z:w=f.y===v?z:L,n===l){const U=Math.abs(e[y]-r[y]);if(U<=s){const ee=Math.min(s-1,s-U);f[y]===v?S[y]=(d[y]>e[y]?-1:1)*ee:T[y]=(m[y]>r[y]?-1:1)*ee}}if(n!==l){const U=y==="x"?"y":"x",ee=f[y]===h[U],H=d[U]>m[U],G=d[U]=B?(k=(D.x+I.x)/2,_=w[0].y):(k=w[0].x,_=(D.y+I.y)/2)}return[[e,{x:d.x+S.x,y:d.y+S.y},...w,{x:m.x+T.x,y:m.y+T.y},r],k,_,N,A]}function oz(e,n,r,l){const a=Math.min(sv(e,n)/2,sv(n,r)/2,l),{x:s,y:u}=n;if(e.x===s&&s===r.x||e.y===u&&u===r.y)return`L${s} ${u}`;if(e.y===u){const d=e.x{let A="";return N>0&&Nr.id===n):e[0])||null}function Op(e,n){return e?typeof e=="string"?e:`${n?`${n}__`:""}${Object.keys(e).sort().map(l=>`${l}=${e[l]}`).join("&")}`:""}function uz(e,{id:n,defaultColor:r,defaultMarkerStart:l,defaultMarkerEnd:a}){const s=new Set;return e.reduce((u,f)=>([f.markerStart||l,f.markerEnd||a].forEach(h=>{if(h&&typeof h=="object"){const d=Op(h,n);s.has(d)||(u.push({id:d,color:h.color||r,...h}),s.add(d))}}),u),[]).sort((u,f)=>u.id.localeCompare(f.id))}const Kw=1e3,cz=10,fm={nodeOrigin:[0,0],nodeExtent:Do,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},fz={...fm,checkEquality:!0};function dm(e,n){const r={...e};for(const l in n)n[l]!==void 0&&(r[l]=n[l]);return r}function dz(e,n,r){const l=dm(fm,r);for(const a of e.values())if(a.parentId)pm(a,e,n,l);else{const s=Yo(a,l.nodeOrigin),u=sa(a.extent)?a.extent:l.nodeExtent,f=Qi(s,u,Mr(a));a.internals.positionAbsolute=f}}function hz(e,n){if(!e.handles)return e.measured?n==null?void 0:n.internals.handleBounds:void 0;const r=[],l=[];for(const a of e.handles){const s={id:a.id,width:a.width??1,height:a.height??1,nodeId:e.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?r.push(s):a.type==="target"&&l.push(s)}return{source:r,target:l}}function hm(e){return e==="manual"}function Dp(e,n,r,l={}){var d,m;const a=dm(fz,l),s={i:0},u=new Map(n),f=a!=null&&a.elevateNodesOnSelect&&!hm(a.zIndexMode)?Kw:0;let h=e.length>0;n.clear(),r.clear();for(const p of e){let y=u.get(p.id);if(a.checkEquality&&p===(y==null?void 0:y.internals.userNode))n.set(p.id,y);else{const v=Yo(p,a.nodeOrigin),w=sa(p.extent)?p.extent:a.nodeExtent,k=Qi(v,w,Mr(p));y={...a.defaults,...p,measured:{width:(d=p.measured)==null?void 0:d.width,height:(m=p.measured)==null?void 0:m.height},internals:{positionAbsolute:k,handleBounds:hz(p,y),z:Jw(p,f,a.zIndexMode),userNode:p}},n.set(p.id,y)}(y.measured===void 0||y.measured.width===void 0||y.measured.height===void 0)&&!y.hidden&&(h=!1),p.parentId&&pm(y,n,r,l,s)}return h}function pz(e,n){if(!e.parentId)return;const r=n.get(e.parentId);r?r.set(e.id,e):n.set(e.parentId,new Map([[e.id,e]]))}function pm(e,n,r,l,a){const{elevateNodesOnSelect:s,nodeOrigin:u,nodeExtent:f,zIndexMode:h}=dm(fm,l),d=e.parentId,m=n.get(d);if(!m){console.warn(`Parent node ${d} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}pz(e,r),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&h==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*cz),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const p=s&&!hm(h)?Kw:0,{x:y,y:v,z:w}=mz(e,m,u,f,p,h),{positionAbsolute:k}=e.internals,_=y!==k.x||v!==k.y;(_||w!==e.internals.z)&&n.set(e.id,{...e,internals:{...e.internals,positionAbsolute:_?{x:y,y:v}:k,z:w}})}function Jw(e,n,r){const l=Un(e.zIndex)?e.zIndex:0;return hm(r)?l:l+(e.selected?n:0)}function mz(e,n,r,l,a,s){const{x:u,y:f}=n.internals.positionAbsolute,h=Mr(e),d=Yo(e,r),m=sa(e.extent)?Qi(d,e.extent,h):d;let p=Qi({x:u+m.x,y:f+m.y},l,h);e.extent==="parent"&&(p=Uw(p,h,n));const y=Jw(e,a,s),v=n.internals.z??0;return{x:p.x,y:p.y,z:v>=y?v+1:y}}function mm(e,n,r,l=[0,0]){var u;const a=[],s=new Map;for(const f of e){const h=n.get(f.parentId);if(!h)continue;const d=((u=s.get(f.parentId))==null?void 0:u.expandedRect)??oa(h),m=Vw(d,f.rect);s.set(f.parentId,{expandedRect:m,parent:h})}return s.size>0&&s.forEach(({expandedRect:f,parent:h},d)=>{var N;const m=h.internals.positionAbsolute,p=Mr(h),y=h.origin??l,v=f.x0||w>0||S||T)&&(a.push({id:d,type:"position",position:{x:h.position.x-v+S,y:h.position.y-w+T}}),(N=r.get(d))==null||N.forEach(A=>{e.some(R=>R.id===A.id)||a.push({id:A.id,type:"position",position:{x:A.position.x+v,y:A.position.y+w}})})),(p.width0){const v=mm(y,n,r,a);d.push(...v)}return{changes:d,updatedInternals:h}}async function yz({delta:e,panZoom:n,transform:r,translateExtent:l,width:a,height:s}){if(!n||!e.x&&!e.y)return Promise.resolve(!1);const u=await n.setViewportConstrained({x:r[0]+e.x,y:r[1]+e.y,zoom:r[2]},[[0,0],[a,s]],l),f=!!u&&(u.x!==r[0]||u.y!==r[1]||u.k!==r[2]);return Promise.resolve(f)}function dv(e,n,r,l,a,s){let u=a;const f=l.get(u)||new Map;l.set(u,f.set(r,n)),u=`${a}-${e}`;const h=l.get(u)||new Map;if(l.set(u,h.set(r,n)),s){u=`${a}-${e}-${s}`;const d=l.get(u)||new Map;l.set(u,d.set(r,n))}}function Ww(e,n,r){e.clear(),n.clear();for(const l of r){const{source:a,target:s,sourceHandle:u=null,targetHandle:f=null}=l,h={edgeId:l.id,source:a,target:s,sourceHandle:u,targetHandle:f},d=`${a}-${u}--${s}-${f}`,m=`${s}-${f}--${a}-${u}`;dv("source",h,m,e,a,u),dv("target",h,d,e,s,f),n.set(l.id,l)}}function eS(e,n){if(!e.parentId)return!1;const r=n.get(e.parentId);return r?r.selected?!0:eS(r,n):!1}function hv(e,n,r){var a;let l=e;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,n))return!0;if(l===r)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function xz(e,n,r,l){const a=new Map;for(const[s,u]of e)if((u.selected||u.id===l)&&(!u.parentId||!eS(u,e))&&(u.draggable||n&&typeof u.draggable>"u")){const f=e.get(s);f&&a.set(s,{id:s,position:f.position||{x:0,y:0},distance:{x:r.x-f.internals.positionAbsolute.x,y:r.y-f.internals.positionAbsolute.y},extent:f.extent,parentId:f.parentId,origin:f.origin,expandParent:f.expandParent,internals:{positionAbsolute:f.internals.positionAbsolute||{x:0,y:0}},measured:{width:f.measured.width??0,height:f.measured.height??0}})}return a}function rh({nodeId:e,dragItems:n,nodeLookup:r,dragging:l=!0}){var u,f,h;const a=[];for(const[d,m]of n){const p=(u=r.get(d))==null?void 0:u.internals.userNode;p&&a.push({...p,position:m.position,dragging:l})}if(!e)return[a[0],a];const s=(f=r.get(e))==null?void 0:f.internals.userNode;return[s?{...s,position:((h=n.get(e))==null?void 0:h.position)||s.position,dragging:l}:a[0],a]}function vz({dragItems:e,snapGrid:n,x:r,y:l}){const a=e.values().next().value;if(!a)return null;const s={x:r-a.distance.x,y:l-a.distance.y},u=Po(s,n);return{x:u.x-s.x,y:u.y-s.y}}function bz({onNodeMouseDown:e,getStoreItems:n,onDragStart:r,onDrag:l,onDragStop:a}){let s={x:null,y:null},u=0,f=new Map,h=!1,d={x:0,y:0},m=null,p=!1,y=null,v=!1,w=!1,k=null;function _({noDragClassName:T,handleSelector:N,domNode:A,isSelectable:R,nodeId:z,nodeClickDistance:L=0}){y=vn(A);function D({x:U,y:ee}){const{nodeLookup:H,nodeExtent:G,snapGrid:j,snapToGrid:$,nodeOrigin:Q,onNodeDrag:K,onSelectionDrag:M,onError:q,updateNodePositions:P}=n();s={x:U,y:ee};let E=!1;const Y=f.size>1,F=Y&&G?jp($o(f)):null,J=Y&&$?vz({dragItems:f,snapGrid:j,x:U,y:ee}):null;for(const[ne,re]of f){if(!H.has(ne))continue;let se={x:U-re.distance.x,y:ee-re.distance.y};$&&(se=J?{x:Math.round(se.x+J.x),y:Math.round(se.y+J.y)}:Po(se,j));let ye=null;if(Y&&G&&!re.extent&&F){const{positionAbsolute:pe}=re.internals,_e=pe.x-F.x+G[0][0],je=pe.x+re.measured.width-F.x2+G[1][0],Ce=pe.y-F.y+G[0][1],ut=pe.y+re.measured.height-F.y2+G[1][1];ye=[[_e,Ce],[je,ut]]}const{position:ve,positionAbsolute:xe}=qw({nodeId:ne,nextPosition:se,nodeLookup:H,nodeExtent:ye||G,nodeOrigin:Q,onError:q});E=E||re.position.x!==ve.x||re.position.y!==ve.y,re.position=ve,re.internals.positionAbsolute=xe}if(w=w||E,!!E&&(P(f,!0),k&&(l||K||!z&&M))){const[ne,re]=rh({nodeId:z,dragItems:f,nodeLookup:H});l==null||l(k,f,ne,re),K==null||K(k,ne,re),z||M==null||M(k,re)}}async function I(){if(!m)return;const{transform:U,panBy:ee,autoPanSpeed:H,autoPanOnNodeDrag:G}=n();if(!G){h=!1,cancelAnimationFrame(u);return}const[j,$]=Iw(d,m,H);(j!==0||$!==0)&&(s.x=(s.x??0)-j/U[2],s.y=(s.y??0)-$/U[2],await ee({x:j,y:$})&&D(s)),u=requestAnimationFrame(I)}function X(U){var Y;const{nodeLookup:ee,multiSelectionActive:H,nodesDraggable:G,transform:j,snapGrid:$,snapToGrid:Q,selectNodesOnDrag:K,onNodeDragStart:M,onSelectionDragStart:q,unselectNodesAndEdges:P}=n();p=!0,(!K||!R)&&!H&&z&&((Y=ee.get(z))!=null&&Y.selected||P()),R&&K&&z&&(e==null||e(z));const E=Eo(U.sourceEvent,{transform:j,snapGrid:$,snapToGrid:Q,containerBounds:m});if(s=E,f=xz(ee,G,E,z),f.size>0&&(r||M||!z&&q)){const[F,J]=rh({nodeId:z,dragItems:f,nodeLookup:ee});r==null||r(U.sourceEvent,f,F,J),M==null||M(U.sourceEvent,F,J),z||q==null||q(U.sourceEvent,J)}}const B=xw().clickDistance(L).on("start",U=>{const{domNode:ee,nodeDragThreshold:H,transform:G,snapGrid:j,snapToGrid:$}=n();m=(ee==null?void 0:ee.getBoundingClientRect())||null,v=!1,w=!1,k=U.sourceEvent,H===0&&X(U),s=Eo(U.sourceEvent,{transform:G,snapGrid:j,snapToGrid:$,containerBounds:m}),d=In(U.sourceEvent,m)}).on("drag",U=>{const{autoPanOnNodeDrag:ee,transform:H,snapGrid:G,snapToGrid:j,nodeDragThreshold:$,nodeLookup:Q}=n(),K=Eo(U.sourceEvent,{transform:H,snapGrid:G,snapToGrid:j,containerBounds:m});if(k=U.sourceEvent,(U.sourceEvent.type==="touchmove"&&U.sourceEvent.touches.length>1||z&&!Q.has(z))&&(v=!0),!v){if(!h&&ee&&p&&(h=!0,I()),!p){const M=In(U.sourceEvent,m),q=M.x-d.x,P=M.y-d.y;Math.sqrt(q*q+P*P)>$&&X(U)}(s.x!==K.xSnapped||s.y!==K.ySnapped)&&f&&p&&(d=In(U.sourceEvent,m),D(K))}}).on("end",U=>{if(!(!p||v)&&(h=!1,p=!1,cancelAnimationFrame(u),f.size>0)){const{nodeLookup:ee,updateNodePositions:H,onNodeDragStop:G,onSelectionDragStop:j}=n();if(w&&(H(f,!1),w=!1),a||G||!z&&j){const[$,Q]=rh({nodeId:z,dragItems:f,nodeLookup:ee,dragging:!1});a==null||a(U.sourceEvent,f,$,Q),G==null||G(U.sourceEvent,$,Q),z||j==null||j(U.sourceEvent,Q)}}}).filter(U=>{const ee=U.target;return!U.button&&(!T||!hv(ee,`.${T}`,A))&&(!N||hv(ee,N,A))});y.call(B)}function S(){y==null||y.on(".drag",null)}return{update:_,destroy:S}}function wz(e,n,r){const l=[],a={x:e.x-r,y:e.y-r,width:r*2,height:r*2};for(const s of n.values())Lo(a,oa(s))>0&&l.push(s);return l}const Sz=250;function _z(e,n,r,l){var f,h;let a=[],s=1/0;const u=wz(e,r,n+Sz);for(const d of u){const m=[...((f=d.internals.handleBounds)==null?void 0:f.source)??[],...((h=d.internals.handleBounds)==null?void 0:h.target)??[]];for(const p of m){if(l.nodeId===p.nodeId&&l.type===p.type&&l.id===p.id)continue;const{x:y,y:v}=Zi(d,p,p.position,!0),w=Math.sqrt(Math.pow(y-e.x,2)+Math.pow(v-e.y,2));w>n||(w1){const d=l.type==="source"?"target":"source";return a.find(m=>m.type===d)??a[0]}return a[0]}function tS(e,n,r,l,a,s=!1){var d,m,p;const u=l.get(e);if(!u)return null;const f=a==="strict"?(d=u.internals.handleBounds)==null?void 0:d[n]:[...((m=u.internals.handleBounds)==null?void 0:m.source)??[],...((p=u.internals.handleBounds)==null?void 0:p.target)??[]],h=(r?f==null?void 0:f.find(y=>y.id===r):f==null?void 0:f[0])??null;return h&&s?{...h,...Zi(u,h,h.position,!0)}:h}function nS(e,n){return e||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function Ez(e,n){let r=null;return n?r=!0:e&&!n&&(r=!1),r}const rS=()=>!0;function Nz(e,{connectionMode:n,connectionRadius:r,handleId:l,nodeId:a,edgeUpdaterType:s,isTarget:u,domNode:f,nodeLookup:h,lib:d,autoPanOnConnect:m,flowId:p,panBy:y,cancelConnection:v,onConnectStart:w,onConnect:k,onConnectEnd:_,isValidConnection:S=rS,onReconnectEnd:T,updateConnection:N,getTransform:A,getFromHandle:R,autoPanSpeed:z,dragThreshold:L=1,handleDomNode:D}){const I=$w(e.target);let X=0,B;const{x:U,y:ee}=In(e),H=nS(s,D),G=f==null?void 0:f.getBoundingClientRect();let j=!1;if(!G||!H)return;const $=tS(a,H,l,h,n);if(!$)return;let Q=In(e,G),K=!1,M=null,q=!1,P=null;function E(){if(!m||!G)return;const[ve,xe]=Iw(Q,G,z);y({x:ve,y:xe}),X=requestAnimationFrame(E)}const Y={...$,nodeId:a,type:H,position:$.position},F=h.get(a);let ne={inProgress:!0,isValid:null,from:Zi(F,Y,be.Left,!0),fromHandle:Y,fromPosition:Y.position,fromNode:F,to:Q,toHandle:null,toPosition:tv[Y.position],toNode:null,pointer:Q};function re(){j=!0,N(ne),w==null||w(e,{nodeId:a,handleId:l,handleType:H})}L===0&&re();function se(ve){if(!j){const{x:ut,y:tt}=In(ve),At=ut-U,It=tt-ee;if(!(At*At+It*It>L*L))return;re()}if(!R()||!Y){ye(ve);return}const xe=A();Q=In(ve,G),B=_z(Xo(Q,xe,!1,[1,1]),r,h,Y),K||(E(),K=!0);const pe=iS(ve,{handle:B,connectionMode:n,fromNodeId:a,fromHandleId:l,fromType:u?"target":"source",isValidConnection:S,doc:I,lib:d,flowId:p,nodeLookup:h});P=pe.handleDomNode,M=pe.connection,q=Ez(!!B,pe.isValid);const _e=h.get(a),je=_e?Zi(_e,Y,be.Left,!0):ne.from,Ce={...ne,from:je,isValid:q,to:pe.toHandle&&q?lc({x:pe.toHandle.x,y:pe.toHandle.y},xe):Q,toHandle:pe.toHandle,toPosition:q&&pe.toHandle?pe.toHandle.position:tv[Y.position],toNode:pe.toHandle?h.get(pe.toHandle.nodeId):null,pointer:Q};N(Ce),ne=Ce}function ye(ve){if(!("touches"in ve&&ve.touches.length>0)){if(j){(B||P)&&M&&q&&(k==null||k(M));const{inProgress:xe,...pe}=ne,_e={...pe,toPosition:ne.toHandle?ne.toPosition:null};_==null||_(ve,_e),s&&(T==null||T(ve,_e))}v(),cancelAnimationFrame(X),K=!1,q=!1,M=null,P=null,I.removeEventListener("mousemove",se),I.removeEventListener("mouseup",ye),I.removeEventListener("touchmove",se),I.removeEventListener("touchend",ye)}}I.addEventListener("mousemove",se),I.addEventListener("mouseup",ye),I.addEventListener("touchmove",se),I.addEventListener("touchend",ye)}function iS(e,{handle:n,connectionMode:r,fromNodeId:l,fromHandleId:a,fromType:s,doc:u,lib:f,flowId:h,isValidConnection:d=rS,nodeLookup:m}){const p=s==="target",y=n?u.querySelector(`.${f}-flow__handle[data-id="${h}-${n==null?void 0:n.nodeId}-${n==null?void 0:n.id}-${n==null?void 0:n.type}"]`):null,{x:v,y:w}=In(e),k=u.elementFromPoint(v,w),_=k!=null&&k.classList.contains(`${f}-flow__handle`)?k:y,S={handleDomNode:_,isValid:!1,connection:null,toHandle:null};if(_){const T=nS(void 0,_),N=_.getAttribute("data-nodeid"),A=_.getAttribute("data-handleid"),R=_.classList.contains("connectable"),z=_.classList.contains("connectableend");if(!N||!T)return S;const L={source:p?N:l,sourceHandle:p?A:a,target:p?l:N,targetHandle:p?a:A};S.connection=L;const I=R&&z&&(r===la.Strict?p&&T==="source"||!p&&T==="target":N!==l||A!==a);S.isValid=I&&d(L),S.toHandle=tS(N,T,A,m,r,!0)}return S}const Rp={onPointerDown:Nz,isValid:iS};function kz({domNode:e,panZoom:n,getTransform:r,getViewScale:l}){const a=vn(e);function s({translateExtent:f,width:h,height:d,zoomStep:m=1,pannable:p=!0,zoomable:y=!0,inversePan:v=!1}){const w=N=>{if(N.sourceEvent.type!=="wheel"||!n)return;const A=r(),R=N.sourceEvent.ctrlKey&&Ho()?10:1,z=-N.sourceEvent.deltaY*(N.sourceEvent.deltaMode===1?.05:N.sourceEvent.deltaMode?1:.002)*m,L=A[2]*Math.pow(2,z*R);n.scaleTo(L)};let k=[0,0];const _=N=>{(N.sourceEvent.type==="mousedown"||N.sourceEvent.type==="touchstart")&&(k=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY])},S=N=>{const A=r();if(N.sourceEvent.type!=="mousemove"&&N.sourceEvent.type!=="touchmove"||!n)return;const R=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY],z=[R[0]-k[0],R[1]-k[1]];k=R;const L=l()*Math.max(A[2],Math.log(A[2]))*(v?-1:1),D={x:A[0]-z[0]*L,y:A[1]-z[1]*L},I=[[0,0],[h,d]];n.setViewportConstrained({x:D.x,y:D.y,zoom:A[2]},I,f)},T=Ow().on("start",_).on("zoom",p?S:null).on("zoom.wheel",y?w:null);a.call(T,{})}function u(){a.on("zoom",null)}return{update:s,destroy:u,pointer:Bn}}const wc=e=>({x:e.x,y:e.y,zoom:e.k}),ih=({x:e,y:n,zoom:r})=>xc.translate(e,n).scale(r),Fl=(e,n)=>e.target.closest(`.${n}`),lS=(e,n)=>n===2&&Array.isArray(e)&&e.includes(2),Cz=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,lh=(e,n=0,r=Cz,l=()=>{})=>{const a=typeof n=="number"&&n>0;return a||l(),a?e.transition().duration(n).ease(r).on("end",l):e},aS=e=>{const n=e.ctrlKey&&Ho()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*n};function Tz({zoomPanValues:e,noWheelClassName:n,d3Selection:r,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:s,zoomOnPinch:u,onPanZoomStart:f,onPanZoom:h,onPanZoomEnd:d}){return m=>{if(Fl(m,n))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const p=r.property("__zoom").k||1;if(m.ctrlKey&&u){const _=Bn(m),S=aS(m),T=p*Math.pow(2,S);l.scaleTo(r,T,_,m);return}const y=m.deltaMode===1?20:1;let v=a===$i.Vertical?0:m.deltaX*y,w=a===$i.Horizontal?0:m.deltaY*y;!Ho()&&m.shiftKey&&a!==$i.Vertical&&(v=m.deltaY*y,w=0),l.translateBy(r,-(v/p)*s,-(w/p)*s,{internal:!0});const k=wc(r.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(h==null||h(m,k),e.panScrollTimeout=setTimeout(()=>{d==null||d(m,k),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,f==null||f(m,k))}}function zz({noWheelClassName:e,preventScrolling:n,d3ZoomHandler:r}){return function(l,a){const s=l.type==="wheel",u=!n&&s&&!l.ctrlKey,f=Fl(l,e);if(l.ctrlKey&&s&&f&&l.preventDefault(),u||f)return null;l.preventDefault(),r.call(this,l,a)}}function Az({zoomPanValues:e,onDraggingChange:n,onPanZoomStart:r}){return l=>{var s,u,f;if((s=l.sourceEvent)!=null&&s.internal)return;const a=wc(l.transform);e.mouseButton=((u=l.sourceEvent)==null?void 0:u.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=a,((f=l.sourceEvent)==null?void 0:f.type)==="mousedown"&&n(!0),r&&(r==null||r(l.sourceEvent,a))}}function jz({zoomPanValues:e,panOnDrag:n,onPaneContextMenu:r,onTransformChange:l,onPanZoom:a}){return s=>{var u,f;e.usedRightMouseButton=!!(r&&lS(n,e.mouseButton??0)),(u=s.sourceEvent)!=null&&u.sync||l([s.transform.x,s.transform.y,s.transform.k]),a&&!((f=s.sourceEvent)!=null&&f.internal)&&(a==null||a(s.sourceEvent,wc(s.transform)))}}function Mz({zoomPanValues:e,panOnDrag:n,panOnScroll:r,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:s}){return u=>{var f;if(!((f=u.sourceEvent)!=null&&f.internal)&&(e.isZoomingOrPanning=!1,s&&lS(n,e.mouseButton??0)&&!e.usedRightMouseButton&&u.sourceEvent&&s(u.sourceEvent),e.usedRightMouseButton=!1,l(!1),a)){const h=wc(u.transform);e.prevViewport=h,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{a==null||a(u.sourceEvent,h)},r?150:0)}}}function Oz({zoomActivationKeyPressed:e,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:l,panOnScroll:a,zoomOnDoubleClick:s,userSelectionActive:u,noWheelClassName:f,noPanClassName:h,lib:d,connectionInProgress:m}){return p=>{var _;const y=e||n,v=r&&p.ctrlKey,w=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(Fl(p,`${d}-flow__node`)||Fl(p,`${d}-flow__edge`)))return!0;if(!l&&!y&&!a&&!s&&!r||u||m&&!w||Fl(p,f)&&w||Fl(p,h)&&(!w||a&&w&&!e)||!r&&p.ctrlKey&&w)return!1;if(!r&&p.type==="touchstart"&&((_=p.touches)==null?void 0:_.length)>1)return p.preventDefault(),!1;if(!y&&!a&&!v&&w||!l&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(l)&&!l.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(l)&&l.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||w)&&k}}function Dz({domNode:e,minZoom:n,maxZoom:r,translateExtent:l,viewport:a,onPanZoom:s,onPanZoomStart:u,onPanZoomEnd:f,onDraggingChange:h}){const d={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=e.getBoundingClientRect(),p=Ow().scaleExtent([n,r]).translateExtent(l),y=vn(e).call(p);T({x:a.x,y:a.y,zoom:aa(a.zoom,n,r)},[[0,0],[m.width,m.height]],l);const v=y.on("wheel.zoom"),w=y.on("dblclick.zoom");p.wheelDelta(aS);function k(B,U){return y?new Promise(ee=>{p==null||p.interpolate((U==null?void 0:U.interpolate)==="linear"?_o:Vu).transform(lh(y,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function _({noWheelClassName:B,noPanClassName:U,onPaneContextMenu:ee,userSelectionActive:H,panOnScroll:G,panOnDrag:j,panOnScrollMode:$,panOnScrollSpeed:Q,preventScrolling:K,zoomOnPinch:M,zoomOnScroll:q,zoomOnDoubleClick:P,zoomActivationKeyPressed:E,lib:Y,onTransformChange:F,connectionInProgress:J,paneClickDistance:ne,selectionOnDrag:re}){H&&!d.isZoomingOrPanning&&S();const se=G&&!E&&!H;p.clickDistance(re?1/0:!Un(ne)||ne<0?0:ne);const ye=se?Tz({zoomPanValues:d,noWheelClassName:B,d3Selection:y,d3Zoom:p,panOnScrollMode:$,panOnScrollSpeed:Q,zoomOnPinch:M,onPanZoomStart:u,onPanZoom:s,onPanZoomEnd:f}):zz({noWheelClassName:B,preventScrolling:K,d3ZoomHandler:v});if(y.on("wheel.zoom",ye,{passive:!1}),!H){const xe=Az({zoomPanValues:d,onDraggingChange:h,onPanZoomStart:u});p.on("start",xe);const pe=jz({zoomPanValues:d,panOnDrag:j,onPaneContextMenu:!!ee,onPanZoom:s,onTransformChange:F});p.on("zoom",pe);const _e=Mz({zoomPanValues:d,panOnDrag:j,panOnScroll:G,onPaneContextMenu:ee,onPanZoomEnd:f,onDraggingChange:h});p.on("end",_e)}const ve=Oz({zoomActivationKeyPressed:E,panOnDrag:j,zoomOnScroll:q,panOnScroll:G,zoomOnDoubleClick:P,zoomOnPinch:M,userSelectionActive:H,noPanClassName:U,noWheelClassName:B,lib:Y,connectionInProgress:J});p.filter(ve),P?y.on("dblclick.zoom",w):y.on("dblclick.zoom",null)}function S(){p.on("zoom",null)}async function T(B,U,ee){const H=ih(B),G=p==null?void 0:p.constrain()(H,U,ee);return G&&await k(G),new Promise(j=>j(G))}async function N(B,U){const ee=ih(B);return await k(ee,U),new Promise(H=>H(ee))}function A(B){if(y){const U=ih(B),ee=y.property("__zoom");(ee.k!==B.zoom||ee.x!==B.x||ee.y!==B.y)&&(p==null||p.transform(y,U,null,{sync:!0}))}}function R(){const B=y?Mw(y.node()):{x:0,y:0,k:1};return{x:B.x,y:B.y,zoom:B.k}}function z(B,U){return y?new Promise(ee=>{p==null||p.interpolate((U==null?void 0:U.interpolate)==="linear"?_o:Vu).scaleTo(lh(y,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function L(B,U){return y?new Promise(ee=>{p==null||p.interpolate((U==null?void 0:U.interpolate)==="linear"?_o:Vu).scaleBy(lh(y,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function D(B){p==null||p.scaleExtent(B)}function I(B){p==null||p.translateExtent(B)}function X(B){const U=!Un(B)||B<0?0:B;p==null||p.clickDistance(U)}return{update:_,destroy:S,setViewport:N,setViewportConstrained:T,getViewport:R,scaleTo:z,scaleBy:L,setScaleExtent:D,setTranslateExtent:I,syncViewport:A,setClickDistance:X}}var ua;(function(e){e.Line="line",e.Handle="handle"})(ua||(ua={}));function Rz({width:e,prevWidth:n,height:r,prevHeight:l,affectsX:a,affectsY:s}){const u=e-n,f=r-l,h=[u>0?1:u<0?-1:0,f>0?1:f<0?-1:0];return u&&a&&(h[0]=h[0]*-1),f&&s&&(h[1]=h[1]*-1),h}function pv(e){const n=e.includes("right")||e.includes("left"),r=e.includes("bottom")||e.includes("top"),l=e.includes("left"),a=e.includes("top");return{isHorizontal:n,isVertical:r,affectsX:l,affectsY:a}}function ui(e,n){return Math.max(0,n-e)}function ci(e,n){return Math.max(0,e-n)}function Ou(e,n,r){return Math.max(0,n-e,e-r)}function mv(e,n){return e?!n:n}function Lz(e,n,r,l,a,s,u,f){let{affectsX:h,affectsY:d}=n;const{isHorizontal:m,isVertical:p}=n,y=m&&p,{xSnapped:v,ySnapped:w}=r,{minWidth:k,maxWidth:_,minHeight:S,maxHeight:T}=l,{x:N,y:A,width:R,height:z,aspectRatio:L}=e;let D=Math.floor(m?v-e.pointerX:0),I=Math.floor(p?w-e.pointerY:0);const X=R+(h?-D:D),B=z+(d?-I:I),U=-s[0]*R,ee=-s[1]*z;let H=Ou(X,k,_),G=Ou(B,S,T);if(u){let Q=0,K=0;h&&D<0?Q=ui(N+D+U,u[0][0]):!h&&D>0&&(Q=ci(N+X+U,u[1][0])),d&&I<0?K=ui(A+I+ee,u[0][1]):!d&&I>0&&(K=ci(A+B+ee,u[1][1])),H=Math.max(H,Q),G=Math.max(G,K)}if(f){let Q=0,K=0;h&&D>0?Q=ci(N+D,f[0][0]):!h&&D<0&&(Q=ui(N+X,f[1][0])),d&&I>0?K=ci(A+I,f[0][1]):!d&&I<0&&(K=ui(A+B,f[1][1])),H=Math.max(H,Q),G=Math.max(G,K)}if(a){if(m){const Q=Ou(X/L,S,T)*L;if(H=Math.max(H,Q),u){let K=0;!h&&!d||h&&!d&&y?K=ci(A+ee+X/L,u[1][1])*L:K=ui(A+ee+(h?D:-D)/L,u[0][1])*L,H=Math.max(H,K)}if(f){let K=0;!h&&!d||h&&!d&&y?K=ui(A+X/L,f[1][1])*L:K=ci(A+(h?D:-D)/L,f[0][1])*L,H=Math.max(H,K)}}if(p){const Q=Ou(B*L,k,_)/L;if(G=Math.max(G,Q),u){let K=0;!h&&!d||d&&!h&&y?K=ci(N+B*L+U,u[1][0])/L:K=ui(N+(d?I:-I)*L+U,u[0][0])/L,G=Math.max(G,K)}if(f){let K=0;!h&&!d||d&&!h&&y?K=ui(N+B*L,f[1][0])/L:K=ci(N+(d?I:-I)*L,f[0][0])/L,G=Math.max(G,K)}}}I=I+(I<0?G:-G),D=D+(D<0?H:-H),a&&(y?X>B*L?I=(mv(h,d)?-D:D)/L:D=(mv(h,d)?-I:I)*L:m?(I=D/L,d=h):(D=I*L,h=d));const j=h?N+D:N,$=d?A+I:A;return{width:R+(h?-D:D),height:z+(d?-I:I),x:s[0]*D*(h?-1:1)+j,y:s[1]*I*(d?-1:1)+$}}const oS={width:0,height:0,x:0,y:0},Hz={...oS,pointerX:0,pointerY:0,aspectRatio:1};function Bz(e){return[[0,0],[e.measured.width,e.measured.height]]}function qz(e,n,r){const l=n.position.x+e.position.x,a=n.position.y+e.position.y,s=e.measured.width??0,u=e.measured.height??0,f=r[0]*s,h=r[1]*u;return[[l-f,a-h],[l+s-f,a+u-h]]}function Uz({domNode:e,nodeId:n,getStoreItems:r,onChange:l,onEnd:a}){const s=vn(e);let u={controlDirection:pv("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function f({controlPosition:d,boundaries:m,keepAspectRatio:p,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:_}){let S={...oS},T={...Hz};u={boundaries:m,resizeDirection:y,keepAspectRatio:p,controlDirection:pv(d)};let N,A=null,R=[],z,L,D,I=!1;const X=xw().on("start",B=>{const{nodeLookup:U,transform:ee,snapGrid:H,snapToGrid:G,nodeOrigin:j,paneDomNode:$}=r();if(N=U.get(n),!N)return;A=($==null?void 0:$.getBoundingClientRect())??null;const{xSnapped:Q,ySnapped:K}=Eo(B.sourceEvent,{transform:ee,snapGrid:H,snapToGrid:G,containerBounds:A});S={width:N.measured.width??0,height:N.measured.height??0,x:N.position.x??0,y:N.position.y??0},T={...S,pointerX:Q,pointerY:K,aspectRatio:S.width/S.height},z=void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&(z=U.get(N.parentId),L=z&&N.extent==="parent"?Bz(z):void 0),R=[],D=void 0;for(const[M,q]of U)if(q.parentId===n&&(R.push({id:M,position:{...q.position},extent:q.extent}),q.extent==="parent"||q.expandParent)){const P=qz(q,N,q.origin??j);D?D=[[Math.min(P[0][0],D[0][0]),Math.min(P[0][1],D[0][1])],[Math.max(P[1][0],D[1][0]),Math.max(P[1][1],D[1][1])]]:D=P}v==null||v(B,{...S})}).on("drag",B=>{const{transform:U,snapGrid:ee,snapToGrid:H,nodeOrigin:G}=r(),j=Eo(B.sourceEvent,{transform:U,snapGrid:ee,snapToGrid:H,containerBounds:A}),$=[];if(!N)return;const{x:Q,y:K,width:M,height:q}=S,P={},E=N.origin??G,{width:Y,height:F,x:J,y:ne}=Lz(T,u.controlDirection,j,u.boundaries,u.keepAspectRatio,E,L,D),re=Y!==M,se=F!==q,ye=J!==Q&&re,ve=ne!==K&&se;if(!ye&&!ve&&!re&&!se)return;if((ye||ve||E[0]===1||E[1]===1)&&(P.x=ye?J:S.x,P.y=ve?ne:S.y,S.x=P.x,S.y=P.y,R.length>0)){const je=J-Q,Ce=ne-K;for(const ut of R)ut.position={x:ut.position.x-je+E[0]*(Y-M),y:ut.position.y-Ce+E[1]*(F-q)},$.push(ut)}if((re||se)&&(P.width=re&&(!u.resizeDirection||u.resizeDirection==="horizontal")?Y:S.width,P.height=se&&(!u.resizeDirection||u.resizeDirection==="vertical")?F:S.height,S.width=P.width,S.height=P.height),z&&N.expandParent){const je=E[0]*(P.width??0);P.x&&P.x{I&&(k==null||k(B,{...S}),a==null||a({...S}),I=!1)});s.call(X)}function h(){s.on(".drag",null)}return{update:f,destroy:h}}var ah={exports:{}},oh={},sh={exports:{}},uh={};/** * @license React * use-sync-external-store-shim.production.js * @@ -278,7 +283,7 @@ Error generating stack: `+c.message+` * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var gv;function qz(){if(gv)return uh;gv=1;var e=Uo();function n(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var r=typeof Object.is=="function"?Object.is:n,l=e.useState,a=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function f(p,y){var v=y(),w=l({inst:{value:v,getSnapshot:y}}),k=w[0].inst,S=w[1];return s(function(){k.value=v,k.getSnapshot=y,h(k)&&S({inst:k})},[p,v,y]),a(function(){return h(k)&&S({inst:k}),p(function(){h(k)&&S({inst:k})})},[p]),u(v),v}function h(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!r(p,v)}catch{return!0}}function d(p,y){return y()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:f;return uh.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,uh}var yv;function Uz(){return yv||(yv=1,sh.exports=qz()),sh.exports}/** + */var gv;function Iz(){if(gv)return uh;gv=1;var e=Io();function n(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var r=typeof Object.is=="function"?Object.is:n,l=e.useState,a=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function f(p,y){var v=y(),w=l({inst:{value:v,getSnapshot:y}}),k=w[0].inst,_=w[1];return s(function(){k.value=v,k.getSnapshot=y,h(k)&&_({inst:k})},[p,v,y]),a(function(){return h(k)&&_({inst:k}),p(function(){h(k)&&_({inst:k})})},[p]),u(v),v}function h(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!r(p,v)}catch{return!0}}function d(p,y){return y()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:f;return uh.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,uh}var yv;function Vz(){return yv||(yv=1,sh.exports=Iz()),sh.exports}/** * @license React * use-sync-external-store-shim/with-selector.production.js * @@ -286,26 +291,26 @@ Error generating stack: `+c.message+` * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var xv;function Iz(){if(xv)return oh;xv=1;var e=Uo(),n=Uz();function r(d,m){return d===m&&(d!==0||1/d===1/m)||d!==d&&m!==m}var l=typeof Object.is=="function"?Object.is:r,a=n.useSyncExternalStore,s=e.useRef,u=e.useEffect,f=e.useMemo,h=e.useDebugValue;return oh.useSyncExternalStoreWithSelector=function(d,m,p,y,v){var w=s(null);if(w.current===null){var k={hasValue:!1,value:null};w.current=k}else k=w.current;w=f(function(){function _(A){if(!T){if(T=!0,E=A,A=y(A),v!==void 0&&k.hasValue){var L=k.value;if(v(L,A))return z=L}return z=A}if(L=z,l(E,A))return L;var D=y(A);return v!==void 0&&v(L,D)?(E=A,L):(E=A,z=D)}var T=!1,E,z,I=p===void 0?null:p;return[function(){return _(m())},I===null?void 0:function(){return _(I())}]},[m,p,y,v]);var S=a(d,w[0],w[1]);return u(function(){k.hasValue=!0,k.value=S},[S]),h(S),S},oh}var vv;function Vz(){return vv||(vv=1,ah.exports=Iz()),ah.exports}var Gz=Vz();const Yz=qo(Gz),$z={},bv=e=>{let n;const r=new Set,l=(m,p)=>{const y=typeof m=="function"?m(n):m;if(!Object.is(y,n)){const v=n;n=p??(typeof y!="object"||y===null)?y:Object.assign({},n,y),r.forEach(w=>w(n,v))}},a=()=>n,h={setState:l,getState:a,getInitialState:()=>d,subscribe:m=>(r.add(m),()=>r.delete(m)),destroy:()=>{($z?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},d=n=e(l,a,h);return h},Pz=e=>e?bv(e):bv,{useDebugValue:Xz}=Pl,{useSyncExternalStoreWithSelector:Fz}=Yz,Qz=e=>e;function aS(e,n=Qz,r){const l=Fz(e.subscribe,e.getState,e.getServerState||e.getInitialState,n,r);return Xz(l),l}const wv=(e,n)=>{const r=Pz(e),l=(a,s=n)=>aS(r,a,s);return Object.assign(l,r),l},Zz=(e,n)=>e?wv(e,n):wv;function ht(e,n){if(Object.is(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(const[l,a]of e)if(!Object.is(a,n.get(l)))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(const l of e)if(!n.has(l))return!1;return!0}const r=Object.keys(e);if(r.length!==Object.keys(n).length)return!1;for(const l of r)if(!Object.prototype.hasOwnProperty.call(n,l)||!Object.is(e[l],n[l]))return!1;return!0}var Kz=zb();const Sc=V.createContext(null),Jz=Sc.Provider,oS=nr.error001();function Ge(e,n){const r=V.useContext(Sc);if(r===null)throw new Error(oS);return aS(r,e,n)}function pt(){const e=V.useContext(Sc);if(e===null)throw new Error(oS);return V.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const Sv={display:"none"},Wz={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},sS="react-flow__node-desc",uS="react-flow__edge-desc",eA="react-flow__aria-live",tA=e=>e.ariaLiveMessage,nA=e=>e.ariaLabelConfig;function rA({rfId:e}){const n=Ge(tA);return b.jsx("div",{id:`${eA}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Wz,children:n})}function iA({rfId:e,disableKeyboardA11y:n}){const r=Ge(nA);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${sS}-${e}`,style:Sv,children:n?r["node.a11yDescription.default"]:r["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${uS}-${e}`,style:Sv,children:r["edge.a11yDescription.default"]}),!n&&b.jsx(rA,{rfId:e})]})}const _c=V.forwardRef(({position:e="top-left",children:n,className:r,style:l,...a},s)=>{const u=`${e}`.split("-");return b.jsx("div",{className:zt(["react-flow__panel",r,...u]),style:l,ref:s,...a,children:n})});_c.displayName="Panel";function lA({proOptions:e,position:n="bottom-right"}){return e!=null&&e.hideAttribution?null:b.jsx(_c,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:b.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const aA=e=>{const n=[],r=[];for(const[,l]of e.nodeLookup)l.selected&&n.push(l.internals.userNode);for(const[,l]of e.edgeLookup)l.selected&&r.push(l);return{selectedNodes:n,selectedEdges:r}},Du=e=>e.id;function oA(e,n){return ht(e.selectedNodes.map(Du),n.selectedNodes.map(Du))&&ht(e.selectedEdges.map(Du),n.selectedEdges.map(Du))}function sA({onSelectionChange:e}){const n=pt(),{selectedNodes:r,selectedEdges:l}=Ge(aA,oA);return V.useEffect(()=>{const a={nodes:r,edges:l};e==null||e(a),n.getState().onSelectionChangeHandlers.forEach(s=>s(a))},[r,l,e]),null}const uA=e=>!!e.onSelectionChangeHandlers;function cA({onSelectionChange:e}){const n=Ge(uA);return e||n?b.jsx(sA,{onSelectionChange:e}):null}const cS=[0,0],fA={x:0,y:0,zoom:1},dA=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],_v=[...dA,"rfId"],hA=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Ev={translateExtent:Oo,nodeOrigin:cS,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function pA(e){const{setNodes:n,setEdges:r,setMinZoom:l,setMaxZoom:a,setTranslateExtent:s,setNodeExtent:u,reset:f,setDefaultNodesAndEdges:h}=Ge(hA,ht),d=pt();V.useEffect(()=>(h(e.defaultNodes,e.defaultEdges),()=>{m.current=Ev,f()}),[]);const m=V.useRef(Ev);return V.useEffect(()=>{for(const p of _v){const y=e[p],v=m.current[p];y!==v&&(typeof e[p]>"u"||(p==="nodes"?n(y):p==="edges"?r(y):p==="minZoom"?l(y):p==="maxZoom"?a(y):p==="translateExtent"?s(y):p==="nodeExtent"?u(y):p==="ariaLabelConfig"?d.setState({ariaLabelConfig:ZT(y)}):p==="fitView"?d.setState({fitViewQueued:y}):p==="fitViewOptions"?d.setState({fitViewOptions:y}):d.setState({[p]:y})))}m.current=e},_v.map(p=>e[p])),null}function Nv(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function mA(e){var l;const[n,r]=V.useState(e==="system"?null:e);return V.useEffect(()=>{if(e!=="system"){r(e);return}const a=Nv(),s=()=>r(a!=null&&a.matches?"dark":"light");return s(),a==null||a.addEventListener("change",s),()=>{a==null||a.removeEventListener("change",s)}},[e]),n!==null?n:(l=Nv())!=null&&l.matches?"dark":"light"}const kv=typeof document<"u"?document:null;function Ho(e=null,n={target:kv,actInsideInputWithModifier:!0}){const[r,l]=V.useState(!1),a=V.useRef(!1),s=V.useRef(new Set([])),[u,f]=V.useMemo(()=>{if(e!==null){const d=(Array.isArray(e)?e:[e]).filter(p=>typeof p=="string").map(p=>p.replace("+",` + */var xv;function Gz(){if(xv)return oh;xv=1;var e=Io(),n=Vz();function r(d,m){return d===m&&(d!==0||1/d===1/m)||d!==d&&m!==m}var l=typeof Object.is=="function"?Object.is:r,a=n.useSyncExternalStore,s=e.useRef,u=e.useEffect,f=e.useMemo,h=e.useDebugValue;return oh.useSyncExternalStoreWithSelector=function(d,m,p,y,v){var w=s(null);if(w.current===null){var k={hasValue:!1,value:null};w.current=k}else k=w.current;w=f(function(){function S(z){if(!T){if(T=!0,N=z,z=y(z),v!==void 0&&k.hasValue){var L=k.value;if(v(L,z))return A=L}return A=z}if(L=A,l(N,z))return L;var D=y(z);return v!==void 0&&v(L,D)?(N=z,L):(N=z,A=D)}var T=!1,N,A,R=p===void 0?null:p;return[function(){return S(m())},R===null?void 0:function(){return S(R())}]},[m,p,y,v]);var _=a(d,w[0],w[1]);return u(function(){k.hasValue=!0,k.value=_},[_]),h(_),_},oh}var vv;function Yz(){return vv||(vv=1,ah.exports=Gz()),ah.exports}var $z=Yz();const Pz=Uo($z),Xz={},bv=e=>{let n;const r=new Set,l=(m,p)=>{const y=typeof m=="function"?m(n):m;if(!Object.is(y,n)){const v=n;n=p??(typeof y!="object"||y===null)?y:Object.assign({},n,y),r.forEach(w=>w(n,v))}},a=()=>n,h={setState:l,getState:a,getInitialState:()=>d,subscribe:m=>(r.add(m),()=>r.delete(m)),destroy:()=>{(Xz?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},d=n=e(l,a,h);return h},Fz=e=>e?bv(e):bv,{useDebugValue:Qz}=Pl,{useSyncExternalStoreWithSelector:Zz}=Pz,Kz=e=>e;function sS(e,n=Kz,r){const l=Zz(e.subscribe,e.getState,e.getServerState||e.getInitialState,n,r);return Qz(l),l}const wv=(e,n)=>{const r=Fz(e),l=(a,s=n)=>sS(r,a,s);return Object.assign(l,r),l},Jz=(e,n)=>e?wv(e,n):wv;function ht(e,n){if(Object.is(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(const[l,a]of e)if(!Object.is(a,n.get(l)))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(const l of e)if(!n.has(l))return!1;return!0}const r=Object.keys(e);if(r.length!==Object.keys(n).length)return!1;for(const l of r)if(!Object.prototype.hasOwnProperty.call(n,l)||!Object.is(e[l],n[l]))return!1;return!0}var Wz=zb();const Sc=V.createContext(null),eA=Sc.Provider,uS=nr.error001();function Ge(e,n){const r=V.useContext(Sc);if(r===null)throw new Error(uS);return sS(r,e,n)}function pt(){const e=V.useContext(Sc);if(e===null)throw new Error(uS);return V.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const Sv={display:"none"},tA={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},cS="react-flow__node-desc",fS="react-flow__edge-desc",nA="react-flow__aria-live",rA=e=>e.ariaLiveMessage,iA=e=>e.ariaLabelConfig;function lA({rfId:e}){const n=Ge(rA);return b.jsx("div",{id:`${nA}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:tA,children:n})}function aA({rfId:e,disableKeyboardA11y:n}){const r=Ge(iA);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${cS}-${e}`,style:Sv,children:n?r["node.a11yDescription.default"]:r["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${fS}-${e}`,style:Sv,children:r["edge.a11yDescription.default"]}),!n&&b.jsx(lA,{rfId:e})]})}const _c=V.forwardRef(({position:e="top-left",children:n,className:r,style:l,...a},s)=>{const u=`${e}`.split("-");return b.jsx("div",{className:zt(["react-flow__panel",r,...u]),style:l,ref:s,...a,children:n})});_c.displayName="Panel";function oA({proOptions:e,position:n="bottom-right"}){return e!=null&&e.hideAttribution?null:b.jsx(_c,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:b.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const sA=e=>{const n=[],r=[];for(const[,l]of e.nodeLookup)l.selected&&n.push(l.internals.userNode);for(const[,l]of e.edgeLookup)l.selected&&r.push(l);return{selectedNodes:n,selectedEdges:r}},Du=e=>e.id;function uA(e,n){return ht(e.selectedNodes.map(Du),n.selectedNodes.map(Du))&&ht(e.selectedEdges.map(Du),n.selectedEdges.map(Du))}function cA({onSelectionChange:e}){const n=pt(),{selectedNodes:r,selectedEdges:l}=Ge(sA,uA);return V.useEffect(()=>{const a={nodes:r,edges:l};e==null||e(a),n.getState().onSelectionChangeHandlers.forEach(s=>s(a))},[r,l,e]),null}const fA=e=>!!e.onSelectionChangeHandlers;function dA({onSelectionChange:e}){const n=Ge(fA);return e||n?b.jsx(cA,{onSelectionChange:e}):null}const dS=[0,0],hA={x:0,y:0,zoom:1},pA=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],_v=[...pA,"rfId"],mA=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Ev={translateExtent:Do,nodeOrigin:dS,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function gA(e){const{setNodes:n,setEdges:r,setMinZoom:l,setMaxZoom:a,setTranslateExtent:s,setNodeExtent:u,reset:f,setDefaultNodesAndEdges:h}=Ge(mA,ht),d=pt();V.useEffect(()=>(h(e.defaultNodes,e.defaultEdges),()=>{m.current=Ev,f()}),[]);const m=V.useRef(Ev);return V.useEffect(()=>{for(const p of _v){const y=e[p],v=m.current[p];y!==v&&(typeof e[p]>"u"||(p==="nodes"?n(y):p==="edges"?r(y):p==="minZoom"?l(y):p==="maxZoom"?a(y):p==="translateExtent"?s(y):p==="nodeExtent"?u(y):p==="ariaLabelConfig"?d.setState({ariaLabelConfig:JT(y)}):p==="fitView"?d.setState({fitViewQueued:y}):p==="fitViewOptions"?d.setState({fitViewOptions:y}):d.setState({[p]:y})))}m.current=e},_v.map(p=>e[p])),null}function Nv(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function yA(e){var l;const[n,r]=V.useState(e==="system"?null:e);return V.useEffect(()=>{if(e!=="system"){r(e);return}const a=Nv(),s=()=>r(a!=null&&a.matches?"dark":"light");return s(),a==null||a.addEventListener("change",s),()=>{a==null||a.removeEventListener("change",s)}},[e]),n!==null?n:(l=Nv())!=null&&l.matches?"dark":"light"}const kv=typeof document<"u"?document:null;function Bo(e=null,n={target:kv,actInsideInputWithModifier:!0}){const[r,l]=V.useState(!1),a=V.useRef(!1),s=V.useRef(new Set([])),[u,f]=V.useMemo(()=>{if(e!==null){const d=(Array.isArray(e)?e:[e]).filter(p=>typeof p=="string").map(p=>p.replace("+",` `).replace(` `,` +`).split(` -`)),m=d.reduce((p,y)=>p.concat(...y),[]);return[d,m]}return[[],[]]},[e]);return V.useEffect(()=>{const h=(n==null?void 0:n.target)??kv,d=(n==null?void 0:n.actInsideInputWithModifier)??!0;if(e!==null){const m=v=>{var S,_;if(a.current=v.ctrlKey||v.metaKey||v.shiftKey||v.altKey,(!a.current||a.current&&!d)&&Yw(v))return!1;const k=Tv(v.code,f);if(s.current.add(v[k]),Cv(u,s.current,!1)){const T=((_=(S=v.composedPath)==null?void 0:S.call(v))==null?void 0:_[0])||v.target,E=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";n.preventDefault!==!1&&(a.current||!E)&&v.preventDefault(),l(!0)}},p=v=>{const w=Tv(v.code,f);Cv(u,s.current,!0)?(l(!1),s.current.clear()):s.current.delete(v[w]),v.key==="Meta"&&s.current.clear(),a.current=!1},y=()=>{s.current.clear(),l(!1)};return h==null||h.addEventListener("keydown",m),h==null||h.addEventListener("keyup",p),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{h==null||h.removeEventListener("keydown",m),h==null||h.removeEventListener("keyup",p),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,l]),r}function Cv(e,n,r){return e.filter(l=>r||l.length===n.size).some(l=>l.every(a=>n.has(a)))}function Tv(e,n){return n.includes(e)?"code":"key"}const gA=()=>{const e=pt();return V.useMemo(()=>({zoomIn:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomOut:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1/1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomTo:(n,r)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(n,{duration:r==null?void 0:r.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(n,r)=>{const{transform:[l,a,s],panZoom:u}=e.getState();return u?(await u.setViewport({x:n.x??l,y:n.y??a,zoom:n.zoom??s},r),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[n,r,l]=e.getState().transform;return{x:n,y:r,zoom:l}},setCenter:async(n,r,l)=>e.getState().setCenter(n,r,l),fitBounds:async(n,r)=>{const{width:l,height:a,minZoom:s,maxZoom:u,panZoom:f}=e.getState(),h=sm(n,l,a,s,u,(r==null?void 0:r.padding)??.1);return f?(await f.setViewport(h,{duration:r==null?void 0:r.duration,ease:r==null?void 0:r.ease,interpolate:r==null?void 0:r.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(n,r={})=>{const{transform:l,snapGrid:a,snapToGrid:s,domNode:u}=e.getState();if(!u)return n;const{x:f,y:h}=u.getBoundingClientRect(),d={x:n.x-f,y:n.y-h},m=r.snapGrid??a,p=r.snapToGrid??s;return Xo(d,l,p,m)},flowToScreenPosition:n=>{const{transform:r,domNode:l}=e.getState();if(!l)return n;const{x:a,y:s}=l.getBoundingClientRect(),u=lc(n,r);return{x:u.x+a,y:u.y+s}}}),[])};function fS(e,n){const r=[],l=new Map,a=[];for(const s of e)if(s.type==="add"){a.push(s);continue}else if(s.type==="remove"||s.type==="replace")l.set(s.id,[s]);else{const u=l.get(s.id);u?u.push(s):l.set(s.id,[s])}for(const s of n){const u=l.get(s.id);if(!u){r.push(s);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){r.push({...u[0].item});continue}const f={...s};for(const h of u)yA(h,f);r.push(f)}return a.length&&a.forEach(s=>{s.index!==void 0?r.splice(s.index,0,{...s.item}):r.push({...s.item})}),r}function yA(e,n){switch(e.type){case"select":{n.selected=e.selected;break}case"position":{typeof e.position<"u"&&(n.position=e.position),typeof e.dragging<"u"&&(n.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(n.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(n.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(n.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(n.resizing=e.resizing);break}}}function dS(e,n){return fS(e,n)}function hS(e,n){return fS(e,n)}function qi(e,n){return{id:e,type:"select",selected:n}}function Ql(e,n=new Set,r=!1){const l=[];for(const[a,s]of e){const u=n.has(a);!(s.selected===void 0&&!u)&&s.selected!==u&&(r&&(s.selected=u),l.push(qi(s.id,u)))}return l}function zv({items:e=[],lookup:n}){var a;const r=[],l=new Map(e.map(s=>[s.id,s]));for(const[s,u]of e.entries()){const f=n.get(u.id),h=((a=f==null?void 0:f.internals)==null?void 0:a.userNode)??f;h!==void 0&&h!==u&&r.push({id:u.id,item:u,type:"replace"}),h===void 0&&r.push({item:u,type:"add",index:s})}for(const[s]of n)l.get(s)===void 0&&r.push({id:s,type:"remove"});return r}function Av(e){return{id:e.id,type:"remove"}}const Mv=e=>UT(e),xA=e=>Lw(e);function pS(e){return V.forwardRef(e)}const vA=typeof window<"u"?V.useLayoutEffect:V.useEffect;function jv(e){const[n,r]=V.useState(BigInt(0)),[l]=V.useState(()=>bA(()=>r(a=>a+BigInt(1))));return vA(()=>{const a=l.get();a.length&&(e(a),l.reset())},[n]),l}function bA(e){let n=[];return{get:()=>n,reset:()=>{n=[]},push:r=>{n.push(r),e()}}}const mS=V.createContext(null);function wA({children:e}){const n=pt(),r=V.useCallback(f=>{const{nodes:h=[],setNodes:d,hasDefaultNodes:m,onNodesChange:p,nodeLookup:y,fitViewQueued:v,onNodesChangeMiddlewareMap:w}=n.getState();let k=h;for(const _ of f)k=typeof _=="function"?_(k):_;let S=zv({items:k,lookup:y});for(const _ of w.values())S=_(S);m&&d(k),S.length>0?p==null||p(S):v&&window.requestAnimationFrame(()=>{const{fitViewQueued:_,nodes:T,setNodes:E}=n.getState();_&&E(T)})},[]),l=jv(r),a=V.useCallback(f=>{const{edges:h=[],setEdges:d,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:y}=n.getState();let v=h;for(const w of f)v=typeof w=="function"?w(v):w;m?d(v):p&&p(zv({items:v,lookup:y}))},[]),s=jv(a),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:s}),[]);return b.jsx(mS.Provider,{value:u,children:e})}function SA(){const e=V.useContext(mS);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const _A=e=>!!e.panZoom;function Fo(){const e=gA(),n=pt(),r=SA(),l=Ge(_A),a=V.useMemo(()=>{const s=p=>n.getState().nodeLookup.get(p),u=p=>{r.nodeQueue.push(p)},f=p=>{r.edgeQueue.push(p)},h=p=>{var _,T;const{nodeLookup:y,nodeOrigin:v}=n.getState(),w=Mv(p)?p:y.get(p.id),k=w.parentId?Vw(w.position,w.measured,w.parentId,y,v):w.position,S={...w,position:k,width:((_=w.measured)==null?void 0:_.width)??w.width,height:((T=w.measured)==null?void 0:T.height)??w.height};return aa(S)},d=(p,y,v={replace:!1})=>{u(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&Mv(S)?S:{...k,...S}}return k}))},m=(p,y,v={replace:!1})=>{f(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&xA(S)?S:{...k,...S}}return k}))};return{getNodes:()=>n.getState().nodes.map(p=>({...p})),getNode:p=>{var y;return(y=s(p))==null?void 0:y.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:p=[]}=n.getState();return p.map(y=>({...y}))},getEdge:p=>n.getState().edgeLookup.get(p),setNodes:u,setEdges:f,addNodes:p=>{const y=Array.isArray(p)?p:[p];r.nodeQueue.push(v=>[...v,...y])},addEdges:p=>{const y=Array.isArray(p)?p:[p];r.edgeQueue.push(v=>[...v,...y])},toObject:()=>{const{nodes:p=[],edges:y=[],transform:v}=n.getState(),[w,k,S]=v;return{nodes:p.map(_=>({..._})),edges:y.map(_=>({..._})),viewport:{x:w,y:k,zoom:S}}},deleteElements:async({nodes:p=[],edges:y=[]})=>{const{nodes:v,edges:w,onNodesDelete:k,onEdgesDelete:S,triggerNodeChanges:_,triggerEdgeChanges:T,onDelete:E,onBeforeDelete:z}=n.getState(),{nodes:I,edges:A}=await $T({nodesToRemove:p,edgesToRemove:y,nodes:v,edges:w,onBeforeDelete:z}),L=A.length>0,D=I.length>0;if(L){const U=A.map(Av);S==null||S(A),T(U)}if(D){const U=I.map(Av);k==null||k(I),_(U)}return(D||L)&&(E==null||E({nodes:I,edges:A})),{deletedNodes:I,deletedEdges:A}},getIntersectingNodes:(p,y=!0,v)=>{const w=rv(p),k=w?p:h(p),S=v!==void 0;return k?(v||n.getState().nodes).filter(_=>{const T=n.getState().nodeLookup.get(_.id);if(T&&!w&&(_.id===p.id||!T.internals.positionAbsolute))return!1;const E=aa(S?_:T),z=Ro(E,k);return y&&z>0||z>=E.width*E.height||z>=k.width*k.height}):[]},isNodeIntersecting:(p,y,v=!0)=>{const k=rv(p)?p:h(p);if(!k)return!1;const S=Ro(k,y);return v&&S>0||S>=y.width*y.height||S>=k.width*k.height},updateNode:d,updateNodeData:(p,y,v={replace:!1})=>{d(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},updateEdge:m,updateEdgeData:(p,y,v={replace:!1})=>{m(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},getNodesBounds:p=>{const{nodeLookup:y,nodeOrigin:v}=n.getState();return IT(p,{nodeLookup:y,nodeOrigin:v})},getHandleConnections:({type:p,id:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}-${p}${y?`-${y}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}${p?y?`-${p}-${y}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const y=n.getState().fitViewResolver??QT();return n.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:y}),r.nodeQueue.push(v=>[...v]),y.promise}}},[]);return V.useMemo(()=>({...a,...e,viewportInitialized:l}),[l])}const Ov=e=>e.selected,EA=typeof window<"u"?window:void 0;function NA({deleteKeyCode:e,multiSelectionKeyCode:n}){const r=pt(),{deleteElements:l}=Fo(),a=Ho(e,{actInsideInputWithModifier:!1}),s=Ho(n,{target:EA});V.useEffect(()=>{if(a){const{edges:u,nodes:f}=r.getState();l({nodes:f.filter(Ov),edges:u.filter(Ov)}),r.setState({nodesSelectionActive:!1})}},[a]),V.useEffect(()=>{r.setState({multiSelectionActive:s})},[s])}function kA(e){const n=pt();V.useEffect(()=>{const r=()=>{var a,s,u,f;if(!e.current||!(((s=(a=e.current).checkVisibility)==null?void 0:s.call(a))??!0))return!1;const l=um(e.current);(l.height===0||l.width===0)&&((f=(u=n.getState()).onError)==null||f.call(u,"004",nr.error004())),n.setState({width:l.width||500,height:l.height||500})};if(e.current){r(),window.addEventListener("resize",r);const l=new ResizeObserver(()=>r());return l.observe(e.current),()=>{window.removeEventListener("resize",r),l&&e.current&&l.unobserve(e.current)}}},[])}const Ec={position:"absolute",width:"100%",height:"100%",top:0,left:0},CA=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function TA({onPaneContextMenu:e,zoomOnScroll:n=!0,zoomOnPinch:r=!0,panOnScroll:l=!1,panOnScrollSpeed:a=.5,panOnScrollMode:s=$i.Free,zoomOnDoubleClick:u=!0,panOnDrag:f=!0,defaultViewport:h,translateExtent:d,minZoom:m,maxZoom:p,zoomActivationKeyCode:y,preventScrolling:v=!0,children:w,noWheelClassName:k,noPanClassName:S,onViewportChange:_,isControlledViewport:T,paneClickDistance:E,selectionOnDrag:z}){const I=pt(),A=V.useRef(null),{userSelectionActive:L,lib:D,connectionInProgress:U}=Ge(CA,ht),X=Ho(y),H=V.useRef();kA(A);const q=V.useCallback(ee=>{_==null||_({x:ee[0],y:ee[1],zoom:ee[2]}),T||I.setState({transform:ee})},[_,T]);return V.useEffect(()=>{if(A.current){H.current=jz({domNode:A.current,minZoom:m,maxZoom:p,translateExtent:d,viewport:h,onDraggingChange:M=>I.setState($=>$.paneDragging===M?$:{paneDragging:M}),onPanZoomStart:(M,$)=>{const{onViewportChangeStart:Q,onMoveStart:K}=I.getState();K==null||K(M,$),Q==null||Q($)},onPanZoom:(M,$)=>{const{onViewportChange:Q,onMove:K}=I.getState();K==null||K(M,$),Q==null||Q($)},onPanZoomEnd:(M,$)=>{const{onViewportChangeEnd:Q,onMoveEnd:K}=I.getState();K==null||K(M,$),Q==null||Q($)}});const{x:ee,y:R,zoom:G}=H.current.getViewport();return I.setState({panZoom:H.current,transform:[ee,R,G],domNode:A.current.closest(".react-flow")}),()=>{var M;(M=H.current)==null||M.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=H.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:n,zoomOnPinch:r,panOnScroll:l,panOnScrollSpeed:a,panOnScrollMode:s,zoomOnDoubleClick:u,panOnDrag:f,zoomActivationKeyPressed:X,preventScrolling:v,noPanClassName:S,userSelectionActive:L,noWheelClassName:k,lib:D,onTransformChange:q,connectionInProgress:U,selectionOnDrag:z,paneClickDistance:E})},[e,n,r,l,a,s,u,f,X,v,S,L,k,D,q,U,z,E]),b.jsx("div",{className:"react-flow__renderer",ref:A,style:Ec,children:w})}const zA=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function AA(){const{userSelectionActive:e,userSelectionRect:n}=Ge(zA,ht);return e&&n?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const ch=(e,n)=>r=>{r.target===n.current&&(e==null||e(r))},MA=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function jA({isSelecting:e,selectionKeyPressed:n,selectionMode:r=Do.Full,panOnDrag:l,paneClickDistance:a,selectionOnDrag:s,onSelectionStart:u,onSelectionEnd:f,onPaneClick:h,onPaneContextMenu:d,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:y,onPaneMouseLeave:v,children:w}){const k=pt(),{userSelectionActive:S,elementsSelectable:_,dragging:T,connectionInProgress:E}=Ge(MA,ht),z=_&&(e||S),I=V.useRef(null),A=V.useRef(),L=V.useRef(new Set),D=V.useRef(new Set),U=V.useRef(!1),X=Q=>{if(U.current||E){U.current=!1;return}h==null||h(Q),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},H=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}d==null||d(Q)},q=m?Q=>m(Q):void 0,ee=Q=>{U.current&&(Q.stopPropagation(),U.current=!1)},R=Q=>{var F,J;const{domNode:K}=k.getState();if(A.current=K==null?void 0:K.getBoundingClientRect(),!A.current)return;const j=Q.target===I.current;if(!j&&!!Q.target.closest(".nokey")||!e||!(s&&j||n)||Q.button!==0||!Q.isPrimary)return;(J=(F=Q.target)==null?void 0:F.setPointerCapture)==null||J.call(F,Q.pointerId),U.current=!1;const{x:N,y:Y}=In(Q.nativeEvent,A.current);k.setState({userSelectionRect:{width:0,height:0,startX:N,startY:Y,x:N,y:Y}}),j||(Q.stopPropagation(),Q.preventDefault())},G=Q=>{const{userSelectionRect:K,transform:j,nodeLookup:B,edgeLookup:P,connectionLookup:N,triggerNodeChanges:Y,triggerEdgeChanges:F,defaultEdgeOptions:J,resetSelectedElements:ne}=k.getState();if(!A.current||!K)return;const{x:re,y:se}=In(Q.nativeEvent,A.current),{startX:ye,startY:ve}=K;if(!U.current){const Ce=n?0:a;if(Math.hypot(re-ye,se-ve)<=Ce)return;ne(),u==null||u(Q)}U.current=!0;const xe={startX:ye,startY:ve,x:reCe.id)),D.current=new Set;const Me=(J==null?void 0:J.selectable)??!0;for(const Ce of L.current){const ut=N.get(Ce);if(ut)for(const{edgeId:tt}of ut.values()){const At=P.get(tt);At&&(At.selectable??Me)&&D.current.add(tt)}}if(!iv(pe,L.current)){const Ce=Ql(B,L.current,!0);Y(Ce)}if(!iv(_e,D.current)){const Ce=Ql(P,D.current);F(Ce)}k.setState({userSelectionRect:xe,userSelectionActive:!0,nodesSelectionActive:!1})},M=Q=>{var K,j;Q.button===0&&((j=(K=Q.target)==null?void 0:K.releasePointerCapture)==null||j.call(K,Q.pointerId),!S&&Q.target===I.current&&k.getState().userSelectionRect&&(X==null||X(Q)),k.setState({userSelectionActive:!1,userSelectionRect:null}),U.current&&(f==null||f(Q),k.setState({nodesSelectionActive:L.current.size>0})))},$=l===!0||Array.isArray(l)&&l.includes(0);return b.jsxs("div",{className:zt(["react-flow__pane",{draggable:$,dragging:T,selection:e}]),onClick:z?void 0:ch(X,I),onContextMenu:ch(H,I),onWheel:ch(q,I),onPointerEnter:z?void 0:p,onPointerMove:z?G:y,onPointerUp:z?M:void 0,onPointerDownCapture:z?R:void 0,onClickCapture:z?ee:void 0,onPointerLeave:v,ref:I,style:Ec,children:[w,b.jsx(AA,{})]})}function Lp({id:e,store:n,unselect:r=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:s,multiSelectionActive:u,nodeLookup:f,onError:h}=n.getState(),d=f.get(e);if(!d){h==null||h("012",nr.error012(e));return}n.setState({nodesSelectionActive:!1}),d.selected?(r||d.selected&&u)&&(s({nodes:[d],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([e])}function gS({nodeRef:e,disabled:n=!1,noDragClassName:r,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:u}){const f=pt(),[h,d]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=xz({getStoreItems:()=>f.getState(),onNodeMouseDown:p=>{Lp({id:p,store:f,nodeRef:e})},onDragStart:()=>{d(!0)},onDragStop:()=>{d(!1)}})},[]),V.useEffect(()=>{if(!(n||!e.current||!m.current))return m.current.update({noDragClassName:r,handleSelector:l,domNode:e.current,isSelectable:s,nodeId:a,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[r,l,n,s,e,a,u]),h}const OA=e=>n=>n.selected&&(n.draggable||e&&typeof n.draggable>"u");function yS(){const e=pt();return V.useCallback(r=>{const{nodeExtent:l,snapToGrid:a,snapGrid:s,nodesDraggable:u,onError:f,updateNodePositions:h,nodeLookup:d,nodeOrigin:m}=e.getState(),p=new Map,y=OA(u),v=a?s[0]:5,w=a?s[1]:5,k=r.direction.x*v*r.factor,S=r.direction.y*w*r.factor;for(const[,_]of d){if(!y(_))continue;let T={x:_.internals.positionAbsolute.x+k,y:_.internals.positionAbsolute.y+S};a&&(T=Po(T,s));const{position:E,positionAbsolute:z}=Hw({nodeId:_.id,nextPosition:T,nodeLookup:d,nodeExtent:l,nodeOrigin:m,onError:f});_.position=E,_.internals.positionAbsolute=z,p.set(_.id,_)}h(p)},[])}const gm=V.createContext(null),DA=gm.Provider;gm.Consumer;const xS=()=>V.useContext(gm),RA=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),LA=(e,n,r)=>l=>{const{connectionClickStartHandle:a,connectionMode:s,connection:u}=l,{fromHandle:f,toHandle:h,isValid:d}=u,m=(h==null?void 0:h.nodeId)===e&&(h==null?void 0:h.id)===n&&(h==null?void 0:h.type)===r;return{connectingFrom:(f==null?void 0:f.nodeId)===e&&(f==null?void 0:f.id)===n&&(f==null?void 0:f.type)===r,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===n&&(a==null?void 0:a.type)===r,isPossibleEndHandle:s===ia.Strict?(f==null?void 0:f.type)!==r:e!==(f==null?void 0:f.nodeId)||n!==(f==null?void 0:f.id),connectionInProcess:!!f,clickConnectionInProcess:!!a,valid:m&&d}};function HA({type:e="source",position:n=be.Top,isValidConnection:r,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:s=!0,id:u,onConnect:f,children:h,className:d,onMouseDown:m,onTouchStart:p,...y},v){var G,M;const w=u||null,k=e==="target",S=pt(),_=xS(),{connectOnClick:T,noPanClassName:E,rfId:z}=Ge(RA,ht),{connectingFrom:I,connectingTo:A,clickConnecting:L,isPossibleEndHandle:D,connectionInProcess:U,clickConnectionInProcess:X,valid:H}=Ge(LA(_,w,e),ht);_||(M=(G=S.getState()).onError)==null||M.call(G,"010",nr.error010());const q=$=>{const{defaultEdgeOptions:Q,onConnect:K,hasDefaultEdges:j}=S.getState(),B={...Q,...$};if(j){const{edges:P,setEdges:N}=S.getState();N(nz(B,P))}K==null||K(B),f==null||f(B)},ee=$=>{if(!_)return;const Q=$w($.nativeEvent);if(a&&(Q&&$.button===0||!Q)){const K=S.getState();Rp.onPointerDown($.nativeEvent,{handleDomNode:$.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:k,handleId:w,nodeId:_,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...j)=>{var B,P;return(P=(B=S.getState()).onConnectEnd)==null?void 0:P.call(B,...j)},updateConnection:K.updateConnection,onConnect:q,isValidConnection:r||((...j)=>{var B,P;return((P=(B=S.getState()).isValidConnection)==null?void 0:P.call(B,...j))??!0}),getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}Q?m==null||m($):p==null||p($)},R=$=>{const{onClickConnectStart:Q,onClickConnectEnd:K,connectionClickStartHandle:j,connectionMode:B,isValidConnection:P,lib:N,rfId:Y,nodeLookup:F,connection:J}=S.getState();if(!_||!j&&!a)return;if(!j){Q==null||Q($.nativeEvent,{nodeId:_,handleId:w,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:_,type:e,id:w}});return}const ne=Gw($.target),re=r||P,{connection:se,isValid:ye}=Rp.isValid($.nativeEvent,{handle:{nodeId:_,id:w,type:e},connectionMode:B,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:re,flowId:Y,doc:ne,lib:N,nodeLookup:F});ye&&se&&q(se);const ve=structuredClone(J);delete ve.inProgress,ve.toPosition=ve.toHandle?ve.toHandle.position:null,K==null||K($,ve),S.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":w,"data-nodeid":_,"data-handlepos":n,"data-id":`${z}-${_}-${w}-${e}`,className:zt(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",E,d,{source:!k,target:k,connectable:l,connectablestart:a,connectableend:s,clickconnecting:L,connectingfrom:I,connectingto:A,valid:H,connectionindicator:l&&(!U||D)&&(U||X?s:a)}]),onMouseDown:ee,onTouchStart:ee,onClick:T?R:void 0,ref:v,...y,children:h})}const $t=V.memo(pS(HA));function BA({data:e,isConnectable:n,sourcePosition:r=be.Bottom}){return b.jsxs(b.Fragment,{children:[e==null?void 0:e.label,b.jsx($t,{type:"source",position:r,isConnectable:n})]})}function qA({data:e,isConnectable:n,targetPosition:r=be.Top,sourcePosition:l=be.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label,b.jsx($t,{type:"source",position:l,isConnectable:n})]})}function UA(){return null}function IA({data:e,isConnectable:n,targetPosition:r=be.Top}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label]})}const ac={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Dv={input:BA,default:qA,output:IA,group:UA};function VA(e){var n,r,l,a;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((n=e.style)==null?void 0:n.width),height:e.height??e.initialHeight??((r=e.style)==null?void 0:r.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((a=e.style)==null?void 0:a.height)}}const GA=e=>{const{width:n,height:r,x:l,y:a}=$o(e.nodeLookup,{filter:s=>!!s.selected});return{width:Un(n)?n:null,height:Un(r)?r:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${a}px)`}};function YA({onSelectionContextMenu:e,noPanClassName:n,disableKeyboardA11y:r}){const l=pt(),{width:a,height:s,transformString:u,userSelectionActive:f}=Ge(GA,ht),h=yS(),d=V.useRef(null);V.useEffect(()=>{var v;r||(v=d.current)==null||v.focus({preventScroll:!0})},[r]);const m=!f&&a!==null&&s!==null;if(gS({nodeRef:d,disabled:!m}),!m)return null;const p=e?v=>{const w=l.getState().nodes.filter(k=>k.selected);e(v,w)}:void 0,y=v=>{Object.prototype.hasOwnProperty.call(ac,v.key)&&(v.preventDefault(),h({direction:ac[v.key],factor:v.shiftKey?4:1}))};return b.jsx("div",{className:zt(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:b.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:r?void 0:-1,onKeyDown:r?void 0:y,style:{width:a,height:s}})})}const Rv=typeof window<"u"?window:void 0,$A=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function vS({children:e,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,paneClickDistance:f,deleteKeyCode:h,selectionKeyCode:d,selectionOnDrag:m,selectionMode:p,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:w,panActivationKeyCode:k,zoomActivationKeyCode:S,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:z,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:L,panOnDrag:D,defaultViewport:U,translateExtent:X,minZoom:H,maxZoom:q,preventScrolling:ee,onSelectionContextMenu:R,noWheelClassName:G,noPanClassName:M,disableKeyboardA11y:$,onViewportChange:Q,isControlledViewport:K}){const{nodesSelectionActive:j,userSelectionActive:B}=Ge($A,ht),P=Ho(d,{target:Rv}),N=Ho(k,{target:Rv}),Y=N||D,F=N||z,J=m&&Y!==!0,ne=P||B||J;return NA({deleteKeyCode:h,multiSelectionKeyCode:w}),b.jsx(TA,{onPaneContextMenu:s,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:L,panOnDrag:!P&&Y,defaultViewport:U,translateExtent:X,minZoom:H,maxZoom:q,zoomActivationKeyCode:S,preventScrolling:ee,noWheelClassName:G,noPanClassName:M,onViewportChange:Q,isControlledViewport:K,paneClickDistance:f,selectionOnDrag:J,children:b.jsxs(jA,{onSelectionStart:y,onSelectionEnd:v,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,panOnDrag:Y,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:P,paneClickDistance:f,selectionOnDrag:J,children:[e,j&&b.jsx(YA,{onSelectionContextMenu:R,noPanClassName:M,disableKeyboardA11y:$})]})})}vS.displayName="FlowRenderer";const PA=V.memo(vS),XA=e=>n=>e?om(n.nodeLookup,{x:0,y:0,width:n.width,height:n.height},n.transform,!0).map(r=>r.id):Array.from(n.nodeLookup.keys());function FA(e){return Ge(V.useCallback(XA(e),[e]),ht)}const QA=e=>e.updateNodeInternals;function ZA(){const e=Ge(QA),[n]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(r=>{const l=new Map;r.forEach(a=>{const s=a.target.getAttribute("data-id");l.set(s,{id:s,nodeElement:a.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{n==null||n.disconnect()},[n]),n}function KA({node:e,nodeType:n,hasDimensions:r,resizeObserver:l}){const a=pt(),s=V.useRef(null),u=V.useRef(null),f=V.useRef(e.sourcePosition),h=V.useRef(e.targetPosition),d=V.useRef(n),m=r&&!!e.internals.handleBounds;return V.useEffect(()=>{s.current&&!e.hidden&&(!m||u.current!==s.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(s.current),u.current=s.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(s.current){const p=d.current!==n,y=f.current!==e.sourcePosition,v=h.current!==e.targetPosition;(p||y||v)&&(d.current=n,f.current=e.sourcePosition,h.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,n,e.sourcePosition,e.targetPosition]),s}function JA({id:e,onClick:n,onMouseEnter:r,onMouseMove:l,onMouseLeave:a,onContextMenu:s,onDoubleClick:u,nodesDraggable:f,elementsSelectable:h,nodesConnectable:d,nodesFocusable:m,resizeObserver:p,noDragClassName:y,noPanClassName:v,disableKeyboardA11y:w,rfId:k,nodeTypes:S,nodeClickDistance:_,onError:T}){const{node:E,internals:z,isParent:I}=Ge(re=>{const se=re.nodeLookup.get(e),ye=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:ye}},ht);let A=E.type||"default",L=(S==null?void 0:S[A])||Dv[A];L===void 0&&(T==null||T("003",nr.error003(A)),A="default",L=(S==null?void 0:S.default)||Dv.default);const D=!!(E.draggable||f&&typeof E.draggable>"u"),U=!!(E.selectable||h&&typeof E.selectable>"u"),X=!!(E.connectable||d&&typeof E.connectable>"u"),H=!!(E.focusable||m&&typeof E.focusable>"u"),q=pt(),ee=Iw(E),R=KA({node:E,nodeType:A,hasDimensions:ee,resizeObserver:p}),G=gS({nodeRef:R,disabled:E.hidden||!D,noDragClassName:y,handleSelector:E.dragHandle,nodeId:e,isSelectable:U,nodeClickDistance:_}),M=yS();if(E.hidden)return null;const $=jr(E),Q=VA(E),K=U||D||n||r||l||a,j=r?re=>r(re,{...z.userNode}):void 0,B=l?re=>l(re,{...z.userNode}):void 0,P=a?re=>a(re,{...z.userNode}):void 0,N=s?re=>s(re,{...z.userNode}):void 0,Y=u?re=>u(re,{...z.userNode}):void 0,F=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:ye}=q.getState();U&&(!se||!D||ye>0)&&Lp({id:e,store:q,nodeRef:R}),n&&n(re,{...z.userNode})},J=re=>{if(!(Yw(re.nativeEvent)||w)){if(jw.includes(re.key)&&U){const se=re.key==="Escape";Lp({id:e,store:q,unselect:se,nodeRef:R})}else if(D&&E.selected&&Object.prototype.hasOwnProperty.call(ac,re.key)){re.preventDefault();const{ariaLabelConfig:se}=q.getState();q.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~z.positionAbsolute.x,y:~~z.positionAbsolute.y})}),M({direction:ac[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=R.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:ye,autoPanOnNodeFocus:ve,setCenter:xe}=q.getState();if(!ve)return;om(new Map([[e,E]]),{x:0,y:0,width:se,height:ye},re,!0).length>0||xe(E.position.x+$.width/2,E.position.y+$.height/2,{zoom:re[2]})};return b.jsx("div",{className:zt(["react-flow__node",`react-flow__node-${A}`,{[v]:D},E.className,{selected:E.selected,selectable:U,parent:I,draggable:D,dragging:G}]),ref:R,style:{zIndex:z.z,transform:`translate(${z.positionAbsolute.x}px,${z.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:ee?"visible":"hidden",...E.style,...Q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:B,onMouseLeave:P,onContextMenu:N,onClick:F,onDoubleClick:Y,onKeyDown:H?J:void 0,tabIndex:H?0:void 0,onFocus:H?ne:void 0,role:E.ariaRole??(H?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${sS}-${k}`,"aria-label":E.ariaLabel,...E.domAttributes,children:b.jsx(DA,{value:e,children:b.jsx(L,{id:e,data:E.data,type:A,positionAbsoluteX:z.positionAbsolute.x,positionAbsoluteY:z.positionAbsolute.y,selected:E.selected??!1,selectable:U,draggable:D,deletable:E.deletable??!0,isConnectable:X,sourcePosition:E.sourcePosition,targetPosition:E.targetPosition,dragging:G,dragHandle:E.dragHandle,zIndex:z.z,parentId:E.parentId,...$})})})}var WA=V.memo(JA);const eM=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function bS(e){const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,onError:s}=Ge(eM,ht),u=FA(e.onlyRenderVisibleElements),f=ZA();return b.jsx("div",{className:"react-flow__nodes",style:Ec,children:u.map(h=>b.jsx(WA,{id:h,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:f,nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:s},h))})}bS.displayName="NodeRenderer";const tM=V.memo(bS);function nM(e){return Ge(V.useCallback(r=>{if(!e)return r.edges.map(a=>a.id);const l=[];if(r.width&&r.height)for(const a of r.edges){const s=r.nodeLookup.get(a.source),u=r.nodeLookup.get(a.target);s&&u&&WT({sourceNode:s,targetNode:u,width:r.width,height:r.height,transform:r.transform})&&l.push(a.id)}return l},[e]),ht)}const rM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:r,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},iM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:r,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Lv={[rc.Arrow]:rM,[rc.ArrowClosed]:iM};function lM(e){const n=pt();return V.useMemo(()=>{var a,s;return Object.prototype.hasOwnProperty.call(Lv,e)?Lv[e]:((s=(a=n.getState()).onError)==null||s.call(a,"009",nr.error009(e)),null)},[e])}const aM=({id:e,type:n,color:r,width:l=12.5,height:a=12.5,markerUnits:s="strokeWidth",strokeWidth:u,orient:f="auto-start-reverse"})=>{const h=lM(n);return h?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:f,refX:"0",refY:"0",children:b.jsx(h,{color:r,strokeWidth:u})}):null},wS=({defaultColor:e,rfId:n})=>{const r=Ge(s=>s.edges),l=Ge(s=>s.defaultEdgeOptions),a=V.useMemo(()=>oz(r,{id:n,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[r,l,n,e]);return a.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:a.map(s=>b.jsx(aM,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};wS.displayName="MarkerDefinitions";var oM=V.memo(wS);function SS({x:e,y:n,label:r,labelStyle:l,labelShowBg:a=!0,labelBgStyle:s,labelBgPadding:u=[2,4],labelBgBorderRadius:f=2,children:h,className:d,...m}){const[p,y]=V.useState({x:1,y:0,width:0,height:0}),v=zt(["react-flow__edge-textwrapper",d]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const k=w.current.getBBox();y({x:k.x,y:k.y,width:k.width,height:k.height})}},[r]),r?b.jsxs("g",{transform:`translate(${e-p.width/2} ${n-p.height/2})`,className:v,visibility:p.width?"visible":"hidden",...m,children:[a&&b.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:s,rx:f,ry:f}),b.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:r}),h]}):null}SS.displayName="EdgeText";const sM=V.memo(SS);function Qo({path:e,labelX:n,labelY:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:h,interactionWidth:d=20,...m}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...m,d:e,fill:"none",className:zt(["react-flow__edge-path",m.className])}),d?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:d,className:"react-flow__edge-interaction"}):null,l&&Un(n)&&Un(r)?b.jsx(sM,{x:n,y:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:h}):null]})}function Hv({pos:e,x1:n,y1:r,x2:l,y2:a}){return e===be.Left||e===be.Right?[.5*(n+l),r]:[n,.5*(r+a)]}function _S({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top}){const[u,f]=Hv({pos:r,x1:e,y1:n,x2:l,y2:a}),[h,d]=Hv({pos:s,x1:l,y1:a,x2:e,y2:n}),[m,p,y,v]=Pw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:u,sourceControlY:f,targetControlX:h,targetControlY:d});return[`M${e},${n} C${u},${f} ${h},${d} ${l},${a}`,m,p,y,v]}function ES(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})=>{const[T,E,z]=_S({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f}),I=e.isInternal?void 0:n;return b.jsx(Qo,{id:I,path:T,labelX:E,labelY:z,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})})}const uM=ES({isInternal:!1}),NS=ES({isInternal:!0});uM.displayName="SimpleBezierEdge";NS.displayName="SimpleBezierEdgeInternal";function kS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,sourcePosition:v=be.Bottom,targetPosition:w=be.Top,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=jp({sourceX:r,sourceY:l,sourcePosition:v,targetX:a,targetY:s,targetPosition:w,borderRadius:_==null?void 0:_.borderRadius,offset:_==null?void 0:_.offset,stepPosition:_==null?void 0:_.stepPosition}),A=e.isInternal?void 0:n;return b.jsx(Qo,{id:A,path:E,labelX:z,labelY:I,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:k,markerStart:S,interactionWidth:T})})}const CS=kS({isInternal:!1}),TS=kS({isInternal:!0});CS.displayName="SmoothStepEdge";TS.displayName="SmoothStepEdgeInternal";function zS(e){return V.memo(({id:n,...r})=>{var a;const l=e.isInternal?void 0:n;return b.jsx(CS,{...r,id:l,pathOptions:V.useMemo(()=>{var s;return{borderRadius:0,offset:(s=r.pathOptions)==null?void 0:s.offset}},[(a=r.pathOptions)==null?void 0:a.offset])})})}const cM=zS({isInternal:!1}),AS=zS({isInternal:!0});cM.displayName="StepEdge";AS.displayName="StepEdgeInternal";function MS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[S,_,T]=Fw({sourceX:r,sourceY:l,targetX:a,targetY:s}),E=e.isInternal?void 0:n;return b.jsx(Qo,{id:E,path:S,labelX:_,labelY:T,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})})}const fM=MS({isInternal:!1}),jS=MS({isInternal:!0});fM.displayName="StraightEdge";jS.displayName="StraightEdgeInternal";function OS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u=be.Bottom,targetPosition:f=be.Top,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=cm({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f,curvature:_==null?void 0:_.curvature}),A=e.isInternal?void 0:n;return b.jsx(Qo,{id:A,path:E,labelX:z,labelY:I,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:T})})}const dM=OS({isInternal:!1}),DS=OS({isInternal:!0});dM.displayName="BezierEdge";DS.displayName="BezierEdgeInternal";const Bv={default:DS,straight:jS,step:AS,smoothstep:TS,simplebezier:NS},qv={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},hM=(e,n,r)=>r===be.Left?e-n:r===be.Right?e+n:e,pM=(e,n,r)=>r===be.Top?e-n:r===be.Bottom?e+n:e,Uv="react-flow__edgeupdater";function Iv({position:e,centerX:n,centerY:r,radius:l=10,onMouseDown:a,onMouseEnter:s,onMouseOut:u,type:f}){return b.jsx("circle",{onMouseDown:a,onMouseEnter:s,onMouseOut:u,className:zt([Uv,`${Uv}-${f}`]),cx:hM(n,l,e),cy:pM(r,l,e),r:l,stroke:"transparent",fill:"transparent"})}function mM({isReconnectable:e,reconnectRadius:n,edge:r,sourceX:l,sourceY:a,targetX:s,targetY:u,sourcePosition:f,targetPosition:h,onReconnect:d,onReconnectStart:m,onReconnectEnd:p,setReconnecting:y,setUpdateHover:v}){const w=pt(),k=(z,I)=>{if(z.button!==0)return;const{autoPanOnConnect:A,domNode:L,connectionMode:D,connectionRadius:U,lib:X,onConnectStart:H,cancelConnection:q,nodeLookup:ee,rfId:R,panBy:G,updateConnection:M}=w.getState(),$=I.type==="target",Q=(B,P)=>{y(!1),p==null||p(B,r,I.type,P)},K=B=>d==null?void 0:d(r,B),j=(B,P)=>{y(!0),m==null||m(z,r,I.type),H==null||H(B,P)};Rp.onPointerDown(z.nativeEvent,{autoPanOnConnect:A,connectionMode:D,connectionRadius:U,domNode:L,handleId:I.id,nodeId:I.nodeId,nodeLookup:ee,isTarget:$,edgeUpdaterType:I.type,lib:X,flowId:R,cancelConnection:q,panBy:G,isValidConnection:(...B)=>{var P,N;return((N=(P=w.getState()).isValidConnection)==null?void 0:N.call(P,...B))??!0},onConnect:K,onConnectStart:j,onConnectEnd:(...B)=>{var P,N;return(N=(P=w.getState()).onConnectEnd)==null?void 0:N.call(P,...B)},onReconnectEnd:Q,updateConnection:M,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:z.currentTarget})},S=z=>k(z,{nodeId:r.target,id:r.targetHandle??null,type:"target"}),_=z=>k(z,{nodeId:r.source,id:r.sourceHandle??null,type:"source"}),T=()=>v(!0),E=()=>v(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(Iv,{position:f,centerX:l,centerY:a,radius:n,onMouseDown:S,onMouseEnter:T,onMouseOut:E,type:"source"}),(e===!0||e==="target")&&b.jsx(Iv,{position:h,centerX:s,centerY:u,radius:n,onMouseDown:_,onMouseEnter:T,onMouseOut:E,type:"target"})]})}function gM({id:e,edgesFocusable:n,edgesReconnectable:r,elementsSelectable:l,onClick:a,onDoubleClick:s,onContextMenu:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:d,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,rfId:w,edgeTypes:k,noPanClassName:S,onError:_,disableKeyboardA11y:T}){let E=Ge(xe=>xe.edgeLookup.get(e));const z=Ge(xe=>xe.defaultEdgeOptions);E=z?{...z,...E}:E;let I=E.type||"default",A=(k==null?void 0:k[I])||Bv[I];A===void 0&&(_==null||_("011",nr.error011(I)),I="default",A=(k==null?void 0:k.default)||Bv.default);const L=!!(E.focusable||n&&typeof E.focusable>"u"),D=typeof p<"u"&&(E.reconnectable||r&&typeof E.reconnectable>"u"),U=!!(E.selectable||l&&typeof E.selectable>"u"),X=V.useRef(null),[H,q]=V.useState(!1),[ee,R]=V.useState(!1),G=pt(),{zIndex:M,sourceX:$,sourceY:Q,targetX:K,targetY:j,sourcePosition:B,targetPosition:P}=Ge(V.useCallback(xe=>{const pe=xe.nodeLookup.get(E.source),_e=xe.nodeLookup.get(E.target);if(!pe||!_e)return{zIndex:E.zIndex,...qv};const Me=az({id:e,sourceNode:pe,targetNode:_e,sourceHandle:E.sourceHandle||null,targetHandle:E.targetHandle||null,connectionMode:xe.connectionMode,onError:_});return{zIndex:JT({selected:E.selected,zIndex:E.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:xe.elevateEdgesOnSelect,zIndexMode:xe.zIndexMode}),...Me||qv}},[E.source,E.target,E.sourceHandle,E.targetHandle,E.selected,E.zIndex]),ht),N=V.useMemo(()=>E.markerStart?`url('#${Op(E.markerStart,w)}')`:void 0,[E.markerStart,w]),Y=V.useMemo(()=>E.markerEnd?`url('#${Op(E.markerEnd,w)}')`:void 0,[E.markerEnd,w]);if(E.hidden||$===null||Q===null||K===null||j===null)return null;const F=xe=>{var Ce;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:Me}=G.getState();U&&(G.setState({nodesSelectionActive:!1}),E.selected&&Me?(_e({nodes:[],edges:[E]}),(Ce=X.current)==null||Ce.blur()):pe([e])),a&&a(xe,E)},J=s?xe=>{s(xe,{...E})}:void 0,ne=u?xe=>{u(xe,{...E})}:void 0,re=f?xe=>{f(xe,{...E})}:void 0,se=h?xe=>{h(xe,{...E})}:void 0,ye=d?xe=>{d(xe,{...E})}:void 0,ve=xe=>{var pe;if(!T&&jw.includes(xe.key)&&U){const{unselectNodesAndEdges:_e,addSelectedEdges:Me}=G.getState();xe.key==="Escape"?((pe=X.current)==null||pe.blur(),_e({edges:[E]})):Me([e])}};return b.jsx("svg",{style:{zIndex:M},children:b.jsxs("g",{className:zt(["react-flow__edge",`react-flow__edge-${I}`,E.className,S,{selected:E.selected,animated:E.animated,inactive:!U&&!a,updating:H,selectable:U}]),onClick:F,onDoubleClick:J,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:ye,onKeyDown:L?ve:void 0,tabIndex:L?0:void 0,role:E.ariaRole??(L?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":E.ariaLabel===null?void 0:E.ariaLabel||`Edge from ${E.source} to ${E.target}`,"aria-describedby":L?`${uS}-${w}`:void 0,ref:X,...E.domAttributes,children:[!ee&&b.jsx(A,{id:e,source:E.source,target:E.target,type:E.type,selected:E.selected,animated:E.animated,selectable:U,deletable:E.deletable??!0,label:E.label,labelStyle:E.labelStyle,labelShowBg:E.labelShowBg,labelBgStyle:E.labelBgStyle,labelBgPadding:E.labelBgPadding,labelBgBorderRadius:E.labelBgBorderRadius,sourceX:$,sourceY:Q,targetX:K,targetY:j,sourcePosition:B,targetPosition:P,data:E.data,style:E.style,sourceHandleId:E.sourceHandle,targetHandleId:E.targetHandle,markerStart:N,markerEnd:Y,pathOptions:"pathOptions"in E?E.pathOptions:void 0,interactionWidth:E.interactionWidth}),D&&b.jsx(mM,{edge:E,isReconnectable:D,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,sourceX:$,sourceY:Q,targetX:K,targetY:j,sourcePosition:B,targetPosition:P,setUpdateHover:q,setReconnecting:R})]})})}var yM=V.memo(gM);const xM=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function RS({defaultMarkerColor:e,onlyRenderVisibleElements:n,rfId:r,edgeTypes:l,noPanClassName:a,onReconnect:s,onEdgeContextMenu:u,onEdgeMouseEnter:f,onEdgeMouseMove:h,onEdgeMouseLeave:d,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,disableKeyboardA11y:k}){const{edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,onError:E}=Ge(xM,ht),z=nM(n);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(oM,{defaultColor:e,rfId:r}),z.map(I=>b.jsx(yM,{id:I,edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,noPanClassName:a,onReconnect:s,onContextMenu:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:d,onClick:m,reconnectRadius:p,onDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,rfId:r,onError:E,edgeTypes:l,disableKeyboardA11y:k},I))]})}RS.displayName="EdgeRenderer";const vM=V.memo(RS),bM=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function wM({children:e}){const n=Ge(bM);return b.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}function SM(e){const n=Fo(),r=V.useRef(!1);V.useEffect(()=>{!r.current&&n.viewportInitialized&&e&&(setTimeout(()=>e(n),1),r.current=!0)},[e,n.viewportInitialized])}const _M=e=>{var n;return(n=e.panZoom)==null?void 0:n.syncViewport};function EM(e){const n=Ge(_M),r=pt();return V.useEffect(()=>{e&&(n==null||n(e),r.setState({transform:[e.x,e.y,e.zoom]}))},[e,n]),null}function NM(e){return e.connection.inProgress?{...e.connection,to:Xo(e.connection.to,e.transform)}:{...e.connection}}function kM(e){return NM}function CM(e){const n=kM();return Ge(n,ht)}const TM=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function zM({containerStyle:e,style:n,type:r,component:l}){const{nodesConnectable:a,width:s,height:u,isValid:f,inProgress:h}=Ge(TM,ht);return!(s&&a&&h)?null:b.jsx("svg",{style:e,width:s,height:u,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:zt(["react-flow__connection",Rw(f)]),children:b.jsx(LS,{style:n,type:r,CustomComponent:l,isValid:f})})})}const LS=({style:e,type:n=pi.Bezier,CustomComponent:r,isValid:l})=>{const{inProgress:a,from:s,fromNode:u,fromHandle:f,fromPosition:h,to:d,toNode:m,toHandle:p,toPosition:y,pointer:v}=CM();if(!a)return;if(r)return b.jsx(r,{connectionLineType:n,connectionLineStyle:e,fromNode:u,fromHandle:f,fromX:s.x,fromY:s.y,toX:d.x,toY:d.y,fromPosition:h,toPosition:y,connectionStatus:Rw(l),toNode:m,toHandle:p,pointer:v});let w="";const k={sourceX:s.x,sourceY:s.y,sourcePosition:h,targetX:d.x,targetY:d.y,targetPosition:y};switch(n){case pi.Bezier:[w]=cm(k);break;case pi.SimpleBezier:[w]=_S(k);break;case pi.Step:[w]=jp({...k,borderRadius:0});break;case pi.SmoothStep:[w]=jp(k);break;default:[w]=Fw(k)}return b.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};LS.displayName="ConnectionLine";const AM={};function Vv(e=AM){V.useRef(e),pt(),V.useEffect(()=>{},[e])}function MM(){pt(),V.useRef(!1),V.useEffect(()=>{},[])}function HS({nodeTypes:e,edgeTypes:n,onInit:r,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:s,onEdgeDoubleClick:u,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:d,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:y,onSelectionEnd:v,connectionLineType:w,connectionLineStyle:k,connectionLineComponent:S,connectionLineContainerStyle:_,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:L,deleteKeyCode:D,onlyRenderVisibleElements:U,elementsSelectable:X,defaultViewport:H,translateExtent:q,minZoom:ee,maxZoom:R,preventScrolling:G,defaultMarkerColor:M,zoomOnScroll:$,zoomOnPinch:Q,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:B,zoomOnDoubleClick:P,panOnDrag:N,onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:ye,nodeClickDistance:ve,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or,viewport:ue,onViewportChange:ge}){return Vv(e),Vv(n),MM(),SM(r),EM(ue),b.jsx(PA,{onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:ye,deleteKeyCode:D,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:L,elementsSelectable:X,zoomOnScroll:$,zoomOnPinch:Q,zoomOnDoubleClick:P,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:B,panOnDrag:N,defaultViewport:H,translateExtent:q,minZoom:ee,maxZoom:R,onSelectionContextMenu:p,preventScrolling:G,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,onViewportChange:ge,isControlledViewport:!!ue,children:b.jsxs(wM,{children:[b.jsx(vM,{edgeTypes:n,onEdgeClick:a,onEdgeDoubleClick:u,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,onlyRenderVisibleElements:U,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,defaultMarkerColor:M,noPanClassName:Sn,disableKeyboardA11y:jn,rfId:Or}),b.jsx(zM,{style:k,type:w,component:S,containerStyle:_}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(tM,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:s,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:d,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:U,noPanClassName:Sn,noDragClassName:It,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}HS.displayName="GraphView";const jM=V.memo(HS),Gv=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h=.5,maxZoom:d=2,nodeOrigin:m,nodeExtent:p,zIndexMode:y="basic"}={})=>{const v=new Map,w=new Map,k=new Map,S=new Map,_=l??n??[],T=r??e??[],E=m??[0,0],z=p??Oo;Kw(k,S,_);const I=Dp(T,v,w,{nodeOrigin:E,nodeExtent:z,zIndexMode:y});let A=[0,0,1];if(u&&a&&s){const L=$o(v,{filter:H=>!!((H.width||H.initialWidth)&&(H.height||H.initialHeight))}),{x:D,y:U,zoom:X}=sm(L,a,s,h,d,(f==null?void 0:f.padding)??.1);A=[D,U,X]}return{rfId:"1",width:a??0,height:s??0,transform:A,nodes:T,nodesInitialized:I,nodeLookup:v,parentLookup:w,edges:_,edgeLookup:S,connectionLookup:k,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:r!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:h,maxZoom:d,translateExtent:Oo,nodeExtent:z,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ia.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:E,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:f,fitViewResolver:null,connection:{...Dw},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:PT,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Ow,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},OM=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h,maxZoom:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y})=>Zz((v,w)=>{async function k(){const{nodeLookup:S,panZoom:_,fitViewOptions:T,fitViewResolver:E,width:z,height:I,minZoom:A,maxZoom:L}=w();_&&(await YT({nodes:S,width:z,height:I,panZoom:_,minZoom:A,maxZoom:L},T),E==null||E.resolve(!0),v({fitViewResolver:null}))}return{...Gv({nodes:e,edges:n,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h,maxZoom:d,nodeOrigin:m,nodeExtent:p,defaultNodes:r,defaultEdges:l,zIndexMode:y}),setNodes:S=>{const{nodeLookup:_,parentLookup:T,nodeOrigin:E,elevateNodesOnSelect:z,fitViewQueued:I,zIndexMode:A}=w(),L=Dp(S,_,T,{nodeOrigin:E,nodeExtent:p,elevateNodesOnSelect:z,checkEquality:!0,zIndexMode:A});I&&L?(k(),v({nodes:S,nodesInitialized:L,fitViewQueued:!1,fitViewOptions:void 0})):v({nodes:S,nodesInitialized:L})},setEdges:S=>{const{connectionLookup:_,edgeLookup:T}=w();Kw(_,T,S),v({edges:S})},setDefaultNodesAndEdges:(S,_)=>{if(S){const{setNodes:T}=w();T(S),v({hasDefaultNodes:!0})}if(_){const{setEdges:T}=w();T(_),v({hasDefaultEdges:!0})}},updateNodeInternals:S=>{const{triggerNodeChanges:_,nodeLookup:T,parentLookup:E,domNode:z,nodeOrigin:I,nodeExtent:A,debug:L,fitViewQueued:D,zIndexMode:U}=w(),{changes:X,updatedInternals:H}=pz(S,T,E,z,I,A,U);H&&(cz(T,E,{nodeOrigin:I,nodeExtent:A,zIndexMode:U}),D?(k(),v({fitViewQueued:!1,fitViewOptions:void 0})):v({}),(X==null?void 0:X.length)>0&&(L&&console.log("React Flow: trigger node changes",X),_==null||_(X)))},updateNodePositions:(S,_=!1)=>{const T=[];let E=[];const{nodeLookup:z,triggerNodeChanges:I,connection:A,updateConnection:L,onNodesChangeMiddlewareMap:D}=w();for(const[U,X]of S){const H=z.get(U),q=!!(H!=null&&H.expandParent&&(H!=null&&H.parentId)&&(X!=null&&X.position)),ee={id:U,type:"position",position:q?{x:Math.max(0,X.position.x),y:Math.max(0,X.position.y)}:X.position,dragging:_};if(H&&A.inProgress&&A.fromNode.id===H.id){const R=Zi(H,A.fromHandle,be.Left,!0);L({...A,from:R})}q&&H.parentId&&T.push({id:U,parentId:H.parentId,rect:{...X.internals.positionAbsolute,width:X.measured.width??0,height:X.measured.height??0}}),E.push(ee)}if(T.length>0){const{parentLookup:U,nodeOrigin:X}=w(),H=mm(T,z,U,X);E.push(...H)}for(const U of D.values())E=U(E);I(E)},triggerNodeChanges:S=>{const{onNodesChange:_,setNodes:T,nodes:E,hasDefaultNodes:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=dS(S,E);T(A)}I&&console.log("React Flow: trigger node changes",S),_==null||_(S)}},triggerEdgeChanges:S=>{const{onEdgesChange:_,setEdges:T,edges:E,hasDefaultEdges:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=hS(S,E);T(A)}I&&console.log("React Flow: trigger edge changes",S),_==null||_(S)}},addSelectedNodes:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(L=>qi(L,!0));z(A);return}z(Ql(E,new Set([...S]),!0)),I(Ql(T))},addSelectedEdges:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(L=>qi(L,!0));I(A);return}I(Ql(T,new Set([...S]))),z(Ql(E,new Set,!0))},unselectNodesAndEdges:({nodes:S,edges:_}={})=>{const{edges:T,nodes:E,nodeLookup:z,triggerNodeChanges:I,triggerEdgeChanges:A}=w(),L=S||E,D=_||T,U=[];for(const H of L){if(!H.selected)continue;const q=z.get(H.id);q&&(q.selected=!1),U.push(qi(H.id,!1))}const X=[];for(const H of D)H.selected&&X.push(qi(H.id,!1));I(U),A(X)},setMinZoom:S=>{const{panZoom:_,maxZoom:T}=w();_==null||_.setScaleExtent([S,T]),v({minZoom:S})},setMaxZoom:S=>{const{panZoom:_,minZoom:T}=w();_==null||_.setScaleExtent([T,S]),v({maxZoom:S})},setTranslateExtent:S=>{var _;(_=w().panZoom)==null||_.setTranslateExtent(S),v({translateExtent:S})},resetSelectedElements:()=>{const{edges:S,nodes:_,triggerNodeChanges:T,triggerEdgeChanges:E,elementsSelectable:z}=w();if(!z)return;const I=_.reduce((L,D)=>D.selected?[...L,qi(D.id,!1)]:L,[]),A=S.reduce((L,D)=>D.selected?[...L,qi(D.id,!1)]:L,[]);T(I),E(A)},setNodeExtent:S=>{const{nodes:_,nodeLookup:T,parentLookup:E,nodeOrigin:z,elevateNodesOnSelect:I,nodeExtent:A,zIndexMode:L}=w();S[0][0]===A[0][0]&&S[0][1]===A[0][1]&&S[1][0]===A[1][0]&&S[1][1]===A[1][1]||(Dp(_,T,E,{nodeOrigin:z,nodeExtent:S,elevateNodesOnSelect:I,checkEquality:!1,zIndexMode:L}),v({nodeExtent:S}))},panBy:S=>{const{transform:_,width:T,height:E,panZoom:z,translateExtent:I}=w();return mz({delta:S,panZoom:z,transform:_,translateExtent:I,width:T,height:E})},setCenter:async(S,_,T)=>{const{width:E,height:z,maxZoom:I,panZoom:A}=w();if(!A)return Promise.resolve(!1);const L=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:I;return await A.setViewport({x:E/2-S*L,y:z/2-_*L,zoom:L},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{v({connection:{...Dw}})},updateConnection:S=>{v({connection:S})},reset:()=>v({...Gv()})}},Object.is);function DM({initialNodes:e,initialEdges:n,defaultNodes:r,defaultEdges:l,initialWidth:a,initialHeight:s,initialMinZoom:u,initialMaxZoom:f,initialFitViewOptions:h,fitView:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y,children:v}){const[w]=V.useState(()=>OM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:d,minZoom:u,maxZoom:f,fitViewOptions:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y}));return b.jsx(Jz,{value:w,children:b.jsx(wA,{children:v})})}function RM({children:e,nodes:n,edges:r,defaultNodes:l,defaultEdges:a,width:s,height:u,fitView:f,fitViewOptions:h,minZoom:d,maxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v}){return V.useContext(Sc)?b.jsx(b.Fragment,{children:e}):b.jsx(DM,{initialNodes:n,initialEdges:r,defaultNodes:l,defaultEdges:a,initialWidth:s,initialHeight:u,fitView:f,initialFitViewOptions:h,initialMinZoom:d,initialMaxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v,children:e})}const LM={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function HM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,className:a,nodeTypes:s,edgeTypes:u,onNodeClick:f,onEdgeClick:h,onInit:d,onMove:m,onMoveStart:p,onMoveEnd:y,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,onNodeDragStart:L,onNodeDrag:D,onNodeDragStop:U,onNodesDelete:X,onEdgesDelete:H,onDelete:q,onSelectionChange:ee,onSelectionDragStart:R,onSelectionDrag:G,onSelectionDragStop:M,onSelectionContextMenu:$,onSelectionStart:Q,onSelectionEnd:K,onBeforeDelete:j,connectionMode:B,connectionLineType:P=pi.Bezier,connectionLineStyle:N,connectionLineComponent:Y,connectionLineContainerStyle:F,deleteKeyCode:J="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Do.Full,panActivationKeyCode:ye="Space",multiSelectionKeyCode:ve=Lo()?"Meta":"Control",zoomActivationKeyCode:xe=Lo()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Ce,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,nodeOrigin:Rt=cS,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt=!0,defaultViewport:Or=fA,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=Oo,preventScrolling:Re=!0,nodeExtent:Ye,defaultMarkerColor:Xt="#b1b1b7",zoomOnScroll:On=!0,zoomOnPinch:Lt=!0,panOnScroll:xt=!1,panOnScrollSpeed:Vt=.5,panOnScrollMode:Je=$i.Free,zoomOnDoubleClick:Pn=!0,panOnDrag:un=!0,onPaneClick:zc,onPaneMouseEnter:nl,onPaneMouseMove:rl,onPaneMouseLeave:il,onPaneScroll:lr,onPaneContextMenu:ll,paneClickDistance:yi=1,nodeClickDistance:Ac=0,children:Wo,onReconnect:fa,onReconnectStart:xi,onReconnectEnd:Mc,onEdgeContextMenu:es,onEdgeDoubleClick:ts,onEdgeMouseEnter:ns,onEdgeMouseMove:da,onEdgeMouseLeave:ha,reconnectRadius:rs=10,onNodesChange:is,onEdgesChange:Xn,noDragClassName:jt="nodrag",noWheelClassName:Gt="nowheel",noPanClassName:ar="nopan",fitView:al,fitViewOptions:ls,connectOnClick:jc,attributionPosition:as,proOptions:vi,defaultEdgeOptions:pa,elevateNodesOnSelect:Dr=!0,elevateEdgesOnSelect:Rr=!1,disableKeyboardA11y:Lr=!1,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:os,connectionRadius:ss,isValidConnection:or,onError:Br,style:Oc,id:ma,nodeDragThreshold:us,connectionDragThreshold:Dc,viewport:ol,onViewportChange:sl,width:Dn,height:Zt,colorMode:cs="light",debug:Rc,onScroll:qr,ariaLabelConfig:fs,zIndexMode:bi="basic",...Lc},Kt){const wi=ma||"1",ds=mA(cs),ga=V.useCallback(sr=>{sr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),qr==null||qr(sr)},[qr]);return b.jsx("div",{"data-testid":"rf__wrapper",...Lc,onScroll:ga,style:{...Oc,...LM},ref:Kt,className:zt(["react-flow",a,ds]),id:ma,role:"application",children:b.jsxs(RM,{nodes:e,edges:n,width:Dn,height:Zt,fitView:al,fitViewOptions:ls,minZoom:ue,maxZoom:ge,nodeOrigin:Rt,nodeExtent:Ye,zIndexMode:bi,children:[b.jsx(jM,{onInit:d,onNodeClick:f,onEdgeClick:h,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,nodeTypes:s,edgeTypes:u,connectionLineType:P,connectionLineStyle:N,connectionLineComponent:Y,connectionLineContainerStyle:F,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:J,multiSelectionKeyCode:ve,panActivationKeyCode:ye,zoomActivationKeyCode:xe,onlyRenderVisibleElements:Me,defaultViewport:Or,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:Re,zoomOnScroll:On,zoomOnPinch:Lt,zoomOnDoubleClick:Pn,panOnScroll:xt,panOnScrollSpeed:Vt,panOnScrollMode:Je,panOnDrag:un,onPaneClick:zc,onPaneMouseEnter:nl,onPaneMouseMove:rl,onPaneMouseLeave:il,onPaneScroll:lr,onPaneContextMenu:ll,paneClickDistance:yi,nodeClickDistance:Ac,onSelectionContextMenu:$,onSelectionStart:Q,onSelectionEnd:K,onReconnect:fa,onReconnectStart:xi,onReconnectEnd:Mc,onEdgeContextMenu:es,onEdgeDoubleClick:ts,onEdgeMouseEnter:ns,onEdgeMouseMove:da,onEdgeMouseLeave:ha,reconnectRadius:rs,defaultMarkerColor:Xt,noDragClassName:jt,noWheelClassName:Gt,noPanClassName:ar,rfId:wi,disableKeyboardA11y:Lr,nodeExtent:Ye,viewport:ol,onViewportChange:sl}),b.jsx(pA,{nodes:e,edges:n,defaultNodes:r,defaultEdges:l,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt,elevateNodesOnSelect:Dr,elevateEdgesOnSelect:Rr,minZoom:ue,maxZoom:ge,nodeExtent:Ye,onNodesChange:is,onEdgesChange:Xn,snapToGrid:pe,snapGrid:_e,connectionMode:B,translateExtent:Ne,connectOnClick:jc,defaultEdgeOptions:pa,fitView:al,fitViewOptions:ls,onNodesDelete:X,onEdgesDelete:H,onDelete:q,onNodeDragStart:L,onNodeDrag:D,onNodeDragStop:U,onSelectionDrag:G,onSelectionDragStart:R,onSelectionDragStop:M,onMove:m,onMoveStart:p,onMoveEnd:y,noPanClassName:ar,nodeOrigin:Rt,rfId:wi,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:os,onError:Br,connectionRadius:ss,isValidConnection:or,selectNodesOnDrag:Ce,nodeDragThreshold:us,connectionDragThreshold:Dc,onBeforeDelete:j,debug:Rc,ariaLabelConfig:fs,zIndexMode:bi}),b.jsx(cA,{onSelectionChange:ee}),Wo,b.jsx(lA,{proOptions:vi,position:as}),b.jsx(iA,{rfId:wi,disableKeyboardA11y:Lr})]})})}var BM=pS(HM);const qM=e=>{var n;return(n=e.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function UM({children:e}){const n=Ge(qM);return n?Kz.createPortal(e,n):null}function IM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>dS(a,s)),[]);return[n,r,l]}function VM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>hS(a,s)),[]);return[n,r,l]}function GM({dimensions:e,lineWidth:n,variant:r,className:l}){return b.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:zt(["react-flow__background-pattern",r,l])})}function YM({radius:e,className:n}){return b.jsx("circle",{cx:e,cy:e,r:e,className:zt(["react-flow__background-pattern","dots",n])})}var zr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(zr||(zr={}));const $M={[zr.Dots]:1,[zr.Lines]:1,[zr.Cross]:6},PM=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function BS({id:e,variant:n=zr.Dots,gap:r=20,size:l,lineWidth:a=1,offset:s=0,color:u,bgColor:f,style:h,className:d,patternClassName:m}){const p=V.useRef(null),{transform:y,patternId:v}=Ge(PM,ht),w=l||$M[n],k=n===zr.Dots,S=n===zr.Cross,_=Array.isArray(r)?r:[r,r],T=[_[0]*y[2]||1,_[1]*y[2]||1],E=w*y[2],z=Array.isArray(s)?s:[s,s],I=S?[E,E]:T,A=[z[0]*y[2]||1+I[0]/2,z[1]*y[2]||1+I[1]/2],L=`${v}${e||""}`;return b.jsxs("svg",{className:zt(["react-flow__background",d]),style:{...h,...Ec,"--xy-background-color-props":f,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[b.jsx("pattern",{id:L,x:y[0]%T[0],y:y[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${A[0]},-${A[1]})`,children:k?b.jsx(YM,{radius:E/2,className:m}):b.jsx(GM,{dimensions:I,lineWidth:a,variant:n,className:m})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${L})`})]})}BS.displayName="Background";const XM=V.memo(BS);function FM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function QM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function ZM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function KM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function JM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Ru({children:e,className:n,...r}){return b.jsx("button",{type:"button",className:zt(["react-flow__controls-button",n]),...r,children:e})}const WM=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function qS({style:e,showZoom:n=!0,showFitView:r=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:s,onZoomOut:u,onFitView:f,onInteractiveChange:h,className:d,children:m,position:p="bottom-left",orientation:y="vertical","aria-label":v}){const w=pt(),{isInteractive:k,minZoomReached:S,maxZoomReached:_,ariaLabelConfig:T}=Ge(WM,ht),{zoomIn:E,zoomOut:z,fitView:I}=Fo(),A=()=>{E(),s==null||s()},L=()=>{z(),u==null||u()},D=()=>{I(a),f==null||f()},U=()=>{w.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),h==null||h(!k)},X=y==="horizontal"?"horizontal":"vertical";return b.jsxs(_c,{className:zt(["react-flow__controls",X,d]),position:p,style:e,"data-testid":"rf__controls","aria-label":v??T["controls.ariaLabel"],children:[n&&b.jsxs(b.Fragment,{children:[b.jsx(Ru,{onClick:A,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:_,children:b.jsx(FM,{})}),b.jsx(Ru,{onClick:L,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:S,children:b.jsx(QM,{})})]}),r&&b.jsx(Ru,{className:"react-flow__controls-fitview",onClick:D,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:b.jsx(ZM,{})}),l&&b.jsx(Ru,{className:"react-flow__controls-interactive",onClick:U,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:k?b.jsx(JM,{}):b.jsx(KM,{})}),m]})}qS.displayName="Controls";const ej=V.memo(qS);function tj({id:e,x:n,y:r,width:l,height:a,style:s,color:u,strokeColor:f,strokeWidth:h,className:d,borderRadius:m,shapeRendering:p,selected:y,onClick:v}){const{background:w,backgroundColor:k}=s||{},S=u||w||k;return b.jsx("rect",{className:zt(["react-flow__minimap-node",{selected:y},d]),x:n,y:r,rx:m,ry:m,width:l,height:a,style:{fill:S,stroke:f,strokeWidth:h},shapeRendering:p,onClick:v?_=>v(_,e):void 0})}const nj=V.memo(tj),rj=e=>e.nodes.map(n=>n.id),fh=e=>e instanceof Function?e:()=>e;function ij({nodeStrokeColor:e,nodeColor:n,nodeClassName:r="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:s=nj,onClick:u}){const f=Ge(rj,ht),h=fh(n),d=fh(e),m=fh(r),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:f.map(y=>b.jsx(aj,{id:y,nodeColorFunc:h,nodeStrokeColorFunc:d,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:s,onClick:u,shapeRendering:p},y))})}function lj({id:e,nodeColorFunc:n,nodeStrokeColorFunc:r,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:u,NodeComponent:f,onClick:h}){const{node:d,x:m,y:p,width:y,height:v}=Ge(w=>{const k=w.nodeLookup.get(e);if(!k)return{node:void 0,x:0,y:0,width:0,height:0};const S=k.internals.userNode,{x:_,y:T}=k.internals.positionAbsolute,{width:E,height:z}=jr(S);return{node:S,x:_,y:T,width:E,height:z}},ht);return!d||d.hidden||!Iw(d)?null:b.jsx(f,{x:m,y:p,width:y,height:v,style:d.style,selected:!!d.selected,className:l(d),color:n(d),borderRadius:a,strokeColor:r(d),strokeWidth:s,shapeRendering:u,onClick:h,id:d.id})}const aj=V.memo(lj);var oj=V.memo(ij);const sj=200,uj=150,cj=e=>!e.hidden,fj=e=>{const n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:e.nodeLookup.size>0?Uw($o(e.nodeLookup,{filter:cj}),n):n,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},dj="react-flow__minimap-desc";function US({style:e,className:n,nodeStrokeColor:r,nodeColor:l,nodeClassName:a="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:f,bgColor:h,maskColor:d,maskStrokeColor:m,maskStrokeWidth:p,position:y="bottom-right",onClick:v,onNodeClick:w,pannable:k=!1,zoomable:S=!1,ariaLabel:_,inversePan:T,zoomStep:E=1,offsetScale:z=5}){const I=pt(),A=V.useRef(null),{boundingRect:L,viewBB:D,rfId:U,panZoom:X,translateExtent:H,flowWidth:q,flowHeight:ee,ariaLabelConfig:R}=Ge(fj,ht),G=(e==null?void 0:e.width)??sj,M=(e==null?void 0:e.height)??uj,$=L.width/G,Q=L.height/M,K=Math.max($,Q),j=K*G,B=K*M,P=z*K,N=L.x-(j-L.width)/2-P,Y=L.y-(B-L.height)/2-P,F=j+P*2,J=B+P*2,ne=`${dj}-${U}`,re=V.useRef(0),se=V.useRef();re.current=K,V.useEffect(()=>{if(A.current&&X)return se.current=Ez({domNode:A.current,panZoom:X,getTransform:()=>I.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[X]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:H,width:q,height:ee,inversePan:T,pannable:k,zoomStep:E,zoomable:S})},[k,S,T,E,H,q,ee]);const ye=v?pe=>{var Ce;const[_e,Me]=((Ce=se.current)==null?void 0:Ce.pointer(pe))||[0,0];v(pe,{x:_e,y:Me})}:void 0,ve=w?V.useCallback((pe,_e)=>{const Me=I.getState().nodeLookup.get(_e).internals.userNode;w(pe,Me)},[]):void 0,xe=_??R["minimap.ariaLabel"];return b.jsx(_c,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*K:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:zt(["react-flow__minimap",n]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:G,height:M,viewBox:`${N} ${Y} ${F} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:A,onClick:ye,children:[xe&&b.jsx("title",{id:ne,children:xe}),b.jsx(oj,{onClick:ve,nodeColor:l,nodeStrokeColor:r,nodeBorderRadius:s,nodeClassName:a,nodeStrokeWidth:u,nodeComponent:f}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${N-P},${Y-P}h${F+P*2}v${J+P*2}h${-F-P*2}z - M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}US.displayName="MiniMap";const hj=V.memo(US),pj=e=>n=>e?`${Math.max(1/n.transform[2],1)}`:void 0,mj={[sa.Line]:"right",[sa.Handle]:"bottom-right"};function gj({nodeId:e,position:n,variant:r=sa.Handle,className:l,style:a=void 0,children:s,color:u,minWidth:f=10,minHeight:h=10,maxWidth:d=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:y,autoScale:v=!0,shouldResize:w,onResizeStart:k,onResize:S,onResizeEnd:_}){const T=xS(),E=typeof e=="string"?e:T,z=pt(),I=V.useRef(null),A=r===sa.Handle,L=Ge(V.useCallback(pj(A&&v),[A,v]),ht),D=V.useRef(null),U=n??mj[r];V.useEffect(()=>{if(!(!I.current||!E))return D.current||(D.current=Bz({domNode:I.current,nodeId:E,getStoreItems:()=>{const{nodeLookup:H,transform:q,snapGrid:ee,snapToGrid:R,nodeOrigin:G,domNode:M}=z.getState();return{nodeLookup:H,transform:q,snapGrid:ee,snapToGrid:R,nodeOrigin:G,paneDomNode:M}},onChange:(H,q)=>{const{triggerNodeChanges:ee,nodeLookup:R,parentLookup:G,nodeOrigin:M}=z.getState(),$=[],Q={x:H.x,y:H.y},K=R.get(E);if(K&&K.expandParent&&K.parentId){const j=K.origin??M,B=H.width??K.measured.width??0,P=H.height??K.measured.height??0,N={id:K.id,parentId:K.parentId,rect:{width:B,height:P,...Vw({x:H.x??K.position.x,y:H.y??K.position.y},{width:B,height:P},K.parentId,R,j)}},Y=mm([N],R,G,M);$.push(...Y),Q.x=H.x?Math.max(j[0]*B,H.x):void 0,Q.y=H.y?Math.max(j[1]*P,H.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const j={id:E,type:"position",position:{...Q}};$.push(j)}if(H.width!==void 0&&H.height!==void 0){const B={id:E,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:H.width,height:H.height}};$.push(B)}for(const j of q){const B={...j,type:"position"};$.push(B)}ee($)},onEnd:({width:H,height:q})=>{const ee={id:E,type:"dimensions",resizing:!1,dimensions:{width:H,height:q}};z.getState().triggerNodeChanges([ee])}})),D.current.update({controlPosition:U,boundaries:{minWidth:f,minHeight:h,maxWidth:d,maxHeight:m},keepAspectRatio:p,resizeDirection:y,onResizeStart:k,onResize:S,onResizeEnd:_,shouldResize:w}),()=>{var H;(H=D.current)==null||H.destroy()}},[U,f,h,d,m,p,k,S,_,w]);const X=U.split("-");return b.jsx("div",{className:zt(["react-flow__resize-control","nodrag",...X,r,l]),ref:I,style:{...a,scale:L,...u&&{[A?"backgroundColor":"borderColor"]:u}},children:s})}V.memo(gj);function Zo(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;ll.viewContextPath),n=he(l=>l.nodes),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.nodes)??n},[e,n,r])}function yj(){const e=he(l=>l.viewContextPath),n=he(l=>l.groupProgress),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.groupProgress)??n},[e,n,r])}function xj(){const e=he(l=>l.viewContextPath),n=he(l=>l.highlightedEdges),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.highlightedEdges)??n},[e,n,r])}function IS(){const e=he(r=>r.viewContextPath),n=he(r=>r.subworkflowContexts);return V.useMemo(()=>{var r;return e.length===0?n:((r=Zo(n,e))==null?void 0:r.children)??[]},[e,n])}function vj(){const e=he(d=>d.viewContextPath),n=he(d=>d.agents),r=he(d=>d.routes),l=he(d=>d.parallelGroups),a=he(d=>d.forEachGroups),s=he(d=>d.nodes),u=he(d=>d.groupProgress),f=he(d=>d.entryPoint),h=he(d=>d.subworkflowContexts);return V.useMemo(()=>{if(e.length===0)return{agents:n,routes:r,parallelGroups:l,forEachGroups:a,nodes:s,groupProgress:u,entryPoint:f,subworkflowContexts:h};const d=Zo(h,e);return d?{agents:d.agents,routes:d.routes,parallelGroups:d.parallelGroups,forEachGroups:d.forEachGroups,nodes:d.nodes,groupProgress:d.groupProgress,entryPoint:d.entryPoint,subworkflowContexts:d.children}:{agents:n,routes:r,parallelGroups:l,forEachGroups:a,nodes:s,groupProgress:u,entryPoint:f,subworkflowContexts:h}},[e,n,r,l,a,s,u,f,h])}var dh,Yv;function ym(){if(Yv)return dh;Yv=1;var e="\0",n="\0",r="";class l{constructor(m){kt(this,"_isDirected",!0);kt(this,"_isMultigraph",!1);kt(this,"_isCompound",!1);kt(this,"_label");kt(this,"_defaultNodeLabelFn",()=>{});kt(this,"_defaultEdgeLabelFn",()=>{});kt(this,"_nodes",{});kt(this,"_in",{});kt(this,"_preds",{});kt(this,"_out",{});kt(this,"_sucs",{});kt(this,"_edgeObjs",{});kt(this,"_edgeLabels",{});kt(this,"_nodeCount",0);kt(this,"_edgeCount",0);kt(this,"_parent");kt(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var y=arguments,v=this;return m.forEach(function(w){y.length>1?v.setNode(w,p):v.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=n,this._children[m]={},this._children[n][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var y=v=>p.removeEdge(p._edgeObjs[v]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(v){p.setParent(v)}),delete this._children[m]),Object.keys(this._in[m]).forEach(y),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(y),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=n;else{p+="";for(var y=p;y!==void 0;y=this.parent(y))if(y===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==n)return p}}children(m=n){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===n)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const v=new Set(p);for(var y of this.successors(m))v.add(y);return Array.from(v.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var y=this;Object.entries(this._nodes).forEach(function([k,S]){m(k)&&p.setNode(k,S)}),Object.values(this._edgeObjs).forEach(function(k){p.hasNode(k.v)&&p.hasNode(k.w)&&p.setEdge(k,y.edge(k))});var v={};function w(k){var S=y.parent(k);return S===void 0||p.hasNode(S)?(v[k]=S,S):S in v?v[S]:w(S)}return this._isCompound&&p.nodes().forEach(k=>p.setParent(k,w(k))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var y=this,v=arguments;return m.reduce(function(w,k){return v.length>1?y.setEdge(w,k,p):y.setEdge(w,k),k}),this}setEdge(){var m,p,y,v,w=!1,k=arguments[0];typeof k=="object"&&k!==null&&"v"in k?(m=k.v,p=k.w,y=k.name,arguments.length===2&&(v=arguments[1],w=!0)):(m=k,p=arguments[1],y=arguments[3],arguments.length>2&&(v=arguments[2],w=!0)),m=""+m,p=""+p,y!==void 0&&(y=""+y);var S=u(this._isDirected,m,p,y);if(Object.hasOwn(this._edgeLabels,S))return w&&(this._edgeLabels[S]=v),this;if(y!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[S]=w?v:this._defaultEdgeLabelFn(m,p,y);var _=f(this._isDirected,m,p,y);return m=_.v,p=_.w,Object.freeze(_),this._edgeObjs[S]=_,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][S]=_,this._out[m][S]=_,this._edgeCount++,this}edge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return this._edgeLabels[v]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return Object.hasOwn(this._edgeLabels,v)}removeEdge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y),w=this._edgeObjs[v];return w&&(m=w.v,p=w.w,delete this._edgeLabels[v],delete this._edgeObjs[v],s(this._preds[p],m),s(this._sucs[m],p),delete this._in[p][v],delete this._out[m][v],this._edgeCount--),this}inEdges(m,p){var y=this._in[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.v===p):v}}outEdges(m,p){var y=this._out[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.w===p):v}}nodeEdges(m,p){var y=this.inEdges(m,p);if(y)return y.concat(this.outEdges(m,p))}}function a(d,m){d[m]?d[m]++:d[m]=1}function s(d,m){--d[m]||delete d[m]}function u(d,m,p,y){var v=""+m,w=""+p;if(!d&&v>w){var k=v;v=w,w=k}return v+r+w+r+(y===void 0?e:y)}function f(d,m,p,y){var v=""+m,w=""+p;if(!d&&v>w){var k=v;v=w,w=k}var S={v,w};return y&&(S.name=y),S}function h(d,m){return u(d,m.v,m.w,m.name)}return dh=l,dh}var hh,$v;function bj(){return $v||($v=1,hh="2.2.4"),hh}var ph,Pv;function wj(){return Pv||(Pv=1,ph={Graph:ym(),version:bj()}),ph}var mh,Xv;function Sj(){if(Xv)return mh;Xv=1;var e=ym();mh={write:n,read:a};function n(s){var u={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:r(s),edges:l(s)};return s.graph()!==void 0&&(u.value=structuredClone(s.graph())),u}function r(s){return s.nodes().map(function(u){var f=s.node(u),h=s.parent(u),d={v:u};return f!==void 0&&(d.value=f),h!==void 0&&(d.parent=h),d})}function l(s){return s.edges().map(function(u){var f=s.edge(u),h={v:u.v,w:u.w};return u.name!==void 0&&(h.name=u.name),f!==void 0&&(h.value=f),h})}function a(s){var u=new e(s.options).setGraph(s.value);return s.nodes.forEach(function(f){u.setNode(f.v,f.value),f.parent&&u.setParent(f.v,f.parent)}),s.edges.forEach(function(f){u.setEdge({v:f.v,w:f.w,name:f.name},f.value)}),u}return mh}var gh,Fv;function _j(){if(Fv)return gh;Fv=1,gh=e;function e(n){var r={},l=[],a;function s(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),n.successors(u).forEach(s),n.predecessors(u).forEach(s))}return n.nodes().forEach(function(u){a=[],s(u),a.length&&l.push(a)}),l}return gh}var yh,Qv;function VS(){if(Qv)return yh;Qv=1;class e{constructor(){kt(this,"_arr",[]);kt(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var s=this._arr,u=s.length;return a[r]=u,s.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,s=a+1,u=r;a>1,!(l[s].priority1;function r(a,s,u,f){return l(a,String(s),u||n,f||function(h){return a.outEdges(h)})}function l(a,s,u,f){var h={},d=new e,m,p,y=function(v){var w=v.v!==m?v.v:v.w,k=h[w],S=u(v),_=p.distance+S;if(S<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+S);_0&&(m=d.removeMin(),p=h[m],p.distance!==Number.POSITIVE_INFINITY);)f(m).forEach(y);return h}return xh}var vh,Kv;function Ej(){if(Kv)return vh;Kv=1;var e=GS();vh=n;function n(r,l,a){return r.nodes().reduce(function(s,u){return s[u]=e(r,u,l,a),s},{})}return vh}var bh,Jv;function YS(){if(Jv)return bh;Jv=1,bh=e;function e(n){var r=0,l=[],a={},s=[];function u(f){var h=a[f]={onStack:!0,lowlink:r,index:r++};if(l.push(f),n.successors(f).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(h.lowlink=Math.min(h.lowlink,a[p].index)):(u(p),h.lowlink=Math.min(h.lowlink,a[p].lowlink))}),h.lowlink===h.index){var d=[],m;do m=l.pop(),a[m].onStack=!1,d.push(m);while(f!==m);s.push(d)}}return n.nodes().forEach(function(f){Object.hasOwn(a,f)||u(f)}),s}return bh}var wh,Wv;function Nj(){if(Wv)return wh;Wv=1;var e=YS();wh=n;function n(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return wh}var Sh,e1;function kj(){if(e1)return Sh;e1=1,Sh=n;var e=()=>1;function n(l,a,s){return r(l,a||e,s||function(u){return l.outEdges(u)})}function r(l,a,s){var u={},f=l.nodes();return f.forEach(function(h){u[h]={},u[h][h]={distance:0},f.forEach(function(d){h!==d&&(u[h][d]={distance:Number.POSITIVE_INFINITY})}),s(h).forEach(function(d){var m=d.v===h?d.w:d.v,p=a(d);u[h][m]={distance:p,predecessor:h}})}),f.forEach(function(h){var d=u[h];f.forEach(function(m){var p=u[m];f.forEach(function(y){var v=p[h],w=d[y],k=p[y],S=v.distance+w.distance;Sa.successors(p):p=>a.neighbors(p),h=u==="post"?n:r,d=[],m={};return s.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);h(p,f,m,d)}),d}function n(a,s,u,f){for(var h=[[a,!1]];h.length>0;){var d=h.pop();d[1]?f.push(d[0]):Object.hasOwn(u,d[0])||(u[d[0]]=!0,h.push([d[0],!0]),l(s(d[0]),m=>h.push([m,!1])))}}function r(a,s,u,f){for(var h=[a];h.length>0;){var d=h.pop();Object.hasOwn(u,d)||(u[d]=!0,f.push(d),l(s(d),m=>h.push(m)))}}function l(a,s){for(var u=a.length;u--;)s(a[u],u,a);return a}return Nh}var kh,i1;function Tj(){if(i1)return kh;i1=1;var e=PS();kh=n;function n(r,l){return e(r,l,"post")}return kh}var Ch,l1;function zj(){if(l1)return Ch;l1=1;var e=PS();Ch=n;function n(r,l){return e(r,l,"pre")}return Ch}var Th,a1;function Aj(){if(a1)return Th;a1=1;var e=ym(),n=VS();Th=r;function r(l,a){var s=new e,u={},f=new n,h;function d(p){var y=p.v===h?p.w:p.v,v=f.priority(y);if(v!==void 0){var w=a(p);w0;){if(h=f.removeMin(),Object.hasOwn(u,h))s.setEdge(h,u[h]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(h).forEach(d)}return s}return Th}var zh,o1;function Mj(){return o1||(o1=1,zh={components:_j(),dijkstra:GS(),dijkstraAll:Ej(),findCycles:Nj(),floydWarshall:kj(),isAcyclic:Cj(),postorder:Tj(),preorder:zj(),prim:Aj(),tarjan:YS(),topsort:$S()}),zh}var Ah,s1;function Yn(){if(s1)return Ah;s1=1;var e=wj();return Ah={Graph:e.Graph,json:Sj(),alg:Mj(),version:e.version},Ah}var Mh,u1;function jj(){if(u1)return Mh;u1=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,s=a._prev;if(s!==a)return n(s),s}enqueue(a){let s=this._sentinel;a._prev&&a._next&&n(a),a._next=s._next,s._next._prev=a,s._next=a,a._prev=s}toString(){let a=[],s=this._sentinel,u=s._prev;for(;u!==s;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function n(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return Mh=e,Mh}var jh,c1;function Oj(){if(c1)return jh;c1=1;let e=Yn().Graph,n=jj();jh=l;let r=()=>1;function l(d,m){if(d.nodeCount()<=1)return[];let p=u(d,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(v=>d.outEdges(v.v,v.w))}function a(d,m,p){let y=[],v=m[m.length-1],w=m[0],k;for(;d.nodeCount();){for(;k=w.dequeue();)s(d,m,p,k);for(;k=v.dequeue();)s(d,m,p,k);if(d.nodeCount()){for(let S=m.length-2;S>0;--S)if(k=m[S].dequeue(),k){y=y.concat(s(d,m,p,k,!0));break}}}return y}function s(d,m,p,y,v){let w=v?[]:void 0;return d.inEdges(y.v).forEach(k=>{let S=d.edge(k),_=d.node(k.v);v&&w.push({v:k.v,w:k.w}),_.out-=S,f(m,p,_)}),d.outEdges(y.v).forEach(k=>{let S=d.edge(k),_=k.w,T=d.node(_);T.in-=S,f(m,p,T)}),d.removeNode(y.v),w}function u(d,m){let p=new e,y=0,v=0;d.nodes().forEach(S=>{p.setNode(S,{v:S,in:0,out:0})}),d.edges().forEach(S=>{let _=p.edge(S.v,S.w)||0,T=m(S),E=_+T;p.setEdge(S.v,S.w,E),v=Math.max(v,p.node(S.v).out+=T),y=Math.max(y,p.node(S.w).in+=T)});let w=h(v+y+3).map(()=>new n),k=y+1;return p.nodes().forEach(S=>{f(w,k,p.node(S))}),{graph:p,buckets:w,zeroIdx:k}}function f(d,m,p){p.out?p.in?d[p.out-p.in+m].enqueue(p):d[d.length-1].enqueue(p):d[0].enqueue(p)}function h(d){const m=[];for(let p=0;pU.setNode(X,D.node(X))),D.edges().forEach(X=>{let H=U.edge(X.v,X.w)||{weight:0,minlen:1},q=D.edge(X);U.setEdge(X.v,X.w,{weight:H.weight+q.weight,minlen:Math.max(H.minlen,q.minlen)})}),U}function l(D){let U=new e({multigraph:D.isMultigraph()}).setGraph(D.graph());return D.nodes().forEach(X=>{D.children(X).length||U.setNode(X,D.node(X))}),D.edges().forEach(X=>{U.setEdge(X,D.edge(X))}),U}function a(D){let U=D.nodes().map(X=>{let H={};return D.outEdges(X).forEach(q=>{H[q.w]=(H[q.w]||0)+D.edge(q).weight}),H});return L(D.nodes(),U)}function s(D){let U=D.nodes().map(X=>{let H={};return D.inEdges(X).forEach(q=>{H[q.v]=(H[q.v]||0)+D.edge(q).weight}),H});return L(D.nodes(),U)}function u(D,U){let X=D.x,H=D.y,q=U.x-X,ee=U.y-H,R=D.width/2,G=D.height/2;if(!q&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let M,$;return Math.abs(ee)*R>Math.abs(q)*G?(ee<0&&(G=-G),M=G*q/ee,$=G):(q<0&&(R=-R),M=R,$=R*ee/q),{x:X+M,y:H+$}}function f(D){let U=z(w(D)+1).map(()=>[]);return D.nodes().forEach(X=>{let H=D.node(X),q=H.rank;q!==void 0&&(U[q][H.order]=X)}),U}function h(D){let U=D.nodes().map(H=>{let q=D.node(H).rank;return q===void 0?Number.MAX_VALUE:q}),X=v(Math.min,U);D.nodes().forEach(H=>{let q=D.node(H);Object.hasOwn(q,"rank")&&(q.rank-=X)})}function d(D){let U=D.nodes().map(R=>D.node(R).rank),X=v(Math.min,U),H=[];D.nodes().forEach(R=>{let G=D.node(R).rank-X;H[G]||(H[G]=[]),H[G].push(R)});let q=0,ee=D.graph().nodeRankFactor;Array.from(H).forEach((R,G)=>{R===void 0&&G%ee!==0?--q:R!==void 0&&q&&R.forEach(M=>D.node(M).rank+=q)})}function m(D,U,X,H){let q={width:0,height:0};return arguments.length>=4&&(q.rank=X,q.order=H),n(D,"border",q,U)}function p(D,U=y){const X=[];for(let H=0;Hy){const X=p(U);return D.apply(null,X.map(H=>D.apply(null,H)))}else return D.apply(null,U)}function w(D){const X=D.nodes().map(H=>{let q=D.node(H).rank;return q===void 0?Number.MIN_VALUE:q});return v(Math.max,X)}function k(D,U){let X={lhs:[],rhs:[]};return D.forEach(H=>{U(H)?X.lhs.push(H):X.rhs.push(H)}),X}function S(D,U){let X=Date.now();try{return U()}finally{console.log(D+" time: "+(Date.now()-X)+"ms")}}function _(D,U){return U()}let T=0;function E(D){var U=++T;return D+(""+U)}function z(D,U,X=1){U==null&&(U=D,D=0);let H=ee=>eeUH[U]),Object.entries(D).reduce((H,[q,ee])=>(H[q]=X(ee,q),H),{})}function L(D,U){return D.reduce((X,H,q)=>(X[H]=U[q],X),{})}return Oh}var Dh,d1;function Dj(){if(d1)return Dh;d1=1;let e=Oj(),n=Tt().uniqueId;Dh={run:r,undo:a};function r(s){(s.graph().acyclicer==="greedy"?e(s,f(s)):l(s)).forEach(h=>{let d=s.edge(h);s.removeEdge(h),d.forwardName=h.name,d.reversed=!0,s.setEdge(h.w,h.v,d,n("rev"))});function f(h){return d=>h.edge(d).weight}}function l(s){let u=[],f={},h={};function d(m){Object.hasOwn(h,m)||(h[m]=!0,f[m]=!0,s.outEdges(m).forEach(p=>{Object.hasOwn(f,p.w)?u.push(p):d(p.w)}),delete f[m])}return s.nodes().forEach(d),u}function a(s){s.edges().forEach(u=>{let f=s.edge(u);if(f.reversed){s.removeEdge(u);let h=f.forwardName;delete f.reversed,delete f.forwardName,s.setEdge(u.w,u.v,f,h)}})}return Dh}var Rh,h1;function Rj(){if(h1)return Rh;h1=1;let e=Tt();Rh={run:n,undo:l};function n(a){a.graph().dummyChains=[],a.edges().forEach(s=>r(a,s))}function r(a,s){let u=s.v,f=a.node(u).rank,h=s.w,d=a.node(h).rank,m=s.name,p=a.edge(s),y=p.labelRank;if(d===f+1)return;a.removeEdge(s);let v,w,k;for(k=0,++f;f{let u=a.node(s),f=u.edgeLabel,h;for(a.setEdge(u.edgeObj,f);u.dummy;)h=a.successors(s)[0],a.removeNode(s),f.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(f.x=u.x,f.y=u.y,f.width=u.width,f.height=u.height),s=h,u=a.node(s)})}return Rh}var Lh,p1;function oc(){if(p1)return Lh;p1=1;const{applyWithChunking:e}=Tt();Lh={longestPath:n,slack:r};function n(l){var a={};function s(u){var f=l.node(u);if(Object.hasOwn(a,u))return f.rank;a[u]=!0;let h=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:s(m.w)-l.edge(m).minlen);var d=e(Math.min,h);return d===Number.POSITIVE_INFINITY&&(d=0),f.rank=d}l.sources().forEach(s)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Lh}var Hh,m1;function XS(){if(m1)return Hh;m1=1;var e=Yn().Graph,n=oc().slack;Hh=r;function r(u){var f=new e({directed:!1}),h=u.nodes()[0],d=u.nodeCount();f.setNode(h,{});for(var m,p;l(f,u){var p=m.v,y=d===p?m.w:p;!u.hasNode(y)&&!n(f,m)&&(u.setNode(y,{}),u.setEdge(d,y,{}),h(y))})}return u.nodes().forEach(h),u.nodeCount()}function a(u,f){return f.edges().reduce((d,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=n(f,m)),pf.node(d).rank+=h)}return Hh}var Bh,g1;function Lj(){if(g1)return Bh;g1=1;var e=XS(),n=oc().slack,r=oc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,s=Tt().simplify;Bh=u,u.initLowLimValues=m,u.initCutValues=f,u.calcCutValue=d,u.leaveEdge=y,u.enterEdge=v,u.exchangeEdges=w;function u(T){T=s(T),r(T);var E=e(T);m(E),f(E,T);for(var z,I;z=y(E);)I=v(E,T,z),w(E,T,z,I)}function f(T,E){var z=a(T,T.nodes());z=z.slice(0,z.length-1),z.forEach(I=>h(T,E,I))}function h(T,E,z){var I=T.node(z),A=I.parent;T.edge(z,A).cutvalue=d(T,E,z)}function d(T,E,z){var I=T.node(z),A=I.parent,L=!0,D=E.edge(z,A),U=0;return D||(L=!1,D=E.edge(A,z)),U=D.weight,E.nodeEdges(z).forEach(X=>{var H=X.v===z,q=H?X.w:X.v;if(q!==A){var ee=H===L,R=E.edge(X).weight;if(U+=ee?R:-R,S(T,z,q)){var G=T.edge(z,q).cutvalue;U+=ee?-G:G}}}),U}function m(T,E){arguments.length<2&&(E=T.nodes()[0]),p(T,{},1,E)}function p(T,E,z,I,A){var L=z,D=T.node(I);return E[I]=!0,T.neighbors(I).forEach(U=>{Object.hasOwn(E,U)||(z=p(T,E,z,U,I))}),D.low=L,D.lim=z++,A?D.parent=A:delete D.parent,z}function y(T){return T.edges().find(E=>T.edge(E).cutvalue<0)}function v(T,E,z){var I=z.v,A=z.w;E.hasEdge(I,A)||(I=z.w,A=z.v);var L=T.node(I),D=T.node(A),U=L,X=!1;L.lim>D.lim&&(U=D,X=!0);var H=E.edges().filter(q=>X===_(T,T.node(q.v),U)&&X!==_(T,T.node(q.w),U));return H.reduce((q,ee)=>n(E,ee)!E.node(A).parent),I=l(T,z);I=I.slice(1),I.forEach(A=>{var L=T.node(A).parent,D=E.edge(A,L),U=!1;D||(D=E.edge(L,A),U=!0),E.node(A).rank=E.node(L).rank+(U?D.minlen:-D.minlen)})}function S(T,E,z){return T.hasEdge(E,z)}function _(T,E,z){return z.low<=E.lim&&E.lim<=z.lim}return Bh}var qh,y1;function Hj(){if(y1)return qh;y1=1;var e=oc(),n=e.longestPath,r=XS(),l=Lj();qh=a;function a(h){var d=h.graph().ranker;if(d instanceof Function)return d(h);switch(h.graph().ranker){case"network-simplex":f(h);break;case"tight-tree":u(h);break;case"longest-path":s(h);break;case"none":break;default:f(h)}}var s=n;function u(h){n(h),r(h)}function f(h){l(h)}return qh}var Uh,x1;function Bj(){if(x1)return Uh;x1=1,Uh=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(s=>{let u=l.node(s),f=u.edgeObj,h=n(l,a,f.v,f.w),d=h.path,m=h.lca,p=0,y=d[p],v=!0;for(;s!==f.w;){if(u=l.node(s),v){for(;(y=d[p])!==m&&l.node(y).maxRankd||m>a[p].lim));for(y=p,p=u;(p=l.parent(p))!==y;)h.push(p);return{path:f.concat(h.reverse()),lca:y}}function r(l){let a={},s=0;function u(f){let h=s;l.children(f).forEach(u),a[f]={low:h,lim:s++}}return l.children().forEach(u),a}return Uh}var Ih,v1;function qj(){if(v1)return Ih;v1=1;let e=Tt();Ih={run:n,cleanup:s};function n(u){let f=e.addDummyNode(u,"root",{},"_root"),h=l(u),d=Object.values(h),m=e.applyWithChunking(Math.max,d)-1,p=2*m+1;u.graph().nestingRoot=f,u.edges().forEach(v=>u.edge(v).minlen*=p);let y=a(u)+1;u.children().forEach(v=>r(u,f,p,y,m,h,v)),u.graph().nodeRankFactor=p}function r(u,f,h,d,m,p,y){let v=u.children(y);if(!v.length){y!==f&&u.setEdge(f,y,{weight:0,minlen:h});return}let w=e.addBorderNode(u,"_bt"),k=e.addBorderNode(u,"_bb"),S=u.node(y);u.setParent(w,y),S.borderTop=w,u.setParent(k,y),S.borderBottom=k,v.forEach(_=>{r(u,f,h,d,m,p,_);let T=u.node(_),E=T.borderTop?T.borderTop:_,z=T.borderBottom?T.borderBottom:_,I=T.borderTop?d:2*d,A=E!==z?1:m-p[y]+1;u.setEdge(w,E,{weight:I,minlen:A,nestingEdge:!0}),u.setEdge(z,k,{weight:I,minlen:A,nestingEdge:!0})}),u.parent(y)||u.setEdge(f,w,{weight:0,minlen:m+p[y]})}function l(u){var f={};function h(d,m){var p=u.children(d);p&&p.length&&p.forEach(y=>h(y,m+1)),f[d]=m}return u.children().forEach(d=>h(d,1)),f}function a(u){return u.edges().reduce((f,h)=>f+u.edge(h).weight,0)}function s(u){var f=u.graph();u.removeNode(f.nestingRoot),delete f.nestingRoot,u.edges().forEach(h=>{var d=u.edge(h);d.nestingEdge&&u.removeEdge(h)})}return Ih}var Vh,b1;function Uj(){if(b1)return Vh;b1=1;let e=Tt();Vh=n;function n(l){function a(s){let u=l.children(s),f=l.node(s);if(u.length&&u.forEach(a),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let h=f.minRank,d=f.maxRank+1;hl(h.node(d))),h.edges().forEach(d=>l(h.edge(d)))}function l(h){let d=h.width;h.width=h.height,h.height=d}function a(h){h.nodes().forEach(d=>s(h.node(d))),h.edges().forEach(d=>{let m=h.edge(d);m.points.forEach(s),Object.hasOwn(m,"y")&&s(m)})}function s(h){h.y=-h.y}function u(h){h.nodes().forEach(d=>f(h.node(d))),h.edges().forEach(d=>{let m=h.edge(d);m.points.forEach(f),Object.hasOwn(m,"x")&&f(m)})}function f(h){let d=h.x;h.x=h.y,h.y=d}return Gh}var Yh,S1;function Vj(){if(S1)return Yh;S1=1;let e=Tt();Yh=n;function n(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),s=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,s),f=e.range(u+1).map(()=>[]);function h(m){if(l[m])return;l[m]=!0;let p=r.node(m);f[p.rank].push(m),r.successors(m).forEach(h)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(h),f}return Yh}var $h,_1;function Gj(){if(_1)return $h;_1=1;let e=Tt().zipObject;$h=n;function n(l,a){let s=0;for(let u=1;uv)),f=a.flatMap(y=>l.outEdges(y).map(v=>({pos:u[v.w],weight:l.edge(v).weight})).sort((v,w)=>v.pos-w.pos)),h=1;for(;h{let v=y.pos+h;m[v]+=y.weight;let w=0;for(;v>0;)v%2&&(w+=m[v+1]),v=v-1>>1,m[v]+=y.weight;p+=y.weight*w}),p}return $h}var Ph,E1;function Yj(){if(E1)return Ph;E1=1,Ph=e;function e(n,r=[]){return r.map(l=>{let a=n.inEdges(l);if(a.length){let s=a.reduce((u,f)=>{let h=n.edge(f),d=n.node(f.v);return{sum:u.sum+h.weight*d.order,weight:u.weight+h.weight}},{sum:0,weight:0});return{v:l,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:l}})}return Ph}var Xh,N1;function $j(){if(N1)return Xh;N1=1;let e=Tt();Xh=n;function n(a,s){let u={};a.forEach((h,d)=>{let m=u[h.v]={indegree:0,in:[],out:[],vs:[h.v],i:d};h.barycenter!==void 0&&(m.barycenter=h.barycenter,m.weight=h.weight)}),s.edges().forEach(h=>{let d=u[h.v],m=u[h.w];d!==void 0&&m!==void 0&&(m.indegree++,d.out.push(u[h.w]))});let f=Object.values(u).filter(h=>!h.indegree);return r(f)}function r(a){let s=[];function u(h){return d=>{d.merged||(d.barycenter===void 0||h.barycenter===void 0||d.barycenter>=h.barycenter)&&l(h,d)}}function f(h){return d=>{d.in.push(h),--d.indegree===0&&a.push(d)}}for(;a.length;){let h=a.pop();s.push(h),h.in.reverse().forEach(u(h)),h.out.forEach(f(h))}return s.filter(h=>!h.merged).map(h=>e.pick(h,["vs","i","barycenter","weight"]))}function l(a,s){let u=0,f=0;a.weight&&(u+=a.barycenter*a.weight,f+=a.weight),s.weight&&(u+=s.barycenter*s.weight,f+=s.weight),a.vs=s.vs.concat(a.vs),a.barycenter=u/f,a.weight=f,a.i=Math.min(s.i,a.i),s.merged=!0}return Xh}var Fh,k1;function Pj(){if(k1)return Fh;k1=1;let e=Tt();Fh=n;function n(a,s){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),f=u.lhs,h=u.rhs.sort((w,k)=>k.i-w.i),d=[],m=0,p=0,y=0;f.sort(l(!!s)),y=r(d,h,y),f.forEach(w=>{y+=w.vs.length,d.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,y=r(d,h,y)});let v={vs:d.flat(!0)};return p&&(v.barycenter=m/p,v.weight=p),v}function r(a,s,u){let f;for(;s.length&&(f=s[s.length-1]).i<=u;)s.pop(),a.push(f.vs),u++;return u}function l(a){return(s,u)=>s.barycenteru.barycenter?1:a?u.i-s.i:s.i-u.i}return Fh}var Qh,C1;function Xj(){if(C1)return Qh;C1=1;let e=Yj(),n=$j(),r=Pj();Qh=l;function l(u,f,h,d){let m=u.children(f),p=u.node(f),y=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,w={};y&&(m=m.filter(T=>T!==y&&T!==v));let k=e(u,m);k.forEach(T=>{if(u.children(T.v).length){let E=l(u,T.v,h,d);w[T.v]=E,Object.hasOwn(E,"barycenter")&&s(T,E)}});let S=n(k,h);a(S,w);let _=r(S,d);if(y&&(_.vs=[y,_.vs,v].flat(!0),u.predecessors(y).length)){let T=u.node(u.predecessors(y)[0]),E=u.node(u.predecessors(v)[0]);Object.hasOwn(_,"barycenter")||(_.barycenter=0,_.weight=0),_.barycenter=(_.barycenter*_.weight+T.order+E.order)/(_.weight+2),_.weight+=2}return _}function a(u,f){u.forEach(h=>{h.vs=h.vs.flatMap(d=>f[d]?f[d].vs:d)})}function s(u,f){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+f.barycenter*f.weight)/(u.weight+f.weight),u.weight+=f.weight):(u.barycenter=f.barycenter,u.weight=f.weight)}return Qh}var Zh,T1;function Fj(){if(T1)return Zh;T1=1;let e=Yn().Graph,n=Tt();Zh=r;function r(a,s,u,f){f||(f=a.nodes());let h=l(a),d=new e({compound:!0}).setGraph({root:h}).setDefaultNodeLabel(m=>a.node(m));return f.forEach(m=>{let p=a.node(m),y=a.parent(m);(p.rank===s||p.minRank<=s&&s<=p.maxRank)&&(d.setNode(m),d.setParent(m,y||h),a[u](m).forEach(v=>{let w=v.v===m?v.w:v.v,k=d.edge(w,m),S=k!==void 0?k.weight:0;d.setEdge(w,m,{weight:a.edge(v).weight+S})}),Object.hasOwn(p,"minRank")&&d.setNode(m,{borderLeft:p.borderLeft[s],borderRight:p.borderRight[s]}))}),d}function l(a){for(var s;a.hasNode(s=n.uniqueId("_root")););return s}return Zh}var Kh,z1;function Qj(){if(z1)return Kh;z1=1,Kh=e;function e(n,r,l){let a={},s;l.forEach(u=>{let f=n.parent(u),h,d;for(;f;){if(h=n.parent(f),h?(d=a[h],a[h]=f):(d=s,s=f),d&&d!==f){r.setEdge(d,f);return}f=h}})}return Kh}var Jh,A1;function Zj(){if(A1)return Jh;A1=1;let e=Vj(),n=Gj(),r=Xj(),l=Fj(),a=Qj(),s=Yn().Graph,u=Tt();Jh=f;function f(p,y){if(y&&typeof y.customOrder=="function"){y.customOrder(p,f);return}let v=u.maxRank(p),w=h(p,u.range(1,v+1),"inEdges"),k=h(p,u.range(v-1,-1,-1),"outEdges"),S=e(p);if(m(p,S),y&&y.disableOptimalOrderHeuristic)return;let _=Number.POSITIVE_INFINITY,T;for(let E=0,z=0;z<4;++E,++z){d(E%2?w:k,E%4>=2),S=u.buildLayerMatrix(p);let I=n(p,S);I<_&&(z=0,T=Object.assign({},S),_=I)}m(p,T)}function h(p,y,v){const w=new Map,k=(S,_)=>{w.has(S)||w.set(S,[]),w.get(S).push(_)};for(const S of p.nodes()){const _=p.node(S);if(typeof _.rank=="number"&&k(_.rank,S),typeof _.minRank=="number"&&typeof _.maxRank=="number")for(let T=_.minRank;T<=_.maxRank;T++)T!==_.rank&&k(T,S)}return y.map(function(S){return l(p,S,v,w.get(S)||[])})}function d(p,y){let v=new s;p.forEach(function(w){let k=w.graph().root,S=r(w,k,v,y);S.vs.forEach((_,T)=>w.node(_).order=T),a(w,v,S.vs)})}function m(p,y){Object.values(y).forEach(v=>v.forEach((w,k)=>p.node(w).order=k))}return Jh}var Wh,M1;function Kj(){if(M1)return Wh;M1=1;let e=Yn().Graph,n=Tt();Wh={positionX:v,findType1Conflicts:r,findType2Conflicts:l,addConflict:s,hasConflict:u,verticalAlignment:f,horizontalCompaction:h,alignCoordinates:p,findSmallestWidthAlignment:m,balance:y};function r(S,_){let T={};function E(z,I){let A=0,L=0,D=z.length,U=I[I.length-1];return I.forEach((X,H)=>{let q=a(S,X),ee=q?S.node(q).order:D;(q||X===U)&&(I.slice(L,H+1).forEach(R=>{S.predecessors(R).forEach(G=>{let M=S.node(G),$=M.order;(${X=I[H],S.node(X).dummy&&S.predecessors(X).forEach(q=>{let ee=S.node(q);ee.dummy&&(ee.orderU)&&s(T,q,X)})})}function z(I,A){let L=-1,D,U=0;return A.forEach((X,H)=>{if(S.node(X).dummy==="border"){let q=S.predecessors(X);q.length&&(D=S.node(q[0]).order,E(A,U,H,L,D),U=H,L=D)}E(A,U,A.length,D,I.length)}),A}return _.length&&_.reduce(z),T}function a(S,_){if(S.node(_).dummy)return S.predecessors(_).find(T=>S.node(T).dummy)}function s(S,_,T){if(_>T){let z=_;_=T,T=z}let E=S[_];E||(S[_]=E={}),E[T]=!0}function u(S,_,T){if(_>T){let E=_;_=T,T=E}return!!S[_]&&Object.hasOwn(S[_],T)}function f(S,_,T,E){let z={},I={},A={};return _.forEach(L=>{L.forEach((D,U)=>{z[D]=D,I[D]=D,A[D]=U})}),_.forEach(L=>{let D=-1;L.forEach(U=>{let X=E(U);if(X.length){X=X.sort((q,ee)=>A[q]-A[ee]);let H=(X.length-1)/2;for(let q=Math.floor(H),ee=Math.ceil(H);q<=ee;++q){let R=X[q];I[U]===U&&DMath.max(q,I[ee.v]+A.edge(ee)),0)}function X(H){let q=A.outEdges(H).reduce((R,G)=>Math.min(R,I[G.w]-A.edge(G)),Number.POSITIVE_INFINITY),ee=S.node(H);q!==Number.POSITIVE_INFINITY&&ee.borderType!==L&&(I[H]=Math.max(I[H],q))}return D(U,A.predecessors.bind(A)),D(X,A.successors.bind(A)),Object.keys(E).forEach(H=>I[H]=I[T[H]]),I}function d(S,_,T,E){let z=new e,I=S.graph(),A=w(I.nodesep,I.edgesep,E);return _.forEach(L=>{let D;L.forEach(U=>{let X=T[U];if(z.setNode(X),D){var H=T[D],q=z.edge(H,X);z.setEdge(H,X,Math.max(A(S,U,D),q||0))}D=U})}),z}function m(S,_){return Object.values(_).reduce((T,E)=>{let z=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY;Object.entries(E).forEach(([L,D])=>{let U=k(S,L)/2;z=Math.max(D+U,z),I=Math.min(D-U,I)});const A=z-I;return A{["l","r"].forEach(A=>{let L=I+A,D=S[L];if(D===_)return;let U=Object.values(D),X=E-n.applyWithChunking(Math.min,U);A!=="l"&&(X=z-n.applyWithChunking(Math.max,U)),X&&(S[L]=n.mapValues(D,H=>H+X))})})}function y(S,_){return n.mapValues(S.ul,(T,E)=>{if(_)return S[_.toLowerCase()][E];{let z=Object.values(S).map(I=>I[E]).sort((I,A)=>I-A);return(z[1]+z[2])/2}})}function v(S){let _=n.buildLayerMatrix(S),T=Object.assign(r(S,_),l(S,_)),E={},z;["u","d"].forEach(A=>{z=A==="u"?_:Object.values(_).reverse(),["l","r"].forEach(L=>{L==="r"&&(z=z.map(H=>Object.values(H).reverse()));let D=(A==="u"?S.predecessors:S.successors).bind(S),U=f(S,z,T,D),X=h(S,z,U.root,U.align,L==="r");L==="r"&&(X=n.mapValues(X,H=>-H)),E[A+L]=X})});let I=m(S,E);return p(E,I),y(E,S.graph().align)}function w(S,_,T){return(E,z,I)=>{let A=E.node(z),L=E.node(I),D=0,U;if(D+=A.width/2,Object.hasOwn(A,"labelpos"))switch(A.labelpos.toLowerCase()){case"l":U=-A.width/2;break;case"r":U=A.width/2;break}if(U&&(D+=T?U:-U),U=0,D+=(A.dummy?_:S)/2,D+=(L.dummy?_:S)/2,D+=L.width/2,Object.hasOwn(L,"labelpos"))switch(L.labelpos.toLowerCase()){case"l":U=L.width/2;break;case"r":U=-L.width/2;break}return U&&(D+=T?U:-U),U=0,D}}function k(S,_){return S.node(_).width}return Wh}var ep,j1;function Jj(){if(j1)return ep;j1=1;let e=Tt(),n=Kj().positionX;ep=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(n(a)).forEach(([s,u])=>a.node(s).x=u)}function l(a){let s=e.buildLayerMatrix(a),u=a.graph().ranksep,f=0;s.forEach(h=>{const d=h.reduce((m,p)=>{const y=a.node(p).height;return m>y?m:y},0);h.forEach(m=>a.node(m).y=f+d/2),f+=d+u})}return ep}var tp,O1;function Wj(){if(O1)return tp;O1=1;let e=Dj(),n=Rj(),r=Hj(),l=Tt().normalizeRanks,a=Bj(),s=Tt().removeEmptyRanks,u=qj(),f=Uj(),h=Ij(),d=Zj(),m=Jj(),p=Tt(),y=Yn().Graph;tp=v;function v(N,Y){let F=Y&&Y.debugTiming?p.time:p.notime;F("layout",()=>{let J=F(" buildLayoutGraph",()=>D(N));F(" runLayout",()=>w(J,F,Y)),F(" updateInputGraph",()=>k(N,J))})}function w(N,Y,F){Y(" makeSpaceForEdgeLabels",()=>U(N)),Y(" removeSelfEdges",()=>Q(N)),Y(" acyclic",()=>e.run(N)),Y(" nestingGraph.run",()=>u.run(N)),Y(" rank",()=>r(p.asNonCompoundGraph(N))),Y(" injectEdgeLabelProxies",()=>X(N)),Y(" removeEmptyRanks",()=>s(N)),Y(" nestingGraph.cleanup",()=>u.cleanup(N)),Y(" normalizeRanks",()=>l(N)),Y(" assignRankMinMax",()=>H(N)),Y(" removeEdgeLabelProxies",()=>q(N)),Y(" normalize.run",()=>n.run(N)),Y(" parentDummyChains",()=>a(N)),Y(" addBorderSegments",()=>f(N)),Y(" order",()=>d(N,F)),Y(" insertSelfEdges",()=>K(N)),Y(" adjustCoordinateSystem",()=>h.adjust(N)),Y(" position",()=>m(N)),Y(" positionSelfEdges",()=>j(N)),Y(" removeBorderNodes",()=>$(N)),Y(" normalize.undo",()=>n.undo(N)),Y(" fixupEdgeLabelCoords",()=>G(N)),Y(" undoCoordinateSystem",()=>h.undo(N)),Y(" translateGraph",()=>ee(N)),Y(" assignNodeIntersects",()=>R(N)),Y(" reversePoints",()=>M(N)),Y(" acyclic.undo",()=>e.undo(N))}function k(N,Y){N.nodes().forEach(F=>{let J=N.node(F),ne=Y.node(F);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,Y.children(F).length&&(J.width=ne.width,J.height=ne.height))}),N.edges().forEach(F=>{let J=N.edge(F),ne=Y.edge(F);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),N.graph().width=Y.graph().width,N.graph().height=Y.graph().height}let S=["nodesep","edgesep","ranksep","marginx","marginy"],_={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},T=["acyclicer","ranker","rankdir","align"],E=["width","height","rank"],z={width:0,height:0},I=["minlen","weight","width","height","labeloffset"],A={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},L=["labelpos"];function D(N){let Y=new y({multigraph:!0,compound:!0}),F=P(N.graph());return Y.setGraph(Object.assign({},_,B(F,S),p.pick(F,T))),N.nodes().forEach(J=>{let ne=P(N.node(J));const re=B(ne,E);Object.keys(z).forEach(se=>{re[se]===void 0&&(re[se]=z[se])}),Y.setNode(J,re),Y.setParent(J,N.parent(J))}),N.edges().forEach(J=>{let ne=P(N.edge(J));Y.setEdge(J,Object.assign({},A,B(ne,I),p.pick(ne,L)))}),Y}function U(N){let Y=N.graph();Y.ranksep/=2,N.edges().forEach(F=>{let J=N.edge(F);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(Y.rankdir==="TB"||Y.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function X(N){N.edges().forEach(Y=>{let F=N.edge(Y);if(F.width&&F.height){let J=N.node(Y.v),re={rank:(N.node(Y.w).rank-J.rank)/2+J.rank,e:Y};p.addDummyNode(N,"edge-proxy",re,"_ep")}})}function H(N){let Y=0;N.nodes().forEach(F=>{let J=N.node(F);J.borderTop&&(J.minRank=N.node(J.borderTop).rank,J.maxRank=N.node(J.borderBottom).rank,Y=Math.max(Y,J.maxRank))}),N.graph().maxRank=Y}function q(N){N.nodes().forEach(Y=>{let F=N.node(Y);F.dummy==="edge-proxy"&&(N.edge(F.e).labelRank=F.rank,N.removeNode(Y))})}function ee(N){let Y=Number.POSITIVE_INFINITY,F=0,J=Number.POSITIVE_INFINITY,ne=0,re=N.graph(),se=re.marginx||0,ye=re.marginy||0;function ve(xe){let pe=xe.x,_e=xe.y,Me=xe.width,Ce=xe.height;Y=Math.min(Y,pe-Me/2),F=Math.max(F,pe+Me/2),J=Math.min(J,_e-Ce/2),ne=Math.max(ne,_e+Ce/2)}N.nodes().forEach(xe=>ve(N.node(xe))),N.edges().forEach(xe=>{let pe=N.edge(xe);Object.hasOwn(pe,"x")&&ve(pe)}),Y-=se,J-=ye,N.nodes().forEach(xe=>{let pe=N.node(xe);pe.x-=Y,pe.y-=J}),N.edges().forEach(xe=>{let pe=N.edge(xe);pe.points.forEach(_e=>{_e.x-=Y,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=Y),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=F-Y+se,re.height=ne-J+ye}function R(N){N.edges().forEach(Y=>{let F=N.edge(Y),J=N.node(Y.v),ne=N.node(Y.w),re,se;F.points?(re=F.points[0],se=F.points[F.points.length-1]):(F.points=[],re=ne,se=J),F.points.unshift(p.intersectRect(J,re)),F.points.push(p.intersectRect(ne,se))})}function G(N){N.edges().forEach(Y=>{let F=N.edge(Y);if(Object.hasOwn(F,"x"))switch((F.labelpos==="l"||F.labelpos==="r")&&(F.width-=F.labeloffset),F.labelpos){case"l":F.x-=F.width/2+F.labeloffset;break;case"r":F.x+=F.width/2+F.labeloffset;break}})}function M(N){N.edges().forEach(Y=>{let F=N.edge(Y);F.reversed&&F.points.reverse()})}function $(N){N.nodes().forEach(Y=>{if(N.children(Y).length){let F=N.node(Y),J=N.node(F.borderTop),ne=N.node(F.borderBottom),re=N.node(F.borderLeft[F.borderLeft.length-1]),se=N.node(F.borderRight[F.borderRight.length-1]);F.width=Math.abs(se.x-re.x),F.height=Math.abs(ne.y-J.y),F.x=re.x+F.width/2,F.y=J.y+F.height/2}}),N.nodes().forEach(Y=>{N.node(Y).dummy==="border"&&N.removeNode(Y)})}function Q(N){N.edges().forEach(Y=>{if(Y.v===Y.w){var F=N.node(Y.v);F.selfEdges||(F.selfEdges=[]),F.selfEdges.push({e:Y,label:N.edge(Y)}),N.removeEdge(Y)}})}function K(N){var Y=p.buildLayerMatrix(N);Y.forEach(F=>{var J=0;F.forEach((ne,re)=>{var se=N.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(ye=>{p.addDummyNode(N,"selfedge",{width:ye.label.width,height:ye.label.height,rank:se.rank,order:re+ ++J,e:ye.e,label:ye.label},"_se")}),delete se.selfEdges})})}function j(N){N.nodes().forEach(Y=>{var F=N.node(Y);if(F.dummy==="selfedge"){var J=N.node(F.e.v),ne=J.x+J.width/2,re=J.y,se=F.x-ne,ye=J.height/2;N.setEdge(F.e,F.label),N.removeNode(Y),F.label.points=[{x:ne+2*se/3,y:re-ye},{x:ne+5*se/6,y:re-ye},{x:ne+se,y:re},{x:ne+5*se/6,y:re+ye},{x:ne+2*se/3,y:re+ye}],F.label.x=F.x,F.label.y=F.y}})}function B(N,Y){return p.mapValues(p.pick(N,Y),Number)}function P(N){var Y={};return N&&Object.entries(N).forEach(([F,J])=>{typeof F=="string"&&(F=F.toLowerCase()),Y[F]=J}),Y}return tp}var np,D1;function e5(){if(D1)return np;D1=1;let e=Tt(),n=Yn().Graph;np={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),s=new n({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{s.setNode(u,{label:u}),s.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>s.setEdge(u.v,u.w,{},u.name)),a.forEach((u,f)=>{let h="layer"+f;s.setNode(h,{rank:"same"}),u.reduce((d,m)=>(s.setEdge(d,m,{style:"invis"}),m))}),s}return np}var rp,R1;function t5(){return R1||(R1=1,rp="1.1.8"),rp}var ip,L1;function n5(){return L1||(L1=1,ip={graphlib:Yn(),layout:Wj(),debug:e5(),util:{time:Tt().time,notime:Tt().notime},version:t5()}),ip}var r5=n5();const H1=qo(r5),bo=200,Zl=56,B1=20,q1=40,i5=20,U1=12;function l5(e,n,r,l,a,s,u){const f=[],h=[],d=new Set,m=new Set,p=new Map;for(const v of r)for(const w of v.agents)m.add(w),p.set(w,v.name);for(const v of r){const w=a[v.name],k=v.agents.length,S=bo+B1*2,_=q1+k*Zl+(k-1)*U1+i5;f.push({id:v.name,type:"groupNode",position:{x:0,y:0},data:{label:v.name,type:"parallel_group",status:(w==null?void 0:w.status)||"pending",groupName:v.name,progress:s[v.name]},style:{width:S,height:_}});for(let T=0;T$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}for(const v of n)h.push({id:`${v.from}->${v.to}`,source:v.from,target:v.to,type:"animatedEdge",data:{when:v.when},animated:!1});return a5(f,h),{nodes:f,edges:h}}function a5(e,n){var l,a,s,u;const r=new H1.graphlib.Graph;r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const f of e){if(f.parentId)continue;const h=f.type==="groupNode",d=h&&((l=f.style)==null?void 0:l.width)||bo,m=h&&((a=f.style)==null?void 0:a.height)||Zl;r.setNode(f.id,{width:d,height:m})}for(const f of n)r.hasNode(f.source)&&r.hasNode(f.target)&&r.setEdge(f.source,f.target);H1.layout(r);for(const f of e){if(f.parentId)continue;const h=r.node(f.id);if(!h)continue;const d=f.type==="groupNode",m=d&&((s=f.style)==null?void 0:s.width)||bo,p=d&&((u=f.style)==null?void 0:u.height)||Zl;f.position={x:h.x-m/2,y:h.y-p/2}}}const $e={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},o5=70,I1=90;function Nc({data:e,children:n}){const[r,l]=V.useState(!1),a=V.useRef(null),s=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),f=$e[e.status]||$e.pending;return b.jsxs("div",{className:"relative",onMouseEnter:s,onMouseLeave:u,children:[n,r&&b.jsxs("div",{className:Be("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[b.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),b.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:f}}),b.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&b.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:Qt(e.elapsed)})]}),e.model&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),b.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Vn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&b.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Vn(e.inputTokens),"↑ ",Vn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:mi(e.costUsd)})]}),e.exitCode!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),b.jsx("span",{className:Be("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&b.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),b.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const s5=V.memo(function({data:n,id:r,selected:l}){var L;const a=n,s=Wi(),f=((L=s[r])==null?void 0:L.status)||a.status||"pending",h=$e[f]||$e.pending,d=s[r],m=d==null?void 0:d.elapsed,p=d==null?void 0:d.model,y=d==null?void 0:d.tokens,v=d==null?void 0:d.input_tokens,w=d==null?void 0:d.output_tokens,k=d==null?void 0:d.cost_usd,S=d==null?void 0:d.iteration,_=d==null?void 0:d.error_type,T=d==null?void 0:d.error_message,E=d==null?void 0:d.context_pct,z=u5(r,f),I=c5(f),A=(()=>{if(f==="failed"&&T)return{text:T.length>40?T.slice(0,37)+"...":T,className:"text-red-400"};if(f==="running")return{text:z,className:"text-[var(--text-muted)]"};if(f==="completed"){const D=[];return m!=null&&D.push(Qt(m)),y!=null&&D.push(`${Vn(y)} tok`),k!=null&&D.push(mi(k)),{text:D.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,elapsed:m,model:p,tokens:y,inputTokens:v,outputTokens:w,costUsd:k,iteration:S,errorType:_,errorMessage:T},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",I),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(J2,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S!=null&&S>1&&b.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${h}25`,color:h},children:["x",S]})]}),A.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",A.className),children:A.text})]}),E!=null&&b.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:b.jsx("div",{className:Be("h-full transition-all duration-500",E>=I1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(E,100)}%`,backgroundColor:E>=I1?"#ef4444":E>=o5?"#f59e0b":"#22c55e"}})})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function u5(e,n){var h;const r=(h=Wi()[e])==null?void 0:h.startedAt,l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const p=r??a??0;u(Qt((a??p)-p));return}const d=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-d)/1e3;u(Qt(p))};return m(),f.current=setInterval(m,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function c5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const f5=V.memo(function({data:n,id:r,selected:l}){var _;const a=n,s=Wi(),f=((_=s[r])==null?void 0:_.status)||a.status||"pending",h=$e[f]||$e.pending,d=s[r],m=d==null?void 0:d.elapsed,p=d==null?void 0:d.exit_code,y=d==null?void 0:d.error_type,v=d==null?void 0:d.error_message,w=d5(r,f),k=h5(f),S=(()=>{if(f==="failed"&&v)return{text:v.length>40?v.slice(0,37)+"...":v,className:"text-red-400"};if(f==="running")return{text:w,className:"text-[var(--text-muted)]"};if(f==="completed"){const T=[];return m!=null&&T.push(Qt(m)),p!=null&&T.push(`exit ${p}`),{text:T.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,elapsed:m,exitCode:p,errorType:y,errorMessage:v},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",k),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(hN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",S.className),children:S.text})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function d5(e,n){var h;const r=(h=Wi()[e])==null?void 0:h.startedAt,l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const p=r??a??0;u(Qt((a??p)-p));return}const d=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-d)/1e3;u(Qt(p))};return m(),f.current=setInterval(m,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function h5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const p5=V.memo(function({data:n,id:r,selected:l}){var p,y;const a=n,s=Wi(),f=((p=s[r])==null?void 0:p.status)||a.status||"pending",h=$e[f]||$e.pending,d=(y=s[r])==null?void 0:y.selected_option,m=m5(f);return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,selectedOption:d},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="waiting"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(dN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),f==="waiting"&&b.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),f==="completed"&&d&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:d})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function m5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const g5=V.memo(function({data:n,id:r,selected:l}){var S;const a=n,u=a.type==="for_each_group"?uN:aN,f=a.progress,m=((S=Wi()[r])==null?void 0:S.status)||a.status||"pending",p=$e[m]||$e.pending,y=y5(m),v=f?`${f.completed+f.failed}/${f.total}${f.failed>0?` (${f.failed} failed)`:""}`:null,w=f&&f.total>0?(f.completed+f.failed)/f.total*100:0,k=f!=null&&f.failed>0;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsxs("div",{className:Be("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",m==="running"&&"shadow-[0_0_16px_var(--running-glow)]",y),style:{borderColor:p,minHeight:"100%"},children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(u,{className:"w-3.5 h-3.5",style:{color:p}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),v&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:v}),f&&f.total>0&&m==="running"&&b.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${w}%`,backgroundColor:k?"var(--failed)":"var(--completed)"}})})]}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function y5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const x5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.status})||a.status||"pending",f=$e[u]||$e.pending,h=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.elapsed}),d=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.error_message}),m=he(S=>S.navigateIntoSubworkflow),p=IS(),y=p.some(S=>S.parentAgent===r),v=p.find(S=>S.parentAgent===r),w=v==null?void 0:v.workflowName,k=(()=>{if(u==="failed"&&d)return{text:d.length>35?d.slice(0,32)+"...":d,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const S=[];return w&&S.push(w),h!=null&&S.push(`${h.toFixed(1)}s`),{text:S.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:u,elapsed:h,errorType:void 0,errorMessage:d,iteration:void 0},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:f,borderStyle:"dashed"},onDoubleClick:S=>{y&&(S.stopPropagation(),m(r))},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx(Xp,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("div",{className:"flex items-center gap-1",children:b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),k.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",k.className),children:k.text})]}),y&&b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),v5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=a==="completed",u=a==="failed",f=!s&&!u,h=s?$e.completed:u?$e.failed:$e.pending;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",s?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:h},children:s?b.jsx(Vi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?b.jsx(Rb,{className:"w-3.5 h-3.5 text-white",fill:"white"}):b.jsx(Vi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:f?$e.pending:h}})})]})}),b5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=$e[a]||$e.pending,u=a==="running"||a==="completed";return b.jsxs(b.Fragment,{children:[b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:s},children:b.jsx(Fp,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":s}})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),w5=V.memo(function({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,source:h,target:d,data:m}){const p=xj(),y=V.useMemo(()=>p.find(U=>U.from===h&&U.to===d),[p,h,d]),[v,w,k]=cm({sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f}),S=m==null?void 0:m.when,_=!!S,T=(y==null?void 0:y.state)==="taken",E=(y==null?void 0:y.state)==="highlighted",z=(y==null?void 0:y.state)==="failed";let I="var(--edge-color)",A=2,L;z?(I="var(--failed)",A=3):T?(I="var(--edge-taken)",A=3):E&&(I="var(--edge-active)",A=3),_&&!T&&!E&&!z&&(L="6 3");const D=z?"failed":T?"taken":E?"active":"default";return b.jsxs(b.Fragment,{children:[b.jsx(Qo,{id:n,path:v,style:{stroke:I,strokeWidth:A,strokeDasharray:L,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${D})`}),_&&b.jsx(UM,{children:b.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${k}px)`,pointerEvents:"all"},children:b.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:z?"var(--failed)":T?"var(--edge-taken)":"var(--surface)",color:z||T?"var(--bg)":"var(--text-muted)",border:`1px solid ${z?"var(--failed)":T?"var(--edge-taken)":"var(--border)"}`},title:S,children:S})})}),T&&b.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:b.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:v})}),z&&b.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:b.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:v})})]})});function S5(){const e=he(u=>u.workflowStatus),n=he(u=>u.workflowFailure),r=he(u=>u.workflowFailedAgent),l=he(u=>u.selectNode);if(e!=="failed"||!n)return null;const a=n.message||n.error_type||"Unknown error",s=n.error_type==="TimeoutError";return b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[b.jsx(pN,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsxs("div",{className:"flex flex-col min-w-0",children:[b.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),b.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),s&&n.current_agent&&b.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",n.current_agent]}),n.checkpoint_path&&b.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:n.checkpoint_path,children:["Checkpoint: ",n.checkpoint_path.split("/").pop()]})]}),r&&b.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[b.jsx(rN,{className:"w-3 h-3"}),"View"]})]})})}function _5(){const[e,n]=V.useState(!1),r=he(h=>h.workflowStatus),l=he(h=>h.totalCost),a=he(h=>h.totalTokens),s=he(h=>h.agentsCompleted),u=he(h=>h.agentsTotal),f=Hb();return r!=="completed"||e?null:b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[b.jsx(eN,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),b.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[b.jsx("span",{children:f}),u>0&&b.jsxs("span",{children:[s,"/",u," agents"]}),a>0&&b.jsxs("span",{children:[Vn(a)," tok"]}),l>0&&b.jsx("span",{children:mi(l)})]}),b.jsx("button",{onClick:()=>n(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:b.jsx(Io,{className:"w-3.5 h-3.5"})})]})})}const E5={agentNode:s5,scriptNode:f5,gateNode:p5,groupNode:g5,workflowNode:x5,endNode:v5,startNode:b5},N5={animatedEdge:w5},k5={type:"animatedEdge"};function C5(){return b.jsx("svg",{style:{position:"absolute",width:0,height:0},children:b.jsxs("defs",{children:[b.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),b.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),b.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),b.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function T5(){const e=vj(),n=he(G=>G.viewContextPath),r=he(G=>G.selectNode),l=he(G=>G.selectedNode),a=he(G=>G.workflowStatus),s=he(G=>G.wsStatus),u=he(G=>G.workflowFailedAgent),f=he(G=>G.navigateIntoSubworkflow),{agents:h,routes:d,parallelGroups:m,forEachGroups:p,nodes:y,groupProgress:v,entryPoint:w,subworkflowContexts:k}=e,[S,_,T]=IM([]),[E,z,I]=VM([]),A=V.useRef(!1),L=V.useRef(""),D=JSON.stringify(n);V.useEffect(()=>{if(h.length===0){L.current!==D&&(A.current=!1,L.current=D);return}if(L.current!==D&&(A.current=!1,L.current=D),A.current)return;A.current=!0;const{nodes:G,edges:M}=l5(h,d,m,p,y,v,w);_(G),z(M)},[h,d,m,p,y,v,w,_,z,D]),V.useEffect(()=>{A.current&&_(G=>G.map(M=>{const $=y[M.id];if(!$)return M;const Q=$.status||"pending",K=M.data.status;if(Q!==K){const j={...M.data,status:Q};return M.data.groupName&&v[M.data.groupName]&&(j.progress=v[M.data.groupName]),{...M,data:j}}if(M.data.groupName&&v[M.data.groupName]){const j=M.data.progress,B=v[M.data.groupName];if(B&&(!j||j.completed!==B.completed||j.failed!==B.failed))return{...M,data:{...M.data,progress:B}}}return M}))},[y,v,_]);const U=V.useCallback((G,M)=>{M.type==="groupNode"&&M.data.type!=="for_each_group"||r(M.id)},[r]),X=V.useCallback((G,M)=>{k.some(Q=>Q.parentAgent===M.id)&&f(M.id)},[k,f]),H=V.useCallback(()=>{r(null)},[r]),q=V.useCallback(G=>{var $;const M=(($=G.data)==null?void 0:$.status)||"pending";return $e[M]||$e.pending},[]);V.useEffect(()=>{_(G=>G.map(M=>({...M,selected:M.id===l})))},[l,_]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const ee=a==="pending"&&h.length===0,R=(()=>{switch(s){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return b.jsxs("div",{className:"w-full h-full relative",children:[b.jsx(C5,{}),b.jsx(S5,{}),b.jsx(_5,{}),ee&&b.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[b.jsxs("div",{className:"relative mb-3",children:[b.jsx(yN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),b.jsx(ko,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),b.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:R})]}),b.jsxs(BM,{nodes:S,edges:E,onNodesChange:T,onEdgesChange:I,onNodeClick:U,onNodeDoubleClick:X,onPaneClick:H,nodeTypes:E5,edgeTypes:N5,defaultEdgeOptions:k5,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[b.jsx(XM,{variant:zr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),b.jsx(hj,{nodeColor:q,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),b.jsx(ej,{showInteractive:!1,children:b.jsx(z5,{})}),b.jsx(A5,{})]})]})}function z5(){const{fitView:e}=Fo(),n=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return b.jsx("button",{onClick:n,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:b.jsx(oN,{className:"w-3.5 h-3.5"})})}function A5(){const{fitView:e}=Fo();return V.useEffect(()=>{const n=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e]),null}function el({items:e}){const n=e.filter(r=>r.value!=null&&r.value!=="");return n.length===0?null:b.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:n.map(({label:r,value:l})=>b.jsxs("div",{className:"contents",children:[b.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),b.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function FS(e){const n=[];return e.elapsed!=null&&n.push({label:"Elapsed",value:Qt(e.elapsed)}),e.model&&n.push({label:"Model",value:e.model}),e.tokens!=null&&n.push({label:"Tokens",value:Vn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&n.push({label:"In / Out",value:`${Vn(e.input_tokens)} / ${Vn(e.output_tokens)}`}),e.cost_usd!=null&&n.push({label:"Cost",value:mi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&n.push({label:"Context",value:zN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&n.push({label:"Iteration",value:e.iteration}),e.error_type&&n.push({label:"Error",value:e.error_type}),e.error_message&&n.push({label:"Message",value:e.error_message}),n}function Ki({output:e,title:n="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,s]=V.useState(r),[u,f]=V.useState(!1),h=Lb(e);if(!h)return null;const d=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(h),f(!0),setTimeout(()=>f(!1),2e3)};return b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),n]}),a&&b.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}):b.jsx(Ob,{className:"w-3 h-3"})})]}),a&&b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:d?b.jsx(M5,{text:h}):h})]})}function M5({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function xm({activity:e,defaultExpanded:n=!0}){const[r,l]=V.useState(n),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&b.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((s,u)=>b.jsx(j5,{entry:s},u))})]})}function j5({entry:e}){const n={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return b.jsxs("div",{className:Be("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[b.jsxs("div",{className:"flex items-start gap-1.5",children:[b.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),b.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),b.jsx("span",{className:Be("break-words",n[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&b.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function O5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?b.jsx(V1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:n,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):b.jsxs(b.Fragment,{children:[b.jsx(el,{items:FS(e)}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),b.jsx(xm,{activity:e.activity,defaultExpanded:n!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>b.jsx(V1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:n,snapshot:a},a.iteration))]})}function V1({label:e,defaultExpanded:n,snapshot:r,status:l}){const[a,s]=V.useState(n);return b.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?b.jsx(Ji,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:D5(r.elapsed)})]}),a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[b.jsx(el,{items:FS(r)}),r.prompt&&b.jsx(Ki,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),b.jsx(xm,{activity:r.activity,defaultExpanded:n&&l!=="completed"}),r.output!=null&&b.jsx(Ki,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&b.jsxs("div",{className:"text-xs text-red-400",children:[b.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function D5(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function R5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Qt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` +`)),m=d.reduce((p,y)=>p.concat(...y),[]);return[d,m]}return[[],[]]},[e]);return V.useEffect(()=>{const h=(n==null?void 0:n.target)??kv,d=(n==null?void 0:n.actInsideInputWithModifier)??!0;if(e!==null){const m=v=>{var _,S;if(a.current=v.ctrlKey||v.metaKey||v.shiftKey||v.altKey,(!a.current||a.current&&!d)&&Pw(v))return!1;const k=Tv(v.code,f);if(s.current.add(v[k]),Cv(u,s.current,!1)){const T=((S=(_=v.composedPath)==null?void 0:_.call(v))==null?void 0:S[0])||v.target,N=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";n.preventDefault!==!1&&(a.current||!N)&&v.preventDefault(),l(!0)}},p=v=>{const w=Tv(v.code,f);Cv(u,s.current,!0)?(l(!1),s.current.clear()):s.current.delete(v[w]),v.key==="Meta"&&s.current.clear(),a.current=!1},y=()=>{s.current.clear(),l(!1)};return h==null||h.addEventListener("keydown",m),h==null||h.addEventListener("keyup",p),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{h==null||h.removeEventListener("keydown",m),h==null||h.removeEventListener("keyup",p),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,l]),r}function Cv(e,n,r){return e.filter(l=>r||l.length===n.size).some(l=>l.every(a=>n.has(a)))}function Tv(e,n){return n.includes(e)?"code":"key"}const xA=()=>{const e=pt();return V.useMemo(()=>({zoomIn:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomOut:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1/1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomTo:(n,r)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(n,{duration:r==null?void 0:r.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(n,r)=>{const{transform:[l,a,s],panZoom:u}=e.getState();return u?(await u.setViewport({x:n.x??l,y:n.y??a,zoom:n.zoom??s},r),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[n,r,l]=e.getState().transform;return{x:n,y:r,zoom:l}},setCenter:async(n,r,l)=>e.getState().setCenter(n,r,l),fitBounds:async(n,r)=>{const{width:l,height:a,minZoom:s,maxZoom:u,panZoom:f}=e.getState(),h=sm(n,l,a,s,u,(r==null?void 0:r.padding)??.1);return f?(await f.setViewport(h,{duration:r==null?void 0:r.duration,ease:r==null?void 0:r.ease,interpolate:r==null?void 0:r.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(n,r={})=>{const{transform:l,snapGrid:a,snapToGrid:s,domNode:u}=e.getState();if(!u)return n;const{x:f,y:h}=u.getBoundingClientRect(),d={x:n.x-f,y:n.y-h},m=r.snapGrid??a,p=r.snapToGrid??s;return Xo(d,l,p,m)},flowToScreenPosition:n=>{const{transform:r,domNode:l}=e.getState();if(!l)return n;const{x:a,y:s}=l.getBoundingClientRect(),u=lc(n,r);return{x:u.x+a,y:u.y+s}}}),[])};function hS(e,n){const r=[],l=new Map,a=[];for(const s of e)if(s.type==="add"){a.push(s);continue}else if(s.type==="remove"||s.type==="replace")l.set(s.id,[s]);else{const u=l.get(s.id);u?u.push(s):l.set(s.id,[s])}for(const s of n){const u=l.get(s.id);if(!u){r.push(s);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){r.push({...u[0].item});continue}const f={...s};for(const h of u)vA(h,f);r.push(f)}return a.length&&a.forEach(s=>{s.index!==void 0?r.splice(s.index,0,{...s.item}):r.push({...s.item})}),r}function vA(e,n){switch(e.type){case"select":{n.selected=e.selected;break}case"position":{typeof e.position<"u"&&(n.position=e.position),typeof e.dragging<"u"&&(n.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(n.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(n.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(n.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(n.resizing=e.resizing);break}}}function pS(e,n){return hS(e,n)}function mS(e,n){return hS(e,n)}function qi(e,n){return{id:e,type:"select",selected:n}}function Ql(e,n=new Set,r=!1){const l=[];for(const[a,s]of e){const u=n.has(a);!(s.selected===void 0&&!u)&&s.selected!==u&&(r&&(s.selected=u),l.push(qi(s.id,u)))}return l}function zv({items:e=[],lookup:n}){var a;const r=[],l=new Map(e.map(s=>[s.id,s]));for(const[s,u]of e.entries()){const f=n.get(u.id),h=((a=f==null?void 0:f.internals)==null?void 0:a.userNode)??f;h!==void 0&&h!==u&&r.push({id:u.id,item:u,type:"replace"}),h===void 0&&r.push({item:u,type:"add",index:s})}for(const[s]of n)l.get(s)===void 0&&r.push({id:s,type:"remove"});return r}function Av(e){return{id:e.id,type:"remove"}}const jv=e=>VT(e),bA=e=>Bw(e);function gS(e){return V.forwardRef(e)}const wA=typeof window<"u"?V.useLayoutEffect:V.useEffect;function Mv(e){const[n,r]=V.useState(BigInt(0)),[l]=V.useState(()=>SA(()=>r(a=>a+BigInt(1))));return wA(()=>{const a=l.get();a.length&&(e(a),l.reset())},[n]),l}function SA(e){let n=[];return{get:()=>n,reset:()=>{n=[]},push:r=>{n.push(r),e()}}}const yS=V.createContext(null);function _A({children:e}){const n=pt(),r=V.useCallback(f=>{const{nodes:h=[],setNodes:d,hasDefaultNodes:m,onNodesChange:p,nodeLookup:y,fitViewQueued:v,onNodesChangeMiddlewareMap:w}=n.getState();let k=h;for(const S of f)k=typeof S=="function"?S(k):S;let _=zv({items:k,lookup:y});for(const S of w.values())_=S(_);m&&d(k),_.length>0?p==null||p(_):v&&window.requestAnimationFrame(()=>{const{fitViewQueued:S,nodes:T,setNodes:N}=n.getState();S&&N(T)})},[]),l=Mv(r),a=V.useCallback(f=>{const{edges:h=[],setEdges:d,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:y}=n.getState();let v=h;for(const w of f)v=typeof w=="function"?w(v):w;m?d(v):p&&p(zv({items:v,lookup:y}))},[]),s=Mv(a),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:s}),[]);return b.jsx(yS.Provider,{value:u,children:e})}function EA(){const e=V.useContext(yS);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const NA=e=>!!e.panZoom;function Fo(){const e=xA(),n=pt(),r=EA(),l=Ge(NA),a=V.useMemo(()=>{const s=p=>n.getState().nodeLookup.get(p),u=p=>{r.nodeQueue.push(p)},f=p=>{r.edgeQueue.push(p)},h=p=>{var S,T;const{nodeLookup:y,nodeOrigin:v}=n.getState(),w=jv(p)?p:y.get(p.id),k=w.parentId?Yw(w.position,w.measured,w.parentId,y,v):w.position,_={...w,position:k,width:((S=w.measured)==null?void 0:S.width)??w.width,height:((T=w.measured)==null?void 0:T.height)??w.height};return oa(_)},d=(p,y,v={replace:!1})=>{u(w=>w.map(k=>{if(k.id===p){const _=typeof y=="function"?y(k):y;return v.replace&&jv(_)?_:{...k,..._}}return k}))},m=(p,y,v={replace:!1})=>{f(w=>w.map(k=>{if(k.id===p){const _=typeof y=="function"?y(k):y;return v.replace&&bA(_)?_:{...k,..._}}return k}))};return{getNodes:()=>n.getState().nodes.map(p=>({...p})),getNode:p=>{var y;return(y=s(p))==null?void 0:y.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:p=[]}=n.getState();return p.map(y=>({...y}))},getEdge:p=>n.getState().edgeLookup.get(p),setNodes:u,setEdges:f,addNodes:p=>{const y=Array.isArray(p)?p:[p];r.nodeQueue.push(v=>[...v,...y])},addEdges:p=>{const y=Array.isArray(p)?p:[p];r.edgeQueue.push(v=>[...v,...y])},toObject:()=>{const{nodes:p=[],edges:y=[],transform:v}=n.getState(),[w,k,_]=v;return{nodes:p.map(S=>({...S})),edges:y.map(S=>({...S})),viewport:{x:w,y:k,zoom:_}}},deleteElements:async({nodes:p=[],edges:y=[]})=>{const{nodes:v,edges:w,onNodesDelete:k,onEdgesDelete:_,triggerNodeChanges:S,triggerEdgeChanges:T,onDelete:N,onBeforeDelete:A}=n.getState(),{nodes:R,edges:z}=await XT({nodesToRemove:p,edgesToRemove:y,nodes:v,edges:w,onBeforeDelete:A}),L=z.length>0,D=R.length>0;if(L){const I=z.map(Av);_==null||_(z),T(I)}if(D){const I=R.map(Av);k==null||k(R),S(I)}return(D||L)&&(N==null||N({nodes:R,edges:z})),{deletedNodes:R,deletedEdges:z}},getIntersectingNodes:(p,y=!0,v)=>{const w=rv(p),k=w?p:h(p),_=v!==void 0;return k?(v||n.getState().nodes).filter(S=>{const T=n.getState().nodeLookup.get(S.id);if(T&&!w&&(S.id===p.id||!T.internals.positionAbsolute))return!1;const N=oa(_?S:T),A=Lo(N,k);return y&&A>0||A>=N.width*N.height||A>=k.width*k.height}):[]},isNodeIntersecting:(p,y,v=!0)=>{const k=rv(p)?p:h(p);if(!k)return!1;const _=Lo(k,y);return v&&_>0||_>=y.width*y.height||_>=k.width*k.height},updateNode:d,updateNodeData:(p,y,v={replace:!1})=>{d(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},updateEdge:m,updateEdgeData:(p,y,v={replace:!1})=>{m(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},getNodesBounds:p=>{const{nodeLookup:y,nodeOrigin:v}=n.getState();return GT(p,{nodeLookup:y,nodeOrigin:v})},getHandleConnections:({type:p,id:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}-${p}${y?`-${y}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}${p?y?`-${p}-${y}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const y=n.getState().fitViewResolver??KT();return n.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:y}),r.nodeQueue.push(v=>[...v]),y.promise}}},[]);return V.useMemo(()=>({...a,...e,viewportInitialized:l}),[l])}const Ov=e=>e.selected,kA=typeof window<"u"?window:void 0;function CA({deleteKeyCode:e,multiSelectionKeyCode:n}){const r=pt(),{deleteElements:l}=Fo(),a=Bo(e,{actInsideInputWithModifier:!1}),s=Bo(n,{target:kA});V.useEffect(()=>{if(a){const{edges:u,nodes:f}=r.getState();l({nodes:f.filter(Ov),edges:u.filter(Ov)}),r.setState({nodesSelectionActive:!1})}},[a]),V.useEffect(()=>{r.setState({multiSelectionActive:s})},[s])}function TA(e){const n=pt();V.useEffect(()=>{const r=()=>{var a,s,u,f;if(!e.current||!(((s=(a=e.current).checkVisibility)==null?void 0:s.call(a))??!0))return!1;const l=um(e.current);(l.height===0||l.width===0)&&((f=(u=n.getState()).onError)==null||f.call(u,"004",nr.error004())),n.setState({width:l.width||500,height:l.height||500})};if(e.current){r(),window.addEventListener("resize",r);const l=new ResizeObserver(()=>r());return l.observe(e.current),()=>{window.removeEventListener("resize",r),l&&e.current&&l.unobserve(e.current)}}},[])}const Ec={position:"absolute",width:"100%",height:"100%",top:0,left:0},zA=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function AA({onPaneContextMenu:e,zoomOnScroll:n=!0,zoomOnPinch:r=!0,panOnScroll:l=!1,panOnScrollSpeed:a=.5,panOnScrollMode:s=$i.Free,zoomOnDoubleClick:u=!0,panOnDrag:f=!0,defaultViewport:h,translateExtent:d,minZoom:m,maxZoom:p,zoomActivationKeyCode:y,preventScrolling:v=!0,children:w,noWheelClassName:k,noPanClassName:_,onViewportChange:S,isControlledViewport:T,paneClickDistance:N,selectionOnDrag:A}){const R=pt(),z=V.useRef(null),{userSelectionActive:L,lib:D,connectionInProgress:I}=Ge(zA,ht),X=Bo(y),B=V.useRef();TA(z);const U=V.useCallback(ee=>{S==null||S({x:ee[0],y:ee[1],zoom:ee[2]}),T||R.setState({transform:ee})},[S,T]);return V.useEffect(()=>{if(z.current){B.current=Dz({domNode:z.current,minZoom:m,maxZoom:p,translateExtent:d,viewport:h,onDraggingChange:j=>R.setState($=>$.paneDragging===j?$:{paneDragging:j}),onPanZoomStart:(j,$)=>{const{onViewportChangeStart:Q,onMoveStart:K}=R.getState();K==null||K(j,$),Q==null||Q($)},onPanZoom:(j,$)=>{const{onViewportChange:Q,onMove:K}=R.getState();K==null||K(j,$),Q==null||Q($)},onPanZoomEnd:(j,$)=>{const{onViewportChangeEnd:Q,onMoveEnd:K}=R.getState();K==null||K(j,$),Q==null||Q($)}});const{x:ee,y:H,zoom:G}=B.current.getViewport();return R.setState({panZoom:B.current,transform:[ee,H,G],domNode:z.current.closest(".react-flow")}),()=>{var j;(j=B.current)==null||j.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=B.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:n,zoomOnPinch:r,panOnScroll:l,panOnScrollSpeed:a,panOnScrollMode:s,zoomOnDoubleClick:u,panOnDrag:f,zoomActivationKeyPressed:X,preventScrolling:v,noPanClassName:_,userSelectionActive:L,noWheelClassName:k,lib:D,onTransformChange:U,connectionInProgress:I,selectionOnDrag:A,paneClickDistance:N})},[e,n,r,l,a,s,u,f,X,v,_,L,k,D,U,I,A,N]),b.jsx("div",{className:"react-flow__renderer",ref:z,style:Ec,children:w})}const jA=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function MA(){const{userSelectionActive:e,userSelectionRect:n}=Ge(jA,ht);return e&&n?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const ch=(e,n)=>r=>{r.target===n.current&&(e==null||e(r))},OA=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function DA({isSelecting:e,selectionKeyPressed:n,selectionMode:r=Ro.Full,panOnDrag:l,paneClickDistance:a,selectionOnDrag:s,onSelectionStart:u,onSelectionEnd:f,onPaneClick:h,onPaneContextMenu:d,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:y,onPaneMouseLeave:v,children:w}){const k=pt(),{userSelectionActive:_,elementsSelectable:S,dragging:T,connectionInProgress:N}=Ge(OA,ht),A=S&&(e||_),R=V.useRef(null),z=V.useRef(),L=V.useRef(new Set),D=V.useRef(new Set),I=V.useRef(!1),X=Q=>{if(I.current||N){I.current=!1;return}h==null||h(Q),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},B=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}d==null||d(Q)},U=m?Q=>m(Q):void 0,ee=Q=>{I.current&&(Q.stopPropagation(),I.current=!1)},H=Q=>{var F,J;const{domNode:K}=k.getState();if(z.current=K==null?void 0:K.getBoundingClientRect(),!z.current)return;const M=Q.target===R.current;if(!M&&!!Q.target.closest(".nokey")||!e||!(s&&M||n)||Q.button!==0||!Q.isPrimary)return;(J=(F=Q.target)==null?void 0:F.setPointerCapture)==null||J.call(F,Q.pointerId),I.current=!1;const{x:E,y:Y}=In(Q.nativeEvent,z.current);k.setState({userSelectionRect:{width:0,height:0,startX:E,startY:Y,x:E,y:Y}}),M||(Q.stopPropagation(),Q.preventDefault())},G=Q=>{const{userSelectionRect:K,transform:M,nodeLookup:q,edgeLookup:P,connectionLookup:E,triggerNodeChanges:Y,triggerEdgeChanges:F,defaultEdgeOptions:J,resetSelectedElements:ne}=k.getState();if(!z.current||!K)return;const{x:re,y:se}=In(Q.nativeEvent,z.current),{startX:ye,startY:ve}=K;if(!I.current){const Ce=n?0:a;if(Math.hypot(re-ye,se-ve)<=Ce)return;ne(),u==null||u(Q)}I.current=!0;const xe={startX:ye,startY:ve,x:reCe.id)),D.current=new Set;const je=(J==null?void 0:J.selectable)??!0;for(const Ce of L.current){const ut=E.get(Ce);if(ut)for(const{edgeId:tt}of ut.values()){const At=P.get(tt);At&&(At.selectable??je)&&D.current.add(tt)}}if(!iv(pe,L.current)){const Ce=Ql(q,L.current,!0);Y(Ce)}if(!iv(_e,D.current)){const Ce=Ql(P,D.current);F(Ce)}k.setState({userSelectionRect:xe,userSelectionActive:!0,nodesSelectionActive:!1})},j=Q=>{var K,M;Q.button===0&&((M=(K=Q.target)==null?void 0:K.releasePointerCapture)==null||M.call(K,Q.pointerId),!_&&Q.target===R.current&&k.getState().userSelectionRect&&(X==null||X(Q)),k.setState({userSelectionActive:!1,userSelectionRect:null}),I.current&&(f==null||f(Q),k.setState({nodesSelectionActive:L.current.size>0})))},$=l===!0||Array.isArray(l)&&l.includes(0);return b.jsxs("div",{className:zt(["react-flow__pane",{draggable:$,dragging:T,selection:e}]),onClick:A?void 0:ch(X,R),onContextMenu:ch(B,R),onWheel:ch(U,R),onPointerEnter:A?void 0:p,onPointerMove:A?G:y,onPointerUp:A?j:void 0,onPointerDownCapture:A?H:void 0,onClickCapture:A?ee:void 0,onPointerLeave:v,ref:R,style:Ec,children:[w,b.jsx(MA,{})]})}function Lp({id:e,store:n,unselect:r=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:s,multiSelectionActive:u,nodeLookup:f,onError:h}=n.getState(),d=f.get(e);if(!d){h==null||h("012",nr.error012(e));return}n.setState({nodesSelectionActive:!1}),d.selected?(r||d.selected&&u)&&(s({nodes:[d],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([e])}function xS({nodeRef:e,disabled:n=!1,noDragClassName:r,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:u}){const f=pt(),[h,d]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=bz({getStoreItems:()=>f.getState(),onNodeMouseDown:p=>{Lp({id:p,store:f,nodeRef:e})},onDragStart:()=>{d(!0)},onDragStop:()=>{d(!1)}})},[]),V.useEffect(()=>{if(!(n||!e.current||!m.current))return m.current.update({noDragClassName:r,handleSelector:l,domNode:e.current,isSelectable:s,nodeId:a,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[r,l,n,s,e,a,u]),h}const RA=e=>n=>n.selected&&(n.draggable||e&&typeof n.draggable>"u");function vS(){const e=pt();return V.useCallback(r=>{const{nodeExtent:l,snapToGrid:a,snapGrid:s,nodesDraggable:u,onError:f,updateNodePositions:h,nodeLookup:d,nodeOrigin:m}=e.getState(),p=new Map,y=RA(u),v=a?s[0]:5,w=a?s[1]:5,k=r.direction.x*v*r.factor,_=r.direction.y*w*r.factor;for(const[,S]of d){if(!y(S))continue;let T={x:S.internals.positionAbsolute.x+k,y:S.internals.positionAbsolute.y+_};a&&(T=Po(T,s));const{position:N,positionAbsolute:A}=qw({nodeId:S.id,nextPosition:T,nodeLookup:d,nodeExtent:l,nodeOrigin:m,onError:f});S.position=N,S.internals.positionAbsolute=A,p.set(S.id,S)}h(p)},[])}const gm=V.createContext(null),LA=gm.Provider;gm.Consumer;const bS=()=>V.useContext(gm),HA=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),BA=(e,n,r)=>l=>{const{connectionClickStartHandle:a,connectionMode:s,connection:u}=l,{fromHandle:f,toHandle:h,isValid:d}=u,m=(h==null?void 0:h.nodeId)===e&&(h==null?void 0:h.id)===n&&(h==null?void 0:h.type)===r;return{connectingFrom:(f==null?void 0:f.nodeId)===e&&(f==null?void 0:f.id)===n&&(f==null?void 0:f.type)===r,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===n&&(a==null?void 0:a.type)===r,isPossibleEndHandle:s===la.Strict?(f==null?void 0:f.type)!==r:e!==(f==null?void 0:f.nodeId)||n!==(f==null?void 0:f.id),connectionInProcess:!!f,clickConnectionInProcess:!!a,valid:m&&d}};function qA({type:e="source",position:n=be.Top,isValidConnection:r,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:s=!0,id:u,onConnect:f,children:h,className:d,onMouseDown:m,onTouchStart:p,...y},v){var G,j;const w=u||null,k=e==="target",_=pt(),S=bS(),{connectOnClick:T,noPanClassName:N,rfId:A}=Ge(HA,ht),{connectingFrom:R,connectingTo:z,clickConnecting:L,isPossibleEndHandle:D,connectionInProcess:I,clickConnectionInProcess:X,valid:B}=Ge(BA(S,w,e),ht);S||(j=(G=_.getState()).onError)==null||j.call(G,"010",nr.error010());const U=$=>{const{defaultEdgeOptions:Q,onConnect:K,hasDefaultEdges:M}=_.getState(),q={...Q,...$};if(M){const{edges:P,setEdges:E}=_.getState();E(iz(q,P))}K==null||K(q),f==null||f(q)},ee=$=>{if(!S)return;const Q=Xw($.nativeEvent);if(a&&(Q&&$.button===0||!Q)){const K=_.getState();Rp.onPointerDown($.nativeEvent,{handleDomNode:$.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:k,handleId:w,nodeId:S,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...M)=>{var q,P;return(P=(q=_.getState()).onConnectEnd)==null?void 0:P.call(q,...M)},updateConnection:K.updateConnection,onConnect:U,isValidConnection:r||((...M)=>{var q,P;return((P=(q=_.getState()).isValidConnection)==null?void 0:P.call(q,...M))??!0}),getTransform:()=>_.getState().transform,getFromHandle:()=>_.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}Q?m==null||m($):p==null||p($)},H=$=>{const{onClickConnectStart:Q,onClickConnectEnd:K,connectionClickStartHandle:M,connectionMode:q,isValidConnection:P,lib:E,rfId:Y,nodeLookup:F,connection:J}=_.getState();if(!S||!M&&!a)return;if(!M){Q==null||Q($.nativeEvent,{nodeId:S,handleId:w,handleType:e}),_.setState({connectionClickStartHandle:{nodeId:S,type:e,id:w}});return}const ne=$w($.target),re=r||P,{connection:se,isValid:ye}=Rp.isValid($.nativeEvent,{handle:{nodeId:S,id:w,type:e},connectionMode:q,fromNodeId:M.nodeId,fromHandleId:M.id||null,fromType:M.type,isValidConnection:re,flowId:Y,doc:ne,lib:E,nodeLookup:F});ye&&se&&U(se);const ve=structuredClone(J);delete ve.inProgress,ve.toPosition=ve.toHandle?ve.toHandle.position:null,K==null||K($,ve),_.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":w,"data-nodeid":S,"data-handlepos":n,"data-id":`${A}-${S}-${w}-${e}`,className:zt(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",N,d,{source:!k,target:k,connectable:l,connectablestart:a,connectableend:s,clickconnecting:L,connectingfrom:R,connectingto:z,valid:B,connectionindicator:l&&(!I||D)&&(I||X?s:a)}]),onMouseDown:ee,onTouchStart:ee,onClick:T?H:void 0,ref:v,...y,children:h})}const $t=V.memo(gS(qA));function UA({data:e,isConnectable:n,sourcePosition:r=be.Bottom}){return b.jsxs(b.Fragment,{children:[e==null?void 0:e.label,b.jsx($t,{type:"source",position:r,isConnectable:n})]})}function IA({data:e,isConnectable:n,targetPosition:r=be.Top,sourcePosition:l=be.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label,b.jsx($t,{type:"source",position:l,isConnectable:n})]})}function VA(){return null}function GA({data:e,isConnectable:n,targetPosition:r=be.Top}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label]})}const ac={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Dv={input:UA,default:IA,output:GA,group:VA};function YA(e){var n,r,l,a;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((n=e.style)==null?void 0:n.width),height:e.height??e.initialHeight??((r=e.style)==null?void 0:r.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((a=e.style)==null?void 0:a.height)}}const $A=e=>{const{width:n,height:r,x:l,y:a}=$o(e.nodeLookup,{filter:s=>!!s.selected});return{width:Un(n)?n:null,height:Un(r)?r:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${a}px)`}};function PA({onSelectionContextMenu:e,noPanClassName:n,disableKeyboardA11y:r}){const l=pt(),{width:a,height:s,transformString:u,userSelectionActive:f}=Ge($A,ht),h=vS(),d=V.useRef(null);V.useEffect(()=>{var v;r||(v=d.current)==null||v.focus({preventScroll:!0})},[r]);const m=!f&&a!==null&&s!==null;if(xS({nodeRef:d,disabled:!m}),!m)return null;const p=e?v=>{const w=l.getState().nodes.filter(k=>k.selected);e(v,w)}:void 0,y=v=>{Object.prototype.hasOwnProperty.call(ac,v.key)&&(v.preventDefault(),h({direction:ac[v.key],factor:v.shiftKey?4:1}))};return b.jsx("div",{className:zt(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:b.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:r?void 0:-1,onKeyDown:r?void 0:y,style:{width:a,height:s}})})}const Rv=typeof window<"u"?window:void 0,XA=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function wS({children:e,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,paneClickDistance:f,deleteKeyCode:h,selectionKeyCode:d,selectionOnDrag:m,selectionMode:p,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:w,panActivationKeyCode:k,zoomActivationKeyCode:_,elementsSelectable:S,zoomOnScroll:T,zoomOnPinch:N,panOnScroll:A,panOnScrollSpeed:R,panOnScrollMode:z,zoomOnDoubleClick:L,panOnDrag:D,defaultViewport:I,translateExtent:X,minZoom:B,maxZoom:U,preventScrolling:ee,onSelectionContextMenu:H,noWheelClassName:G,noPanClassName:j,disableKeyboardA11y:$,onViewportChange:Q,isControlledViewport:K}){const{nodesSelectionActive:M,userSelectionActive:q}=Ge(XA,ht),P=Bo(d,{target:Rv}),E=Bo(k,{target:Rv}),Y=E||D,F=E||A,J=m&&Y!==!0,ne=P||q||J;return CA({deleteKeyCode:h,multiSelectionKeyCode:w}),b.jsx(AA,{onPaneContextMenu:s,elementsSelectable:S,zoomOnScroll:T,zoomOnPinch:N,panOnScroll:F,panOnScrollSpeed:R,panOnScrollMode:z,zoomOnDoubleClick:L,panOnDrag:!P&&Y,defaultViewport:I,translateExtent:X,minZoom:B,maxZoom:U,zoomActivationKeyCode:_,preventScrolling:ee,noWheelClassName:G,noPanClassName:j,onViewportChange:Q,isControlledViewport:K,paneClickDistance:f,selectionOnDrag:J,children:b.jsxs(DA,{onSelectionStart:y,onSelectionEnd:v,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,panOnDrag:Y,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:P,paneClickDistance:f,selectionOnDrag:J,children:[e,M&&b.jsx(PA,{onSelectionContextMenu:H,noPanClassName:j,disableKeyboardA11y:$})]})})}wS.displayName="FlowRenderer";const FA=V.memo(wS),QA=e=>n=>e?om(n.nodeLookup,{x:0,y:0,width:n.width,height:n.height},n.transform,!0).map(r=>r.id):Array.from(n.nodeLookup.keys());function ZA(e){return Ge(V.useCallback(QA(e),[e]),ht)}const KA=e=>e.updateNodeInternals;function JA(){const e=Ge(KA),[n]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(r=>{const l=new Map;r.forEach(a=>{const s=a.target.getAttribute("data-id");l.set(s,{id:s,nodeElement:a.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{n==null||n.disconnect()},[n]),n}function WA({node:e,nodeType:n,hasDimensions:r,resizeObserver:l}){const a=pt(),s=V.useRef(null),u=V.useRef(null),f=V.useRef(e.sourcePosition),h=V.useRef(e.targetPosition),d=V.useRef(n),m=r&&!!e.internals.handleBounds;return V.useEffect(()=>{s.current&&!e.hidden&&(!m||u.current!==s.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(s.current),u.current=s.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(s.current){const p=d.current!==n,y=f.current!==e.sourcePosition,v=h.current!==e.targetPosition;(p||y||v)&&(d.current=n,f.current=e.sourcePosition,h.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,n,e.sourcePosition,e.targetPosition]),s}function ej({id:e,onClick:n,onMouseEnter:r,onMouseMove:l,onMouseLeave:a,onContextMenu:s,onDoubleClick:u,nodesDraggable:f,elementsSelectable:h,nodesConnectable:d,nodesFocusable:m,resizeObserver:p,noDragClassName:y,noPanClassName:v,disableKeyboardA11y:w,rfId:k,nodeTypes:_,nodeClickDistance:S,onError:T}){const{node:N,internals:A,isParent:R}=Ge(re=>{const se=re.nodeLookup.get(e),ye=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:ye}},ht);let z=N.type||"default",L=(_==null?void 0:_[z])||Dv[z];L===void 0&&(T==null||T("003",nr.error003(z)),z="default",L=(_==null?void 0:_.default)||Dv.default);const D=!!(N.draggable||f&&typeof N.draggable>"u"),I=!!(N.selectable||h&&typeof N.selectable>"u"),X=!!(N.connectable||d&&typeof N.connectable>"u"),B=!!(N.focusable||m&&typeof N.focusable>"u"),U=pt(),ee=Gw(N),H=WA({node:N,nodeType:z,hasDimensions:ee,resizeObserver:p}),G=xS({nodeRef:H,disabled:N.hidden||!D,noDragClassName:y,handleSelector:N.dragHandle,nodeId:e,isSelectable:I,nodeClickDistance:S}),j=vS();if(N.hidden)return null;const $=Mr(N),Q=YA(N),K=I||D||n||r||l||a,M=r?re=>r(re,{...A.userNode}):void 0,q=l?re=>l(re,{...A.userNode}):void 0,P=a?re=>a(re,{...A.userNode}):void 0,E=s?re=>s(re,{...A.userNode}):void 0,Y=u?re=>u(re,{...A.userNode}):void 0,F=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:ye}=U.getState();I&&(!se||!D||ye>0)&&Lp({id:e,store:U,nodeRef:H}),n&&n(re,{...A.userNode})},J=re=>{if(!(Pw(re.nativeEvent)||w)){if(Dw.includes(re.key)&&I){const se=re.key==="Escape";Lp({id:e,store:U,unselect:se,nodeRef:H})}else if(D&&N.selected&&Object.prototype.hasOwnProperty.call(ac,re.key)){re.preventDefault();const{ariaLabelConfig:se}=U.getState();U.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~A.positionAbsolute.x,y:~~A.positionAbsolute.y})}),j({direction:ac[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=H.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:ye,autoPanOnNodeFocus:ve,setCenter:xe}=U.getState();if(!ve)return;om(new Map([[e,N]]),{x:0,y:0,width:se,height:ye},re,!0).length>0||xe(N.position.x+$.width/2,N.position.y+$.height/2,{zoom:re[2]})};return b.jsx("div",{className:zt(["react-flow__node",`react-flow__node-${z}`,{[v]:D},N.className,{selected:N.selected,selectable:I,parent:R,draggable:D,dragging:G}]),ref:H,style:{zIndex:A.z,transform:`translate(${A.positionAbsolute.x}px,${A.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:ee?"visible":"hidden",...N.style,...Q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:M,onMouseMove:q,onMouseLeave:P,onContextMenu:E,onClick:F,onDoubleClick:Y,onKeyDown:B?J:void 0,tabIndex:B?0:void 0,onFocus:B?ne:void 0,role:N.ariaRole??(B?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${cS}-${k}`,"aria-label":N.ariaLabel,...N.domAttributes,children:b.jsx(LA,{value:e,children:b.jsx(L,{id:e,data:N.data,type:z,positionAbsoluteX:A.positionAbsolute.x,positionAbsoluteY:A.positionAbsolute.y,selected:N.selected??!1,selectable:I,draggable:D,deletable:N.deletable??!0,isConnectable:X,sourcePosition:N.sourcePosition,targetPosition:N.targetPosition,dragging:G,dragHandle:N.dragHandle,zIndex:A.z,parentId:N.parentId,...$})})})}var tj=V.memo(ej);const nj=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function SS(e){const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,onError:s}=Ge(nj,ht),u=ZA(e.onlyRenderVisibleElements),f=JA();return b.jsx("div",{className:"react-flow__nodes",style:Ec,children:u.map(h=>b.jsx(tj,{id:h,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:f,nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:s},h))})}SS.displayName="NodeRenderer";const rj=V.memo(SS);function ij(e){return Ge(V.useCallback(r=>{if(!e)return r.edges.map(a=>a.id);const l=[];if(r.width&&r.height)for(const a of r.edges){const s=r.nodeLookup.get(a.source),u=r.nodeLookup.get(a.target);s&&u&&tz({sourceNode:s,targetNode:u,width:r.width,height:r.height,transform:r.transform})&&l.push(a.id)}return l},[e]),ht)}const lj=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:r,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},aj=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:r,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Lv={[rc.Arrow]:lj,[rc.ArrowClosed]:aj};function oj(e){const n=pt();return V.useMemo(()=>{var a,s;return Object.prototype.hasOwnProperty.call(Lv,e)?Lv[e]:((s=(a=n.getState()).onError)==null||s.call(a,"009",nr.error009(e)),null)},[e])}const sj=({id:e,type:n,color:r,width:l=12.5,height:a=12.5,markerUnits:s="strokeWidth",strokeWidth:u,orient:f="auto-start-reverse"})=>{const h=oj(n);return h?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:f,refX:"0",refY:"0",children:b.jsx(h,{color:r,strokeWidth:u})}):null},_S=({defaultColor:e,rfId:n})=>{const r=Ge(s=>s.edges),l=Ge(s=>s.defaultEdgeOptions),a=V.useMemo(()=>uz(r,{id:n,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[r,l,n,e]);return a.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:a.map(s=>b.jsx(sj,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};_S.displayName="MarkerDefinitions";var uj=V.memo(_S);function ES({x:e,y:n,label:r,labelStyle:l,labelShowBg:a=!0,labelBgStyle:s,labelBgPadding:u=[2,4],labelBgBorderRadius:f=2,children:h,className:d,...m}){const[p,y]=V.useState({x:1,y:0,width:0,height:0}),v=zt(["react-flow__edge-textwrapper",d]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const k=w.current.getBBox();y({x:k.x,y:k.y,width:k.width,height:k.height})}},[r]),r?b.jsxs("g",{transform:`translate(${e-p.width/2} ${n-p.height/2})`,className:v,visibility:p.width?"visible":"hidden",...m,children:[a&&b.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:s,rx:f,ry:f}),b.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:r}),h]}):null}ES.displayName="EdgeText";const cj=V.memo(ES);function Qo({path:e,labelX:n,labelY:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:h,interactionWidth:d=20,...m}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...m,d:e,fill:"none",className:zt(["react-flow__edge-path",m.className])}),d?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:d,className:"react-flow__edge-interaction"}):null,l&&Un(n)&&Un(r)?b.jsx(cj,{x:n,y:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:h}):null]})}function Hv({pos:e,x1:n,y1:r,x2:l,y2:a}){return e===be.Left||e===be.Right?[.5*(n+l),r]:[n,.5*(r+a)]}function NS({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top}){const[u,f]=Hv({pos:r,x1:e,y1:n,x2:l,y2:a}),[h,d]=Hv({pos:s,x1:l,y1:a,x2:e,y2:n}),[m,p,y,v]=Fw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:u,sourceControlY:f,targetControlX:h,targetControlY:d});return[`M${e},${n} C${u},${f} ${h},${d} ${l},${a}`,m,p,y,v]}function kS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:_,interactionWidth:S})=>{const[T,N,A]=NS({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f}),R=e.isInternal?void 0:n;return b.jsx(Qo,{id:R,path:T,labelX:N,labelY:A,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:_,interactionWidth:S})})}const fj=kS({isInternal:!1}),CS=kS({isInternal:!0});fj.displayName="SimpleBezierEdge";CS.displayName="SimpleBezierEdgeInternal";function TS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,sourcePosition:v=be.Bottom,targetPosition:w=be.Top,markerEnd:k,markerStart:_,pathOptions:S,interactionWidth:T})=>{const[N,A,R]=Mp({sourceX:r,sourceY:l,sourcePosition:v,targetX:a,targetY:s,targetPosition:w,borderRadius:S==null?void 0:S.borderRadius,offset:S==null?void 0:S.offset,stepPosition:S==null?void 0:S.stepPosition}),z=e.isInternal?void 0:n;return b.jsx(Qo,{id:z,path:N,labelX:A,labelY:R,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:k,markerStart:_,interactionWidth:T})})}const zS=TS({isInternal:!1}),AS=TS({isInternal:!0});zS.displayName="SmoothStepEdge";AS.displayName="SmoothStepEdgeInternal";function jS(e){return V.memo(({id:n,...r})=>{var a;const l=e.isInternal?void 0:n;return b.jsx(zS,{...r,id:l,pathOptions:V.useMemo(()=>{var s;return{borderRadius:0,offset:(s=r.pathOptions)==null?void 0:s.offset}},[(a=r.pathOptions)==null?void 0:a.offset])})})}const dj=jS({isInternal:!1}),MS=jS({isInternal:!0});dj.displayName="StepEdge";MS.displayName="StepEdgeInternal";function OS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[_,S,T]=Zw({sourceX:r,sourceY:l,targetX:a,targetY:s}),N=e.isInternal?void 0:n;return b.jsx(Qo,{id:N,path:_,labelX:S,labelY:T,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:d,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})})}const hj=OS({isInternal:!1}),DS=OS({isInternal:!0});hj.displayName="StraightEdge";DS.displayName="StraightEdgeInternal";function RS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u=be.Bottom,targetPosition:f=be.Top,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:_,pathOptions:S,interactionWidth:T})=>{const[N,A,R]=cm({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f,curvature:S==null?void 0:S.curvature}),z=e.isInternal?void 0:n;return b.jsx(Qo,{id:z,path:N,labelX:A,labelY:R,label:h,labelStyle:d,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:_,interactionWidth:T})})}const pj=RS({isInternal:!1}),LS=RS({isInternal:!0});pj.displayName="BezierEdge";LS.displayName="BezierEdgeInternal";const Bv={default:LS,straight:DS,step:MS,smoothstep:AS,simplebezier:CS},qv={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},mj=(e,n,r)=>r===be.Left?e-n:r===be.Right?e+n:e,gj=(e,n,r)=>r===be.Top?e-n:r===be.Bottom?e+n:e,Uv="react-flow__edgeupdater";function Iv({position:e,centerX:n,centerY:r,radius:l=10,onMouseDown:a,onMouseEnter:s,onMouseOut:u,type:f}){return b.jsx("circle",{onMouseDown:a,onMouseEnter:s,onMouseOut:u,className:zt([Uv,`${Uv}-${f}`]),cx:mj(n,l,e),cy:gj(r,l,e),r:l,stroke:"transparent",fill:"transparent"})}function yj({isReconnectable:e,reconnectRadius:n,edge:r,sourceX:l,sourceY:a,targetX:s,targetY:u,sourcePosition:f,targetPosition:h,onReconnect:d,onReconnectStart:m,onReconnectEnd:p,setReconnecting:y,setUpdateHover:v}){const w=pt(),k=(A,R)=>{if(A.button!==0)return;const{autoPanOnConnect:z,domNode:L,connectionMode:D,connectionRadius:I,lib:X,onConnectStart:B,cancelConnection:U,nodeLookup:ee,rfId:H,panBy:G,updateConnection:j}=w.getState(),$=R.type==="target",Q=(q,P)=>{y(!1),p==null||p(q,r,R.type,P)},K=q=>d==null?void 0:d(r,q),M=(q,P)=>{y(!0),m==null||m(A,r,R.type),B==null||B(q,P)};Rp.onPointerDown(A.nativeEvent,{autoPanOnConnect:z,connectionMode:D,connectionRadius:I,domNode:L,handleId:R.id,nodeId:R.nodeId,nodeLookup:ee,isTarget:$,edgeUpdaterType:R.type,lib:X,flowId:H,cancelConnection:U,panBy:G,isValidConnection:(...q)=>{var P,E;return((E=(P=w.getState()).isValidConnection)==null?void 0:E.call(P,...q))??!0},onConnect:K,onConnectStart:M,onConnectEnd:(...q)=>{var P,E;return(E=(P=w.getState()).onConnectEnd)==null?void 0:E.call(P,...q)},onReconnectEnd:Q,updateConnection:j,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:A.currentTarget})},_=A=>k(A,{nodeId:r.target,id:r.targetHandle??null,type:"target"}),S=A=>k(A,{nodeId:r.source,id:r.sourceHandle??null,type:"source"}),T=()=>v(!0),N=()=>v(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(Iv,{position:f,centerX:l,centerY:a,radius:n,onMouseDown:_,onMouseEnter:T,onMouseOut:N,type:"source"}),(e===!0||e==="target")&&b.jsx(Iv,{position:h,centerX:s,centerY:u,radius:n,onMouseDown:S,onMouseEnter:T,onMouseOut:N,type:"target"})]})}function xj({id:e,edgesFocusable:n,edgesReconnectable:r,elementsSelectable:l,onClick:a,onDoubleClick:s,onContextMenu:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:d,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,rfId:w,edgeTypes:k,noPanClassName:_,onError:S,disableKeyboardA11y:T}){let N=Ge(xe=>xe.edgeLookup.get(e));const A=Ge(xe=>xe.defaultEdgeOptions);N=A?{...A,...N}:N;let R=N.type||"default",z=(k==null?void 0:k[R])||Bv[R];z===void 0&&(S==null||S("011",nr.error011(R)),R="default",z=(k==null?void 0:k.default)||Bv.default);const L=!!(N.focusable||n&&typeof N.focusable>"u"),D=typeof p<"u"&&(N.reconnectable||r&&typeof N.reconnectable>"u"),I=!!(N.selectable||l&&typeof N.selectable>"u"),X=V.useRef(null),[B,U]=V.useState(!1),[ee,H]=V.useState(!1),G=pt(),{zIndex:j,sourceX:$,sourceY:Q,targetX:K,targetY:M,sourcePosition:q,targetPosition:P}=Ge(V.useCallback(xe=>{const pe=xe.nodeLookup.get(N.source),_e=xe.nodeLookup.get(N.target);if(!pe||!_e)return{zIndex:N.zIndex,...qv};const je=sz({id:e,sourceNode:pe,targetNode:_e,sourceHandle:N.sourceHandle||null,targetHandle:N.targetHandle||null,connectionMode:xe.connectionMode,onError:S});return{zIndex:ez({selected:N.selected,zIndex:N.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:xe.elevateEdgesOnSelect,zIndexMode:xe.zIndexMode}),...je||qv}},[N.source,N.target,N.sourceHandle,N.targetHandle,N.selected,N.zIndex]),ht),E=V.useMemo(()=>N.markerStart?`url('#${Op(N.markerStart,w)}')`:void 0,[N.markerStart,w]),Y=V.useMemo(()=>N.markerEnd?`url('#${Op(N.markerEnd,w)}')`:void 0,[N.markerEnd,w]);if(N.hidden||$===null||Q===null||K===null||M===null)return null;const F=xe=>{var Ce;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:je}=G.getState();I&&(G.setState({nodesSelectionActive:!1}),N.selected&&je?(_e({nodes:[],edges:[N]}),(Ce=X.current)==null||Ce.blur()):pe([e])),a&&a(xe,N)},J=s?xe=>{s(xe,{...N})}:void 0,ne=u?xe=>{u(xe,{...N})}:void 0,re=f?xe=>{f(xe,{...N})}:void 0,se=h?xe=>{h(xe,{...N})}:void 0,ye=d?xe=>{d(xe,{...N})}:void 0,ve=xe=>{var pe;if(!T&&Dw.includes(xe.key)&&I){const{unselectNodesAndEdges:_e,addSelectedEdges:je}=G.getState();xe.key==="Escape"?((pe=X.current)==null||pe.blur(),_e({edges:[N]})):je([e])}};return b.jsx("svg",{style:{zIndex:j},children:b.jsxs("g",{className:zt(["react-flow__edge",`react-flow__edge-${R}`,N.className,_,{selected:N.selected,animated:N.animated,inactive:!I&&!a,updating:B,selectable:I}]),onClick:F,onDoubleClick:J,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:ye,onKeyDown:L?ve:void 0,tabIndex:L?0:void 0,role:N.ariaRole??(L?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":N.ariaLabel===null?void 0:N.ariaLabel||`Edge from ${N.source} to ${N.target}`,"aria-describedby":L?`${fS}-${w}`:void 0,ref:X,...N.domAttributes,children:[!ee&&b.jsx(z,{id:e,source:N.source,target:N.target,type:N.type,selected:N.selected,animated:N.animated,selectable:I,deletable:N.deletable??!0,label:N.label,labelStyle:N.labelStyle,labelShowBg:N.labelShowBg,labelBgStyle:N.labelBgStyle,labelBgPadding:N.labelBgPadding,labelBgBorderRadius:N.labelBgBorderRadius,sourceX:$,sourceY:Q,targetX:K,targetY:M,sourcePosition:q,targetPosition:P,data:N.data,style:N.style,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerStart:E,markerEnd:Y,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth}),D&&b.jsx(yj,{edge:N,isReconnectable:D,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,sourceX:$,sourceY:Q,targetX:K,targetY:M,sourcePosition:q,targetPosition:P,setUpdateHover:U,setReconnecting:H})]})})}var vj=V.memo(xj);const bj=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function HS({defaultMarkerColor:e,onlyRenderVisibleElements:n,rfId:r,edgeTypes:l,noPanClassName:a,onReconnect:s,onEdgeContextMenu:u,onEdgeMouseEnter:f,onEdgeMouseMove:h,onEdgeMouseLeave:d,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,disableKeyboardA11y:k}){const{edgesFocusable:_,edgesReconnectable:S,elementsSelectable:T,onError:N}=Ge(bj,ht),A=ij(n);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(uj,{defaultColor:e,rfId:r}),A.map(R=>b.jsx(vj,{id:R,edgesFocusable:_,edgesReconnectable:S,elementsSelectable:T,noPanClassName:a,onReconnect:s,onContextMenu:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:d,onClick:m,reconnectRadius:p,onDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,rfId:r,onError:N,edgeTypes:l,disableKeyboardA11y:k},R))]})}HS.displayName="EdgeRenderer";const wj=V.memo(HS),Sj=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function _j({children:e}){const n=Ge(Sj);return b.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}function Ej(e){const n=Fo(),r=V.useRef(!1);V.useEffect(()=>{!r.current&&n.viewportInitialized&&e&&(setTimeout(()=>e(n),1),r.current=!0)},[e,n.viewportInitialized])}const Nj=e=>{var n;return(n=e.panZoom)==null?void 0:n.syncViewport};function kj(e){const n=Ge(Nj),r=pt();return V.useEffect(()=>{e&&(n==null||n(e),r.setState({transform:[e.x,e.y,e.zoom]}))},[e,n]),null}function Cj(e){return e.connection.inProgress?{...e.connection,to:Xo(e.connection.to,e.transform)}:{...e.connection}}function Tj(e){return Cj}function zj(e){const n=Tj();return Ge(n,ht)}const Aj=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function jj({containerStyle:e,style:n,type:r,component:l}){const{nodesConnectable:a,width:s,height:u,isValid:f,inProgress:h}=Ge(Aj,ht);return!(s&&a&&h)?null:b.jsx("svg",{style:e,width:s,height:u,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:zt(["react-flow__connection",Hw(f)]),children:b.jsx(BS,{style:n,type:r,CustomComponent:l,isValid:f})})})}const BS=({style:e,type:n=pi.Bezier,CustomComponent:r,isValid:l})=>{const{inProgress:a,from:s,fromNode:u,fromHandle:f,fromPosition:h,to:d,toNode:m,toHandle:p,toPosition:y,pointer:v}=zj();if(!a)return;if(r)return b.jsx(r,{connectionLineType:n,connectionLineStyle:e,fromNode:u,fromHandle:f,fromX:s.x,fromY:s.y,toX:d.x,toY:d.y,fromPosition:h,toPosition:y,connectionStatus:Hw(l),toNode:m,toHandle:p,pointer:v});let w="";const k={sourceX:s.x,sourceY:s.y,sourcePosition:h,targetX:d.x,targetY:d.y,targetPosition:y};switch(n){case pi.Bezier:[w]=cm(k);break;case pi.SimpleBezier:[w]=NS(k);break;case pi.Step:[w]=Mp({...k,borderRadius:0});break;case pi.SmoothStep:[w]=Mp(k);break;default:[w]=Zw(k)}return b.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};BS.displayName="ConnectionLine";const Mj={};function Vv(e=Mj){V.useRef(e),pt(),V.useEffect(()=>{},[e])}function Oj(){pt(),V.useRef(!1),V.useEffect(()=>{},[])}function qS({nodeTypes:e,edgeTypes:n,onInit:r,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:s,onEdgeDoubleClick:u,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:d,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:y,onSelectionEnd:v,connectionLineType:w,connectionLineStyle:k,connectionLineComponent:_,connectionLineContainerStyle:S,selectionKeyCode:T,selectionOnDrag:N,selectionMode:A,multiSelectionKeyCode:R,panActivationKeyCode:z,zoomActivationKeyCode:L,deleteKeyCode:D,onlyRenderVisibleElements:I,elementsSelectable:X,defaultViewport:B,translateExtent:U,minZoom:ee,maxZoom:H,preventScrolling:G,defaultMarkerColor:j,zoomOnScroll:$,zoomOnPinch:Q,panOnScroll:K,panOnScrollSpeed:M,panOnScrollMode:q,zoomOnDoubleClick:P,panOnDrag:E,onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:ye,nodeClickDistance:ve,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:je,reconnectRadius:Ce,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:Mn,nodeExtent:jt,rfId:Or,viewport:ue,onViewportChange:ge}){return Vv(e),Vv(n),Oj(),Ej(r),kj(ue),b.jsx(FA,{onPaneClick:Y,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:ye,deleteKeyCode:D,selectionKeyCode:T,selectionOnDrag:N,selectionMode:A,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:R,panActivationKeyCode:z,zoomActivationKeyCode:L,elementsSelectable:X,zoomOnScroll:$,zoomOnPinch:Q,zoomOnDoubleClick:P,panOnScroll:K,panOnScrollSpeed:M,panOnScrollMode:q,panOnDrag:E,defaultViewport:B,translateExtent:U,minZoom:ee,maxZoom:H,onSelectionContextMenu:p,preventScrolling:G,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:Mn,onViewportChange:ge,isControlledViewport:!!ue,children:b.jsxs(_j,{children:[b.jsx(wj,{edgeTypes:n,onEdgeClick:a,onEdgeDoubleClick:u,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,onlyRenderVisibleElements:I,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:je,reconnectRadius:Ce,defaultMarkerColor:j,noPanClassName:Sn,disableKeyboardA11y:Mn,rfId:Or}),b.jsx(jj,{style:k,type:w,component:_,containerStyle:S}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(rj,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:s,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:d,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:I,noPanClassName:Sn,noDragClassName:It,disableKeyboardA11y:Mn,nodeExtent:jt,rfId:Or}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}qS.displayName="GraphView";const Dj=V.memo(qS),Gv=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h=.5,maxZoom:d=2,nodeOrigin:m,nodeExtent:p,zIndexMode:y="basic"}={})=>{const v=new Map,w=new Map,k=new Map,_=new Map,S=l??n??[],T=r??e??[],N=m??[0,0],A=p??Do;Ww(k,_,S);const R=Dp(T,v,w,{nodeOrigin:N,nodeExtent:A,zIndexMode:y});let z=[0,0,1];if(u&&a&&s){const L=$o(v,{filter:B=>!!((B.width||B.initialWidth)&&(B.height||B.initialHeight))}),{x:D,y:I,zoom:X}=sm(L,a,s,h,d,(f==null?void 0:f.padding)??.1);z=[D,I,X]}return{rfId:"1",width:a??0,height:s??0,transform:z,nodes:T,nodesInitialized:R,nodeLookup:v,parentLookup:w,edges:S,edgeLookup:_,connectionLookup:k,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:r!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:h,maxZoom:d,translateExtent:Do,nodeExtent:A,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:la.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:N,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:f,fitViewResolver:null,connection:{...Lw},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:FT,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Rw,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},Rj=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h,maxZoom:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y})=>Jz((v,w)=>{async function k(){const{nodeLookup:_,panZoom:S,fitViewOptions:T,fitViewResolver:N,width:A,height:R,minZoom:z,maxZoom:L}=w();S&&(await PT({nodes:_,width:A,height:R,panZoom:S,minZoom:z,maxZoom:L},T),N==null||N.resolve(!0),v({fitViewResolver:null}))}return{...Gv({nodes:e,edges:n,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:h,maxZoom:d,nodeOrigin:m,nodeExtent:p,defaultNodes:r,defaultEdges:l,zIndexMode:y}),setNodes:_=>{const{nodeLookup:S,parentLookup:T,nodeOrigin:N,elevateNodesOnSelect:A,fitViewQueued:R,zIndexMode:z}=w(),L=Dp(_,S,T,{nodeOrigin:N,nodeExtent:p,elevateNodesOnSelect:A,checkEquality:!0,zIndexMode:z});R&&L?(k(),v({nodes:_,nodesInitialized:L,fitViewQueued:!1,fitViewOptions:void 0})):v({nodes:_,nodesInitialized:L})},setEdges:_=>{const{connectionLookup:S,edgeLookup:T}=w();Ww(S,T,_),v({edges:_})},setDefaultNodesAndEdges:(_,S)=>{if(_){const{setNodes:T}=w();T(_),v({hasDefaultNodes:!0})}if(S){const{setEdges:T}=w();T(S),v({hasDefaultEdges:!0})}},updateNodeInternals:_=>{const{triggerNodeChanges:S,nodeLookup:T,parentLookup:N,domNode:A,nodeOrigin:R,nodeExtent:z,debug:L,fitViewQueued:D,zIndexMode:I}=w(),{changes:X,updatedInternals:B}=gz(_,T,N,A,R,z,I);B&&(dz(T,N,{nodeOrigin:R,nodeExtent:z,zIndexMode:I}),D?(k(),v({fitViewQueued:!1,fitViewOptions:void 0})):v({}),(X==null?void 0:X.length)>0&&(L&&console.log("React Flow: trigger node changes",X),S==null||S(X)))},updateNodePositions:(_,S=!1)=>{const T=[];let N=[];const{nodeLookup:A,triggerNodeChanges:R,connection:z,updateConnection:L,onNodesChangeMiddlewareMap:D}=w();for(const[I,X]of _){const B=A.get(I),U=!!(B!=null&&B.expandParent&&(B!=null&&B.parentId)&&(X!=null&&X.position)),ee={id:I,type:"position",position:U?{x:Math.max(0,X.position.x),y:Math.max(0,X.position.y)}:X.position,dragging:S};if(B&&z.inProgress&&z.fromNode.id===B.id){const H=Zi(B,z.fromHandle,be.Left,!0);L({...z,from:H})}U&&B.parentId&&T.push({id:I,parentId:B.parentId,rect:{...X.internals.positionAbsolute,width:X.measured.width??0,height:X.measured.height??0}}),N.push(ee)}if(T.length>0){const{parentLookup:I,nodeOrigin:X}=w(),B=mm(T,A,I,X);N.push(...B)}for(const I of D.values())N=I(N);R(N)},triggerNodeChanges:_=>{const{onNodesChange:S,setNodes:T,nodes:N,hasDefaultNodes:A,debug:R}=w();if(_!=null&&_.length){if(A){const z=pS(_,N);T(z)}R&&console.log("React Flow: trigger node changes",_),S==null||S(_)}},triggerEdgeChanges:_=>{const{onEdgesChange:S,setEdges:T,edges:N,hasDefaultEdges:A,debug:R}=w();if(_!=null&&_.length){if(A){const z=mS(_,N);T(z)}R&&console.log("React Flow: trigger edge changes",_),S==null||S(_)}},addSelectedNodes:_=>{const{multiSelectionActive:S,edgeLookup:T,nodeLookup:N,triggerNodeChanges:A,triggerEdgeChanges:R}=w();if(S){const z=_.map(L=>qi(L,!0));A(z);return}A(Ql(N,new Set([..._]),!0)),R(Ql(T))},addSelectedEdges:_=>{const{multiSelectionActive:S,edgeLookup:T,nodeLookup:N,triggerNodeChanges:A,triggerEdgeChanges:R}=w();if(S){const z=_.map(L=>qi(L,!0));R(z);return}R(Ql(T,new Set([..._]))),A(Ql(N,new Set,!0))},unselectNodesAndEdges:({nodes:_,edges:S}={})=>{const{edges:T,nodes:N,nodeLookup:A,triggerNodeChanges:R,triggerEdgeChanges:z}=w(),L=_||N,D=S||T,I=[];for(const B of L){if(!B.selected)continue;const U=A.get(B.id);U&&(U.selected=!1),I.push(qi(B.id,!1))}const X=[];for(const B of D)B.selected&&X.push(qi(B.id,!1));R(I),z(X)},setMinZoom:_=>{const{panZoom:S,maxZoom:T}=w();S==null||S.setScaleExtent([_,T]),v({minZoom:_})},setMaxZoom:_=>{const{panZoom:S,minZoom:T}=w();S==null||S.setScaleExtent([T,_]),v({maxZoom:_})},setTranslateExtent:_=>{var S;(S=w().panZoom)==null||S.setTranslateExtent(_),v({translateExtent:_})},resetSelectedElements:()=>{const{edges:_,nodes:S,triggerNodeChanges:T,triggerEdgeChanges:N,elementsSelectable:A}=w();if(!A)return;const R=S.reduce((L,D)=>D.selected?[...L,qi(D.id,!1)]:L,[]),z=_.reduce((L,D)=>D.selected?[...L,qi(D.id,!1)]:L,[]);T(R),N(z)},setNodeExtent:_=>{const{nodes:S,nodeLookup:T,parentLookup:N,nodeOrigin:A,elevateNodesOnSelect:R,nodeExtent:z,zIndexMode:L}=w();_[0][0]===z[0][0]&&_[0][1]===z[0][1]&&_[1][0]===z[1][0]&&_[1][1]===z[1][1]||(Dp(S,T,N,{nodeOrigin:A,nodeExtent:_,elevateNodesOnSelect:R,checkEquality:!1,zIndexMode:L}),v({nodeExtent:_}))},panBy:_=>{const{transform:S,width:T,height:N,panZoom:A,translateExtent:R}=w();return yz({delta:_,panZoom:A,transform:S,translateExtent:R,width:T,height:N})},setCenter:async(_,S,T)=>{const{width:N,height:A,maxZoom:R,panZoom:z}=w();if(!z)return Promise.resolve(!1);const L=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:R;return await z.setViewport({x:N/2-_*L,y:A/2-S*L,zoom:L},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{v({connection:{...Lw}})},updateConnection:_=>{v({connection:_})},reset:()=>v({...Gv()})}},Object.is);function Lj({initialNodes:e,initialEdges:n,defaultNodes:r,defaultEdges:l,initialWidth:a,initialHeight:s,initialMinZoom:u,initialMaxZoom:f,initialFitViewOptions:h,fitView:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y,children:v}){const[w]=V.useState(()=>Rj({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:d,minZoom:u,maxZoom:f,fitViewOptions:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y}));return b.jsx(eA,{value:w,children:b.jsx(_A,{children:v})})}function Hj({children:e,nodes:n,edges:r,defaultNodes:l,defaultEdges:a,width:s,height:u,fitView:f,fitViewOptions:h,minZoom:d,maxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v}){return V.useContext(Sc)?b.jsx(b.Fragment,{children:e}):b.jsx(Lj,{initialNodes:n,initialEdges:r,defaultNodes:l,defaultEdges:a,initialWidth:s,initialHeight:u,fitView:f,initialFitViewOptions:h,initialMinZoom:d,initialMaxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v,children:e})}const Bj={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function qj({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,className:a,nodeTypes:s,edgeTypes:u,onNodeClick:f,onEdgeClick:h,onInit:d,onMove:m,onMoveStart:p,onMoveEnd:y,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:_,onClickConnectEnd:S,onNodeMouseEnter:T,onNodeMouseMove:N,onNodeMouseLeave:A,onNodeContextMenu:R,onNodeDoubleClick:z,onNodeDragStart:L,onNodeDrag:D,onNodeDragStop:I,onNodesDelete:X,onEdgesDelete:B,onDelete:U,onSelectionChange:ee,onSelectionDragStart:H,onSelectionDrag:G,onSelectionDragStop:j,onSelectionContextMenu:$,onSelectionStart:Q,onSelectionEnd:K,onBeforeDelete:M,connectionMode:q,connectionLineType:P=pi.Bezier,connectionLineStyle:E,connectionLineComponent:Y,connectionLineContainerStyle:F,deleteKeyCode:J="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Ro.Full,panActivationKeyCode:ye="Space",multiSelectionKeyCode:ve=Ho()?"Meta":"Control",zoomActivationKeyCode:xe=Ho()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:je=!1,selectNodesOnDrag:Ce,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,nodeOrigin:Rt=dS,edgesFocusable:Sn,edgesReconnectable:Mn,elementsSelectable:jt=!0,defaultViewport:Or=hA,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=Do,preventScrolling:Re=!0,nodeExtent:Ye,defaultMarkerColor:Xt="#b1b1b7",zoomOnScroll:On=!0,zoomOnPinch:Lt=!0,panOnScroll:xt=!1,panOnScrollSpeed:Vt=.5,panOnScrollMode:Je=$i.Free,zoomOnDoubleClick:Pn=!0,panOnDrag:un=!0,onPaneClick:zc,onPaneMouseEnter:nl,onPaneMouseMove:rl,onPaneMouseLeave:il,onPaneScroll:lr,onPaneContextMenu:ll,paneClickDistance:yi=1,nodeClickDistance:Ac=0,children:Wo,onReconnect:ha,onReconnectStart:xi,onReconnectEnd:jc,onEdgeContextMenu:es,onEdgeDoubleClick:ts,onEdgeMouseEnter:ns,onEdgeMouseMove:pa,onEdgeMouseLeave:ma,reconnectRadius:rs=10,onNodesChange:is,onEdgesChange:Xn,noDragClassName:Mt="nodrag",noWheelClassName:Gt="nowheel",noPanClassName:ar="nopan",fitView:al,fitViewOptions:ls,connectOnClick:Mc,attributionPosition:as,proOptions:vi,defaultEdgeOptions:ga,elevateNodesOnSelect:Dr=!0,elevateEdgesOnSelect:Rr=!1,disableKeyboardA11y:Lr=!1,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:os,connectionRadius:ss,isValidConnection:or,onError:Br,style:Oc,id:ya,nodeDragThreshold:us,connectionDragThreshold:Dc,viewport:ol,onViewportChange:sl,width:Dn,height:Zt,colorMode:cs="light",debug:Rc,onScroll:qr,ariaLabelConfig:fs,zIndexMode:bi="basic",...Lc},Kt){const wi=ya||"1",ds=yA(cs),xa=V.useCallback(sr=>{sr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),qr==null||qr(sr)},[qr]);return b.jsx("div",{"data-testid":"rf__wrapper",...Lc,onScroll:xa,style:{...Oc,...Bj},ref:Kt,className:zt(["react-flow",a,ds]),id:ya,role:"application",children:b.jsxs(Hj,{nodes:e,edges:n,width:Dn,height:Zt,fitView:al,fitViewOptions:ls,minZoom:ue,maxZoom:ge,nodeOrigin:Rt,nodeExtent:Ye,zIndexMode:bi,children:[b.jsx(Dj,{onInit:d,onNodeClick:f,onEdgeClick:h,onNodeMouseEnter:T,onNodeMouseMove:N,onNodeMouseLeave:A,onNodeContextMenu:R,onNodeDoubleClick:z,nodeTypes:s,edgeTypes:u,connectionLineType:P,connectionLineStyle:E,connectionLineComponent:Y,connectionLineContainerStyle:F,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:J,multiSelectionKeyCode:ve,panActivationKeyCode:ye,zoomActivationKeyCode:xe,onlyRenderVisibleElements:je,defaultViewport:Or,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:Re,zoomOnScroll:On,zoomOnPinch:Lt,zoomOnDoubleClick:Pn,panOnScroll:xt,panOnScrollSpeed:Vt,panOnScrollMode:Je,panOnDrag:un,onPaneClick:zc,onPaneMouseEnter:nl,onPaneMouseMove:rl,onPaneMouseLeave:il,onPaneScroll:lr,onPaneContextMenu:ll,paneClickDistance:yi,nodeClickDistance:Ac,onSelectionContextMenu:$,onSelectionStart:Q,onSelectionEnd:K,onReconnect:ha,onReconnectStart:xi,onReconnectEnd:jc,onEdgeContextMenu:es,onEdgeDoubleClick:ts,onEdgeMouseEnter:ns,onEdgeMouseMove:pa,onEdgeMouseLeave:ma,reconnectRadius:rs,defaultMarkerColor:Xt,noDragClassName:Mt,noWheelClassName:Gt,noPanClassName:ar,rfId:wi,disableKeyboardA11y:Lr,nodeExtent:Ye,viewport:ol,onViewportChange:sl}),b.jsx(gA,{nodes:e,edges:n,defaultNodes:r,defaultEdges:l,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:_,onClickConnectEnd:S,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,edgesFocusable:Sn,edgesReconnectable:Mn,elementsSelectable:jt,elevateNodesOnSelect:Dr,elevateEdgesOnSelect:Rr,minZoom:ue,maxZoom:ge,nodeExtent:Ye,onNodesChange:is,onEdgesChange:Xn,snapToGrid:pe,snapGrid:_e,connectionMode:q,translateExtent:Ne,connectOnClick:Mc,defaultEdgeOptions:ga,fitView:al,fitViewOptions:ls,onNodesDelete:X,onEdgesDelete:B,onDelete:U,onNodeDragStart:L,onNodeDrag:D,onNodeDragStop:I,onSelectionDrag:G,onSelectionDragStart:H,onSelectionDragStop:j,onMove:m,onMoveStart:p,onMoveEnd:y,noPanClassName:ar,nodeOrigin:Rt,rfId:wi,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:os,onError:Br,connectionRadius:ss,isValidConnection:or,selectNodesOnDrag:Ce,nodeDragThreshold:us,connectionDragThreshold:Dc,onBeforeDelete:M,debug:Rc,ariaLabelConfig:fs,zIndexMode:bi}),b.jsx(dA,{onSelectionChange:ee}),Wo,b.jsx(oA,{proOptions:vi,position:as}),b.jsx(aA,{rfId:wi,disableKeyboardA11y:Lr})]})})}var Uj=gS(qj);const Ij=e=>{var n;return(n=e.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function Vj({children:e}){const n=Ge(Ij);return n?Wz.createPortal(e,n):null}function Gj(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>pS(a,s)),[]);return[n,r,l]}function Yj(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>mS(a,s)),[]);return[n,r,l]}function $j({dimensions:e,lineWidth:n,variant:r,className:l}){return b.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:zt(["react-flow__background-pattern",r,l])})}function Pj({radius:e,className:n}){return b.jsx("circle",{cx:e,cy:e,r:e,className:zt(["react-flow__background-pattern","dots",n])})}var zr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(zr||(zr={}));const Xj={[zr.Dots]:1,[zr.Lines]:1,[zr.Cross]:6},Fj=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function US({id:e,variant:n=zr.Dots,gap:r=20,size:l,lineWidth:a=1,offset:s=0,color:u,bgColor:f,style:h,className:d,patternClassName:m}){const p=V.useRef(null),{transform:y,patternId:v}=Ge(Fj,ht),w=l||Xj[n],k=n===zr.Dots,_=n===zr.Cross,S=Array.isArray(r)?r:[r,r],T=[S[0]*y[2]||1,S[1]*y[2]||1],N=w*y[2],A=Array.isArray(s)?s:[s,s],R=_?[N,N]:T,z=[A[0]*y[2]||1+R[0]/2,A[1]*y[2]||1+R[1]/2],L=`${v}${e||""}`;return b.jsxs("svg",{className:zt(["react-flow__background",d]),style:{...h,...Ec,"--xy-background-color-props":f,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[b.jsx("pattern",{id:L,x:y[0]%T[0],y:y[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${z[0]},-${z[1]})`,children:k?b.jsx(Pj,{radius:N/2,className:m}):b.jsx($j,{dimensions:R,lineWidth:a,variant:n,className:m})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${L})`})]})}US.displayName="Background";const Qj=V.memo(US);function Zj(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function Kj(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function Jj(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function Wj(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function eM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Ru({children:e,className:n,...r}){return b.jsx("button",{type:"button",className:zt(["react-flow__controls-button",n]),...r,children:e})}const tM=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function IS({style:e,showZoom:n=!0,showFitView:r=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:s,onZoomOut:u,onFitView:f,onInteractiveChange:h,className:d,children:m,position:p="bottom-left",orientation:y="vertical","aria-label":v}){const w=pt(),{isInteractive:k,minZoomReached:_,maxZoomReached:S,ariaLabelConfig:T}=Ge(tM,ht),{zoomIn:N,zoomOut:A,fitView:R}=Fo(),z=()=>{N(),s==null||s()},L=()=>{A(),u==null||u()},D=()=>{R(a),f==null||f()},I=()=>{w.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),h==null||h(!k)},X=y==="horizontal"?"horizontal":"vertical";return b.jsxs(_c,{className:zt(["react-flow__controls",X,d]),position:p,style:e,"data-testid":"rf__controls","aria-label":v??T["controls.ariaLabel"],children:[n&&b.jsxs(b.Fragment,{children:[b.jsx(Ru,{onClick:z,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:S,children:b.jsx(Zj,{})}),b.jsx(Ru,{onClick:L,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:_,children:b.jsx(Kj,{})})]}),r&&b.jsx(Ru,{className:"react-flow__controls-fitview",onClick:D,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:b.jsx(Jj,{})}),l&&b.jsx(Ru,{className:"react-flow__controls-interactive",onClick:I,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:k?b.jsx(eM,{}):b.jsx(Wj,{})}),m]})}IS.displayName="Controls";const nM=V.memo(IS);function rM({id:e,x:n,y:r,width:l,height:a,style:s,color:u,strokeColor:f,strokeWidth:h,className:d,borderRadius:m,shapeRendering:p,selected:y,onClick:v}){const{background:w,backgroundColor:k}=s||{},_=u||w||k;return b.jsx("rect",{className:zt(["react-flow__minimap-node",{selected:y},d]),x:n,y:r,rx:m,ry:m,width:l,height:a,style:{fill:_,stroke:f,strokeWidth:h},shapeRendering:p,onClick:v?S=>v(S,e):void 0})}const iM=V.memo(rM),lM=e=>e.nodes.map(n=>n.id),fh=e=>e instanceof Function?e:()=>e;function aM({nodeStrokeColor:e,nodeColor:n,nodeClassName:r="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:s=iM,onClick:u}){const f=Ge(lM,ht),h=fh(n),d=fh(e),m=fh(r),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:f.map(y=>b.jsx(sM,{id:y,nodeColorFunc:h,nodeStrokeColorFunc:d,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:s,onClick:u,shapeRendering:p},y))})}function oM({id:e,nodeColorFunc:n,nodeStrokeColorFunc:r,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:u,NodeComponent:f,onClick:h}){const{node:d,x:m,y:p,width:y,height:v}=Ge(w=>{const k=w.nodeLookup.get(e);if(!k)return{node:void 0,x:0,y:0,width:0,height:0};const _=k.internals.userNode,{x:S,y:T}=k.internals.positionAbsolute,{width:N,height:A}=Mr(_);return{node:_,x:S,y:T,width:N,height:A}},ht);return!d||d.hidden||!Gw(d)?null:b.jsx(f,{x:m,y:p,width:y,height:v,style:d.style,selected:!!d.selected,className:l(d),color:n(d),borderRadius:a,strokeColor:r(d),strokeWidth:s,shapeRendering:u,onClick:h,id:d.id})}const sM=V.memo(oM);var uM=V.memo(aM);const cM=200,fM=150,dM=e=>!e.hidden,hM=e=>{const n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:e.nodeLookup.size>0?Vw($o(e.nodeLookup,{filter:dM}),n):n,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},pM="react-flow__minimap-desc";function VS({style:e,className:n,nodeStrokeColor:r,nodeColor:l,nodeClassName:a="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:f,bgColor:h,maskColor:d,maskStrokeColor:m,maskStrokeWidth:p,position:y="bottom-right",onClick:v,onNodeClick:w,pannable:k=!1,zoomable:_=!1,ariaLabel:S,inversePan:T,zoomStep:N=1,offsetScale:A=5}){const R=pt(),z=V.useRef(null),{boundingRect:L,viewBB:D,rfId:I,panZoom:X,translateExtent:B,flowWidth:U,flowHeight:ee,ariaLabelConfig:H}=Ge(hM,ht),G=(e==null?void 0:e.width)??cM,j=(e==null?void 0:e.height)??fM,$=L.width/G,Q=L.height/j,K=Math.max($,Q),M=K*G,q=K*j,P=A*K,E=L.x-(M-L.width)/2-P,Y=L.y-(q-L.height)/2-P,F=M+P*2,J=q+P*2,ne=`${pM}-${I}`,re=V.useRef(0),se=V.useRef();re.current=K,V.useEffect(()=>{if(z.current&&X)return se.current=kz({domNode:z.current,panZoom:X,getTransform:()=>R.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[X]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:B,width:U,height:ee,inversePan:T,pannable:k,zoomStep:N,zoomable:_})},[k,_,T,N,B,U,ee]);const ye=v?pe=>{var Ce;const[_e,je]=((Ce=se.current)==null?void 0:Ce.pointer(pe))||[0,0];v(pe,{x:_e,y:je})}:void 0,ve=w?V.useCallback((pe,_e)=>{const je=R.getState().nodeLookup.get(_e).internals.userNode;w(pe,je)},[]):void 0,xe=S??H["minimap.ariaLabel"];return b.jsx(_c,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*K:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:zt(["react-flow__minimap",n]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:G,height:j,viewBox:`${E} ${Y} ${F} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:z,onClick:ye,children:[xe&&b.jsx("title",{id:ne,children:xe}),b.jsx(uM,{onClick:ve,nodeColor:l,nodeStrokeColor:r,nodeBorderRadius:s,nodeClassName:a,nodeStrokeWidth:u,nodeComponent:f}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${E-P},${Y-P}h${F+P*2}v${J+P*2}h${-F-P*2}z + M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}VS.displayName="MiniMap";const mM=V.memo(VS),gM=e=>n=>e?`${Math.max(1/n.transform[2],1)}`:void 0,yM={[ua.Line]:"right",[ua.Handle]:"bottom-right"};function xM({nodeId:e,position:n,variant:r=ua.Handle,className:l,style:a=void 0,children:s,color:u,minWidth:f=10,minHeight:h=10,maxWidth:d=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:y,autoScale:v=!0,shouldResize:w,onResizeStart:k,onResize:_,onResizeEnd:S}){const T=bS(),N=typeof e=="string"?e:T,A=pt(),R=V.useRef(null),z=r===ua.Handle,L=Ge(V.useCallback(gM(z&&v),[z,v]),ht),D=V.useRef(null),I=n??yM[r];V.useEffect(()=>{if(!(!R.current||!N))return D.current||(D.current=Uz({domNode:R.current,nodeId:N,getStoreItems:()=>{const{nodeLookup:B,transform:U,snapGrid:ee,snapToGrid:H,nodeOrigin:G,domNode:j}=A.getState();return{nodeLookup:B,transform:U,snapGrid:ee,snapToGrid:H,nodeOrigin:G,paneDomNode:j}},onChange:(B,U)=>{const{triggerNodeChanges:ee,nodeLookup:H,parentLookup:G,nodeOrigin:j}=A.getState(),$=[],Q={x:B.x,y:B.y},K=H.get(N);if(K&&K.expandParent&&K.parentId){const M=K.origin??j,q=B.width??K.measured.width??0,P=B.height??K.measured.height??0,E={id:K.id,parentId:K.parentId,rect:{width:q,height:P,...Yw({x:B.x??K.position.x,y:B.y??K.position.y},{width:q,height:P},K.parentId,H,M)}},Y=mm([E],H,G,j);$.push(...Y),Q.x=B.x?Math.max(M[0]*q,B.x):void 0,Q.y=B.y?Math.max(M[1]*P,B.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const M={id:N,type:"position",position:{...Q}};$.push(M)}if(B.width!==void 0&&B.height!==void 0){const q={id:N,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:B.width,height:B.height}};$.push(q)}for(const M of U){const q={...M,type:"position"};$.push(q)}ee($)},onEnd:({width:B,height:U})=>{const ee={id:N,type:"dimensions",resizing:!1,dimensions:{width:B,height:U}};A.getState().triggerNodeChanges([ee])}})),D.current.update({controlPosition:I,boundaries:{minWidth:f,minHeight:h,maxWidth:d,maxHeight:m},keepAspectRatio:p,resizeDirection:y,onResizeStart:k,onResize:_,onResizeEnd:S,shouldResize:w}),()=>{var B;(B=D.current)==null||B.destroy()}},[I,f,h,d,m,p,k,_,S,w]);const X=I.split("-");return b.jsx("div",{className:zt(["react-flow__resize-control","nodrag",...X,r,l]),ref:R,style:{...a,scale:L,...u&&{[z?"backgroundColor":"borderColor"]:u}},children:s})}V.memo(xM);function Zo(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;ll.viewContextPath),n=he(l=>l.nodes),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.nodes)??n},[e,n,r])}function vM(){const e=he(l=>l.viewContextPath),n=he(l=>l.groupProgress),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.groupProgress)??n},[e,n,r])}function bM(){const e=he(l=>l.viewContextPath),n=he(l=>l.highlightedEdges),r=he(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?n:((l=Zo(r,e))==null?void 0:l.highlightedEdges)??n},[e,n,r])}function GS(){const e=he(r=>r.viewContextPath),n=he(r=>r.subworkflowContexts);return V.useMemo(()=>{var r;return e.length===0?n:((r=Zo(n,e))==null?void 0:r.children)??[]},[e,n])}function wM(){const e=he(d=>d.viewContextPath),n=he(d=>d.agents),r=he(d=>d.routes),l=he(d=>d.parallelGroups),a=he(d=>d.forEachGroups),s=he(d=>d.nodes),u=he(d=>d.groupProgress),f=he(d=>d.entryPoint),h=he(d=>d.subworkflowContexts);return V.useMemo(()=>{if(e.length===0)return{agents:n,routes:r,parallelGroups:l,forEachGroups:a,nodes:s,groupProgress:u,entryPoint:f,subworkflowContexts:h};const d=Zo(h,e);return d?{agents:d.agents,routes:d.routes,parallelGroups:d.parallelGroups,forEachGroups:d.forEachGroups,nodes:d.nodes,groupProgress:d.groupProgress,entryPoint:d.entryPoint,subworkflowContexts:d.children}:{agents:n,routes:r,parallelGroups:l,forEachGroups:a,nodes:s,groupProgress:u,entryPoint:f,subworkflowContexts:h}},[e,n,r,l,a,s,u,f,h])}var dh,Yv;function ym(){if(Yv)return dh;Yv=1;var e="\0",n="\0",r="";class l{constructor(m){kt(this,"_isDirected",!0);kt(this,"_isMultigraph",!1);kt(this,"_isCompound",!1);kt(this,"_label");kt(this,"_defaultNodeLabelFn",()=>{});kt(this,"_defaultEdgeLabelFn",()=>{});kt(this,"_nodes",{});kt(this,"_in",{});kt(this,"_preds",{});kt(this,"_out",{});kt(this,"_sucs",{});kt(this,"_edgeObjs",{});kt(this,"_edgeLabels",{});kt(this,"_nodeCount",0);kt(this,"_edgeCount",0);kt(this,"_parent");kt(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var y=arguments,v=this;return m.forEach(function(w){y.length>1?v.setNode(w,p):v.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=n,this._children[m]={},this._children[n][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var y=v=>p.removeEdge(p._edgeObjs[v]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(v){p.setParent(v)}),delete this._children[m]),Object.keys(this._in[m]).forEach(y),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(y),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=n;else{p+="";for(var y=p;y!==void 0;y=this.parent(y))if(y===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==n)return p}}children(m=n){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===n)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const v=new Set(p);for(var y of this.successors(m))v.add(y);return Array.from(v.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var y=this;Object.entries(this._nodes).forEach(function([k,_]){m(k)&&p.setNode(k,_)}),Object.values(this._edgeObjs).forEach(function(k){p.hasNode(k.v)&&p.hasNode(k.w)&&p.setEdge(k,y.edge(k))});var v={};function w(k){var _=y.parent(k);return _===void 0||p.hasNode(_)?(v[k]=_,_):_ in v?v[_]:w(_)}return this._isCompound&&p.nodes().forEach(k=>p.setParent(k,w(k))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var y=this,v=arguments;return m.reduce(function(w,k){return v.length>1?y.setEdge(w,k,p):y.setEdge(w,k),k}),this}setEdge(){var m,p,y,v,w=!1,k=arguments[0];typeof k=="object"&&k!==null&&"v"in k?(m=k.v,p=k.w,y=k.name,arguments.length===2&&(v=arguments[1],w=!0)):(m=k,p=arguments[1],y=arguments[3],arguments.length>2&&(v=arguments[2],w=!0)),m=""+m,p=""+p,y!==void 0&&(y=""+y);var _=u(this._isDirected,m,p,y);if(Object.hasOwn(this._edgeLabels,_))return w&&(this._edgeLabels[_]=v),this;if(y!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[_]=w?v:this._defaultEdgeLabelFn(m,p,y);var S=f(this._isDirected,m,p,y);return m=S.v,p=S.w,Object.freeze(S),this._edgeObjs[_]=S,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][_]=S,this._out[m][_]=S,this._edgeCount++,this}edge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return this._edgeLabels[v]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return Object.hasOwn(this._edgeLabels,v)}removeEdge(m,p,y){var v=arguments.length===1?h(this._isDirected,arguments[0]):u(this._isDirected,m,p,y),w=this._edgeObjs[v];return w&&(m=w.v,p=w.w,delete this._edgeLabels[v],delete this._edgeObjs[v],s(this._preds[p],m),s(this._sucs[m],p),delete this._in[p][v],delete this._out[m][v],this._edgeCount--),this}inEdges(m,p){var y=this._in[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.v===p):v}}outEdges(m,p){var y=this._out[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.w===p):v}}nodeEdges(m,p){var y=this.inEdges(m,p);if(y)return y.concat(this.outEdges(m,p))}}function a(d,m){d[m]?d[m]++:d[m]=1}function s(d,m){--d[m]||delete d[m]}function u(d,m,p,y){var v=""+m,w=""+p;if(!d&&v>w){var k=v;v=w,w=k}return v+r+w+r+(y===void 0?e:y)}function f(d,m,p,y){var v=""+m,w=""+p;if(!d&&v>w){var k=v;v=w,w=k}var _={v,w};return y&&(_.name=y),_}function h(d,m){return u(d,m.v,m.w,m.name)}return dh=l,dh}var hh,$v;function SM(){return $v||($v=1,hh="2.2.4"),hh}var ph,Pv;function _M(){return Pv||(Pv=1,ph={Graph:ym(),version:SM()}),ph}var mh,Xv;function EM(){if(Xv)return mh;Xv=1;var e=ym();mh={write:n,read:a};function n(s){var u={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:r(s),edges:l(s)};return s.graph()!==void 0&&(u.value=structuredClone(s.graph())),u}function r(s){return s.nodes().map(function(u){var f=s.node(u),h=s.parent(u),d={v:u};return f!==void 0&&(d.value=f),h!==void 0&&(d.parent=h),d})}function l(s){return s.edges().map(function(u){var f=s.edge(u),h={v:u.v,w:u.w};return u.name!==void 0&&(h.name=u.name),f!==void 0&&(h.value=f),h})}function a(s){var u=new e(s.options).setGraph(s.value);return s.nodes.forEach(function(f){u.setNode(f.v,f.value),f.parent&&u.setParent(f.v,f.parent)}),s.edges.forEach(function(f){u.setEdge({v:f.v,w:f.w,name:f.name},f.value)}),u}return mh}var gh,Fv;function NM(){if(Fv)return gh;Fv=1,gh=e;function e(n){var r={},l=[],a;function s(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),n.successors(u).forEach(s),n.predecessors(u).forEach(s))}return n.nodes().forEach(function(u){a=[],s(u),a.length&&l.push(a)}),l}return gh}var yh,Qv;function YS(){if(Qv)return yh;Qv=1;class e{constructor(){kt(this,"_arr",[]);kt(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var s=this._arr,u=s.length;return a[r]=u,s.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,s=a+1,u=r;a>1,!(l[s].priority1;function r(a,s,u,f){return l(a,String(s),u||n,f||function(h){return a.outEdges(h)})}function l(a,s,u,f){var h={},d=new e,m,p,y=function(v){var w=v.v!==m?v.v:v.w,k=h[w],_=u(v),S=p.distance+_;if(_<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+_);S0&&(m=d.removeMin(),p=h[m],p.distance!==Number.POSITIVE_INFINITY);)f(m).forEach(y);return h}return xh}var vh,Kv;function kM(){if(Kv)return vh;Kv=1;var e=$S();vh=n;function n(r,l,a){return r.nodes().reduce(function(s,u){return s[u]=e(r,u,l,a),s},{})}return vh}var bh,Jv;function PS(){if(Jv)return bh;Jv=1,bh=e;function e(n){var r=0,l=[],a={},s=[];function u(f){var h=a[f]={onStack:!0,lowlink:r,index:r++};if(l.push(f),n.successors(f).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(h.lowlink=Math.min(h.lowlink,a[p].index)):(u(p),h.lowlink=Math.min(h.lowlink,a[p].lowlink))}),h.lowlink===h.index){var d=[],m;do m=l.pop(),a[m].onStack=!1,d.push(m);while(f!==m);s.push(d)}}return n.nodes().forEach(function(f){Object.hasOwn(a,f)||u(f)}),s}return bh}var wh,Wv;function CM(){if(Wv)return wh;Wv=1;var e=PS();wh=n;function n(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return wh}var Sh,e1;function TM(){if(e1)return Sh;e1=1,Sh=n;var e=()=>1;function n(l,a,s){return r(l,a||e,s||function(u){return l.outEdges(u)})}function r(l,a,s){var u={},f=l.nodes();return f.forEach(function(h){u[h]={},u[h][h]={distance:0},f.forEach(function(d){h!==d&&(u[h][d]={distance:Number.POSITIVE_INFINITY})}),s(h).forEach(function(d){var m=d.v===h?d.w:d.v,p=a(d);u[h][m]={distance:p,predecessor:h}})}),f.forEach(function(h){var d=u[h];f.forEach(function(m){var p=u[m];f.forEach(function(y){var v=p[h],w=d[y],k=p[y],_=v.distance+w.distance;_a.successors(p):p=>a.neighbors(p),h=u==="post"?n:r,d=[],m={};return s.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);h(p,f,m,d)}),d}function n(a,s,u,f){for(var h=[[a,!1]];h.length>0;){var d=h.pop();d[1]?f.push(d[0]):Object.hasOwn(u,d[0])||(u[d[0]]=!0,h.push([d[0],!0]),l(s(d[0]),m=>h.push([m,!1])))}}function r(a,s,u,f){for(var h=[a];h.length>0;){var d=h.pop();Object.hasOwn(u,d)||(u[d]=!0,f.push(d),l(s(d),m=>h.push(m)))}}function l(a,s){for(var u=a.length;u--;)s(a[u],u,a);return a}return Nh}var kh,i1;function AM(){if(i1)return kh;i1=1;var e=FS();kh=n;function n(r,l){return e(r,l,"post")}return kh}var Ch,l1;function jM(){if(l1)return Ch;l1=1;var e=FS();Ch=n;function n(r,l){return e(r,l,"pre")}return Ch}var Th,a1;function MM(){if(a1)return Th;a1=1;var e=ym(),n=YS();Th=r;function r(l,a){var s=new e,u={},f=new n,h;function d(p){var y=p.v===h?p.w:p.v,v=f.priority(y);if(v!==void 0){var w=a(p);w0;){if(h=f.removeMin(),Object.hasOwn(u,h))s.setEdge(h,u[h]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(h).forEach(d)}return s}return Th}var zh,o1;function OM(){return o1||(o1=1,zh={components:NM(),dijkstra:$S(),dijkstraAll:kM(),findCycles:CM(),floydWarshall:TM(),isAcyclic:zM(),postorder:AM(),preorder:jM(),prim:MM(),tarjan:PS(),topsort:XS()}),zh}var Ah,s1;function Yn(){if(s1)return Ah;s1=1;var e=_M();return Ah={Graph:e.Graph,json:EM(),alg:OM(),version:e.version},Ah}var jh,u1;function DM(){if(u1)return jh;u1=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,s=a._prev;if(s!==a)return n(s),s}enqueue(a){let s=this._sentinel;a._prev&&a._next&&n(a),a._next=s._next,s._next._prev=a,s._next=a,a._prev=s}toString(){let a=[],s=this._sentinel,u=s._prev;for(;u!==s;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function n(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return jh=e,jh}var Mh,c1;function RM(){if(c1)return Mh;c1=1;let e=Yn().Graph,n=DM();Mh=l;let r=()=>1;function l(d,m){if(d.nodeCount()<=1)return[];let p=u(d,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(v=>d.outEdges(v.v,v.w))}function a(d,m,p){let y=[],v=m[m.length-1],w=m[0],k;for(;d.nodeCount();){for(;k=w.dequeue();)s(d,m,p,k);for(;k=v.dequeue();)s(d,m,p,k);if(d.nodeCount()){for(let _=m.length-2;_>0;--_)if(k=m[_].dequeue(),k){y=y.concat(s(d,m,p,k,!0));break}}}return y}function s(d,m,p,y,v){let w=v?[]:void 0;return d.inEdges(y.v).forEach(k=>{let _=d.edge(k),S=d.node(k.v);v&&w.push({v:k.v,w:k.w}),S.out-=_,f(m,p,S)}),d.outEdges(y.v).forEach(k=>{let _=d.edge(k),S=k.w,T=d.node(S);T.in-=_,f(m,p,T)}),d.removeNode(y.v),w}function u(d,m){let p=new e,y=0,v=0;d.nodes().forEach(_=>{p.setNode(_,{v:_,in:0,out:0})}),d.edges().forEach(_=>{let S=p.edge(_.v,_.w)||0,T=m(_),N=S+T;p.setEdge(_.v,_.w,N),v=Math.max(v,p.node(_.v).out+=T),y=Math.max(y,p.node(_.w).in+=T)});let w=h(v+y+3).map(()=>new n),k=y+1;return p.nodes().forEach(_=>{f(w,k,p.node(_))}),{graph:p,buckets:w,zeroIdx:k}}function f(d,m,p){p.out?p.in?d[p.out-p.in+m].enqueue(p):d[d.length-1].enqueue(p):d[0].enqueue(p)}function h(d){const m=[];for(let p=0;pI.setNode(X,D.node(X))),D.edges().forEach(X=>{let B=I.edge(X.v,X.w)||{weight:0,minlen:1},U=D.edge(X);I.setEdge(X.v,X.w,{weight:B.weight+U.weight,minlen:Math.max(B.minlen,U.minlen)})}),I}function l(D){let I=new e({multigraph:D.isMultigraph()}).setGraph(D.graph());return D.nodes().forEach(X=>{D.children(X).length||I.setNode(X,D.node(X))}),D.edges().forEach(X=>{I.setEdge(X,D.edge(X))}),I}function a(D){let I=D.nodes().map(X=>{let B={};return D.outEdges(X).forEach(U=>{B[U.w]=(B[U.w]||0)+D.edge(U).weight}),B});return L(D.nodes(),I)}function s(D){let I=D.nodes().map(X=>{let B={};return D.inEdges(X).forEach(U=>{B[U.v]=(B[U.v]||0)+D.edge(U).weight}),B});return L(D.nodes(),I)}function u(D,I){let X=D.x,B=D.y,U=I.x-X,ee=I.y-B,H=D.width/2,G=D.height/2;if(!U&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let j,$;return Math.abs(ee)*H>Math.abs(U)*G?(ee<0&&(G=-G),j=G*U/ee,$=G):(U<0&&(H=-H),j=H,$=H*ee/U),{x:X+j,y:B+$}}function f(D){let I=A(w(D)+1).map(()=>[]);return D.nodes().forEach(X=>{let B=D.node(X),U=B.rank;U!==void 0&&(I[U][B.order]=X)}),I}function h(D){let I=D.nodes().map(B=>{let U=D.node(B).rank;return U===void 0?Number.MAX_VALUE:U}),X=v(Math.min,I);D.nodes().forEach(B=>{let U=D.node(B);Object.hasOwn(U,"rank")&&(U.rank-=X)})}function d(D){let I=D.nodes().map(H=>D.node(H).rank),X=v(Math.min,I),B=[];D.nodes().forEach(H=>{let G=D.node(H).rank-X;B[G]||(B[G]=[]),B[G].push(H)});let U=0,ee=D.graph().nodeRankFactor;Array.from(B).forEach((H,G)=>{H===void 0&&G%ee!==0?--U:H!==void 0&&U&&H.forEach(j=>D.node(j).rank+=U)})}function m(D,I,X,B){let U={width:0,height:0};return arguments.length>=4&&(U.rank=X,U.order=B),n(D,"border",U,I)}function p(D,I=y){const X=[];for(let B=0;By){const X=p(I);return D.apply(null,X.map(B=>D.apply(null,B)))}else return D.apply(null,I)}function w(D){const X=D.nodes().map(B=>{let U=D.node(B).rank;return U===void 0?Number.MIN_VALUE:U});return v(Math.max,X)}function k(D,I){let X={lhs:[],rhs:[]};return D.forEach(B=>{I(B)?X.lhs.push(B):X.rhs.push(B)}),X}function _(D,I){let X=Date.now();try{return I()}finally{console.log(D+" time: "+(Date.now()-X)+"ms")}}function S(D,I){return I()}let T=0;function N(D){var I=++T;return D+(""+I)}function A(D,I,X=1){I==null&&(I=D,D=0);let B=ee=>eeIB[I]),Object.entries(D).reduce((B,[U,ee])=>(B[U]=X(ee,U),B),{})}function L(D,I){return D.reduce((X,B,U)=>(X[B]=I[U],X),{})}return Oh}var Dh,d1;function LM(){if(d1)return Dh;d1=1;let e=RM(),n=Tt().uniqueId;Dh={run:r,undo:a};function r(s){(s.graph().acyclicer==="greedy"?e(s,f(s)):l(s)).forEach(h=>{let d=s.edge(h);s.removeEdge(h),d.forwardName=h.name,d.reversed=!0,s.setEdge(h.w,h.v,d,n("rev"))});function f(h){return d=>h.edge(d).weight}}function l(s){let u=[],f={},h={};function d(m){Object.hasOwn(h,m)||(h[m]=!0,f[m]=!0,s.outEdges(m).forEach(p=>{Object.hasOwn(f,p.w)?u.push(p):d(p.w)}),delete f[m])}return s.nodes().forEach(d),u}function a(s){s.edges().forEach(u=>{let f=s.edge(u);if(f.reversed){s.removeEdge(u);let h=f.forwardName;delete f.reversed,delete f.forwardName,s.setEdge(u.w,u.v,f,h)}})}return Dh}var Rh,h1;function HM(){if(h1)return Rh;h1=1;let e=Tt();Rh={run:n,undo:l};function n(a){a.graph().dummyChains=[],a.edges().forEach(s=>r(a,s))}function r(a,s){let u=s.v,f=a.node(u).rank,h=s.w,d=a.node(h).rank,m=s.name,p=a.edge(s),y=p.labelRank;if(d===f+1)return;a.removeEdge(s);let v,w,k;for(k=0,++f;f{let u=a.node(s),f=u.edgeLabel,h;for(a.setEdge(u.edgeObj,f);u.dummy;)h=a.successors(s)[0],a.removeNode(s),f.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(f.x=u.x,f.y=u.y,f.width=u.width,f.height=u.height),s=h,u=a.node(s)})}return Rh}var Lh,p1;function oc(){if(p1)return Lh;p1=1;const{applyWithChunking:e}=Tt();Lh={longestPath:n,slack:r};function n(l){var a={};function s(u){var f=l.node(u);if(Object.hasOwn(a,u))return f.rank;a[u]=!0;let h=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:s(m.w)-l.edge(m).minlen);var d=e(Math.min,h);return d===Number.POSITIVE_INFINITY&&(d=0),f.rank=d}l.sources().forEach(s)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Lh}var Hh,m1;function QS(){if(m1)return Hh;m1=1;var e=Yn().Graph,n=oc().slack;Hh=r;function r(u){var f=new e({directed:!1}),h=u.nodes()[0],d=u.nodeCount();f.setNode(h,{});for(var m,p;l(f,u){var p=m.v,y=d===p?m.w:p;!u.hasNode(y)&&!n(f,m)&&(u.setNode(y,{}),u.setEdge(d,y,{}),h(y))})}return u.nodes().forEach(h),u.nodeCount()}function a(u,f){return f.edges().reduce((d,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=n(f,m)),pf.node(d).rank+=h)}return Hh}var Bh,g1;function BM(){if(g1)return Bh;g1=1;var e=QS(),n=oc().slack,r=oc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,s=Tt().simplify;Bh=u,u.initLowLimValues=m,u.initCutValues=f,u.calcCutValue=d,u.leaveEdge=y,u.enterEdge=v,u.exchangeEdges=w;function u(T){T=s(T),r(T);var N=e(T);m(N),f(N,T);for(var A,R;A=y(N);)R=v(N,T,A),w(N,T,A,R)}function f(T,N){var A=a(T,T.nodes());A=A.slice(0,A.length-1),A.forEach(R=>h(T,N,R))}function h(T,N,A){var R=T.node(A),z=R.parent;T.edge(A,z).cutvalue=d(T,N,A)}function d(T,N,A){var R=T.node(A),z=R.parent,L=!0,D=N.edge(A,z),I=0;return D||(L=!1,D=N.edge(z,A)),I=D.weight,N.nodeEdges(A).forEach(X=>{var B=X.v===A,U=B?X.w:X.v;if(U!==z){var ee=B===L,H=N.edge(X).weight;if(I+=ee?H:-H,_(T,A,U)){var G=T.edge(A,U).cutvalue;I+=ee?-G:G}}}),I}function m(T,N){arguments.length<2&&(N=T.nodes()[0]),p(T,{},1,N)}function p(T,N,A,R,z){var L=A,D=T.node(R);return N[R]=!0,T.neighbors(R).forEach(I=>{Object.hasOwn(N,I)||(A=p(T,N,A,I,R))}),D.low=L,D.lim=A++,z?D.parent=z:delete D.parent,A}function y(T){return T.edges().find(N=>T.edge(N).cutvalue<0)}function v(T,N,A){var R=A.v,z=A.w;N.hasEdge(R,z)||(R=A.w,z=A.v);var L=T.node(R),D=T.node(z),I=L,X=!1;L.lim>D.lim&&(I=D,X=!0);var B=N.edges().filter(U=>X===S(T,T.node(U.v),I)&&X!==S(T,T.node(U.w),I));return B.reduce((U,ee)=>n(N,ee)!N.node(z).parent),R=l(T,A);R=R.slice(1),R.forEach(z=>{var L=T.node(z).parent,D=N.edge(z,L),I=!1;D||(D=N.edge(L,z),I=!0),N.node(z).rank=N.node(L).rank+(I?D.minlen:-D.minlen)})}function _(T,N,A){return T.hasEdge(N,A)}function S(T,N,A){return A.low<=N.lim&&N.lim<=A.lim}return Bh}var qh,y1;function qM(){if(y1)return qh;y1=1;var e=oc(),n=e.longestPath,r=QS(),l=BM();qh=a;function a(h){var d=h.graph().ranker;if(d instanceof Function)return d(h);switch(h.graph().ranker){case"network-simplex":f(h);break;case"tight-tree":u(h);break;case"longest-path":s(h);break;case"none":break;default:f(h)}}var s=n;function u(h){n(h),r(h)}function f(h){l(h)}return qh}var Uh,x1;function UM(){if(x1)return Uh;x1=1,Uh=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(s=>{let u=l.node(s),f=u.edgeObj,h=n(l,a,f.v,f.w),d=h.path,m=h.lca,p=0,y=d[p],v=!0;for(;s!==f.w;){if(u=l.node(s),v){for(;(y=d[p])!==m&&l.node(y).maxRankd||m>a[p].lim));for(y=p,p=u;(p=l.parent(p))!==y;)h.push(p);return{path:f.concat(h.reverse()),lca:y}}function r(l){let a={},s=0;function u(f){let h=s;l.children(f).forEach(u),a[f]={low:h,lim:s++}}return l.children().forEach(u),a}return Uh}var Ih,v1;function IM(){if(v1)return Ih;v1=1;let e=Tt();Ih={run:n,cleanup:s};function n(u){let f=e.addDummyNode(u,"root",{},"_root"),h=l(u),d=Object.values(h),m=e.applyWithChunking(Math.max,d)-1,p=2*m+1;u.graph().nestingRoot=f,u.edges().forEach(v=>u.edge(v).minlen*=p);let y=a(u)+1;u.children().forEach(v=>r(u,f,p,y,m,h,v)),u.graph().nodeRankFactor=p}function r(u,f,h,d,m,p,y){let v=u.children(y);if(!v.length){y!==f&&u.setEdge(f,y,{weight:0,minlen:h});return}let w=e.addBorderNode(u,"_bt"),k=e.addBorderNode(u,"_bb"),_=u.node(y);u.setParent(w,y),_.borderTop=w,u.setParent(k,y),_.borderBottom=k,v.forEach(S=>{r(u,f,h,d,m,p,S);let T=u.node(S),N=T.borderTop?T.borderTop:S,A=T.borderBottom?T.borderBottom:S,R=T.borderTop?d:2*d,z=N!==A?1:m-p[y]+1;u.setEdge(w,N,{weight:R,minlen:z,nestingEdge:!0}),u.setEdge(A,k,{weight:R,minlen:z,nestingEdge:!0})}),u.parent(y)||u.setEdge(f,w,{weight:0,minlen:m+p[y]})}function l(u){var f={};function h(d,m){var p=u.children(d);p&&p.length&&p.forEach(y=>h(y,m+1)),f[d]=m}return u.children().forEach(d=>h(d,1)),f}function a(u){return u.edges().reduce((f,h)=>f+u.edge(h).weight,0)}function s(u){var f=u.graph();u.removeNode(f.nestingRoot),delete f.nestingRoot,u.edges().forEach(h=>{var d=u.edge(h);d.nestingEdge&&u.removeEdge(h)})}return Ih}var Vh,b1;function VM(){if(b1)return Vh;b1=1;let e=Tt();Vh=n;function n(l){function a(s){let u=l.children(s),f=l.node(s);if(u.length&&u.forEach(a),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let h=f.minRank,d=f.maxRank+1;hl(h.node(d))),h.edges().forEach(d=>l(h.edge(d)))}function l(h){let d=h.width;h.width=h.height,h.height=d}function a(h){h.nodes().forEach(d=>s(h.node(d))),h.edges().forEach(d=>{let m=h.edge(d);m.points.forEach(s),Object.hasOwn(m,"y")&&s(m)})}function s(h){h.y=-h.y}function u(h){h.nodes().forEach(d=>f(h.node(d))),h.edges().forEach(d=>{let m=h.edge(d);m.points.forEach(f),Object.hasOwn(m,"x")&&f(m)})}function f(h){let d=h.x;h.x=h.y,h.y=d}return Gh}var Yh,S1;function YM(){if(S1)return Yh;S1=1;let e=Tt();Yh=n;function n(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),s=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,s),f=e.range(u+1).map(()=>[]);function h(m){if(l[m])return;l[m]=!0;let p=r.node(m);f[p.rank].push(m),r.successors(m).forEach(h)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(h),f}return Yh}var $h,_1;function $M(){if(_1)return $h;_1=1;let e=Tt().zipObject;$h=n;function n(l,a){let s=0;for(let u=1;uv)),f=a.flatMap(y=>l.outEdges(y).map(v=>({pos:u[v.w],weight:l.edge(v).weight})).sort((v,w)=>v.pos-w.pos)),h=1;for(;h{let v=y.pos+h;m[v]+=y.weight;let w=0;for(;v>0;)v%2&&(w+=m[v+1]),v=v-1>>1,m[v]+=y.weight;p+=y.weight*w}),p}return $h}var Ph,E1;function PM(){if(E1)return Ph;E1=1,Ph=e;function e(n,r=[]){return r.map(l=>{let a=n.inEdges(l);if(a.length){let s=a.reduce((u,f)=>{let h=n.edge(f),d=n.node(f.v);return{sum:u.sum+h.weight*d.order,weight:u.weight+h.weight}},{sum:0,weight:0});return{v:l,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:l}})}return Ph}var Xh,N1;function XM(){if(N1)return Xh;N1=1;let e=Tt();Xh=n;function n(a,s){let u={};a.forEach((h,d)=>{let m=u[h.v]={indegree:0,in:[],out:[],vs:[h.v],i:d};h.barycenter!==void 0&&(m.barycenter=h.barycenter,m.weight=h.weight)}),s.edges().forEach(h=>{let d=u[h.v],m=u[h.w];d!==void 0&&m!==void 0&&(m.indegree++,d.out.push(u[h.w]))});let f=Object.values(u).filter(h=>!h.indegree);return r(f)}function r(a){let s=[];function u(h){return d=>{d.merged||(d.barycenter===void 0||h.barycenter===void 0||d.barycenter>=h.barycenter)&&l(h,d)}}function f(h){return d=>{d.in.push(h),--d.indegree===0&&a.push(d)}}for(;a.length;){let h=a.pop();s.push(h),h.in.reverse().forEach(u(h)),h.out.forEach(f(h))}return s.filter(h=>!h.merged).map(h=>e.pick(h,["vs","i","barycenter","weight"]))}function l(a,s){let u=0,f=0;a.weight&&(u+=a.barycenter*a.weight,f+=a.weight),s.weight&&(u+=s.barycenter*s.weight,f+=s.weight),a.vs=s.vs.concat(a.vs),a.barycenter=u/f,a.weight=f,a.i=Math.min(s.i,a.i),s.merged=!0}return Xh}var Fh,k1;function FM(){if(k1)return Fh;k1=1;let e=Tt();Fh=n;function n(a,s){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),f=u.lhs,h=u.rhs.sort((w,k)=>k.i-w.i),d=[],m=0,p=0,y=0;f.sort(l(!!s)),y=r(d,h,y),f.forEach(w=>{y+=w.vs.length,d.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,y=r(d,h,y)});let v={vs:d.flat(!0)};return p&&(v.barycenter=m/p,v.weight=p),v}function r(a,s,u){let f;for(;s.length&&(f=s[s.length-1]).i<=u;)s.pop(),a.push(f.vs),u++;return u}function l(a){return(s,u)=>s.barycenteru.barycenter?1:a?u.i-s.i:s.i-u.i}return Fh}var Qh,C1;function QM(){if(C1)return Qh;C1=1;let e=PM(),n=XM(),r=FM();Qh=l;function l(u,f,h,d){let m=u.children(f),p=u.node(f),y=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,w={};y&&(m=m.filter(T=>T!==y&&T!==v));let k=e(u,m);k.forEach(T=>{if(u.children(T.v).length){let N=l(u,T.v,h,d);w[T.v]=N,Object.hasOwn(N,"barycenter")&&s(T,N)}});let _=n(k,h);a(_,w);let S=r(_,d);if(y&&(S.vs=[y,S.vs,v].flat(!0),u.predecessors(y).length)){let T=u.node(u.predecessors(y)[0]),N=u.node(u.predecessors(v)[0]);Object.hasOwn(S,"barycenter")||(S.barycenter=0,S.weight=0),S.barycenter=(S.barycenter*S.weight+T.order+N.order)/(S.weight+2),S.weight+=2}return S}function a(u,f){u.forEach(h=>{h.vs=h.vs.flatMap(d=>f[d]?f[d].vs:d)})}function s(u,f){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+f.barycenter*f.weight)/(u.weight+f.weight),u.weight+=f.weight):(u.barycenter=f.barycenter,u.weight=f.weight)}return Qh}var Zh,T1;function ZM(){if(T1)return Zh;T1=1;let e=Yn().Graph,n=Tt();Zh=r;function r(a,s,u,f){f||(f=a.nodes());let h=l(a),d=new e({compound:!0}).setGraph({root:h}).setDefaultNodeLabel(m=>a.node(m));return f.forEach(m=>{let p=a.node(m),y=a.parent(m);(p.rank===s||p.minRank<=s&&s<=p.maxRank)&&(d.setNode(m),d.setParent(m,y||h),a[u](m).forEach(v=>{let w=v.v===m?v.w:v.v,k=d.edge(w,m),_=k!==void 0?k.weight:0;d.setEdge(w,m,{weight:a.edge(v).weight+_})}),Object.hasOwn(p,"minRank")&&d.setNode(m,{borderLeft:p.borderLeft[s],borderRight:p.borderRight[s]}))}),d}function l(a){for(var s;a.hasNode(s=n.uniqueId("_root")););return s}return Zh}var Kh,z1;function KM(){if(z1)return Kh;z1=1,Kh=e;function e(n,r,l){let a={},s;l.forEach(u=>{let f=n.parent(u),h,d;for(;f;){if(h=n.parent(f),h?(d=a[h],a[h]=f):(d=s,s=f),d&&d!==f){r.setEdge(d,f);return}f=h}})}return Kh}var Jh,A1;function JM(){if(A1)return Jh;A1=1;let e=YM(),n=$M(),r=QM(),l=ZM(),a=KM(),s=Yn().Graph,u=Tt();Jh=f;function f(p,y){if(y&&typeof y.customOrder=="function"){y.customOrder(p,f);return}let v=u.maxRank(p),w=h(p,u.range(1,v+1),"inEdges"),k=h(p,u.range(v-1,-1,-1),"outEdges"),_=e(p);if(m(p,_),y&&y.disableOptimalOrderHeuristic)return;let S=Number.POSITIVE_INFINITY,T;for(let N=0,A=0;A<4;++N,++A){d(N%2?w:k,N%4>=2),_=u.buildLayerMatrix(p);let R=n(p,_);R{w.has(_)||w.set(_,[]),w.get(_).push(S)};for(const _ of p.nodes()){const S=p.node(_);if(typeof S.rank=="number"&&k(S.rank,_),typeof S.minRank=="number"&&typeof S.maxRank=="number")for(let T=S.minRank;T<=S.maxRank;T++)T!==S.rank&&k(T,_)}return y.map(function(_){return l(p,_,v,w.get(_)||[])})}function d(p,y){let v=new s;p.forEach(function(w){let k=w.graph().root,_=r(w,k,v,y);_.vs.forEach((S,T)=>w.node(S).order=T),a(w,v,_.vs)})}function m(p,y){Object.values(y).forEach(v=>v.forEach((w,k)=>p.node(w).order=k))}return Jh}var Wh,j1;function WM(){if(j1)return Wh;j1=1;let e=Yn().Graph,n=Tt();Wh={positionX:v,findType1Conflicts:r,findType2Conflicts:l,addConflict:s,hasConflict:u,verticalAlignment:f,horizontalCompaction:h,alignCoordinates:p,findSmallestWidthAlignment:m,balance:y};function r(_,S){let T={};function N(A,R){let z=0,L=0,D=A.length,I=R[R.length-1];return R.forEach((X,B)=>{let U=a(_,X),ee=U?_.node(U).order:D;(U||X===I)&&(R.slice(L,B+1).forEach(H=>{_.predecessors(H).forEach(G=>{let j=_.node(G),$=j.order;(${X=R[B],_.node(X).dummy&&_.predecessors(X).forEach(U=>{let ee=_.node(U);ee.dummy&&(ee.orderI)&&s(T,U,X)})})}function A(R,z){let L=-1,D,I=0;return z.forEach((X,B)=>{if(_.node(X).dummy==="border"){let U=_.predecessors(X);U.length&&(D=_.node(U[0]).order,N(z,I,B,L,D),I=B,L=D)}N(z,I,z.length,D,R.length)}),z}return S.length&&S.reduce(A),T}function a(_,S){if(_.node(S).dummy)return _.predecessors(S).find(T=>_.node(T).dummy)}function s(_,S,T){if(S>T){let A=S;S=T,T=A}let N=_[S];N||(_[S]=N={}),N[T]=!0}function u(_,S,T){if(S>T){let N=S;S=T,T=N}return!!_[S]&&Object.hasOwn(_[S],T)}function f(_,S,T,N){let A={},R={},z={};return S.forEach(L=>{L.forEach((D,I)=>{A[D]=D,R[D]=D,z[D]=I})}),S.forEach(L=>{let D=-1;L.forEach(I=>{let X=N(I);if(X.length){X=X.sort((U,ee)=>z[U]-z[ee]);let B=(X.length-1)/2;for(let U=Math.floor(B),ee=Math.ceil(B);U<=ee;++U){let H=X[U];R[I]===I&&DMath.max(U,R[ee.v]+z.edge(ee)),0)}function X(B){let U=z.outEdges(B).reduce((H,G)=>Math.min(H,R[G.w]-z.edge(G)),Number.POSITIVE_INFINITY),ee=_.node(B);U!==Number.POSITIVE_INFINITY&&ee.borderType!==L&&(R[B]=Math.max(R[B],U))}return D(I,z.predecessors.bind(z)),D(X,z.successors.bind(z)),Object.keys(N).forEach(B=>R[B]=R[T[B]]),R}function d(_,S,T,N){let A=new e,R=_.graph(),z=w(R.nodesep,R.edgesep,N);return S.forEach(L=>{let D;L.forEach(I=>{let X=T[I];if(A.setNode(X),D){var B=T[D],U=A.edge(B,X);A.setEdge(B,X,Math.max(z(_,I,D),U||0))}D=I})}),A}function m(_,S){return Object.values(S).reduce((T,N)=>{let A=Number.NEGATIVE_INFINITY,R=Number.POSITIVE_INFINITY;Object.entries(N).forEach(([L,D])=>{let I=k(_,L)/2;A=Math.max(D+I,A),R=Math.min(D-I,R)});const z=A-R;return z{["l","r"].forEach(z=>{let L=R+z,D=_[L];if(D===S)return;let I=Object.values(D),X=N-n.applyWithChunking(Math.min,I);z!=="l"&&(X=A-n.applyWithChunking(Math.max,I)),X&&(_[L]=n.mapValues(D,B=>B+X))})})}function y(_,S){return n.mapValues(_.ul,(T,N)=>{if(S)return _[S.toLowerCase()][N];{let A=Object.values(_).map(R=>R[N]).sort((R,z)=>R-z);return(A[1]+A[2])/2}})}function v(_){let S=n.buildLayerMatrix(_),T=Object.assign(r(_,S),l(_,S)),N={},A;["u","d"].forEach(z=>{A=z==="u"?S:Object.values(S).reverse(),["l","r"].forEach(L=>{L==="r"&&(A=A.map(B=>Object.values(B).reverse()));let D=(z==="u"?_.predecessors:_.successors).bind(_),I=f(_,A,T,D),X=h(_,A,I.root,I.align,L==="r");L==="r"&&(X=n.mapValues(X,B=>-B)),N[z+L]=X})});let R=m(_,N);return p(N,R),y(N,_.graph().align)}function w(_,S,T){return(N,A,R)=>{let z=N.node(A),L=N.node(R),D=0,I;if(D+=z.width/2,Object.hasOwn(z,"labelpos"))switch(z.labelpos.toLowerCase()){case"l":I=-z.width/2;break;case"r":I=z.width/2;break}if(I&&(D+=T?I:-I),I=0,D+=(z.dummy?S:_)/2,D+=(L.dummy?S:_)/2,D+=L.width/2,Object.hasOwn(L,"labelpos"))switch(L.labelpos.toLowerCase()){case"l":I=L.width/2;break;case"r":I=-L.width/2;break}return I&&(D+=T?I:-I),I=0,D}}function k(_,S){return _.node(S).width}return Wh}var ep,M1;function e5(){if(M1)return ep;M1=1;let e=Tt(),n=WM().positionX;ep=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(n(a)).forEach(([s,u])=>a.node(s).x=u)}function l(a){let s=e.buildLayerMatrix(a),u=a.graph().ranksep,f=0;s.forEach(h=>{const d=h.reduce((m,p)=>{const y=a.node(p).height;return m>y?m:y},0);h.forEach(m=>a.node(m).y=f+d/2),f+=d+u})}return ep}var tp,O1;function t5(){if(O1)return tp;O1=1;let e=LM(),n=HM(),r=qM(),l=Tt().normalizeRanks,a=UM(),s=Tt().removeEmptyRanks,u=IM(),f=VM(),h=GM(),d=JM(),m=e5(),p=Tt(),y=Yn().Graph;tp=v;function v(E,Y){let F=Y&&Y.debugTiming?p.time:p.notime;F("layout",()=>{let J=F(" buildLayoutGraph",()=>D(E));F(" runLayout",()=>w(J,F,Y)),F(" updateInputGraph",()=>k(E,J))})}function w(E,Y,F){Y(" makeSpaceForEdgeLabels",()=>I(E)),Y(" removeSelfEdges",()=>Q(E)),Y(" acyclic",()=>e.run(E)),Y(" nestingGraph.run",()=>u.run(E)),Y(" rank",()=>r(p.asNonCompoundGraph(E))),Y(" injectEdgeLabelProxies",()=>X(E)),Y(" removeEmptyRanks",()=>s(E)),Y(" nestingGraph.cleanup",()=>u.cleanup(E)),Y(" normalizeRanks",()=>l(E)),Y(" assignRankMinMax",()=>B(E)),Y(" removeEdgeLabelProxies",()=>U(E)),Y(" normalize.run",()=>n.run(E)),Y(" parentDummyChains",()=>a(E)),Y(" addBorderSegments",()=>f(E)),Y(" order",()=>d(E,F)),Y(" insertSelfEdges",()=>K(E)),Y(" adjustCoordinateSystem",()=>h.adjust(E)),Y(" position",()=>m(E)),Y(" positionSelfEdges",()=>M(E)),Y(" removeBorderNodes",()=>$(E)),Y(" normalize.undo",()=>n.undo(E)),Y(" fixupEdgeLabelCoords",()=>G(E)),Y(" undoCoordinateSystem",()=>h.undo(E)),Y(" translateGraph",()=>ee(E)),Y(" assignNodeIntersects",()=>H(E)),Y(" reversePoints",()=>j(E)),Y(" acyclic.undo",()=>e.undo(E))}function k(E,Y){E.nodes().forEach(F=>{let J=E.node(F),ne=Y.node(F);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,Y.children(F).length&&(J.width=ne.width,J.height=ne.height))}),E.edges().forEach(F=>{let J=E.edge(F),ne=Y.edge(F);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),E.graph().width=Y.graph().width,E.graph().height=Y.graph().height}let _=["nodesep","edgesep","ranksep","marginx","marginy"],S={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},T=["acyclicer","ranker","rankdir","align"],N=["width","height","rank"],A={width:0,height:0},R=["minlen","weight","width","height","labeloffset"],z={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},L=["labelpos"];function D(E){let Y=new y({multigraph:!0,compound:!0}),F=P(E.graph());return Y.setGraph(Object.assign({},S,q(F,_),p.pick(F,T))),E.nodes().forEach(J=>{let ne=P(E.node(J));const re=q(ne,N);Object.keys(A).forEach(se=>{re[se]===void 0&&(re[se]=A[se])}),Y.setNode(J,re),Y.setParent(J,E.parent(J))}),E.edges().forEach(J=>{let ne=P(E.edge(J));Y.setEdge(J,Object.assign({},z,q(ne,R),p.pick(ne,L)))}),Y}function I(E){let Y=E.graph();Y.ranksep/=2,E.edges().forEach(F=>{let J=E.edge(F);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(Y.rankdir==="TB"||Y.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function X(E){E.edges().forEach(Y=>{let F=E.edge(Y);if(F.width&&F.height){let J=E.node(Y.v),re={rank:(E.node(Y.w).rank-J.rank)/2+J.rank,e:Y};p.addDummyNode(E,"edge-proxy",re,"_ep")}})}function B(E){let Y=0;E.nodes().forEach(F=>{let J=E.node(F);J.borderTop&&(J.minRank=E.node(J.borderTop).rank,J.maxRank=E.node(J.borderBottom).rank,Y=Math.max(Y,J.maxRank))}),E.graph().maxRank=Y}function U(E){E.nodes().forEach(Y=>{let F=E.node(Y);F.dummy==="edge-proxy"&&(E.edge(F.e).labelRank=F.rank,E.removeNode(Y))})}function ee(E){let Y=Number.POSITIVE_INFINITY,F=0,J=Number.POSITIVE_INFINITY,ne=0,re=E.graph(),se=re.marginx||0,ye=re.marginy||0;function ve(xe){let pe=xe.x,_e=xe.y,je=xe.width,Ce=xe.height;Y=Math.min(Y,pe-je/2),F=Math.max(F,pe+je/2),J=Math.min(J,_e-Ce/2),ne=Math.max(ne,_e+Ce/2)}E.nodes().forEach(xe=>ve(E.node(xe))),E.edges().forEach(xe=>{let pe=E.edge(xe);Object.hasOwn(pe,"x")&&ve(pe)}),Y-=se,J-=ye,E.nodes().forEach(xe=>{let pe=E.node(xe);pe.x-=Y,pe.y-=J}),E.edges().forEach(xe=>{let pe=E.edge(xe);pe.points.forEach(_e=>{_e.x-=Y,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=Y),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=F-Y+se,re.height=ne-J+ye}function H(E){E.edges().forEach(Y=>{let F=E.edge(Y),J=E.node(Y.v),ne=E.node(Y.w),re,se;F.points?(re=F.points[0],se=F.points[F.points.length-1]):(F.points=[],re=ne,se=J),F.points.unshift(p.intersectRect(J,re)),F.points.push(p.intersectRect(ne,se))})}function G(E){E.edges().forEach(Y=>{let F=E.edge(Y);if(Object.hasOwn(F,"x"))switch((F.labelpos==="l"||F.labelpos==="r")&&(F.width-=F.labeloffset),F.labelpos){case"l":F.x-=F.width/2+F.labeloffset;break;case"r":F.x+=F.width/2+F.labeloffset;break}})}function j(E){E.edges().forEach(Y=>{let F=E.edge(Y);F.reversed&&F.points.reverse()})}function $(E){E.nodes().forEach(Y=>{if(E.children(Y).length){let F=E.node(Y),J=E.node(F.borderTop),ne=E.node(F.borderBottom),re=E.node(F.borderLeft[F.borderLeft.length-1]),se=E.node(F.borderRight[F.borderRight.length-1]);F.width=Math.abs(se.x-re.x),F.height=Math.abs(ne.y-J.y),F.x=re.x+F.width/2,F.y=J.y+F.height/2}}),E.nodes().forEach(Y=>{E.node(Y).dummy==="border"&&E.removeNode(Y)})}function Q(E){E.edges().forEach(Y=>{if(Y.v===Y.w){var F=E.node(Y.v);F.selfEdges||(F.selfEdges=[]),F.selfEdges.push({e:Y,label:E.edge(Y)}),E.removeEdge(Y)}})}function K(E){var Y=p.buildLayerMatrix(E);Y.forEach(F=>{var J=0;F.forEach((ne,re)=>{var se=E.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(ye=>{p.addDummyNode(E,"selfedge",{width:ye.label.width,height:ye.label.height,rank:se.rank,order:re+ ++J,e:ye.e,label:ye.label},"_se")}),delete se.selfEdges})})}function M(E){E.nodes().forEach(Y=>{var F=E.node(Y);if(F.dummy==="selfedge"){var J=E.node(F.e.v),ne=J.x+J.width/2,re=J.y,se=F.x-ne,ye=J.height/2;E.setEdge(F.e,F.label),E.removeNode(Y),F.label.points=[{x:ne+2*se/3,y:re-ye},{x:ne+5*se/6,y:re-ye},{x:ne+se,y:re},{x:ne+5*se/6,y:re+ye},{x:ne+2*se/3,y:re+ye}],F.label.x=F.x,F.label.y=F.y}})}function q(E,Y){return p.mapValues(p.pick(E,Y),Number)}function P(E){var Y={};return E&&Object.entries(E).forEach(([F,J])=>{typeof F=="string"&&(F=F.toLowerCase()),Y[F]=J}),Y}return tp}var np,D1;function n5(){if(D1)return np;D1=1;let e=Tt(),n=Yn().Graph;np={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),s=new n({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{s.setNode(u,{label:u}),s.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>s.setEdge(u.v,u.w,{},u.name)),a.forEach((u,f)=>{let h="layer"+f;s.setNode(h,{rank:"same"}),u.reduce((d,m)=>(s.setEdge(d,m,{style:"invis"}),m))}),s}return np}var rp,R1;function r5(){return R1||(R1=1,rp="1.1.8"),rp}var ip,L1;function i5(){return L1||(L1=1,ip={graphlib:Yn(),layout:t5(),debug:n5(),util:{time:Tt().time,notime:Tt().notime},version:r5()}),ip}var l5=i5();const H1=Uo(l5),So=200,Zl=56,B1=20,q1=40,a5=20,U1=12;function o5(e,n,r,l,a,s,u){const f=[],h=[],d=new Set,m=new Set,p=new Map;for(const v of r)for(const w of v.agents)m.add(w),p.set(w,v.name);for(const v of r){const w=a[v.name],k=v.agents.length,_=So+B1*2,S=q1+k*Zl+(k-1)*U1+a5;f.push({id:v.name,type:"groupNode",position:{x:0,y:0},data:{label:v.name,type:"parallel_group",status:(w==null?void 0:w.status)||"pending",groupName:v.name,progress:s[v.name]},style:{width:_,height:S}});for(let T=0;T$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}for(const v of n)h.push({id:`${v.from}->${v.to}`,source:v.from,target:v.to,type:"animatedEdge",data:{when:v.when},animated:!1});return s5(f,h),{nodes:f,edges:h}}function s5(e,n){var l,a,s,u;const r=new H1.graphlib.Graph;r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const f of e){if(f.parentId)continue;const h=f.type==="groupNode",d=h&&((l=f.style)==null?void 0:l.width)||So,m=h&&((a=f.style)==null?void 0:a.height)||Zl;r.setNode(f.id,{width:d,height:m})}for(const f of n)r.hasNode(f.source)&&r.hasNode(f.target)&&r.setEdge(f.source,f.target);H1.layout(r);for(const f of e){if(f.parentId)continue;const h=r.node(f.id);if(!h)continue;const d=f.type==="groupNode",m=d&&((s=f.style)==null?void 0:s.width)||So,p=d&&((u=f.style)==null?void 0:u.height)||Zl;f.position={x:h.x-m/2,y:h.y-p/2}}}const Pe={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},u5=70,I1=90;function Nc({data:e,children:n}){const[r,l]=V.useState(!1),a=V.useRef(null),s=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),f=Pe[e.status]||Pe.pending;return b.jsxs("div",{className:"relative",onMouseEnter:s,onMouseLeave:u,children:[n,r&&b.jsxs("div",{className:Be("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[b.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),b.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:f}}),b.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&b.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:Qt(e.elapsed)})]}),e.model&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),b.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Vn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&b.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Vn(e.inputTokens),"↑ ",Vn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:mi(e.costUsd)})]}),e.exitCode!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),b.jsx("span",{className:Be("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&b.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),b.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const c5=V.memo(function({data:n,id:r,selected:l}){var L;const a=n,s=Wi(),f=((L=s[r])==null?void 0:L.status)||a.status||"pending",h=Pe[f]||Pe.pending,d=s[r],m=d==null?void 0:d.elapsed,p=d==null?void 0:d.model,y=d==null?void 0:d.tokens,v=d==null?void 0:d.input_tokens,w=d==null?void 0:d.output_tokens,k=d==null?void 0:d.cost_usd,_=d==null?void 0:d.iteration,S=d==null?void 0:d.error_type,T=d==null?void 0:d.error_message,N=d==null?void 0:d.context_pct,A=f5(r,f),R=d5(f),z=(()=>{if(f==="failed"&&T)return{text:T.length>40?T.slice(0,37)+"...":T,className:"text-red-400"};if(f==="running")return{text:A,className:"text-[var(--text-muted)]"};if(f==="completed"){const D=[];return m!=null&&D.push(Qt(m)),y!=null&&D.push(`${Vn(y)} tok`),k!=null&&D.push(mi(k)),{text:D.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,elapsed:m,model:p,tokens:y,inputTokens:v,outputTokens:w,costUsd:k,iteration:_,errorType:S,errorMessage:T},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",R),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(tN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),_!=null&&_>1&&b.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${h}25`,color:h},children:["x",_]})]}),z.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",z.className),children:z.text})]}),N!=null&&b.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:b.jsx("div",{className:Be("h-full transition-all duration-500",N>=I1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(N,100)}%`,backgroundColor:N>=I1?"#ef4444":N>=u5?"#f59e0b":"#22c55e"}})})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function f5(e,n){var h;const r=(h=Wi()[e])==null?void 0:h.startedAt,l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const p=r??a??0;u(Qt((a??p)-p));return}const d=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-d)/1e3;u(Qt(p))};return m(),f.current=setInterval(m,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function d5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const h5=V.memo(function({data:n,id:r,selected:l}){var S;const a=n,s=Wi(),f=((S=s[r])==null?void 0:S.status)||a.status||"pending",h=Pe[f]||Pe.pending,d=s[r],m=d==null?void 0:d.elapsed,p=d==null?void 0:d.exit_code,y=d==null?void 0:d.error_type,v=d==null?void 0:d.error_message,w=p5(r,f),k=m5(f),_=(()=>{if(f==="failed"&&v)return{text:v.length>40?v.slice(0,37)+"...":v,className:"text-red-400"};if(f==="running")return{text:w,className:"text-[var(--text-muted)]"};if(f==="completed"){const T=[];return m!=null&&T.push(Qt(m)),p!=null&&T.push(`exit ${p}`),{text:T.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,elapsed:m,exitCode:p,errorType:y,errorMessage:v},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",k),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(gN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),_.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",_.className),children:_.text})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function p5(e,n){var h;const r=(h=Wi()[e])==null?void 0:h.startedAt,l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const p=r??a??0;u(Qt((a??p)-p));return}const d=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-d)/1e3;u(Qt(p))};return m(),f.current=setInterval(m,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function m5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const g5=V.memo(function({data:n,id:r,selected:l}){var p,y;const a=n,s=Wi(),f=((p=s[r])==null?void 0:p.status)||a.status||"pending",h=Pe[f]||Pe.pending,d=(y=s[r])==null?void 0:y.selected_option,m=y5(f);return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:f,selectedOption:d},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:h},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="waiting"&&"animate-pulse"),style:{backgroundColor:`${h}20`},children:b.jsx(mN,{className:"w-3.5 h-3.5",style:{color:h}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),f==="waiting"&&b.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),f==="completed"&&d&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:d})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function y5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const x5=V.memo(function({data:n,id:r,selected:l}){var _;const a=n,u=a.type==="for_each_group"?dN:uN,f=a.progress,m=((_=Wi()[r])==null?void 0:_.status)||a.status||"pending",p=Pe[m]||Pe.pending,y=v5(m),v=f?`${f.completed+f.failed}/${f.total}${f.failed>0?` (${f.failed} failed)`:""}`:null,w=f&&f.total>0?(f.completed+f.failed)/f.total*100:0,k=f!=null&&f.failed>0;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsxs("div",{className:Be("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",m==="running"&&"shadow-[0_0_16px_var(--running-glow)]",y),style:{borderColor:p,minHeight:"100%"},children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(u,{className:"w-3.5 h-3.5",style:{color:p}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),v&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:v}),f&&f.total>0&&m==="running"&&b.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${w}%`,backgroundColor:k?"var(--failed)":"var(--completed)"}})})]}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function v5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const b5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=he(_=>{var S;return(S=_.nodes[r])==null?void 0:S.status})||a.status||"pending",f=Pe[u]||Pe.pending,h=he(_=>{var S;return(S=_.nodes[r])==null?void 0:S.elapsed}),d=he(_=>{var S;return(S=_.nodes[r])==null?void 0:S.error_message}),m=he(_=>_.navigateIntoSubworkflow),p=GS(),y=p.some(_=>_.parentAgent===r),v=p.find(_=>_.parentAgent===r),w=v==null?void 0:v.workflowName,k=(()=>{if(u==="failed"&&d)return{text:d.length>35?d.slice(0,32)+"...":d,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const _=[];return w&&_.push(w),h!=null&&_.push(`${h.toFixed(1)}s`),{text:_.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(Nc,{data:{status:u,elapsed:h,errorType:void 0,errorMessage:d,iteration:void 0},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:f,borderStyle:"dashed"},onDoubleClick:_=>{y&&(_.stopPropagation(),m(r))},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx(Xp,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("div",{className:"flex items-center gap-1",children:b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),k.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",k.className),children:k.text})]}),y&&b.jsx(jr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),w5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=a==="completed",u=a==="failed",f=!s&&!u,h=s?Pe.completed:u?Pe.failed:Pe.pending;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",s?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:h},children:s?b.jsx(Vi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?b.jsx(Lb,{className:"w-3.5 h-3.5 text-white",fill:"white"}):b.jsx(Vi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:f?Pe.pending:h}})})]})}),S5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=Pe[a]||Pe.pending,u=a==="running"||a==="completed";return b.jsxs(b.Fragment,{children:[b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:s},children:b.jsx(Fp,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":s}})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),_5=V.memo(function({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,source:h,target:d,data:m}){const p=bM(),y=V.useMemo(()=>p.find(I=>I.from===h&&I.to===d),[p,h,d]),[v,w,k]=cm({sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f}),_=m==null?void 0:m.when,S=!!_,T=(y==null?void 0:y.state)==="taken",N=(y==null?void 0:y.state)==="highlighted",A=(y==null?void 0:y.state)==="failed";let R="var(--edge-color)",z=2,L;A?(R="var(--failed)",z=3):T?(R="var(--edge-taken)",z=3):N&&(R="var(--edge-active)",z=3),S&&!T&&!N&&!A&&(L="6 3");const D=A?"failed":T?"taken":N?"active":"default";return b.jsxs(b.Fragment,{children:[b.jsx(Qo,{id:n,path:v,style:{stroke:R,strokeWidth:z,strokeDasharray:L,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${D})`}),S&&b.jsx(Vj,{children:b.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${k}px)`,pointerEvents:"all"},children:b.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:A?"var(--failed)":T?"var(--edge-taken)":"var(--surface)",color:A||T?"var(--bg)":"var(--text-muted)",border:`1px solid ${A?"var(--failed)":T?"var(--edge-taken)":"var(--border)"}`},title:_,children:_})})}),T&&b.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:b.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:v})}),A&&b.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:b.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:v})})]})});function E5(){const e=he(u=>u.workflowStatus),n=he(u=>u.workflowFailure),r=he(u=>u.workflowFailedAgent),l=he(u=>u.selectNode);if(e!=="failed"||!n)return null;const a=n.message||n.error_type||"Unknown error",s=n.error_type==="TimeoutError";return b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[b.jsx(Hb,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsxs("div",{className:"flex flex-col min-w-0",children:[b.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),b.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),s&&n.current_agent&&b.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",n.current_agent]}),n.checkpoint_path&&b.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:n.checkpoint_path,children:["Checkpoint: ",n.checkpoint_path.split("/").pop()]})]}),r&&b.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[b.jsx(aN,{className:"w-3 h-3"}),"View"]})]})})}function N5(){const[e,n]=V.useState(!1),r=he(h=>h.workflowStatus),l=he(h=>h.totalCost),a=he(h=>h.totalTokens),s=he(h=>h.agentsCompleted),u=he(h=>h.agentsTotal),f=qb();return r!=="completed"||e?null:b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[b.jsx(rN,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),b.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[b.jsx("span",{children:f}),u>0&&b.jsxs("span",{children:[s,"/",u," agents"]}),a>0&&b.jsxs("span",{children:[Vn(a)," tok"]}),l>0&&b.jsx("span",{children:mi(l)})]}),b.jsx("button",{onClick:()=>n(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:b.jsx(ca,{className:"w-3.5 h-3.5"})})]})})}const k5={agentNode:c5,scriptNode:h5,gateNode:g5,groupNode:x5,workflowNode:b5,endNode:w5,startNode:S5},C5={animatedEdge:_5},T5={type:"animatedEdge"};function z5(){return b.jsx("svg",{style:{position:"absolute",width:0,height:0},children:b.jsxs("defs",{children:[b.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),b.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),b.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),b.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function A5(){const e=wM(),n=he(G=>G.viewContextPath),r=he(G=>G.selectNode),l=he(G=>G.selectedNode),a=he(G=>G.workflowStatus),s=he(G=>G.wsStatus),u=he(G=>G.workflowFailedAgent),f=he(G=>G.navigateIntoSubworkflow),{agents:h,routes:d,parallelGroups:m,forEachGroups:p,nodes:y,groupProgress:v,entryPoint:w,subworkflowContexts:k}=e,[_,S,T]=Gj([]),[N,A,R]=Yj([]),z=V.useRef(!1),L=V.useRef(""),D=JSON.stringify(n);V.useEffect(()=>{if(h.length===0){L.current!==D&&(z.current=!1,L.current=D);return}if(L.current!==D&&(z.current=!1,L.current=D),z.current)return;z.current=!0;const{nodes:G,edges:j}=o5(h,d,m,p,y,v,w);S(G),A(j)},[h,d,m,p,y,v,w,S,A,D]),V.useEffect(()=>{z.current&&S(G=>G.map(j=>{const $=y[j.id];if(!$)return j;const Q=$.status||"pending",K=j.data.status;if(Q!==K){const M={...j.data,status:Q};return j.data.groupName&&v[j.data.groupName]&&(M.progress=v[j.data.groupName]),{...j,data:M}}if(j.data.groupName&&v[j.data.groupName]){const M=j.data.progress,q=v[j.data.groupName];if(q&&(!M||M.completed!==q.completed||M.failed!==q.failed))return{...j,data:{...j.data,progress:q}}}return j}))},[y,v,S]);const I=V.useCallback((G,j)=>{j.type==="groupNode"&&j.data.type!=="for_each_group"||r(j.id)},[r]),X=V.useCallback((G,j)=>{k.some(Q=>Q.parentAgent===j.id)&&f(j.id)},[k,f]),B=V.useCallback(()=>{r(null)},[r]),U=V.useCallback(G=>{var $;const j=(($=G.data)==null?void 0:$.status)||"pending";return Pe[j]||Pe.pending},[]);V.useEffect(()=>{S(G=>G.map(j=>({...j,selected:j.id===l})))},[l,S]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const ee=a==="pending"&&h.length===0,H=(()=>{switch(s){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return b.jsxs("div",{className:"w-full h-full relative",children:[b.jsx(z5,{}),b.jsx(E5,{}),b.jsx(N5,{}),ee&&b.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[b.jsxs("div",{className:"relative mb-3",children:[b.jsx(vN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),b.jsx(na,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),b.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:H})]}),b.jsxs(Uj,{nodes:_,edges:N,onNodesChange:T,onEdgesChange:R,onNodeClick:I,onNodeDoubleClick:X,onPaneClick:B,nodeTypes:k5,edgeTypes:C5,defaultEdgeOptions:T5,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[b.jsx(Qj,{variant:zr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),b.jsx(mM,{nodeColor:U,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),b.jsx(nM,{showInteractive:!1,children:b.jsx(j5,{})}),b.jsx(M5,{})]})]})}function j5(){const{fitView:e}=Fo(),n=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return b.jsx("button",{onClick:n,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:b.jsx(cN,{className:"w-3.5 h-3.5"})})}function M5(){const{fitView:e}=Fo();return V.useEffect(()=>{const n=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e]),null}function el({items:e}){const n=e.filter(r=>r.value!=null&&r.value!=="");return n.length===0?null:b.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:n.map(({label:r,value:l})=>b.jsxs("div",{className:"contents",children:[b.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),b.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function ZS(e){const n=[];return e.elapsed!=null&&n.push({label:"Elapsed",value:Qt(e.elapsed)}),e.model&&n.push({label:"Model",value:e.model}),e.tokens!=null&&n.push({label:"Tokens",value:Vn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&n.push({label:"In / Out",value:`${Vn(e.input_tokens)} / ${Vn(e.output_tokens)}`}),e.cost_usd!=null&&n.push({label:"Cost",value:mi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&n.push({label:"Context",value:jN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&n.push({label:"Iteration",value:e.iteration}),e.error_type&&n.push({label:"Error",value:e.error_type}),e.error_message&&n.push({label:"Message",value:e.error_message}),n}function Ki({output:e,title:n="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,s]=V.useState(r),[u,f]=V.useState(!1),h=Bb(e);if(!h)return null;const d=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(h),f(!0),setTimeout(()=>f(!1),2e3)};return b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(jr,{className:"w-3 h-3"}),n]}),a&&b.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}):b.jsx(Ob,{className:"w-3 h-3"})})]}),a&&b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:d?b.jsx(O5,{text:h}):h})]})}function O5({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function xm({activity:e,defaultExpanded:n=!0}){const[r,l]=V.useState(n),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(jr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&b.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((s,u)=>b.jsx(D5,{entry:s},u))})]})}function D5({entry:e}){const n={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return b.jsxs("div",{className:Be("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[b.jsxs("div",{className:"flex items-start gap-1.5",children:[b.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),b.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),b.jsx("span",{className:Be("break-words",n[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&b.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function R5({node:e}){const n=e.status,r=Pe[n]||Pe.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?b.jsx(V1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:n,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):b.jsxs(b.Fragment,{children:[b.jsx(el,{items:ZS(e)}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),b.jsx(xm,{activity:e.activity,defaultExpanded:n!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>b.jsx(V1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:n,snapshot:a},a.iteration))]})}function V1({label:e,defaultExpanded:n,snapshot:r,status:l}){const[a,s]=V.useState(n);return b.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?b.jsx(Ji,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(jr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:L5(r.elapsed)})]}),a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[b.jsx(el,{items:ZS(r)}),r.prompt&&b.jsx(Ki,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),b.jsx(xm,{activity:r.activity,defaultExpanded:n&&l!=="completed"}),r.output!=null&&b.jsx(Ki,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&b.jsxs("div",{className:"text-xs text-red-400",children:[b.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function L5(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function H5({node:e}){const n=e.status,r=Pe[n]||Pe.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Qt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` --- stderr --- -`:"")+e.stderr),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Script"})]}),b.jsx(el,{items:l}),a&&b.jsx(Ki,{output:a,title:"Output"})]})}function L5(e,n){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const H5=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,B5=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,q5={};function G1(e,n){return(q5.jsx?B5:H5).test(e)}const U5=/[ \t\n\f\r]/g;function I5(e){return typeof e=="object"?e.type==="text"?Y1(e.value):!1:Y1(e)}function Y1(e){return e.replace(U5,"")===""}class Ko{constructor(n,r,l){this.normal=r,this.property=n,l&&(this.space=l)}}Ko.prototype.normal={};Ko.prototype.property={};Ko.prototype.space=void 0;function QS(e,n){const r={},l={};for(const a of e)Object.assign(r,a.property),Object.assign(l,a.normal);return new Ko(r,l,n)}function Hp(e){return e.toLowerCase()}class sn{constructor(n,r){this.attribute=r,this.property=n}}sn.prototype.attribute="";sn.prototype.booleanish=!1;sn.prototype.boolean=!1;sn.prototype.commaOrSpaceSeparated=!1;sn.prototype.commaSeparated=!1;sn.prototype.defined=!1;sn.prototype.mustUseProperty=!1;sn.prototype.number=!1;sn.prototype.overloadedBoolean=!1;sn.prototype.property="";sn.prototype.spaceSeparated=!1;sn.prototype.space=void 0;let V5=0;const Oe=tl(),Ct=tl(),Bp=tl(),me=tl(),ot=tl(),ea=tl(),yn=tl();function tl(){return 2**++V5}const qp=Object.freeze(Object.defineProperty({__proto__:null,boolean:Oe,booleanish:Ct,commaOrSpaceSeparated:yn,commaSeparated:ea,number:me,overloadedBoolean:Bp,spaceSeparated:ot},Symbol.toStringTag,{value:"Module"})),lp=Object.keys(qp);class vm extends sn{constructor(n,r,l,a){let s=-1;if(super(n,r),$1(this,"space",a),typeof l=="number")for(;++s4&&r.slice(0,4)==="data"&&X5.test(n)){if(n.charAt(4)==="-"){const s=n.slice(5).replace(P1,Z5);l="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=n.slice(4);if(!P1.test(s)){let u=s.replace(P5,Q5);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}a=vm}return new a(l,n)}function Q5(e){return"-"+e.toLowerCase()}function Z5(e){return e.charAt(1).toUpperCase()}const K5=QS([ZS,G5,WS,e_,t_],"html"),bm=QS([ZS,Y5,WS,e_,t_],"svg");function J5(e){return e.join(" ").trim()}var Gl={},ap,X1;function W5(){if(X1)return ap;X1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,f=/^\s+|\s+$/g,h=` -`,d="/",m="*",p="",y="comment",v="declaration";function w(S,_){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];_=_||{};var T=1,E=1;function z(R){var G=R.match(n);G&&(T+=G.length);var M=R.lastIndexOf(h);E=~M?R.length-M:E+R.length}function I(){var R={line:T,column:E};return function(G){return G.position=new A(R),U(),G}}function A(R){this.start=R,this.end={line:T,column:E},this.source=_.source}A.prototype.content=S;function L(R){var G=new Error(_.source+":"+T+":"+E+": "+R);if(G.reason=R,G.filename=_.source,G.line=T,G.column=E,G.source=S,!_.silent)throw G}function D(R){var G=R.exec(S);if(G){var M=G[0];return z(M),S=S.slice(M.length),G}}function U(){D(r)}function X(R){var G;for(R=R||[];G=H();)G!==!1&&R.push(G);return R}function H(){var R=I();if(!(d!=S.charAt(0)||m!=S.charAt(1))){for(var G=2;p!=S.charAt(G)&&(m!=S.charAt(G)||d!=S.charAt(G+1));)++G;if(G+=2,p===S.charAt(G-1))return L("End of comment missing");var M=S.slice(2,G-2);return E+=2,z(M),S=S.slice(G),E+=2,R({type:y,comment:M})}}function q(){var R=I(),G=D(l);if(G){if(H(),!D(a))return L("property missing ':'");var M=D(s),$=R({type:v,property:k(G[0].replace(e,p)),value:M?k(M[0].replace(e,p)):p});return D(u),$}}function ee(){var R=[];X(R);for(var G;G=q();)G!==!1&&(R.push(G),X(R));return R}return U(),ee()}function k(S){return S?S.replace(f,p):p}return ap=w,ap}var F1;function e4(){if(F1)return Gl;F1=1;var e=Gl&&Gl.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.default=r;const n=e(W5());function r(l,a){let s=null;if(!l||typeof l!="string")return s;const u=(0,n.default)(l),f=typeof a=="function";return u.forEach(h=>{if(h.type!=="declaration")return;const{property:d,value:m}=h;f?a(d,m,h):m&&(s=s||{},s[d]=m)}),s}return Gl}var co={},Q1;function t4(){if(Q1)return co;Q1=1,Object.defineProperty(co,"__esModule",{value:!0}),co.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,l=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,s=function(d){return!d||r.test(d)||e.test(d)},u=function(d,m){return m.toUpperCase()},f=function(d,m){return"".concat(m,"-")},h=function(d,m){return m===void 0&&(m={}),s(d)?d:(d=d.toLowerCase(),m.reactCompat?d=d.replace(a,f):d=d.replace(l,f),d.replace(n,u))};return co.camelCase=h,co}var fo,Z1;function n4(){if(Z1)return fo;Z1=1;var e=fo&&fo.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},n=e(e4()),r=t4();function l(a,s){var u={};return!a||typeof a!="string"||(0,n.default)(a,function(f,h){f&&h&&(u[(0,r.camelCase)(f,s)]=h)}),u}return l.default=l,fo=l,fo}var r4=n4();const i4=qo(r4),n_=r_("end"),wm=r_("start");function r_(e){return n;function n(r){const l=r&&r.position&&r.position[e]||{};if(typeof l.line=="number"&&l.line>0&&typeof l.column=="number"&&l.column>0)return{line:l.line,column:l.column,offset:typeof l.offset=="number"&&l.offset>-1?l.offset:void 0}}}function l4(e){const n=wm(e),r=n_(e);if(n&&r)return{start:n,end:r}}function _o(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?K1(e.position):"start"in e||"end"in e?K1(e):"line"in e||"column"in e?Up(e):""}function Up(e){return J1(e&&e.line)+":"+J1(e&&e.column)}function K1(e){return Up(e&&e.start)+"-"+Up(e&&e.end)}function J1(e){return e&&typeof e=="number"?e:1}class Pt extends Error{constructor(n,r,l){super(),typeof r=="string"&&(l=r,r=void 0);let a="",s={},u=!1;if(r&&("line"in r&&"column"in r?s={place:r}:"start"in r&&"end"in r?s={place:r}:"type"in r?s={ancestors:[r],place:r.position}:s={...r}),typeof n=="string"?a=n:!s.cause&&n&&(u=!0,a=n.message,s.cause=n),!s.ruleId&&!s.source&&typeof l=="string"){const h=l.indexOf(":");h===-1?s.ruleId=l:(s.source=l.slice(0,h),s.ruleId=l.slice(h+1))}if(!s.place&&s.ancestors&&s.ancestors){const h=s.ancestors[s.ancestors.length-1];h&&(s.place=h.position)}const f=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=f?f.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=f?f.line:void 0,this.name=_o(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=u&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Pt.prototype.file="";Pt.prototype.name="";Pt.prototype.reason="";Pt.prototype.message="";Pt.prototype.stack="";Pt.prototype.column=void 0;Pt.prototype.line=void 0;Pt.prototype.ancestors=void 0;Pt.prototype.cause=void 0;Pt.prototype.fatal=void 0;Pt.prototype.place=void 0;Pt.prototype.ruleId=void 0;Pt.prototype.source=void 0;const Sm={}.hasOwnProperty,a4=new Map,o4=/[A-Z]/g,s4=new Set(["table","tbody","thead","tfoot","tr"]),u4=new Set(["td","th"]),i_="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function c4(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=n.filePath||void 0;let l;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");l=x4(r,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");l=y4(r,n.jsx,n.jsxs)}const a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:l,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?bm:K5,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},s=l_(a,e,void 0);return s&&typeof s!="string"?s:a.create(e,a.Fragment,{children:s||void 0},void 0)}function l_(e,n,r){if(n.type==="element")return f4(e,n,r);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return d4(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return p4(e,n,r);if(n.type==="mdxjsEsm")return h4(e,n);if(n.type==="root")return m4(e,n,r);if(n.type==="text")return g4(e,n)}function f4(e,n,r){const l=e.schema;let a=l;n.tagName.toLowerCase()==="svg"&&l.space==="html"&&(a=bm,e.schema=a),e.ancestors.push(n);const s=o_(e,n.tagName,!1),u=v4(e,n);let f=Em(e,n);return s4.has(n.tagName)&&(f=f.filter(function(h){return typeof h=="string"?!I5(h):!0})),a_(e,u,s,n),_m(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function d4(e,n){if(n.data&&n.data.estree&&e.evaluater){const l=n.data.estree.body[0];return l.type,e.evaluater.evaluateExpression(l.expression)}Bo(e,n.position)}function h4(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);Bo(e,n.position)}function p4(e,n,r){const l=e.schema;let a=l;n.name==="svg"&&l.space==="html"&&(a=bm,e.schema=a),e.ancestors.push(n);const s=n.name===null?e.Fragment:o_(e,n.name,!0),u=b4(e,n),f=Em(e,n);return a_(e,u,s,n),_m(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function m4(e,n,r){const l={};return _m(l,Em(e,n)),e.create(n,e.Fragment,l,r)}function g4(e,n){return n.value}function a_(e,n,r,l){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(n.node=l)}function _m(e,n){if(n.length>0){const r=n.length>1?n:n[0];r&&(e.children=r)}}function y4(e,n,r){return l;function l(a,s,u,f){const d=Array.isArray(u.children)?r:n;return f?d(s,u,f):d(s,u)}}function x4(e,n){return r;function r(l,a,s,u){const f=Array.isArray(s.children),h=wm(l);return n(a,s,u,f,{columnNumber:h?h.column-1:void 0,fileName:e,lineNumber:h?h.line:void 0},void 0)}}function v4(e,n){const r={};let l,a;for(a in n.properties)if(a!=="children"&&Sm.call(n.properties,a)){const s=w4(e,a,n.properties[a]);if(s){const[u,f]=s;e.tableCellAlignToStyle&&u==="align"&&typeof f=="string"&&u4.has(n.tagName)?l=f:r[u]=f}}if(l){const s=r.style||(r.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=l}return r}function b4(e,n){const r={};for(const l of n.attributes)if(l.type==="mdxJsxExpressionAttribute")if(l.data&&l.data.estree&&e.evaluater){const s=l.data.estree.body[0];s.type;const u=s.expression;u.type;const f=u.properties[0];f.type,Object.assign(r,e.evaluater.evaluateExpression(f.argument))}else Bo(e,n.position);else{const a=l.name;let s;if(l.value&&typeof l.value=="object")if(l.value.data&&l.value.data.estree&&e.evaluater){const f=l.value.data.estree.body[0];f.type,s=e.evaluater.evaluateExpression(f.expression)}else Bo(e,n.position);else s=l.value===null?!0:l.value;r[a]=s}return r}function Em(e,n){const r=[];let l=-1;const a=e.passKeys?new Map:a4;for(;++la?0:a+n:n=n>a?a:n,r=r>0?r:0,l.length<1e4)u=Array.from(l),u.unshift(n,r),e.splice(...u);else for(r&&e.splice(n,r);s0?(rr(e,e.length,0,n),e):n}const tb={}.hasOwnProperty;function z4(e){const n={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function ta(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const er=gi(/[A-Za-z]/),bn=gi(/[\dA-Za-z]/),j4=gi(/[#-'*+\--9=?A-Z^-~]/);function Ip(e){return e!==null&&(e<32||e===127)}const Vp=gi(/\d/),O4=gi(/[\dA-Fa-f]/),D4=gi(/[!-/:-@[-`{-~]/);function Te(e){return e!==null&&e<-2}function on(e){return e!==null&&(e<0||e===32)}function Ke(e){return e===-2||e===-1||e===32}const R4=gi(new RegExp("\\p{P}|\\p{S}","u")),L4=gi(/\s/);function gi(e){return n;function n(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function ca(e){const n=[];let r=-1,l=0,a=0;for(;++r55295&&s<57344){const f=e.charCodeAt(r+1);s<56320&&f>56319&&f<57344?(u=String.fromCharCode(s,f),a=1):u="�"}else u=String.fromCharCode(s);u&&(n.push(e.slice(l,r),encodeURIComponent(u)),l=r+a+1,u=""),a&&(r+=a,a=0)}return n.join("")+e.slice(l)}function st(e,n,r,l){const a=l?l-1:Number.POSITIVE_INFINITY;let s=0;return u;function u(h){return Ke(h)?(e.enter(r),f(h)):n(h)}function f(h){return Ke(h)&&s++u))return;const L=n.events.length;let D=L,U,X;for(;D--;)if(n.events[D][0]==="exit"&&n.events[D][1].type==="chunkFlow"){if(U){X=n.events[D][1].end;break}U=!0}for(_(l),A=L;AE;){const I=r[z];n.containerState=I[1],I[0].exit.call(n,e)}r.length=E}function T(){a.write([null]),s=void 0,a=void 0,n.containerState._closeFlow=void 0}}function I4(e,n,r){return st(e,e.attempt(this.parser.constructs.document,n,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function rb(e){if(e===null||on(e)||L4(e))return 1;if(R4(e))return 2}function km(e,n,r){const l=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const p={...e[l][1].end},y={...e[r][1].start};ib(p,-h),ib(y,h),u={type:h>1?"strongSequence":"emphasisSequence",start:p,end:{...e[l][1].end}},f={type:h>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:y},s={type:h>1?"strongText":"emphasisText",start:{...e[l][1].end},end:{...e[r][1].start}},a={type:h>1?"strong":"emphasis",start:{...u.start},end:{...f.end}},e[l][1].end={...u.start},e[r][1].start={...f.end},d=[],e[l][1].end.offset-e[l][1].start.offset&&(d=Mn(d,[["enter",e[l][1],n],["exit",e[l][1],n]])),d=Mn(d,[["enter",a,n],["enter",u,n],["exit",u,n],["enter",s,n]]),d=Mn(d,km(n.parser.constructs.insideSpan.null,e.slice(l+1,r),n)),d=Mn(d,[["exit",s,n],["enter",f,n],["exit",f,n],["exit",a,n]]),e[r][1].end.offset-e[r][1].start.offset?(m=2,d=Mn(d,[["enter",e[r][1],n],["exit",e[r][1],n]])):m=0,rr(e,l-1,r-l+3,d),r=l+d.length-m-2;break}}for(r=-1;++r0&&Ke(A)?st(e,T,"linePrefix",s+1)(A):T(A)}function T(A){return A===null||Te(A)?e.check(lb,k,z)(A):(e.enter("codeFlowValue"),E(A))}function E(A){return A===null||Te(A)?(e.exit("codeFlowValue"),T(A)):(e.consume(A),E)}function z(A){return e.exit("codeFenced"),n(A)}function I(A,L,D){let U=0;return X;function X(G){return A.enter("lineEnding"),A.consume(G),A.exit("lineEnding"),H}function H(G){return A.enter("codeFencedFence"),Ke(G)?st(A,q,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(G):q(G)}function q(G){return G===f?(A.enter("codeFencedFenceSequence"),ee(G)):D(G)}function ee(G){return G===f?(U++,A.consume(G),ee):U>=u?(A.exit("codeFencedFenceSequence"),Ke(G)?st(A,R,"whitespace")(G):R(G)):D(G)}function R(G){return G===null||Te(G)?(A.exit("codeFencedFence"),L(G)):D(G)}}}function W4(e,n,r){const l=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}const sp={name:"codeIndented",tokenize:tO},eO={partial:!0,tokenize:nO};function tO(e,n,r){const l=this;return a;function a(d){return e.enter("codeIndented"),st(e,s,"linePrefix",5)(d)}function s(d){const m=l.events[l.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?u(d):r(d)}function u(d){return d===null?h(d):Te(d)?e.attempt(eO,u,h)(d):(e.enter("codeFlowValue"),f(d))}function f(d){return d===null||Te(d)?(e.exit("codeFlowValue"),u(d)):(e.consume(d),f)}function h(d){return e.exit("codeIndented"),n(d)}}function nO(e,n,r){const l=this;return a;function a(u){return l.parser.lazy[l.now().line]?r(u):Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):st(e,s,"linePrefix",5)(u)}function s(u){const f=l.events[l.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?n(u):Te(u)?a(u):r(u)}}const rO={name:"codeText",previous:lO,resolve:iO,tokenize:aO};function iO(e){let n=e.length-4,r=3,l,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(l=r;++l=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return nthis.left.length?this.right.slice(this.right.length-l+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-l+this.left.length).reverse())}splice(n,r,l){const a=r||0;this.setCursor(Math.trunc(n));const s=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return l&&ho(this.left,l),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),ho(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),ho(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n=4?n(u):e.interrupt(l.parser.constructs.flow,r,n)(u)}}function p_(e,n,r,l,a,s,u,f,h){const d=h||Number.POSITIVE_INFINITY;let m=0;return p;function p(_){return _===60?(e.enter(l),e.enter(a),e.enter(s),e.consume(_),e.exit(s),y):_===null||_===32||_===41||Ip(_)?r(_):(e.enter(l),e.enter(u),e.enter(f),e.enter("chunkString",{contentType:"string"}),k(_))}function y(_){return _===62?(e.enter(s),e.consume(_),e.exit(s),e.exit(a),e.exit(l),n):(e.enter(f),e.enter("chunkString",{contentType:"string"}),v(_))}function v(_){return _===62?(e.exit("chunkString"),e.exit(f),y(_)):_===null||_===60||Te(_)?r(_):(e.consume(_),_===92?w:v)}function w(_){return _===60||_===62||_===92?(e.consume(_),v):v(_)}function k(_){return!m&&(_===null||_===41||on(_))?(e.exit("chunkString"),e.exit(f),e.exit(u),e.exit(l),n(_)):m999||v===null||v===91||v===93&&!h||v===94&&!f&&"_hiddenFootnoteSupport"in u.parser.constructs?r(v):v===93?(e.exit(s),e.enter(a),e.consume(v),e.exit(a),e.exit(l),n):Te(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===null||v===91||v===93||Te(v)||f++>999?(e.exit("chunkString"),m(v)):(e.consume(v),h||(h=!Ke(v)),v===92?y:p)}function y(v){return v===91||v===92||v===93?(e.consume(v),f++,p):p(v)}}function g_(e,n,r,l,a,s){let u;return f;function f(y){return y===34||y===39||y===40?(e.enter(l),e.enter(a),e.consume(y),e.exit(a),u=y===40?41:y,h):r(y)}function h(y){return y===u?(e.enter(a),e.consume(y),e.exit(a),e.exit(l),n):(e.enter(s),d(y))}function d(y){return y===u?(e.exit(s),h(u)):y===null?r(y):Te(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),st(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===u||y===null||Te(y)?(e.exit("chunkString"),d(y)):(e.consume(y),y===92?p:m)}function p(y){return y===u||y===92?(e.consume(y),m):m(y)}}function Eo(e,n){let r;return l;function l(a){return Te(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,l):Ke(a)?st(e,l,r?"linePrefix":"lineSuffix")(a):n(a)}}const pO={name:"definition",tokenize:gO},mO={partial:!0,tokenize:yO};function gO(e,n,r){const l=this;let a;return s;function s(v){return e.enter("definition"),u(v)}function u(v){return m_.call(l,e,f,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(v)}function f(v){return a=ta(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),v===58?(e.enter("definitionMarker"),e.consume(v),e.exit("definitionMarker"),h):r(v)}function h(v){return on(v)?Eo(e,d)(v):d(v)}function d(v){return p_(e,m,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(v)}function m(v){return e.attempt(mO,p,p)(v)}function p(v){return Ke(v)?st(e,y,"whitespace")(v):y(v)}function y(v){return v===null||Te(v)?(e.exit("definition"),l.parser.defined.push(a),n(v)):r(v)}}function yO(e,n,r){return l;function l(f){return on(f)?Eo(e,a)(f):r(f)}function a(f){return g_(e,s,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(f)}function s(f){return Ke(f)?st(e,u,"whitespace")(f):u(f)}function u(f){return f===null||Te(f)?n(f):r(f)}}const xO={name:"hardBreakEscape",tokenize:vO};function vO(e,n,r){return l;function l(s){return e.enter("hardBreakEscape"),e.consume(s),a}function a(s){return Te(s)?(e.exit("hardBreakEscape"),n(s)):r(s)}}const bO={name:"headingAtx",resolve:wO,tokenize:SO};function wO(e,n){let r=e.length-2,l=3,a,s;return e[l][1].type==="whitespace"&&(l+=2),r-2>l&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(l===r-1||r-4>l&&e[r-2][1].type==="whitespace")&&(r-=l+1===r?2:4),r>l&&(a={type:"atxHeadingText",start:e[l][1].start,end:e[r][1].end},s={type:"chunkText",start:e[l][1].start,end:e[r][1].end,contentType:"text"},rr(e,l,r-l+1,[["enter",a,n],["enter",s,n],["exit",s,n],["exit",a,n]])),e}function SO(e,n,r){let l=0;return a;function a(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),u(m)}function u(m){return m===35&&l++<6?(e.consume(m),u):m===null||on(m)?(e.exit("atxHeadingSequence"),f(m)):r(m)}function f(m){return m===35?(e.enter("atxHeadingSequence"),h(m)):m===null||Te(m)?(e.exit("atxHeading"),n(m)):Ke(m)?st(e,f,"whitespace")(m):(e.enter("atxHeadingText"),d(m))}function h(m){return m===35?(e.consume(m),h):(e.exit("atxHeadingSequence"),f(m))}function d(m){return m===null||m===35||on(m)?(e.exit("atxHeadingText"),f(m)):(e.consume(m),d)}}const _O=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ob=["pre","script","style","textarea"],EO={concrete:!0,name:"htmlFlow",resolveTo:CO,tokenize:TO},NO={partial:!0,tokenize:AO},kO={partial:!0,tokenize:zO};function CO(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function TO(e,n,r){const l=this;let a,s,u,f,h;return d;function d(N){return m(N)}function m(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),p}function p(N){return N===33?(e.consume(N),y):N===47?(e.consume(N),s=!0,k):N===63?(e.consume(N),a=3,l.interrupt?n:j):er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function y(N){return N===45?(e.consume(N),a=2,v):N===91?(e.consume(N),a=5,f=0,w):er(N)?(e.consume(N),a=4,l.interrupt?n:j):r(N)}function v(N){return N===45?(e.consume(N),l.interrupt?n:j):r(N)}function w(N){const Y="CDATA[";return N===Y.charCodeAt(f++)?(e.consume(N),f===Y.length?l.interrupt?n:q:w):r(N)}function k(N){return er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function S(N){if(N===null||N===47||N===62||on(N)){const Y=N===47,F=u.toLowerCase();return!Y&&!s&&ob.includes(F)?(a=1,l.interrupt?n(N):q(N)):_O.includes(u.toLowerCase())?(a=6,Y?(e.consume(N),_):l.interrupt?n(N):q(N)):(a=7,l.interrupt&&!l.parser.lazy[l.now().line]?r(N):s?T(N):E(N))}return N===45||bn(N)?(e.consume(N),u+=String.fromCharCode(N),S):r(N)}function _(N){return N===62?(e.consume(N),l.interrupt?n:q):r(N)}function T(N){return Ke(N)?(e.consume(N),T):X(N)}function E(N){return N===47?(e.consume(N),X):N===58||N===95||er(N)?(e.consume(N),z):Ke(N)?(e.consume(N),E):X(N)}function z(N){return N===45||N===46||N===58||N===95||bn(N)?(e.consume(N),z):I(N)}function I(N){return N===61?(e.consume(N),A):Ke(N)?(e.consume(N),I):E(N)}function A(N){return N===null||N===60||N===61||N===62||N===96?r(N):N===34||N===39?(e.consume(N),h=N,L):Ke(N)?(e.consume(N),A):D(N)}function L(N){return N===h?(e.consume(N),h=null,U):N===null||Te(N)?r(N):(e.consume(N),L)}function D(N){return N===null||N===34||N===39||N===47||N===60||N===61||N===62||N===96||on(N)?I(N):(e.consume(N),D)}function U(N){return N===47||N===62||Ke(N)?E(N):r(N)}function X(N){return N===62?(e.consume(N),H):r(N)}function H(N){return N===null||Te(N)?q(N):Ke(N)?(e.consume(N),H):r(N)}function q(N){return N===45&&a===2?(e.consume(N),M):N===60&&a===1?(e.consume(N),$):N===62&&a===4?(e.consume(N),B):N===63&&a===3?(e.consume(N),j):N===93&&a===5?(e.consume(N),K):Te(N)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(NO,P,ee)(N)):N===null||Te(N)?(e.exit("htmlFlowData"),ee(N)):(e.consume(N),q)}function ee(N){return e.check(kO,R,P)(N)}function R(N){return e.enter("lineEnding"),e.consume(N),e.exit("lineEnding"),G}function G(N){return N===null||Te(N)?ee(N):(e.enter("htmlFlowData"),q(N))}function M(N){return N===45?(e.consume(N),j):q(N)}function $(N){return N===47?(e.consume(N),u="",Q):q(N)}function Q(N){if(N===62){const Y=u.toLowerCase();return ob.includes(Y)?(e.consume(N),B):q(N)}return er(N)&&u.length<8?(e.consume(N),u+=String.fromCharCode(N),Q):q(N)}function K(N){return N===93?(e.consume(N),j):q(N)}function j(N){return N===62?(e.consume(N),B):N===45&&a===2?(e.consume(N),j):q(N)}function B(N){return N===null||Te(N)?(e.exit("htmlFlowData"),P(N)):(e.consume(N),B)}function P(N){return e.exit("htmlFlow"),n(N)}}function zO(e,n,r){const l=this;return a;function a(u){return Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s):r(u)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}function AO(e,n,r){return l;function l(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(kc,n,r)}}const MO={name:"htmlText",tokenize:jO};function jO(e,n,r){const l=this;let a,s,u;return f;function f(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),h}function h(j){return j===33?(e.consume(j),d):j===47?(e.consume(j),I):j===63?(e.consume(j),E):er(j)?(e.consume(j),D):r(j)}function d(j){return j===45?(e.consume(j),m):j===91?(e.consume(j),s=0,w):er(j)?(e.consume(j),T):r(j)}function m(j){return j===45?(e.consume(j),v):r(j)}function p(j){return j===null?r(j):j===45?(e.consume(j),y):Te(j)?(u=p,$(j)):(e.consume(j),p)}function y(j){return j===45?(e.consume(j),v):p(j)}function v(j){return j===62?M(j):j===45?y(j):p(j)}function w(j){const B="CDATA[";return j===B.charCodeAt(s++)?(e.consume(j),s===B.length?k:w):r(j)}function k(j){return j===null?r(j):j===93?(e.consume(j),S):Te(j)?(u=k,$(j)):(e.consume(j),k)}function S(j){return j===93?(e.consume(j),_):k(j)}function _(j){return j===62?M(j):j===93?(e.consume(j),_):k(j)}function T(j){return j===null||j===62?M(j):Te(j)?(u=T,$(j)):(e.consume(j),T)}function E(j){return j===null?r(j):j===63?(e.consume(j),z):Te(j)?(u=E,$(j)):(e.consume(j),E)}function z(j){return j===62?M(j):E(j)}function I(j){return er(j)?(e.consume(j),A):r(j)}function A(j){return j===45||bn(j)?(e.consume(j),A):L(j)}function L(j){return Te(j)?(u=L,$(j)):Ke(j)?(e.consume(j),L):M(j)}function D(j){return j===45||bn(j)?(e.consume(j),D):j===47||j===62||on(j)?U(j):r(j)}function U(j){return j===47?(e.consume(j),M):j===58||j===95||er(j)?(e.consume(j),X):Te(j)?(u=U,$(j)):Ke(j)?(e.consume(j),U):M(j)}function X(j){return j===45||j===46||j===58||j===95||bn(j)?(e.consume(j),X):H(j)}function H(j){return j===61?(e.consume(j),q):Te(j)?(u=H,$(j)):Ke(j)?(e.consume(j),H):U(j)}function q(j){return j===null||j===60||j===61||j===62||j===96?r(j):j===34||j===39?(e.consume(j),a=j,ee):Te(j)?(u=q,$(j)):Ke(j)?(e.consume(j),q):(e.consume(j),R)}function ee(j){return j===a?(e.consume(j),a=void 0,G):j===null?r(j):Te(j)?(u=ee,$(j)):(e.consume(j),ee)}function R(j){return j===null||j===34||j===39||j===60||j===61||j===96?r(j):j===47||j===62||on(j)?U(j):(e.consume(j),R)}function G(j){return j===47||j===62||on(j)?U(j):r(j)}function M(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),n):r(j)}function $(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),Q}function Q(j){return Ke(j)?st(e,K,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):K(j)}function K(j){return e.enter("htmlTextData"),u(j)}}const Cm={name:"labelEnd",resolveAll:LO,resolveTo:HO,tokenize:BO},OO={tokenize:qO},DO={tokenize:UO},RO={tokenize:IO};function LO(e){let n=-1;const r=[];for(;++n=3&&(d===null||Te(d))?(e.exit("thematicBreak"),n(d)):r(d)}function h(d){return d===a?(e.consume(d),l++,h):(e.exit("thematicBreakSequence"),Ke(d)?st(e,f,"whitespace")(d):f(d))}}const ln={continuation:{tokenize:KO},exit:WO,name:"list",tokenize:ZO},FO={partial:!0,tokenize:eD},QO={partial:!0,tokenize:JO};function ZO(e,n,r){const l=this,a=l.events[l.events.length-1];let s=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return f;function f(v){const w=l.containerState.type||(v===42||v===43||v===45?"listUnordered":"listOrdered");if(w==="listUnordered"?!l.containerState.marker||v===l.containerState.marker:Vp(v)){if(l.containerState.type||(l.containerState.type=w,e.enter(w,{_container:!0})),w==="listUnordered")return e.enter("listItemPrefix"),v===42||v===45?e.check(Pu,r,d)(v):d(v);if(!l.interrupt||v===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),h(v)}return r(v)}function h(v){return Vp(v)&&++u<10?(e.consume(v),h):(!l.interrupt||u<2)&&(l.containerState.marker?v===l.containerState.marker:v===41||v===46)?(e.exit("listItemValue"),d(v)):r(v)}function d(v){return e.enter("listItemMarker"),e.consume(v),e.exit("listItemMarker"),l.containerState.marker=l.containerState.marker||v,e.check(kc,l.interrupt?r:m,e.attempt(FO,y,p))}function m(v){return l.containerState.initialBlankLine=!0,s++,y(v)}function p(v){return Ke(v)?(e.enter("listItemPrefixWhitespace"),e.consume(v),e.exit("listItemPrefixWhitespace"),y):r(v)}function y(v){return l.containerState.size=s+l.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(v)}}function KO(e,n,r){const l=this;return l.containerState._closeFlow=void 0,e.check(kc,a,s);function a(f){return l.containerState.furtherBlankLines=l.containerState.furtherBlankLines||l.containerState.initialBlankLine,st(e,n,"listItemIndent",l.containerState.size+1)(f)}function s(f){return l.containerState.furtherBlankLines||!Ke(f)?(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,u(f)):(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,e.attempt(QO,n,u)(f))}function u(f){return l.containerState._closeFlow=!0,l.interrupt=void 0,st(e,e.attempt(ln,n,r),"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(f)}}function JO(e,n,r){const l=this;return st(e,a,"listItemIndent",l.containerState.size+1);function a(s){const u=l.events[l.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===l.containerState.size?n(s):r(s)}}function WO(e){e.exit(this.containerState.type)}function eD(e,n,r){const l=this;return st(e,a,"listItemPrefixWhitespace",l.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(s){const u=l.events[l.events.length-1];return!Ke(s)&&u&&u[1].type==="listItemPrefixWhitespace"?n(s):r(s)}}const sb={name:"setextUnderline",resolveTo:tD,tokenize:nD};function tD(e,n){let r=e.length,l,a,s;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){l=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!s&&e[r][1].type==="definition"&&(s=r);const u={type:"setextHeading",start:{...e[l][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",s?(e.splice(a,0,["enter",u,n]),e.splice(s+1,0,["exit",e[l][1],n]),e[l][1].end={...e[s][1].end}):e[l][1]=u,e.push(["exit",u,n]),e}function nD(e,n,r){const l=this;let a;return s;function s(d){let m=l.events.length,p;for(;m--;)if(l.events[m][1].type!=="lineEnding"&&l.events[m][1].type!=="linePrefix"&&l.events[m][1].type!=="content"){p=l.events[m][1].type==="paragraph";break}return!l.parser.lazy[l.now().line]&&(l.interrupt||p)?(e.enter("setextHeadingLine"),a=d,u(d)):r(d)}function u(d){return e.enter("setextHeadingLineSequence"),f(d)}function f(d){return d===a?(e.consume(d),f):(e.exit("setextHeadingLineSequence"),Ke(d)?st(e,h,"lineSuffix")(d):h(d))}function h(d){return d===null||Te(d)?(e.exit("setextHeadingLine"),n(d)):r(d)}}const rD={tokenize:iD};function iD(e){const n=this,r=e.attempt(kc,l,e.attempt(this.parser.constructs.flowInitial,a,st(e,e.attempt(this.parser.constructs.flow,a,e.attempt(uO,a)),"linePrefix")));return r;function l(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),n.currentConstruct=void 0,r}function a(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),n.currentConstruct=void 0,r}}const lD={resolveAll:x_()},aD=y_("string"),oD=y_("text");function y_(e){return{resolveAll:x_(e==="text"?sD:void 0),tokenize:n};function n(r){const l=this,a=this.parser.constructs[e],s=r.attempt(a,u,f);return u;function u(m){return d(m)?s(m):f(m)}function f(m){if(m===null){r.consume(m);return}return r.enter("data"),r.consume(m),h}function h(m){return d(m)?(r.exit("data"),s(m)):(r.consume(m),h)}function d(m){if(m===null)return!0;const p=a[m];let y=-1;if(p)for(;++y-1){const f=u[0];typeof f=="string"?u[0]=f.slice(l):u.shift()}s>0&&u.push(e[a].slice(0,s))}return u}function wD(e,n){let r=-1;const l=[];let a;for(;++r4&&r.slice(0,4)==="data"&&Q5.test(n)){if(n.charAt(4)==="-"){const s=n.slice(5).replace(P1,J5);l="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=n.slice(4);if(!P1.test(s)){let u=s.replace(F5,K5);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}a=vm}return new a(l,n)}function K5(e){return"-"+e.toLowerCase()}function J5(e){return e.charAt(1).toUpperCase()}const W5=KS([JS,$5,t_,n_,r_],"html"),bm=KS([JS,P5,t_,n_,r_],"svg");function e4(e){return e.join(" ").trim()}var Gl={},ap,X1;function t4(){if(X1)return ap;X1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,f=/^\s+|\s+$/g,h=` +`,d="/",m="*",p="",y="comment",v="declaration";function w(_,S){if(typeof _!="string")throw new TypeError("First argument must be a string");if(!_)return[];S=S||{};var T=1,N=1;function A(H){var G=H.match(n);G&&(T+=G.length);var j=H.lastIndexOf(h);N=~j?H.length-j:N+H.length}function R(){var H={line:T,column:N};return function(G){return G.position=new z(H),I(),G}}function z(H){this.start=H,this.end={line:T,column:N},this.source=S.source}z.prototype.content=_;function L(H){var G=new Error(S.source+":"+T+":"+N+": "+H);if(G.reason=H,G.filename=S.source,G.line=T,G.column=N,G.source=_,!S.silent)throw G}function D(H){var G=H.exec(_);if(G){var j=G[0];return A(j),_=_.slice(j.length),G}}function I(){D(r)}function X(H){var G;for(H=H||[];G=B();)G!==!1&&H.push(G);return H}function B(){var H=R();if(!(d!=_.charAt(0)||m!=_.charAt(1))){for(var G=2;p!=_.charAt(G)&&(m!=_.charAt(G)||d!=_.charAt(G+1));)++G;if(G+=2,p===_.charAt(G-1))return L("End of comment missing");var j=_.slice(2,G-2);return N+=2,A(j),_=_.slice(G),N+=2,H({type:y,comment:j})}}function U(){var H=R(),G=D(l);if(G){if(B(),!D(a))return L("property missing ':'");var j=D(s),$=H({type:v,property:k(G[0].replace(e,p)),value:j?k(j[0].replace(e,p)):p});return D(u),$}}function ee(){var H=[];X(H);for(var G;G=U();)G!==!1&&(H.push(G),X(H));return H}return I(),ee()}function k(_){return _?_.replace(f,p):p}return ap=w,ap}var F1;function n4(){if(F1)return Gl;F1=1;var e=Gl&&Gl.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.default=r;const n=e(t4());function r(l,a){let s=null;if(!l||typeof l!="string")return s;const u=(0,n.default)(l),f=typeof a=="function";return u.forEach(h=>{if(h.type!=="declaration")return;const{property:d,value:m}=h;f?a(d,m,h):m&&(s=s||{},s[d]=m)}),s}return Gl}var ho={},Q1;function r4(){if(Q1)return ho;Q1=1,Object.defineProperty(ho,"__esModule",{value:!0}),ho.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,l=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,s=function(d){return!d||r.test(d)||e.test(d)},u=function(d,m){return m.toUpperCase()},f=function(d,m){return"".concat(m,"-")},h=function(d,m){return m===void 0&&(m={}),s(d)?d:(d=d.toLowerCase(),m.reactCompat?d=d.replace(a,f):d=d.replace(l,f),d.replace(n,u))};return ho.camelCase=h,ho}var po,Z1;function i4(){if(Z1)return po;Z1=1;var e=po&&po.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},n=e(n4()),r=r4();function l(a,s){var u={};return!a||typeof a!="string"||(0,n.default)(a,function(f,h){f&&h&&(u[(0,r.camelCase)(f,s)]=h)}),u}return l.default=l,po=l,po}var l4=i4();const a4=Uo(l4),i_=l_("end"),wm=l_("start");function l_(e){return n;function n(r){const l=r&&r.position&&r.position[e]||{};if(typeof l.line=="number"&&l.line>0&&typeof l.column=="number"&&l.column>0)return{line:l.line,column:l.column,offset:typeof l.offset=="number"&&l.offset>-1?l.offset:void 0}}}function o4(e){const n=wm(e),r=i_(e);if(n&&r)return{start:n,end:r}}function No(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?K1(e.position):"start"in e||"end"in e?K1(e):"line"in e||"column"in e?Up(e):""}function Up(e){return J1(e&&e.line)+":"+J1(e&&e.column)}function K1(e){return Up(e&&e.start)+"-"+Up(e&&e.end)}function J1(e){return e&&typeof e=="number"?e:1}class Pt extends Error{constructor(n,r,l){super(),typeof r=="string"&&(l=r,r=void 0);let a="",s={},u=!1;if(r&&("line"in r&&"column"in r?s={place:r}:"start"in r&&"end"in r?s={place:r}:"type"in r?s={ancestors:[r],place:r.position}:s={...r}),typeof n=="string"?a=n:!s.cause&&n&&(u=!0,a=n.message,s.cause=n),!s.ruleId&&!s.source&&typeof l=="string"){const h=l.indexOf(":");h===-1?s.ruleId=l:(s.source=l.slice(0,h),s.ruleId=l.slice(h+1))}if(!s.place&&s.ancestors&&s.ancestors){const h=s.ancestors[s.ancestors.length-1];h&&(s.place=h.position)}const f=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=f?f.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=f?f.line:void 0,this.name=No(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=u&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Pt.prototype.file="";Pt.prototype.name="";Pt.prototype.reason="";Pt.prototype.message="";Pt.prototype.stack="";Pt.prototype.column=void 0;Pt.prototype.line=void 0;Pt.prototype.ancestors=void 0;Pt.prototype.cause=void 0;Pt.prototype.fatal=void 0;Pt.prototype.place=void 0;Pt.prototype.ruleId=void 0;Pt.prototype.source=void 0;const Sm={}.hasOwnProperty,s4=new Map,u4=/[A-Z]/g,c4=new Set(["table","tbody","thead","tfoot","tr"]),f4=new Set(["td","th"]),a_="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function d4(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=n.filePath||void 0;let l;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");l=b4(r,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");l=v4(r,n.jsx,n.jsxs)}const a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:l,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?bm:W5,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},s=o_(a,e,void 0);return s&&typeof s!="string"?s:a.create(e,a.Fragment,{children:s||void 0},void 0)}function o_(e,n,r){if(n.type==="element")return h4(e,n,r);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return p4(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return g4(e,n,r);if(n.type==="mdxjsEsm")return m4(e,n);if(n.type==="root")return y4(e,n,r);if(n.type==="text")return x4(e,n)}function h4(e,n,r){const l=e.schema;let a=l;n.tagName.toLowerCase()==="svg"&&l.space==="html"&&(a=bm,e.schema=a),e.ancestors.push(n);const s=u_(e,n.tagName,!1),u=w4(e,n);let f=Em(e,n);return c4.has(n.tagName)&&(f=f.filter(function(h){return typeof h=="string"?!G5(h):!0})),s_(e,u,s,n),_m(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function p4(e,n){if(n.data&&n.data.estree&&e.evaluater){const l=n.data.estree.body[0];return l.type,e.evaluater.evaluateExpression(l.expression)}qo(e,n.position)}function m4(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);qo(e,n.position)}function g4(e,n,r){const l=e.schema;let a=l;n.name==="svg"&&l.space==="html"&&(a=bm,e.schema=a),e.ancestors.push(n);const s=n.name===null?e.Fragment:u_(e,n.name,!0),u=S4(e,n),f=Em(e,n);return s_(e,u,s,n),_m(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function y4(e,n,r){const l={};return _m(l,Em(e,n)),e.create(n,e.Fragment,l,r)}function x4(e,n){return n.value}function s_(e,n,r,l){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(n.node=l)}function _m(e,n){if(n.length>0){const r=n.length>1?n:n[0];r&&(e.children=r)}}function v4(e,n,r){return l;function l(a,s,u,f){const d=Array.isArray(u.children)?r:n;return f?d(s,u,f):d(s,u)}}function b4(e,n){return r;function r(l,a,s,u){const f=Array.isArray(s.children),h=wm(l);return n(a,s,u,f,{columnNumber:h?h.column-1:void 0,fileName:e,lineNumber:h?h.line:void 0},void 0)}}function w4(e,n){const r={};let l,a;for(a in n.properties)if(a!=="children"&&Sm.call(n.properties,a)){const s=_4(e,a,n.properties[a]);if(s){const[u,f]=s;e.tableCellAlignToStyle&&u==="align"&&typeof f=="string"&&f4.has(n.tagName)?l=f:r[u]=f}}if(l){const s=r.style||(r.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=l}return r}function S4(e,n){const r={};for(const l of n.attributes)if(l.type==="mdxJsxExpressionAttribute")if(l.data&&l.data.estree&&e.evaluater){const s=l.data.estree.body[0];s.type;const u=s.expression;u.type;const f=u.properties[0];f.type,Object.assign(r,e.evaluater.evaluateExpression(f.argument))}else qo(e,n.position);else{const a=l.name;let s;if(l.value&&typeof l.value=="object")if(l.value.data&&l.value.data.estree&&e.evaluater){const f=l.value.data.estree.body[0];f.type,s=e.evaluater.evaluateExpression(f.expression)}else qo(e,n.position);else s=l.value===null?!0:l.value;r[a]=s}return r}function Em(e,n){const r=[];let l=-1;const a=e.passKeys?new Map:s4;for(;++la?0:a+n:n=n>a?a:n,r=r>0?r:0,l.length<1e4)u=Array.from(l),u.unshift(n,r),e.splice(...u);else for(r&&e.splice(n,r);s0?(rr(e,e.length,0,n),e):n}const tb={}.hasOwnProperty;function j4(e){const n={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function ta(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const er=gi(/[A-Za-z]/),bn=gi(/[\dA-Za-z]/),D4=gi(/[#-'*+\--9=?A-Z^-~]/);function Ip(e){return e!==null&&(e<32||e===127)}const Vp=gi(/\d/),R4=gi(/[\dA-Fa-f]/),L4=gi(/[!-/:-@[-`{-~]/);function Te(e){return e!==null&&e<-2}function on(e){return e!==null&&(e<0||e===32)}function Ke(e){return e===-2||e===-1||e===32}const H4=gi(new RegExp("\\p{P}|\\p{S}","u")),B4=gi(/\s/);function gi(e){return n;function n(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function da(e){const n=[];let r=-1,l=0,a=0;for(;++r55295&&s<57344){const f=e.charCodeAt(r+1);s<56320&&f>56319&&f<57344?(u=String.fromCharCode(s,f),a=1):u="�"}else u=String.fromCharCode(s);u&&(n.push(e.slice(l,r),encodeURIComponent(u)),l=r+a+1,u=""),a&&(r+=a,a=0)}return n.join("")+e.slice(l)}function st(e,n,r,l){const a=l?l-1:Number.POSITIVE_INFINITY;let s=0;return u;function u(h){return Ke(h)?(e.enter(r),f(h)):n(h)}function f(h){return Ke(h)&&s++u))return;const L=n.events.length;let D=L,I,X;for(;D--;)if(n.events[D][0]==="exit"&&n.events[D][1].type==="chunkFlow"){if(I){X=n.events[D][1].end;break}I=!0}for(S(l),z=L;zN;){const R=r[A];n.containerState=R[1],R[0].exit.call(n,e)}r.length=N}function T(){a.write([null]),s=void 0,a=void 0,n.containerState._closeFlow=void 0}}function G4(e,n,r){return st(e,e.attempt(this.parser.constructs.document,n,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function rb(e){if(e===null||on(e)||B4(e))return 1;if(H4(e))return 2}function km(e,n,r){const l=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const p={...e[l][1].end},y={...e[r][1].start};ib(p,-h),ib(y,h),u={type:h>1?"strongSequence":"emphasisSequence",start:p,end:{...e[l][1].end}},f={type:h>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:y},s={type:h>1?"strongText":"emphasisText",start:{...e[l][1].end},end:{...e[r][1].start}},a={type:h>1?"strong":"emphasis",start:{...u.start},end:{...f.end}},e[l][1].end={...u.start},e[r][1].start={...f.end},d=[],e[l][1].end.offset-e[l][1].start.offset&&(d=jn(d,[["enter",e[l][1],n],["exit",e[l][1],n]])),d=jn(d,[["enter",a,n],["enter",u,n],["exit",u,n],["enter",s,n]]),d=jn(d,km(n.parser.constructs.insideSpan.null,e.slice(l+1,r),n)),d=jn(d,[["exit",s,n],["enter",f,n],["exit",f,n],["exit",a,n]]),e[r][1].end.offset-e[r][1].start.offset?(m=2,d=jn(d,[["enter",e[r][1],n],["exit",e[r][1],n]])):m=0,rr(e,l-1,r-l+3,d),r=l+d.length-m-2;break}}for(r=-1;++r0&&Ke(z)?st(e,T,"linePrefix",s+1)(z):T(z)}function T(z){return z===null||Te(z)?e.check(lb,k,A)(z):(e.enter("codeFlowValue"),N(z))}function N(z){return z===null||Te(z)?(e.exit("codeFlowValue"),T(z)):(e.consume(z),N)}function A(z){return e.exit("codeFenced"),n(z)}function R(z,L,D){let I=0;return X;function X(G){return z.enter("lineEnding"),z.consume(G),z.exit("lineEnding"),B}function B(G){return z.enter("codeFencedFence"),Ke(G)?st(z,U,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(G):U(G)}function U(G){return G===f?(z.enter("codeFencedFenceSequence"),ee(G)):D(G)}function ee(G){return G===f?(I++,z.consume(G),ee):I>=u?(z.exit("codeFencedFenceSequence"),Ke(G)?st(z,H,"whitespace")(G):H(G)):D(G)}function H(G){return G===null||Te(G)?(z.exit("codeFencedFence"),L(G)):D(G)}}}function tO(e,n,r){const l=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}const sp={name:"codeIndented",tokenize:rO},nO={partial:!0,tokenize:iO};function rO(e,n,r){const l=this;return a;function a(d){return e.enter("codeIndented"),st(e,s,"linePrefix",5)(d)}function s(d){const m=l.events[l.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?u(d):r(d)}function u(d){return d===null?h(d):Te(d)?e.attempt(nO,u,h)(d):(e.enter("codeFlowValue"),f(d))}function f(d){return d===null||Te(d)?(e.exit("codeFlowValue"),u(d)):(e.consume(d),f)}function h(d){return e.exit("codeIndented"),n(d)}}function iO(e,n,r){const l=this;return a;function a(u){return l.parser.lazy[l.now().line]?r(u):Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):st(e,s,"linePrefix",5)(u)}function s(u){const f=l.events[l.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?n(u):Te(u)?a(u):r(u)}}const lO={name:"codeText",previous:oO,resolve:aO,tokenize:sO};function aO(e){let n=e.length-4,r=3,l,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(l=r;++l=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return nthis.left.length?this.right.slice(this.right.length-l+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-l+this.left.length).reverse())}splice(n,r,l){const a=r||0;this.setCursor(Math.trunc(n));const s=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return l&&mo(this.left,l),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),mo(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),mo(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n=4?n(u):e.interrupt(l.parser.constructs.flow,r,n)(u)}}function g_(e,n,r,l,a,s,u,f,h){const d=h||Number.POSITIVE_INFINITY;let m=0;return p;function p(S){return S===60?(e.enter(l),e.enter(a),e.enter(s),e.consume(S),e.exit(s),y):S===null||S===32||S===41||Ip(S)?r(S):(e.enter(l),e.enter(u),e.enter(f),e.enter("chunkString",{contentType:"string"}),k(S))}function y(S){return S===62?(e.enter(s),e.consume(S),e.exit(s),e.exit(a),e.exit(l),n):(e.enter(f),e.enter("chunkString",{contentType:"string"}),v(S))}function v(S){return S===62?(e.exit("chunkString"),e.exit(f),y(S)):S===null||S===60||Te(S)?r(S):(e.consume(S),S===92?w:v)}function w(S){return S===60||S===62||S===92?(e.consume(S),v):v(S)}function k(S){return!m&&(S===null||S===41||on(S))?(e.exit("chunkString"),e.exit(f),e.exit(u),e.exit(l),n(S)):m999||v===null||v===91||v===93&&!h||v===94&&!f&&"_hiddenFootnoteSupport"in u.parser.constructs?r(v):v===93?(e.exit(s),e.enter(a),e.consume(v),e.exit(a),e.exit(l),n):Te(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===null||v===91||v===93||Te(v)||f++>999?(e.exit("chunkString"),m(v)):(e.consume(v),h||(h=!Ke(v)),v===92?y:p)}function y(v){return v===91||v===92||v===93?(e.consume(v),f++,p):p(v)}}function x_(e,n,r,l,a,s){let u;return f;function f(y){return y===34||y===39||y===40?(e.enter(l),e.enter(a),e.consume(y),e.exit(a),u=y===40?41:y,h):r(y)}function h(y){return y===u?(e.enter(a),e.consume(y),e.exit(a),e.exit(l),n):(e.enter(s),d(y))}function d(y){return y===u?(e.exit(s),h(u)):y===null?r(y):Te(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),st(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===u||y===null||Te(y)?(e.exit("chunkString"),d(y)):(e.consume(y),y===92?p:m)}function p(y){return y===u||y===92?(e.consume(y),m):m(y)}}function ko(e,n){let r;return l;function l(a){return Te(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,l):Ke(a)?st(e,l,r?"linePrefix":"lineSuffix")(a):n(a)}}const gO={name:"definition",tokenize:xO},yO={partial:!0,tokenize:vO};function xO(e,n,r){const l=this;let a;return s;function s(v){return e.enter("definition"),u(v)}function u(v){return y_.call(l,e,f,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(v)}function f(v){return a=ta(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),v===58?(e.enter("definitionMarker"),e.consume(v),e.exit("definitionMarker"),h):r(v)}function h(v){return on(v)?ko(e,d)(v):d(v)}function d(v){return g_(e,m,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(v)}function m(v){return e.attempt(yO,p,p)(v)}function p(v){return Ke(v)?st(e,y,"whitespace")(v):y(v)}function y(v){return v===null||Te(v)?(e.exit("definition"),l.parser.defined.push(a),n(v)):r(v)}}function vO(e,n,r){return l;function l(f){return on(f)?ko(e,a)(f):r(f)}function a(f){return x_(e,s,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(f)}function s(f){return Ke(f)?st(e,u,"whitespace")(f):u(f)}function u(f){return f===null||Te(f)?n(f):r(f)}}const bO={name:"hardBreakEscape",tokenize:wO};function wO(e,n,r){return l;function l(s){return e.enter("hardBreakEscape"),e.consume(s),a}function a(s){return Te(s)?(e.exit("hardBreakEscape"),n(s)):r(s)}}const SO={name:"headingAtx",resolve:_O,tokenize:EO};function _O(e,n){let r=e.length-2,l=3,a,s;return e[l][1].type==="whitespace"&&(l+=2),r-2>l&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(l===r-1||r-4>l&&e[r-2][1].type==="whitespace")&&(r-=l+1===r?2:4),r>l&&(a={type:"atxHeadingText",start:e[l][1].start,end:e[r][1].end},s={type:"chunkText",start:e[l][1].start,end:e[r][1].end,contentType:"text"},rr(e,l,r-l+1,[["enter",a,n],["enter",s,n],["exit",s,n],["exit",a,n]])),e}function EO(e,n,r){let l=0;return a;function a(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),u(m)}function u(m){return m===35&&l++<6?(e.consume(m),u):m===null||on(m)?(e.exit("atxHeadingSequence"),f(m)):r(m)}function f(m){return m===35?(e.enter("atxHeadingSequence"),h(m)):m===null||Te(m)?(e.exit("atxHeading"),n(m)):Ke(m)?st(e,f,"whitespace")(m):(e.enter("atxHeadingText"),d(m))}function h(m){return m===35?(e.consume(m),h):(e.exit("atxHeadingSequence"),f(m))}function d(m){return m===null||m===35||on(m)?(e.exit("atxHeadingText"),f(m)):(e.consume(m),d)}}const NO=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ob=["pre","script","style","textarea"],kO={concrete:!0,name:"htmlFlow",resolveTo:zO,tokenize:AO},CO={partial:!0,tokenize:MO},TO={partial:!0,tokenize:jO};function zO(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function AO(e,n,r){const l=this;let a,s,u,f,h;return d;function d(E){return m(E)}function m(E){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(E),p}function p(E){return E===33?(e.consume(E),y):E===47?(e.consume(E),s=!0,k):E===63?(e.consume(E),a=3,l.interrupt?n:M):er(E)?(e.consume(E),u=String.fromCharCode(E),_):r(E)}function y(E){return E===45?(e.consume(E),a=2,v):E===91?(e.consume(E),a=5,f=0,w):er(E)?(e.consume(E),a=4,l.interrupt?n:M):r(E)}function v(E){return E===45?(e.consume(E),l.interrupt?n:M):r(E)}function w(E){const Y="CDATA[";return E===Y.charCodeAt(f++)?(e.consume(E),f===Y.length?l.interrupt?n:U:w):r(E)}function k(E){return er(E)?(e.consume(E),u=String.fromCharCode(E),_):r(E)}function _(E){if(E===null||E===47||E===62||on(E)){const Y=E===47,F=u.toLowerCase();return!Y&&!s&&ob.includes(F)?(a=1,l.interrupt?n(E):U(E)):NO.includes(u.toLowerCase())?(a=6,Y?(e.consume(E),S):l.interrupt?n(E):U(E)):(a=7,l.interrupt&&!l.parser.lazy[l.now().line]?r(E):s?T(E):N(E))}return E===45||bn(E)?(e.consume(E),u+=String.fromCharCode(E),_):r(E)}function S(E){return E===62?(e.consume(E),l.interrupt?n:U):r(E)}function T(E){return Ke(E)?(e.consume(E),T):X(E)}function N(E){return E===47?(e.consume(E),X):E===58||E===95||er(E)?(e.consume(E),A):Ke(E)?(e.consume(E),N):X(E)}function A(E){return E===45||E===46||E===58||E===95||bn(E)?(e.consume(E),A):R(E)}function R(E){return E===61?(e.consume(E),z):Ke(E)?(e.consume(E),R):N(E)}function z(E){return E===null||E===60||E===61||E===62||E===96?r(E):E===34||E===39?(e.consume(E),h=E,L):Ke(E)?(e.consume(E),z):D(E)}function L(E){return E===h?(e.consume(E),h=null,I):E===null||Te(E)?r(E):(e.consume(E),L)}function D(E){return E===null||E===34||E===39||E===47||E===60||E===61||E===62||E===96||on(E)?R(E):(e.consume(E),D)}function I(E){return E===47||E===62||Ke(E)?N(E):r(E)}function X(E){return E===62?(e.consume(E),B):r(E)}function B(E){return E===null||Te(E)?U(E):Ke(E)?(e.consume(E),B):r(E)}function U(E){return E===45&&a===2?(e.consume(E),j):E===60&&a===1?(e.consume(E),$):E===62&&a===4?(e.consume(E),q):E===63&&a===3?(e.consume(E),M):E===93&&a===5?(e.consume(E),K):Te(E)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(CO,P,ee)(E)):E===null||Te(E)?(e.exit("htmlFlowData"),ee(E)):(e.consume(E),U)}function ee(E){return e.check(TO,H,P)(E)}function H(E){return e.enter("lineEnding"),e.consume(E),e.exit("lineEnding"),G}function G(E){return E===null||Te(E)?ee(E):(e.enter("htmlFlowData"),U(E))}function j(E){return E===45?(e.consume(E),M):U(E)}function $(E){return E===47?(e.consume(E),u="",Q):U(E)}function Q(E){if(E===62){const Y=u.toLowerCase();return ob.includes(Y)?(e.consume(E),q):U(E)}return er(E)&&u.length<8?(e.consume(E),u+=String.fromCharCode(E),Q):U(E)}function K(E){return E===93?(e.consume(E),M):U(E)}function M(E){return E===62?(e.consume(E),q):E===45&&a===2?(e.consume(E),M):U(E)}function q(E){return E===null||Te(E)?(e.exit("htmlFlowData"),P(E)):(e.consume(E),q)}function P(E){return e.exit("htmlFlow"),n(E)}}function jO(e,n,r){const l=this;return a;function a(u){return Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s):r(u)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}function MO(e,n,r){return l;function l(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(kc,n,r)}}const OO={name:"htmlText",tokenize:DO};function DO(e,n,r){const l=this;let a,s,u;return f;function f(M){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(M),h}function h(M){return M===33?(e.consume(M),d):M===47?(e.consume(M),R):M===63?(e.consume(M),N):er(M)?(e.consume(M),D):r(M)}function d(M){return M===45?(e.consume(M),m):M===91?(e.consume(M),s=0,w):er(M)?(e.consume(M),T):r(M)}function m(M){return M===45?(e.consume(M),v):r(M)}function p(M){return M===null?r(M):M===45?(e.consume(M),y):Te(M)?(u=p,$(M)):(e.consume(M),p)}function y(M){return M===45?(e.consume(M),v):p(M)}function v(M){return M===62?j(M):M===45?y(M):p(M)}function w(M){const q="CDATA[";return M===q.charCodeAt(s++)?(e.consume(M),s===q.length?k:w):r(M)}function k(M){return M===null?r(M):M===93?(e.consume(M),_):Te(M)?(u=k,$(M)):(e.consume(M),k)}function _(M){return M===93?(e.consume(M),S):k(M)}function S(M){return M===62?j(M):M===93?(e.consume(M),S):k(M)}function T(M){return M===null||M===62?j(M):Te(M)?(u=T,$(M)):(e.consume(M),T)}function N(M){return M===null?r(M):M===63?(e.consume(M),A):Te(M)?(u=N,$(M)):(e.consume(M),N)}function A(M){return M===62?j(M):N(M)}function R(M){return er(M)?(e.consume(M),z):r(M)}function z(M){return M===45||bn(M)?(e.consume(M),z):L(M)}function L(M){return Te(M)?(u=L,$(M)):Ke(M)?(e.consume(M),L):j(M)}function D(M){return M===45||bn(M)?(e.consume(M),D):M===47||M===62||on(M)?I(M):r(M)}function I(M){return M===47?(e.consume(M),j):M===58||M===95||er(M)?(e.consume(M),X):Te(M)?(u=I,$(M)):Ke(M)?(e.consume(M),I):j(M)}function X(M){return M===45||M===46||M===58||M===95||bn(M)?(e.consume(M),X):B(M)}function B(M){return M===61?(e.consume(M),U):Te(M)?(u=B,$(M)):Ke(M)?(e.consume(M),B):I(M)}function U(M){return M===null||M===60||M===61||M===62||M===96?r(M):M===34||M===39?(e.consume(M),a=M,ee):Te(M)?(u=U,$(M)):Ke(M)?(e.consume(M),U):(e.consume(M),H)}function ee(M){return M===a?(e.consume(M),a=void 0,G):M===null?r(M):Te(M)?(u=ee,$(M)):(e.consume(M),ee)}function H(M){return M===null||M===34||M===39||M===60||M===61||M===96?r(M):M===47||M===62||on(M)?I(M):(e.consume(M),H)}function G(M){return M===47||M===62||on(M)?I(M):r(M)}function j(M){return M===62?(e.consume(M),e.exit("htmlTextData"),e.exit("htmlText"),n):r(M)}function $(M){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(M),e.exit("lineEnding"),Q}function Q(M){return Ke(M)?st(e,K,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):K(M)}function K(M){return e.enter("htmlTextData"),u(M)}}const Cm={name:"labelEnd",resolveAll:BO,resolveTo:qO,tokenize:UO},RO={tokenize:IO},LO={tokenize:VO},HO={tokenize:GO};function BO(e){let n=-1;const r=[];for(;++n=3&&(d===null||Te(d))?(e.exit("thematicBreak"),n(d)):r(d)}function h(d){return d===a?(e.consume(d),l++,h):(e.exit("thematicBreakSequence"),Ke(d)?st(e,f,"whitespace")(d):f(d))}}const ln={continuation:{tokenize:WO},exit:tD,name:"list",tokenize:JO},ZO={partial:!0,tokenize:nD},KO={partial:!0,tokenize:eD};function JO(e,n,r){const l=this,a=l.events[l.events.length-1];let s=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return f;function f(v){const w=l.containerState.type||(v===42||v===43||v===45?"listUnordered":"listOrdered");if(w==="listUnordered"?!l.containerState.marker||v===l.containerState.marker:Vp(v)){if(l.containerState.type||(l.containerState.type=w,e.enter(w,{_container:!0})),w==="listUnordered")return e.enter("listItemPrefix"),v===42||v===45?e.check(Pu,r,d)(v):d(v);if(!l.interrupt||v===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),h(v)}return r(v)}function h(v){return Vp(v)&&++u<10?(e.consume(v),h):(!l.interrupt||u<2)&&(l.containerState.marker?v===l.containerState.marker:v===41||v===46)?(e.exit("listItemValue"),d(v)):r(v)}function d(v){return e.enter("listItemMarker"),e.consume(v),e.exit("listItemMarker"),l.containerState.marker=l.containerState.marker||v,e.check(kc,l.interrupt?r:m,e.attempt(ZO,y,p))}function m(v){return l.containerState.initialBlankLine=!0,s++,y(v)}function p(v){return Ke(v)?(e.enter("listItemPrefixWhitespace"),e.consume(v),e.exit("listItemPrefixWhitespace"),y):r(v)}function y(v){return l.containerState.size=s+l.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(v)}}function WO(e,n,r){const l=this;return l.containerState._closeFlow=void 0,e.check(kc,a,s);function a(f){return l.containerState.furtherBlankLines=l.containerState.furtherBlankLines||l.containerState.initialBlankLine,st(e,n,"listItemIndent",l.containerState.size+1)(f)}function s(f){return l.containerState.furtherBlankLines||!Ke(f)?(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,u(f)):(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,e.attempt(KO,n,u)(f))}function u(f){return l.containerState._closeFlow=!0,l.interrupt=void 0,st(e,e.attempt(ln,n,r),"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(f)}}function eD(e,n,r){const l=this;return st(e,a,"listItemIndent",l.containerState.size+1);function a(s){const u=l.events[l.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===l.containerState.size?n(s):r(s)}}function tD(e){e.exit(this.containerState.type)}function nD(e,n,r){const l=this;return st(e,a,"listItemPrefixWhitespace",l.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(s){const u=l.events[l.events.length-1];return!Ke(s)&&u&&u[1].type==="listItemPrefixWhitespace"?n(s):r(s)}}const sb={name:"setextUnderline",resolveTo:rD,tokenize:iD};function rD(e,n){let r=e.length,l,a,s;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){l=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!s&&e[r][1].type==="definition"&&(s=r);const u={type:"setextHeading",start:{...e[l][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",s?(e.splice(a,0,["enter",u,n]),e.splice(s+1,0,["exit",e[l][1],n]),e[l][1].end={...e[s][1].end}):e[l][1]=u,e.push(["exit",u,n]),e}function iD(e,n,r){const l=this;let a;return s;function s(d){let m=l.events.length,p;for(;m--;)if(l.events[m][1].type!=="lineEnding"&&l.events[m][1].type!=="linePrefix"&&l.events[m][1].type!=="content"){p=l.events[m][1].type==="paragraph";break}return!l.parser.lazy[l.now().line]&&(l.interrupt||p)?(e.enter("setextHeadingLine"),a=d,u(d)):r(d)}function u(d){return e.enter("setextHeadingLineSequence"),f(d)}function f(d){return d===a?(e.consume(d),f):(e.exit("setextHeadingLineSequence"),Ke(d)?st(e,h,"lineSuffix")(d):h(d))}function h(d){return d===null||Te(d)?(e.exit("setextHeadingLine"),n(d)):r(d)}}const lD={tokenize:aD};function aD(e){const n=this,r=e.attempt(kc,l,e.attempt(this.parser.constructs.flowInitial,a,st(e,e.attempt(this.parser.constructs.flow,a,e.attempt(fO,a)),"linePrefix")));return r;function l(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),n.currentConstruct=void 0,r}function a(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),n.currentConstruct=void 0,r}}const oD={resolveAll:b_()},sD=v_("string"),uD=v_("text");function v_(e){return{resolveAll:b_(e==="text"?cD:void 0),tokenize:n};function n(r){const l=this,a=this.parser.constructs[e],s=r.attempt(a,u,f);return u;function u(m){return d(m)?s(m):f(m)}function f(m){if(m===null){r.consume(m);return}return r.enter("data"),r.consume(m),h}function h(m){return d(m)?(r.exit("data"),s(m)):(r.consume(m),h)}function d(m){if(m===null)return!0;const p=a[m];let y=-1;if(p)for(;++y-1){const f=u[0];typeof f=="string"?u[0]=f.slice(l):u.shift()}s>0&&u.push(e[a].slice(0,s))}return u}function _D(e,n){let r=-1;const l=[];let a;for(;++r0){const Xt=Ne.tokenStack[Ne.tokenStack.length-1];(Xt[1]||cb).call(Ne,void 0,Xt[0])}for(ge.position={start:fi(ue.length>0?ue[0][1].start:{line:1,column:1,offset:0}),end:fi(ue.length>0?ue[ue.length-2][1].end:{line:1,column:1,offset:0})},Ye=-1;++Ye0&&(l.className=["language-"+a[0]]);let s={type:"element",tagName:"code",properties:l,children:[{type:"text",value:r}]};return n.meta&&(s.data={meta:n.meta}),e.patch(n,s),s=e.applyData(n,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(n,s),s}function RD(e,n){const r={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function LD(e,n){const r={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function HD(e,n){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",l=String(n.identifier).toUpperCase(),a=ca(l.toLowerCase()),s=e.footnoteOrder.indexOf(l);let u,f=e.footnoteCounts.get(l);f===void 0?(f=0,e.footnoteOrder.push(l),u=e.footnoteOrder.length):u=s+1,f+=1,e.footnoteCounts.set(l,f);const h={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(f>1?"-"+f:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,h);const d={type:"element",tagName:"sup",properties:{},children:[h]};return e.patch(n,d),e.applyData(n,d)}function BD(e,n){const r={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function qD(e,n){if(e.options.allowDangerousHtml){const r={type:"raw",value:n.value};return e.patch(n,r),e.applyData(n,r)}}function w_(e,n){const r=n.referenceType;let l="]";if(r==="collapsed"?l+="[]":r==="full"&&(l+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+l}];const a=e.all(n),s=a[0];s&&s.type==="text"?s.value="["+s.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=l:a.push({type:"text",value:l}),a}function UD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return w_(e,n);const a={src:ca(l.url||""),alt:n.alt};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"img",properties:a,children:[]};return e.patch(n,s),e.applyData(n,s)}function ID(e,n){const r={src:ca(n.url)};n.alt!==null&&n.alt!==void 0&&(r.alt=n.alt),n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"img",properties:r,children:[]};return e.patch(n,l),e.applyData(n,l)}function VD(e,n){const r={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,r);const l={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(n,l),e.applyData(n,l)}function GD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return w_(e,n);const a={href:ca(l.url||"")};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"a",properties:a,children:e.all(n)};return e.patch(n,s),e.applyData(n,s)}function YD(e,n){const r={href:ca(n.url)};n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"a",properties:r,children:e.all(n)};return e.patch(n,l),e.applyData(n,l)}function $D(e,n,r){const l=e.all(n),a=r?PD(r):S_(n),s={},u=[];if(typeof n.checked=="boolean"){const m=l[0];let p;m&&m.type==="element"&&m.tagName==="p"?p=m:(p={type:"element",tagName:"p",properties:{},children:[]},l.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let f=-1;for(;++f0){const Xt=Ne.tokenStack[Ne.tokenStack.length-1];(Xt[1]||cb).call(Ne,void 0,Xt[0])}for(ge.position={start:fi(ue.length>0?ue[0][1].start:{line:1,column:1,offset:0}),end:fi(ue.length>0?ue[ue.length-2][1].end:{line:1,column:1,offset:0})},Ye=-1;++Ye0&&(l.className=["language-"+a[0]]);let s={type:"element",tagName:"code",properties:l,children:[{type:"text",value:r}]};return n.meta&&(s.data={meta:n.meta}),e.patch(n,s),s=e.applyData(n,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(n,s),s}function HD(e,n){const r={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function BD(e,n){const r={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function qD(e,n){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",l=String(n.identifier).toUpperCase(),a=da(l.toLowerCase()),s=e.footnoteOrder.indexOf(l);let u,f=e.footnoteCounts.get(l);f===void 0?(f=0,e.footnoteOrder.push(l),u=e.footnoteOrder.length):u=s+1,f+=1,e.footnoteCounts.set(l,f);const h={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(f>1?"-"+f:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,h);const d={type:"element",tagName:"sup",properties:{},children:[h]};return e.patch(n,d),e.applyData(n,d)}function UD(e,n){const r={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function ID(e,n){if(e.options.allowDangerousHtml){const r={type:"raw",value:n.value};return e.patch(n,r),e.applyData(n,r)}}function __(e,n){const r=n.referenceType;let l="]";if(r==="collapsed"?l+="[]":r==="full"&&(l+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+l}];const a=e.all(n),s=a[0];s&&s.type==="text"?s.value="["+s.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=l:a.push({type:"text",value:l}),a}function VD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return __(e,n);const a={src:da(l.url||""),alt:n.alt};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"img",properties:a,children:[]};return e.patch(n,s),e.applyData(n,s)}function GD(e,n){const r={src:da(n.url)};n.alt!==null&&n.alt!==void 0&&(r.alt=n.alt),n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"img",properties:r,children:[]};return e.patch(n,l),e.applyData(n,l)}function YD(e,n){const r={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,r);const l={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(n,l),e.applyData(n,l)}function $D(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return __(e,n);const a={href:da(l.url||"")};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"a",properties:a,children:e.all(n)};return e.patch(n,s),e.applyData(n,s)}function PD(e,n){const r={href:da(n.url)};n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"a",properties:r,children:e.all(n)};return e.patch(n,l),e.applyData(n,l)}function XD(e,n,r){const l=e.all(n),a=r?FD(r):E_(n),s={},u=[];if(typeof n.checked=="boolean"){const m=l[0];let p;m&&m.type==="element"&&m.tagName==="p"?p=m:(p={type:"element",tagName:"p",properties:{},children:[]},l.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let f=-1;for(;++f1}function XD(e,n){const r={},l=e.all(n);let a=-1;for(typeof n.start=="number"&&n.start!==1&&(r.start=n.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},f=wm(n.children[1]),h=n_(n.children[n.children.length-1]);f&&h&&(u.position={start:f,end:h}),a.push(u)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(n,s),e.applyData(n,s)}function JD(e,n,r){const l=r?r.children:void 0,s=(l?l.indexOf(n):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,f=u?u.length:n.children.length;let h=-1;const d=[];for(;++h0,!0),l[0]),a=l.index+l[0].length,l=r.exec(n);return s.push(hb(n.slice(a),a>0,!1)),s.join("")}function hb(e,n,r){let l=0,a=e.length;if(n){let s=e.codePointAt(l);for(;s===fb||s===db;)l++,s=e.codePointAt(l)}if(r){let s=e.codePointAt(a-1);for(;s===fb||s===db;)a--,s=e.codePointAt(a-1)}return a>l?e.slice(l,a):""}function tR(e,n){const r={type:"text",value:eR(String(n.value))};return e.patch(n,r),e.applyData(n,r)}function nR(e,n){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,r),e.applyData(n,r)}const rR={blockquote:jD,break:OD,code:DD,delete:RD,emphasis:LD,footnoteReference:HD,heading:BD,html:qD,imageReference:UD,image:ID,inlineCode:VD,linkReference:GD,link:YD,listItem:$D,list:XD,paragraph:FD,root:QD,strong:ZD,table:KD,tableCell:WD,tableRow:JD,text:tR,thematicBreak:nR,toml:Lu,yaml:Lu,definition:Lu,footnoteDefinition:Lu};function Lu(){}const __=-1,Cc=0,No=1,sc=2,Tm=3,zm=4,Am=5,Mm=6,E_=7,N_=8,pb=typeof self=="object"?self:globalThis,iR=(e,n)=>{const r=(a,s)=>(e.set(s,a),a),l=a=>{if(e.has(a))return e.get(a);const[s,u]=n[a];switch(s){case Cc:case __:return r(u,a);case No:{const f=r([],a);for(const h of u)f.push(l(h));return f}case sc:{const f=r({},a);for(const[h,d]of u)f[l(h)]=l(d);return f}case Tm:return r(new Date(u),a);case zm:{const{source:f,flags:h}=u;return r(new RegExp(f,h),a)}case Am:{const f=r(new Map,a);for(const[h,d]of u)f.set(l(h),l(d));return f}case Mm:{const f=r(new Set,a);for(const h of u)f.add(l(h));return f}case E_:{const{name:f,message:h}=u;return r(new pb[f](h),a)}case N_:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:f}=new Uint8Array(u);return r(new DataView(f),u)}}return r(new pb[s](u),a)};return l},mb=e=>iR(new Map,e)(0),Yl="",{toString:lR}={},{keys:aR}=Object,po=e=>{const n=typeof e;if(n!=="object"||!e)return[Cc,n];const r=lR.call(e).slice(8,-1);switch(r){case"Array":return[No,Yl];case"Object":return[sc,Yl];case"Date":return[Tm,Yl];case"RegExp":return[zm,Yl];case"Map":return[Am,Yl];case"Set":return[Mm,Yl];case"DataView":return[No,r]}return r.includes("Array")?[No,r]:r.includes("Error")?[E_,r]:[sc,r]},Hu=([e,n])=>e===Cc&&(n==="function"||n==="symbol"),oR=(e,n,r,l)=>{const a=(u,f)=>{const h=l.push(u)-1;return r.set(f,h),h},s=u=>{if(r.has(u))return r.get(u);let[f,h]=po(u);switch(f){case Cc:{let m=u;switch(h){case"bigint":f=N_,m=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+h);m=null;break;case"undefined":return a([__],u)}return a([f,m],u)}case No:{if(h){let y=u;return h==="DataView"?y=new Uint8Array(u.buffer):h==="ArrayBuffer"&&(y=new Uint8Array(u)),a([h,[...y]],u)}const m=[],p=a([f,m],u);for(const y of u)m.push(s(y));return p}case sc:{if(h)switch(h){case"BigInt":return a([h,u.toString()],u);case"Boolean":case"Number":case"String":return a([h,u.valueOf()],u)}if(n&&"toJSON"in u)return s(u.toJSON());const m=[],p=a([f,m],u);for(const y of aR(u))(e||!Hu(po(u[y])))&&m.push([s(y),s(u[y])]);return p}case Tm:return a([f,u.toISOString()],u);case zm:{const{source:m,flags:p}=u;return a([f,{source:m,flags:p}],u)}case Am:{const m=[],p=a([f,m],u);for(const[y,v]of u)(e||!(Hu(po(y))||Hu(po(v))))&&m.push([s(y),s(v)]);return p}case Mm:{const m=[],p=a([f,m],u);for(const y of u)(e||!Hu(po(y)))&&m.push(s(y));return p}}const{message:d}=u;return a([f,{name:h,message:d}],u)};return s},gb=(e,{json:n,lossy:r}={})=>{const l=[];return oR(!(n||r),!!n,new Map,l)(e),l},uc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?mb(gb(e,n)):structuredClone(e):(e,n)=>mb(gb(e,n));function sR(e,n){const r=[{type:"text",value:"↩"}];return n>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),r}function uR(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function cR(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||sR,l=e.options.footnoteBackLabel||uR,a=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},f=[];let h=-1;for(;++h0&&w.push({type:"text",value:" "});let T=typeof r=="string"?r:r(h,v);typeof T=="string"&&(T={type:"text",value:T}),w.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+y+(v>1?"-"+v:""),dataFootnoteBackref:"",ariaLabel:typeof l=="string"?l:l(h,v),className:["data-footnote-backref"]},children:Array.isArray(T)?T:[T]})}const S=m[m.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const T=S.children[S.children.length-1];T&&T.type==="text"?T.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...w)}else m.push(...w);const _={type:"element",tagName:"li",properties:{id:n+"fn-"+y},children:e.wrap(m,!0)};e.patch(d,_),f.push(_)}if(f.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...uc(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` +`});const d={type:"element",tagName:"li",properties:s,children:u};return e.patch(n,d),e.applyData(n,d)}function FD(e){let n=!1;if(e.type==="list"){n=e.spread||!1;const r=e.children;let l=-1;for(;!n&&++l1}function QD(e,n){const r={},l=e.all(n);let a=-1;for(typeof n.start=="number"&&n.start!==1&&(r.start=n.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},f=wm(n.children[1]),h=i_(n.children[n.children.length-1]);f&&h&&(u.position={start:f,end:h}),a.push(u)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(n,s),e.applyData(n,s)}function eR(e,n,r){const l=r?r.children:void 0,s=(l?l.indexOf(n):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,f=u?u.length:n.children.length;let h=-1;const d=[];for(;++h0,!0),l[0]),a=l.index+l[0].length,l=r.exec(n);return s.push(hb(n.slice(a),a>0,!1)),s.join("")}function hb(e,n,r){let l=0,a=e.length;if(n){let s=e.codePointAt(l);for(;s===fb||s===db;)l++,s=e.codePointAt(l)}if(r){let s=e.codePointAt(a-1);for(;s===fb||s===db;)a--,s=e.codePointAt(a-1)}return a>l?e.slice(l,a):""}function rR(e,n){const r={type:"text",value:nR(String(n.value))};return e.patch(n,r),e.applyData(n,r)}function iR(e,n){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,r),e.applyData(n,r)}const lR={blockquote:DD,break:RD,code:LD,delete:HD,emphasis:BD,footnoteReference:qD,heading:UD,html:ID,imageReference:VD,image:GD,inlineCode:YD,linkReference:$D,link:PD,listItem:XD,list:QD,paragraph:ZD,root:KD,strong:JD,table:WD,tableCell:tR,tableRow:eR,text:rR,thematicBreak:iR,toml:Lu,yaml:Lu,definition:Lu,footnoteDefinition:Lu};function Lu(){}const N_=-1,Cc=0,Co=1,sc=2,Tm=3,zm=4,Am=5,jm=6,k_=7,C_=8,pb=typeof self=="object"?self:globalThis,aR=(e,n)=>{const r=(a,s)=>(e.set(s,a),a),l=a=>{if(e.has(a))return e.get(a);const[s,u]=n[a];switch(s){case Cc:case N_:return r(u,a);case Co:{const f=r([],a);for(const h of u)f.push(l(h));return f}case sc:{const f=r({},a);for(const[h,d]of u)f[l(h)]=l(d);return f}case Tm:return r(new Date(u),a);case zm:{const{source:f,flags:h}=u;return r(new RegExp(f,h),a)}case Am:{const f=r(new Map,a);for(const[h,d]of u)f.set(l(h),l(d));return f}case jm:{const f=r(new Set,a);for(const h of u)f.add(l(h));return f}case k_:{const{name:f,message:h}=u;return r(new pb[f](h),a)}case C_:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:f}=new Uint8Array(u);return r(new DataView(f),u)}}return r(new pb[s](u),a)};return l},mb=e=>aR(new Map,e)(0),Yl="",{toString:oR}={},{keys:sR}=Object,go=e=>{const n=typeof e;if(n!=="object"||!e)return[Cc,n];const r=oR.call(e).slice(8,-1);switch(r){case"Array":return[Co,Yl];case"Object":return[sc,Yl];case"Date":return[Tm,Yl];case"RegExp":return[zm,Yl];case"Map":return[Am,Yl];case"Set":return[jm,Yl];case"DataView":return[Co,r]}return r.includes("Array")?[Co,r]:r.includes("Error")?[k_,r]:[sc,r]},Hu=([e,n])=>e===Cc&&(n==="function"||n==="symbol"),uR=(e,n,r,l)=>{const a=(u,f)=>{const h=l.push(u)-1;return r.set(f,h),h},s=u=>{if(r.has(u))return r.get(u);let[f,h]=go(u);switch(f){case Cc:{let m=u;switch(h){case"bigint":f=C_,m=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+h);m=null;break;case"undefined":return a([N_],u)}return a([f,m],u)}case Co:{if(h){let y=u;return h==="DataView"?y=new Uint8Array(u.buffer):h==="ArrayBuffer"&&(y=new Uint8Array(u)),a([h,[...y]],u)}const m=[],p=a([f,m],u);for(const y of u)m.push(s(y));return p}case sc:{if(h)switch(h){case"BigInt":return a([h,u.toString()],u);case"Boolean":case"Number":case"String":return a([h,u.valueOf()],u)}if(n&&"toJSON"in u)return s(u.toJSON());const m=[],p=a([f,m],u);for(const y of sR(u))(e||!Hu(go(u[y])))&&m.push([s(y),s(u[y])]);return p}case Tm:return a([f,u.toISOString()],u);case zm:{const{source:m,flags:p}=u;return a([f,{source:m,flags:p}],u)}case Am:{const m=[],p=a([f,m],u);for(const[y,v]of u)(e||!(Hu(go(y))||Hu(go(v))))&&m.push([s(y),s(v)]);return p}case jm:{const m=[],p=a([f,m],u);for(const y of u)(e||!Hu(go(y)))&&m.push(s(y));return p}}const{message:d}=u;return a([f,{name:h,message:d}],u)};return s},gb=(e,{json:n,lossy:r}={})=>{const l=[];return uR(!(n||r),!!n,new Map,l)(e),l},uc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?mb(gb(e,n)):structuredClone(e):(e,n)=>mb(gb(e,n));function cR(e,n){const r=[{type:"text",value:"↩"}];return n>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),r}function fR(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function dR(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||cR,l=e.options.footnoteBackLabel||fR,a=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},f=[];let h=-1;for(;++h0&&w.push({type:"text",value:" "});let T=typeof r=="string"?r:r(h,v);typeof T=="string"&&(T={type:"text",value:T}),w.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+y+(v>1?"-"+v:""),dataFootnoteBackref:"",ariaLabel:typeof l=="string"?l:l(h,v),className:["data-footnote-backref"]},children:Array.isArray(T)?T:[T]})}const _=m[m.length-1];if(_&&_.type==="element"&&_.tagName==="p"){const T=_.children[_.children.length-1];T&&T.type==="text"?T.value+=" ":_.children.push({type:"text",value:" "}),_.children.push(...w)}else m.push(...w);const S={type:"element",tagName:"li",properties:{id:n+"fn-"+y},children:e.wrap(m,!0)};e.patch(d,S),f.push(S)}if(f.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...uc(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` `},{type:"element",tagName:"ol",properties:{},children:e.wrap(f,!0)},{type:"text",value:` -`}]}}const k_=(function(e){if(e==null)return pR;if(typeof e=="function")return Tc(e);if(typeof e=="object")return Array.isArray(e)?fR(e):dR(e);if(typeof e=="string")return hR(e);throw new Error("Expected function, string, or object as test")});function fR(e){const n=[];let r=-1;for(;++r":""))+")"})}return y;function y(){let v=C_,w,k,S;if((!n||s(h,d,m[m.length-1]||void 0))&&(v=vR(r(h,m)),v[0]===yb))return v;if("children"in h&&h.children){const _=h;if(_.children&&v[0]!==yR)for(k=(l?_.children.length:-1)+u,S=m.concat(_);k>-1&&k<_.children.length;){const T=_.children[k];if(w=f(T,k,S)(),w[0]===yb)return w;k=typeof w[1]=="number"?w[1]:k+u}}return v}}}function vR(e){return Array.isArray(e)?e:typeof e=="number"?[gR,e]:e==null?C_:[e]}function T_(e,n,r,l){let a,s,u;typeof n=="function"&&typeof r!="function"?(s=void 0,u=n,a=r):(s=n,u=r,a=l),xR(e,s,f,a);function f(h,d){const m=d[d.length-1],p=m?m.children.indexOf(h):void 0;return u(h,p,m)}}const Yp={}.hasOwnProperty,bR={};function wR(e,n){const r=n||bR,l=new Map,a=new Map,s=new Map,u={...rR,...r.handlers},f={all:d,applyData:_R,definitionById:l,footnoteById:a,footnoteCounts:s,footnoteOrder:[],handlers:u,one:h,options:r,patch:SR,wrap:NR};return T_(e,function(m){if(m.type==="definition"||m.type==="footnoteDefinition"){const p=m.type==="definition"?l:a,y=String(m.identifier).toUpperCase();p.has(y)||p.set(y,m)}}),f;function h(m,p){const y=m.type,v=f.handlers[y];if(Yp.call(f.handlers,y)&&v)return v(f,m,p);if(f.options.passThrough&&f.options.passThrough.includes(y)){if("children"in m){const{children:k,...S}=m,_=uc(S);return _.children=f.all(m),_}return uc(m)}return(f.options.unknownHandler||ER)(f,m,p)}function d(m){const p=[];if("children"in m){const y=m.children;let v=-1;for(;++v":""))+")"})}return y;function y(){let v=z_,w,k,_;if((!n||s(h,d,m[m.length-1]||void 0))&&(v=wR(r(h,m)),v[0]===yb))return v;if("children"in h&&h.children){const S=h;if(S.children&&v[0]!==vR)for(k=(l?S.children.length:-1)+u,_=m.concat(S);k>-1&&k0&&r.push({type:"text",value:` -`}),r}function xb(e){let n=0,r=e.charCodeAt(n);for(;r===9||r===32;)n++,r=e.charCodeAt(n);return e.slice(n)}function vb(e,n){const r=wR(e,n),l=r.one(e,void 0),a=cR(r),s=Array.isArray(l)?{type:"root",children:l}:l||{type:"root",children:[]};return a&&s.children.push({type:"text",value:` -`},a),s}function kR(e,n){return e&&"run"in e?async function(r,l){const a=vb(r,{file:l,...n});await e.run(a,l)}:function(r,l){return vb(r,{file:l,...e||n})}}function bb(e){if(e)throw e}var cp,wb;function CR(){if(wb)return cp;wb=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,l=Object.getOwnPropertyDescriptor,a=function(d){return typeof Array.isArray=="function"?Array.isArray(d):n.call(d)==="[object Array]"},s=function(d){if(!d||n.call(d)!=="[object Object]")return!1;var m=e.call(d,"constructor"),p=d.constructor&&d.constructor.prototype&&e.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!m&&!p)return!1;var y;for(y in d);return typeof y>"u"||e.call(d,y)},u=function(d,m){r&&m.name==="__proto__"?r(d,m.name,{enumerable:!0,configurable:!0,value:m.newValue,writable:!0}):d[m.name]=m.newValue},f=function(d,m){if(m==="__proto__")if(e.call(d,m)){if(l)return l(d,m).value}else return;return d[m]};return cp=function h(){var d,m,p,y,v,w,k=arguments[0],S=1,_=arguments.length,T=!1;for(typeof k=="boolean"&&(T=k,k=arguments[1]||{},S=2),(k==null||typeof k!="object"&&typeof k!="function")&&(k={});S<_;++S)if(d=arguments[S],d!=null)for(m in d)p=f(k,m),y=f(d,m),k!==y&&(T&&y&&(s(y)||(v=a(y)))?(v?(v=!1,w=p&&a(p)?p:[]):w=p&&s(p)?p:{},u(k,{name:m,newValue:h(T,w,y)})):typeof y<"u"&&u(k,{name:m,newValue:y}));return k},cp}var TR=CR();const fp=qo(TR);function $p(e){if(typeof e!="object"||e===null)return!1;const n=Object.getPrototypeOf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function zR(){const e=[],n={run:r,use:l};return n;function r(...a){let s=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);f(null,...a);function f(h,...d){const m=e[++s];let p=-1;if(h){u(h);return}for(;++pu.length;let h;f&&u.push(a);try{h=e.apply(this,u)}catch(d){const m=d;if(f&&r)throw m;return a(m)}f||(h&&h.then&&typeof h.then=="function"?h.then(s,a):h instanceof Error?a(h):s(h))}function a(u,...f){r||(r=!0,n(u,...f))}function s(u){a(null,u)}}const Jn={basename:MR,dirname:jR,extname:OR,join:DR,sep:"/"};function MR(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Jo(e);let r=0,l=-1,a=e.length,s;if(n===void 0||n.length===0||n.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else l<0&&(s=!0,l=a+1);return l<0?"":e.slice(r,l)}if(n===e)return"";let u=-1,f=n.length-1;for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else u<0&&(s=!0,u=a+1),f>-1&&(e.codePointAt(a)===n.codePointAt(f--)?f<0&&(l=a):(f=-1,l=u));return r===l?l=u:l<0&&(l=e.length),e.slice(r,l)}function jR(e){if(Jo(e),e.length===0)return".";let n=-1,r=e.length,l;for(;--r;)if(e.codePointAt(r)===47){if(l){n=r;break}}else l||(l=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function OR(e){Jo(e);let n=e.length,r=-1,l=0,a=-1,s=0,u;for(;n--;){const f=e.codePointAt(n);if(f===47){if(u){l=n+1;break}continue}r<0&&(u=!0,r=n+1),f===46?a<0?a=n:s!==1&&(s=1):a>-1&&(s=-1)}return a<0||r<0||s===0||s===1&&a===r-1&&a===l+1?"":e.slice(a,r)}function DR(...e){let n=-1,r;for(;++n0&&e.codePointAt(e.length-1)===47&&(r+="/"),n?"/"+r:r}function LR(e,n){let r="",l=0,a=-1,s=0,u=-1,f,h;for(;++u<=e.length;){if(u2){if(h=r.lastIndexOf("/"),h!==r.length-1){h<0?(r="",l=0):(r=r.slice(0,h),l=r.length-1-r.lastIndexOf("/")),a=u,s=0;continue}}else if(r.length>0){r="",l=0,a=u,s=0;continue}}n&&(r=r.length>0?r+"/..":"..",l=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),l=u-a-1;a=u,s=0}else f===46&&s>-1?s++:s=-1}return r}function Jo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const HR={cwd:BR};function BR(){return"/"}function Pp(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function qR(e){if(typeof e=="string")e=new URL(e);else if(!Pp(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return UR(e)}function UR(e){if(e.hostname!==""){const l=new TypeError('File URL host must be "localhost" or empty on darwin');throw l.code="ERR_INVALID_FILE_URL_HOST",l}const n=e.pathname;let r=-1;for(;++r0){let[v,...w]=m;const k=l[y][1];$p(k)&&$p(v)&&(v=fp(!0,k,v)),l[y]=[d,v,...w]}}}}const YR=new jm().freeze();function mp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function gp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function yp(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function _b(e){if(!$p(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Eb(e,n,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Bu(e){return $R(e)?e:new z_(e)}function $R(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function PR(e){return typeof e=="string"||XR(e)}function XR(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const FR="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Nb=[],kb={allowDangerousHtml:!0},QR=/^(https?|ircs?|mailto|xmpp)$/i,ZR=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function KR(e){const n=JR(e),r=WR(e);return e6(n.runSync(n.parse(r),r),e)}function JR(e){const n=e.rehypePlugins||Nb,r=e.remarkPlugins||Nb,l=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...kb}:kb;return YR().use(MD).use(r).use(kR,l).use(n)}function WR(e){const n=e.children||"",r=new z_;return typeof n=="string"&&(r.value=n),r}function e6(e,n){const r=n.allowedElements,l=n.allowElement,a=n.components,s=n.disallowedElements,u=n.skipHtml,f=n.unwrapDisallowed,h=n.urlTransform||t6;for(const m of ZR)Object.hasOwn(n,m.from)&&(""+m.from+(m.to?"use `"+m.to+"` instead":"remove it")+FR+m.id,void 0);return T_(e,d),c4(e,{Fragment:b.Fragment,components:a,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function d(m,p,y){if(m.type==="raw"&&y&&typeof p=="number")return u?y.children.splice(p,1):y.children[p]={type:"text",value:m.value},p;if(m.type==="element"){let v;for(v in op)if(Object.hasOwn(op,v)&&Object.hasOwn(m.properties,v)){const w=m.properties[v],k=op[v];(k===null||k.includes(m.tagName))&&(m.properties[v]=h(String(w||""),v,m))}}if(m.type==="element"){let v=r?!r.includes(m.tagName):s?s.includes(m.tagName):!1;if(!v&&l&&typeof p=="number"&&(v=!l(m,p,y)),v&&y&&typeof p=="number")return f&&m.children?y.children.splice(p,1,...m.children):y.children.splice(p,1),p}}}function t6(e){const n=e.indexOf(":"),r=e.indexOf("?"),l=e.indexOf("#"),a=e.indexOf("/");return n===-1||a!==-1&&n>a||r!==-1&&n>r||l!==-1&&n>l||QR.test(e.slice(0,n))?e:""}function n6({node:e}){const n=he(E=>E.sendGateResponse),r=he(E=>E.wsStatus),[l,a]=V.useState(null),[s,u]=V.useState(""),[f,h]=V.useState(null),[d,m]=V.useState(!1),p=e.status==="waiting",y=e.status==="completed";V.useEffect(()=>{p&&(a(null),u(""),h(null),m(!1))},[p]);const v=p&&r==="connected"&&l===null,w=(E,z)=>{if(v){if(z){a(E),h(z);return}a(E),m(!0),n(e.name,E)}},k=()=>{if(l===null||f===null)return;const E={[f]:s};m(!0),n(e.name,l,E),h(null)},S=e.option_details,_=S==null?void 0:S.find(E=>E.value===e.selected_option),T=(_==null?void 0:_.label)||e.selected_option;return b.jsxs("div",{className:"space-y-3",children:[p&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30",children:[b.jsxs("span",{className:"relative flex h-2.5 w-2.5 flex-shrink-0",children:[b.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),b.jsx("span",{className:"relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"})]}),b.jsx("span",{className:"text-xs font-semibold text-amber-400 tracking-wide",children:"Decision Required"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-amber-500/50 pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!1})}),S&&S.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsx("div",{className:"flex flex-col gap-1.5",children:S.map(E=>{const z=l===E.value,I=l!==null&&!z;return b.jsx("button",{disabled:!v&&!z,onClick:()=>w(E.value,E.prompt_for),className:`w-full text-left px-3 py-2.5 rounded-lg border transition-all duration-150 ${z?"border-green-500/60 bg-green-500/10":I?"border-[var(--border)] opacity-40 cursor-default":"border-[var(--border)] bg-[var(--surface)] hover:border-amber-400/60 hover:bg-amber-500/5 cursor-pointer group"}`,children:b.jsxs("div",{className:"flex items-center gap-2.5",children:[b.jsx("div",{className:"flex-shrink-0",children:z?b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}):b.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-colors ${I?"border-[var(--border)]":"border-[var(--border)] group-hover:border-amber-400"}`})}),b.jsx("div",{className:"flex-1 min-w-0",children:b.jsx("span",{className:`text-xs font-medium ${z?"text-green-400":"text-[var(--text)]"}`,children:E.label})}),E.route&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0",children:["→ ",E.route]})]})},E.value)})}),d&&!f&&b.jsxs("div",{className:"flex items-center gap-2 px-1",children:[b.jsx(ko,{className:"w-3 h-3 text-green-400 animate-spin"}),b.jsx("span",{className:"text-[10px] text-green-400",children:"Sending..."})]}),v&&b.jsx("p",{className:"text-[10px] text-[var(--text-muted)] px-1",children:"Select an option to continue the workflow"})]}),!S&&e.options&&e.options.length>0&&b.jsxs("div",{className:"space-y-1.5",children:[b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:"Options"}),b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded border border-[var(--border)] text-[var(--text-muted)]",children:E},E))})]}),f&&b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--bg)] overflow-hidden",children:[b.jsx("div",{className:"px-3 py-2 border-b border-[var(--border)] bg-[var(--surface)]",children:b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:f})}),b.jsxs("div",{className:"p-3 space-y-2",children:[b.jsx("input",{type:"text",value:s,onChange:E=>u(E.target.value),onKeyDown:E=>E.key==="Enter"&&k(),placeholder:`Enter ${f}...`,className:"w-full text-xs px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--bg)] text-[var(--text)] outline-none focus:border-amber-400 transition-colors",autoFocus:!0}),b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:"Press Enter or click Submit"}),b.jsxs("button",{onClick:k,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-amber-500 text-white hover:bg-amber-600 transition-colors font-medium",children:[b.jsx(fN,{className:"w-3 h-3"}),"Submit"]})]})]})]})]}),y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-green-500/10 border border-green-500/30",children:[b.jsx(Vi,{className:"w-3.5 h-3.5 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-green-400 tracking-wide",children:"Decision Completed"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!0})}),T&&b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)]",children:T}),e.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",e.route]})]}),S&&S.length>1&&b.jsx("div",{className:"space-y-1",children:S.filter(E=>E.value!==e.selected_option).map(E=>b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg opacity-35",children:[b.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-[var(--border)] flex-shrink-0"}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:E.label}),E.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",E.route]})]},E.value))}),!S&&e.options&&e.options.length>0&&b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsxs("span",{className:`text-[11px] px-2.5 py-1 rounded-lg border ${E===e.selected_option?"border-green-500/30 text-green-400 bg-green-500/5":"border-[var(--border)] text-[var(--text-muted)] opacity-40"}`,children:[E===e.selected_option&&"✓ ",E]},E))}),b.jsx(r6,{node:e})]}),!p&&!y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Human Gate"}),b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] capitalize",children:["(",e.status,")"]})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!0})})]})]})}function xp({text:e,muted:n}){const r=n?"text-[var(--text-muted)]":"text-[var(--text)]";return b.jsx("div",{className:`gate-markdown text-xs leading-relaxed ${r}`,children:b.jsx(KR,{components:{h1:({children:l})=>b.jsx("h1",{className:"text-sm font-bold mb-2 mt-1",children:l}),h2:({children:l})=>b.jsx("h2",{className:"text-xs font-bold mb-1.5 mt-1",children:l}),h3:({children:l})=>b.jsx("h3",{className:"text-xs font-semibold mb-1 mt-1",children:l}),p:({children:l})=>b.jsx("p",{className:"mb-1.5 last:mb-0",children:l}),ul:({children:l})=>b.jsx("ul",{className:"list-disc list-inside mb-1.5 space-y-0.5",children:l}),ol:({children:l})=>b.jsx("ol",{className:"list-decimal list-inside mb-1.5 space-y-0.5",children:l}),li:({children:l})=>b.jsx("li",{children:l}),code:({children:l,className:a})=>(a==null?void 0:a.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-2 py-1.5 font-mono text-[11px] my-1 overflow-x-auto whitespace-pre",children:l}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:l}),pre:({children:l})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-2.5 py-2 font-mono text-[11px] my-1.5 overflow-x-auto",children:l}),strong:({children:l})=>b.jsx("strong",{className:"font-semibold",children:l}),em:({children:l})=>b.jsx("em",{className:"italic",children:l}),a:({href:l,children:a})=>b.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:a}),blockquote:({children:l})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-2.5 my-1.5 opacity-80",children:l}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-2"})},children:e})})}function r6({node:e}){const n=[];if(e.route&&n.push({label:"Route",value:`→ ${e.route}`}),e.additional_input){const r=typeof e.additional_input=="object"?JSON.stringify(e.additional_input):e.additional_input;n.push({label:"Additional Input",value:r})}return n.length===0?null:b.jsx(el,{items:n})}function i6({node:e}){const n=e.status,r=$e[n]||$e.pending,a=yj()[e.name],s=e.type==="for_each_group",[u,f]=V.useState(!0),h=[];e.elapsed!=null&&h.push({label:"Elapsed",value:Qt(e.elapsed)}),a&&(h.push({label:"Total",value:a.total}),h.push({label:"Completed",value:a.completed}),a.failed>0&&h.push({label:"Failed",value:a.failed})),e.success_count!=null&&h.push({label:"Success",value:e.success_count}),e.failure_count!=null&&h.push({label:"Failures",value:e.failure_count});const d=e.for_each_items;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:s?"For-Each Group":"Parallel Group"})]}),a&&a.total>0&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-[10px] text-[var(--text-muted)]",children:[b.jsx("span",{children:"Progress"}),b.jsxs("span",{children:[a.completed+a.failed,"/",a.total]})]}),b.jsx("div",{className:"h-1.5 bg-[var(--bg)] rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${(a.completed+a.failed)/a.total*100}%`,background:a.failed>0?`linear-gradient(90deg, var(--completed) ${a.completed/(a.completed+a.failed)*100}%, var(--failed) 0%)`:"var(--completed)"}})})]}),b.jsx(el,{items:h}),s&&d&&d.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold hover:text-[var(--text)] transition-colors",children:[u?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Items (",d.length,")"]}),u&&b.jsx("div",{className:"space-y-1",children:d.map(m=>b.jsx(a6,{item:m},`${m.key}-${m.index}`))})]})]})}const l6={running:$e.running,completed:$e.completed,failed:$e.failed};function a6({item:e}){const[n,r]=V.useState(e.status==="running"),l=l6[e.status],a=!!(e.prompt||e.output!=null||e.activity&&e.activity.length>0||e.error_type),s=[];return e.elapsed!=null&&s.push({label:"Elapsed",value:Qt(e.elapsed)}),e.tokens!=null&&s.push({label:"Tokens",value:Vn(e.tokens)}),e.cost_usd!=null&&s.push({label:"Cost",value:mi(e.cost_usd)}),b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--surface)] overflow-hidden",children:[b.jsxs("button",{onClick:()=>a&&r(!n),className:"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--node-bg)] transition-colors",disabled:!a,children:[a?n?b.jsx(Ji,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):e.status==="running"?b.jsx(ko,{className:"w-3 h-3 animate-spin flex-shrink-0",style:{color:l}}):b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0 ml-0.5 mr-0.5",style:{backgroundColor:l}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1 min-w-0",children:e.key}),!n&&(e.elapsed!=null||e.tokens!=null||e.cost_usd!=null)&&b.jsxs("span",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)] flex-shrink-0",children:[e.elapsed!=null&&b.jsx("span",{children:Qt(e.elapsed)}),e.tokens!=null&&b.jsx("span",{children:Vn(e.tokens)}),e.cost_usd!=null&&b.jsx("span",{children:mi(e.cost_usd)})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${l}20`,color:l},children:e.status})]}),n&&a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[s.length>0&&b.jsx(el,{items:s}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!1}),e.activity&&e.activity.length>0&&b.jsx(xm,{activity:e.activity,defaultExpanded:e.status!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output",defaultExpanded:!0}),e.status==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]})]})]})}function o6({node:e}){const n=e.status,r=$e[n]||$e.pending,l=he(f=>f.navigateIntoSubworkflow),s=IS().filter(f=>f.parentAgent===e.name),u=[];return e.elapsed!=null&&u.push({label:"Elapsed",value:Qt(e.elapsed)}),e.cost_usd!=null&&u.push({label:"Cost",value:mi(e.cost_usd)}),e.tokens!=null&&u.push({label:"Tokens",value:Vn(e.tokens)}),e.iteration!=null&&e.iteration>1&&u.push({label:"Iteration",value:e.iteration}),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Subworkflow Agent"})]}),b.jsx(el,{items:u}),s.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:["Subworkflow Runs (",s.length,")"]}),b.jsx("div",{className:"space-y-1",children:s.map((f,h)=>b.jsx(s6,{ctx:f,onClick:()=>l(e.name,f.iteration)},`${f.parentAgent}-${f.iteration}-${h}`))})]}),n==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]}),s.length===0&&n==="pending"&&b.jsx("div",{className:"text-xs text-[var(--text-muted)] italic",children:"Subworkflow has not started yet."})]})}function s6({ctx:e,onClick:n}){const r=$e[e.status]||$e.pending;return b.jsxs("button",{onClick:n,className:"flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--surface)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[b.jsx(Xp,{className:"w-3.5 h-3.5 flex-shrink-0",style:{color:r}}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:e.workflowName||e.workflowFile||"Subworkflow"}),b.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)]",children:[e.agentsTotal>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(Db,{className:"w-2.5 h-2.5"}),e.agentsCompleted,"/",e.agentsTotal," agents"]}),e.totalCost>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(jb,{className:"w-2.5 h-2.5"}),mi(e.totalCost)]})]})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${r}20`,color:r},children:e.status}),b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}function u6(){const e=he(f=>f.selectedNode),n=Wi(),r=he(f=>f.selectNode),[l,a]=V.useState(!1);V.useEffect(()=>(requestAnimationFrame(()=>a(!0)),()=>a(!1)),[e]);const s=e?n[e]:null;if(!e||!s)return b.jsxs("div",{className:"h-full flex flex-col bg-[var(--surface)]",children:[b.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Detail"})}),b.jsx("div",{className:"flex-1 flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Click a node to view details"})})]});const u=(()=>{switch(s.type){case"script":return R5;case"human_gate":return n6;case"parallel_group":case"for_each_group":return i6;case"workflow":return o6;default:return O5}})();return b.jsxs("div",{className:Be("h-full flex flex-col bg-[var(--surface)] transition-all duration-150 ease-out",l?"translate-x-0 opacity-100":"translate-x-4 opacity-0"),children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)] flex-shrink-0",children:[b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] truncate",children:e}),b.jsx("button",{onClick:()=>r(null),className:"p-1 rounded hover:bg-[var(--surface-hover)] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Close panel",children:b.jsx(Io,{className:"w-4 h-4"})})]}),b.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:b.jsx(u,{node:s})})]})}function Xu(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function c6(){const e=he(S=>S.eventLog),n=he(S=>S.activityLog),r=he(S=>S.workflowOutput),l=he(S=>S.workflowStatus),[a,s]=V.useState("log"),[u,f]=V.useState(!1),[h,d]=V.useState(0),[m,p]=V.useState(0),y=V.useCallback(S=>{s(S),S==="log"&&d(e.length),S==="activity"&&p(n.length)},[e.length,n.length]);V.useEffect(()=>{a==="log"&&d(e.length)},[a,e.length]),V.useEffect(()=>{a==="activity"&&p(n.length)},[a,n.length]),V.useEffect(()=>{l==="completed"&&r!=null&&s("output")},[l,r]);const v=r!=null,w=a!=="log"?Math.max(0,e.length-h):0,k=a!=="activity"?Math.max(0,n.length-m):0;return u?b.jsx("div",{className:"flex items-center bg-[var(--surface)] border-t border-[var(--border)] px-3 py-1",children:b.jsxs("button",{onClick:()=>f(!1),className:"flex items-center gap-1.5 text-xs text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",children:[b.jsx(W2,{className:"w-3 h-3"}),b.jsx(Nx,{className:"w-3 h-3"}),b.jsx("span",{children:"Output"}),n.length>0&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)]",children:["(",n.length,")"]})]})}):b.jsxs("div",{className:"flex flex-col h-full bg-[var(--surface)] border-t border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center justify-between px-2 flex-shrink-0 border-b border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center gap-0.5",children:[b.jsx(vp,{active:a==="log",onClick:()=>y("log"),icon:b.jsx(Nx,{className:"w-3 h-3"}),label:"Log",count:e.length,unread:w}),b.jsx(vp,{active:a==="activity",onClick:()=>y("activity"),icon:b.jsx(Mb,{className:"w-3 h-3"}),label:"Activity",count:n.length,unread:k}),b.jsx(vp,{active:a==="output",onClick:()=>y("output"),icon:b.jsx(lN,{className:"w-3 h-3"}),label:"Output",badge:v?l==="failed"?"error":"success":void 0})]}),b.jsx("button",{onClick:()=>f(!0),className:"p-1 rounded text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors",title:"Collapse panel",children:b.jsx(Ji,{className:"w-3.5 h-3.5"})})]}),b.jsx("div",{className:"flex-1 overflow-hidden",children:a==="activity"?b.jsx(f6,{entries:n}):a==="log"?b.jsx(d6,{entries:e}):b.jsx(h6,{output:r,status:l})})]})}function vp({active:e,onClick:n,icon:r,label:l,count:a,badge:s,unread:u}){return b.jsxs("button",{onClick:n,className:Be("relative flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors border-b-2 -mb-px",e?"text-[var(--text)] border-[var(--accent)]":"text-[var(--text-muted)] border-transparent hover:text-[var(--text-secondary)]"),children:[r,b.jsx("span",{children:l}),a!=null&&a>0&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums",children:a}),s&&b.jsx("span",{className:Be("w-1.5 h-1.5 rounded-full",s==="success"?"bg-[var(--completed)]":"bg-[var(--failed)]")}),!e&&u!=null&&u>0&&b.jsx("span",{className:"absolute -top-0.5 -right-0.5 flex h-3.5 min-w-[14px] items-center justify-center rounded-full bg-[var(--accent)] px-1",children:b.jsx("span",{className:"text-[8px] font-bold text-white leading-none tabular-nums",children:u>99?"99+":u})})]})}const Cb={reasoning:{color:"text-indigo-400/70",label:"THINK",labelColor:"text-indigo-500"},"tool-start":{color:"text-blue-400",label:"TOOL →",labelColor:"text-blue-500"},"tool-complete":{color:"text-green-400",label:"TOOL ←",labelColor:"text-green-600"},turn:{color:"text-amber-400",label:"STEP",labelColor:"text-amber-500"},message:{color:"text-[var(--text)]",label:"MSG",labelColor:"text-[var(--text-muted)]"},prompt:{color:"text-cyan-400/70",label:"PROMPT",labelColor:"text-cyan-600"}};function f6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(h=>h.selectNode),[a,s]=V.useState(""),u=V.useCallback(()=>{const h=n.current;if(!h)return;const d=h.scrollHeight-h.scrollTop-h.clientHeight<30;r.current=d},[]),f=V.useMemo(()=>{if(!a)return e;const h=a.toLowerCase();return e.filter(d=>d.source.toLowerCase().includes(h)||Xu(d.message).toLowerCase().includes(h))},[e,a]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[f.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for agent activity…"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx(cN,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("input",{type:"text",value:a,onChange:h=>s(h.target.value),placeholder:"Filter by agent or message…",className:"flex-1 bg-transparent text-[11px] text-[var(--text)] placeholder:text-[var(--text-muted)] outline-none min-w-0"}),a&&b.jsxs(b.Fragment,{children:[b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums flex-shrink-0",children:[f.length," of ",e.length]}),b.jsx("button",{onClick:()=>s(""),className:"text-[var(--text-muted)] hover:text-[var(--text)] transition-colors flex-shrink-0",title:"Clear filter",children:b.jsx(Io,{className:"w-3 h-3"})})]})]}),b.jsxs("div",{ref:n,onScroll:u,className:"flex-1 overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:[f.map((h,d)=>{const m=Cb[h.type]||Cb.message,p=A_(h.timestamp);return b.jsxs("div",{className:"group",children:[b.jsxs("div",{className:"flex gap-1.5 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:p}),b.jsx("span",{className:Be("flex-shrink-0 w-[5ch] text-[10px] font-semibold tabular-nums select-none",m.labelColor),children:m.label}),b.jsx("button",{onClick:()=>l(h.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${h.source}`,children:h.source}),b.jsx("span",{className:Be("break-words min-w-0",m.color,h.type==="reasoning"&&"italic"),children:Xu(h.message)})]}),h.detail&&b.jsx("div",{className:"ml-[calc(7ch+5ch+8ch+1rem)] px-2 py-1 my-0.5 bg-[var(--bg)] rounded text-[10px] text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto border-l-2 border-[var(--border)]",children:Xu(h.detail)})]},d)}),a&&f.length===0&&b.jsx("div",{className:"flex items-center justify-center py-4",children:b.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:['No matches for "',a,'"']})})]})]})}const Tb={info:{color:"text-blue-400",icon:"›"},success:{color:"text-green-400",icon:"✓"},error:{color:"text-red-400",icon:"✗"},warning:{color:"text-amber-400",icon:"⚠"},debug:{color:"text-[var(--text-muted)]",icon:"·"}};function d6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(s=>s.selectNode),a=V.useCallback(()=>{const s=n.current;if(!s)return;const u=s.scrollHeight-s.scrollTop-s.clientHeight<30;r.current=u},[]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for events…"})}):b.jsx("div",{ref:n,onScroll:a,className:"h-full overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:e.map((s,u)=>{const f=Tb[s.level]||Tb.info,h=A_(s.timestamp);return b.jsxs("div",{className:"flex gap-2 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:h}),b.jsx("span",{className:Be("flex-shrink-0 w-3 text-center select-none",f.color),children:f.icon}),b.jsx("button",{onClick:()=>l(s.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${s.source}`,children:s.source}),b.jsx("span",{className:Be("break-words",s.level==="error"?"text-red-400":s.level==="success"?"text-green-400":"text-[var(--text)]"),children:Xu(s.message)})]},u)})})}function A_(e){const n=new Date(e*1e3),r=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),a=n.getSeconds().toString().padStart(2,"0");return`${r}:${l}:${a}`}function h6({output:e,status:n}){const[r,l]=V.useState(!1),a=Lb(e),s=async()=>{a&&(await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3))};return e==null?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n==="running"?"Workflow running — output will appear when complete…":n==="failed"?"Workflow failed — no output produced":"No output yet"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center justify-between px-3 py-1 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] uppercase tracking-wider font-semibold",children:"Workflow Result"}),b.jsx("button",{onClick:s,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors px-1.5 py-0.5 rounded hover:bg-[var(--surface-hover)]",title:"Copy to clipboard",children:r?b.jsxs(b.Fragment,{children:[b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}),b.jsx("span",{className:"text-[var(--completed)]",children:"Copied"})]}):b.jsxs(b.Fragment,{children:[b.jsx(Ob,{className:"w-3 h-3"}),b.jsx("span",{children:"Copy"})]})})]}),b.jsx("div",{className:"flex-1 overflow-auto px-3 py-2",children:b.jsx("pre",{className:"font-mono text-[11px] leading-relaxed text-[var(--text)] whitespace-pre-wrap break-words",children:typeof e=="object"?b.jsx(p6,{text:a}):a})})]})}function p6({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function m6(){const e=he(n=>n.selectedNode);return b.jsxs(wp,{direction:"vertical",className:"flex-1 overflow-hidden",children:[b.jsx(mo,{defaultSize:70,minSize:30,children:b.jsxs(wp,{direction:"horizontal",className:"h-full",children:[b.jsx(mo,{defaultSize:e?65:100,minSize:40,children:b.jsx(T5,{})}),e&&b.jsxs(b.Fragment,{children:[b.jsx(Sp,{className:"w-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-col-resize"}),b.jsx(mo,{defaultSize:35,minSize:20,maxSize:60,children:b.jsx(u6,{})})]})]})}),b.jsx(Sp,{className:"h-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-row-resize"}),b.jsx(mo,{defaultSize:30,minSize:5,maxSize:70,collapsible:!0,children:b.jsx(c6,{})})]})}const g6=3e4;function y6(){const e=he(p=>p.processEvent),n=he(p=>p.replayState),r=he(p=>p.setWsStatus),l=he(p=>p.setWsSend),a=V.useRef(null),s=V.useRef(1e3),u=V.useRef(null),f=V.useRef(null),h=V.useRef(()=>{}),d=V.useCallback(()=>{r("reconnecting"),u.current=setTimeout(()=>{s.current=Math.min(s.current*2,g6),h.current()},s.current)},[r]),m=V.useCallback(()=>{r("connecting"),f.current&&f.current.abort();const p=new AbortController;f.current=p,fetch("/api/state",{signal:p.signal}).then(y=>y.json()).then(y=>{y&&y.length>0&&n(y);const w=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{const k=new WebSocket(w);a.current=k,k.onopen=()=>{s.current=1e3,r("connected"),l(S=>{k.readyState===WebSocket.OPEN&&k.send(JSON.stringify(S))})},k.onmessage=S=>{try{const _=JSON.parse(S.data);e(_)}catch(_){console.error("Failed to parse WebSocket message:",_)}},k.onclose=()=>{r("disconnected"),l(null),a.current=null,d()},k.onerror=()=>{}}catch{d()}}).catch(y=>{p.signal.aborted||(console.error("Failed to fetch state:",y),d())})},[e,n,r,l,d]);h.current=m,V.useEffect(()=>(m(),()=>{f.current&&f.current.abort(),u.current&&clearTimeout(u.current),a.current&&a.current.close(),l(null)}),[m,l])}function x6(){const e=he(d=>d.setReplayMode),n=he(d=>d.setWsStatus),r=he(d=>d.replayPlaying),l=he(d=>d.replayPosition),a=he(d=>d.replayTotalEvents),s=he(d=>d.replaySpeed),u=he(d=>d.replayEvents),f=he(d=>d.setReplayPosition);V.useEffect(()=>{n("connecting"),fetch("/api/state").then(d=>d.json()).then(d=>{e(d),n("connected")}).catch(d=>{console.error("Failed to load replay events:",d),n("disconnected")})},[e,n]);const h=V.useRef(null);V.useEffect(()=>{if(!r||l>=a){h.current&&clearTimeout(h.current),r&&l>=a&&he.getState().setReplayPlaying(!1);return}const d=u[l-1],m=u[l];let p=100;if(d&&m){const y=(m.timestamp-d.timestamp)*1e3;p=Math.max(16,Math.min(y/s,2e3))}return h.current=setTimeout(()=>{f(l+1)},p),()=>{h.current&&clearTimeout(h.current)}},[r,l,a,s,u,f])}function v6(){return y6(),null}function b6(){return x6(),null}function w6(){const[e,n]=V.useState(null),r=he(s=>s.replayMode),l=he(s=>s.selectNode),a=he(s=>s.workflowName);return V.useEffect(()=>{fetch("/api/replay/info").then(s=>{s.ok?n(!0):n(!1)}).catch(()=>n(!1))},[]),V.useEffect(()=>{document.title=a?`Conductor — ${a}`:"Conductor Dashboard"},[a]),V.useEffect(()=>{const s=u=>{u.key==="Escape"&&l(null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[l]),e===null?null:b.jsxs("div",{className:"h-full flex flex-col bg-[var(--bg)]",children:[e?b.jsx(b6,{}):b.jsx(v6,{}),b.jsx(CN,{}),b.jsx(TN,{}),b.jsx(m6,{}),r?b.jsx(ON,{}):b.jsx(AN,{})]})}F2.createRoot(document.getElementById("root")).render(b.jsx(V.StrictMode,{children:b.jsx(w6,{})})); +`}),r}function xb(e){let n=0,r=e.charCodeAt(n);for(;r===9||r===32;)n++,r=e.charCodeAt(n);return e.slice(n)}function vb(e,n){const r=_R(e,n),l=r.one(e,void 0),a=dR(r),s=Array.isArray(l)?{type:"root",children:l}:l||{type:"root",children:[]};return a&&s.children.push({type:"text",value:` +`},a),s}function TR(e,n){return e&&"run"in e?async function(r,l){const a=vb(r,{file:l,...n});await e.run(a,l)}:function(r,l){return vb(r,{file:l,...e||n})}}function bb(e){if(e)throw e}var cp,wb;function zR(){if(wb)return cp;wb=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,l=Object.getOwnPropertyDescriptor,a=function(d){return typeof Array.isArray=="function"?Array.isArray(d):n.call(d)==="[object Array]"},s=function(d){if(!d||n.call(d)!=="[object Object]")return!1;var m=e.call(d,"constructor"),p=d.constructor&&d.constructor.prototype&&e.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!m&&!p)return!1;var y;for(y in d);return typeof y>"u"||e.call(d,y)},u=function(d,m){r&&m.name==="__proto__"?r(d,m.name,{enumerable:!0,configurable:!0,value:m.newValue,writable:!0}):d[m.name]=m.newValue},f=function(d,m){if(m==="__proto__")if(e.call(d,m)){if(l)return l(d,m).value}else return;return d[m]};return cp=function h(){var d,m,p,y,v,w,k=arguments[0],_=1,S=arguments.length,T=!1;for(typeof k=="boolean"&&(T=k,k=arguments[1]||{},_=2),(k==null||typeof k!="object"&&typeof k!="function")&&(k={});_u.length;let h;f&&u.push(a);try{h=e.apply(this,u)}catch(d){const m=d;if(f&&r)throw m;return a(m)}f||(h&&h.then&&typeof h.then=="function"?h.then(s,a):h instanceof Error?a(h):s(h))}function a(u,...f){r||(r=!0,n(u,...f))}function s(u){a(null,u)}}const Jn={basename:OR,dirname:DR,extname:RR,join:LR,sep:"/"};function OR(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Jo(e);let r=0,l=-1,a=e.length,s;if(n===void 0||n.length===0||n.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else l<0&&(s=!0,l=a+1);return l<0?"":e.slice(r,l)}if(n===e)return"";let u=-1,f=n.length-1;for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else u<0&&(s=!0,u=a+1),f>-1&&(e.codePointAt(a)===n.codePointAt(f--)?f<0&&(l=a):(f=-1,l=u));return r===l?l=u:l<0&&(l=e.length),e.slice(r,l)}function DR(e){if(Jo(e),e.length===0)return".";let n=-1,r=e.length,l;for(;--r;)if(e.codePointAt(r)===47){if(l){n=r;break}}else l||(l=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function RR(e){Jo(e);let n=e.length,r=-1,l=0,a=-1,s=0,u;for(;n--;){const f=e.codePointAt(n);if(f===47){if(u){l=n+1;break}continue}r<0&&(u=!0,r=n+1),f===46?a<0?a=n:s!==1&&(s=1):a>-1&&(s=-1)}return a<0||r<0||s===0||s===1&&a===r-1&&a===l+1?"":e.slice(a,r)}function LR(...e){let n=-1,r;for(;++n0&&e.codePointAt(e.length-1)===47&&(r+="/"),n?"/"+r:r}function BR(e,n){let r="",l=0,a=-1,s=0,u=-1,f,h;for(;++u<=e.length;){if(u2){if(h=r.lastIndexOf("/"),h!==r.length-1){h<0?(r="",l=0):(r=r.slice(0,h),l=r.length-1-r.lastIndexOf("/")),a=u,s=0;continue}}else if(r.length>0){r="",l=0,a=u,s=0;continue}}n&&(r=r.length>0?r+"/..":"..",l=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),l=u-a-1;a=u,s=0}else f===46&&s>-1?s++:s=-1}return r}function Jo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const qR={cwd:UR};function UR(){return"/"}function Pp(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function IR(e){if(typeof e=="string")e=new URL(e);else if(!Pp(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return VR(e)}function VR(e){if(e.hostname!==""){const l=new TypeError('File URL host must be "localhost" or empty on darwin');throw l.code="ERR_INVALID_FILE_URL_HOST",l}const n=e.pathname;let r=-1;for(;++r0){let[v,...w]=m;const k=l[y][1];$p(k)&&$p(v)&&(v=fp(!0,k,v)),l[y]=[d,v,...w]}}}}const PR=new Mm().freeze();function mp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function gp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function yp(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function _b(e){if(!$p(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Eb(e,n,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Bu(e){return XR(e)?e:new j_(e)}function XR(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function FR(e){return typeof e=="string"||QR(e)}function QR(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const ZR="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Nb=[],kb={allowDangerousHtml:!0},KR=/^(https?|ircs?|mailto|xmpp)$/i,JR=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function M_(e){const n=WR(e),r=e6(e);return t6(n.runSync(n.parse(r),r),e)}function WR(e){const n=e.rehypePlugins||Nb,r=e.remarkPlugins||Nb,l=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...kb}:kb;return PR().use(OD).use(r).use(TR,l).use(n)}function e6(e){const n=e.children||"",r=new j_;return typeof n=="string"&&(r.value=n),r}function t6(e,n){const r=n.allowedElements,l=n.allowElement,a=n.components,s=n.disallowedElements,u=n.skipHtml,f=n.unwrapDisallowed,h=n.urlTransform||n6;for(const m of JR)Object.hasOwn(n,m.from)&&(""+m.from+(m.to?"use `"+m.to+"` instead":"remove it")+ZR+m.id,void 0);return A_(e,d),d4(e,{Fragment:b.Fragment,components:a,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function d(m,p,y){if(m.type==="raw"&&y&&typeof p=="number")return u?y.children.splice(p,1):y.children[p]={type:"text",value:m.value},p;if(m.type==="element"){let v;for(v in op)if(Object.hasOwn(op,v)&&Object.hasOwn(m.properties,v)){const w=m.properties[v],k=op[v];(k===null||k.includes(m.tagName))&&(m.properties[v]=h(String(w||""),v,m))}}if(m.type==="element"){let v=r?!r.includes(m.tagName):s?s.includes(m.tagName):!1;if(!v&&l&&typeof p=="number"&&(v=!l(m,p,y)),v&&y&&typeof p=="number")return f&&m.children?y.children.splice(p,1,...m.children):y.children.splice(p,1),p}}}function n6(e){const n=e.indexOf(":"),r=e.indexOf("?"),l=e.indexOf("#"),a=e.indexOf("/");return n===-1||a!==-1&&n>a||r!==-1&&n>r||l!==-1&&n>l||KR.test(e.slice(0,n))?e:""}const r6=new Set([".md",".markdown",".mdx"]);function i6({filePath:e,onClose:n}){const[r,l]=V.useState(null),[a,s]=V.useState(null),[u,f]=V.useState(!0),h=V.useCallback(async()=>{f(!0),s(null);try{const m=e.split("/").map(v=>encodeURIComponent(v)).join("/"),p=await fetch(`/api/files/${m}`);if(!p.ok){const v=await p.json().catch(()=>({}));s(v.error||`HTTP ${p.status}`);return}const y=await p.json();l(y)}catch(m){s(m instanceof Error?m.message:"Failed to load file")}finally{f(!1)}},[e]);V.useEffect(()=>{h()},[h]),V.useEffect(()=>{const m=p=>{p.key==="Escape"&&n()};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[n]);const d=r?r6.has(r.extension):!1;return b.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",children:b.jsxs("div",{className:"relative flex flex-col w-[90vw] max-w-3xl max-h-[80vh] rounded-xl border border-[var(--border)] bg-[var(--surface)] shadow-2xl overflow-hidden",children:[b.jsxs("div",{className:"flex items-center gap-2 px-4 py-2.5 border-b border-[var(--border)] bg-[var(--surface-raised)] flex-shrink-0",children:[b.jsx(Db,{className:"w-4 h-4 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1",title:e,children:e}),r&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0 tabular-nums",children:a6(r.size)}),b.jsx("button",{onClick:n,className:"p-1 rounded-md text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors flex-shrink-0",title:"Close (Esc)",children:b.jsx(ca,{className:"w-4 h-4"})})]}),b.jsxs("div",{className:"flex-1 overflow-auto px-5 py-4 min-h-0",children:[u&&b.jsx("div",{className:"flex items-center justify-center py-12",children:b.jsx(na,{className:"w-5 h-5 text-[var(--text-muted)] animate-spin"})}),a&&b.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-red-500/10 border border-red-500/30",children:[b.jsx(Hb,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs text-red-300",children:a})]}),r&&!a&&(d?b.jsx("div",{className:"file-viewer-markdown text-xs leading-relaxed text-[var(--text)]",children:b.jsx(l6,{content:r.content})}):b.jsx("pre",{className:"font-mono text-[11px] leading-[1.6] text-[var(--text)] whitespace-pre-wrap break-words",children:r.content}))]})]})})}function l6({content:e}){return b.jsx(M_,{components:{h1:({children:n})=>b.jsx("h1",{className:"text-base font-bold mb-3 mt-2 text-[var(--text)]",children:n}),h2:({children:n})=>b.jsx("h2",{className:"text-sm font-bold mb-2 mt-3 text-[var(--text)]",children:n}),h3:({children:n})=>b.jsx("h3",{className:"text-xs font-bold mb-1.5 mt-2 text-[var(--text)]",children:n}),p:({children:n})=>b.jsx("p",{className:"mb-2 last:mb-0",children:n}),ul:({children:n})=>b.jsx("ul",{className:"list-disc list-inside mb-2 space-y-1 ml-2",children:n}),ol:({children:n})=>b.jsx("ol",{className:"list-decimal list-inside mb-2 space-y-1 ml-2",children:n}),li:({children:n})=>b.jsx("li",{children:n}),code:({children:n,className:r})=>(r==null?void 0:r.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-3 py-2 font-mono text-[11px] my-2 overflow-x-auto whitespace-pre",children:n}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:n}),pre:({children:n})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-3 py-2.5 font-mono text-[11px] my-2 overflow-x-auto",children:n}),strong:({children:n})=>b.jsx("strong",{className:"font-semibold",children:n}),em:({children:n})=>b.jsx("em",{className:"italic",children:n}),a:({href:n,children:r})=>b.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:r}),blockquote:({children:n})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-3 my-2 opacity-80",children:n}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-3"}),table:({children:n})=>b.jsx("div",{className:"overflow-x-auto my-2",children:b.jsx("table",{className:"text-[11px] border-collapse w-full",children:n})}),th:({children:n})=>b.jsx("th",{className:"border border-[var(--border)] px-2 py-1 text-left bg-[var(--bg)] font-semibold",children:n}),td:({children:n})=>b.jsx("td",{className:"border border-[var(--border)] px-2 py-1",children:n})},children:e})}function a6(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function o6({node:e}){const n=he(R=>R.sendGateResponse),r=he(R=>R.wsStatus),[l,a]=V.useState(null),[s,u]=V.useState(""),[f,h]=V.useState(null),[d,m]=V.useState(!1),[p,y]=V.useState(null),v=e.status==="waiting",w=e.status==="completed";V.useEffect(()=>{v&&(a(null),u(""),h(null),m(!1))},[v]);const k=v&&r==="connected"&&l===null,_=(R,z)=>{if(k){if(z){a(R),h(z);return}a(R),m(!0),n(e.name,R)}},S=()=>{if(l===null||f===null)return;const R={[f]:s};m(!0),n(e.name,l,R),h(null)},T=e.option_details,N=T==null?void 0:T.find(R=>R.value===e.selected_option),A=(N==null?void 0:N.label)||e.selected_option;return b.jsxs("div",{className:"space-y-3",children:[v&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30",children:[b.jsxs("span",{className:"relative flex h-2.5 w-2.5 flex-shrink-0",children:[b.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),b.jsx("span",{className:"relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"})]}),b.jsx("span",{className:"text-xs font-semibold text-amber-400 tracking-wide",children:"Decision Required"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-amber-500/50 pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!1,onFileClick:y})}),T&&T.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsx("div",{className:"flex flex-col gap-1.5",children:T.map(R=>{const z=l===R.value,L=l!==null&&!z;return b.jsx("button",{disabled:!k&&!z,onClick:()=>_(R.value,R.prompt_for),className:`w-full text-left px-3 py-2.5 rounded-lg border transition-all duration-150 ${z?"border-green-500/60 bg-green-500/10":L?"border-[var(--border)] opacity-40 cursor-default":"border-[var(--border)] bg-[var(--surface)] hover:border-amber-400/60 hover:bg-amber-500/5 cursor-pointer group"}`,children:b.jsxs("div",{className:"flex items-center gap-2.5",children:[b.jsx("div",{className:"flex-shrink-0",children:z?b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}):b.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-colors ${L?"border-[var(--border)]":"border-[var(--border)] group-hover:border-amber-400"}`})}),b.jsx("div",{className:"flex-1 min-w-0",children:b.jsx("span",{className:`text-xs font-medium ${z?"text-green-400":"text-[var(--text)]"}`,children:R.label})}),R.route&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0",children:["→ ",R.route]})]})},R.value)})}),d&&!f&&b.jsxs("div",{className:"flex items-center gap-2 px-1",children:[b.jsx(na,{className:"w-3 h-3 text-green-400 animate-spin"}),b.jsx("span",{className:"text-[10px] text-green-400",children:"Sending..."})]}),k&&b.jsx("p",{className:"text-[10px] text-[var(--text-muted)] px-1",children:"Select an option to continue the workflow"})]}),!T&&e.options&&e.options.length>0&&b.jsxs("div",{className:"space-y-1.5",children:[b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:"Options"}),b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(R=>b.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded border border-[var(--border)] text-[var(--text-muted)]",children:R},R))})]}),f&&b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--bg)] overflow-hidden",children:[b.jsx("div",{className:"px-3 py-2 border-b border-[var(--border)] bg-[var(--surface)]",children:b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:f})}),b.jsxs("div",{className:"p-3 space-y-2",children:[b.jsx("input",{type:"text",value:s,onChange:R=>u(R.target.value),onKeyDown:R=>R.key==="Enter"&&S(),placeholder:`Enter ${f}...`,className:"w-full text-xs px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--bg)] text-[var(--text)] outline-none focus:border-amber-400 transition-colors",autoFocus:!0}),b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:"Press Enter or click Submit"}),b.jsxs("button",{onClick:S,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-amber-500 text-white hover:bg-amber-600 transition-colors font-medium",children:[b.jsx(pN,{className:"w-3 h-3"}),"Submit"]})]})]})]})]}),w&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-green-500/10 border border-green-500/30",children:[b.jsx(Vi,{className:"w-3.5 h-3.5 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-green-400 tracking-wide",children:"Decision Completed"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!0,onFileClick:y})}),A&&b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)]",children:A}),e.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",e.route]})]}),T&&T.length>1&&b.jsx("div",{className:"space-y-1",children:T.filter(R=>R.value!==e.selected_option).map(R=>b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg opacity-35",children:[b.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-[var(--border)] flex-shrink-0"}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:R.label}),R.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",R.route]})]},R.value))}),!T&&e.options&&e.options.length>0&&b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(R=>b.jsxs("span",{className:`text-[11px] px-2.5 py-1 rounded-lg border ${R===e.selected_option?"border-green-500/30 text-green-400 bg-green-500/5":"border-[var(--border)] text-[var(--text-muted)] opacity-40"}`,children:[R===e.selected_option&&"✓ ",R]},R))}),b.jsx(u6,{node:e})]}),!v&&!w&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Human Gate"}),b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] capitalize",children:["(",e.status,")"]})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(xp,{text:e.prompt,muted:!0,onFileClick:y})})]}),p&&b.jsx(i6,{filePath:p,onClose:()=>y(null)})]})}function s6(e){return!(!e||/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("//")||e.startsWith("#")||e.startsWith("/")||e.startsWith("\\"))}function xp({text:e,muted:n,onFileClick:r}){const l=n?"text-[var(--text-muted)]":"text-[var(--text)]";return b.jsx("div",{className:`gate-markdown text-xs leading-relaxed ${l}`,children:b.jsx(M_,{components:{h1:({children:a})=>b.jsx("h1",{className:"text-sm font-bold mb-2 mt-1",children:a}),h2:({children:a})=>b.jsx("h2",{className:"text-xs font-bold mb-1.5 mt-1",children:a}),h3:({children:a})=>b.jsx("h3",{className:"text-xs font-semibold mb-1 mt-1",children:a}),p:({children:a})=>b.jsx("p",{className:"mb-1.5 last:mb-0",children:a}),ul:({children:a})=>b.jsx("ul",{className:"list-disc list-inside mb-1.5 space-y-0.5",children:a}),ol:({children:a})=>b.jsx("ol",{className:"list-decimal list-inside mb-1.5 space-y-0.5",children:a}),li:({children:a})=>b.jsx("li",{children:a}),code:({children:a,className:s})=>(s==null?void 0:s.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-2 py-1.5 font-mono text-[11px] my-1 overflow-x-auto whitespace-pre",children:a}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:a}),pre:({children:a})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-2.5 py-2 font-mono text-[11px] my-1.5 overflow-x-auto",children:a}),strong:({children:a})=>b.jsx("strong",{className:"font-semibold",children:a}),em:({children:a})=>b.jsx("em",{className:"italic",children:a}),a:({href:a,children:s})=>r&&s6(a)?b.jsxs("button",{onClick:u=>{u.preventDefault(),r(a)},className:"inline-flex items-center gap-0.5 text-blue-400 hover:text-blue-300 underline underline-offset-2 cursor-pointer",title:`Open ${a}`,children:[b.jsx(Db,{className:"w-3 h-3 inline flex-shrink-0"}),s]}):b.jsx("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:s}),blockquote:({children:a})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-2.5 my-1.5 opacity-80",children:a}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-2"})},children:e})})}function u6({node:e}){const n=[];if(e.route&&n.push({label:"Route",value:`→ ${e.route}`}),e.additional_input){const r=typeof e.additional_input=="object"?JSON.stringify(e.additional_input):e.additional_input;n.push({label:"Additional Input",value:r})}return n.length===0?null:b.jsx(el,{items:n})}function c6({node:e}){const n=e.status,r=Pe[n]||Pe.pending,a=vM()[e.name],s=e.type==="for_each_group",[u,f]=V.useState(!0),h=[];e.elapsed!=null&&h.push({label:"Elapsed",value:Qt(e.elapsed)}),a&&(h.push({label:"Total",value:a.total}),h.push({label:"Completed",value:a.completed}),a.failed>0&&h.push({label:"Failed",value:a.failed})),e.success_count!=null&&h.push({label:"Success",value:e.success_count}),e.failure_count!=null&&h.push({label:"Failures",value:e.failure_count});const d=e.for_each_items;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:s?"For-Each Group":"Parallel Group"})]}),a&&a.total>0&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-[10px] text-[var(--text-muted)]",children:[b.jsx("span",{children:"Progress"}),b.jsxs("span",{children:[a.completed+a.failed,"/",a.total]})]}),b.jsx("div",{className:"h-1.5 bg-[var(--bg)] rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${(a.completed+a.failed)/a.total*100}%`,background:a.failed>0?`linear-gradient(90deg, var(--completed) ${a.completed/(a.completed+a.failed)*100}%, var(--failed) 0%)`:"var(--completed)"}})})]}),b.jsx(el,{items:h}),s&&d&&d.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold hover:text-[var(--text)] transition-colors",children:[u?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(jr,{className:"w-3 h-3"}),"Items (",d.length,")"]}),u&&b.jsx("div",{className:"space-y-1",children:d.map(m=>b.jsx(d6,{item:m},`${m.key}-${m.index}`))})]})]})}const f6={running:Pe.running,completed:Pe.completed,failed:Pe.failed};function d6({item:e}){const[n,r]=V.useState(e.status==="running"),l=f6[e.status],a=!!(e.prompt||e.output!=null||e.activity&&e.activity.length>0||e.error_type),s=[];return e.elapsed!=null&&s.push({label:"Elapsed",value:Qt(e.elapsed)}),e.tokens!=null&&s.push({label:"Tokens",value:Vn(e.tokens)}),e.cost_usd!=null&&s.push({label:"Cost",value:mi(e.cost_usd)}),b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--surface)] overflow-hidden",children:[b.jsxs("button",{onClick:()=>a&&r(!n),className:"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--node-bg)] transition-colors",disabled:!a,children:[a?n?b.jsx(Ji,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(jr,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):e.status==="running"?b.jsx(na,{className:"w-3 h-3 animate-spin flex-shrink-0",style:{color:l}}):b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0 ml-0.5 mr-0.5",style:{backgroundColor:l}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1 min-w-0",children:e.key}),!n&&(e.elapsed!=null||e.tokens!=null||e.cost_usd!=null)&&b.jsxs("span",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)] flex-shrink-0",children:[e.elapsed!=null&&b.jsx("span",{children:Qt(e.elapsed)}),e.tokens!=null&&b.jsx("span",{children:Vn(e.tokens)}),e.cost_usd!=null&&b.jsx("span",{children:mi(e.cost_usd)})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${l}20`,color:l},children:e.status})]}),n&&a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[s.length>0&&b.jsx(el,{items:s}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!1}),e.activity&&e.activity.length>0&&b.jsx(xm,{activity:e.activity,defaultExpanded:e.status!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output",defaultExpanded:!0}),e.status==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]})]})]})}function h6({node:e}){const n=e.status,r=Pe[n]||Pe.pending,l=he(f=>f.navigateIntoSubworkflow),s=GS().filter(f=>f.parentAgent===e.name),u=[];return e.elapsed!=null&&u.push({label:"Elapsed",value:Qt(e.elapsed)}),e.cost_usd!=null&&u.push({label:"Cost",value:mi(e.cost_usd)}),e.tokens!=null&&u.push({label:"Tokens",value:Vn(e.tokens)}),e.iteration!=null&&e.iteration>1&&u.push({label:"Iteration",value:e.iteration}),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Subworkflow Agent"})]}),b.jsx(el,{items:u}),s.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:["Subworkflow Runs (",s.length,")"]}),b.jsx("div",{className:"space-y-1",children:s.map((f,h)=>b.jsx(p6,{ctx:f,onClick:()=>l(e.name,f.iteration)},`${f.parentAgent}-${f.iteration}-${h}`))})]}),n==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]}),s.length===0&&n==="pending"&&b.jsx("div",{className:"text-xs text-[var(--text-muted)] italic",children:"Subworkflow has not started yet."})]})}function p6({ctx:e,onClick:n}){const r=Pe[e.status]||Pe.pending;return b.jsxs("button",{onClick:n,className:"flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--surface)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[b.jsx(Xp,{className:"w-3.5 h-3.5 flex-shrink-0",style:{color:r}}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:e.workflowName||e.workflowFile||"Subworkflow"}),b.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)]",children:[e.agentsTotal>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(Rb,{className:"w-2.5 h-2.5"}),e.agentsCompleted,"/",e.agentsTotal," agents"]}),e.totalCost>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(Mb,{className:"w-2.5 h-2.5"}),mi(e.totalCost)]})]})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${r}20`,color:r},children:e.status}),b.jsx(jr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}function m6(){const e=he(f=>f.selectedNode),n=Wi(),r=he(f=>f.selectNode),[l,a]=V.useState(!1);V.useEffect(()=>(requestAnimationFrame(()=>a(!0)),()=>a(!1)),[e]);const s=e?n[e]:null;if(!e||!s)return b.jsxs("div",{className:"h-full flex flex-col bg-[var(--surface)]",children:[b.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Detail"})}),b.jsx("div",{className:"flex-1 flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Click a node to view details"})})]});const u=(()=>{switch(s.type){case"script":return H5;case"human_gate":return o6;case"parallel_group":case"for_each_group":return c6;case"workflow":return h6;default:return R5}})();return b.jsxs("div",{className:Be("h-full flex flex-col bg-[var(--surface)] transition-all duration-150 ease-out",l?"translate-x-0 opacity-100":"translate-x-4 opacity-0"),children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)] flex-shrink-0",children:[b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] truncate",children:e}),b.jsx("button",{onClick:()=>r(null),className:"p-1 rounded hover:bg-[var(--surface-hover)] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Close panel",children:b.jsx(ca,{className:"w-4 h-4"})})]}),b.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:b.jsx(u,{node:s})})]})}function Xu(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function g6(){const e=he(_=>_.eventLog),n=he(_=>_.activityLog),r=he(_=>_.workflowOutput),l=he(_=>_.workflowStatus),[a,s]=V.useState("log"),[u,f]=V.useState(!1),[h,d]=V.useState(0),[m,p]=V.useState(0),y=V.useCallback(_=>{s(_),_==="log"&&d(e.length),_==="activity"&&p(n.length)},[e.length,n.length]);V.useEffect(()=>{a==="log"&&d(e.length)},[a,e.length]),V.useEffect(()=>{a==="activity"&&p(n.length)},[a,n.length]),V.useEffect(()=>{l==="completed"&&r!=null&&s("output")},[l,r]);const v=r!=null,w=a!=="log"?Math.max(0,e.length-h):0,k=a!=="activity"?Math.max(0,n.length-m):0;return u?b.jsx("div",{className:"flex items-center bg-[var(--surface)] border-t border-[var(--border)] px-3 py-1",children:b.jsxs("button",{onClick:()=>f(!1),className:"flex items-center gap-1.5 text-xs text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",children:[b.jsx(nN,{className:"w-3 h-3"}),b.jsx(Nx,{className:"w-3 h-3"}),b.jsx("span",{children:"Output"}),n.length>0&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)]",children:["(",n.length,")"]})]})}):b.jsxs("div",{className:"flex flex-col h-full bg-[var(--surface)] border-t border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center justify-between px-2 flex-shrink-0 border-b border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center gap-0.5",children:[b.jsx(vp,{active:a==="log",onClick:()=>y("log"),icon:b.jsx(Nx,{className:"w-3 h-3"}),label:"Log",count:e.length,unread:w}),b.jsx(vp,{active:a==="activity",onClick:()=>y("activity"),icon:b.jsx(jb,{className:"w-3 h-3"}),label:"Activity",count:n.length,unread:k}),b.jsx(vp,{active:a==="output",onClick:()=>y("output"),icon:b.jsx(sN,{className:"w-3 h-3"}),label:"Output",badge:v?l==="failed"?"error":"success":void 0})]}),b.jsx("button",{onClick:()=>f(!0),className:"p-1 rounded text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors",title:"Collapse panel",children:b.jsx(Ji,{className:"w-3.5 h-3.5"})})]}),b.jsx("div",{className:"flex-1 overflow-hidden",children:a==="activity"?b.jsx(y6,{entries:n}):a==="log"?b.jsx(x6,{entries:e}):b.jsx(v6,{output:r,status:l})})]})}function vp({active:e,onClick:n,icon:r,label:l,count:a,badge:s,unread:u}){return b.jsxs("button",{onClick:n,className:Be("relative flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors border-b-2 -mb-px",e?"text-[var(--text)] border-[var(--accent)]":"text-[var(--text-muted)] border-transparent hover:text-[var(--text-secondary)]"),children:[r,b.jsx("span",{children:l}),a!=null&&a>0&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums",children:a}),s&&b.jsx("span",{className:Be("w-1.5 h-1.5 rounded-full",s==="success"?"bg-[var(--completed)]":"bg-[var(--failed)]")}),!e&&u!=null&&u>0&&b.jsx("span",{className:"absolute -top-0.5 -right-0.5 flex h-3.5 min-w-[14px] items-center justify-center rounded-full bg-[var(--accent)] px-1",children:b.jsx("span",{className:"text-[8px] font-bold text-white leading-none tabular-nums",children:u>99?"99+":u})})]})}const Cb={reasoning:{color:"text-indigo-400/70",label:"THINK",labelColor:"text-indigo-500"},"tool-start":{color:"text-blue-400",label:"TOOL →",labelColor:"text-blue-500"},"tool-complete":{color:"text-green-400",label:"TOOL ←",labelColor:"text-green-600"},turn:{color:"text-amber-400",label:"STEP",labelColor:"text-amber-500"},message:{color:"text-[var(--text)]",label:"MSG",labelColor:"text-[var(--text-muted)]"},prompt:{color:"text-cyan-400/70",label:"PROMPT",labelColor:"text-cyan-600"}};function y6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(h=>h.selectNode),[a,s]=V.useState(""),u=V.useCallback(()=>{const h=n.current;if(!h)return;const d=h.scrollHeight-h.scrollTop-h.clientHeight<30;r.current=d},[]),f=V.useMemo(()=>{if(!a)return e;const h=a.toLowerCase();return e.filter(d=>d.source.toLowerCase().includes(h)||Xu(d.message).toLowerCase().includes(h))},[e,a]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[f.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for agent activity…"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx(hN,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("input",{type:"text",value:a,onChange:h=>s(h.target.value),placeholder:"Filter by agent or message…",className:"flex-1 bg-transparent text-[11px] text-[var(--text)] placeholder:text-[var(--text-muted)] outline-none min-w-0"}),a&&b.jsxs(b.Fragment,{children:[b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums flex-shrink-0",children:[f.length," of ",e.length]}),b.jsx("button",{onClick:()=>s(""),className:"text-[var(--text-muted)] hover:text-[var(--text)] transition-colors flex-shrink-0",title:"Clear filter",children:b.jsx(ca,{className:"w-3 h-3"})})]})]}),b.jsxs("div",{ref:n,onScroll:u,className:"flex-1 overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:[f.map((h,d)=>{const m=Cb[h.type]||Cb.message,p=O_(h.timestamp);return b.jsxs("div",{className:"group",children:[b.jsxs("div",{className:"flex gap-1.5 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:p}),b.jsx("span",{className:Be("flex-shrink-0 w-[5ch] text-[10px] font-semibold tabular-nums select-none",m.labelColor),children:m.label}),b.jsx("button",{onClick:()=>l(h.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${h.source}`,children:h.source}),b.jsx("span",{className:Be("break-words min-w-0",m.color,h.type==="reasoning"&&"italic"),children:Xu(h.message)})]}),h.detail&&b.jsx("div",{className:"ml-[calc(7ch+5ch+8ch+1rem)] px-2 py-1 my-0.5 bg-[var(--bg)] rounded text-[10px] text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto border-l-2 border-[var(--border)]",children:Xu(h.detail)})]},d)}),a&&f.length===0&&b.jsx("div",{className:"flex items-center justify-center py-4",children:b.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:['No matches for "',a,'"']})})]})]})}const Tb={info:{color:"text-blue-400",icon:"›"},success:{color:"text-green-400",icon:"✓"},error:{color:"text-red-400",icon:"✗"},warning:{color:"text-amber-400",icon:"⚠"},debug:{color:"text-[var(--text-muted)]",icon:"·"}};function x6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(s=>s.selectNode),a=V.useCallback(()=>{const s=n.current;if(!s)return;const u=s.scrollHeight-s.scrollTop-s.clientHeight<30;r.current=u},[]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for events…"})}):b.jsx("div",{ref:n,onScroll:a,className:"h-full overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:e.map((s,u)=>{const f=Tb[s.level]||Tb.info,h=O_(s.timestamp);return b.jsxs("div",{className:"flex gap-2 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:h}),b.jsx("span",{className:Be("flex-shrink-0 w-3 text-center select-none",f.color),children:f.icon}),b.jsx("button",{onClick:()=>l(s.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${s.source}`,children:s.source}),b.jsx("span",{className:Be("break-words",s.level==="error"?"text-red-400":s.level==="success"?"text-green-400":"text-[var(--text)]"),children:Xu(s.message)})]},u)})})}function O_(e){const n=new Date(e*1e3),r=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),a=n.getSeconds().toString().padStart(2,"0");return`${r}:${l}:${a}`}function v6({output:e,status:n}){const[r,l]=V.useState(!1),a=Bb(e),s=async()=>{a&&(await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3))};return e==null?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n==="running"?"Workflow running — output will appear when complete…":n==="failed"?"Workflow failed — no output produced":"No output yet"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center justify-between px-3 py-1 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] uppercase tracking-wider font-semibold",children:"Workflow Result"}),b.jsx("button",{onClick:s,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors px-1.5 py-0.5 rounded hover:bg-[var(--surface-hover)]",title:"Copy to clipboard",children:r?b.jsxs(b.Fragment,{children:[b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}),b.jsx("span",{className:"text-[var(--completed)]",children:"Copied"})]}):b.jsxs(b.Fragment,{children:[b.jsx(Ob,{className:"w-3 h-3"}),b.jsx("span",{children:"Copy"})]})})]}),b.jsx("div",{className:"flex-1 overflow-auto px-3 py-2",children:b.jsx("pre",{className:"font-mono text-[11px] leading-relaxed text-[var(--text)] whitespace-pre-wrap break-words",children:typeof e=="object"?b.jsx(b6,{text:a}):a})})]})}function b6({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function w6(){const e=he(n=>n.selectedNode);return b.jsxs(wp,{direction:"vertical",className:"flex-1 overflow-hidden",children:[b.jsx(yo,{defaultSize:70,minSize:30,children:b.jsxs(wp,{direction:"horizontal",className:"h-full",children:[b.jsx(yo,{defaultSize:e?65:100,minSize:40,children:b.jsx(A5,{})}),e&&b.jsxs(b.Fragment,{children:[b.jsx(Sp,{className:"w-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-col-resize"}),b.jsx(yo,{defaultSize:35,minSize:20,maxSize:60,children:b.jsx(m6,{})})]})]})}),b.jsx(Sp,{className:"h-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-row-resize"}),b.jsx(yo,{defaultSize:30,minSize:5,maxSize:70,collapsible:!0,children:b.jsx(g6,{})})]})}const S6=3e4;function _6(){const e=he(p=>p.processEvent),n=he(p=>p.replayState),r=he(p=>p.setWsStatus),l=he(p=>p.setWsSend),a=V.useRef(null),s=V.useRef(1e3),u=V.useRef(null),f=V.useRef(null),h=V.useRef(()=>{}),d=V.useCallback(()=>{r("reconnecting"),u.current=setTimeout(()=>{s.current=Math.min(s.current*2,S6),h.current()},s.current)},[r]),m=V.useCallback(()=>{r("connecting"),f.current&&f.current.abort();const p=new AbortController;f.current=p,fetch("/api/state",{signal:p.signal}).then(y=>y.json()).then(y=>{y&&y.length>0&&n(y);const w=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{const k=new WebSocket(w);a.current=k,k.onopen=()=>{s.current=1e3,r("connected"),l(_=>{k.readyState===WebSocket.OPEN&&k.send(JSON.stringify(_))})},k.onmessage=_=>{try{const S=JSON.parse(_.data);e(S)}catch(S){console.error("Failed to parse WebSocket message:",S)}},k.onclose=()=>{r("disconnected"),l(null),a.current=null,d()},k.onerror=()=>{}}catch{d()}}).catch(y=>{p.signal.aborted||(console.error("Failed to fetch state:",y),d())})},[e,n,r,l,d]);h.current=m,V.useEffect(()=>(m(),()=>{f.current&&f.current.abort(),u.current&&clearTimeout(u.current),a.current&&a.current.close(),l(null)}),[m,l])}function E6(){const e=he(d=>d.setReplayMode),n=he(d=>d.setWsStatus),r=he(d=>d.replayPlaying),l=he(d=>d.replayPosition),a=he(d=>d.replayTotalEvents),s=he(d=>d.replaySpeed),u=he(d=>d.replayEvents),f=he(d=>d.setReplayPosition);V.useEffect(()=>{n("connecting"),fetch("/api/state").then(d=>d.json()).then(d=>{e(d),n("connected")}).catch(d=>{console.error("Failed to load replay events:",d),n("disconnected")})},[e,n]);const h=V.useRef(null);V.useEffect(()=>{if(!r||l>=a){h.current&&clearTimeout(h.current),r&&l>=a&&he.getState().setReplayPlaying(!1);return}const d=u[l-1],m=u[l];let p=100;if(d&&m){const y=(m.timestamp-d.timestamp)*1e3;p=Math.max(16,Math.min(y/s,2e3))}return h.current=setTimeout(()=>{f(l+1)},p),()=>{h.current&&clearTimeout(h.current)}},[r,l,a,s,u,f])}function N6(){return _6(),null}function k6(){return E6(),null}function C6(){const[e,n]=V.useState(null),r=he(s=>s.replayMode),l=he(s=>s.selectNode),a=he(s=>s.workflowName);return V.useEffect(()=>{fetch("/api/replay/info").then(s=>{s.ok?n(!0):n(!1)}).catch(()=>n(!1))},[]),V.useEffect(()=>{document.title=a?`Conductor — ${a}`:"Conductor Dashboard"},[a]),V.useEffect(()=>{const s=u=>{u.key==="Escape"&&l(null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[l]),e===null?null:b.jsxs("div",{className:"h-full flex flex-col bg-[var(--bg)]",children:[e?b.jsx(k6,{}):b.jsx(N6,{}),b.jsx(zN,{}),b.jsx(AN,{}),b.jsx(w6,{}),r?b.jsx(RN,{}):b.jsx(MN,{})]})}K2.createRoot(document.getElementById("root")).render(b.jsx(V.StrictMode,{children:b.jsx(C6,{})})); diff --git a/src/conductor/web/static/assets/index-EthNg1L-.js b/src/conductor/web/static/assets/index-EthNg1L-.js deleted file mode 100644 index 92a73b1..0000000 --- a/src/conductor/web/static/assets/index-EthNg1L-.js +++ /dev/null @@ -1,311 +0,0 @@ -var O2=Object.defineProperty;var D2=(e,n,r)=>n in e?O2(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;var kt=(e,n,r)=>D2(e,typeof n!="symbol"?n+"":n,r);function R2(e,n){for(var r=0;rl[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();function Bo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ud={exports:{}},ro={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var hx;function L2(){if(hx)return ro;hx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(l,a,s){var u=null;if(s!==void 0&&(u=""+s),a.key!==void 0&&(u=""+a.key),"key"in a){s={};for(var f in a)f!=="key"&&(s[f]=a[f])}else s=a;return a=s.ref,{$$typeof:e,type:l,key:u,ref:a!==void 0?a:null,props:s}}return ro.Fragment=n,ro.jsx=r,ro.jsxs=r,ro}var px;function H2(){return px||(px=1,Ud.exports=L2()),Ud.exports}var b=H2(),Id={exports:{}},ze={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var mx;function B2(){if(mx)return ze;mx=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),y=Symbol.iterator;function v(H){return H===null||typeof H!="object"?null:(H=y&&H[y]||H["@@iterator"],typeof H=="function"?H:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,S={};function _(H,P,N){this.props=H,this.context=P,this.refs=S,this.updater=N||w}_.prototype.isReactComponent={},_.prototype.setState=function(H,P){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,P,"setState")},_.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function T(){}T.prototype=_.prototype;function E(H,P,N){this.props=H,this.context=P,this.refs=S,this.updater=N||w}var z=E.prototype=new T;z.constructor=E,k(z,_.prototype),z.isPureReactComponent=!0;var I=Array.isArray;function A(){}var R={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function U(H,P,N){var G=N.ref;return{$$typeof:e,type:H,key:P,ref:G!==void 0?G:null,props:N}}function X(H,P){return U(H.type,P,H.props)}function B(H){return typeof H=="object"&&H!==null&&H.$$typeof===e}function q(H){var P={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(N){return P[N]})}var ee=/\/+/g;function L(H,P){return typeof H=="object"&&H!==null&&H.key!=null?q(""+H.key):P.toString(36)}function $(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(A,A):(H.status="pending",H.then(function(P){H.status==="pending"&&(H.status="fulfilled",H.value=P)},function(P){H.status==="pending"&&(H.status="rejected",H.reason=P)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function M(H,P,N,G,F){var J=typeof H;(J==="undefined"||J==="boolean")&&(H=null);var ne=!1;if(H===null)ne=!0;else switch(J){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(H.$$typeof){case e:case n:ne=!0;break;case m:return ne=H._init,M(ne(H._payload),P,N,G,F)}}if(ne)return F=F(H),ne=G===""?"."+L(H,0):G,I(F)?(N="",ne!=null&&(N=ne.replace(ee,"$&/")+"/"),M(F,P,N,"",function(ye){return ye})):F!=null&&(B(F)&&(F=X(F,N+(F.key==null||H&&H.key===F.key?"":(""+F.key).replace(ee,"$&/")+"/")+ne)),P.push(F)),1;ne=0;var re=G===""?".":G+":";if(I(H))for(var se=0;se>>1,j=M[K];if(0>>1;Ka(N,Q))Ga(F,N)?(M[K]=F,M[G]=Q,K=G):(M[K]=N,M[P]=Q,K=P);else if(Ga(F,Q))M[K]=F,M[G]=Q,K=G;else break e}}return Y}function a(M,Y){var Q=M.sortIndex-Y.sortIndex;return Q!==0?Q:M.id-Y.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var u=Date,f=u.now();e.unstable_now=function(){return u.now()-f}}var d=[],h=[],m=1,p=null,y=3,v=!1,w=!1,k=!1,S=!1,_=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function z(M){for(var Y=r(h);Y!==null;){if(Y.callback===null)l(h);else if(Y.startTime<=M)l(h),Y.sortIndex=Y.expirationTime,n(d,Y);else break;Y=r(h)}}function I(M){if(k=!1,z(M),!w)if(r(d)!==null)w=!0,A||(A=!0,q());else{var Y=r(h);Y!==null&&$(I,Y.startTime-M)}}var A=!1,R=-1,D=5,U=-1;function X(){return S?!0:!(e.unstable_now()-UM&&X());){var K=p.callback;if(typeof K=="function"){p.callback=null,y=p.priorityLevel;var j=K(p.expirationTime<=M);if(M=e.unstable_now(),typeof j=="function"){p.callback=j,z(M),Y=!0;break t}p===r(d)&&l(d),z(M)}else l(d);p=r(d)}if(p!==null)Y=!0;else{var H=r(h);H!==null&&$(I,H.startTime-M),Y=!1}}break e}finally{p=null,y=Q,v=!1}Y=void 0}}finally{Y?q():A=!1}}}var q;if(typeof E=="function")q=function(){E(B)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,L=ee.port2;ee.port1.onmessage=B,q=function(){L.postMessage(null)}}else q=function(){_(B,0)};function $(M,Y){R=_(function(){M(e.unstable_now())},Y)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_forceFrameRate=function(M){0>M||125K?(M.sortIndex=Q,n(h,M),r(d)===null&&M===r(h)&&(k?(T(R),R=-1):k=!0,$(I,Q-K))):(M.sortIndex=j,n(d,M),w||v||(w=!0,A||(A=!0,q()))),M},e.unstable_shouldYield=X,e.unstable_wrapCallback=function(M){var Y=y;return function(){var Q=y;y=Y;try{return M.apply(this,arguments)}finally{y=Q}}}})(Yd)),Yd}var xx;function I2(){return xx||(xx=1,Gd.exports=U2()),Gd.exports}var $d={exports:{}},Yt={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var vx;function V2(){if(vx)return Yt;vx=1;var e=qo();function n(d){var h="https://react.dev/errors/"+d;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),$d.exports=V2(),$d.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var wx;function G2(){if(wx)return io;wx=1;var e=I2(),n=qo(),r=Cb();function l(t){var i="https://react.dev/errors/"+t;if(1j||(t.current=K[j],K[j]=null,j--)}function N(t,i){j++,K[j]=t.current,t.current=i}var G=H(null),F=H(null),J=H(null),ne=H(null);function re(t,i){switch(N(J,i),N(F,t),N(G,null),i.nodeType){case 9:case 11:t=(t=i.documentElement)&&(t=t.namespaceURI)?Ly(t):0;break;default:if(t=i.tagName,i=i.namespaceURI)i=Ly(i),t=Hy(i,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}P(G),N(G,t)}function se(){P(G),P(F),P(J)}function ye(t){t.memoizedState!==null&&N(ne,t);var i=G.current,o=Hy(i,t.type);i!==o&&(N(F,t),N(G,o))}function ve(t){F.current===t&&(P(G),P(F)),ne.current===t&&(P(ne),Wa._currentValue=Q)}var xe,pe;function _e(t){if(xe===void 0)try{throw Error()}catch(o){var i=o.stack.trim().match(/\n( *(at )?)/);xe=i&&i[1]||"",pe=-1)":-1g||Z[c]!==le[g]){var ce=` -`+Z[c].replace(" at new "," at ");return t.displayName&&ce.includes("")&&(ce=ce.replace("",t.displayName)),ce}while(1<=c&&0<=g);break}}}finally{Me=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?_e(o):""}function ut(t,i){switch(t.tag){case 26:case 27:case 5:return _e(t.type);case 16:return _e("Lazy");case 13:return t.child!==i&&i!==null?_e("Suspense Fallback"):_e("Suspense");case 19:return _e("SuspenseList");case 0:case 15:return Ce(t.type,!1);case 11:return Ce(t.type.render,!1);case 1:return Ce(t.type,!0);case 31:return _e("Activity");default:return""}}function tt(t){try{var i="",o=null;do i+=ut(t,o),o=t,t=t.return;while(t);return i}catch(c){return` -Error generating stack: `+c.message+` -`+c.stack}}var At=Object.prototype.hasOwnProperty,It=e.unstable_scheduleCallback,Rt=e.unstable_cancelCallback,Sn=e.unstable_shouldYield,jn=e.unstable_requestPaint,Mt=e.unstable_now,Or=e.unstable_getCurrentPriorityLevel,ue=e.unstable_ImmediatePriority,ge=e.unstable_UserBlockingPriority,Ne=e.unstable_NormalPriority,Re=e.unstable_LowPriority,Ye=e.unstable_IdlePriority,Xt=e.log,On=e.unstable_setDisableYieldValue,Lt=null,xt=null;function Vt(t){if(typeof Xt=="function"&&On(t),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(Lt,t)}catch{}}var Je=Math.clz32?Math.clz32:Cc,Pn=Math.log,un=Math.LN2;function Cc(t){return t>>>=0,t===0?32:31-(Pn(t)/un|0)|0}var tl=256,nl=262144,rl=4194304;function lr(t){var i=t&42;if(i!==0)return i;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function il(t,i,o){var c=t.pendingLanes;if(c===0)return 0;var g=0,x=t.suspendedLanes,C=t.pingedLanes;t=t.warmLanes;var O=c&134217727;return O!==0?(c=O&~x,c!==0?g=lr(c):(C&=O,C!==0?g=lr(C):o||(o=O&~t,o!==0&&(g=lr(o))))):(O=c&~x,O!==0?g=lr(O):C!==0?g=lr(C):o||(o=c&~t,o!==0&&(g=lr(o)))),g===0?0:i!==0&&i!==g&&(i&x)===0&&(x=g&-g,o=i&-i,x>=o||x===32&&(o&4194048)!==0)?i:g}function yi(t,i){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&i)===0}function Tc(t,i){switch(t){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ko(){var t=rl;return rl<<=1,(rl&62914560)===0&&(rl=4194304),t}function ca(t){for(var i=[],o=0;31>o;o++)i.push(t);return i}function xi(t,i){t.pendingLanes|=i,i!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function zc(t,i,o,c,g,x){var C=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var O=t.entanglements,Z=t.expirationTimes,le=t.hiddenUpdates;for(o=C&~o;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Dc=/[\n"\\]/g;function Kt(t){return t.replace(Dc,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function wi(t,i,o,c,g,x,C,O){t.name="",C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?t.type=C:t.removeAttribute("type"),i!=null?C==="number"?(i===0&&t.value===""||t.value!=i)&&(t.value=""+Zt(i)):t.value!==""+Zt(i)&&(t.value=""+Zt(i)):C!=="submit"&&C!=="reset"||t.removeAttribute("value"),i!=null?ma(t,C,Zt(i)):o!=null?ma(t,C,Zt(o)):c!=null&&t.removeAttribute("value"),g==null&&x!=null&&(t.defaultChecked=!!x),g!=null&&(t.checked=g&&typeof g!="function"&&typeof g!="symbol"),O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"?t.name=""+Zt(O):t.removeAttribute("name")}function cs(t,i,o,c,g,x,C,O){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(t.type=x),i!=null||o!=null){if(!(x!=="submit"&&x!=="reset"||i!=null)){qr(t);return}o=o!=null?""+Zt(o):"",i=i!=null?""+Zt(i):o,O||i===t.value||(t.value=i),t.defaultValue=i}c=c??g,c=typeof c!="function"&&typeof c!="symbol"&&!!c,t.checked=O?t.checked:!!c,t.defaultChecked=!!c,C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(t.name=C),qr(t)}function ma(t,i,o){i==="number"&&bi(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function sr(t,i,o,c){if(t=t.options,i){i={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),qc=!1;if(cr)try{var ya={};Object.defineProperty(ya,"passive",{get:function(){qc=!0}}),window.addEventListener("test",ya,ya),window.removeEventListener("test",ya,ya)}catch{qc=!1}var Ur=null,Uc=null,ds=null;function Hm(){if(ds)return ds;var t,i=Uc,o=i.length,c,g="value"in Ur?Ur.value:Ur.textContent,x=g.length;for(t=0;t=ba),Gm=" ",Ym=!1;function $m(t,i){switch(t){case"keyup":return tE.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Pm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var fl=!1;function rE(t,i){switch(t){case"compositionend":return Pm(i);case"keypress":return i.which!==32?null:(Ym=!0,Gm);case"textInput":return t=i.data,t===Gm&&Ym?null:t;default:return null}}function iE(t,i){if(fl)return t==="compositionend"||!$c&&$m(t,i)?(t=Hm(),ds=Uc=Ur=null,fl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:o,offset:i-t};t=c}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=eg(o)}}function ng(t,i){return t&&i?t===i?!0:t&&t.nodeType===3?!1:i&&i.nodeType===3?ng(t,i.parentNode):"contains"in t?t.contains(i):t.compareDocumentPosition?!!(t.compareDocumentPosition(i)&16):!1:!1}function rg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var i=bi(t.document);i instanceof t.HTMLIFrameElement;){try{var o=typeof i.contentWindow.location.href=="string"}catch{o=!1}if(o)t=i.contentWindow;else break;i=bi(t.document)}return i}function Fc(t){var i=t&&t.nodeName&&t.nodeName.toLowerCase();return i&&(i==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||i==="textarea"||t.contentEditable==="true")}var dE=cr&&"documentMode"in document&&11>=document.documentMode,dl=null,Qc=null,Ea=null,Zc=!1;function ig(t,i,o){var c=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Zc||dl==null||dl!==bi(c)||(c=dl,"selectionStart"in c&&Fc(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Ea&&_a(Ea,c)||(Ea=c,c=lu(Qc,"onSelect"),0>=C,g-=C,Fn=1<<32-Je(i)+g|o<je?(Ue=Se,Se=null):Ue=Se.sibling;var Fe=ae(te,Se,ie[je],fe);if(Fe===null){Se===null&&(Se=Ue);break}t&&Se&&Fe.alternate===null&&i(te,Se),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe,Se=Ue}if(je===ie.length)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;jeje?(Ue=Se,Se=null):Ue=Se.sibling;var si=ae(te,Se,Fe.value,fe);if(si===null){Se===null&&(Se=Ue);break}t&&Se&&si.alternate===null&&i(te,Se),W=x(si,W,je),Xe===null?Ee=si:Xe.sibling=si,Xe=si,Se=Ue}if(Fe.done)return o(te,Se),Ve&&dr(te,je),Ee;if(Se===null){for(;!Fe.done;je++,Fe=ie.next())Fe=de(te,Fe.value,fe),Fe!==null&&(W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return Ve&&dr(te,je),Ee}for(Se=c(Se);!Fe.done;je++,Fe=ie.next())Fe=oe(Se,te,je,Fe.value,fe),Fe!==null&&(t&&Fe.alternate!==null&&Se.delete(Fe.key===null?je:Fe.key),W=x(Fe,W,je),Xe===null?Ee=Fe:Xe.sibling=Fe,Xe=Fe);return t&&Se.forEach(function(j2){return i(te,j2)}),Ve&&dr(te,je),Ee}function it(te,W,ie,fe){if(typeof ie=="object"&&ie!==null&&ie.type===k&&ie.key===null&&(ie=ie.props.children),typeof ie=="object"&&ie!==null){switch(ie.$$typeof){case v:e:{for(var Ee=ie.key;W!==null;){if(W.key===Ee){if(Ee=ie.type,Ee===k){if(W.tag===7){o(te,W.sibling),fe=g(W,ie.props.children),fe.return=te,te=fe;break e}}else if(W.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&Mi(Ee)===W.type){o(te,W.sibling),fe=g(W,ie.props),Aa(fe,ie),fe.return=te,te=fe;break e}o(te,W);break}else i(te,W);W=W.sibling}ie.type===k?(fe=ki(ie.props.children,te.mode,fe,ie.key),fe.return=te,te=fe):(fe=Ss(ie.type,ie.key,ie.props,null,te.mode,fe),Aa(fe,ie),fe.return=te,te=fe)}return C(te);case w:e:{for(Ee=ie.key;W!==null;){if(W.key===Ee)if(W.tag===4&&W.stateNode.containerInfo===ie.containerInfo&&W.stateNode.implementation===ie.implementation){o(te,W.sibling),fe=g(W,ie.children||[]),fe.return=te,te=fe;break e}else{o(te,W);break}else i(te,W);W=W.sibling}fe=rf(ie,te.mode,fe),fe.return=te,te=fe}return C(te);case D:return ie=Mi(ie),it(te,W,ie,fe)}if($(ie))return we(te,W,ie,fe);if(q(ie)){if(Ee=q(ie),typeof Ee!="function")throw Error(l(150));return ie=Ee.call(ie),ke(te,W,ie,fe)}if(typeof ie.then=="function")return it(te,W,zs(ie),fe);if(ie.$$typeof===E)return it(te,W,Ns(te,ie),fe);As(te,ie)}return typeof ie=="string"&&ie!==""||typeof ie=="number"||typeof ie=="bigint"?(ie=""+ie,W!==null&&W.tag===6?(o(te,W.sibling),fe=g(W,ie),fe.return=te,te=fe):(o(te,W),fe=nf(ie,te.mode,fe),fe.return=te,te=fe),C(te)):o(te,W)}return function(te,W,ie,fe){try{za=0;var Ee=it(te,W,ie,fe);return _l=null,Ee}catch(Se){if(Se===Sl||Se===Cs)throw Se;var Xe=fn(29,Se,null,te.mode);return Xe.lanes=fe,Xe.return=te,Xe}finally{}}}var Oi=Cg(!0),Tg=Cg(!1),$r=!1;function gf(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function yf(t,i){t=t.updateQueue,i.updateQueue===t&&(i.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Pr(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Xr(t,i,o){var c=t.updateQueue;if(c===null)return null;if(c=c.shared,(Ze&2)!==0){var g=c.pending;return g===null?i.next=i:(i.next=g.next,g.next=i),c.pending=i,i=ws(t),fg(t,null,o),i}return bs(t,c,i,o),ws(t)}function Ma(t,i,o){if(i=i.updateQueue,i!==null&&(i=i.shared,(o&4194048)!==0)){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,Wo(t,o)}}function xf(t,i){var o=t.updateQueue,c=t.alternate;if(c!==null&&(c=c.updateQueue,o===c)){var g=null,x=null;if(o=o.firstBaseUpdate,o!==null){do{var C={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};x===null?g=x=C:x=x.next=C,o=o.next}while(o!==null);x===null?g=x=i:x=x.next=i}else g=x=i;o={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:x,shared:c.shared,callbacks:c.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=i:t.next=i,o.lastBaseUpdate=i}var vf=!1;function ja(){if(vf){var t=wl;if(t!==null)throw t}}function Oa(t,i,o,c){vf=!1;var g=t.updateQueue;$r=!1;var x=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var Z=O,le=Z.next;Z.next=null,C===null?x=le:C.next=le,C=Z;var ce=t.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=le:O.next=le,ce.lastBaseUpdate=Z))}if(x!==null){var de=g.baseState;C=0,ce=le=Z=null,O=x;do{var ae=O.lane&-536870913,oe=ae!==O.lane;if(oe?(qe&ae)===ae:(c&ae)===ae){ae!==0&&ae===bl&&(vf=!0),ce!==null&&(ce=ce.next={lane:0,tag:O.tag,payload:O.payload,callback:null,next:null});e:{var we=t,ke=O;ae=i;var it=o;switch(ke.tag){case 1:if(we=ke.payload,typeof we=="function"){de=we.call(it,de,ae);break e}de=we;break e;case 3:we.flags=we.flags&-65537|128;case 0:if(we=ke.payload,ae=typeof we=="function"?we.call(it,de,ae):we,ae==null)break e;de=p({},de,ae);break e;case 2:$r=!0}}ae=O.callback,ae!==null&&(t.flags|=64,oe&&(t.flags|=8192),oe=g.callbacks,oe===null?g.callbacks=[ae]:oe.push(ae))}else oe={lane:ae,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(le=ce=oe,Z=de):ce=ce.next=oe,C|=ae;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);ce===null&&(Z=de),g.baseState=Z,g.firstBaseUpdate=le,g.lastBaseUpdate=ce,x===null&&(g.shared.lanes=0),Jr|=C,t.lanes=C,t.memoizedState=de}}function zg(t,i){if(typeof t!="function")throw Error(l(191,t));t.call(i)}function Ag(t,i){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;tx?x:8;var C=M.T,O={};M.T=O,Bf(t,!1,i,o);try{var Z=g(),le=M.S;if(le!==null&&le(O,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var ce=wE(Z,c);La(t,i,ce,gn(t))}else La(t,i,c,gn(t))}catch(de){La(t,i,{then:function(){},status:"rejected",reason:de},gn())}finally{Y.p=x,C!==null&&O.types!==null&&(C.types=O.types),M.T=C}}function CE(){}function Lf(t,i,o,c){if(t.tag!==5)throw Error(l(476));var g=s0(t).queue;o0(t,g,i,Q,o===null?CE:function(){return u0(t),o(c)})}function s0(t){var i=t.memoizedState;if(i!==null)return i;i={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:Q},next:null};var o={};return i.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:gr,lastRenderedState:o},next:null},t.memoizedState=i,t=t.alternate,t!==null&&(t.memoizedState=i),i}function u0(t){var i=s0(t);i.next===null&&(i=t.alternate.memoizedState),La(t,i.next.queue,{},gn())}function Hf(){return Bt(Wa)}function c0(){return bt().memoizedState}function f0(){return bt().memoizedState}function TE(t){for(var i=t.return;i!==null;){switch(i.tag){case 24:case 3:var o=gn();t=Pr(o);var c=Xr(i,t,o);c!==null&&(rn(c,i,o),Ma(c,i,o)),i={cache:df()},t.payload=i;return}i=i.return}}function zE(t,i,o){var c=gn();o={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Us(t)?h0(i,o):(o=ef(t,i,o,c),o!==null&&(rn(o,t,c),p0(o,i,c)))}function d0(t,i,o){var c=gn();La(t,i,o,c)}function La(t,i,o,c){var g={lane:c,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Us(t))h0(i,g);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=i.lastRenderedReducer,x!==null))try{var C=i.lastRenderedState,O=x(C,o);if(g.hasEagerState=!0,g.eagerState=O,cn(O,C))return bs(t,i,g,0),lt===null&&vs(),!1}catch{}finally{}if(o=ef(t,i,g,c),o!==null)return rn(o,t,c),p0(o,i,c),!0}return!1}function Bf(t,i,o,c){if(c={lane:2,revertLane:gd(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Us(t)){if(i)throw Error(l(479))}else i=ef(t,o,c,2),i!==null&&rn(i,t,2)}function Us(t){var i=t.alternate;return t===Ae||i!==null&&i===Ae}function h0(t,i){Nl=Os=!0;var o=t.pending;o===null?i.next=i:(i.next=o.next,o.next=i),t.pending=i}function p0(t,i,o){if((o&4194048)!==0){var c=i.lanes;c&=t.pendingLanes,o|=c,i.lanes=o,Wo(t,o)}}var Ha={readContext:Bt,use:Ls,useCallback:mt,useContext:mt,useEffect:mt,useImperativeHandle:mt,useLayoutEffect:mt,useInsertionEffect:mt,useMemo:mt,useReducer:mt,useRef:mt,useState:mt,useDebugValue:mt,useDeferredValue:mt,useTransition:mt,useSyncExternalStore:mt,useId:mt,useHostTransitionStatus:mt,useFormState:mt,useActionState:mt,useOptimistic:mt,useMemoCache:mt,useCacheRefresh:mt};Ha.useEffectEvent=mt;var m0={readContext:Bt,use:Ls,useCallback:function(t,i){return Ft().memoizedState=[t,i===void 0?null:i],t},useContext:Bt,useEffect:Jg,useImperativeHandle:function(t,i,o){o=o!=null?o.concat([t]):null,Bs(4194308,4,n0.bind(null,i,t),o)},useLayoutEffect:function(t,i){return Bs(4194308,4,t,i)},useInsertionEffect:function(t,i){Bs(4,2,t,i)},useMemo:function(t,i){var o=Ft();i=i===void 0?null:i;var c=t();if(Di){Vt(!0);try{t()}finally{Vt(!1)}}return o.memoizedState=[c,i],c},useReducer:function(t,i,o){var c=Ft();if(o!==void 0){var g=o(i);if(Di){Vt(!0);try{o(i)}finally{Vt(!1)}}}else g=i;return c.memoizedState=c.baseState=g,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:g},c.queue=t,t=t.dispatch=zE.bind(null,Ae,t),[c.memoizedState,t]},useRef:function(t){var i=Ft();return t={current:t},i.memoizedState=t},useState:function(t){t=Mf(t);var i=t.queue,o=d0.bind(null,Ae,i);return i.dispatch=o,[t.memoizedState,o]},useDebugValue:Df,useDeferredValue:function(t,i){var o=Ft();return Rf(o,t,i)},useTransition:function(){var t=Mf(!1);return t=o0.bind(null,Ae,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,i,o){var c=Ae,g=Ft();if(Ve){if(o===void 0)throw Error(l(407));o=o()}else{if(o=i(),lt===null)throw Error(l(349));(qe&127)!==0||Lg(c,i,o)}g.memoizedState=o;var x={value:o,getSnapshot:i};return g.queue=x,Jg(Bg.bind(null,c,x,t),[t]),c.flags|=2048,Cl(9,{destroy:void 0},Hg.bind(null,c,x,o,i),null),o},useId:function(){var t=Ft(),i=lt.identifierPrefix;if(Ve){var o=Qn,c=Fn;o=(c&~(1<<32-Je(c)-1)).toString(32)+o,i="_"+i+"R_"+o,o=Ds++,0<\/script>",x=x.removeChild(x.firstChild);break;case"select":x=typeof c.is=="string"?C.createElement("select",{is:c.is}):C.createElement("select"),c.multiple?x.multiple=!0:c.size&&(x.size=c.size);break;default:x=typeof c.is=="string"?C.createElement(g,{is:c.is}):C.createElement(g)}}x[jt]=i,x[Gt]=c;e:for(C=i.child;C!==null;){if(C.tag===5||C.tag===6)x.appendChild(C.stateNode);else if(C.tag!==4&&C.tag!==27&&C.child!==null){C.child.return=C,C=C.child;continue}if(C===i)break e;for(;C.sibling===null;){if(C.return===null||C.return===i)break e;C=C.return}C.sibling.return=C.return,C=C.sibling}i.stateNode=x;e:switch(Ut(x,g,c),g){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&xr(i)}}return ft(i),Jf(i,i.type,t===null?null:t.memoizedProps,i.pendingProps,o),null;case 6:if(t&&i.stateNode!=null)t.memoizedProps!==c&&xr(i);else{if(typeof c!="string"&&i.stateNode===null)throw Error(l(166));if(t=J.current,xl(i)){if(t=i.stateNode,o=i.memoizedProps,c=null,g=Ht,g!==null)switch(g.tag){case 27:case 5:c=g.memoizedProps}t[jt]=i,t=!!(t.nodeValue===o||c!==null&&c.suppressHydrationWarning===!0||Dy(t.nodeValue,o)),t||Gr(i,!0)}else t=au(t).createTextNode(c),t[jt]=i,i.stateNode=t}return ft(i),null;case 31:if(o=i.memoizedState,t===null||t.memoizedState!==null){if(c=xl(i),o!==null){if(t===null){if(!c)throw Error(l(318));if(t=i.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(l(557));t[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),t=!1}else o=sf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return i.flags&256?(hn(i),i):(hn(i),null);if((i.flags&128)!==0)throw Error(l(558))}return ft(i),null;case 13:if(c=i.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(g=xl(i),c!==null&&c.dehydrated!==null){if(t===null){if(!g)throw Error(l(318));if(g=i.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(l(317));g[jt]=i}else Ci(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;ft(i),g=!1}else g=sf(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=g),g=!0;if(!g)return i.flags&256?(hn(i),i):(hn(i),null)}return hn(i),(i.flags&128)!==0?(i.lanes=o,i):(o=c!==null,t=t!==null&&t.memoizedState!==null,o&&(c=i.child,g=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(g=c.alternate.memoizedState.cachePool.pool),x=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),x!==g&&(c.flags|=2048)),o!==t&&o&&(i.child.flags|=8192),$s(i,i.updateQueue),ft(i),null);case 4:return se(),t===null&&bd(i.stateNode.containerInfo),ft(i),null;case 10:return pr(i.type),ft(i),null;case 19:if(P(vt),c=i.memoizedState,c===null)return ft(i),null;if(g=(i.flags&128)!==0,x=c.rendering,x===null)if(g)qa(c,!1);else{if(gt!==0||t!==null&&(t.flags&128)!==0)for(t=i.child;t!==null;){if(x=js(t),x!==null){for(i.flags|=128,qa(c,!1),t=x.updateQueue,i.updateQueue=t,$s(i,t),i.subtreeFlags=0,t=o,o=i.child;o!==null;)dg(o,t),o=o.sibling;return N(vt,vt.current&1|2),Ve&&dr(i,c.treeForkCount),i.child}t=t.sibling}c.tail!==null&&Mt()>Zs&&(i.flags|=128,g=!0,qa(c,!1),i.lanes=4194304)}else{if(!g)if(t=js(x),t!==null){if(i.flags|=128,g=!0,t=t.updateQueue,i.updateQueue=t,$s(i,t),qa(c,!0),c.tail===null&&c.tailMode==="hidden"&&!x.alternate&&!Ve)return ft(i),null}else 2*Mt()-c.renderingStartTime>Zs&&o!==536870912&&(i.flags|=128,g=!0,qa(c,!1),i.lanes=4194304);c.isBackwards?(x.sibling=i.child,i.child=x):(t=c.last,t!==null?t.sibling=x:i.child=x,c.last=x)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=Mt(),t.sibling=null,o=vt.current,N(vt,g?o&1|2:o&1),Ve&&dr(i,c.treeForkCount),t):(ft(i),null);case 22:case 23:return hn(i),wf(),c=i.memoizedState!==null,t!==null?t.memoizedState!==null!==c&&(i.flags|=8192):c&&(i.flags|=8192),c?(o&536870912)!==0&&(i.flags&128)===0&&(ft(i),i.subtreeFlags&6&&(i.flags|=8192)):ft(i),o=i.updateQueue,o!==null&&$s(i,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==o&&(i.flags|=2048),t!==null&&P(Ai),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),i.memoizedState.cache!==o&&(i.flags|=2048),pr(St),ft(i),null;case 25:return null;case 30:return null}throw Error(l(156,i.tag))}function DE(t,i){switch(af(i),i.tag){case 1:return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 3:return pr(St),se(),t=i.flags,(t&65536)!==0&&(t&128)===0?(i.flags=t&-65537|128,i):null;case 26:case 27:case 5:return ve(i),null;case 31:if(i.memoizedState!==null){if(hn(i),i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 13:if(hn(i),t=i.memoizedState,t!==null&&t.dehydrated!==null){if(i.alternate===null)throw Error(l(340));Ci()}return t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 19:return P(vt),null;case 4:return se(),null;case 10:return pr(i.type),null;case 22:case 23:return hn(i),wf(),t!==null&&P(Ai),t=i.flags,t&65536?(i.flags=t&-65537|128,i):null;case 24:return pr(St),null;case 25:return null;default:return null}}function q0(t,i){switch(af(i),i.tag){case 3:pr(St),se();break;case 26:case 27:case 5:ve(i);break;case 4:se();break;case 31:i.memoizedState!==null&&hn(i);break;case 13:hn(i);break;case 19:P(vt);break;case 10:pr(i.type);break;case 22:case 23:hn(i),wf(),t!==null&&P(Ai);break;case 24:pr(St)}}function Ua(t,i){try{var o=i.updateQueue,c=o!==null?o.lastEffect:null;if(c!==null){var g=c.next;o=g;do{if((o.tag&t)===t){c=void 0;var x=o.create,C=o.inst;c=x(),C.destroy=c}o=o.next}while(o!==g)}}catch(O){et(i,i.return,O)}}function Zr(t,i,o){try{var c=i.updateQueue,g=c!==null?c.lastEffect:null;if(g!==null){var x=g.next;c=x;do{if((c.tag&t)===t){var C=c.inst,O=C.destroy;if(O!==void 0){C.destroy=void 0,g=i;var Z=o,le=O;try{le()}catch(ce){et(g,Z,ce)}}}c=c.next}while(c!==x)}}catch(ce){et(i,i.return,ce)}}function U0(t){var i=t.updateQueue;if(i!==null){var o=t.stateNode;try{Ag(i,o)}catch(c){et(t,t.return,c)}}}function I0(t,i,o){o.props=Ri(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(c){et(t,i,c)}}function Ia(t,i){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var c=t.stateNode;break;case 30:c=t.stateNode;break;default:c=t.stateNode}typeof o=="function"?t.refCleanup=o(c):o.current=c}}catch(g){et(t,i,g)}}function Zn(t,i){var o=t.ref,c=t.refCleanup;if(o!==null)if(typeof c=="function")try{c()}catch(g){et(t,i,g)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(g){et(t,i,g)}else o.current=null}function V0(t){var i=t.type,o=t.memoizedProps,c=t.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":o.autoFocus&&c.focus();break e;case"img":o.src?c.src=o.src:o.srcSet&&(c.srcset=o.srcSet)}}catch(g){et(t,t.return,g)}}function Wf(t,i,o){try{var c=t.stateNode;n2(c,t.type,o,i),c[Gt]=i}catch(g){et(t,t.return,g)}}function G0(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ri(t.type)||t.tag===4}function ed(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||G0(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ri(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function td(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,i):(i=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,i.appendChild(t),o=o._reactRootContainer,o!=null||i.onclick!==null||(i.onclick=ur));else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode,i=null),t=t.child,t!==null))for(td(t,i,o),t=t.sibling;t!==null;)td(t,i,o),t=t.sibling}function Ps(t,i,o){var c=t.tag;if(c===5||c===6)t=t.stateNode,i?o.insertBefore(t,i):o.appendChild(t);else if(c!==4&&(c===27&&ri(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Ps(t,i,o),t=t.sibling;t!==null;)Ps(t,i,o),t=t.sibling}function Y0(t){var i=t.stateNode,o=t.memoizedProps;try{for(var c=t.type,g=i.attributes;g.length;)i.removeAttributeNode(g[0]);Ut(i,c,o),i[jt]=t,i[Gt]=o}catch(x){et(t,t.return,x)}}var vr=!1,Nt=!1,nd=!1,$0=typeof WeakSet=="function"?WeakSet:Set,Dt=null;function RE(t,i){if(t=t.containerInfo,_d=hu,t=rg(t),Fc(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var c=o.getSelection&&o.getSelection();if(c&&c.rangeCount!==0){o=c.anchorNode;var g=c.anchorOffset,x=c.focusNode;c=c.focusOffset;try{o.nodeType,x.nodeType}catch{o=null;break e}var C=0,O=-1,Z=-1,le=0,ce=0,de=t,ae=null;t:for(;;){for(var oe;de!==o||g!==0&&de.nodeType!==3||(O=C+g),de!==x||c!==0&&de.nodeType!==3||(Z=C+c),de.nodeType===3&&(C+=de.nodeValue.length),(oe=de.firstChild)!==null;)ae=de,de=oe;for(;;){if(de===t)break t;if(ae===o&&++le===g&&(O=C),ae===x&&++ce===c&&(Z=C),(oe=de.nextSibling)!==null)break;de=ae,ae=de.parentNode}de=oe}o=O===-1||Z===-1?null:{start:O,end:Z}}else o=null}o=o||{start:0,end:0}}else o=null;for(Ed={focusedElem:t,selectionRange:o},hu=!1,Dt=i;Dt!==null;)if(i=Dt,t=i.child,(i.subtreeFlags&1028)!==0&&t!==null)t.return=i,Dt=t;else for(;Dt!==null;){switch(i=Dt,x=i.alternate,t=i.flags,i.tag){case 0:if((t&4)!==0&&(t=i.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o title"))),Ut(x,c,o),x[jt]=t,wt(x),c=x;break e;case"link":var C=Ky("link","href",g).get(c+(o.href||""));if(C){for(var O=0;Oit&&(C=it,it=ke,ke=C);var te=tg(O,ke),W=tg(O,it);if(te&&W&&(oe.rangeCount!==1||oe.anchorNode!==te.node||oe.anchorOffset!==te.offset||oe.focusNode!==W.node||oe.focusOffset!==W.offset)){var ie=de.createRange();ie.setStart(te.node,te.offset),oe.removeAllRanges(),ke>it?(oe.addRange(ie),oe.extend(W.node,W.offset)):(ie.setEnd(W.node,W.offset),oe.addRange(ie))}}}}for(de=[],oe=O;oe=oe.parentNode;)oe.nodeType===1&&de.push({element:oe,left:oe.scrollLeft,top:oe.scrollTop});for(typeof O.focus=="function"&&O.focus(),O=0;Oo?32:o,M.T=null,o=ud,ud=null;var x=ei,C=Er;if(Ot=0,jl=ei=null,Er=0,(Ze&6)!==0)throw Error(l(331));var O=Ze;if(Ze|=4,ny(x.current),W0(x,x.current,C,o),Ze=O,Xa(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(Lt,x)}catch{}return!0}finally{Y.p=g,M.T=c,by(t,i)}}function Sy(t,i,o){i=En(o,i),i=Vf(t.stateNode,i,2),t=Xr(t,i,2),t!==null&&(xi(t,2),Kn(t))}function et(t,i,o){if(t.tag===3)Sy(t,t,o);else for(;i!==null;){if(i.tag===3){Sy(i,t,o);break}else if(i.tag===1){var c=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(Wr===null||!Wr.has(c))){t=En(o,t),o=_0(2),c=Xr(i,o,2),c!==null&&(E0(o,c,i,t),xi(c,2),Kn(c));break}}i=i.return}}function hd(t,i,o){var c=t.pingCache;if(c===null){c=t.pingCache=new BE;var g=new Set;c.set(i,g)}else g=c.get(i),g===void 0&&(g=new Set,c.set(i,g));g.has(o)||(ld=!0,g.add(o),t=GE.bind(null,t,i,o),i.then(t,t))}function GE(t,i,o){var c=t.pingCache;c!==null&&c.delete(i),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,lt===t&&(qe&o)===o&&(gt===4||gt===3&&(qe&62914560)===qe&&300>Mt()-Qs?(Ze&2)===0&&Ol(t,0):ad|=o,Ml===qe&&(Ml=0)),Kn(t)}function _y(t,i){i===0&&(i=Ko()),t=Ni(t,i),t!==null&&(xi(t,i),Kn(t))}function YE(t){var i=t.memoizedState,o=0;i!==null&&(o=i.retryLane),_y(t,o)}function $E(t,i){var o=0;switch(t.tag){case 31:case 13:var c=t.stateNode,g=t.memoizedState;g!==null&&(o=g.retryLane);break;case 19:c=t.stateNode;break;case 22:c=t.stateNode._retryCache;break;default:throw Error(l(314))}c!==null&&c.delete(i),_y(t,o)}function PE(t,i){return It(t,i)}var nu=null,Rl=null,pd=!1,ru=!1,md=!1,ni=0;function Kn(t){t!==Rl&&t.next===null&&(Rl===null?nu=Rl=t:Rl=Rl.next=t),ru=!0,pd||(pd=!0,FE())}function Xa(t,i){if(!md&&ru){md=!0;do for(var o=!1,c=nu;c!==null;){if(t!==0){var g=c.pendingLanes;if(g===0)var x=0;else{var C=c.suspendedLanes,O=c.pingedLanes;x=(1<<31-Je(42|t)+1)-1,x&=g&~(C&~O),x=x&201326741?x&201326741|1:x?x|2:0}x!==0&&(o=!0,Cy(c,x))}else x=qe,x=il(c,c===lt?x:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(x&3)===0||yi(c,x)||(o=!0,Cy(c,x));c=c.next}while(o);md=!1}}function XE(){Ey()}function Ey(){ru=pd=!1;var t=0;ni!==0&&i2()&&(t=ni);for(var i=Mt(),o=null,c=nu;c!==null;){var g=c.next,x=Ny(c,i);x===0?(c.next=null,o===null?nu=g:o.next=g,g===null&&(Rl=o)):(o=c,(t!==0||(x&3)!==0)&&(ru=!0)),c=g}Ot!==0&&Ot!==5||Xa(t),ni!==0&&(ni=0)}function Ny(t,i){for(var o=t.suspendedLanes,c=t.pingedLanes,g=t.expirationTimes,x=t.pendingLanes&-62914561;0O)break;var ce=Z.transferSize,de=Z.initiatorType;ce&&Ry(de)&&(Z=Z.responseEnd,C+=ce*(Z"u"?null:document;function Xy(t,i,o){var c=Ll;if(c&&typeof i=="string"&&i){var g=Kt(i);g='link[rel="'+t+'"][href="'+g+'"]',typeof o=="string"&&(g+='[crossorigin="'+o+'"]'),Py.has(g)||(Py.add(g),t={rel:t,crossOrigin:o,href:i},c.querySelector(g)===null&&(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function h2(t){Nr.D(t),Xy("dns-prefetch",t,null)}function p2(t,i){Nr.C(t,i),Xy("preconnect",t,i)}function m2(t,i,o){Nr.L(t,i,o);var c=Ll;if(c&&t&&i){var g='link[rel="preload"][as="'+Kt(i)+'"]';i==="image"&&o&&o.imageSrcSet?(g+='[imagesrcset="'+Kt(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(g+='[imagesizes="'+Kt(o.imageSizes)+'"]')):g+='[href="'+Kt(t)+'"]';var x=g;switch(i){case"style":x=Hl(t);break;case"script":x=Bl(t)}An.has(x)||(t=p({rel:"preload",href:i==="image"&&o&&o.imageSrcSet?void 0:t,as:i},o),An.set(x,t),c.querySelector(g)!==null||i==="style"&&c.querySelector(Ka(x))||i==="script"&&c.querySelector(Ja(x))||(i=c.createElement("link"),Ut(i,"link",t),wt(i),c.head.appendChild(i)))}}function g2(t,i){Nr.m(t,i);var o=Ll;if(o&&t){var c=i&&typeof i.as=="string"?i.as:"script",g='link[rel="modulepreload"][as="'+Kt(c)+'"][href="'+Kt(t)+'"]',x=g;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":x=Bl(t)}if(!An.has(x)&&(t=p({rel:"modulepreload",href:t},i),An.set(x,t),o.querySelector(g)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Ja(x)))return}c=o.createElement("link"),Ut(c,"link",t),wt(c),o.head.appendChild(c)}}}function y2(t,i,o){Nr.S(t,i,o);var c=Ll;if(c&&t){var g=Hr(c).hoistableStyles,x=Hl(t);i=i||"default";var C=g.get(x);if(!C){var O={loading:0,preload:null};if(C=c.querySelector(Ka(x)))O.loading=5;else{t=p({rel:"stylesheet",href:t,"data-precedence":i},o),(o=An.get(x))&&Md(t,o);var Z=C=c.createElement("link");wt(Z),Ut(Z,"link",t),Z._p=new Promise(function(le,ce){Z.onload=le,Z.onerror=ce}),Z.addEventListener("load",function(){O.loading|=1}),Z.addEventListener("error",function(){O.loading|=2}),O.loading|=4,su(C,i,c)}C={type:"stylesheet",instance:C,count:1,state:O},g.set(x,C)}}}function x2(t,i){Nr.X(t,i);var o=Ll;if(o&&t){var c=Hr(o).hoistableScripts,g=Bl(t),x=c.get(g);x||(x=o.querySelector(Ja(g)),x||(t=p({src:t,async:!0},i),(i=An.get(g))&&jd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function v2(t,i){Nr.M(t,i);var o=Ll;if(o&&t){var c=Hr(o).hoistableScripts,g=Bl(t),x=c.get(g);x||(x=o.querySelector(Ja(g)),x||(t=p({src:t,async:!0,type:"module"},i),(i=An.get(g))&&jd(t,i),x=o.createElement("script"),wt(x),Ut(x,"link",t),o.head.appendChild(x)),x={type:"script",instance:x,count:1,state:null},c.set(g,x))}}function Fy(t,i,o,c){var g=(g=J.current)?ou(g):null;if(!g)throw Error(l(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(i=Hl(o.href),o=Hr(g).hoistableStyles,c=o.get(i),c||(c={type:"style",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=Hl(o.href);var x=Hr(g).hoistableStyles,C=x.get(t);if(C||(g=g.ownerDocument||g,C={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},x.set(t,C),(x=g.querySelector(Ka(t)))&&!x._p&&(C.instance=x,C.state.loading=5),An.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},An.set(t,o),x||b2(g,t,o,C.state))),i&&c===null)throw Error(l(528,""));return C}if(i&&c!==null)throw Error(l(529,""));return null;case"script":return i=o.async,o=o.src,typeof o=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=Bl(o),o=Hr(g).hoistableScripts,c=o.get(i),c||(c={type:"script",instance:null,count:0,state:null},o.set(i,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,t))}}function Hl(t){return'href="'+Kt(t)+'"'}function Ka(t){return'link[rel="stylesheet"]['+t+"]"}function Qy(t){return p({},t,{"data-precedence":t.precedence,precedence:null})}function b2(t,i,o,c){t.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(i=t.createElement("link"),c.preload=i,i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),Ut(i,"link",o),wt(i),t.head.appendChild(i))}function Bl(t){return'[src="'+Kt(t)+'"]'}function Ja(t){return"script[async]"+t}function Zy(t,i,o){if(i.count++,i.instance===null)switch(i.type){case"style":var c=t.querySelector('style[data-href~="'+Kt(o.href)+'"]');if(c)return i.instance=c,wt(c),c;var g=p({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return c=(t.ownerDocument||t).createElement("style"),wt(c),Ut(c,"style",g),su(c,o.precedence,t),i.instance=c;case"stylesheet":g=Hl(o.href);var x=t.querySelector(Ka(g));if(x)return i.state.loading|=4,i.instance=x,wt(x),x;c=Qy(o),(g=An.get(g))&&Md(c,g),x=(t.ownerDocument||t).createElement("link"),wt(x);var C=x;return C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),i.state.loading|=4,su(x,o.precedence,t),i.instance=x;case"script":return x=Bl(o.src),(g=t.querySelector(Ja(x)))?(i.instance=g,wt(g),g):(c=o,(g=An.get(x))&&(c=p({},o),jd(c,g)),t=t.ownerDocument||t,g=t.createElement("script"),wt(g),Ut(g,"link",c),t.head.appendChild(g),i.instance=g);case"void":return null;default:throw Error(l(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(c=i.instance,i.state.loading|=4,su(c,o.precedence,t));return i.instance}function su(t,i,o){for(var c=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),g=c.length?c[c.length-1]:null,x=g,C=0;C title"):null)}function w2(t,i,o){if(o===1||i.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return t=i.disabled,typeof i.precedence=="string"&&t==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function Wy(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function S2(t,i,o,c){if(o.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var g=Hl(c.href),x=i.querySelector(Ka(g));if(x){i=x._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(t.count++,t=cu.bind(t),i.then(t,t)),o.state.loading|=4,o.instance=x,wt(x);return}x=i.ownerDocument||i,c=Qy(c),(g=An.get(g))&&Md(c,g),x=x.createElement("link"),wt(x);var C=x;C._p=new Promise(function(O,Z){C.onload=O,C.onerror=Z}),Ut(x,"link",c),o.instance=x}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,i),(i=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=cu.bind(t),i.addEventListener("load",o),i.addEventListener("error",o))}}var Od=0;function _2(t,i){return t.stylesheets&&t.count===0&&du(t,t.stylesheets),0Od?50:800)+i);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(c),clearTimeout(g)}}:null}function cu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)du(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var fu=null;function du(t,i){t.stylesheets=null,t.unsuspend!==null&&(t.count++,fu=new Map,i.forEach(E2,t),fu=null,cu.call(t))}function E2(t,i){if(!(i.state.loading&4)){var o=fu.get(t);if(o)var c=o.get(null);else{o=new Map,fu.set(t,o);for(var g=t.querySelectorAll("link[data-precedence],style[data-precedence]"),x=0;x"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(n){console.error(n)}}return e(),Vd.exports=G2(),Vd.exports}var $2=Y2();/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const P2=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Tb=(...e)=>e.filter((n,r,l)=>!!n&&n.trim()!==""&&l.indexOf(n)===r).join(" ").trim();/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var X2={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const F2=V.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:a="",children:s,iconNode:u,...f},d)=>V.createElement("svg",{ref:d,...X2,width:n,height:n,stroke:e,strokeWidth:l?Number(r)*24/Number(n):r,className:Tb("lucide",a),...f},[...u.map(([h,m])=>V.createElement(h,m)),...Array.isArray(s)?s:[s]]));/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pe=(e,n)=>{const r=V.forwardRef(({className:l,...a},s)=>V.createElement(F2,{ref:s,iconNode:n,className:Tb(`lucide-${P2(e)}`,l),...a}));return r.displayName=`${e}`,r};/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const zb=Pe("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Q2=Pe("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Vi=Pe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ji=Pe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mr=Pe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Z2=Pe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const K2=Pe("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const J2=Pe("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ab=Pe("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mb=Pe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const W2=Pe("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const eN=Pe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const tN=Pe("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const nN=Pe("FileOutput",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const rN=Pe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jb=Pe("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const $p=Pe("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const No=Pe("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const iN=Pe("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const lN=Pe("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pp=Pe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const aN=Pe("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const oN=Pe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const sN=Pe("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const uN=Pe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _x=Pe("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ob=Pe("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const cN=Pe("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const fN=Pe("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const dN=Pe("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hN=Pe("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Uo=Pe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** - * @license lucide-react v0.469.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pN=Pe("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),Ex=e=>{let n;const r=new Set,l=(h,m)=>{const p=typeof h=="function"?h(n):h;if(!Object.is(p,n)){const y=n;n=m??(typeof p!="object"||p===null)?p:Object.assign({},n,p),r.forEach(v=>v(n,y))}},a=()=>n,f={setState:l,getState:a,getInitialState:()=>d,subscribe:h=>(r.add(h),()=>r.delete(h))},d=n=e(l,a,f);return f},mN=(e=>e?Ex(e):Ex),gN=e=>e;function yN(e,n=gN){const r=$l.useSyncExternalStore(e.subscribe,$l.useCallback(()=>n(e.getState()),[e,n]),$l.useCallback(()=>n(e.getInitialState()),[e,n]));return $l.useDebugValue(r),r}const Nx=e=>{const n=mN(e),r=l=>yN(n,l);return Object.assign(r,n),r},xN=(e=>e?Nx(e):Nx);function Qe(e,n,r="agent"){return e[n]||(e[n]={name:n,status:"pending",type:r,activity:[]}),e[n].activity||(e[n].activity=[]),e[n]}function bu(e,n,r){Qe(e,n).activity.push(r)}function Ie(e,n){e[n]&&(e[n]={...e[n]})}function lo(e,n,r,l){const a=e[n];if(!(a!=null&&a.for_each_items))return;const s=a.for_each_items.find(u=>u.key===r);s&&s.activity.push(l)}function vN(e,n,r){return{parentAgent:e,iteration:n,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function di(e,n){if(n.length===0)return null;let r=e[n[0]];for(let l=1;l=0;l--){const a=e[l];if(a.parentAgent===n&&(r==null||a.iteration===r))return{ctx:a,index:l}}return null}const he=xN((e,n)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const s=he.getState()._wsSend;s&&s({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},processEvent:r=>{const l=wu[r.type];e(a=>{const s={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(s,r.data,r.timestamp);const u=Su(r);u&&s.eventLog.push(u);const f=_u(r);return f&&s.activityLog.push(f),s})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const s of r){const u=wu[s.type];u&&u(a,s.data,s.timestamp);const f=Su(s);f&&a.eventLog.push(f);const d=_u(s);d&&a.activityLog.push(d),a.lastEventTime=s.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const s of r){const u=wu[s.type];u&&u(a,s.data,s.timestamp);const f=Su(s);f&&a.eventLog.push(f);const d=_u(s);d&&a.activityLog.push(d),a.lastEventTime=s.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),s={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,lastEventTime:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const f=wu[u.type];f&&f(s,u.data,u.timestamp);const d=Su(u);d&&s.eventLog.push(d);const h=_u(u);h&&s.activityLog.push(h),s.lastEventTime=u.timestamp}return s})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(s=>({highlightedEdges:[...s.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(s=>!(s.from===r&&s.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:(r,l)=>{const a=n(),s=a.viewContextPath;let u;if(s.length===0)u=a.subworkflowContexts;else{const d=di(a.subworkflowContexts,s);if(!d)return;u=d.children}const f=bN(u,r,l);f&&e({viewContextPath:[...s,f.index],selectedNode:null})},getViewedContext:()=>{const r=n();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=di(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=n(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let s=0;s0){const n=di(e.subworkflowContexts,e.activeContextPath);if(n)return{nodes:n.nodes,groupProgress:n.groupProgress,routes:n.routes,highlightedEdges:n.highlightedEdges,addCost:r=>{n.totalCost+=r,e.totalCost+=r},addTokens:r=>{n.totalTokens+=r,e.totalTokens+=r},incrCompleted:()=>{n.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:n=>{e.totalCost+=n},addTokens:n=>{e.totalTokens+=n},incrCompleted:()=>{e.agentsCompleted++}}}const wu={workflow_started:(e,n,r)=>{const l=n;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=n.yaml_source??null,e.conductorVersion=n.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],Qe(e.nodes,"$start","start"),e.nodes.$start.status="running",Ie(e.nodes,"$start");const a=new Set,s=new Set;for(const u of e.parallelGroups){for(const f of u.agents)a.add(f);s.add(u.name),Qe(e.nodes,u.name,"parallel_group"),e.groupProgress[u.name]={total:u.agents.length,completed:0,failed:0};for(const f of u.agents)Qe(e.nodes,f,"agent")}for(const u of e.forEachGroups)s.add(u.name),Qe(e.nodes,u.name,"for_each_group"),e.groupProgress[u.name]={total:0,completed:0,failed:0};for(const u of e.agents)if(!s.has(u.name)&&!a.has(u.name)){const f=u.type||"agent";Qe(e.nodes,u.name,f),u.model&&(e.nodes[u.name].model=u.model),s.add(u.name)}e.agentsTotal=s.size}else{const a=di(e.subworkflowContexts,e.activeContextPath);if(a){a.workflowName=l.name||"",a.status="running",a.entryPoint=l.entry_point||null,a.agents=l.agents||[],a.routes=l.routes||[],a.parallelGroups=l.parallel_groups||[],a.forEachGroups=l.for_each_groups||[],Qe(a.nodes,"$start","start"),a.nodes.$start.status="running";const s=new Set,u=new Set;for(const f of a.parallelGroups){for(const d of f.agents)s.add(d);u.add(f.name),Qe(a.nodes,f.name,"parallel_group"),a.groupProgress[f.name]={total:f.agents.length,completed:0,failed:0};for(const d of f.agents)Qe(a.nodes,d,"agent")}for(const f of a.forEachGroups)u.add(f.name),Qe(a.nodes,f.name,"for_each_group"),a.groupProgress[f.name]={total:0,completed:0,failed:0};for(const f of a.agents)if(!u.has(f.name)&&!s.has(f.name)){const d=f.type||"agent";Qe(a.nodes,f.name,d),f.model&&(a.nodes[f.name].model=f.model),u.add(f.name)}a.agentsTotal=u.size}}e.wfDepth++},agent_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.iteration!=null&&(s.output!=null||s.error_type!=null)&&(s.iterationHistory||(s.iterationHistory=[]),s.iterationHistory.push({iteration:s.iteration,prompt:s.prompt,output:s.output,elapsed:s.elapsed,model:s.model,tokens:s.tokens,input_tokens:s.input_tokens,output_tokens:s.output_tokens,cost_usd:s.cost_usd,activity:s.activity,error_type:s.error_type,error_message:s.error_message})),s.status="running",s.iteration=l.iteration,s.startedAt=r??Date.now()/1e3,s.activity=[],l.context_window_max!=null&&(s.context_window_max=l.context_window_max),s.prompt=void 0,s.output=void 0,s.error_type=void 0,s.error_message=void 0,Ie(a.nodes,l.agent_name)},agent_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name)},agent_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const s of l.routes)s.to===r.agent_name&&l.highlightedEdges.push({from:s.from,to:s.to,state:"failed"});Ie(l.nodes,r.agent_name)},agent_prompt_rendered:(e,n)=>{var u;const r=n,l=n.item_key,a=at(e),s=Qe(a.nodes,r.agent_name);if(s.prompt=r.rendered_prompt,s.context_keys=r.context_keys,l){lo(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const f=a.nodes[r.agent_name];if(f!=null&&f.for_each_items){const d=f.for_each_items.find(h=>h.key===l);d&&(d.prompt=r.rendered_prompt)}}Ie(a.nodes,r.agent_name)},agent_reasoning:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"reasoning",icon:"💭",label:"thinking",text:r.content};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_tool_complete:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_turn_start:(e,n)=>{const r=n,l=n.item_key,a=at(e),s={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};bu(a.nodes,r.agent_name,s),l&&lo(a.nodes,r.agent_name,l,s),Ie(a.nodes,r.agent_name)},agent_message:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.latest_message=r.content,Ie(l.nodes,r.agent_name)},script_started:(e,n,r)=>{const l=n,a=at(e),s=Qe(a.nodes,l.agent_name);s.status="running",s.startedAt=r??Date.now()/1e3,Ie(a.nodes,l.agent_name)},script_completed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,Ie(l.nodes,r.agent_name)},script_failed:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name)},gate_presented:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,Ie(l.nodes,r.agent_name)},gate_resolved:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,Ie(l.nodes,r.agent_name)},route_taken:(e,n)=>{const r=n;at(e).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},parallel_agent_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_agent_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name),Ie(l.nodes,r.group_name)},parallel_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",Ie(l.nodes,r.group_name)},for_each_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),Ie(l.nodes,r.group_name)},for_each_item_started:(e,n)=>{const r=n,l=at(e),a=Qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),Ie(l.nodes,r.group_name)},for_each_item_completed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}Ie(l.nodes,r.group_name)},for_each_item_failed:(e,n)=>{const r=n,l=at(e);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=Qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const s=r.item_key??String(r.index),u=a.for_each_items.find(f=>f.key===s);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}Ie(l.nodes,r.group_name)},for_each_completed:(e,n)=>{const r=n,l=at(e);l.incrCompleted();const a=Qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,Ie(l.nodes,r.group_name)},workflow_completed:(e,n)=>{if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const r=n;e.workflowStatus="completed",e.isPaused=!1,e.workflowOutput=r.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",Ie(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start")),e.highlightedEdges=[]}else{const r=di(e.subworkflowContexts,e.activeContextPath);if(r){const l=n;r.status="completed",r.workflowOutput=l.output??null,r.nodes.$end&&(r.nodes.$end.status="completed"),r.nodes.$start&&(r.nodes.$start.status="completed"),r.highlightedEdges=[]}e.activeContextPath=e.activeContextPath.slice(0,-1)}},workflow_failed:(e,n)=>{e.wfDepth=Math.max(0,e.wfDepth-1);const r=n;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",Ie(e.nodes,r.agent_name);for(const l of e.routes)l.to===r.agent_name&&e.highlightedEdges.push({from:l.from,to:l.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",Ie(e.nodes,"$start"))}else{const l=di(e.subworkflowContexts,e.activeContextPath);l&&(l.status="failed",l.workflowFailure={error_type:r.error_type,message:r.message}),e.activeContextPath=e.activeContextPath.slice(0,-1)}},subworkflow_started:(e,n)=>{const r=n,l=vN(r.agent_name,r.iteration??1,r.workflow);if(e.activeContextPath.length===0)e.subworkflowContexts.push(l),e.activeContextPath=[e.subworkflowContexts.length-1];else{const s=di(e.subworkflowContexts,e.activeContextPath);s&&(s.children.push(l),e.activeContextPath=[...e.activeContextPath,s.children.length-1])}const a=e.activeContextPath.slice(0,-1);if(a.length===0){const s=e.nodes[r.agent_name];s&&(s.status="running",Ie(e.nodes,r.agent_name))}else{const s=di(e.subworkflowContexts,a);if(s){const u=s.nodes[r.agent_name];u&&(u.status="running",Ie(s.nodes,r.agent_name))}}},subworkflow_completed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="completed",a.elapsed=r.elapsed,l.incrCompleted(),Ie(l.nodes,r.agent_name))},subworkflow_failed:(e,n)=>{const r=n,l=at(e),a=l.nodes[r.agent_name];a&&(a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,Ie(l.nodes,r.agent_name))},checkpoint_saved:(e,n)=>{const r=n;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),Ie(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,n)=>{const r=n,l=Qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),Ie(e.nodes,r.agent_name),e.isPaused=!1}};function Su(e){var l,a;const n=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:n,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:n,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:n,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:n,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:n,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:n,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:n,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:n,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:n,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:n,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:n,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:n,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};default:return null}}function Hu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function _u(e){const n=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:n,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:ao(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:n,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:n,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?ao(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?ao(String(r.result),300):null};case"agent_turn_start":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:n,source:String(r.agent_name),type:"message",message:ao(String(r.content||""),500)};case"agent_completed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${Hu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:n,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:n,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?ao(String(r.stdout),300):null};case"script_failed":return{timestamp:n,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function ao(e,n){return e.length<=n?e:e.slice(0,n)+"…"}function kx(e){const n=e.match(/^(\s*)/);return n?n[1].length:0}function wN(e){const n=new Map;for(let r=0;ra)s=u;else break}s>r&&n.set(r,s)}return n}function SN(e){if(/^\s*#/.test(e))return b.jsx("span",{className:"text-emerald-500/70",children:e});const n=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(n){const[,l,a,s,u,f]=n;return b.jsxs("span",{children:[l,a??"",b.jsx("span",{className:"text-sky-400",children:s}),b.jsx("span",{className:"text-[var(--text-muted)]",children:u}),Cx(f)]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,s]=r;return b.jsxs("span",{children:[l,b.jsx("span",{className:"text-[var(--text-muted)]",children:a}),Cx(s)]})}return b.jsx("span",{children:e})}function Cx(e){if(!e)return"";const n=e.indexOf(" #"),r=n>=0?e.slice(0,n):e,l=n>=0?e.slice(n):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=b.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=b.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=b.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),b.jsxs(b.Fragment,{children:[a,l&&b.jsx("span",{className:"text-emerald-500/70",children:l})]})}function _N({yaml:e,onClose:n}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const d=h=>{h.key==="Escape"&&n()};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[n]);const a=V.useMemo(()=>e.split(` -`),[e]),s=V.useMemo(()=>wN(a),[a]),u=V.useCallback(d=>{l(h=>{const m=new Set(h);return m.has(d)?m.delete(d):m.add(d),m})},[]),f=V.useMemo(()=>{const d=[];let h=-1;for(let m=0;mb.jsxs("div",{className:"flex",children:[b.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?b.jsx("button",{onClick:()=>u(d),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?b.jsx(Mr,{className:"w-3 h-3"}):b.jsx(Ji,{className:"w-3 h-3"})}):null}),b.jsxs("span",{className:"flex-1",children:[SN(h),p&&b.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(d),children:"···"})]})]},d))})})]})]})}function EN(){const e=he(_=>_.workflowName),n=he(_=>_.workflowStatus),r=he(_=>_.isPaused),l=he(_=>_.workflowYaml),a=he(_=>_.conductorVersion),[s,u]=V.useState(!1),[f,d]=V.useState(!1),[h,m]=V.useState(!1),[p,y]=V.useState(!1),v=n==="running"||n==="pending";V.useEffect(()=>{r||(u(!1),d(!1),m(!1))},[r]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(_){console.error("Failed to stop agent:",_),u(!1)}},k=async()=>{d(!0);try{await fetch("/api/resume",{method:"POST"})}catch(_){console.error("Failed to resume agent:",_),d(!1)}},S=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(_){console.error("Failed to kill workflow:",_),m(!1)}};return b.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(zb,{className:"w-4 h-4 text-[var(--running)]"}),b.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&b.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),b.jsxs("div",{className:"flex items-center gap-3",children:[r?b.jsxs(b.Fragment,{children:[b.jsxs("button",{onClick:k,disabled:f,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r - bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\r - hover:bg-emerald-500/20 hover:border-emerald-500/30\r - disabled:opacity-50 disabled:cursor-not-allowed\r - transition-colors`,title:"Re-execute the paused agent",children:[b.jsx(Pp,{className:"w-3 h-3"}),f?"Resuming...":"Resume"]}),b.jsxs("button",{onClick:S,disabled:h,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r - bg-red-500/10 text-red-400 border border-red-500/20\r - hover:bg-red-500/20 hover:border-red-500/30\r - disabled:opacity-50 disabled:cursor-not-allowed\r - transition-colors`,title:"Stop workflow entirely (checkpoint saved for CLI resume)",children:[b.jsx(Uo,{className:"w-3 h-3"}),h?"Killing...":"Kill"]})]}):v?b.jsxs("button",{onClick:w,disabled:s,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r - bg-red-500/10 text-red-400 border border-red-500/20\r - hover:bg-red-500/20 hover:border-red-500/30\r - disabled:opacity-50 disabled:cursor-not-allowed\r - transition-colors`,children:[b.jsx(Ob,{className:"w-3 h-3"}),s?"Stopping...":"Stop"]}):null,l&&b.jsxs("button",{onClick:()=>y(!0),className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r - bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r - hover:text-[var(--text)] hover:bg-[var(--surface)]\r - transition-colors`,title:"View workflow YAML configuration",children:[b.jsx(tN,{className:"w-3 h-3"}),"YAML"]}),b.jsxs("a",{href:"/api/logs",download:"conductor-logs.json",className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded\r - bg-[var(--surface-hover)] text-[var(--text-secondary)] border border-[var(--border)]\r - hover:text-[var(--text)] hover:bg-[var(--surface)]\r - transition-colors`,title:"Download full event log as JSON",children:[b.jsx(W2,{className:"w-3 h-3"}),"Logs"]}),b.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["v",a??"—"]})]}),p&&l&&b.jsx(_N,{yaml:l,onClose:()=>y(!1)})]})}function NN(){const e=he(s=>s.getBreadcrumbs),n=he(s=>s.navigateToContext),r=he(s=>s.viewContextPath);if(he(s=>s.subworkflowContexts).length===0&&r.length===0)return null;const a=e();return b.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5 bg-[var(--surface)] border-b border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx($p,{className:"w-3 h-3 text-[var(--text-muted)] mr-1"}),a.map((s,u)=>{const f=u===a.length-1,d=JSON.stringify(s.path)===JSON.stringify(r);return b.jsxs("span",{className:"flex items-center gap-1",children:[u>0&&b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)]"}),f?b.jsx("span",{className:"font-semibold text-[var(--text)]",children:s.label}):b.jsx("button",{onClick:()=>n(s.path),className:`hover:text-[var(--running)] transition-colors ${d?"text-[var(--text)] font-medium":"text-[var(--text-muted)]"}`,children:s.label})]},u)})]})}function Be(...e){return e.filter(Boolean).join(" ")}function Qt(e){if(e==null)return"";if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function Vn(e){return e==null?"":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${e}`}function mi(e){return e==null?"":`$${e.toFixed(4)}`}function Db(e){return e==null?"":typeof e=="string"?e:JSON.stringify(e,null,2)}function kN(e,n){if(n<=0)return`${e.toLocaleString()} tokens (limit unknown)`;const r=a=>a.toLocaleString(),l=(e/n*100).toFixed(1);return`${r(e)} / ${r(n)} (${l}%)`}function Rb(){const e=he(f=>f.workflowStatus),n=he(f=>f.workflowStartTime),r=he(f=>f.replayMode),l=he(f=>f.lastEventTime),[a,s]=V.useState("—"),u=V.useRef(null);return V.useEffect(()=>{if(n!=null){if(r){u.current&&(clearInterval(u.current),u.current=null),s(Qt((l??n)-n));return}if(e==="running"){const f=()=>{const d=Date.now()/1e3-n;s(Qt(d))};return f(),u.current=setInterval(f,500),()=>{u.current&&clearInterval(u.current)}}else(e==="completed"||e==="failed")&&u.current&&(clearInterval(u.current),u.current=null)}},[e,n,r,l]),a}function CN(){const e=he(k=>k.workflowStatus),n=he(k=>k.agentsCompleted),r=he(k=>k.agentsTotal),l=he(k=>k.totalCost),a=he(k=>k.totalTokens),s=he(k=>k.wsStatus),u=he(k=>k.workflowFailure),f=he(k=>k.lastEventTime),d=Rb(),[h,m]=V.useState(null);V.useEffect(()=>{if(e!=="running"||f==null){m(null);return}const k=()=>{m(Math.floor(Date.now()/1e3-f))};k();const S=setInterval(k,1e3);return()=>clearInterval(S)},[e,f]);const p=e==="failed",y=(()=>{switch(e){case"pending":return"Waiting for workflow…";case"running":return"Running";case"completed":return"Completed";case"failed":{if(!u)return"Failed";const k=u.error_type||"";return k==="MaxIterationsError"?"Failed: exceeded maximum iterations":k==="TimeoutError"?"Failed: workflow timed out":u.message?`Failed: ${u.message.length>60?u.message.slice(0,57)+"...":u.message}`:`Failed: ${k}`}}})(),v={pending:"bg-[var(--pending)]",running:"bg-[var(--running)] animate-pulse",completed:"bg-[var(--completed)]",failed:"bg-[var(--failed)]"}[e],w=(()=>{switch(s){case"connected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--completed)]",children:[b.jsx(hN,{className:"w-3 h-3"}),b.jsx("span",{children:"Connected"})]});case"disconnected":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--failed)]",children:[b.jsx(dN,{className:"w-3 h-3"}),b.jsx("span",{children:"Disconnected"})]});case"reconnecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--waiting)]",children:[b.jsx(No,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Reconnecting\\u2026"})]});case"connecting":return b.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-muted)]",children:[b.jsx(No,{className:"w-3 h-3 animate-spin"}),b.jsx("span",{children:"Connecting\\u2026"})]})}})();return b.jsxs("footer",{className:Be("flex items-center gap-4 px-4 py-1.5 border-t text-xs flex-shrink-0 transition-colors duration-300",p?"bg-red-950/50 border-red-500/30":"bg-[var(--surface)] border-[var(--border)]"),children:[b.jsx("span",{className:Be("w-2 h-2 rounded-full flex-shrink-0",v)}),b.jsx("span",{className:Be(p?"text-red-300":"text-[var(--text)]"),children:y}),r>0&&b.jsxs("span",{className:Be(p?"text-red-400/60":"text-[var(--text-muted)]"),children:[n,"/",r," agents"]}),e!=="pending"&&b.jsx("span",{className:Be("font-mono",p?"text-red-400/60":"text-[var(--text-muted)]"),children:d}),a>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total tokens used",children:[b.jsx(jb,{className:"w-3 h-3"}),b.jsx("span",{className:"font-mono",children:a.toLocaleString()})]}),l>0&&b.jsxs("span",{className:Be("flex items-center gap-1",p?"text-red-400/60":"text-[var(--text-muted)]"),title:"Total cost",children:[b.jsx(Ab,{className:"w-3 h-3"}),b.jsxs("span",{className:"font-mono",children:["$",l.toFixed(4)]})]}),h!=null&&h>=5&&b.jsxs("span",{className:Be("flex items-center gap-1 font-mono",h>=60?"text-amber-400":"text-[var(--text-muted)]"),title:"Time since last event from the provider",children:[b.jsx(J2,{className:"w-3 h-3"}),b.jsx("span",{children:h>=60?`${Math.floor(h/60)}m ${h%60}s idle`:`${h}s idle`})]}),b.jsx("span",{className:"flex-1"}),w]})}const TN=[1,5,10,20,50];function zN(e,n){if(n===0||e.length===0)return"+0.0s";const r=e[0].timestamp,a=e[Math.min(n,e.length)-1].timestamp-r;if(a<60)return`+${a.toFixed(1)}s`;const s=Math.floor(a/60),u=a%60;return`+${s}m${u.toFixed(0)}s`}function AN(){const e=he(p=>p.replayPosition),n=he(p=>p.replayTotalEvents),r=he(p=>p.replayPlaying),l=he(p=>p.replaySpeed),a=he(p=>p.replayEvents),s=he(p=>p.setReplayPosition),u=he(p=>p.setReplayPlaying),f=he(p=>p.setReplaySpeed),d=p=>{const y=parseInt(p.target.value,10);s(y),r&&u(!1)},h=()=>{!r&&e>=n&&s(0),u(!r)},m=n>0?e/n*100:0;return b.jsxs("footer",{className:"flex items-center gap-3 px-4 py-1.5 border-t bg-[var(--surface)] border-[var(--border)] text-xs flex-shrink-0",children:[b.jsx("button",{onClick:h,className:"flex items-center justify-center w-6 h-6 rounded hover:bg-[var(--surface-hover)] text-[var(--text-secondary)] hover:text-[var(--text)] transition-colors",title:r?"Pause":"Play",children:r?b.jsx(lN,{className:"w-3.5 h-3.5"}):b.jsx(Pp,{className:"w-3.5 h-3.5"})}),b.jsxs("div",{className:"flex-1 relative flex items-center",children:[b.jsx("input",{type:"range",min:0,max:n,value:e,onChange:d,className:"w-full h-1 appearance-none rounded-full cursor-pointer",style:{background:`linear-gradient(to right, var(--accent) 0%, var(--accent) ${m}%, var(--border) ${m}%, var(--border) 100%)`,WebkitAppearance:"none"}}),b.jsx("style",{children:` - footer input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - width: 12px; - height: 12px; - border-radius: 50%; - background: var(--accent); - border: 2px solid var(--surface); - cursor: pointer; - box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); - } - footer input[type="range"]::-moz-range-thumb { - width: 12px; - height: 12px; - border-radius: 50%; - background: var(--accent); - border: 2px solid var(--surface); - cursor: pointer; - box-shadow: 0 0 4px rgba(99, 102, 241, 0.4); - } - `})]}),b.jsx("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:zN(a,e)}),b.jsxs("span",{className:"text-[var(--text-muted)] font-mono whitespace-nowrap",children:["Event ",e,"/",n]}),b.jsx("div",{className:"flex items-center gap-0.5",children:TN.map(p=>b.jsxs("button",{onClick:()=>f(p),className:Be("px-1.5 py-0.5 rounded text-xs font-mono transition-colors",l===p?"bg-[var(--accent)] text-white":"text-[var(--text-muted)] hover:text-[var(--text-secondary)] hover:bg-[var(--surface-hover)]"),children:[p,"×"]},p))})]})}const sc=V.createContext(null);sc.displayName="PanelGroupContext";const yt={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},Xp=10,Gi=V.useLayoutEffect,Tx=q2.useId,MN=typeof Tx=="function"?Tx:()=>null;let jN=0;function Fp(e=null){const n=MN(),r=V.useRef(e||n||null);return r.current===null&&(r.current=""+jN++),e??r.current}function Lb({children:e,className:n="",collapsedSize:r,collapsible:l,defaultSize:a,forwardedRef:s,id:u,maxSize:f,minSize:d,onCollapse:h,onExpand:m,onResize:p,order:y,style:v,tagName:w="div",...k}){const S=V.useContext(sc);if(S===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:_,expandPanel:T,getPanelSize:E,getPanelStyle:z,groupId:I,isPanelCollapsed:A,reevaluatePanelConstraints:R,registerPanel:D,resizePanel:U,unregisterPanel:X}=S,B=Fp(u),q=V.useRef({callbacks:{onCollapse:h,onExpand:m,onResize:p},constraints:{collapsedSize:r,collapsible:l,defaultSize:a,maxSize:f,minSize:d},id:B,idIsFromProps:u!==void 0,order:y});V.useRef({didLogMissingDefaultSizeWarning:!1}),Gi(()=>{const{callbacks:L,constraints:$}=q.current,M={...$};q.current.id=B,q.current.idIsFromProps=u!==void 0,q.current.order=y,L.onCollapse=h,L.onExpand=m,L.onResize=p,$.collapsedSize=r,$.collapsible=l,$.defaultSize=a,$.maxSize=f,$.minSize=d,(M.collapsedSize!==$.collapsedSize||M.collapsible!==$.collapsible||M.maxSize!==$.maxSize||M.minSize!==$.minSize)&&R(q.current,M)}),Gi(()=>{const L=q.current;return D(L),()=>{X(L)}},[y,B,D,X]),V.useImperativeHandle(s,()=>({collapse:()=>{_(q.current)},expand:L=>{T(q.current,L)},getId(){return B},getSize(){return E(q.current)},isCollapsed(){return A(q.current)},isExpanded(){return!A(q.current)},resize:L=>{U(q.current,L)}}),[_,T,E,A,B,U]);const ee=z(q.current,a);return V.createElement(w,{...k,children:e,className:n,id:B,style:{...ee,...v},[yt.groupId]:I,[yt.panel]:"",[yt.panelCollapsible]:l||void 0,[yt.panelId]:B,[yt.panelSize]:parseFloat(""+ee.flexGrow).toFixed(1)})}const po=V.forwardRef((e,n)=>V.createElement(Lb,{...e,forwardedRef:n}));Lb.displayName="Panel";po.displayName="forwardRef(Panel)";let xp=null,Bu=-1,hi=null;function ON(e,n){if(n){const r=(n&Ib)!==0,l=(n&Vb)!==0,a=(n&Gb)!==0,s=(n&Yb)!==0;if(r)return a?"se-resize":s?"ne-resize":"e-resize";if(l)return a?"sw-resize":s?"nw-resize":"w-resize";if(a)return"s-resize";if(s)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function DN(){hi!==null&&(document.head.removeChild(hi),xp=null,hi=null,Bu=-1)}function Pd(e,n){var r,l;const a=ON(e,n);if(xp!==a){if(xp=a,hi===null&&(hi=document.createElement("style"),document.head.appendChild(hi)),Bu>=0){var s;(s=hi.sheet)===null||s===void 0||s.removeRule(Bu)}Bu=(r=(l=hi.sheet)===null||l===void 0?void 0:l.insertRule(`*{cursor: ${a} !important;}`))!==null&&r!==void 0?r:-1}}function Hb(e){return e.type==="keydown"}function Bb(e){return e.type.startsWith("pointer")}function qb(e){return e.type.startsWith("mouse")}function uc(e){if(Bb(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(qb(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function RN(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function LN(e,n,r){return e.xn.x&&e.yn.y}function HN(e,n){if(e===n)throw new Error("Cannot compare node with itself");const r={a:Mx(e),b:Mx(n)};let l;for(;r.a.at(-1)===r.b.at(-1);)e=r.a.pop(),n=r.b.pop(),l=e;De(l,"Stacking order can only be calculated for elements with a common ancestor");const a={a:Ax(zx(r.a)),b:Ax(zx(r.b))};if(a.a===a.b){const s=l.childNodes,u={a:r.a.at(-1),b:r.b.at(-1)};let f=s.length;for(;f--;){const d=s[f];if(d===u.a)return 1;if(d===u.b)return-1}}return Math.sign(a.a-a.b)}const BN=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function qN(e){var n;const r=getComputedStyle((n=Ub(e))!==null&&n!==void 0?n:e).display;return r==="flex"||r==="inline-flex"}function UN(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||qN(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||BN.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function zx(e){let n=e.length;for(;n--;){const r=e[n];if(De(r,"Missing node"),UN(r))return r}return null}function Ax(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Mx(e){const n=[];for(;e;)n.push(e),e=Ub(e);return n}function Ub(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const Ib=1,Vb=2,Gb=4,Yb=8,IN=RN()==="coarse";let Gn=[],Zl=!1,Ui=new Map,cc=new Map;const ko=new Set;function VN(e,n,r,l,a){var s;const{ownerDocument:u}=n,f={direction:r,element:n,hitAreaMargins:l,setResizeHandlerState:a},d=(s=Ui.get(u))!==null&&s!==void 0?s:0;return Ui.set(u,d+1),ko.add(f),Pu(),function(){var m;cc.delete(e),ko.delete(f);const p=(m=Ui.get(u))!==null&&m!==void 0?m:1;if(Ui.set(u,p-1),Pu(),p===1&&Ui.delete(u),Gn.includes(f)){const y=Gn.indexOf(f);y>=0&&Gn.splice(y,1),Zp(),a("up",!0,null)}}}function GN(e){const{target:n}=e,{x:r,y:l}=uc(e);Zl=!0,Qp({target:n,x:r,y:l}),Pu(),Gn.length>0&&(Xu("down",e),e.preventDefault(),$b(n)||e.stopImmediatePropagation())}function Xd(e){const{x:n,y:r}=uc(e);if(Zl&&e.buttons===0&&(Zl=!1,Xu("up",e)),!Zl){const{target:l}=e;Qp({target:l,x:n,y:r})}Xu("move",e),Zp(),Gn.length>0&&e.preventDefault()}function Fd(e){const{target:n}=e,{x:r,y:l}=uc(e);cc.clear(),Zl=!1,Gn.length>0&&(e.preventDefault(),$b(n)||e.stopImmediatePropagation()),Xu("up",e),Qp({target:n,x:r,y:l}),Zp(),Pu()}function $b(e){let n=e;for(;n;){if(n.hasAttribute(yt.resizeHandle))return!0;n=n.parentElement}return!1}function Qp({target:e,x:n,y:r}){Gn.splice(0);let l=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(l=e),ko.forEach(a=>{const{element:s,hitAreaMargins:u}=a,f=s.getBoundingClientRect(),{bottom:d,left:h,right:m,top:p}=f,y=IN?u.coarse:u.fine;if(n>=h-y&&n<=m+y&&r>=p-y&&r<=d+y){if(l!==null&&document.contains(l)&&s!==l&&!s.contains(l)&&!l.contains(s)&&HN(l,s)>0){let w=l,k=!1;for(;w&&!w.contains(s);){if(LN(w.getBoundingClientRect(),f)){k=!0;break}w=w.parentElement}if(k)return}Gn.push(a)}})}function Qd(e,n){cc.set(e,n)}function Zp(){let e=!1,n=!1;Gn.forEach(l=>{const{direction:a}=l;a==="horizontal"?e=!0:n=!0});let r=0;cc.forEach(l=>{r|=l}),e&&n?Pd("intersection",r):e?Pd("horizontal",r):n?Pd("vertical",r):DN()}let Zd=new AbortController;function Pu(){Zd.abort(),Zd=new AbortController;const e={capture:!0,signal:Zd.signal};ko.size&&(Zl?(Gn.length>0&&Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("contextmenu",Fd,e),l.addEventListener("pointerleave",Xd,e),l.addEventListener("pointermove",Xd,e))}),window.addEventListener("pointerup",Fd,e),window.addEventListener("pointercancel",Fd,e)):Ui.forEach((n,r)=>{const{body:l}=r;n>0&&(l.addEventListener("pointerdown",GN,e),l.addEventListener("pointermove",Xd,e))}))}function Xu(e,n){ko.forEach(r=>{const{setResizeHandlerState:l}=r,a=Gn.includes(r);l(e,a,n)})}function YN(){const[e,n]=V.useState(0);return V.useCallback(()=>n(r=>r+1),[])}function De(e,n){if(!e)throw console.error(n),Error(n)}function Pi(e,n,r=Xp){return e.toFixed(r)===n.toFixed(r)?0:e>n?1:-1}function Cr(e,n,r=Xp){return Pi(e,n,r)===0}function xn(e,n,r){return Pi(e,n,r)===0}function $N(e,n,r){if(e.length!==n.length)return!1;for(let l=0;l0&&(e=e<0?0-_:_)}}}{const p=e<0?f:d,y=r[p];De(y,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:w,minSize:k=0}=y;if(w){const S=n[p];if(De(S!=null,`Previous layout not found for panel index ${p}`),xn(S,k)){const _=S-v;Pi(_,Math.abs(e))>0&&(e=e<0?0-_:_)}}}}{const p=e<0?1:-1;let y=e<0?d:f,v=0;for(;;){const k=n[y];De(k!=null,`Previous layout not found for panel index ${y}`);const _=Pl({panelConstraints:r,panelIndex:y,size:100})-k;if(v+=_,y+=p,y<0||y>=r.length)break}const w=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-w:w}{let y=e<0?f:d;for(;y>=0&&y=0))break;e<0?y--:y++}}if($N(a,u))return a;{const p=e<0?d:f,y=n[p];De(y!=null,`Previous layout not found for panel index ${p}`);const v=y+h,w=Pl({panelConstraints:r,panelIndex:p,size:v});if(u[p]=w,!xn(w,v)){let k=v-w,_=e<0?d:f;for(;_>=0&&_0?_--:_++}}}const m=u.reduce((p,y)=>y+p,0);return xn(m,100)?u:a}function PN({layout:e,panelsArray:n,pivotIndices:r}){let l=0,a=100,s=0,u=0;const f=r[0];De(f!=null,"No pivot index found"),n.forEach((p,y)=>{const{constraints:v}=p,{maxSize:w=100,minSize:k=0}=v;y===f?(l=k,a=w):(s+=k,u+=w)});const d=Math.min(a,100-s),h=Math.max(l,100-u),m=e[f];return{valueMax:d,valueMin:h,valueNow:m}}function Co(e,n=document){return Array.from(n.querySelectorAll(`[${yt.resizeHandleId}][data-panel-group-id="${e}"]`))}function Pb(e,n,r=document){const a=Co(e,r).findIndex(s=>s.getAttribute(yt.resizeHandleId)===n);return a??null}function Xb(e,n,r){const l=Pb(e,n,r);return l!=null?[l,l+1]:[-1,-1]}function Fb(e,n=document){var r;if(n instanceof HTMLElement&&(n==null||(r=n.dataset)===null||r===void 0?void 0:r.panelGroupId)==e)return n;const l=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return l||null}function fc(e,n=document){const r=n.querySelector(`[${yt.resizeHandleId}="${e}"]`);return r||null}function XN(e,n,r,l=document){var a,s,u,f;const d=fc(n,l),h=Co(e,l),m=d?h.indexOf(d):-1,p=(a=(s=r[m])===null||s===void 0?void 0:s.id)!==null&&a!==void 0?a:null,y=(u=(f=r[m+1])===null||f===void 0?void 0:f.id)!==null&&u!==void 0?u:null;return[p,y]}function FN({committedValuesRef:e,eagerValuesRef:n,groupId:r,layout:l,panelDataArray:a,panelGroupElement:s,setLayout:u}){V.useRef({didWarnAboutMissingResizeHandle:!1}),Gi(()=>{if(!s)return;const f=Co(r,s);for(let d=0;d{f.forEach((d,h)=>{d.removeAttribute("aria-controls"),d.removeAttribute("aria-valuemax"),d.removeAttribute("aria-valuemin"),d.removeAttribute("aria-valuenow")})}},[r,l,a,s]),V.useEffect(()=>{if(!s)return;const f=n.current;De(f,"Eager values not found");const{panelDataArray:d}=f,h=Fb(r,s);De(h!=null,`No group found for id "${r}"`);const m=Co(r,s);De(m,`No resize handles found for group id "${r}"`);const p=m.map(y=>{const v=y.getAttribute(yt.resizeHandleId);De(v,"Resize handle element has no handle id attribute");const[w,k]=XN(r,v,d,s);if(w==null||k==null)return()=>{};const S=_=>{if(!_.defaultPrevented)switch(_.key){case"Enter":{_.preventDefault();const T=d.findIndex(E=>E.id===w);if(T>=0){const E=d[T];De(E,`No panel data found for index ${T}`);const z=l[T],{collapsedSize:I=0,collapsible:A,minSize:R=0}=E.constraints;if(z!=null&&A){const D=mo({delta:xn(z,I)?R-I:I-z,initialLayout:l,panelConstraints:d.map(U=>U.constraints),pivotIndices:Xb(r,v,s),prevLayout:l,trigger:"keyboard"});l!==D&&u(D)}}break}}};return y.addEventListener("keydown",S),()=>{y.removeEventListener("keydown",S)}});return()=>{p.forEach(y=>y())}},[s,e,n,r,l,a,u])}function jx(e,n){if(e.length!==n.length)return!1;for(let r=0;rs.constraints);let l=0,a=100;for(let s=0;s{const s=e[a];De(s,`Panel data not found for index ${a}`);const{callbacks:u,constraints:f,id:d}=s,{collapsedSize:h=0,collapsible:m}=f,p=r[d];if(p==null||l!==p){r[d]=l;const{onCollapse:y,onExpand:v,onResize:w}=u;w&&w(l,p),m&&(y||v)&&(v&&(p==null||Cr(p,h))&&!Cr(l,h)&&v(),y&&(p==null||!Cr(p,h))&&Cr(l,h)&&y())}})}function Eu(e,n){if(e.length!==n.length)return!1;for(let r=0;r{r!==null&&clearTimeout(r),r=setTimeout(()=>{e(...a)},n)}}function Ox(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,r)=>{localStorage.setItem(n,r)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function Zb(e){return`react-resizable-panels:${e}`}function Kb(e){return e.map(n=>{const{constraints:r,id:l,idIsFromProps:a,order:s}=n;return a?l:s?`${s}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((n,r)=>n.localeCompare(r)).join(",")}function Jb(e,n){try{const r=Zb(e),l=n.getItem(r);if(l){const a=JSON.parse(l);if(typeof a=="object"&&a!=null)return a}}catch{}return null}function ek(e,n,r){var l,a;const s=(l=Jb(e,r))!==null&&l!==void 0?l:{},u=Kb(n);return(a=s[u])!==null&&a!==void 0?a:null}function tk(e,n,r,l,a){var s;const u=Zb(e),f=Kb(n),d=(s=Jb(e,a))!==null&&s!==void 0?s:{};d[f]={expandToSizes:Object.fromEntries(r.entries()),layout:l};try{a.setItem(u,JSON.stringify(d))}catch(h){console.error(h)}}function Dx({layout:e,panelConstraints:n}){const r=[...e],l=r.reduce((s,u)=>s+u,0);if(r.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${r.map(s=>`${s}%`).join(", ")}`);if(!xn(l,100)&&r.length>0)for(let s=0;s(Ox(go),go.getItem(e)),setItem:(e,n)=>{Ox(go),go.setItem(e,n)}},Rx={};function Wb({autoSaveId:e=null,children:n,className:r="",direction:l,forwardedRef:a,id:s=null,onLayout:u=null,keyboardResizeBy:f=null,storage:d=go,style:h,tagName:m="div",...p}){const y=Fp(s),v=V.useRef(null),[w,k]=V.useState(null),[S,_]=V.useState([]),T=YN(),E=V.useRef({}),z=V.useRef(new Map),I=V.useRef(0),A=V.useRef({autoSaveId:e,direction:l,dragState:w,id:y,keyboardResizeBy:f,onLayout:u,storage:d}),R=V.useRef({layout:S,panelDataArray:[],panelDataArrayChanged:!1});V.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),V.useImperativeHandle(a,()=>({getId:()=>A.current.id,getLayout:()=>{const{layout:N}=R.current;return N},setLayout:N=>{const{onLayout:G}=A.current,{layout:F,panelDataArray:J}=R.current,ne=Dx({layout:N,panelConstraints:J.map(re=>re.constraints)});jx(F,ne)||(_(ne),R.current.layout=ne,G&&G(ne),Ul(J,ne,E.current))}}),[]),Gi(()=>{A.current.autoSaveId=e,A.current.direction=l,A.current.dragState=w,A.current.id=y,A.current.onLayout=u,A.current.storage=d}),FN({committedValuesRef:A,eagerValuesRef:R,groupId:y,layout:S,panelDataArray:R.current.panelDataArray,setLayout:_,panelGroupElement:v.current}),V.useEffect(()=>{const{panelDataArray:N}=R.current;if(e){if(S.length===0||S.length!==N.length)return;let G=Rx[e];G==null&&(G=WN(tk,nk),Rx[e]=G);const F=[...N],J=new Map(z.current);G(e,F,J,S,d)}},[e,S,d]),V.useEffect(()=>{});const D=V.useCallback(N=>{const{onLayout:G}=A.current,{layout:F,panelDataArray:J}=R.current;if(N.constraints.collapsible){const ne=J.map(ve=>ve.constraints),{collapsedSize:re=0,panelSize:se,pivotIndices:ye}=Bi(J,N,F);if(De(se!=null,`Panel size not found for panel "${N.id}"`),!Cr(se,re)){z.current.set(N.id,se);const xe=Yl(J,N)===J.length-1?se-re:re-se,pe=mo({delta:xe,initialLayout:F,panelConstraints:ne,pivotIndices:ye,prevLayout:F,trigger:"imperative-api"});Eu(F,pe)||(_(pe),R.current.layout=pe,G&&G(pe),Ul(J,pe,E.current))}}},[]),U=V.useCallback((N,G)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=R.current;if(N.constraints.collapsible){const re=ne.map(_e=>_e.constraints),{collapsedSize:se=0,panelSize:ye=0,minSize:ve=0,pivotIndices:xe}=Bi(ne,N,J),pe=G??ve;if(Cr(ye,se)){const _e=z.current.get(N.id),Me=_e!=null&&_e>=pe?_e:pe,ut=Yl(ne,N)===ne.length-1?ye-Me:Me-ye,tt=mo({delta:ut,initialLayout:J,panelConstraints:re,pivotIndices:xe,prevLayout:J,trigger:"imperative-api"});Eu(J,tt)||(_(tt),R.current.layout=tt,F&&F(tt),Ul(ne,tt,E.current))}}},[]),X=V.useCallback(N=>{const{layout:G,panelDataArray:F}=R.current,{panelSize:J}=Bi(F,N,G);return De(J!=null,`Panel size not found for panel "${N.id}"`),J},[]),B=V.useCallback((N,G)=>{const{panelDataArray:F}=R.current,J=Yl(F,N);return JN({defaultSize:G,dragState:w,layout:S,panelData:F,panelIndex:J})},[w,S]),q=V.useCallback(N=>{const{layout:G,panelDataArray:F}=R.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,G);return De(re!=null,`Panel size not found for panel "${N.id}"`),ne===!0&&Cr(re,J)},[]),ee=V.useCallback(N=>{const{layout:G,panelDataArray:F}=R.current,{collapsedSize:J=0,collapsible:ne,panelSize:re}=Bi(F,N,G);return De(re!=null,`Panel size not found for panel "${N.id}"`),!ne||Pi(re,J)>0},[]),L=V.useCallback(N=>{const{panelDataArray:G}=R.current;G.push(N),G.sort((F,J)=>{const ne=F.order,re=J.order;return ne==null&&re==null?0:ne==null?-1:re==null?1:ne-re}),R.current.panelDataArrayChanged=!0,T()},[T]);Gi(()=>{if(R.current.panelDataArrayChanged){R.current.panelDataArrayChanged=!1;const{autoSaveId:N,onLayout:G,storage:F}=A.current,{layout:J,panelDataArray:ne}=R.current;let re=null;if(N){const ye=ek(N,ne,F);ye&&(z.current=new Map(Object.entries(ye.expandToSizes)),re=ye.layout)}re==null&&(re=KN({panelDataArray:ne}));const se=Dx({layout:re,panelConstraints:ne.map(ye=>ye.constraints)});jx(J,se)||(_(se),R.current.layout=se,G&&G(se),Ul(ne,se,E.current))}}),Gi(()=>{const N=R.current;return()=>{N.layout=[]}},[]);const $=V.useCallback(N=>{let G=!1;const F=v.current;return F&&window.getComputedStyle(F,null).getPropertyValue("direction")==="rtl"&&(G=!0),function(ne){ne.preventDefault();const re=v.current;if(!re)return()=>null;const{direction:se,dragState:ye,id:ve,keyboardResizeBy:xe,onLayout:pe}=A.current,{layout:_e,panelDataArray:Me}=R.current,{initialLayout:Ce}=ye??{},ut=Xb(ve,N,re);let tt=ZN(ne,N,se,ye,xe,re);const At=se==="horizontal";At&&G&&(tt=-tt);const It=Me.map(jn=>jn.constraints),Rt=mo({delta:tt,initialLayout:Ce??_e,panelConstraints:It,pivotIndices:ut,prevLayout:_e,trigger:Hb(ne)?"keyboard":"mouse-or-touch"}),Sn=!Eu(_e,Rt);(Bb(ne)||qb(ne))&&I.current!=tt&&(I.current=tt,!Sn&&tt!==0?At?Qd(N,tt<0?Ib:Vb):Qd(N,tt<0?Gb:Yb):Qd(N,0)),Sn&&(_(Rt),R.current.layout=Rt,pe&&pe(Rt),Ul(Me,Rt,E.current))}},[]),M=V.useCallback((N,G)=>{const{onLayout:F}=A.current,{layout:J,panelDataArray:ne}=R.current,re=ne.map(_e=>_e.constraints),{panelSize:se,pivotIndices:ye}=Bi(ne,N,J);De(se!=null,`Panel size not found for panel "${N.id}"`);const xe=Yl(ne,N)===ne.length-1?se-G:G-se,pe=mo({delta:xe,initialLayout:J,panelConstraints:re,pivotIndices:ye,prevLayout:J,trigger:"imperative-api"});Eu(J,pe)||(_(pe),R.current.layout=pe,F&&F(pe),Ul(ne,pe,E.current))},[]),Y=V.useCallback((N,G)=>{const{layout:F,panelDataArray:J}=R.current,{collapsedSize:ne=0,collapsible:re}=G,{collapsedSize:se=0,collapsible:ye,maxSize:ve=100,minSize:xe=0}=N.constraints,{panelSize:pe}=Bi(J,N,F);pe!=null&&(re&&ye&&Cr(pe,ne)?Cr(ne,se)||M(N,se):peve&&M(N,ve))},[M]),Q=V.useCallback((N,G)=>{const{direction:F}=A.current,{layout:J}=R.current;if(!v.current)return;const ne=fc(N,v.current);De(ne,`Drag handle element not found for id "${N}"`);const re=Qb(F,G);k({dragHandleId:N,dragHandleRect:ne.getBoundingClientRect(),initialCursorPosition:re,initialLayout:J})},[]),K=V.useCallback(()=>{k(null)},[]),j=V.useCallback(N=>{const{panelDataArray:G}=R.current,F=Yl(G,N);F>=0&&(G.splice(F,1),delete E.current[N.id],R.current.panelDataArrayChanged=!0,T())},[T]),H=V.useMemo(()=>({collapsePanel:D,direction:l,dragState:w,expandPanel:U,getPanelSize:X,getPanelStyle:B,groupId:y,isPanelCollapsed:q,isPanelExpanded:ee,reevaluatePanelConstraints:Y,registerPanel:L,registerResizeHandle:$,resizePanel:M,startDragging:Q,stopDragging:K,unregisterPanel:j,panelGroupElement:v.current}),[D,w,l,U,X,B,y,q,ee,Y,L,$,M,Q,K,j]),P={display:"flex",flexDirection:l==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return V.createElement(sc.Provider,{value:H},V.createElement(m,{...p,children:n,className:r,id:s,ref:v,style:{...P,...h},[yt.group]:"",[yt.groupDirection]:l,[yt.groupId]:y}))}const vp=V.forwardRef((e,n)=>V.createElement(Wb,{...e,forwardedRef:n}));Wb.displayName="PanelGroup";vp.displayName="forwardRef(PanelGroup)";function Yl(e,n){return e.findIndex(r=>r===n||r.id===n.id)}function Bi(e,n,r){const l=Yl(e,n),s=l===e.length-1?[l-1,l]:[l,l+1],u=r[l];return{...n.constraints,panelSize:u,pivotIndices:s}}function rk({disabled:e,handleId:n,resizeHandler:r,panelGroupElement:l}){V.useEffect(()=>{if(e||r==null||l==null)return;const a=fc(n,l);if(a==null)return;const s=u=>{if(!u.defaultPrevented)switch(u.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{u.preventDefault(),r(u);break}case"F6":{u.preventDefault();const f=a.getAttribute(yt.groupId);De(f,`No group element found for id "${f}"`);const d=Co(f,l),h=Pb(f,n,l);De(h!==null,`No resize element found for id "${n}"`);const m=u.shiftKey?h>0?h-1:d.length-1:h+1{a.removeEventListener("keydown",s)}},[l,e,n,r])}function bp({children:e=null,className:n="",disabled:r=!1,hitAreaMargins:l,id:a,onBlur:s,onClick:u,onDragging:f,onFocus:d,onPointerDown:h,onPointerUp:m,style:p={},tabIndex:y=0,tagName:v="div",...w}){var k,S;const _=V.useRef(null),T=V.useRef({onClick:u,onDragging:f,onPointerDown:h,onPointerUp:m});V.useEffect(()=>{T.current.onClick=u,T.current.onDragging=f,T.current.onPointerDown=h,T.current.onPointerUp=m});const E=V.useContext(sc);if(E===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:z,groupId:I,registerResizeHandle:A,startDragging:R,stopDragging:D,panelGroupElement:U}=E,X=Fp(a),[B,q]=V.useState("inactive"),[ee,L]=V.useState(!1),[$,M]=V.useState(null),Y=V.useRef({state:B});Gi(()=>{Y.current.state=B}),V.useEffect(()=>{if(r)M(null);else{const H=A(X);M(()=>H)}},[r,X,A]);const Q=(k=l==null?void 0:l.coarse)!==null&&k!==void 0?k:15,K=(S=l==null?void 0:l.fine)!==null&&S!==void 0?S:5;V.useEffect(()=>{if(r||$==null)return;const H=_.current;De(H,"Element ref not attached");let P=!1;return VN(X,H,z,{coarse:Q,fine:K},(G,F,J)=>{if(!F){q("inactive");return}switch(G){case"down":{q("drag"),P=!1,De(J,'Expected event to be defined for "down" action'),R(X,J);const{onDragging:ne,onPointerDown:re}=T.current;ne==null||ne(!0),re==null||re();break}case"move":{const{state:ne}=Y.current;P=!0,ne!=="drag"&&q("hover"),De(J,'Expected event to be defined for "move" action'),$(J);break}case"up":{q("hover"),D();const{onClick:ne,onDragging:re,onPointerUp:se}=T.current;re==null||re(!1),se==null||se(),P||ne==null||ne();break}}})},[Q,z,r,K,A,X,$,R,D]),rk({disabled:r,handleId:X,resizeHandler:$,panelGroupElement:U});const j={touchAction:"none",userSelect:"none"};return V.createElement(v,{...w,children:e,className:n,id:a,onBlur:()=>{L(!1),s==null||s()},onFocus:()=>{L(!0),d==null||d()},ref:_,role:"separator",style:{...j,...p},tabIndex:y,[yt.groupDirection]:z,[yt.groupId]:I,[yt.resizeHandle]:"",[yt.resizeHandleActive]:B==="drag"?"pointer":ee?"keyboard":void 0,[yt.resizeHandleEnabled]:!r,[yt.resizeHandleId]:X,[yt.resizeHandleState]:B})}bp.displayName="PanelResizeHandle";function zt(e){if(typeof e=="string"||typeof e=="number")return""+e;let n="";if(Array.isArray(e))for(let r=0,l;r{}};function dc(){for(var e=0,n=arguments.length,r={},l;e=0&&(l=r.slice(a+1),r=r.slice(0,a)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:l}})}qu.prototype=dc.prototype={constructor:qu,on:function(e,n){var r=this._,l=lk(e+"",r),a,s=-1,u=l.length;if(arguments.length<2){for(;++s0)for(var r=new Array(a),l=0,a,s;l=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Hx.hasOwnProperty(n)?{space:Hx[n],local:e}:e}function ok(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===wp&&n.documentElement.namespaceURI===wp?n.createElement(e):n.createElementNS(r,e)}}function sk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function ew(e){var n=hc(e);return(n.local?sk:ok)(n)}function uk(){}function Kp(e){return e==null?uk:function(){return this.querySelector(e)}}function ck(e){typeof e!="function"&&(e=Kp(e));for(var n=this._groups,r=n.length,l=new Array(r),a=0;a=E&&(E=T+1);!(I=S[E])&&++E=0;)(u=l[a])&&(s&&u.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(u,s),s=u);return this}function Rk(e){e||(e=Lk);function n(p,y){return p&&y?e(p.__data__,y.__data__):!p-!y}for(var r=this._groups,l=r.length,a=new Array(l),s=0;sn?1:e>=n?0:NaN}function Hk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Bk(){return Array.from(this)}function qk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?Zk:typeof n=="function"?Jk:Kk)(e,n,r??"")):ta(this.node(),e)}function ta(e,n){return e.style.getPropertyValue(n)||lw(e).getComputedStyle(e,null).getPropertyValue(n)}function eC(e){return function(){delete this[e]}}function tC(e,n){return function(){this[e]=n}}function nC(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function rC(e,n){return arguments.length>1?this.each((n==null?eC:typeof n=="function"?nC:tC)(e,n)):this.node()[e]}function aw(e){return e.trim().split(/^|\s+/)}function Jp(e){return e.classList||new ow(e)}function ow(e){this._node=e,this._names=aw(e.getAttribute("class")||"")}ow.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function sw(e,n){for(var r=Jp(e),l=-1,a=n.length;++l=0&&(r=n.slice(l+1),n=n.slice(0,l)),{type:n,name:r}})}function MC(e){return function(){var n=this.__on;if(n){for(var r=0,l=-1,a=n.length,s;r()=>e;function Sp(e,{sourceEvent:n,subject:r,target:l,identifier:a,active:s,x:u,y:f,dx:d,dy:h,dispatch:m}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:u,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:d,enumerable:!0,configurable:!0},dy:{value:h,enumerable:!0,configurable:!0},_:{value:m}})}Sp.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function IC(e){return!e.ctrlKey&&!e.button}function VC(){return this.parentNode}function GC(e,n){return n??{x:e.x,y:e.y}}function YC(){return navigator.maxTouchPoints||"ontouchstart"in this}function pw(){var e=IC,n=VC,r=GC,l=YC,a={},s=dc("start","drag","end"),u=0,f,d,h,m,p=0;function y(z){z.on("mousedown.drag",v).filter(l).on("touchstart.drag",S).on("touchmove.drag",_,UC).on("touchend.drag touchcancel.drag",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(z,I){if(!(m||!e.call(this,z,I))){var A=E(this,n.call(this,z,I),z,I,"mouse");A&&(vn(z.view).on("mousemove.drag",w,To).on("mouseup.drag",k,To),dw(z.view),Kd(z),h=!1,f=z.clientX,d=z.clientY,A("start",z))}}function w(z){if(Kl(z),!h){var I=z.clientX-f,A=z.clientY-d;h=I*I+A*A>p}a.mouse("drag",z)}function k(z){vn(z.view).on("mousemove.drag mouseup.drag",null),hw(z.view,h),Kl(z),a.mouse("end",z)}function S(z,I){if(e.call(this,z,I)){var A=z.changedTouches,R=n.call(this,z,I),D=A.length,U,X;for(U=0;U>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?ku(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?ku(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=PC.exec(e))?new an(n[1],n[2],n[3],1):(n=XC.exec(e))?new an(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=FC.exec(e))?ku(n[1],n[2],n[3],n[4]):(n=QC.exec(e))?ku(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=ZC.exec(e))?Yx(n[1],n[2]/100,n[3]/100,1):(n=KC.exec(e))?Yx(n[1],n[2]/100,n[3]/100,n[4]):Bx.hasOwnProperty(e)?Ix(Bx[e]):e==="transparent"?new an(NaN,NaN,NaN,0):null}function Ix(e){return new an(e>>16&255,e>>8&255,e&255,1)}function ku(e,n,r,l){return l<=0&&(e=n=r=NaN),new an(e,n,r,l)}function e3(e){return e instanceof Vo||(e=Xi(e)),e?(e=e.rgb(),new an(e.r,e.g,e.b,e.opacity)):new an}function _p(e,n,r,l){return arguments.length===1?e3(e):new an(e,n,r,l??1)}function an(e,n,r,l){this.r=+e,this.g=+n,this.b=+r,this.opacity=+l}Wp(an,_p,mw(Vo,{brighter(e){return e=e==null?Qu:Math.pow(Qu,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?zo:Math.pow(zo,e),new an(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new an(Yi(this.r),Yi(this.g),Yi(this.b),Zu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Vx,formatHex:Vx,formatHex8:t3,formatRgb:Gx,toString:Gx}));function Vx(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}`}function t3(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}${Ii((isNaN(this.opacity)?1:this.opacity)*255)}`}function Gx(){const e=Zu(this.opacity);return`${e===1?"rgb(":"rgba("}${Yi(this.r)}, ${Yi(this.g)}, ${Yi(this.b)}${e===1?")":`, ${e})`}`}function Zu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Yi(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ii(e){return e=Yi(e),(e<16?"0":"")+e.toString(16)}function Yx(e,n,r,l){return l<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new qn(e,n,r,l)}function gw(e){if(e instanceof qn)return new qn(e.h,e.s,e.l,e.opacity);if(e instanceof Vo||(e=Xi(e)),!e)return new qn;if(e instanceof qn)return e;e=e.rgb();var n=e.r/255,r=e.g/255,l=e.b/255,a=Math.min(n,r,l),s=Math.max(n,r,l),u=NaN,f=s-a,d=(s+a)/2;return f?(n===s?u=(r-l)/f+(r0&&d<1?0:u,new qn(u,f,d,e.opacity)}function n3(e,n,r,l){return arguments.length===1?gw(e):new qn(e,n,r,l??1)}function qn(e,n,r,l){this.h=+e,this.s=+n,this.l=+r,this.opacity=+l}Wp(qn,n3,mw(Vo,{brighter(e){return e=e==null?Qu:Math.pow(Qu,e),new qn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?zo:Math.pow(zo,e),new qn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,l=r+(r<.5?r:1-r)*n,a=2*r-l;return new an(Jd(e>=240?e-240:e+120,a,l),Jd(e,a,l),Jd(e<120?e+240:e-120,a,l),this.opacity)},clamp(){return new qn($x(this.h),Cu(this.s),Cu(this.l),Zu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Zu(this.opacity);return`${e===1?"hsl(":"hsla("}${$x(this.h)}, ${Cu(this.s)*100}%, ${Cu(this.l)*100}%${e===1?")":`, ${e})`}`}}));function $x(e){return e=(e||0)%360,e<0?e+360:e}function Cu(e){return Math.max(0,Math.min(1,e||0))}function Jd(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const em=e=>()=>e;function r3(e,n){return function(r){return e+r*n}}function i3(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(l){return Math.pow(e+l*n,r)}}function l3(e){return(e=+e)==1?yw:function(n,r){return r-n?i3(n,r,e):em(isNaN(n)?r:n)}}function yw(e,n){var r=n-e;return r?r3(e,r):em(isNaN(e)?n:e)}const Ku=(function e(n){var r=l3(n);function l(a,s){var u=r((a=_p(a)).r,(s=_p(s)).r),f=r(a.g,s.g),d=r(a.b,s.b),h=yw(a.opacity,s.opacity);return function(m){return a.r=u(m),a.g=f(m),a.b=d(m),a.opacity=h(m),a+""}}return l.gamma=e,l})(1);function a3(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,l=n.slice(),a;return function(s){for(a=0;ar&&(s=n.slice(r,s),f[u]?f[u]+=s:f[++u]=s),(l=l[0])===(a=a[0])?f[u]?f[u]+=a:f[++u]=a:(f[++u]=null,d.push({i:u,x:Wn(l,a)})),r=Wd.lastIndex;return r180?m+=360:m-h>180&&(h+=360),y.push({i:p.push(a(p)+"rotate(",null,l)-2,x:Wn(h,m)})):m&&p.push(a(p)+"rotate("+m+l)}function f(h,m,p,y){h!==m?y.push({i:p.push(a(p)+"skewX(",null,l)-2,x:Wn(h,m)}):m&&p.push(a(p)+"skewX("+m+l)}function d(h,m,p,y,v,w){if(h!==p||m!==y){var k=v.push(a(v)+"scale(",null,",",null,")");w.push({i:k-4,x:Wn(h,p)},{i:k-2,x:Wn(m,y)})}else(p!==1||y!==1)&&v.push(a(v)+"scale("+p+","+y+")")}return function(h,m){var p=[],y=[];return h=e(h),m=e(m),s(h.translateX,h.translateY,m.translateX,m.translateY,p,y),u(h.rotate,m.rotate,p,y),f(h.skewX,m.skewX,p,y),d(h.scaleX,h.scaleY,m.scaleX,m.scaleY,p,y),h=m=null,function(v){for(var w=-1,k=y.length,S;++w=0&&e._call.call(void 0,n),e=e._next;--na}function Fx(){Fi=(Wu=Mo.now())+pc,na=yo=0;try{w3()}finally{na=0,_3(),Fi=0}}function S3(){var e=Mo.now(),n=e-Wu;n>ww&&(pc-=n,Wu=e)}function _3(){for(var e,n=Ju,r,l=1/0;n;)n._call?(l>n._time&&(l=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:Ju=r);xo=e,kp(l)}function kp(e){if(!na){yo&&(yo=clearTimeout(yo));var n=e-Fi;n>24?(e<1/0&&(yo=setTimeout(Fx,e-Mo.now()-pc)),oo&&(oo=clearInterval(oo))):(oo||(Wu=Mo.now(),oo=setInterval(S3,ww)),na=1,Sw(Fx))}}function Qx(e,n,r){var l=new ec;return n=n==null?0:+n,l.restart(a=>{l.stop(),e(a+n)},n,r),l}var E3=dc("start","end","cancel","interrupt"),N3=[],Ew=0,Zx=1,Cp=2,Iu=3,Kx=4,Tp=5,Vu=6;function mc(e,n,r,l,a,s){var u=e.__transition;if(!u)e.__transition={};else if(r in u)return;k3(e,r,{name:n,index:l,group:a,on:E3,tween:N3,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Ew})}function nm(e,n){var r=$n(e,n);if(r.state>Ew)throw new Error("too late; already scheduled");return r}function ir(e,n){var r=$n(e,n);if(r.state>Iu)throw new Error("too late; already running");return r}function $n(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function k3(e,n,r){var l=e.__transition,a;l[n]=r,r.timer=_w(s,0,r.time);function s(h){r.state=Zx,r.timer.restart(u,r.delay,r.time),r.delay<=h&&u(h-r.delay)}function u(h){var m,p,y,v;if(r.state!==Zx)return d();for(m in l)if(v=l[m],v.name===r.name){if(v.state===Iu)return Qx(u);v.state===Kx?(v.state=Vu,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete l[m]):+mCp&&l.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function nT(e,n,r){var l,a,s=tT(n)?nm:ir;return function(){var u=s(this,e),f=u.on;f!==l&&(a=(l=f).copy()).on(n,r),u.on=a}}function rT(e,n){var r=this._id;return arguments.length<2?$n(this.node(),r).on.on(e):this.each(nT(r,e,n))}function iT(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function lT(){return this.on("end.remove",iT(this._id))}function aT(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Kp(e));for(var l=this._groups,a=l.length,s=new Array(a),u=0;u()=>e;function MT(e,{sourceEvent:n,target:r,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function Tr(e,n,r){this.k=e,this.x=n,this.y=r}Tr.prototype={constructor:Tr,scale:function(e){return e===1?this:new Tr(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new Tr(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var gc=new Tr(1,0,0);Tw.prototype=Tr.prototype;function Tw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return gc;return e.__zoom}function eh(e){e.stopImmediatePropagation()}function so(e){e.preventDefault(),e.stopImmediatePropagation()}function jT(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function OT(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Jx(){return this.__zoom||gc}function DT(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function RT(){return navigator.maxTouchPoints||"ontouchstart"in this}function LT(e,n,r){var l=e.invertX(n[0][0])-r[0][0],a=e.invertX(n[1][0])-r[1][0],s=e.invertY(n[0][1])-r[0][1],u=e.invertY(n[1][1])-r[1][1];return e.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u))}function zw(){var e=jT,n=OT,r=LT,l=DT,a=RT,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,d=Uu,h=dc("start","zoom","end"),m,p,y,v=500,w=150,k=0,S=10;function _(L){L.property("__zoom",Jx).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",U).on("dblclick.zoom",X).filter(a).on("touchstart.zoom",B).on("touchmove.zoom",q).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(L,$,M,Y){var Q=L.selection?L.selection():L;Q.property("__zoom",Jx),L!==Q?I(L,$,M,Y):Q.interrupt().each(function(){A(this,arguments).event(Y).start().zoom(null,typeof $=="function"?$.apply(this,arguments):$).end()})},_.scaleBy=function(L,$,M,Y){_.scaleTo(L,function(){var Q=this.__zoom.k,K=typeof $=="function"?$.apply(this,arguments):$;return Q*K},M,Y)},_.scaleTo=function(L,$,M,Y){_.transform(L,function(){var Q=n.apply(this,arguments),K=this.__zoom,j=M==null?z(Q):typeof M=="function"?M.apply(this,arguments):M,H=K.invert(j),P=typeof $=="function"?$.apply(this,arguments):$;return r(E(T(K,P),j,H),Q,u)},M,Y)},_.translateBy=function(L,$,M,Y){_.transform(L,function(){return r(this.__zoom.translate(typeof $=="function"?$.apply(this,arguments):$,typeof M=="function"?M.apply(this,arguments):M),n.apply(this,arguments),u)},null,Y)},_.translateTo=function(L,$,M,Y,Q){_.transform(L,function(){var K=n.apply(this,arguments),j=this.__zoom,H=Y==null?z(K):typeof Y=="function"?Y.apply(this,arguments):Y;return r(gc.translate(H[0],H[1]).scale(j.k).translate(typeof $=="function"?-$.apply(this,arguments):-$,typeof M=="function"?-M.apply(this,arguments):-M),K,u)},Y,Q)};function T(L,$){return $=Math.max(s[0],Math.min(s[1],$)),$===L.k?L:new Tr($,L.x,L.y)}function E(L,$,M){var Y=$[0]-M[0]*L.k,Q=$[1]-M[1]*L.k;return Y===L.x&&Q===L.y?L:new Tr(L.k,Y,Q)}function z(L){return[(+L[0][0]+ +L[1][0])/2,(+L[0][1]+ +L[1][1])/2]}function I(L,$,M,Y){L.on("start.zoom",function(){A(this,arguments).event(Y).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event(Y).end()}).tween("zoom",function(){var Q=this,K=arguments,j=A(Q,K).event(Y),H=n.apply(Q,K),P=M==null?z(H):typeof M=="function"?M.apply(Q,K):M,N=Math.max(H[1][0]-H[0][0],H[1][1]-H[0][1]),G=Q.__zoom,F=typeof $=="function"?$.apply(Q,K):$,J=d(G.invert(P).concat(N/G.k),F.invert(P).concat(N/F.k));return function(ne){if(ne===1)ne=F;else{var re=J(ne),se=N/re[2];ne=new Tr(se,P[0]-re[0]*se,P[1]-re[1]*se)}j.zoom(null,ne)}})}function A(L,$,M){return!M&&L.__zooming||new R(L,$)}function R(L,$){this.that=L,this.args=$,this.active=0,this.sourceEvent=null,this.extent=n.apply(L,$),this.taps=0}R.prototype={event:function(L){return L&&(this.sourceEvent=L),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(L,$){return this.mouse&&L!=="mouse"&&(this.mouse[1]=$.invert(this.mouse[0])),this.touch0&&L!=="touch"&&(this.touch0[1]=$.invert(this.touch0[0])),this.touch1&&L!=="touch"&&(this.touch1[1]=$.invert(this.touch1[0])),this.that.__zoom=$,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(L){var $=vn(this.that).datum();h.call(L,this.that,new MT(L,{sourceEvent:this.sourceEvent,target:_,transform:this.that.__zoom,dispatch:h}),$)}};function D(L,...$){if(!e.apply(this,arguments))return;var M=A(this,$).event(L),Y=this.__zoom,Q=Math.max(s[0],Math.min(s[1],Y.k*Math.pow(2,l.apply(this,arguments)))),K=Bn(L);if(M.wheel)(M.mouse[0][0]!==K[0]||M.mouse[0][1]!==K[1])&&(M.mouse[1]=Y.invert(M.mouse[0]=K)),clearTimeout(M.wheel);else{if(Y.k===Q)return;M.mouse=[K,Y.invert(K)],Gu(this),M.start()}so(L),M.wheel=setTimeout(j,w),M.zoom("mouse",r(E(T(Y,Q),M.mouse[0],M.mouse[1]),M.extent,u));function j(){M.wheel=null,M.end()}}function U(L,...$){if(y||!e.apply(this,arguments))return;var M=L.currentTarget,Y=A(this,$,!0).event(L),Q=vn(L.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",N,!0),K=Bn(L,M),j=L.clientX,H=L.clientY;dw(L.view),eh(L),Y.mouse=[K,this.__zoom.invert(K)],Gu(this),Y.start();function P(G){if(so(G),!Y.moved){var F=G.clientX-j,J=G.clientY-H;Y.moved=F*F+J*J>k}Y.event(G).zoom("mouse",r(E(Y.that.__zoom,Y.mouse[0]=Bn(G,M),Y.mouse[1]),Y.extent,u))}function N(G){Q.on("mousemove.zoom mouseup.zoom",null),hw(G.view,Y.moved),so(G),Y.event(G).end()}}function X(L,...$){if(e.apply(this,arguments)){var M=this.__zoom,Y=Bn(L.changedTouches?L.changedTouches[0]:L,this),Q=M.invert(Y),K=M.k*(L.shiftKey?.5:2),j=r(E(T(M,K),Y,Q),n.apply(this,$),u);so(L),f>0?vn(this).transition().duration(f).call(I,j,Y,L):vn(this).call(_.transform,j,Y,L)}}function B(L,...$){if(e.apply(this,arguments)){var M=L.touches,Y=M.length,Q=A(this,$,L.changedTouches.length===Y).event(L),K,j,H,P;for(eh(L),j=0;j"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:n,sourceHandle:r,targetHandle:l})=>`Couldn't create edge for ${e} handle id: "${e==="source"?r:l}", edge id: ${n}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},jo=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Aw=["Enter"," ","Escape"],Mw={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:n,y:r})=>`Moved selected node ${e}. New position, x: ${n}, y: ${r}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var ra;(function(e){e.Strict="strict",e.Loose="loose"})(ra||(ra={}));var $i;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})($i||($i={}));var Oo;(function(e){e.Partial="partial",e.Full="full"})(Oo||(Oo={}));const jw={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var pi;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(pi||(pi={}));var tc;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(tc||(tc={}));var be;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(be||(be={}));const Wx={[be.Left]:be.Right,[be.Right]:be.Left,[be.Top]:be.Bottom,[be.Bottom]:be.Top};function Ow(e){return e===null?null:e?"valid":"invalid"}const Dw=e=>"id"in e&&"source"in e&&"target"in e,HT=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),im=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Go=(e,n=[0,0])=>{const{width:r,height:l}=jr(e),a=e.origin??n,s=r*a[0],u=l*a[1];return{x:e.position.x-s,y:e.position.y-u}},BT=(e,n={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const r=e.reduce((l,a)=>{const s=typeof a=="string";let u=!n.nodeLookup&&!s?a:void 0;n.nodeLookup&&(u=s?n.nodeLookup.get(a):im(a)?a:n.nodeLookup.get(a.id));const f=u?nc(u,n.nodeOrigin):{x:0,y:0,x2:0,y2:0};return yc(l,f)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return xc(r)},Yo=(e,n={})=>{let r={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return e.forEach(a=>{(n.filter===void 0||n.filter(a))&&(r=yc(r,nc(a)),l=!0)}),l?xc(r):{x:0,y:0,width:0,height:0}},lm=(e,n,[r,l,a]=[0,0,1],s=!1,u=!1)=>{const f={...Po(n,[r,l,a]),width:n.width/a,height:n.height/a},d=[];for(const h of e.values()){const{measured:m,selectable:p=!0,hidden:y=!1}=h;if(u&&!p||y)continue;const v=m.width??h.width??h.initialWidth??null,w=m.height??h.height??h.initialHeight??null,k=Do(f,la(h)),S=(v??0)*(w??0),_=s&&k>0;(!h.internals.handleBounds||_||k>=S||h.dragging)&&d.push(h)}return d},qT=(e,n)=>{const r=new Set;return e.forEach(l=>{r.add(l.id)}),n.filter(l=>r.has(l.source)||r.has(l.target))};function UT(e,n){const r=new Map,l=n!=null&&n.nodes?new Set(n.nodes.map(a=>a.id)):null;return e.forEach(a=>{a.measured.width&&a.measured.height&&((n==null?void 0:n.includeHiddenNodes)||!a.hidden)&&(!l||l.has(a.id))&&r.set(a.id,a)}),r}async function IT({nodes:e,width:n,height:r,panZoom:l,minZoom:a,maxZoom:s},u){if(e.size===0)return Promise.resolve(!0);const f=UT(e,u),d=Yo(f),h=am(d,n,r,(u==null?void 0:u.minZoom)??a,(u==null?void 0:u.maxZoom)??s,(u==null?void 0:u.padding)??.1);return await l.setViewport(h,{duration:u==null?void 0:u.duration,ease:u==null?void 0:u.ease,interpolate:u==null?void 0:u.interpolate}),Promise.resolve(!0)}function Rw({nodeId:e,nextPosition:n,nodeLookup:r,nodeOrigin:l=[0,0],nodeExtent:a,onError:s}){const u=r.get(e),f=u.parentId?r.get(u.parentId):void 0,{x:d,y:h}=f?f.internals.positionAbsolute:{x:0,y:0},m=u.origin??l;let p=u.extent||a;if(u.extent==="parent"&&!u.expandParent)if(!f)s==null||s("005",nr.error005());else{const v=f.measured.width,w=f.measured.height;v&&w&&(p=[[d,h],[d+v,h+w]])}else f&&aa(u.extent)&&(p=[[u.extent[0][0]+d,u.extent[0][1]+h],[u.extent[1][0]+d,u.extent[1][1]+h]]);const y=aa(p)?Qi(n,p,u.measured):n;return(u.measured.width===void 0||u.measured.height===void 0)&&(s==null||s("015",nr.error015())),{position:{x:y.x-d+(u.measured.width??0)*m[0],y:y.y-h+(u.measured.height??0)*m[1]},positionAbsolute:y}}async function VT({nodesToRemove:e=[],edgesToRemove:n=[],nodes:r,edges:l,onBeforeDelete:a}){const s=new Set(e.map(y=>y.id)),u=[];for(const y of r){if(y.deletable===!1)continue;const v=s.has(y.id),w=!v&&y.parentId&&u.find(k=>k.id===y.parentId);(v||w)&&u.push(y)}const f=new Set(n.map(y=>y.id)),d=l.filter(y=>y.deletable!==!1),m=qT(u,d);for(const y of d)f.has(y.id)&&!m.find(w=>w.id===y.id)&&m.push(y);if(!a)return{edges:m,nodes:u};const p=await a({nodes:u,edges:m});return typeof p=="boolean"?p?{edges:m,nodes:u}:{edges:[],nodes:[]}:p}const ia=(e,n=0,r=1)=>Math.min(Math.max(e,n),r),Qi=(e={x:0,y:0},n,r)=>({x:ia(e.x,n[0][0],n[1][0]-((r==null?void 0:r.width)??0)),y:ia(e.y,n[0][1],n[1][1]-((r==null?void 0:r.height)??0))});function Lw(e,n,r){const{width:l,height:a}=jr(r),{x:s,y:u}=r.internals.positionAbsolute;return Qi(e,[[s,u],[s+l,u+a]],n)}const ev=(e,n,r)=>er?-ia(Math.abs(e-r),1,n)/n:0,Hw=(e,n,r=15,l=40)=>{const a=ev(e.x,l,n.width-l)*r,s=ev(e.y,l,n.height-l)*r;return[a,s]},yc=(e,n)=>({x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),x2:Math.max(e.x2,n.x2),y2:Math.max(e.y2,n.y2)}),zp=({x:e,y:n,width:r,height:l})=>({x:e,y:n,x2:e+r,y2:n+l}),xc=({x:e,y:n,x2:r,y2:l})=>({x:e,y:n,width:r-e,height:l-n}),la=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=im(e)?e.internals.positionAbsolute:Go(e,n);return{x:r,y:l,width:((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},nc=(e,n=[0,0])=>{var a,s;const{x:r,y:l}=im(e)?e.internals.positionAbsolute:Go(e,n);return{x:r,y:l,x2:r+(((a=e.measured)==null?void 0:a.width)??e.width??e.initialWidth??0),y2:l+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},Bw=(e,n)=>xc(yc(zp(e),zp(n))),Do=(e,n)=>{const r=Math.max(0,Math.min(e.x+e.width,n.x+n.width)-Math.max(e.x,n.x)),l=Math.max(0,Math.min(e.y+e.height,n.y+n.height)-Math.max(e.y,n.y));return Math.ceil(r*l)},tv=e=>Un(e.width)&&Un(e.height)&&Un(e.x)&&Un(e.y),Un=e=>!isNaN(e)&&isFinite(e),GT=(e,n)=>{},$o=(e,n=[1,1])=>({x:n[0]*Math.round(e.x/n[0]),y:n[1]*Math.round(e.y/n[1])}),Po=({x:e,y:n},[r,l,a],s=!1,u=[1,1])=>{const f={x:(e-r)/a,y:(n-l)/a};return s?$o(f,u):f},rc=({x:e,y:n},[r,l,a])=>({x:e*a+r,y:n*a+l});function Il(e,n){if(typeof e=="number")return Math.floor((n-n/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(r)}if(typeof e=="string"&&e.endsWith("%")){const r=parseFloat(e);if(!Number.isNaN(r))return Math.floor(n*r*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function YT(e,n,r){if(typeof e=="string"||typeof e=="number"){const l=Il(e,r),a=Il(e,n);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof e=="object"){const l=Il(e.top??e.y??0,r),a=Il(e.bottom??e.y??0,r),s=Il(e.left??e.x??0,n),u=Il(e.right??e.x??0,n);return{top:l,right:u,bottom:a,left:s,x:s+u,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function $T(e,n,r,l,a,s){const{x:u,y:f}=rc(e,[n,r,l]),{x:d,y:h}=rc({x:e.x+e.width,y:e.y+e.height},[n,r,l]),m=a-d,p=s-h;return{left:Math.floor(u),top:Math.floor(f),right:Math.floor(m),bottom:Math.floor(p)}}const am=(e,n,r,l,a,s)=>{const u=YT(s,n,r),f=(n-u.x)/e.width,d=(r-u.y)/e.height,h=Math.min(f,d),m=ia(h,l,a),p=e.x+e.width/2,y=e.y+e.height/2,v=n/2-p*m,w=r/2-y*m,k=$T(e,v,w,m,n,r),S={left:Math.min(k.left-u.left,0),top:Math.min(k.top-u.top,0),right:Math.min(k.right-u.right,0),bottom:Math.min(k.bottom-u.bottom,0)};return{x:v-S.left+S.right,y:w-S.top+S.bottom,zoom:m}},Ro=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function aa(e){return e!=null&&e!=="parent"}function jr(e){var n,r;return{width:((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth??0,height:((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight??0}}function qw(e){var n,r;return(((n=e.measured)==null?void 0:n.width)??e.width??e.initialWidth)!==void 0&&(((r=e.measured)==null?void 0:r.height)??e.height??e.initialHeight)!==void 0}function Uw(e,n={width:0,height:0},r,l,a){const s={...e},u=l.get(r);if(u){const f=u.origin||a;s.x+=u.internals.positionAbsolute.x-(n.width??0)*f[0],s.y+=u.internals.positionAbsolute.y-(n.height??0)*f[1]}return s}function nv(e,n){if(e.size!==n.size)return!1;for(const r of e)if(!n.has(r))return!1;return!0}function PT(){let e,n;return{promise:new Promise((l,a)=>{e=l,n=a}),resolve:e,reject:n}}function XT(e){return{...Mw,...e||{}}}function wo(e,{snapGrid:n=[0,0],snapToGrid:r=!1,transform:l,containerBounds:a}){const{x:s,y:u}=In(e),f=Po({x:s-((a==null?void 0:a.left)??0),y:u-((a==null?void 0:a.top)??0)},l),{x:d,y:h}=r?$o(f,n):f;return{xSnapped:d,ySnapped:h,...f}}const om=e=>({width:e.offsetWidth,height:e.offsetHeight}),Iw=e=>{var n;return((n=e==null?void 0:e.getRootNode)==null?void 0:n.call(e))||(window==null?void 0:window.document)},FT=["INPUT","SELECT","TEXTAREA"];function Vw(e){var l,a;const n=((a=(l=e.composedPath)==null?void 0:l.call(e))==null?void 0:a[0])||e.target;return(n==null?void 0:n.nodeType)!==1?!1:FT.includes(n.nodeName)||n.hasAttribute("contenteditable")||!!n.closest(".nokey")}const Gw=e=>"clientX"in e,In=(e,n)=>{var s,u;const r=Gw(e),l=r?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,a=r?e.clientY:(u=e.touches)==null?void 0:u[0].clientY;return{x:l-((n==null?void 0:n.left)??0),y:a-((n==null?void 0:n.top)??0)}},rv=(e,n,r,l,a)=>{const s=n.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(u=>{const f=u.getBoundingClientRect();return{id:u.getAttribute("data-handleid"),type:e,nodeId:a,position:u.getAttribute("data-handlepos"),x:(f.left-r.left)/l,y:(f.top-r.top)/l,...om(u)}})};function Yw({sourceX:e,sourceY:n,targetX:r,targetY:l,sourceControlX:a,sourceControlY:s,targetControlX:u,targetControlY:f}){const d=e*.125+a*.375+u*.375+r*.125,h=n*.125+s*.375+f*.375+l*.125,m=Math.abs(d-e),p=Math.abs(h-n);return[d,h,m,p]}function Au(e,n){return e>=0?.5*e:n*25*Math.sqrt(-e)}function iv({pos:e,x1:n,y1:r,x2:l,y2:a,c:s}){switch(e){case be.Left:return[n-Au(n-l,s),r];case be.Right:return[n+Au(l-n,s),r];case be.Top:return[n,r-Au(r-a,s)];case be.Bottom:return[n,r+Au(a-r,s)]}}function sm({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top,curvature:u=.25}){const[f,d]=iv({pos:r,x1:e,y1:n,x2:l,y2:a,c:u}),[h,m]=iv({pos:s,x1:l,y1:a,x2:e,y2:n,c:u}),[p,y,v,w]=Yw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:f,sourceControlY:d,targetControlX:h,targetControlY:m});return[`M${e},${n} C${f},${d} ${h},${m} ${l},${a}`,p,y,v,w]}function $w({sourceX:e,sourceY:n,targetX:r,targetY:l}){const a=Math.abs(r-e)/2,s=r0}const KT=({source:e,sourceHandle:n,target:r,targetHandle:l})=>`xy-edge__${e}${n||""}-${r}${l||""}`,JT=(e,n)=>n.some(r=>r.source===e.source&&r.target===e.target&&(r.sourceHandle===e.sourceHandle||!r.sourceHandle&&!e.sourceHandle)&&(r.targetHandle===e.targetHandle||!r.targetHandle&&!e.targetHandle)),WT=(e,n,r={})=>{if(!e.source||!e.target)return n;const l=r.getEdgeId||KT;let a;return Dw(e)?a={...e}:a={...e,id:l(e)},JT(a,n)?n:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,n.concat(a))};function Pw({sourceX:e,sourceY:n,targetX:r,targetY:l}){const[a,s,u,f]=$w({sourceX:e,sourceY:n,targetX:r,targetY:l});return[`M ${e},${n}L ${r},${l}`,a,s,u,f]}const lv={[be.Left]:{x:-1,y:0},[be.Right]:{x:1,y:0},[be.Top]:{x:0,y:-1},[be.Bottom]:{x:0,y:1}},ez=({source:e,sourcePosition:n=be.Bottom,target:r})=>n===be.Left||n===be.Right?e.xMath.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2));function tz({source:e,sourcePosition:n=be.Bottom,target:r,targetPosition:l=be.Top,center:a,offset:s,stepPosition:u}){const f=lv[n],d=lv[l],h={x:e.x+f.x*s,y:e.y+f.y*s},m={x:r.x+d.x*s,y:r.y+d.y*s},p=ez({source:h,sourcePosition:n,target:m}),y=p.x!==0?"x":"y",v=p[y];let w=[],k,S;const _={x:0,y:0},T={x:0,y:0},[,,E,z]=$w({sourceX:e.x,sourceY:e.y,targetX:r.x,targetY:r.y});if(f[y]*d[y]===-1){y==="x"?(k=a.x??h.x+(m.x-h.x)*u,S=a.y??(h.y+m.y)/2):(k=a.x??(h.x+m.x)/2,S=a.y??h.y+(m.y-h.y)*u);const A=[{x:k,y:h.y},{x:k,y:m.y}],R=[{x:h.x,y:S},{x:m.x,y:S}];f[y]===v?w=y==="x"?A:R:w=y==="x"?R:A}else{const A=[{x:h.x,y:m.y}],R=[{x:m.x,y:h.y}];if(y==="x"?w=f.x===v?R:A:w=f.y===v?A:R,n===l){const q=Math.abs(e[y]-r[y]);if(q<=s){const ee=Math.min(s-1,s-q);f[y]===v?_[y]=(h[y]>e[y]?-1:1)*ee:T[y]=(m[y]>r[y]?-1:1)*ee}}if(n!==l){const q=y==="x"?"y":"x",ee=f[y]===d[q],L=h[q]>m[q],$=h[q]=B?(k=(D.x+U.x)/2,S=w[0].y):(k=w[0].x,S=(D.y+U.y)/2)}return[[e,{x:h.x+_.x,y:h.y+_.y},...w,{x:m.x+T.x,y:m.y+T.y},r],k,S,E,z]}function nz(e,n,r,l){const a=Math.min(av(e,n)/2,av(n,r)/2,l),{x:s,y:u}=n;if(e.x===s&&s===r.x||e.y===u&&u===r.y)return`L${s} ${u}`;if(e.y===u){const h=e.x{let z="";return E>0&&Er.id===n):e[0])||null}function Mp(e,n){return e?typeof e=="string"?e:`${n?`${n}__`:""}${Object.keys(e).sort().map(l=>`${l}=${e[l]}`).join("&")}`:""}function iz(e,{id:n,defaultColor:r,defaultMarkerStart:l,defaultMarkerEnd:a}){const s=new Set;return e.reduce((u,f)=>([f.markerStart||l,f.markerEnd||a].forEach(d=>{if(d&&typeof d=="object"){const h=Mp(d,n);s.has(h)||(u.push({id:h,color:d.color||r,...d}),s.add(h))}}),u),[]).sort((u,f)=>u.id.localeCompare(f.id))}const Xw=1e3,lz=10,um={nodeOrigin:[0,0],nodeExtent:jo,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},az={...um,checkEquality:!0};function cm(e,n){const r={...e};for(const l in n)n[l]!==void 0&&(r[l]=n[l]);return r}function oz(e,n,r){const l=cm(um,r);for(const a of e.values())if(a.parentId)dm(a,e,n,l);else{const s=Go(a,l.nodeOrigin),u=aa(a.extent)?a.extent:l.nodeExtent,f=Qi(s,u,jr(a));a.internals.positionAbsolute=f}}function sz(e,n){if(!e.handles)return e.measured?n==null?void 0:n.internals.handleBounds:void 0;const r=[],l=[];for(const a of e.handles){const s={id:a.id,width:a.width??1,height:a.height??1,nodeId:e.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?r.push(s):a.type==="target"&&l.push(s)}return{source:r,target:l}}function fm(e){return e==="manual"}function jp(e,n,r,l={}){var h,m;const a=cm(az,l),s={i:0},u=new Map(n),f=a!=null&&a.elevateNodesOnSelect&&!fm(a.zIndexMode)?Xw:0;let d=e.length>0;n.clear(),r.clear();for(const p of e){let y=u.get(p.id);if(a.checkEquality&&p===(y==null?void 0:y.internals.userNode))n.set(p.id,y);else{const v=Go(p,a.nodeOrigin),w=aa(p.extent)?p.extent:a.nodeExtent,k=Qi(v,w,jr(p));y={...a.defaults,...p,measured:{width:(h=p.measured)==null?void 0:h.width,height:(m=p.measured)==null?void 0:m.height},internals:{positionAbsolute:k,handleBounds:sz(p,y),z:Fw(p,f,a.zIndexMode),userNode:p}},n.set(p.id,y)}(y.measured===void 0||y.measured.width===void 0||y.measured.height===void 0)&&!y.hidden&&(d=!1),p.parentId&&dm(y,n,r,l,s)}return d}function uz(e,n){if(!e.parentId)return;const r=n.get(e.parentId);r?r.set(e.id,e):n.set(e.parentId,new Map([[e.id,e]]))}function dm(e,n,r,l,a){const{elevateNodesOnSelect:s,nodeOrigin:u,nodeExtent:f,zIndexMode:d}=cm(um,l),h=e.parentId,m=n.get(h);if(!m){console.warn(`Parent node ${h} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}uz(e,r),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&d==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*lz),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const p=s&&!fm(d)?Xw:0,{x:y,y:v,z:w}=cz(e,m,u,f,p,d),{positionAbsolute:k}=e.internals,S=y!==k.x||v!==k.y;(S||w!==e.internals.z)&&n.set(e.id,{...e,internals:{...e.internals,positionAbsolute:S?{x:y,y:v}:k,z:w}})}function Fw(e,n,r){const l=Un(e.zIndex)?e.zIndex:0;return fm(r)?l:l+(e.selected?n:0)}function cz(e,n,r,l,a,s){const{x:u,y:f}=n.internals.positionAbsolute,d=jr(e),h=Go(e,r),m=aa(e.extent)?Qi(h,e.extent,d):h;let p=Qi({x:u+m.x,y:f+m.y},l,d);e.extent==="parent"&&(p=Lw(p,d,n));const y=Fw(e,a,s),v=n.internals.z??0;return{x:p.x,y:p.y,z:v>=y?v+1:y}}function hm(e,n,r,l=[0,0]){var u;const a=[],s=new Map;for(const f of e){const d=n.get(f.parentId);if(!d)continue;const h=((u=s.get(f.parentId))==null?void 0:u.expandedRect)??la(d),m=Bw(h,f.rect);s.set(f.parentId,{expandedRect:m,parent:d})}return s.size>0&&s.forEach(({expandedRect:f,parent:d},h)=>{var E;const m=d.internals.positionAbsolute,p=jr(d),y=d.origin??l,v=f.x0||w>0||_||T)&&(a.push({id:h,type:"position",position:{x:d.position.x-v+_,y:d.position.y-w+T}}),(E=r.get(h))==null||E.forEach(z=>{e.some(I=>I.id===z.id)||a.push({id:z.id,type:"position",position:{x:z.position.x+v,y:z.position.y+w}})})),(p.width0){const v=hm(y,n,r,a);h.push(...v)}return{changes:h,updatedInternals:d}}async function dz({delta:e,panZoom:n,transform:r,translateExtent:l,width:a,height:s}){if(!n||!e.x&&!e.y)return Promise.resolve(!1);const u=await n.setViewportConstrained({x:r[0]+e.x,y:r[1]+e.y,zoom:r[2]},[[0,0],[a,s]],l),f=!!u&&(u.x!==r[0]||u.y!==r[1]||u.k!==r[2]);return Promise.resolve(f)}function cv(e,n,r,l,a,s){let u=a;const f=l.get(u)||new Map;l.set(u,f.set(r,n)),u=`${a}-${e}`;const d=l.get(u)||new Map;if(l.set(u,d.set(r,n)),s){u=`${a}-${e}-${s}`;const h=l.get(u)||new Map;l.set(u,h.set(r,n))}}function Qw(e,n,r){e.clear(),n.clear();for(const l of r){const{source:a,target:s,sourceHandle:u=null,targetHandle:f=null}=l,d={edgeId:l.id,source:a,target:s,sourceHandle:u,targetHandle:f},h=`${a}-${u}--${s}-${f}`,m=`${s}-${f}--${a}-${u}`;cv("source",d,m,e,a,u),cv("target",d,h,e,s,f),n.set(l.id,l)}}function Zw(e,n){if(!e.parentId)return!1;const r=n.get(e.parentId);return r?r.selected?!0:Zw(r,n):!1}function fv(e,n,r){var a;let l=e;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,n))return!0;if(l===r)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function hz(e,n,r,l){const a=new Map;for(const[s,u]of e)if((u.selected||u.id===l)&&(!u.parentId||!Zw(u,e))&&(u.draggable||n&&typeof u.draggable>"u")){const f=e.get(s);f&&a.set(s,{id:s,position:f.position||{x:0,y:0},distance:{x:r.x-f.internals.positionAbsolute.x,y:r.y-f.internals.positionAbsolute.y},extent:f.extent,parentId:f.parentId,origin:f.origin,expandParent:f.expandParent,internals:{positionAbsolute:f.internals.positionAbsolute||{x:0,y:0}},measured:{width:f.measured.width??0,height:f.measured.height??0}})}return a}function th({nodeId:e,dragItems:n,nodeLookup:r,dragging:l=!0}){var u,f,d;const a=[];for(const[h,m]of n){const p=(u=r.get(h))==null?void 0:u.internals.userNode;p&&a.push({...p,position:m.position,dragging:l})}if(!e)return[a[0],a];const s=(f=r.get(e))==null?void 0:f.internals.userNode;return[s?{...s,position:((d=n.get(e))==null?void 0:d.position)||s.position,dragging:l}:a[0],a]}function pz({dragItems:e,snapGrid:n,x:r,y:l}){const a=e.values().next().value;if(!a)return null;const s={x:r-a.distance.x,y:l-a.distance.y},u=$o(s,n);return{x:u.x-s.x,y:u.y-s.y}}function mz({onNodeMouseDown:e,getStoreItems:n,onDragStart:r,onDrag:l,onDragStop:a}){let s={x:null,y:null},u=0,f=new Map,d=!1,h={x:0,y:0},m=null,p=!1,y=null,v=!1,w=!1,k=null;function S({noDragClassName:T,handleSelector:E,domNode:z,isSelectable:I,nodeId:A,nodeClickDistance:R=0}){y=vn(z);function D({x:q,y:ee}){const{nodeLookup:L,nodeExtent:$,snapGrid:M,snapToGrid:Y,nodeOrigin:Q,onNodeDrag:K,onSelectionDrag:j,onError:H,updateNodePositions:P}=n();s={x:q,y:ee};let N=!1;const G=f.size>1,F=G&&$?zp(Yo(f)):null,J=G&&Y?pz({dragItems:f,snapGrid:M,x:q,y:ee}):null;for(const[ne,re]of f){if(!L.has(ne))continue;let se={x:q-re.distance.x,y:ee-re.distance.y};Y&&(se=J?{x:Math.round(se.x+J.x),y:Math.round(se.y+J.y)}:$o(se,M));let ye=null;if(G&&$&&!re.extent&&F){const{positionAbsolute:pe}=re.internals,_e=pe.x-F.x+$[0][0],Me=pe.x+re.measured.width-F.x2+$[1][0],Ce=pe.y-F.y+$[0][1],ut=pe.y+re.measured.height-F.y2+$[1][1];ye=[[_e,Ce],[Me,ut]]}const{position:ve,positionAbsolute:xe}=Rw({nodeId:ne,nextPosition:se,nodeLookup:L,nodeExtent:ye||$,nodeOrigin:Q,onError:H});N=N||re.position.x!==ve.x||re.position.y!==ve.y,re.position=ve,re.internals.positionAbsolute=xe}if(w=w||N,!!N&&(P(f,!0),k&&(l||K||!A&&j))){const[ne,re]=th({nodeId:A,dragItems:f,nodeLookup:L});l==null||l(k,f,ne,re),K==null||K(k,ne,re),A||j==null||j(k,re)}}async function U(){if(!m)return;const{transform:q,panBy:ee,autoPanSpeed:L,autoPanOnNodeDrag:$}=n();if(!$){d=!1,cancelAnimationFrame(u);return}const[M,Y]=Hw(h,m,L);(M!==0||Y!==0)&&(s.x=(s.x??0)-M/q[2],s.y=(s.y??0)-Y/q[2],await ee({x:M,y:Y})&&D(s)),u=requestAnimationFrame(U)}function X(q){var G;const{nodeLookup:ee,multiSelectionActive:L,nodesDraggable:$,transform:M,snapGrid:Y,snapToGrid:Q,selectNodesOnDrag:K,onNodeDragStart:j,onSelectionDragStart:H,unselectNodesAndEdges:P}=n();p=!0,(!K||!I)&&!L&&A&&((G=ee.get(A))!=null&&G.selected||P()),I&&K&&A&&(e==null||e(A));const N=wo(q.sourceEvent,{transform:M,snapGrid:Y,snapToGrid:Q,containerBounds:m});if(s=N,f=hz(ee,$,N,A),f.size>0&&(r||j||!A&&H)){const[F,J]=th({nodeId:A,dragItems:f,nodeLookup:ee});r==null||r(q.sourceEvent,f,F,J),j==null||j(q.sourceEvent,F,J),A||H==null||H(q.sourceEvent,J)}}const B=pw().clickDistance(R).on("start",q=>{const{domNode:ee,nodeDragThreshold:L,transform:$,snapGrid:M,snapToGrid:Y}=n();m=(ee==null?void 0:ee.getBoundingClientRect())||null,v=!1,w=!1,k=q.sourceEvent,L===0&&X(q),s=wo(q.sourceEvent,{transform:$,snapGrid:M,snapToGrid:Y,containerBounds:m}),h=In(q.sourceEvent,m)}).on("drag",q=>{const{autoPanOnNodeDrag:ee,transform:L,snapGrid:$,snapToGrid:M,nodeDragThreshold:Y,nodeLookup:Q}=n(),K=wo(q.sourceEvent,{transform:L,snapGrid:$,snapToGrid:M,containerBounds:m});if(k=q.sourceEvent,(q.sourceEvent.type==="touchmove"&&q.sourceEvent.touches.length>1||A&&!Q.has(A))&&(v=!0),!v){if(!d&&ee&&p&&(d=!0,U()),!p){const j=In(q.sourceEvent,m),H=j.x-h.x,P=j.y-h.y;Math.sqrt(H*H+P*P)>Y&&X(q)}(s.x!==K.xSnapped||s.y!==K.ySnapped)&&f&&p&&(h=In(q.sourceEvent,m),D(K))}}).on("end",q=>{if(!(!p||v)&&(d=!1,p=!1,cancelAnimationFrame(u),f.size>0)){const{nodeLookup:ee,updateNodePositions:L,onNodeDragStop:$,onSelectionDragStop:M}=n();if(w&&(L(f,!1),w=!1),a||$||!A&&M){const[Y,Q]=th({nodeId:A,dragItems:f,nodeLookup:ee,dragging:!1});a==null||a(q.sourceEvent,f,Y,Q),$==null||$(q.sourceEvent,Y,Q),A||M==null||M(q.sourceEvent,Q)}}}).filter(q=>{const ee=q.target;return!q.button&&(!T||!fv(ee,`.${T}`,z))&&(!E||fv(ee,E,z))});y.call(B)}function _(){y==null||y.on(".drag",null)}return{update:S,destroy:_}}function gz(e,n,r){const l=[],a={x:e.x-r,y:e.y-r,width:r*2,height:r*2};for(const s of n.values())Do(a,la(s))>0&&l.push(s);return l}const yz=250;function xz(e,n,r,l){var f,d;let a=[],s=1/0;const u=gz(e,r,n+yz);for(const h of u){const m=[...((f=h.internals.handleBounds)==null?void 0:f.source)??[],...((d=h.internals.handleBounds)==null?void 0:d.target)??[]];for(const p of m){if(l.nodeId===p.nodeId&&l.type===p.type&&l.id===p.id)continue;const{x:y,y:v}=Zi(h,p,p.position,!0),w=Math.sqrt(Math.pow(y-e.x,2)+Math.pow(v-e.y,2));w>n||(w1){const h=l.type==="source"?"target":"source";return a.find(m=>m.type===h)??a[0]}return a[0]}function Kw(e,n,r,l,a,s=!1){var h,m,p;const u=l.get(e);if(!u)return null;const f=a==="strict"?(h=u.internals.handleBounds)==null?void 0:h[n]:[...((m=u.internals.handleBounds)==null?void 0:m.source)??[],...((p=u.internals.handleBounds)==null?void 0:p.target)??[]],d=(r?f==null?void 0:f.find(y=>y.id===r):f==null?void 0:f[0])??null;return d&&s?{...d,...Zi(u,d,d.position,!0)}:d}function Jw(e,n){return e||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function vz(e,n){let r=null;return n?r=!0:e&&!n&&(r=!1),r}const Ww=()=>!0;function bz(e,{connectionMode:n,connectionRadius:r,handleId:l,nodeId:a,edgeUpdaterType:s,isTarget:u,domNode:f,nodeLookup:d,lib:h,autoPanOnConnect:m,flowId:p,panBy:y,cancelConnection:v,onConnectStart:w,onConnect:k,onConnectEnd:S,isValidConnection:_=Ww,onReconnectEnd:T,updateConnection:E,getTransform:z,getFromHandle:I,autoPanSpeed:A,dragThreshold:R=1,handleDomNode:D}){const U=Iw(e.target);let X=0,B;const{x:q,y:ee}=In(e),L=Jw(s,D),$=f==null?void 0:f.getBoundingClientRect();let M=!1;if(!$||!L)return;const Y=Kw(a,L,l,d,n);if(!Y)return;let Q=In(e,$),K=!1,j=null,H=!1,P=null;function N(){if(!m||!$)return;const[ve,xe]=Hw(Q,$,A);y({x:ve,y:xe}),X=requestAnimationFrame(N)}const G={...Y,nodeId:a,type:L,position:Y.position},F=d.get(a);let ne={inProgress:!0,isValid:null,from:Zi(F,G,be.Left,!0),fromHandle:G,fromPosition:G.position,fromNode:F,to:Q,toHandle:null,toPosition:Wx[G.position],toNode:null,pointer:Q};function re(){M=!0,E(ne),w==null||w(e,{nodeId:a,handleId:l,handleType:L})}R===0&&re();function se(ve){if(!M){const{x:ut,y:tt}=In(ve),At=ut-q,It=tt-ee;if(!(At*At+It*It>R*R))return;re()}if(!I()||!G){ye(ve);return}const xe=z();Q=In(ve,$),B=xz(Po(Q,xe,!1,[1,1]),r,d,G),K||(N(),K=!0);const pe=eS(ve,{handle:B,connectionMode:n,fromNodeId:a,fromHandleId:l,fromType:u?"target":"source",isValidConnection:_,doc:U,lib:h,flowId:p,nodeLookup:d});P=pe.handleDomNode,j=pe.connection,H=vz(!!B,pe.isValid);const _e=d.get(a),Me=_e?Zi(_e,G,be.Left,!0):ne.from,Ce={...ne,from:Me,isValid:H,to:pe.toHandle&&H?rc({x:pe.toHandle.x,y:pe.toHandle.y},xe):Q,toHandle:pe.toHandle,toPosition:H&&pe.toHandle?pe.toHandle.position:Wx[G.position],toNode:pe.toHandle?d.get(pe.toHandle.nodeId):null,pointer:Q};E(Ce),ne=Ce}function ye(ve){if(!("touches"in ve&&ve.touches.length>0)){if(M){(B||P)&&j&&H&&(k==null||k(j));const{inProgress:xe,...pe}=ne,_e={...pe,toPosition:ne.toHandle?ne.toPosition:null};S==null||S(ve,_e),s&&(T==null||T(ve,_e))}v(),cancelAnimationFrame(X),K=!1,H=!1,j=null,P=null,U.removeEventListener("mousemove",se),U.removeEventListener("mouseup",ye),U.removeEventListener("touchmove",se),U.removeEventListener("touchend",ye)}}U.addEventListener("mousemove",se),U.addEventListener("mouseup",ye),U.addEventListener("touchmove",se),U.addEventListener("touchend",ye)}function eS(e,{handle:n,connectionMode:r,fromNodeId:l,fromHandleId:a,fromType:s,doc:u,lib:f,flowId:d,isValidConnection:h=Ww,nodeLookup:m}){const p=s==="target",y=n?u.querySelector(`.${f}-flow__handle[data-id="${d}-${n==null?void 0:n.nodeId}-${n==null?void 0:n.id}-${n==null?void 0:n.type}"]`):null,{x:v,y:w}=In(e),k=u.elementFromPoint(v,w),S=k!=null&&k.classList.contains(`${f}-flow__handle`)?k:y,_={handleDomNode:S,isValid:!1,connection:null,toHandle:null};if(S){const T=Jw(void 0,S),E=S.getAttribute("data-nodeid"),z=S.getAttribute("data-handleid"),I=S.classList.contains("connectable"),A=S.classList.contains("connectableend");if(!E||!T)return _;const R={source:p?E:l,sourceHandle:p?z:a,target:p?l:E,targetHandle:p?a:z};_.connection=R;const U=I&&A&&(r===ra.Strict?p&&T==="source"||!p&&T==="target":E!==l||z!==a);_.isValid=U&&h(R),_.toHandle=Kw(E,T,z,m,r,!0)}return _}const Op={onPointerDown:bz,isValid:eS};function wz({domNode:e,panZoom:n,getTransform:r,getViewScale:l}){const a=vn(e);function s({translateExtent:f,width:d,height:h,zoomStep:m=1,pannable:p=!0,zoomable:y=!0,inversePan:v=!1}){const w=E=>{if(E.sourceEvent.type!=="wheel"||!n)return;const z=r(),I=E.sourceEvent.ctrlKey&&Ro()?10:1,A=-E.sourceEvent.deltaY*(E.sourceEvent.deltaMode===1?.05:E.sourceEvent.deltaMode?1:.002)*m,R=z[2]*Math.pow(2,A*I);n.scaleTo(R)};let k=[0,0];const S=E=>{(E.sourceEvent.type==="mousedown"||E.sourceEvent.type==="touchstart")&&(k=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY])},_=E=>{const z=r();if(E.sourceEvent.type!=="mousemove"&&E.sourceEvent.type!=="touchmove"||!n)return;const I=[E.sourceEvent.clientX??E.sourceEvent.touches[0].clientX,E.sourceEvent.clientY??E.sourceEvent.touches[0].clientY],A=[I[0]-k[0],I[1]-k[1]];k=I;const R=l()*Math.max(z[2],Math.log(z[2]))*(v?-1:1),D={x:z[0]-A[0]*R,y:z[1]-A[1]*R},U=[[0,0],[d,h]];n.setViewportConstrained({x:D.x,y:D.y,zoom:z[2]},U,f)},T=zw().on("start",S).on("zoom",p?_:null).on("zoom.wheel",y?w:null);a.call(T,{})}function u(){a.on("zoom",null)}return{update:s,destroy:u,pointer:Bn}}const vc=e=>({x:e.x,y:e.y,zoom:e.k}),nh=({x:e,y:n,zoom:r})=>gc.translate(e,n).scale(r),Xl=(e,n)=>e.target.closest(`.${n}`),tS=(e,n)=>n===2&&Array.isArray(e)&&e.includes(2),Sz=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,rh=(e,n=0,r=Sz,l=()=>{})=>{const a=typeof n=="number"&&n>0;return a||l(),a?e.transition().duration(n).ease(r).on("end",l):e},nS=e=>{const n=e.ctrlKey&&Ro()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*n};function _z({zoomPanValues:e,noWheelClassName:n,d3Selection:r,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:s,zoomOnPinch:u,onPanZoomStart:f,onPanZoom:d,onPanZoomEnd:h}){return m=>{if(Xl(m,n))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const p=r.property("__zoom").k||1;if(m.ctrlKey&&u){const S=Bn(m),_=nS(m),T=p*Math.pow(2,_);l.scaleTo(r,T,S,m);return}const y=m.deltaMode===1?20:1;let v=a===$i.Vertical?0:m.deltaX*y,w=a===$i.Horizontal?0:m.deltaY*y;!Ro()&&m.shiftKey&&a!==$i.Vertical&&(v=m.deltaY*y,w=0),l.translateBy(r,-(v/p)*s,-(w/p)*s,{internal:!0});const k=vc(r.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(d==null||d(m,k),e.panScrollTimeout=setTimeout(()=>{h==null||h(m,k),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,f==null||f(m,k))}}function Ez({noWheelClassName:e,preventScrolling:n,d3ZoomHandler:r}){return function(l,a){const s=l.type==="wheel",u=!n&&s&&!l.ctrlKey,f=Xl(l,e);if(l.ctrlKey&&s&&f&&l.preventDefault(),u||f)return null;l.preventDefault(),r.call(this,l,a)}}function Nz({zoomPanValues:e,onDraggingChange:n,onPanZoomStart:r}){return l=>{var s,u,f;if((s=l.sourceEvent)!=null&&s.internal)return;const a=vc(l.transform);e.mouseButton=((u=l.sourceEvent)==null?void 0:u.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=a,((f=l.sourceEvent)==null?void 0:f.type)==="mousedown"&&n(!0),r&&(r==null||r(l.sourceEvent,a))}}function kz({zoomPanValues:e,panOnDrag:n,onPaneContextMenu:r,onTransformChange:l,onPanZoom:a}){return s=>{var u,f;e.usedRightMouseButton=!!(r&&tS(n,e.mouseButton??0)),(u=s.sourceEvent)!=null&&u.sync||l([s.transform.x,s.transform.y,s.transform.k]),a&&!((f=s.sourceEvent)!=null&&f.internal)&&(a==null||a(s.sourceEvent,vc(s.transform)))}}function Cz({zoomPanValues:e,panOnDrag:n,panOnScroll:r,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:s}){return u=>{var f;if(!((f=u.sourceEvent)!=null&&f.internal)&&(e.isZoomingOrPanning=!1,s&&tS(n,e.mouseButton??0)&&!e.usedRightMouseButton&&u.sourceEvent&&s(u.sourceEvent),e.usedRightMouseButton=!1,l(!1),a)){const d=vc(u.transform);e.prevViewport=d,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{a==null||a(u.sourceEvent,d)},r?150:0)}}}function Tz({zoomActivationKeyPressed:e,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:l,panOnScroll:a,zoomOnDoubleClick:s,userSelectionActive:u,noWheelClassName:f,noPanClassName:d,lib:h,connectionInProgress:m}){return p=>{var S;const y=e||n,v=r&&p.ctrlKey,w=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(Xl(p,`${h}-flow__node`)||Xl(p,`${h}-flow__edge`)))return!0;if(!l&&!y&&!a&&!s&&!r||u||m&&!w||Xl(p,f)&&w||Xl(p,d)&&(!w||a&&w&&!e)||!r&&p.ctrlKey&&w)return!1;if(!r&&p.type==="touchstart"&&((S=p.touches)==null?void 0:S.length)>1)return p.preventDefault(),!1;if(!y&&!a&&!v&&w||!l&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(l)&&!l.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(l)&&l.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||w)&&k}}function zz({domNode:e,minZoom:n,maxZoom:r,translateExtent:l,viewport:a,onPanZoom:s,onPanZoomStart:u,onPanZoomEnd:f,onDraggingChange:d}){const h={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=e.getBoundingClientRect(),p=zw().scaleExtent([n,r]).translateExtent(l),y=vn(e).call(p);T({x:a.x,y:a.y,zoom:ia(a.zoom,n,r)},[[0,0],[m.width,m.height]],l);const v=y.on("wheel.zoom"),w=y.on("dblclick.zoom");p.wheelDelta(nS);function k(B,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?bo:Uu).transform(rh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function S({noWheelClassName:B,noPanClassName:q,onPaneContextMenu:ee,userSelectionActive:L,panOnScroll:$,panOnDrag:M,panOnScrollMode:Y,panOnScrollSpeed:Q,preventScrolling:K,zoomOnPinch:j,zoomOnScroll:H,zoomOnDoubleClick:P,zoomActivationKeyPressed:N,lib:G,onTransformChange:F,connectionInProgress:J,paneClickDistance:ne,selectionOnDrag:re}){L&&!h.isZoomingOrPanning&&_();const se=$&&!N&&!L;p.clickDistance(re?1/0:!Un(ne)||ne<0?0:ne);const ye=se?_z({zoomPanValues:h,noWheelClassName:B,d3Selection:y,d3Zoom:p,panOnScrollMode:Y,panOnScrollSpeed:Q,zoomOnPinch:j,onPanZoomStart:u,onPanZoom:s,onPanZoomEnd:f}):Ez({noWheelClassName:B,preventScrolling:K,d3ZoomHandler:v});if(y.on("wheel.zoom",ye,{passive:!1}),!L){const xe=Nz({zoomPanValues:h,onDraggingChange:d,onPanZoomStart:u});p.on("start",xe);const pe=kz({zoomPanValues:h,panOnDrag:M,onPaneContextMenu:!!ee,onPanZoom:s,onTransformChange:F});p.on("zoom",pe);const _e=Cz({zoomPanValues:h,panOnDrag:M,panOnScroll:$,onPaneContextMenu:ee,onPanZoomEnd:f,onDraggingChange:d});p.on("end",_e)}const ve=Tz({zoomActivationKeyPressed:N,panOnDrag:M,zoomOnScroll:H,panOnScroll:$,zoomOnDoubleClick:P,zoomOnPinch:j,userSelectionActive:L,noPanClassName:q,noWheelClassName:B,lib:G,connectionInProgress:J});p.filter(ve),P?y.on("dblclick.zoom",w):y.on("dblclick.zoom",null)}function _(){p.on("zoom",null)}async function T(B,q,ee){const L=nh(B),$=p==null?void 0:p.constrain()(L,q,ee);return $&&await k($),new Promise(M=>M($))}async function E(B,q){const ee=nh(B);return await k(ee,q),new Promise(L=>L(ee))}function z(B){if(y){const q=nh(B),ee=y.property("__zoom");(ee.k!==B.zoom||ee.x!==B.x||ee.y!==B.y)&&(p==null||p.transform(y,q,null,{sync:!0}))}}function I(){const B=y?Tw(y.node()):{x:0,y:0,k:1};return{x:B.x,y:B.y,zoom:B.k}}function A(B,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?bo:Uu).scaleTo(rh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function R(B,q){return y?new Promise(ee=>{p==null||p.interpolate((q==null?void 0:q.interpolate)==="linear"?bo:Uu).scaleBy(rh(y,q==null?void 0:q.duration,q==null?void 0:q.ease,()=>ee(!0)),B)}):Promise.resolve(!1)}function D(B){p==null||p.scaleExtent(B)}function U(B){p==null||p.translateExtent(B)}function X(B){const q=!Un(B)||B<0?0:B;p==null||p.clickDistance(q)}return{update:S,destroy:_,setViewport:E,setViewportConstrained:T,getViewport:I,scaleTo:A,scaleBy:R,setScaleExtent:D,setTranslateExtent:U,syncViewport:z,setClickDistance:X}}var oa;(function(e){e.Line="line",e.Handle="handle"})(oa||(oa={}));function Az({width:e,prevWidth:n,height:r,prevHeight:l,affectsX:a,affectsY:s}){const u=e-n,f=r-l,d=[u>0?1:u<0?-1:0,f>0?1:f<0?-1:0];return u&&a&&(d[0]=d[0]*-1),f&&s&&(d[1]=d[1]*-1),d}function dv(e){const n=e.includes("right")||e.includes("left"),r=e.includes("bottom")||e.includes("top"),l=e.includes("left"),a=e.includes("top");return{isHorizontal:n,isVertical:r,affectsX:l,affectsY:a}}function ui(e,n){return Math.max(0,n-e)}function ci(e,n){return Math.max(0,e-n)}function Mu(e,n,r){return Math.max(0,n-e,e-r)}function hv(e,n){return e?!n:n}function Mz(e,n,r,l,a,s,u,f){let{affectsX:d,affectsY:h}=n;const{isHorizontal:m,isVertical:p}=n,y=m&&p,{xSnapped:v,ySnapped:w}=r,{minWidth:k,maxWidth:S,minHeight:_,maxHeight:T}=l,{x:E,y:z,width:I,height:A,aspectRatio:R}=e;let D=Math.floor(m?v-e.pointerX:0),U=Math.floor(p?w-e.pointerY:0);const X=I+(d?-D:D),B=A+(h?-U:U),q=-s[0]*I,ee=-s[1]*A;let L=Mu(X,k,S),$=Mu(B,_,T);if(u){let Q=0,K=0;d&&D<0?Q=ui(E+D+q,u[0][0]):!d&&D>0&&(Q=ci(E+X+q,u[1][0])),h&&U<0?K=ui(z+U+ee,u[0][1]):!h&&U>0&&(K=ci(z+B+ee,u[1][1])),L=Math.max(L,Q),$=Math.max($,K)}if(f){let Q=0,K=0;d&&D>0?Q=ci(E+D,f[0][0]):!d&&D<0&&(Q=ui(E+X,f[1][0])),h&&U>0?K=ci(z+U,f[0][1]):!h&&U<0&&(K=ui(z+B,f[1][1])),L=Math.max(L,Q),$=Math.max($,K)}if(a){if(m){const Q=Mu(X/R,_,T)*R;if(L=Math.max(L,Q),u){let K=0;!d&&!h||d&&!h&&y?K=ci(z+ee+X/R,u[1][1])*R:K=ui(z+ee+(d?D:-D)/R,u[0][1])*R,L=Math.max(L,K)}if(f){let K=0;!d&&!h||d&&!h&&y?K=ui(z+X/R,f[1][1])*R:K=ci(z+(d?D:-D)/R,f[0][1])*R,L=Math.max(L,K)}}if(p){const Q=Mu(B*R,k,S)/R;if($=Math.max($,Q),u){let K=0;!d&&!h||h&&!d&&y?K=ci(E+B*R+q,u[1][0])/R:K=ui(E+(h?U:-U)*R+q,u[0][0])/R,$=Math.max($,K)}if(f){let K=0;!d&&!h||h&&!d&&y?K=ui(E+B*R,f[1][0])/R:K=ci(E+(h?U:-U)*R,f[0][0])/R,$=Math.max($,K)}}}U=U+(U<0?$:-$),D=D+(D<0?L:-L),a&&(y?X>B*R?U=(hv(d,h)?-D:D)/R:D=(hv(d,h)?-U:U)*R:m?(U=D/R,h=d):(D=U*R,d=h));const M=d?E+D:E,Y=h?z+U:z;return{width:I+(d?-D:D),height:A+(h?-U:U),x:s[0]*D*(d?-1:1)+M,y:s[1]*U*(h?-1:1)+Y}}const rS={width:0,height:0,x:0,y:0},jz={...rS,pointerX:0,pointerY:0,aspectRatio:1};function Oz(e){return[[0,0],[e.measured.width,e.measured.height]]}function Dz(e,n,r){const l=n.position.x+e.position.x,a=n.position.y+e.position.y,s=e.measured.width??0,u=e.measured.height??0,f=r[0]*s,d=r[1]*u;return[[l-f,a-d],[l+s-f,a+u-d]]}function Rz({domNode:e,nodeId:n,getStoreItems:r,onChange:l,onEnd:a}){const s=vn(e);let u={controlDirection:dv("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function f({controlPosition:h,boundaries:m,keepAspectRatio:p,resizeDirection:y,onResizeStart:v,onResize:w,onResizeEnd:k,shouldResize:S}){let _={...rS},T={...jz};u={boundaries:m,resizeDirection:y,keepAspectRatio:p,controlDirection:dv(h)};let E,z=null,I=[],A,R,D,U=!1;const X=pw().on("start",B=>{const{nodeLookup:q,transform:ee,snapGrid:L,snapToGrid:$,nodeOrigin:M,paneDomNode:Y}=r();if(E=q.get(n),!E)return;z=(Y==null?void 0:Y.getBoundingClientRect())??null;const{xSnapped:Q,ySnapped:K}=wo(B.sourceEvent,{transform:ee,snapGrid:L,snapToGrid:$,containerBounds:z});_={width:E.measured.width??0,height:E.measured.height??0,x:E.position.x??0,y:E.position.y??0},T={..._,pointerX:Q,pointerY:K,aspectRatio:_.width/_.height},A=void 0,E.parentId&&(E.extent==="parent"||E.expandParent)&&(A=q.get(E.parentId),R=A&&E.extent==="parent"?Oz(A):void 0),I=[],D=void 0;for(const[j,H]of q)if(H.parentId===n&&(I.push({id:j,position:{...H.position},extent:H.extent}),H.extent==="parent"||H.expandParent)){const P=Dz(H,E,H.origin??M);D?D=[[Math.min(P[0][0],D[0][0]),Math.min(P[0][1],D[0][1])],[Math.max(P[1][0],D[1][0]),Math.max(P[1][1],D[1][1])]]:D=P}v==null||v(B,{..._})}).on("drag",B=>{const{transform:q,snapGrid:ee,snapToGrid:L,nodeOrigin:$}=r(),M=wo(B.sourceEvent,{transform:q,snapGrid:ee,snapToGrid:L,containerBounds:z}),Y=[];if(!E)return;const{x:Q,y:K,width:j,height:H}=_,P={},N=E.origin??$,{width:G,height:F,x:J,y:ne}=Mz(T,u.controlDirection,M,u.boundaries,u.keepAspectRatio,N,R,D),re=G!==j,se=F!==H,ye=J!==Q&&re,ve=ne!==K&&se;if(!ye&&!ve&&!re&&!se)return;if((ye||ve||N[0]===1||N[1]===1)&&(P.x=ye?J:_.x,P.y=ve?ne:_.y,_.x=P.x,_.y=P.y,I.length>0)){const Me=J-Q,Ce=ne-K;for(const ut of I)ut.position={x:ut.position.x-Me+N[0]*(G-j),y:ut.position.y-Ce+N[1]*(F-H)},Y.push(ut)}if((re||se)&&(P.width=re&&(!u.resizeDirection||u.resizeDirection==="horizontal")?G:_.width,P.height=se&&(!u.resizeDirection||u.resizeDirection==="vertical")?F:_.height,_.width=P.width,_.height=P.height),A&&E.expandParent){const Me=N[0]*(P.width??0);P.x&&P.x{U&&(k==null||k(B,{..._}),a==null||a({..._}),U=!1)});s.call(X)}function d(){s.on(".drag",null)}return{update:f,destroy:d}}var ih={exports:{}},lh={},ah={exports:{}},oh={};/** - * @license React - * use-sync-external-store-shim.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var pv;function Lz(){if(pv)return oh;pv=1;var e=qo();function n(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var r=typeof Object.is=="function"?Object.is:n,l=e.useState,a=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function f(p,y){var v=y(),w=l({inst:{value:v,getSnapshot:y}}),k=w[0].inst,S=w[1];return s(function(){k.value=v,k.getSnapshot=y,d(k)&&S({inst:k})},[p,v,y]),a(function(){return d(k)&&S({inst:k}),p(function(){d(k)&&S({inst:k})})},[p]),u(v),v}function d(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!r(p,v)}catch{return!0}}function h(p,y){return y()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?h:f;return oh.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,oh}var mv;function Hz(){return mv||(mv=1,ah.exports=Lz()),ah.exports}/** - * @license React - * use-sync-external-store-shim/with-selector.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var gv;function Bz(){if(gv)return lh;gv=1;var e=qo(),n=Hz();function r(h,m){return h===m&&(h!==0||1/h===1/m)||h!==h&&m!==m}var l=typeof Object.is=="function"?Object.is:r,a=n.useSyncExternalStore,s=e.useRef,u=e.useEffect,f=e.useMemo,d=e.useDebugValue;return lh.useSyncExternalStoreWithSelector=function(h,m,p,y,v){var w=s(null);if(w.current===null){var k={hasValue:!1,value:null};w.current=k}else k=w.current;w=f(function(){function _(A){if(!T){if(T=!0,E=A,A=y(A),v!==void 0&&k.hasValue){var R=k.value;if(v(R,A))return z=R}return z=A}if(R=z,l(E,A))return R;var D=y(A);return v!==void 0&&v(R,D)?(E=A,R):(E=A,z=D)}var T=!1,E,z,I=p===void 0?null:p;return[function(){return _(m())},I===null?void 0:function(){return _(I())}]},[m,p,y,v]);var S=a(h,w[0],w[1]);return u(function(){k.hasValue=!0,k.value=S},[S]),d(S),S},lh}var yv;function qz(){return yv||(yv=1,ih.exports=Bz()),ih.exports}var Uz=qz();const Iz=Bo(Uz),Vz={},xv=e=>{let n;const r=new Set,l=(m,p)=>{const y=typeof m=="function"?m(n):m;if(!Object.is(y,n)){const v=n;n=p??(typeof y!="object"||y===null)?y:Object.assign({},n,y),r.forEach(w=>w(n,v))}},a=()=>n,d={setState:l,getState:a,getInitialState:()=>h,subscribe:m=>(r.add(m),()=>r.delete(m)),destroy:()=>{(Vz?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},h=n=e(l,a,d);return d},Gz=e=>e?xv(e):xv,{useDebugValue:Yz}=$l,{useSyncExternalStoreWithSelector:$z}=Iz,Pz=e=>e;function iS(e,n=Pz,r){const l=$z(e.subscribe,e.getState,e.getServerState||e.getInitialState,n,r);return Yz(l),l}const vv=(e,n)=>{const r=Gz(e),l=(a,s=n)=>iS(r,a,s);return Object.assign(l,r),l},Xz=(e,n)=>e?vv(e,n):vv;function ht(e,n){if(Object.is(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(const[l,a]of e)if(!Object.is(a,n.get(l)))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(const l of e)if(!n.has(l))return!1;return!0}const r=Object.keys(e);if(r.length!==Object.keys(n).length)return!1;for(const l of r)if(!Object.prototype.hasOwnProperty.call(n,l)||!Object.is(e[l],n[l]))return!1;return!0}var Fz=Cb();const bc=V.createContext(null),Qz=bc.Provider,lS=nr.error001();function Ge(e,n){const r=V.useContext(bc);if(r===null)throw new Error(lS);return iS(r,e,n)}function pt(){const e=V.useContext(bc);if(e===null)throw new Error(lS);return V.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const bv={display:"none"},Zz={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},aS="react-flow__node-desc",oS="react-flow__edge-desc",Kz="react-flow__aria-live",Jz=e=>e.ariaLiveMessage,Wz=e=>e.ariaLabelConfig;function eA({rfId:e}){const n=Ge(Jz);return b.jsx("div",{id:`${Kz}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Zz,children:n})}function tA({rfId:e,disableKeyboardA11y:n}){const r=Ge(Wz);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${aS}-${e}`,style:bv,children:n?r["node.a11yDescription.default"]:r["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${oS}-${e}`,style:bv,children:r["edge.a11yDescription.default"]}),!n&&b.jsx(eA,{rfId:e})]})}const wc=V.forwardRef(({position:e="top-left",children:n,className:r,style:l,...a},s)=>{const u=`${e}`.split("-");return b.jsx("div",{className:zt(["react-flow__panel",r,...u]),style:l,ref:s,...a,children:n})});wc.displayName="Panel";function nA({proOptions:e,position:n="bottom-right"}){return e!=null&&e.hideAttribution?null:b.jsx(wc,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:b.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const rA=e=>{const n=[],r=[];for(const[,l]of e.nodeLookup)l.selected&&n.push(l.internals.userNode);for(const[,l]of e.edgeLookup)l.selected&&r.push(l);return{selectedNodes:n,selectedEdges:r}},ju=e=>e.id;function iA(e,n){return ht(e.selectedNodes.map(ju),n.selectedNodes.map(ju))&&ht(e.selectedEdges.map(ju),n.selectedEdges.map(ju))}function lA({onSelectionChange:e}){const n=pt(),{selectedNodes:r,selectedEdges:l}=Ge(rA,iA);return V.useEffect(()=>{const a={nodes:r,edges:l};e==null||e(a),n.getState().onSelectionChangeHandlers.forEach(s=>s(a))},[r,l,e]),null}const aA=e=>!!e.onSelectionChangeHandlers;function oA({onSelectionChange:e}){const n=Ge(aA);return e||n?b.jsx(lA,{onSelectionChange:e}):null}const sS=[0,0],sA={x:0,y:0,zoom:1},uA=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],wv=[...uA,"rfId"],cA=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Sv={translateExtent:jo,nodeOrigin:sS,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function fA(e){const{setNodes:n,setEdges:r,setMinZoom:l,setMaxZoom:a,setTranslateExtent:s,setNodeExtent:u,reset:f,setDefaultNodesAndEdges:d}=Ge(cA,ht),h=pt();V.useEffect(()=>(d(e.defaultNodes,e.defaultEdges),()=>{m.current=Sv,f()}),[]);const m=V.useRef(Sv);return V.useEffect(()=>{for(const p of wv){const y=e[p],v=m.current[p];y!==v&&(typeof e[p]>"u"||(p==="nodes"?n(y):p==="edges"?r(y):p==="minZoom"?l(y):p==="maxZoom"?a(y):p==="translateExtent"?s(y):p==="nodeExtent"?u(y):p==="ariaLabelConfig"?h.setState({ariaLabelConfig:XT(y)}):p==="fitView"?h.setState({fitViewQueued:y}):p==="fitViewOptions"?h.setState({fitViewOptions:y}):h.setState({[p]:y})))}m.current=e},wv.map(p=>e[p])),null}function _v(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function dA(e){var l;const[n,r]=V.useState(e==="system"?null:e);return V.useEffect(()=>{if(e!=="system"){r(e);return}const a=_v(),s=()=>r(a!=null&&a.matches?"dark":"light");return s(),a==null||a.addEventListener("change",s),()=>{a==null||a.removeEventListener("change",s)}},[e]),n!==null?n:(l=_v())!=null&&l.matches?"dark":"light"}const Ev=typeof document<"u"?document:null;function Lo(e=null,n={target:Ev,actInsideInputWithModifier:!0}){const[r,l]=V.useState(!1),a=V.useRef(!1),s=V.useRef(new Set([])),[u,f]=V.useMemo(()=>{if(e!==null){const h=(Array.isArray(e)?e:[e]).filter(p=>typeof p=="string").map(p=>p.replace("+",` -`).replace(` - -`,` -+`).split(` -`)),m=h.reduce((p,y)=>p.concat(...y),[]);return[h,m]}return[[],[]]},[e]);return V.useEffect(()=>{const d=(n==null?void 0:n.target)??Ev,h=(n==null?void 0:n.actInsideInputWithModifier)??!0;if(e!==null){const m=v=>{var S,_;if(a.current=v.ctrlKey||v.metaKey||v.shiftKey||v.altKey,(!a.current||a.current&&!h)&&Vw(v))return!1;const k=kv(v.code,f);if(s.current.add(v[k]),Nv(u,s.current,!1)){const T=((_=(S=v.composedPath)==null?void 0:S.call(v))==null?void 0:_[0])||v.target,E=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";n.preventDefault!==!1&&(a.current||!E)&&v.preventDefault(),l(!0)}},p=v=>{const w=kv(v.code,f);Nv(u,s.current,!0)?(l(!1),s.current.clear()):s.current.delete(v[w]),v.key==="Meta"&&s.current.clear(),a.current=!1},y=()=>{s.current.clear(),l(!1)};return d==null||d.addEventListener("keydown",m),d==null||d.addEventListener("keyup",p),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{d==null||d.removeEventListener("keydown",m),d==null||d.removeEventListener("keyup",p),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[e,l]),r}function Nv(e,n,r){return e.filter(l=>r||l.length===n.size).some(l=>l.every(a=>n.has(a)))}function kv(e,n){return n.includes(e)?"code":"key"}const hA=()=>{const e=pt();return V.useMemo(()=>({zoomIn:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomOut:n=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1/1.2,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},zoomTo:(n,r)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(n,{duration:r==null?void 0:r.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(n,r)=>{const{transform:[l,a,s],panZoom:u}=e.getState();return u?(await u.setViewport({x:n.x??l,y:n.y??a,zoom:n.zoom??s},r),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[n,r,l]=e.getState().transform;return{x:n,y:r,zoom:l}},setCenter:async(n,r,l)=>e.getState().setCenter(n,r,l),fitBounds:async(n,r)=>{const{width:l,height:a,minZoom:s,maxZoom:u,panZoom:f}=e.getState(),d=am(n,l,a,s,u,(r==null?void 0:r.padding)??.1);return f?(await f.setViewport(d,{duration:r==null?void 0:r.duration,ease:r==null?void 0:r.ease,interpolate:r==null?void 0:r.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(n,r={})=>{const{transform:l,snapGrid:a,snapToGrid:s,domNode:u}=e.getState();if(!u)return n;const{x:f,y:d}=u.getBoundingClientRect(),h={x:n.x-f,y:n.y-d},m=r.snapGrid??a,p=r.snapToGrid??s;return Po(h,l,p,m)},flowToScreenPosition:n=>{const{transform:r,domNode:l}=e.getState();if(!l)return n;const{x:a,y:s}=l.getBoundingClientRect(),u=rc(n,r);return{x:u.x+a,y:u.y+s}}}),[])};function uS(e,n){const r=[],l=new Map,a=[];for(const s of e)if(s.type==="add"){a.push(s);continue}else if(s.type==="remove"||s.type==="replace")l.set(s.id,[s]);else{const u=l.get(s.id);u?u.push(s):l.set(s.id,[s])}for(const s of n){const u=l.get(s.id);if(!u){r.push(s);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){r.push({...u[0].item});continue}const f={...s};for(const d of u)pA(d,f);r.push(f)}return a.length&&a.forEach(s=>{s.index!==void 0?r.splice(s.index,0,{...s.item}):r.push({...s.item})}),r}function pA(e,n){switch(e.type){case"select":{n.selected=e.selected;break}case"position":{typeof e.position<"u"&&(n.position=e.position),typeof e.dragging<"u"&&(n.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(n.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(n.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(n.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(n.resizing=e.resizing);break}}}function cS(e,n){return uS(e,n)}function fS(e,n){return uS(e,n)}function qi(e,n){return{id:e,type:"select",selected:n}}function Fl(e,n=new Set,r=!1){const l=[];for(const[a,s]of e){const u=n.has(a);!(s.selected===void 0&&!u)&&s.selected!==u&&(r&&(s.selected=u),l.push(qi(s.id,u)))}return l}function Cv({items:e=[],lookup:n}){var a;const r=[],l=new Map(e.map(s=>[s.id,s]));for(const[s,u]of e.entries()){const f=n.get(u.id),d=((a=f==null?void 0:f.internals)==null?void 0:a.userNode)??f;d!==void 0&&d!==u&&r.push({id:u.id,item:u,type:"replace"}),d===void 0&&r.push({item:u,type:"add",index:s})}for(const[s]of n)l.get(s)===void 0&&r.push({id:s,type:"remove"});return r}function Tv(e){return{id:e.id,type:"remove"}}const zv=e=>HT(e),mA=e=>Dw(e);function dS(e){return V.forwardRef(e)}const gA=typeof window<"u"?V.useLayoutEffect:V.useEffect;function Av(e){const[n,r]=V.useState(BigInt(0)),[l]=V.useState(()=>yA(()=>r(a=>a+BigInt(1))));return gA(()=>{const a=l.get();a.length&&(e(a),l.reset())},[n]),l}function yA(e){let n=[];return{get:()=>n,reset:()=>{n=[]},push:r=>{n.push(r),e()}}}const hS=V.createContext(null);function xA({children:e}){const n=pt(),r=V.useCallback(f=>{const{nodes:d=[],setNodes:h,hasDefaultNodes:m,onNodesChange:p,nodeLookup:y,fitViewQueued:v,onNodesChangeMiddlewareMap:w}=n.getState();let k=d;for(const _ of f)k=typeof _=="function"?_(k):_;let S=Cv({items:k,lookup:y});for(const _ of w.values())S=_(S);m&&h(k),S.length>0?p==null||p(S):v&&window.requestAnimationFrame(()=>{const{fitViewQueued:_,nodes:T,setNodes:E}=n.getState();_&&E(T)})},[]),l=Av(r),a=V.useCallback(f=>{const{edges:d=[],setEdges:h,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:y}=n.getState();let v=d;for(const w of f)v=typeof w=="function"?w(v):w;m?h(v):p&&p(Cv({items:v,lookup:y}))},[]),s=Av(a),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:s}),[]);return b.jsx(hS.Provider,{value:u,children:e})}function vA(){const e=V.useContext(hS);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const bA=e=>!!e.panZoom;function Xo(){const e=hA(),n=pt(),r=vA(),l=Ge(bA),a=V.useMemo(()=>{const s=p=>n.getState().nodeLookup.get(p),u=p=>{r.nodeQueue.push(p)},f=p=>{r.edgeQueue.push(p)},d=p=>{var _,T;const{nodeLookup:y,nodeOrigin:v}=n.getState(),w=zv(p)?p:y.get(p.id),k=w.parentId?Uw(w.position,w.measured,w.parentId,y,v):w.position,S={...w,position:k,width:((_=w.measured)==null?void 0:_.width)??w.width,height:((T=w.measured)==null?void 0:T.height)??w.height};return la(S)},h=(p,y,v={replace:!1})=>{u(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&zv(S)?S:{...k,...S}}return k}))},m=(p,y,v={replace:!1})=>{f(w=>w.map(k=>{if(k.id===p){const S=typeof y=="function"?y(k):y;return v.replace&&mA(S)?S:{...k,...S}}return k}))};return{getNodes:()=>n.getState().nodes.map(p=>({...p})),getNode:p=>{var y;return(y=s(p))==null?void 0:y.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:p=[]}=n.getState();return p.map(y=>({...y}))},getEdge:p=>n.getState().edgeLookup.get(p),setNodes:u,setEdges:f,addNodes:p=>{const y=Array.isArray(p)?p:[p];r.nodeQueue.push(v=>[...v,...y])},addEdges:p=>{const y=Array.isArray(p)?p:[p];r.edgeQueue.push(v=>[...v,...y])},toObject:()=>{const{nodes:p=[],edges:y=[],transform:v}=n.getState(),[w,k,S]=v;return{nodes:p.map(_=>({..._})),edges:y.map(_=>({..._})),viewport:{x:w,y:k,zoom:S}}},deleteElements:async({nodes:p=[],edges:y=[]})=>{const{nodes:v,edges:w,onNodesDelete:k,onEdgesDelete:S,triggerNodeChanges:_,triggerEdgeChanges:T,onDelete:E,onBeforeDelete:z}=n.getState(),{nodes:I,edges:A}=await VT({nodesToRemove:p,edgesToRemove:y,nodes:v,edges:w,onBeforeDelete:z}),R=A.length>0,D=I.length>0;if(R){const U=A.map(Tv);S==null||S(A),T(U)}if(D){const U=I.map(Tv);k==null||k(I),_(U)}return(D||R)&&(E==null||E({nodes:I,edges:A})),{deletedNodes:I,deletedEdges:A}},getIntersectingNodes:(p,y=!0,v)=>{const w=tv(p),k=w?p:d(p),S=v!==void 0;return k?(v||n.getState().nodes).filter(_=>{const T=n.getState().nodeLookup.get(_.id);if(T&&!w&&(_.id===p.id||!T.internals.positionAbsolute))return!1;const E=la(S?_:T),z=Do(E,k);return y&&z>0||z>=E.width*E.height||z>=k.width*k.height}):[]},isNodeIntersecting:(p,y,v=!0)=>{const k=tv(p)?p:d(p);if(!k)return!1;const S=Do(k,y);return v&&S>0||S>=y.width*y.height||S>=k.width*k.height},updateNode:h,updateNodeData:(p,y,v={replace:!1})=>{h(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},updateEdge:m,updateEdgeData:(p,y,v={replace:!1})=>{m(p,w=>{const k=typeof y=="function"?y(w):y;return v.replace?{...w,data:k}:{...w,data:{...w.data,...k}}},v)},getNodesBounds:p=>{const{nodeLookup:y,nodeOrigin:v}=n.getState();return BT(p,{nodeLookup:y,nodeOrigin:v})},getHandleConnections:({type:p,id:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}-${p}${y?`-${y}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:y,nodeId:v})=>{var w;return Array.from(((w=n.getState().connectionLookup.get(`${v}${p?y?`-${p}-${y}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const y=n.getState().fitViewResolver??PT();return n.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:y}),r.nodeQueue.push(v=>[...v]),y.promise}}},[]);return V.useMemo(()=>({...a,...e,viewportInitialized:l}),[l])}const Mv=e=>e.selected,wA=typeof window<"u"?window:void 0;function SA({deleteKeyCode:e,multiSelectionKeyCode:n}){const r=pt(),{deleteElements:l}=Xo(),a=Lo(e,{actInsideInputWithModifier:!1}),s=Lo(n,{target:wA});V.useEffect(()=>{if(a){const{edges:u,nodes:f}=r.getState();l({nodes:f.filter(Mv),edges:u.filter(Mv)}),r.setState({nodesSelectionActive:!1})}},[a]),V.useEffect(()=>{r.setState({multiSelectionActive:s})},[s])}function _A(e){const n=pt();V.useEffect(()=>{const r=()=>{var a,s,u,f;if(!e.current||!(((s=(a=e.current).checkVisibility)==null?void 0:s.call(a))??!0))return!1;const l=om(e.current);(l.height===0||l.width===0)&&((f=(u=n.getState()).onError)==null||f.call(u,"004",nr.error004())),n.setState({width:l.width||500,height:l.height||500})};if(e.current){r(),window.addEventListener("resize",r);const l=new ResizeObserver(()=>r());return l.observe(e.current),()=>{window.removeEventListener("resize",r),l&&e.current&&l.unobserve(e.current)}}},[])}const Sc={position:"absolute",width:"100%",height:"100%",top:0,left:0},EA=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function NA({onPaneContextMenu:e,zoomOnScroll:n=!0,zoomOnPinch:r=!0,panOnScroll:l=!1,panOnScrollSpeed:a=.5,panOnScrollMode:s=$i.Free,zoomOnDoubleClick:u=!0,panOnDrag:f=!0,defaultViewport:d,translateExtent:h,minZoom:m,maxZoom:p,zoomActivationKeyCode:y,preventScrolling:v=!0,children:w,noWheelClassName:k,noPanClassName:S,onViewportChange:_,isControlledViewport:T,paneClickDistance:E,selectionOnDrag:z}){const I=pt(),A=V.useRef(null),{userSelectionActive:R,lib:D,connectionInProgress:U}=Ge(EA,ht),X=Lo(y),B=V.useRef();_A(A);const q=V.useCallback(ee=>{_==null||_({x:ee[0],y:ee[1],zoom:ee[2]}),T||I.setState({transform:ee})},[_,T]);return V.useEffect(()=>{if(A.current){B.current=zz({domNode:A.current,minZoom:m,maxZoom:p,translateExtent:h,viewport:d,onDraggingChange:M=>I.setState(Y=>Y.paneDragging===M?Y:{paneDragging:M}),onPanZoomStart:(M,Y)=>{const{onViewportChangeStart:Q,onMoveStart:K}=I.getState();K==null||K(M,Y),Q==null||Q(Y)},onPanZoom:(M,Y)=>{const{onViewportChange:Q,onMove:K}=I.getState();K==null||K(M,Y),Q==null||Q(Y)},onPanZoomEnd:(M,Y)=>{const{onViewportChangeEnd:Q,onMoveEnd:K}=I.getState();K==null||K(M,Y),Q==null||Q(Y)}});const{x:ee,y:L,zoom:$}=B.current.getViewport();return I.setState({panZoom:B.current,transform:[ee,L,$],domNode:A.current.closest(".react-flow")}),()=>{var M;(M=B.current)==null||M.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=B.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:n,zoomOnPinch:r,panOnScroll:l,panOnScrollSpeed:a,panOnScrollMode:s,zoomOnDoubleClick:u,panOnDrag:f,zoomActivationKeyPressed:X,preventScrolling:v,noPanClassName:S,userSelectionActive:R,noWheelClassName:k,lib:D,onTransformChange:q,connectionInProgress:U,selectionOnDrag:z,paneClickDistance:E})},[e,n,r,l,a,s,u,f,X,v,S,R,k,D,q,U,z,E]),b.jsx("div",{className:"react-flow__renderer",ref:A,style:Sc,children:w})}const kA=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function CA(){const{userSelectionActive:e,userSelectionRect:n}=Ge(kA,ht);return e&&n?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const sh=(e,n)=>r=>{r.target===n.current&&(e==null||e(r))},TA=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function zA({isSelecting:e,selectionKeyPressed:n,selectionMode:r=Oo.Full,panOnDrag:l,paneClickDistance:a,selectionOnDrag:s,onSelectionStart:u,onSelectionEnd:f,onPaneClick:d,onPaneContextMenu:h,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:y,onPaneMouseLeave:v,children:w}){const k=pt(),{userSelectionActive:S,elementsSelectable:_,dragging:T,connectionInProgress:E}=Ge(TA,ht),z=_&&(e||S),I=V.useRef(null),A=V.useRef(),R=V.useRef(new Set),D=V.useRef(new Set),U=V.useRef(!1),X=Q=>{if(U.current||E){U.current=!1;return}d==null||d(Q),k.getState().resetSelectedElements(),k.setState({nodesSelectionActive:!1})},B=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}h==null||h(Q)},q=m?Q=>m(Q):void 0,ee=Q=>{U.current&&(Q.stopPropagation(),U.current=!1)},L=Q=>{var F,J;const{domNode:K}=k.getState();if(A.current=K==null?void 0:K.getBoundingClientRect(),!A.current)return;const j=Q.target===I.current;if(!j&&!!Q.target.closest(".nokey")||!e||!(s&&j||n)||Q.button!==0||!Q.isPrimary)return;(J=(F=Q.target)==null?void 0:F.setPointerCapture)==null||J.call(F,Q.pointerId),U.current=!1;const{x:N,y:G}=In(Q.nativeEvent,A.current);k.setState({userSelectionRect:{width:0,height:0,startX:N,startY:G,x:N,y:G}}),j||(Q.stopPropagation(),Q.preventDefault())},$=Q=>{const{userSelectionRect:K,transform:j,nodeLookup:H,edgeLookup:P,connectionLookup:N,triggerNodeChanges:G,triggerEdgeChanges:F,defaultEdgeOptions:J,resetSelectedElements:ne}=k.getState();if(!A.current||!K)return;const{x:re,y:se}=In(Q.nativeEvent,A.current),{startX:ye,startY:ve}=K;if(!U.current){const Ce=n?0:a;if(Math.hypot(re-ye,se-ve)<=Ce)return;ne(),u==null||u(Q)}U.current=!0;const xe={startX:ye,startY:ve,x:reCe.id)),D.current=new Set;const Me=(J==null?void 0:J.selectable)??!0;for(const Ce of R.current){const ut=N.get(Ce);if(ut)for(const{edgeId:tt}of ut.values()){const At=P.get(tt);At&&(At.selectable??Me)&&D.current.add(tt)}}if(!nv(pe,R.current)){const Ce=Fl(H,R.current,!0);G(Ce)}if(!nv(_e,D.current)){const Ce=Fl(P,D.current);F(Ce)}k.setState({userSelectionRect:xe,userSelectionActive:!0,nodesSelectionActive:!1})},M=Q=>{var K,j;Q.button===0&&((j=(K=Q.target)==null?void 0:K.releasePointerCapture)==null||j.call(K,Q.pointerId),!S&&Q.target===I.current&&k.getState().userSelectionRect&&(X==null||X(Q)),k.setState({userSelectionActive:!1,userSelectionRect:null}),U.current&&(f==null||f(Q),k.setState({nodesSelectionActive:R.current.size>0})))},Y=l===!0||Array.isArray(l)&&l.includes(0);return b.jsxs("div",{className:zt(["react-flow__pane",{draggable:Y,dragging:T,selection:e}]),onClick:z?void 0:sh(X,I),onContextMenu:sh(B,I),onWheel:sh(q,I),onPointerEnter:z?void 0:p,onPointerMove:z?$:y,onPointerUp:z?M:void 0,onPointerDownCapture:z?L:void 0,onClickCapture:z?ee:void 0,onPointerLeave:v,ref:I,style:Sc,children:[w,b.jsx(CA,{})]})}function Dp({id:e,store:n,unselect:r=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:s,multiSelectionActive:u,nodeLookup:f,onError:d}=n.getState(),h=f.get(e);if(!h){d==null||d("012",nr.error012(e));return}n.setState({nodesSelectionActive:!1}),h.selected?(r||h.selected&&u)&&(s({nodes:[h],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([e])}function pS({nodeRef:e,disabled:n=!1,noDragClassName:r,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:u}){const f=pt(),[d,h]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=mz({getStoreItems:()=>f.getState(),onNodeMouseDown:p=>{Dp({id:p,store:f,nodeRef:e})},onDragStart:()=>{h(!0)},onDragStop:()=>{h(!1)}})},[]),V.useEffect(()=>{if(!(n||!e.current||!m.current))return m.current.update({noDragClassName:r,handleSelector:l,domNode:e.current,isSelectable:s,nodeId:a,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[r,l,n,s,e,a,u]),d}const AA=e=>n=>n.selected&&(n.draggable||e&&typeof n.draggable>"u");function mS(){const e=pt();return V.useCallback(r=>{const{nodeExtent:l,snapToGrid:a,snapGrid:s,nodesDraggable:u,onError:f,updateNodePositions:d,nodeLookup:h,nodeOrigin:m}=e.getState(),p=new Map,y=AA(u),v=a?s[0]:5,w=a?s[1]:5,k=r.direction.x*v*r.factor,S=r.direction.y*w*r.factor;for(const[,_]of h){if(!y(_))continue;let T={x:_.internals.positionAbsolute.x+k,y:_.internals.positionAbsolute.y+S};a&&(T=$o(T,s));const{position:E,positionAbsolute:z}=Rw({nodeId:_.id,nextPosition:T,nodeLookup:h,nodeExtent:l,nodeOrigin:m,onError:f});_.position=E,_.internals.positionAbsolute=z,p.set(_.id,_)}d(p)},[])}const pm=V.createContext(null),MA=pm.Provider;pm.Consumer;const gS=()=>V.useContext(pm),jA=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),OA=(e,n,r)=>l=>{const{connectionClickStartHandle:a,connectionMode:s,connection:u}=l,{fromHandle:f,toHandle:d,isValid:h}=u,m=(d==null?void 0:d.nodeId)===e&&(d==null?void 0:d.id)===n&&(d==null?void 0:d.type)===r;return{connectingFrom:(f==null?void 0:f.nodeId)===e&&(f==null?void 0:f.id)===n&&(f==null?void 0:f.type)===r,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===n&&(a==null?void 0:a.type)===r,isPossibleEndHandle:s===ra.Strict?(f==null?void 0:f.type)!==r:e!==(f==null?void 0:f.nodeId)||n!==(f==null?void 0:f.id),connectionInProcess:!!f,clickConnectionInProcess:!!a,valid:m&&h}};function DA({type:e="source",position:n=be.Top,isValidConnection:r,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:s=!0,id:u,onConnect:f,children:d,className:h,onMouseDown:m,onTouchStart:p,...y},v){var $,M;const w=u||null,k=e==="target",S=pt(),_=gS(),{connectOnClick:T,noPanClassName:E,rfId:z}=Ge(jA,ht),{connectingFrom:I,connectingTo:A,clickConnecting:R,isPossibleEndHandle:D,connectionInProcess:U,clickConnectionInProcess:X,valid:B}=Ge(OA(_,w,e),ht);_||(M=($=S.getState()).onError)==null||M.call($,"010",nr.error010());const q=Y=>{const{defaultEdgeOptions:Q,onConnect:K,hasDefaultEdges:j}=S.getState(),H={...Q,...Y};if(j){const{edges:P,setEdges:N}=S.getState();N(WT(H,P))}K==null||K(H),f==null||f(H)},ee=Y=>{if(!_)return;const Q=Gw(Y.nativeEvent);if(a&&(Q&&Y.button===0||!Q)){const K=S.getState();Op.onPointerDown(Y.nativeEvent,{handleDomNode:Y.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:k,handleId:w,nodeId:_,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...j)=>{var H,P;return(P=(H=S.getState()).onConnectEnd)==null?void 0:P.call(H,...j)},updateConnection:K.updateConnection,onConnect:q,isValidConnection:r||((...j)=>{var H,P;return((P=(H=S.getState()).isValidConnection)==null?void 0:P.call(H,...j))??!0}),getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}Q?m==null||m(Y):p==null||p(Y)},L=Y=>{const{onClickConnectStart:Q,onClickConnectEnd:K,connectionClickStartHandle:j,connectionMode:H,isValidConnection:P,lib:N,rfId:G,nodeLookup:F,connection:J}=S.getState();if(!_||!j&&!a)return;if(!j){Q==null||Q(Y.nativeEvent,{nodeId:_,handleId:w,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:_,type:e,id:w}});return}const ne=Iw(Y.target),re=r||P,{connection:se,isValid:ye}=Op.isValid(Y.nativeEvent,{handle:{nodeId:_,id:w,type:e},connectionMode:H,fromNodeId:j.nodeId,fromHandleId:j.id||null,fromType:j.type,isValidConnection:re,flowId:G,doc:ne,lib:N,nodeLookup:F});ye&&se&&q(se);const ve=structuredClone(J);delete ve.inProgress,ve.toPosition=ve.toHandle?ve.toHandle.position:null,K==null||K(Y,ve),S.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":w,"data-nodeid":_,"data-handlepos":n,"data-id":`${z}-${_}-${w}-${e}`,className:zt(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",E,h,{source:!k,target:k,connectable:l,connectablestart:a,connectableend:s,clickconnecting:R,connectingfrom:I,connectingto:A,valid:B,connectionindicator:l&&(!U||D)&&(U||X?s:a)}]),onMouseDown:ee,onTouchStart:ee,onClick:T?L:void 0,ref:v,...y,children:d})}const $t=V.memo(dS(DA));function RA({data:e,isConnectable:n,sourcePosition:r=be.Bottom}){return b.jsxs(b.Fragment,{children:[e==null?void 0:e.label,b.jsx($t,{type:"source",position:r,isConnectable:n})]})}function LA({data:e,isConnectable:n,targetPosition:r=be.Top,sourcePosition:l=be.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label,b.jsx($t,{type:"source",position:l,isConnectable:n})]})}function HA(){return null}function BA({data:e,isConnectable:n,targetPosition:r=be.Top}){return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:r,isConnectable:n}),e==null?void 0:e.label]})}const ic={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},jv={input:RA,default:LA,output:BA,group:HA};function qA(e){var n,r,l,a;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((n=e.style)==null?void 0:n.width),height:e.height??e.initialHeight??((r=e.style)==null?void 0:r.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((a=e.style)==null?void 0:a.height)}}const UA=e=>{const{width:n,height:r,x:l,y:a}=Yo(e.nodeLookup,{filter:s=>!!s.selected});return{width:Un(n)?n:null,height:Un(r)?r:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${a}px)`}};function IA({onSelectionContextMenu:e,noPanClassName:n,disableKeyboardA11y:r}){const l=pt(),{width:a,height:s,transformString:u,userSelectionActive:f}=Ge(UA,ht),d=mS(),h=V.useRef(null);V.useEffect(()=>{var v;r||(v=h.current)==null||v.focus({preventScroll:!0})},[r]);const m=!f&&a!==null&&s!==null;if(pS({nodeRef:h,disabled:!m}),!m)return null;const p=e?v=>{const w=l.getState().nodes.filter(k=>k.selected);e(v,w)}:void 0,y=v=>{Object.prototype.hasOwnProperty.call(ic,v.key)&&(v.preventDefault(),d({direction:ic[v.key],factor:v.shiftKey?4:1}))};return b.jsx("div",{className:zt(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:b.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:r?void 0:-1,onKeyDown:r?void 0:y,style:{width:a,height:s}})})}const Ov=typeof window<"u"?window:void 0,VA=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function yS({children:e,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,paneClickDistance:f,deleteKeyCode:d,selectionKeyCode:h,selectionOnDrag:m,selectionMode:p,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:w,panActivationKeyCode:k,zoomActivationKeyCode:S,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:z,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:R,panOnDrag:D,defaultViewport:U,translateExtent:X,minZoom:B,maxZoom:q,preventScrolling:ee,onSelectionContextMenu:L,noWheelClassName:$,noPanClassName:M,disableKeyboardA11y:Y,onViewportChange:Q,isControlledViewport:K}){const{nodesSelectionActive:j,userSelectionActive:H}=Ge(VA,ht),P=Lo(h,{target:Ov}),N=Lo(k,{target:Ov}),G=N||D,F=N||z,J=m&&G!==!0,ne=P||H||J;return SA({deleteKeyCode:d,multiSelectionKeyCode:w}),b.jsx(NA,{onPaneContextMenu:s,elementsSelectable:_,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:A,zoomOnDoubleClick:R,panOnDrag:!P&&G,defaultViewport:U,translateExtent:X,minZoom:B,maxZoom:q,zoomActivationKeyCode:S,preventScrolling:ee,noWheelClassName:$,noPanClassName:M,onViewportChange:Q,isControlledViewport:K,paneClickDistance:f,selectionOnDrag:J,children:b.jsxs(zA,{onSelectionStart:y,onSelectionEnd:v,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:u,panOnDrag:G,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:P,paneClickDistance:f,selectionOnDrag:J,children:[e,j&&b.jsx(IA,{onSelectionContextMenu:L,noPanClassName:M,disableKeyboardA11y:Y})]})})}yS.displayName="FlowRenderer";const GA=V.memo(yS),YA=e=>n=>e?lm(n.nodeLookup,{x:0,y:0,width:n.width,height:n.height},n.transform,!0).map(r=>r.id):Array.from(n.nodeLookup.keys());function $A(e){return Ge(V.useCallback(YA(e),[e]),ht)}const PA=e=>e.updateNodeInternals;function XA(){const e=Ge(PA),[n]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(r=>{const l=new Map;r.forEach(a=>{const s=a.target.getAttribute("data-id");l.set(s,{id:s,nodeElement:a.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{n==null||n.disconnect()},[n]),n}function FA({node:e,nodeType:n,hasDimensions:r,resizeObserver:l}){const a=pt(),s=V.useRef(null),u=V.useRef(null),f=V.useRef(e.sourcePosition),d=V.useRef(e.targetPosition),h=V.useRef(n),m=r&&!!e.internals.handleBounds;return V.useEffect(()=>{s.current&&!e.hidden&&(!m||u.current!==s.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(s.current),u.current=s.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(s.current){const p=h.current!==n,y=f.current!==e.sourcePosition,v=d.current!==e.targetPosition;(p||y||v)&&(h.current=n,f.current=e.sourcePosition,d.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,n,e.sourcePosition,e.targetPosition]),s}function QA({id:e,onClick:n,onMouseEnter:r,onMouseMove:l,onMouseLeave:a,onContextMenu:s,onDoubleClick:u,nodesDraggable:f,elementsSelectable:d,nodesConnectable:h,nodesFocusable:m,resizeObserver:p,noDragClassName:y,noPanClassName:v,disableKeyboardA11y:w,rfId:k,nodeTypes:S,nodeClickDistance:_,onError:T}){const{node:E,internals:z,isParent:I}=Ge(re=>{const se=re.nodeLookup.get(e),ye=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:ye}},ht);let A=E.type||"default",R=(S==null?void 0:S[A])||jv[A];R===void 0&&(T==null||T("003",nr.error003(A)),A="default",R=(S==null?void 0:S.default)||jv.default);const D=!!(E.draggable||f&&typeof E.draggable>"u"),U=!!(E.selectable||d&&typeof E.selectable>"u"),X=!!(E.connectable||h&&typeof E.connectable>"u"),B=!!(E.focusable||m&&typeof E.focusable>"u"),q=pt(),ee=qw(E),L=FA({node:E,nodeType:A,hasDimensions:ee,resizeObserver:p}),$=pS({nodeRef:L,disabled:E.hidden||!D,noDragClassName:y,handleSelector:E.dragHandle,nodeId:e,isSelectable:U,nodeClickDistance:_}),M=mS();if(E.hidden)return null;const Y=jr(E),Q=qA(E),K=U||D||n||r||l||a,j=r?re=>r(re,{...z.userNode}):void 0,H=l?re=>l(re,{...z.userNode}):void 0,P=a?re=>a(re,{...z.userNode}):void 0,N=s?re=>s(re,{...z.userNode}):void 0,G=u?re=>u(re,{...z.userNode}):void 0,F=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:ye}=q.getState();U&&(!se||!D||ye>0)&&Dp({id:e,store:q,nodeRef:L}),n&&n(re,{...z.userNode})},J=re=>{if(!(Vw(re.nativeEvent)||w)){if(Aw.includes(re.key)&&U){const se=re.key==="Escape";Dp({id:e,store:q,unselect:se,nodeRef:L})}else if(D&&E.selected&&Object.prototype.hasOwnProperty.call(ic,re.key)){re.preventDefault();const{ariaLabelConfig:se}=q.getState();q.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~z.positionAbsolute.x,y:~~z.positionAbsolute.y})}),M({direction:ic[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=L.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:ye,autoPanOnNodeFocus:ve,setCenter:xe}=q.getState();if(!ve)return;lm(new Map([[e,E]]),{x:0,y:0,width:se,height:ye},re,!0).length>0||xe(E.position.x+Y.width/2,E.position.y+Y.height/2,{zoom:re[2]})};return b.jsx("div",{className:zt(["react-flow__node",`react-flow__node-${A}`,{[v]:D},E.className,{selected:E.selected,selectable:U,parent:I,draggable:D,dragging:$}]),ref:L,style:{zIndex:z.z,transform:`translate(${z.positionAbsolute.x}px,${z.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:ee?"visible":"hidden",...E.style,...Q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:H,onMouseLeave:P,onContextMenu:N,onClick:F,onDoubleClick:G,onKeyDown:B?J:void 0,tabIndex:B?0:void 0,onFocus:B?ne:void 0,role:E.ariaRole??(B?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${aS}-${k}`,"aria-label":E.ariaLabel,...E.domAttributes,children:b.jsx(MA,{value:e,children:b.jsx(R,{id:e,data:E.data,type:A,positionAbsoluteX:z.positionAbsolute.x,positionAbsoluteY:z.positionAbsolute.y,selected:E.selected??!1,selectable:U,draggable:D,deletable:E.deletable??!0,isConnectable:X,sourcePosition:E.sourcePosition,targetPosition:E.targetPosition,dragging:$,dragHandle:E.dragHandle,zIndex:z.z,parentId:E.parentId,...Y})})})}var ZA=V.memo(QA);const KA=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function xS(e){const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,onError:s}=Ge(KA,ht),u=$A(e.onlyRenderVisibleElements),f=XA();return b.jsx("div",{className:"react-flow__nodes",style:Sc,children:u.map(d=>b.jsx(ZA,{id:d,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:f,nodesDraggable:n,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:s},d))})}xS.displayName="NodeRenderer";const JA=V.memo(xS);function WA(e){return Ge(V.useCallback(r=>{if(!e)return r.edges.map(a=>a.id);const l=[];if(r.width&&r.height)for(const a of r.edges){const s=r.nodeLookup.get(a.source),u=r.nodeLookup.get(a.target);s&&u&&ZT({sourceNode:s,targetNode:u,width:r.width,height:r.height,transform:r.transform})&&l.push(a.id)}return l},[e]),ht)}const eM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:r,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},tM=({color:e="none",strokeWidth:n=1})=>{const r={strokeWidth:n,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:r,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Dv={[tc.Arrow]:eM,[tc.ArrowClosed]:tM};function nM(e){const n=pt();return V.useMemo(()=>{var a,s;return Object.prototype.hasOwnProperty.call(Dv,e)?Dv[e]:((s=(a=n.getState()).onError)==null||s.call(a,"009",nr.error009(e)),null)},[e])}const rM=({id:e,type:n,color:r,width:l=12.5,height:a=12.5,markerUnits:s="strokeWidth",strokeWidth:u,orient:f="auto-start-reverse"})=>{const d=nM(n);return d?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:f,refX:"0",refY:"0",children:b.jsx(d,{color:r,strokeWidth:u})}):null},vS=({defaultColor:e,rfId:n})=>{const r=Ge(s=>s.edges),l=Ge(s=>s.defaultEdgeOptions),a=V.useMemo(()=>iz(r,{id:n,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[r,l,n,e]);return a.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:a.map(s=>b.jsx(rM,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};vS.displayName="MarkerDefinitions";var iM=V.memo(vS);function bS({x:e,y:n,label:r,labelStyle:l,labelShowBg:a=!0,labelBgStyle:s,labelBgPadding:u=[2,4],labelBgBorderRadius:f=2,children:d,className:h,...m}){const[p,y]=V.useState({x:1,y:0,width:0,height:0}),v=zt(["react-flow__edge-textwrapper",h]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const k=w.current.getBBox();y({x:k.x,y:k.y,width:k.width,height:k.height})}},[r]),r?b.jsxs("g",{transform:`translate(${e-p.width/2} ${n-p.height/2})`,className:v,visibility:p.width?"visible":"hidden",...m,children:[a&&b.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:s,rx:f,ry:f}),b.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:r}),d]}):null}bS.displayName="EdgeText";const lM=V.memo(bS);function Fo({path:e,labelX:n,labelY:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:d,interactionWidth:h=20,...m}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...m,d:e,fill:"none",className:zt(["react-flow__edge-path",m.className])}),h?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}):null,l&&Un(n)&&Un(r)?b.jsx(lM,{x:n,y:r,label:l,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:f,labelBgBorderRadius:d}):null]})}function Rv({pos:e,x1:n,y1:r,x2:l,y2:a}){return e===be.Left||e===be.Right?[.5*(n+l),r]:[n,.5*(r+a)]}function wS({sourceX:e,sourceY:n,sourcePosition:r=be.Bottom,targetX:l,targetY:a,targetPosition:s=be.Top}){const[u,f]=Rv({pos:r,x1:e,y1:n,x2:l,y2:a}),[d,h]=Rv({pos:s,x1:l,y1:a,x2:e,y2:n}),[m,p,y,v]=Yw({sourceX:e,sourceY:n,targetX:l,targetY:a,sourceControlX:u,sourceControlY:f,targetControlX:d,targetControlY:h});return[`M${e},${n} C${u},${f} ${d},${h} ${l},${a}`,m,p,y,v]}function SS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})=>{const[T,E,z]=wS({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f}),I=e.isInternal?void 0:n;return b.jsx(Fo,{id:I,path:T,labelX:E,labelY:z,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:_})})}const aM=SS({isInternal:!1}),_S=SS({isInternal:!0});aM.displayName="SimpleBezierEdge";_S.displayName="SimpleBezierEdgeInternal";function ES(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,sourcePosition:v=be.Bottom,targetPosition:w=be.Top,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=Ap({sourceX:r,sourceY:l,sourcePosition:v,targetX:a,targetY:s,targetPosition:w,borderRadius:_==null?void 0:_.borderRadius,offset:_==null?void 0:_.offset,stepPosition:_==null?void 0:_.stepPosition}),A=e.isInternal?void 0:n;return b.jsx(Fo,{id:A,path:E,labelX:z,labelY:I,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:k,markerStart:S,interactionWidth:T})})}const NS=ES({isInternal:!1}),kS=ES({isInternal:!0});NS.displayName="SmoothStepEdge";kS.displayName="SmoothStepEdgeInternal";function CS(e){return V.memo(({id:n,...r})=>{var a;const l=e.isInternal?void 0:n;return b.jsx(NS,{...r,id:l,pathOptions:V.useMemo(()=>{var s;return{borderRadius:0,offset:(s=r.pathOptions)==null?void 0:s.offset}},[(a=r.pathOptions)==null?void 0:a.offset])})})}const oM=CS({isInternal:!1}),TS=CS({isInternal:!0});oM.displayName="StepEdge";TS.displayName="StepEdgeInternal";function zS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})=>{const[S,_,T]=Pw({sourceX:r,sourceY:l,targetX:a,targetY:s}),E=e.isInternal?void 0:n;return b.jsx(Fo,{id:E,path:S,labelX:_,labelY:T,label:u,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:y,markerEnd:v,markerStart:w,interactionWidth:k})})}const sM=zS({isInternal:!1}),AS=zS({isInternal:!0});sM.displayName="StraightEdge";AS.displayName="StraightEdgeInternal";function MS(e){return V.memo(({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u=be.Bottom,targetPosition:f=be.Top,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,pathOptions:_,interactionWidth:T})=>{const[E,z,I]=sm({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:s,targetPosition:f,curvature:_==null?void 0:_.curvature}),A=e.isInternal?void 0:n;return b.jsx(Fo,{id:A,path:E,labelX:z,labelY:I,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:y,labelBgBorderRadius:v,style:w,markerEnd:k,markerStart:S,interactionWidth:T})})}const uM=MS({isInternal:!1}),jS=MS({isInternal:!0});uM.displayName="BezierEdge";jS.displayName="BezierEdgeInternal";const Lv={default:jS,straight:AS,step:TS,smoothstep:kS,simplebezier:_S},Hv={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},cM=(e,n,r)=>r===be.Left?e-n:r===be.Right?e+n:e,fM=(e,n,r)=>r===be.Top?e-n:r===be.Bottom?e+n:e,Bv="react-flow__edgeupdater";function qv({position:e,centerX:n,centerY:r,radius:l=10,onMouseDown:a,onMouseEnter:s,onMouseOut:u,type:f}){return b.jsx("circle",{onMouseDown:a,onMouseEnter:s,onMouseOut:u,className:zt([Bv,`${Bv}-${f}`]),cx:cM(n,l,e),cy:fM(r,l,e),r:l,stroke:"transparent",fill:"transparent"})}function dM({isReconnectable:e,reconnectRadius:n,edge:r,sourceX:l,sourceY:a,targetX:s,targetY:u,sourcePosition:f,targetPosition:d,onReconnect:h,onReconnectStart:m,onReconnectEnd:p,setReconnecting:y,setUpdateHover:v}){const w=pt(),k=(z,I)=>{if(z.button!==0)return;const{autoPanOnConnect:A,domNode:R,connectionMode:D,connectionRadius:U,lib:X,onConnectStart:B,cancelConnection:q,nodeLookup:ee,rfId:L,panBy:$,updateConnection:M}=w.getState(),Y=I.type==="target",Q=(H,P)=>{y(!1),p==null||p(H,r,I.type,P)},K=H=>h==null?void 0:h(r,H),j=(H,P)=>{y(!0),m==null||m(z,r,I.type),B==null||B(H,P)};Op.onPointerDown(z.nativeEvent,{autoPanOnConnect:A,connectionMode:D,connectionRadius:U,domNode:R,handleId:I.id,nodeId:I.nodeId,nodeLookup:ee,isTarget:Y,edgeUpdaterType:I.type,lib:X,flowId:L,cancelConnection:q,panBy:$,isValidConnection:(...H)=>{var P,N;return((N=(P=w.getState()).isValidConnection)==null?void 0:N.call(P,...H))??!0},onConnect:K,onConnectStart:j,onConnectEnd:(...H)=>{var P,N;return(N=(P=w.getState()).onConnectEnd)==null?void 0:N.call(P,...H)},onReconnectEnd:Q,updateConnection:M,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:z.currentTarget})},S=z=>k(z,{nodeId:r.target,id:r.targetHandle??null,type:"target"}),_=z=>k(z,{nodeId:r.source,id:r.sourceHandle??null,type:"source"}),T=()=>v(!0),E=()=>v(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(qv,{position:f,centerX:l,centerY:a,radius:n,onMouseDown:S,onMouseEnter:T,onMouseOut:E,type:"source"}),(e===!0||e==="target")&&b.jsx(qv,{position:d,centerX:s,centerY:u,radius:n,onMouseDown:_,onMouseEnter:T,onMouseOut:E,type:"target"})]})}function hM({id:e,edgesFocusable:n,edgesReconnectable:r,elementsSelectable:l,onClick:a,onDoubleClick:s,onContextMenu:u,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,rfId:w,edgeTypes:k,noPanClassName:S,onError:_,disableKeyboardA11y:T}){let E=Ge(xe=>xe.edgeLookup.get(e));const z=Ge(xe=>xe.defaultEdgeOptions);E=z?{...z,...E}:E;let I=E.type||"default",A=(k==null?void 0:k[I])||Lv[I];A===void 0&&(_==null||_("011",nr.error011(I)),I="default",A=(k==null?void 0:k.default)||Lv.default);const R=!!(E.focusable||n&&typeof E.focusable>"u"),D=typeof p<"u"&&(E.reconnectable||r&&typeof E.reconnectable>"u"),U=!!(E.selectable||l&&typeof E.selectable>"u"),X=V.useRef(null),[B,q]=V.useState(!1),[ee,L]=V.useState(!1),$=pt(),{zIndex:M,sourceX:Y,sourceY:Q,targetX:K,targetY:j,sourcePosition:H,targetPosition:P}=Ge(V.useCallback(xe=>{const pe=xe.nodeLookup.get(E.source),_e=xe.nodeLookup.get(E.target);if(!pe||!_e)return{zIndex:E.zIndex,...Hv};const Me=rz({id:e,sourceNode:pe,targetNode:_e,sourceHandle:E.sourceHandle||null,targetHandle:E.targetHandle||null,connectionMode:xe.connectionMode,onError:_});return{zIndex:QT({selected:E.selected,zIndex:E.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:xe.elevateEdgesOnSelect,zIndexMode:xe.zIndexMode}),...Me||Hv}},[E.source,E.target,E.sourceHandle,E.targetHandle,E.selected,E.zIndex]),ht),N=V.useMemo(()=>E.markerStart?`url('#${Mp(E.markerStart,w)}')`:void 0,[E.markerStart,w]),G=V.useMemo(()=>E.markerEnd?`url('#${Mp(E.markerEnd,w)}')`:void 0,[E.markerEnd,w]);if(E.hidden||Y===null||Q===null||K===null||j===null)return null;const F=xe=>{var Ce;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:Me}=$.getState();U&&($.setState({nodesSelectionActive:!1}),E.selected&&Me?(_e({nodes:[],edges:[E]}),(Ce=X.current)==null||Ce.blur()):pe([e])),a&&a(xe,E)},J=s?xe=>{s(xe,{...E})}:void 0,ne=u?xe=>{u(xe,{...E})}:void 0,re=f?xe=>{f(xe,{...E})}:void 0,se=d?xe=>{d(xe,{...E})}:void 0,ye=h?xe=>{h(xe,{...E})}:void 0,ve=xe=>{var pe;if(!T&&Aw.includes(xe.key)&&U){const{unselectNodesAndEdges:_e,addSelectedEdges:Me}=$.getState();xe.key==="Escape"?((pe=X.current)==null||pe.blur(),_e({edges:[E]})):Me([e])}};return b.jsx("svg",{style:{zIndex:M},children:b.jsxs("g",{className:zt(["react-flow__edge",`react-flow__edge-${I}`,E.className,S,{selected:E.selected,animated:E.animated,inactive:!U&&!a,updating:B,selectable:U}]),onClick:F,onDoubleClick:J,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:ye,onKeyDown:R?ve:void 0,tabIndex:R?0:void 0,role:E.ariaRole??(R?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":E.ariaLabel===null?void 0:E.ariaLabel||`Edge from ${E.source} to ${E.target}`,"aria-describedby":R?`${oS}-${w}`:void 0,ref:X,...E.domAttributes,children:[!ee&&b.jsx(A,{id:e,source:E.source,target:E.target,type:E.type,selected:E.selected,animated:E.animated,selectable:U,deletable:E.deletable??!0,label:E.label,labelStyle:E.labelStyle,labelShowBg:E.labelShowBg,labelBgStyle:E.labelBgStyle,labelBgPadding:E.labelBgPadding,labelBgBorderRadius:E.labelBgBorderRadius,sourceX:Y,sourceY:Q,targetX:K,targetY:j,sourcePosition:H,targetPosition:P,data:E.data,style:E.style,sourceHandleId:E.sourceHandle,targetHandleId:E.targetHandle,markerStart:N,markerEnd:G,pathOptions:"pathOptions"in E?E.pathOptions:void 0,interactionWidth:E.interactionWidth}),D&&b.jsx(dM,{edge:E,isReconnectable:D,reconnectRadius:m,onReconnect:p,onReconnectStart:y,onReconnectEnd:v,sourceX:Y,sourceY:Q,targetX:K,targetY:j,sourcePosition:H,targetPosition:P,setUpdateHover:q,setReconnecting:L})]})})}var pM=V.memo(hM);const mM=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function OS({defaultMarkerColor:e,onlyRenderVisibleElements:n,rfId:r,edgeTypes:l,noPanClassName:a,onReconnect:s,onEdgeContextMenu:u,onEdgeMouseEnter:f,onEdgeMouseMove:d,onEdgeMouseLeave:h,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,disableKeyboardA11y:k}){const{edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,onError:E}=Ge(mM,ht),z=WA(n);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(iM,{defaultColor:e,rfId:r}),z.map(I=>b.jsx(pM,{id:I,edgesFocusable:S,edgesReconnectable:_,elementsSelectable:T,noPanClassName:a,onReconnect:s,onContextMenu:u,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,onClick:m,reconnectRadius:p,onDoubleClick:y,onReconnectStart:v,onReconnectEnd:w,rfId:r,onError:E,edgeTypes:l,disableKeyboardA11y:k},I))]})}OS.displayName="EdgeRenderer";const gM=V.memo(OS),yM=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function xM({children:e}){const n=Ge(yM);return b.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:e})}function vM(e){const n=Xo(),r=V.useRef(!1);V.useEffect(()=>{!r.current&&n.viewportInitialized&&e&&(setTimeout(()=>e(n),1),r.current=!0)},[e,n.viewportInitialized])}const bM=e=>{var n;return(n=e.panZoom)==null?void 0:n.syncViewport};function wM(e){const n=Ge(bM),r=pt();return V.useEffect(()=>{e&&(n==null||n(e),r.setState({transform:[e.x,e.y,e.zoom]}))},[e,n]),null}function SM(e){return e.connection.inProgress?{...e.connection,to:Po(e.connection.to,e.transform)}:{...e.connection}}function _M(e){return SM}function EM(e){const n=_M();return Ge(n,ht)}const NM=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function kM({containerStyle:e,style:n,type:r,component:l}){const{nodesConnectable:a,width:s,height:u,isValid:f,inProgress:d}=Ge(NM,ht);return!(s&&a&&d)?null:b.jsx("svg",{style:e,width:s,height:u,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:zt(["react-flow__connection",Ow(f)]),children:b.jsx(DS,{style:n,type:r,CustomComponent:l,isValid:f})})})}const DS=({style:e,type:n=pi.Bezier,CustomComponent:r,isValid:l})=>{const{inProgress:a,from:s,fromNode:u,fromHandle:f,fromPosition:d,to:h,toNode:m,toHandle:p,toPosition:y,pointer:v}=EM();if(!a)return;if(r)return b.jsx(r,{connectionLineType:n,connectionLineStyle:e,fromNode:u,fromHandle:f,fromX:s.x,fromY:s.y,toX:h.x,toY:h.y,fromPosition:d,toPosition:y,connectionStatus:Ow(l),toNode:m,toHandle:p,pointer:v});let w="";const k={sourceX:s.x,sourceY:s.y,sourcePosition:d,targetX:h.x,targetY:h.y,targetPosition:y};switch(n){case pi.Bezier:[w]=sm(k);break;case pi.SimpleBezier:[w]=wS(k);break;case pi.Step:[w]=Ap({...k,borderRadius:0});break;case pi.SmoothStep:[w]=Ap(k);break;default:[w]=Pw(k)}return b.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};DS.displayName="ConnectionLine";const CM={};function Uv(e=CM){V.useRef(e),pt(),V.useEffect(()=>{},[e])}function TM(){pt(),V.useRef(!1),V.useEffect(()=>{},[])}function RS({nodeTypes:e,edgeTypes:n,onInit:r,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:s,onEdgeDoubleClick:u,onNodeMouseEnter:f,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:y,onSelectionEnd:v,connectionLineType:w,connectionLineStyle:k,connectionLineComponent:S,connectionLineContainerStyle:_,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:R,deleteKeyCode:D,onlyRenderVisibleElements:U,elementsSelectable:X,defaultViewport:B,translateExtent:q,minZoom:ee,maxZoom:L,preventScrolling:$,defaultMarkerColor:M,zoomOnScroll:Y,zoomOnPinch:Q,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:H,zoomOnDoubleClick:P,panOnDrag:N,onPaneClick:G,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:ye,nodeClickDistance:ve,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or,viewport:ue,onViewportChange:ge}){return Uv(e),Uv(n),TM(),vM(r),wM(ue),b.jsx(GA,{onPaneClick:G,onPaneMouseEnter:F,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:ye,deleteKeyCode:D,selectionKeyCode:T,selectionOnDrag:E,selectionMode:z,onSelectionStart:y,onSelectionEnd:v,multiSelectionKeyCode:I,panActivationKeyCode:A,zoomActivationKeyCode:R,elementsSelectable:X,zoomOnScroll:Y,zoomOnPinch:Q,zoomOnDoubleClick:P,panOnScroll:K,panOnScrollSpeed:j,panOnScrollMode:H,panOnDrag:N,defaultViewport:B,translateExtent:q,minZoom:ee,maxZoom:L,onSelectionContextMenu:p,preventScrolling:$,noDragClassName:It,noWheelClassName:Rt,noPanClassName:Sn,disableKeyboardA11y:jn,onViewportChange:ge,isControlledViewport:!!ue,children:b.jsxs(xM,{children:[b.jsx(gM,{edgeTypes:n,onEdgeClick:a,onEdgeDoubleClick:u,onReconnect:ut,onReconnectStart:tt,onReconnectEnd:At,onlyRenderVisibleElements:U,onEdgeContextMenu:xe,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:Me,reconnectRadius:Ce,defaultMarkerColor:M,noPanClassName:Sn,disableKeyboardA11y:jn,rfId:Or}),b.jsx(kM,{style:k,type:w,component:S,containerStyle:_}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(JA,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:s,onNodeMouseEnter:f,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:U,noPanClassName:Sn,noDragClassName:It,disableKeyboardA11y:jn,nodeExtent:Mt,rfId:Or}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}RS.displayName="GraphView";const zM=V.memo(RS),Iv=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:d=.5,maxZoom:h=2,nodeOrigin:m,nodeExtent:p,zIndexMode:y="basic"}={})=>{const v=new Map,w=new Map,k=new Map,S=new Map,_=l??n??[],T=r??e??[],E=m??[0,0],z=p??jo;Qw(k,S,_);const I=jp(T,v,w,{nodeOrigin:E,nodeExtent:z,zIndexMode:y});let A=[0,0,1];if(u&&a&&s){const R=Yo(v,{filter:B=>!!((B.width||B.initialWidth)&&(B.height||B.initialHeight))}),{x:D,y:U,zoom:X}=am(R,a,s,d,h,(f==null?void 0:f.padding)??.1);A=[D,U,X]}return{rfId:"1",width:a??0,height:s??0,transform:A,nodes:T,nodesInitialized:I,nodeLookup:v,parentLookup:w,edges:_,edgeLookup:S,connectionLookup:k,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:r!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:d,maxZoom:h,translateExtent:jo,nodeExtent:z,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ra.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:E,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:f,fitViewResolver:null,connection:{...jw},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:GT,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Mw,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},AM=({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y})=>Xz((v,w)=>{async function k(){const{nodeLookup:S,panZoom:_,fitViewOptions:T,fitViewResolver:E,width:z,height:I,minZoom:A,maxZoom:R}=w();_&&(await IT({nodes:S,width:z,height:I,panZoom:_,minZoom:A,maxZoom:R},T),E==null||E.resolve(!0),v({fitViewResolver:null}))}return{...Iv({nodes:e,edges:n,width:a,height:s,fitView:u,fitViewOptions:f,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,defaultNodes:r,defaultEdges:l,zIndexMode:y}),setNodes:S=>{const{nodeLookup:_,parentLookup:T,nodeOrigin:E,elevateNodesOnSelect:z,fitViewQueued:I,zIndexMode:A}=w(),R=jp(S,_,T,{nodeOrigin:E,nodeExtent:p,elevateNodesOnSelect:z,checkEquality:!0,zIndexMode:A});I&&R?(k(),v({nodes:S,nodesInitialized:R,fitViewQueued:!1,fitViewOptions:void 0})):v({nodes:S,nodesInitialized:R})},setEdges:S=>{const{connectionLookup:_,edgeLookup:T}=w();Qw(_,T,S),v({edges:S})},setDefaultNodesAndEdges:(S,_)=>{if(S){const{setNodes:T}=w();T(S),v({hasDefaultNodes:!0})}if(_){const{setEdges:T}=w();T(_),v({hasDefaultEdges:!0})}},updateNodeInternals:S=>{const{triggerNodeChanges:_,nodeLookup:T,parentLookup:E,domNode:z,nodeOrigin:I,nodeExtent:A,debug:R,fitViewQueued:D,zIndexMode:U}=w(),{changes:X,updatedInternals:B}=fz(S,T,E,z,I,A,U);B&&(oz(T,E,{nodeOrigin:I,nodeExtent:A,zIndexMode:U}),D?(k(),v({fitViewQueued:!1,fitViewOptions:void 0})):v({}),(X==null?void 0:X.length)>0&&(R&&console.log("React Flow: trigger node changes",X),_==null||_(X)))},updateNodePositions:(S,_=!1)=>{const T=[];let E=[];const{nodeLookup:z,triggerNodeChanges:I,connection:A,updateConnection:R,onNodesChangeMiddlewareMap:D}=w();for(const[U,X]of S){const B=z.get(U),q=!!(B!=null&&B.expandParent&&(B!=null&&B.parentId)&&(X!=null&&X.position)),ee={id:U,type:"position",position:q?{x:Math.max(0,X.position.x),y:Math.max(0,X.position.y)}:X.position,dragging:_};if(B&&A.inProgress&&A.fromNode.id===B.id){const L=Zi(B,A.fromHandle,be.Left,!0);R({...A,from:L})}q&&B.parentId&&T.push({id:U,parentId:B.parentId,rect:{...X.internals.positionAbsolute,width:X.measured.width??0,height:X.measured.height??0}}),E.push(ee)}if(T.length>0){const{parentLookup:U,nodeOrigin:X}=w(),B=hm(T,z,U,X);E.push(...B)}for(const U of D.values())E=U(E);I(E)},triggerNodeChanges:S=>{const{onNodesChange:_,setNodes:T,nodes:E,hasDefaultNodes:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=cS(S,E);T(A)}I&&console.log("React Flow: trigger node changes",S),_==null||_(S)}},triggerEdgeChanges:S=>{const{onEdgesChange:_,setEdges:T,edges:E,hasDefaultEdges:z,debug:I}=w();if(S!=null&&S.length){if(z){const A=fS(S,E);T(A)}I&&console.log("React Flow: trigger edge changes",S),_==null||_(S)}},addSelectedNodes:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(R=>qi(R,!0));z(A);return}z(Fl(E,new Set([...S]),!0)),I(Fl(T))},addSelectedEdges:S=>{const{multiSelectionActive:_,edgeLookup:T,nodeLookup:E,triggerNodeChanges:z,triggerEdgeChanges:I}=w();if(_){const A=S.map(R=>qi(R,!0));I(A);return}I(Fl(T,new Set([...S]))),z(Fl(E,new Set,!0))},unselectNodesAndEdges:({nodes:S,edges:_}={})=>{const{edges:T,nodes:E,nodeLookup:z,triggerNodeChanges:I,triggerEdgeChanges:A}=w(),R=S||E,D=_||T,U=[];for(const B of R){if(!B.selected)continue;const q=z.get(B.id);q&&(q.selected=!1),U.push(qi(B.id,!1))}const X=[];for(const B of D)B.selected&&X.push(qi(B.id,!1));I(U),A(X)},setMinZoom:S=>{const{panZoom:_,maxZoom:T}=w();_==null||_.setScaleExtent([S,T]),v({minZoom:S})},setMaxZoom:S=>{const{panZoom:_,minZoom:T}=w();_==null||_.setScaleExtent([T,S]),v({maxZoom:S})},setTranslateExtent:S=>{var _;(_=w().panZoom)==null||_.setTranslateExtent(S),v({translateExtent:S})},resetSelectedElements:()=>{const{edges:S,nodes:_,triggerNodeChanges:T,triggerEdgeChanges:E,elementsSelectable:z}=w();if(!z)return;const I=_.reduce((R,D)=>D.selected?[...R,qi(D.id,!1)]:R,[]),A=S.reduce((R,D)=>D.selected?[...R,qi(D.id,!1)]:R,[]);T(I),E(A)},setNodeExtent:S=>{const{nodes:_,nodeLookup:T,parentLookup:E,nodeOrigin:z,elevateNodesOnSelect:I,nodeExtent:A,zIndexMode:R}=w();S[0][0]===A[0][0]&&S[0][1]===A[0][1]&&S[1][0]===A[1][0]&&S[1][1]===A[1][1]||(jp(_,T,E,{nodeOrigin:z,nodeExtent:S,elevateNodesOnSelect:I,checkEquality:!1,zIndexMode:R}),v({nodeExtent:S}))},panBy:S=>{const{transform:_,width:T,height:E,panZoom:z,translateExtent:I}=w();return dz({delta:S,panZoom:z,transform:_,translateExtent:I,width:T,height:E})},setCenter:async(S,_,T)=>{const{width:E,height:z,maxZoom:I,panZoom:A}=w();if(!A)return Promise.resolve(!1);const R=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:I;return await A.setViewport({x:E/2-S*R,y:z/2-_*R,zoom:R},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{v({connection:{...jw}})},updateConnection:S=>{v({connection:S})},reset:()=>v({...Iv()})}},Object.is);function MM({initialNodes:e,initialEdges:n,defaultNodes:r,defaultEdges:l,initialWidth:a,initialHeight:s,initialMinZoom:u,initialMaxZoom:f,initialFitViewOptions:d,fitView:h,nodeOrigin:m,nodeExtent:p,zIndexMode:y,children:v}){const[w]=V.useState(()=>AM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,width:a,height:s,fitView:h,minZoom:u,maxZoom:f,fitViewOptions:d,nodeOrigin:m,nodeExtent:p,zIndexMode:y}));return b.jsx(Qz,{value:w,children:b.jsx(xA,{children:v})})}function jM({children:e,nodes:n,edges:r,defaultNodes:l,defaultEdges:a,width:s,height:u,fitView:f,fitViewOptions:d,minZoom:h,maxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v}){return V.useContext(bc)?b.jsx(b.Fragment,{children:e}):b.jsx(MM,{initialNodes:n,initialEdges:r,defaultNodes:l,defaultEdges:a,initialWidth:s,initialHeight:u,fitView:f,initialFitViewOptions:d,initialMinZoom:h,initialMaxZoom:m,nodeOrigin:p,nodeExtent:y,zIndexMode:v,children:e})}const OM={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function DM({nodes:e,edges:n,defaultNodes:r,defaultEdges:l,className:a,nodeTypes:s,edgeTypes:u,onNodeClick:f,onEdgeClick:d,onInit:h,onMove:m,onMoveStart:p,onMoveEnd:y,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,onNodeDragStart:R,onNodeDrag:D,onNodeDragStop:U,onNodesDelete:X,onEdgesDelete:B,onDelete:q,onSelectionChange:ee,onSelectionDragStart:L,onSelectionDrag:$,onSelectionDragStop:M,onSelectionContextMenu:Y,onSelectionStart:Q,onSelectionEnd:K,onBeforeDelete:j,connectionMode:H,connectionLineType:P=pi.Bezier,connectionLineStyle:N,connectionLineComponent:G,connectionLineContainerStyle:F,deleteKeyCode:J="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Oo.Full,panActivationKeyCode:ye="Space",multiSelectionKeyCode:ve=Ro()?"Meta":"Control",zoomActivationKeyCode:xe=Ro()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Ce,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,nodeOrigin:Rt=sS,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt=!0,defaultViewport:Or=sA,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=jo,preventScrolling:Re=!0,nodeExtent:Ye,defaultMarkerColor:Xt="#b1b1b7",zoomOnScroll:On=!0,zoomOnPinch:Lt=!0,panOnScroll:xt=!1,panOnScrollSpeed:Vt=.5,panOnScrollMode:Je=$i.Free,zoomOnDoubleClick:Pn=!0,panOnDrag:un=!0,onPaneClick:Cc,onPaneMouseEnter:tl,onPaneMouseMove:nl,onPaneMouseLeave:rl,onPaneScroll:lr,onPaneContextMenu:il,paneClickDistance:yi=1,nodeClickDistance:Tc=0,children:Ko,onReconnect:ca,onReconnectStart:xi,onReconnectEnd:zc,onEdgeContextMenu:Jo,onEdgeDoubleClick:Wo,onEdgeMouseEnter:es,onEdgeMouseMove:fa,onEdgeMouseLeave:da,reconnectRadius:ts=10,onNodesChange:ns,onEdgesChange:Xn,noDragClassName:jt="nodrag",noWheelClassName:Gt="nowheel",noPanClassName:ar="nopan",fitView:ll,fitViewOptions:rs,connectOnClick:Ac,attributionPosition:is,proOptions:vi,defaultEdgeOptions:ha,elevateNodesOnSelect:Dr=!0,elevateEdgesOnSelect:Rr=!1,disableKeyboardA11y:Lr=!1,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:ls,connectionRadius:as,isValidConnection:or,onError:Br,style:Mc,id:pa,nodeDragThreshold:os,connectionDragThreshold:jc,viewport:al,onViewportChange:ol,width:Dn,height:Zt,colorMode:ss="light",debug:Oc,onScroll:qr,ariaLabelConfig:us,zIndexMode:bi="basic",...Dc},Kt){const wi=pa||"1",cs=dA(ss),ma=V.useCallback(sr=>{sr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),qr==null||qr(sr)},[qr]);return b.jsx("div",{"data-testid":"rf__wrapper",...Dc,onScroll:ma,style:{...Mc,...OM},ref:Kt,className:zt(["react-flow",a,cs]),id:pa,role:"application",children:b.jsxs(jM,{nodes:e,edges:n,width:Dn,height:Zt,fitView:ll,fitViewOptions:rs,minZoom:ue,maxZoom:ge,nodeOrigin:Rt,nodeExtent:Ye,zIndexMode:bi,children:[b.jsx(zM,{onInit:h,onNodeClick:f,onEdgeClick:d,onNodeMouseEnter:T,onNodeMouseMove:E,onNodeMouseLeave:z,onNodeContextMenu:I,onNodeDoubleClick:A,nodeTypes:s,edgeTypes:u,connectionLineType:P,connectionLineStyle:N,connectionLineComponent:G,connectionLineContainerStyle:F,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:J,multiSelectionKeyCode:ve,panActivationKeyCode:ye,zoomActivationKeyCode:xe,onlyRenderVisibleElements:Me,defaultViewport:Or,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:Re,zoomOnScroll:On,zoomOnPinch:Lt,zoomOnDoubleClick:Pn,panOnScroll:xt,panOnScrollSpeed:Vt,panOnScrollMode:Je,panOnDrag:un,onPaneClick:Cc,onPaneMouseEnter:tl,onPaneMouseMove:nl,onPaneMouseLeave:rl,onPaneScroll:lr,onPaneContextMenu:il,paneClickDistance:yi,nodeClickDistance:Tc,onSelectionContextMenu:Y,onSelectionStart:Q,onSelectionEnd:K,onReconnect:ca,onReconnectStart:xi,onReconnectEnd:zc,onEdgeContextMenu:Jo,onEdgeDoubleClick:Wo,onEdgeMouseEnter:es,onEdgeMouseMove:fa,onEdgeMouseLeave:da,reconnectRadius:ts,defaultMarkerColor:Xt,noDragClassName:jt,noWheelClassName:Gt,noPanClassName:ar,rfId:wi,disableKeyboardA11y:Lr,nodeExtent:Ye,viewport:al,onViewportChange:ol}),b.jsx(fA,{nodes:e,edges:n,defaultNodes:r,defaultEdges:l,onConnect:v,onConnectStart:w,onConnectEnd:k,onClickConnectStart:S,onClickConnectEnd:_,nodesDraggable:ut,autoPanOnNodeFocus:tt,nodesConnectable:At,nodesFocusable:It,edgesFocusable:Sn,edgesReconnectable:jn,elementsSelectable:Mt,elevateNodesOnSelect:Dr,elevateEdgesOnSelect:Rr,minZoom:ue,maxZoom:ge,nodeExtent:Ye,onNodesChange:ns,onEdgesChange:Xn,snapToGrid:pe,snapGrid:_e,connectionMode:H,translateExtent:Ne,connectOnClick:Ac,defaultEdgeOptions:ha,fitView:ll,fitViewOptions:rs,onNodesDelete:X,onEdgesDelete:B,onDelete:q,onNodeDragStart:R,onNodeDrag:D,onNodeDragStop:U,onSelectionDrag:$,onSelectionDragStart:L,onSelectionDragStop:M,onMove:m,onMoveStart:p,onMoveEnd:y,noPanClassName:ar,nodeOrigin:Rt,rfId:wi,autoPanOnConnect:Hr,autoPanOnNodeDrag:wt,autoPanSpeed:ls,onError:Br,connectionRadius:as,isValidConnection:or,selectNodesOnDrag:Ce,nodeDragThreshold:os,connectionDragThreshold:jc,onBeforeDelete:j,debug:Oc,ariaLabelConfig:us,zIndexMode:bi}),b.jsx(oA,{onSelectionChange:ee}),Ko,b.jsx(nA,{proOptions:vi,position:is}),b.jsx(tA,{rfId:wi,disableKeyboardA11y:Lr})]})})}var RM=dS(DM);const LM=e=>{var n;return(n=e.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function HM({children:e}){const n=Ge(LM);return n?Fz.createPortal(e,n):null}function BM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>cS(a,s)),[]);return[n,r,l]}function qM(e){const[n,r]=V.useState(e),l=V.useCallback(a=>r(s=>fS(a,s)),[]);return[n,r,l]}function UM({dimensions:e,lineWidth:n,variant:r,className:l}){return b.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:zt(["react-flow__background-pattern",r,l])})}function IM({radius:e,className:n}){return b.jsx("circle",{cx:e,cy:e,r:e,className:zt(["react-flow__background-pattern","dots",n])})}var zr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(zr||(zr={}));const VM={[zr.Dots]:1,[zr.Lines]:1,[zr.Cross]:6},GM=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function LS({id:e,variant:n=zr.Dots,gap:r=20,size:l,lineWidth:a=1,offset:s=0,color:u,bgColor:f,style:d,className:h,patternClassName:m}){const p=V.useRef(null),{transform:y,patternId:v}=Ge(GM,ht),w=l||VM[n],k=n===zr.Dots,S=n===zr.Cross,_=Array.isArray(r)?r:[r,r],T=[_[0]*y[2]||1,_[1]*y[2]||1],E=w*y[2],z=Array.isArray(s)?s:[s,s],I=S?[E,E]:T,A=[z[0]*y[2]||1+I[0]/2,z[1]*y[2]||1+I[1]/2],R=`${v}${e||""}`;return b.jsxs("svg",{className:zt(["react-flow__background",h]),style:{...d,...Sc,"--xy-background-color-props":f,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[b.jsx("pattern",{id:R,x:y[0]%T[0],y:y[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${A[0]},-${A[1]})`,children:k?b.jsx(IM,{radius:E/2,className:m}):b.jsx(UM,{dimensions:I,lineWidth:a,variant:n,className:m})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${R})`})]})}LS.displayName="Background";const YM=V.memo(LS);function $M(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function PM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function XM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function FM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function QM(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Ou({children:e,className:n,...r}){return b.jsx("button",{type:"button",className:zt(["react-flow__controls-button",n]),...r,children:e})}const ZM=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function HS({style:e,showZoom:n=!0,showFitView:r=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:s,onZoomOut:u,onFitView:f,onInteractiveChange:d,className:h,children:m,position:p="bottom-left",orientation:y="vertical","aria-label":v}){const w=pt(),{isInteractive:k,minZoomReached:S,maxZoomReached:_,ariaLabelConfig:T}=Ge(ZM,ht),{zoomIn:E,zoomOut:z,fitView:I}=Xo(),A=()=>{E(),s==null||s()},R=()=>{z(),u==null||u()},D=()=>{I(a),f==null||f()},U=()=>{w.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),d==null||d(!k)},X=y==="horizontal"?"horizontal":"vertical";return b.jsxs(wc,{className:zt(["react-flow__controls",X,h]),position:p,style:e,"data-testid":"rf__controls","aria-label":v??T["controls.ariaLabel"],children:[n&&b.jsxs(b.Fragment,{children:[b.jsx(Ou,{onClick:A,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:_,children:b.jsx($M,{})}),b.jsx(Ou,{onClick:R,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:S,children:b.jsx(PM,{})})]}),r&&b.jsx(Ou,{className:"react-flow__controls-fitview",onClick:D,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:b.jsx(XM,{})}),l&&b.jsx(Ou,{className:"react-flow__controls-interactive",onClick:U,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:k?b.jsx(QM,{}):b.jsx(FM,{})}),m]})}HS.displayName="Controls";const KM=V.memo(HS);function JM({id:e,x:n,y:r,width:l,height:a,style:s,color:u,strokeColor:f,strokeWidth:d,className:h,borderRadius:m,shapeRendering:p,selected:y,onClick:v}){const{background:w,backgroundColor:k}=s||{},S=u||w||k;return b.jsx("rect",{className:zt(["react-flow__minimap-node",{selected:y},h]),x:n,y:r,rx:m,ry:m,width:l,height:a,style:{fill:S,stroke:f,strokeWidth:d},shapeRendering:p,onClick:v?_=>v(_,e):void 0})}const WM=V.memo(JM),ej=e=>e.nodes.map(n=>n.id),uh=e=>e instanceof Function?e:()=>e;function tj({nodeStrokeColor:e,nodeColor:n,nodeClassName:r="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:s=WM,onClick:u}){const f=Ge(ej,ht),d=uh(n),h=uh(e),m=uh(r),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:f.map(y=>b.jsx(rj,{id:y,nodeColorFunc:d,nodeStrokeColorFunc:h,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:s,onClick:u,shapeRendering:p},y))})}function nj({id:e,nodeColorFunc:n,nodeStrokeColorFunc:r,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:u,NodeComponent:f,onClick:d}){const{node:h,x:m,y:p,width:y,height:v}=Ge(w=>{const k=w.nodeLookup.get(e);if(!k)return{node:void 0,x:0,y:0,width:0,height:0};const S=k.internals.userNode,{x:_,y:T}=k.internals.positionAbsolute,{width:E,height:z}=jr(S);return{node:S,x:_,y:T,width:E,height:z}},ht);return!h||h.hidden||!qw(h)?null:b.jsx(f,{x:m,y:p,width:y,height:v,style:h.style,selected:!!h.selected,className:l(h),color:n(h),borderRadius:a,strokeColor:r(h),strokeWidth:s,shapeRendering:u,onClick:d,id:h.id})}const rj=V.memo(nj);var ij=V.memo(tj);const lj=200,aj=150,oj=e=>!e.hidden,sj=e=>{const n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:e.nodeLookup.size>0?Bw(Yo(e.nodeLookup,{filter:oj}),n):n,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},uj="react-flow__minimap-desc";function BS({style:e,className:n,nodeStrokeColor:r,nodeColor:l,nodeClassName:a="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:f,bgColor:d,maskColor:h,maskStrokeColor:m,maskStrokeWidth:p,position:y="bottom-right",onClick:v,onNodeClick:w,pannable:k=!1,zoomable:S=!1,ariaLabel:_,inversePan:T,zoomStep:E=1,offsetScale:z=5}){const I=pt(),A=V.useRef(null),{boundingRect:R,viewBB:D,rfId:U,panZoom:X,translateExtent:B,flowWidth:q,flowHeight:ee,ariaLabelConfig:L}=Ge(sj,ht),$=(e==null?void 0:e.width)??lj,M=(e==null?void 0:e.height)??aj,Y=R.width/$,Q=R.height/M,K=Math.max(Y,Q),j=K*$,H=K*M,P=z*K,N=R.x-(j-R.width)/2-P,G=R.y-(H-R.height)/2-P,F=j+P*2,J=H+P*2,ne=`${uj}-${U}`,re=V.useRef(0),se=V.useRef();re.current=K,V.useEffect(()=>{if(A.current&&X)return se.current=wz({domNode:A.current,panZoom:X,getTransform:()=>I.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[X]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:B,width:q,height:ee,inversePan:T,pannable:k,zoomStep:E,zoomable:S})},[k,S,T,E,B,q,ee]);const ye=v?pe=>{var Ce;const[_e,Me]=((Ce=se.current)==null?void 0:Ce.pointer(pe))||[0,0];v(pe,{x:_e,y:Me})}:void 0,ve=w?V.useCallback((pe,_e)=>{const Me=I.getState().nodeLookup.get(_e).internals.userNode;w(pe,Me)},[]):void 0,xe=_??L["minimap.ariaLabel"];return b.jsx(wc,{position:y,style:{...e,"--xy-minimap-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*K:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:zt(["react-flow__minimap",n]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:$,height:M,viewBox:`${N} ${G} ${F} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:A,onClick:ye,children:[xe&&b.jsx("title",{id:ne,children:xe}),b.jsx(ij,{onClick:ve,nodeColor:l,nodeStrokeColor:r,nodeBorderRadius:s,nodeClassName:a,nodeStrokeWidth:u,nodeComponent:f}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${N-P},${G-P}h${F+P*2}v${J+P*2}h${-F-P*2}z - M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}BS.displayName="MiniMap";const cj=V.memo(BS),fj=e=>n=>e?`${Math.max(1/n.transform[2],1)}`:void 0,dj={[oa.Line]:"right",[oa.Handle]:"bottom-right"};function hj({nodeId:e,position:n,variant:r=oa.Handle,className:l,style:a=void 0,children:s,color:u,minWidth:f=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:y,autoScale:v=!0,shouldResize:w,onResizeStart:k,onResize:S,onResizeEnd:_}){const T=gS(),E=typeof e=="string"?e:T,z=pt(),I=V.useRef(null),A=r===oa.Handle,R=Ge(V.useCallback(fj(A&&v),[A,v]),ht),D=V.useRef(null),U=n??dj[r];V.useEffect(()=>{if(!(!I.current||!E))return D.current||(D.current=Rz({domNode:I.current,nodeId:E,getStoreItems:()=>{const{nodeLookup:B,transform:q,snapGrid:ee,snapToGrid:L,nodeOrigin:$,domNode:M}=z.getState();return{nodeLookup:B,transform:q,snapGrid:ee,snapToGrid:L,nodeOrigin:$,paneDomNode:M}},onChange:(B,q)=>{const{triggerNodeChanges:ee,nodeLookup:L,parentLookup:$,nodeOrigin:M}=z.getState(),Y=[],Q={x:B.x,y:B.y},K=L.get(E);if(K&&K.expandParent&&K.parentId){const j=K.origin??M,H=B.width??K.measured.width??0,P=B.height??K.measured.height??0,N={id:K.id,parentId:K.parentId,rect:{width:H,height:P,...Uw({x:B.x??K.position.x,y:B.y??K.position.y},{width:H,height:P},K.parentId,L,j)}},G=hm([N],L,$,M);Y.push(...G),Q.x=B.x?Math.max(j[0]*H,B.x):void 0,Q.y=B.y?Math.max(j[1]*P,B.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const j={id:E,type:"position",position:{...Q}};Y.push(j)}if(B.width!==void 0&&B.height!==void 0){const H={id:E,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:B.width,height:B.height}};Y.push(H)}for(const j of q){const H={...j,type:"position"};Y.push(H)}ee(Y)},onEnd:({width:B,height:q})=>{const ee={id:E,type:"dimensions",resizing:!1,dimensions:{width:B,height:q}};z.getState().triggerNodeChanges([ee])}})),D.current.update({controlPosition:U,boundaries:{minWidth:f,minHeight:d,maxWidth:h,maxHeight:m},keepAspectRatio:p,resizeDirection:y,onResizeStart:k,onResize:S,onResizeEnd:_,shouldResize:w}),()=>{var B;(B=D.current)==null||B.destroy()}},[U,f,d,h,m,p,k,S,_,w]);const X=U.split("-");return b.jsx("div",{className:zt(["react-flow__resize-control","nodrag",...X,r,l]),ref:I,style:{...a,scale:R,...u&&{[A?"backgroundColor":"borderColor"]:u}},children:s})}V.memo(hj);var ch,Vv;function mm(){if(Vv)return ch;Vv=1;var e="\0",n="\0",r="";class l{constructor(m){kt(this,"_isDirected",!0);kt(this,"_isMultigraph",!1);kt(this,"_isCompound",!1);kt(this,"_label");kt(this,"_defaultNodeLabelFn",()=>{});kt(this,"_defaultEdgeLabelFn",()=>{});kt(this,"_nodes",{});kt(this,"_in",{});kt(this,"_preds",{});kt(this,"_out",{});kt(this,"_sucs",{});kt(this,"_edgeObjs",{});kt(this,"_edgeLabels",{});kt(this,"_nodeCount",0);kt(this,"_edgeCount",0);kt(this,"_parent");kt(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var y=arguments,v=this;return m.forEach(function(w){y.length>1?v.setNode(w,p):v.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=n,this._children[m]={},this._children[n][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var y=v=>p.removeEdge(p._edgeObjs[v]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(v){p.setParent(v)}),delete this._children[m]),Object.keys(this._in[m]).forEach(y),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(y),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=n;else{p+="";for(var y=p;y!==void 0;y=this.parent(y))if(y===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==n)return p}}children(m=n){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===n)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const v=new Set(p);for(var y of this.successors(m))v.add(y);return Array.from(v.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var y=this;Object.entries(this._nodes).forEach(function([k,S]){m(k)&&p.setNode(k,S)}),Object.values(this._edgeObjs).forEach(function(k){p.hasNode(k.v)&&p.hasNode(k.w)&&p.setEdge(k,y.edge(k))});var v={};function w(k){var S=y.parent(k);return S===void 0||p.hasNode(S)?(v[k]=S,S):S in v?v[S]:w(S)}return this._isCompound&&p.nodes().forEach(k=>p.setParent(k,w(k))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var y=this,v=arguments;return m.reduce(function(w,k){return v.length>1?y.setEdge(w,k,p):y.setEdge(w,k),k}),this}setEdge(){var m,p,y,v,w=!1,k=arguments[0];typeof k=="object"&&k!==null&&"v"in k?(m=k.v,p=k.w,y=k.name,arguments.length===2&&(v=arguments[1],w=!0)):(m=k,p=arguments[1],y=arguments[3],arguments.length>2&&(v=arguments[2],w=!0)),m=""+m,p=""+p,y!==void 0&&(y=""+y);var S=u(this._isDirected,m,p,y);if(Object.hasOwn(this._edgeLabels,S))return w&&(this._edgeLabels[S]=v),this;if(y!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[S]=w?v:this._defaultEdgeLabelFn(m,p,y);var _=f(this._isDirected,m,p,y);return m=_.v,p=_.w,Object.freeze(_),this._edgeObjs[S]=_,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][S]=_,this._out[m][S]=_,this._edgeCount++,this}edge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return this._edgeLabels[v]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y);return Object.hasOwn(this._edgeLabels,v)}removeEdge(m,p,y){var v=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,y),w=this._edgeObjs[v];return w&&(m=w.v,p=w.w,delete this._edgeLabels[v],delete this._edgeObjs[v],s(this._preds[p],m),s(this._sucs[m],p),delete this._in[p][v],delete this._out[m][v],this._edgeCount--),this}inEdges(m,p){var y=this._in[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.v===p):v}}outEdges(m,p){var y=this._out[m];if(y){var v=Object.values(y);return p?v.filter(w=>w.w===p):v}}nodeEdges(m,p){var y=this.inEdges(m,p);if(y)return y.concat(this.outEdges(m,p))}}function a(h,m){h[m]?h[m]++:h[m]=1}function s(h,m){--h[m]||delete h[m]}function u(h,m,p,y){var v=""+m,w=""+p;if(!h&&v>w){var k=v;v=w,w=k}return v+r+w+r+(y===void 0?e:y)}function f(h,m,p,y){var v=""+m,w=""+p;if(!h&&v>w){var k=v;v=w,w=k}var S={v,w};return y&&(S.name=y),S}function d(h,m){return u(h,m.v,m.w,m.name)}return ch=l,ch}var fh,Gv;function pj(){return Gv||(Gv=1,fh="2.2.4"),fh}var dh,Yv;function mj(){return Yv||(Yv=1,dh={Graph:mm(),version:pj()}),dh}var hh,$v;function gj(){if($v)return hh;$v=1;var e=mm();hh={write:n,read:a};function n(s){var u={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:r(s),edges:l(s)};return s.graph()!==void 0&&(u.value=structuredClone(s.graph())),u}function r(s){return s.nodes().map(function(u){var f=s.node(u),d=s.parent(u),h={v:u};return f!==void 0&&(h.value=f),d!==void 0&&(h.parent=d),h})}function l(s){return s.edges().map(function(u){var f=s.edge(u),d={v:u.v,w:u.w};return u.name!==void 0&&(d.name=u.name),f!==void 0&&(d.value=f),d})}function a(s){var u=new e(s.options).setGraph(s.value);return s.nodes.forEach(function(f){u.setNode(f.v,f.value),f.parent&&u.setParent(f.v,f.parent)}),s.edges.forEach(function(f){u.setEdge({v:f.v,w:f.w,name:f.name},f.value)}),u}return hh}var ph,Pv;function yj(){if(Pv)return ph;Pv=1,ph=e;function e(n){var r={},l=[],a;function s(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),n.successors(u).forEach(s),n.predecessors(u).forEach(s))}return n.nodes().forEach(function(u){a=[],s(u),a.length&&l.push(a)}),l}return ph}var mh,Xv;function qS(){if(Xv)return mh;Xv=1;class e{constructor(){kt(this,"_arr",[]);kt(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var s=this._arr,u=s.length;return a[r]=u,s.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,s=a+1,u=r;a>1,!(l[s].priority1;function r(a,s,u,f){return l(a,String(s),u||n,f||function(d){return a.outEdges(d)})}function l(a,s,u,f){var d={},h=new e,m,p,y=function(v){var w=v.v!==m?v.v:v.w,k=d[w],S=u(v),_=p.distance+S;if(S<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+S);_0&&(m=h.removeMin(),p=d[m],p.distance!==Number.POSITIVE_INFINITY);)f(m).forEach(y);return d}return gh}var yh,Qv;function xj(){if(Qv)return yh;Qv=1;var e=US();yh=n;function n(r,l,a){return r.nodes().reduce(function(s,u){return s[u]=e(r,u,l,a),s},{})}return yh}var xh,Zv;function IS(){if(Zv)return xh;Zv=1,xh=e;function e(n){var r=0,l=[],a={},s=[];function u(f){var d=a[f]={onStack:!0,lowlink:r,index:r++};if(l.push(f),n.successors(f).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(d.lowlink=Math.min(d.lowlink,a[p].index)):(u(p),d.lowlink=Math.min(d.lowlink,a[p].lowlink))}),d.lowlink===d.index){var h=[],m;do m=l.pop(),a[m].onStack=!1,h.push(m);while(f!==m);s.push(h)}}return n.nodes().forEach(function(f){Object.hasOwn(a,f)||u(f)}),s}return xh}var vh,Kv;function vj(){if(Kv)return vh;Kv=1;var e=IS();vh=n;function n(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return vh}var bh,Jv;function bj(){if(Jv)return bh;Jv=1,bh=n;var e=()=>1;function n(l,a,s){return r(l,a||e,s||function(u){return l.outEdges(u)})}function r(l,a,s){var u={},f=l.nodes();return f.forEach(function(d){u[d]={},u[d][d]={distance:0},f.forEach(function(h){d!==h&&(u[d][h]={distance:Number.POSITIVE_INFINITY})}),s(d).forEach(function(h){var m=h.v===d?h.w:h.v,p=a(h);u[d][m]={distance:p,predecessor:d}})}),f.forEach(function(d){var h=u[d];f.forEach(function(m){var p=u[m];f.forEach(function(y){var v=p[d],w=h[y],k=p[y],S=v.distance+w.distance;Sa.successors(p):p=>a.neighbors(p),d=u==="post"?n:r,h=[],m={};return s.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);d(p,f,m,h)}),h}function n(a,s,u,f){for(var d=[[a,!1]];d.length>0;){var h=d.pop();h[1]?f.push(h[0]):Object.hasOwn(u,h[0])||(u[h[0]]=!0,d.push([h[0],!0]),l(s(h[0]),m=>d.push([m,!1])))}}function r(a,s,u,f){for(var d=[a];d.length>0;){var h=d.pop();Object.hasOwn(u,h)||(u[h]=!0,f.push(h),l(s(h),m=>d.push(m)))}}function l(a,s){for(var u=a.length;u--;)s(a[u],u,a);return a}return _h}var Eh,n1;function Sj(){if(n1)return Eh;n1=1;var e=GS();Eh=n;function n(r,l){return e(r,l,"post")}return Eh}var Nh,r1;function _j(){if(r1)return Nh;r1=1;var e=GS();Nh=n;function n(r,l){return e(r,l,"pre")}return Nh}var kh,i1;function Ej(){if(i1)return kh;i1=1;var e=mm(),n=qS();kh=r;function r(l,a){var s=new e,u={},f=new n,d;function h(p){var y=p.v===d?p.w:p.v,v=f.priority(y);if(v!==void 0){var w=a(p);w0;){if(d=f.removeMin(),Object.hasOwn(u,d))s.setEdge(d,u[d]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(d).forEach(h)}return s}return kh}var Ch,l1;function Nj(){return l1||(l1=1,Ch={components:yj(),dijkstra:US(),dijkstraAll:xj(),findCycles:vj(),floydWarshall:bj(),isAcyclic:wj(),postorder:Sj(),preorder:_j(),prim:Ej(),tarjan:IS(),topsort:VS()}),Ch}var Th,a1;function Yn(){if(a1)return Th;a1=1;var e=mj();return Th={Graph:e.Graph,json:gj(),alg:Nj(),version:e.version},Th}var zh,o1;function kj(){if(o1)return zh;o1=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,s=a._prev;if(s!==a)return n(s),s}enqueue(a){let s=this._sentinel;a._prev&&a._next&&n(a),a._next=s._next,s._next._prev=a,s._next=a,a._prev=s}toString(){let a=[],s=this._sentinel,u=s._prev;for(;u!==s;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function n(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return zh=e,zh}var Ah,s1;function Cj(){if(s1)return Ah;s1=1;let e=Yn().Graph,n=kj();Ah=l;let r=()=>1;function l(h,m){if(h.nodeCount()<=1)return[];let p=u(h,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(v=>h.outEdges(v.v,v.w))}function a(h,m,p){let y=[],v=m[m.length-1],w=m[0],k;for(;h.nodeCount();){for(;k=w.dequeue();)s(h,m,p,k);for(;k=v.dequeue();)s(h,m,p,k);if(h.nodeCount()){for(let S=m.length-2;S>0;--S)if(k=m[S].dequeue(),k){y=y.concat(s(h,m,p,k,!0));break}}}return y}function s(h,m,p,y,v){let w=v?[]:void 0;return h.inEdges(y.v).forEach(k=>{let S=h.edge(k),_=h.node(k.v);v&&w.push({v:k.v,w:k.w}),_.out-=S,f(m,p,_)}),h.outEdges(y.v).forEach(k=>{let S=h.edge(k),_=k.w,T=h.node(_);T.in-=S,f(m,p,T)}),h.removeNode(y.v),w}function u(h,m){let p=new e,y=0,v=0;h.nodes().forEach(S=>{p.setNode(S,{v:S,in:0,out:0})}),h.edges().forEach(S=>{let _=p.edge(S.v,S.w)||0,T=m(S),E=_+T;p.setEdge(S.v,S.w,E),v=Math.max(v,p.node(S.v).out+=T),y=Math.max(y,p.node(S.w).in+=T)});let w=d(v+y+3).map(()=>new n),k=y+1;return p.nodes().forEach(S=>{f(w,k,p.node(S))}),{graph:p,buckets:w,zeroIdx:k}}function f(h,m,p){p.out?p.in?h[p.out-p.in+m].enqueue(p):h[h.length-1].enqueue(p):h[0].enqueue(p)}function d(h){const m=[];for(let p=0;pU.setNode(X,D.node(X))),D.edges().forEach(X=>{let B=U.edge(X.v,X.w)||{weight:0,minlen:1},q=D.edge(X);U.setEdge(X.v,X.w,{weight:B.weight+q.weight,minlen:Math.max(B.minlen,q.minlen)})}),U}function l(D){let U=new e({multigraph:D.isMultigraph()}).setGraph(D.graph());return D.nodes().forEach(X=>{D.children(X).length||U.setNode(X,D.node(X))}),D.edges().forEach(X=>{U.setEdge(X,D.edge(X))}),U}function a(D){let U=D.nodes().map(X=>{let B={};return D.outEdges(X).forEach(q=>{B[q.w]=(B[q.w]||0)+D.edge(q).weight}),B});return R(D.nodes(),U)}function s(D){let U=D.nodes().map(X=>{let B={};return D.inEdges(X).forEach(q=>{B[q.v]=(B[q.v]||0)+D.edge(q).weight}),B});return R(D.nodes(),U)}function u(D,U){let X=D.x,B=D.y,q=U.x-X,ee=U.y-B,L=D.width/2,$=D.height/2;if(!q&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let M,Y;return Math.abs(ee)*L>Math.abs(q)*$?(ee<0&&($=-$),M=$*q/ee,Y=$):(q<0&&(L=-L),M=L,Y=L*ee/q),{x:X+M,y:B+Y}}function f(D){let U=z(w(D)+1).map(()=>[]);return D.nodes().forEach(X=>{let B=D.node(X),q=B.rank;q!==void 0&&(U[q][B.order]=X)}),U}function d(D){let U=D.nodes().map(B=>{let q=D.node(B).rank;return q===void 0?Number.MAX_VALUE:q}),X=v(Math.min,U);D.nodes().forEach(B=>{let q=D.node(B);Object.hasOwn(q,"rank")&&(q.rank-=X)})}function h(D){let U=D.nodes().map(L=>D.node(L).rank),X=v(Math.min,U),B=[];D.nodes().forEach(L=>{let $=D.node(L).rank-X;B[$]||(B[$]=[]),B[$].push(L)});let q=0,ee=D.graph().nodeRankFactor;Array.from(B).forEach((L,$)=>{L===void 0&&$%ee!==0?--q:L!==void 0&&q&&L.forEach(M=>D.node(M).rank+=q)})}function m(D,U,X,B){let q={width:0,height:0};return arguments.length>=4&&(q.rank=X,q.order=B),n(D,"border",q,U)}function p(D,U=y){const X=[];for(let B=0;By){const X=p(U);return D.apply(null,X.map(B=>D.apply(null,B)))}else return D.apply(null,U)}function w(D){const X=D.nodes().map(B=>{let q=D.node(B).rank;return q===void 0?Number.MIN_VALUE:q});return v(Math.max,X)}function k(D,U){let X={lhs:[],rhs:[]};return D.forEach(B=>{U(B)?X.lhs.push(B):X.rhs.push(B)}),X}function S(D,U){let X=Date.now();try{return U()}finally{console.log(D+" time: "+(Date.now()-X)+"ms")}}function _(D,U){return U()}let T=0;function E(D){var U=++T;return D+(""+U)}function z(D,U,X=1){U==null&&(U=D,D=0);let B=ee=>eeUB[U]),Object.entries(D).reduce((B,[q,ee])=>(B[q]=X(ee,q),B),{})}function R(D,U){return D.reduce((X,B,q)=>(X[B]=U[q],X),{})}return Mh}var jh,c1;function Tj(){if(c1)return jh;c1=1;let e=Cj(),n=Tt().uniqueId;jh={run:r,undo:a};function r(s){(s.graph().acyclicer==="greedy"?e(s,f(s)):l(s)).forEach(d=>{let h=s.edge(d);s.removeEdge(d),h.forwardName=d.name,h.reversed=!0,s.setEdge(d.w,d.v,h,n("rev"))});function f(d){return h=>d.edge(h).weight}}function l(s){let u=[],f={},d={};function h(m){Object.hasOwn(d,m)||(d[m]=!0,f[m]=!0,s.outEdges(m).forEach(p=>{Object.hasOwn(f,p.w)?u.push(p):h(p.w)}),delete f[m])}return s.nodes().forEach(h),u}function a(s){s.edges().forEach(u=>{let f=s.edge(u);if(f.reversed){s.removeEdge(u);let d=f.forwardName;delete f.reversed,delete f.forwardName,s.setEdge(u.w,u.v,f,d)}})}return jh}var Oh,f1;function zj(){if(f1)return Oh;f1=1;let e=Tt();Oh={run:n,undo:l};function n(a){a.graph().dummyChains=[],a.edges().forEach(s=>r(a,s))}function r(a,s){let u=s.v,f=a.node(u).rank,d=s.w,h=a.node(d).rank,m=s.name,p=a.edge(s),y=p.labelRank;if(h===f+1)return;a.removeEdge(s);let v,w,k;for(k=0,++f;f{let u=a.node(s),f=u.edgeLabel,d;for(a.setEdge(u.edgeObj,f);u.dummy;)d=a.successors(s)[0],a.removeNode(s),f.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(f.x=u.x,f.y=u.y,f.width=u.width,f.height=u.height),s=d,u=a.node(s)})}return Oh}var Dh,d1;function lc(){if(d1)return Dh;d1=1;const{applyWithChunking:e}=Tt();Dh={longestPath:n,slack:r};function n(l){var a={};function s(u){var f=l.node(u);if(Object.hasOwn(a,u))return f.rank;a[u]=!0;let d=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:s(m.w)-l.edge(m).minlen);var h=e(Math.min,d);return h===Number.POSITIVE_INFINITY&&(h=0),f.rank=h}l.sources().forEach(s)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Dh}var Rh,h1;function YS(){if(h1)return Rh;h1=1;var e=Yn().Graph,n=lc().slack;Rh=r;function r(u){var f=new e({directed:!1}),d=u.nodes()[0],h=u.nodeCount();f.setNode(d,{});for(var m,p;l(f,u){var p=m.v,y=h===p?m.w:p;!u.hasNode(y)&&!n(f,m)&&(u.setNode(y,{}),u.setEdge(h,y,{}),d(y))})}return u.nodes().forEach(d),u.nodeCount()}function a(u,f){return f.edges().reduce((h,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=n(f,m)),pf.node(h).rank+=d)}return Rh}var Lh,p1;function Aj(){if(p1)return Lh;p1=1;var e=YS(),n=lc().slack,r=lc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,s=Tt().simplify;Lh=u,u.initLowLimValues=m,u.initCutValues=f,u.calcCutValue=h,u.leaveEdge=y,u.enterEdge=v,u.exchangeEdges=w;function u(T){T=s(T),r(T);var E=e(T);m(E),f(E,T);for(var z,I;z=y(E);)I=v(E,T,z),w(E,T,z,I)}function f(T,E){var z=a(T,T.nodes());z=z.slice(0,z.length-1),z.forEach(I=>d(T,E,I))}function d(T,E,z){var I=T.node(z),A=I.parent;T.edge(z,A).cutvalue=h(T,E,z)}function h(T,E,z){var I=T.node(z),A=I.parent,R=!0,D=E.edge(z,A),U=0;return D||(R=!1,D=E.edge(A,z)),U=D.weight,E.nodeEdges(z).forEach(X=>{var B=X.v===z,q=B?X.w:X.v;if(q!==A){var ee=B===R,L=E.edge(X).weight;if(U+=ee?L:-L,S(T,z,q)){var $=T.edge(z,q).cutvalue;U+=ee?-$:$}}}),U}function m(T,E){arguments.length<2&&(E=T.nodes()[0]),p(T,{},1,E)}function p(T,E,z,I,A){var R=z,D=T.node(I);return E[I]=!0,T.neighbors(I).forEach(U=>{Object.hasOwn(E,U)||(z=p(T,E,z,U,I))}),D.low=R,D.lim=z++,A?D.parent=A:delete D.parent,z}function y(T){return T.edges().find(E=>T.edge(E).cutvalue<0)}function v(T,E,z){var I=z.v,A=z.w;E.hasEdge(I,A)||(I=z.w,A=z.v);var R=T.node(I),D=T.node(A),U=R,X=!1;R.lim>D.lim&&(U=D,X=!0);var B=E.edges().filter(q=>X===_(T,T.node(q.v),U)&&X!==_(T,T.node(q.w),U));return B.reduce((q,ee)=>n(E,ee)!E.node(A).parent),I=l(T,z);I=I.slice(1),I.forEach(A=>{var R=T.node(A).parent,D=E.edge(A,R),U=!1;D||(D=E.edge(R,A),U=!0),E.node(A).rank=E.node(R).rank+(U?D.minlen:-D.minlen)})}function S(T,E,z){return T.hasEdge(E,z)}function _(T,E,z){return z.low<=E.lim&&E.lim<=z.lim}return Lh}var Hh,m1;function Mj(){if(m1)return Hh;m1=1;var e=lc(),n=e.longestPath,r=YS(),l=Aj();Hh=a;function a(d){var h=d.graph().ranker;if(h instanceof Function)return h(d);switch(d.graph().ranker){case"network-simplex":f(d);break;case"tight-tree":u(d);break;case"longest-path":s(d);break;case"none":break;default:f(d)}}var s=n;function u(d){n(d),r(d)}function f(d){l(d)}return Hh}var Bh,g1;function jj(){if(g1)return Bh;g1=1,Bh=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(s=>{let u=l.node(s),f=u.edgeObj,d=n(l,a,f.v,f.w),h=d.path,m=d.lca,p=0,y=h[p],v=!0;for(;s!==f.w;){if(u=l.node(s),v){for(;(y=h[p])!==m&&l.node(y).maxRankh||m>a[p].lim));for(y=p,p=u;(p=l.parent(p))!==y;)d.push(p);return{path:f.concat(d.reverse()),lca:y}}function r(l){let a={},s=0;function u(f){let d=s;l.children(f).forEach(u),a[f]={low:d,lim:s++}}return l.children().forEach(u),a}return Bh}var qh,y1;function Oj(){if(y1)return qh;y1=1;let e=Tt();qh={run:n,cleanup:s};function n(u){let f=e.addDummyNode(u,"root",{},"_root"),d=l(u),h=Object.values(d),m=e.applyWithChunking(Math.max,h)-1,p=2*m+1;u.graph().nestingRoot=f,u.edges().forEach(v=>u.edge(v).minlen*=p);let y=a(u)+1;u.children().forEach(v=>r(u,f,p,y,m,d,v)),u.graph().nodeRankFactor=p}function r(u,f,d,h,m,p,y){let v=u.children(y);if(!v.length){y!==f&&u.setEdge(f,y,{weight:0,minlen:d});return}let w=e.addBorderNode(u,"_bt"),k=e.addBorderNode(u,"_bb"),S=u.node(y);u.setParent(w,y),S.borderTop=w,u.setParent(k,y),S.borderBottom=k,v.forEach(_=>{r(u,f,d,h,m,p,_);let T=u.node(_),E=T.borderTop?T.borderTop:_,z=T.borderBottom?T.borderBottom:_,I=T.borderTop?h:2*h,A=E!==z?1:m-p[y]+1;u.setEdge(w,E,{weight:I,minlen:A,nestingEdge:!0}),u.setEdge(z,k,{weight:I,minlen:A,nestingEdge:!0})}),u.parent(y)||u.setEdge(f,w,{weight:0,minlen:m+p[y]})}function l(u){var f={};function d(h,m){var p=u.children(h);p&&p.length&&p.forEach(y=>d(y,m+1)),f[h]=m}return u.children().forEach(h=>d(h,1)),f}function a(u){return u.edges().reduce((f,d)=>f+u.edge(d).weight,0)}function s(u){var f=u.graph();u.removeNode(f.nestingRoot),delete f.nestingRoot,u.edges().forEach(d=>{var h=u.edge(d);h.nestingEdge&&u.removeEdge(d)})}return qh}var Uh,x1;function Dj(){if(x1)return Uh;x1=1;let e=Tt();Uh=n;function n(l){function a(s){let u=l.children(s),f=l.node(s);if(u.length&&u.forEach(a),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let d=f.minRank,h=f.maxRank+1;dl(d.node(h))),d.edges().forEach(h=>l(d.edge(h)))}function l(d){let h=d.width;d.width=d.height,d.height=h}function a(d){d.nodes().forEach(h=>s(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(s),Object.hasOwn(m,"y")&&s(m)})}function s(d){d.y=-d.y}function u(d){d.nodes().forEach(h=>f(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(f),Object.hasOwn(m,"x")&&f(m)})}function f(d){let h=d.x;d.x=d.y,d.y=h}return Ih}var Vh,b1;function Lj(){if(b1)return Vh;b1=1;let e=Tt();Vh=n;function n(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),s=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,s),f=e.range(u+1).map(()=>[]);function d(m){if(l[m])return;l[m]=!0;let p=r.node(m);f[p.rank].push(m),r.successors(m).forEach(d)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(d),f}return Vh}var Gh,w1;function Hj(){if(w1)return Gh;w1=1;let e=Tt().zipObject;Gh=n;function n(l,a){let s=0;for(let u=1;uv)),f=a.flatMap(y=>l.outEdges(y).map(v=>({pos:u[v.w],weight:l.edge(v).weight})).sort((v,w)=>v.pos-w.pos)),d=1;for(;d{let v=y.pos+d;m[v]+=y.weight;let w=0;for(;v>0;)v%2&&(w+=m[v+1]),v=v-1>>1,m[v]+=y.weight;p+=y.weight*w}),p}return Gh}var Yh,S1;function Bj(){if(S1)return Yh;S1=1,Yh=e;function e(n,r=[]){return r.map(l=>{let a=n.inEdges(l);if(a.length){let s=a.reduce((u,f)=>{let d=n.edge(f),h=n.node(f.v);return{sum:u.sum+d.weight*h.order,weight:u.weight+d.weight}},{sum:0,weight:0});return{v:l,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:l}})}return Yh}var $h,_1;function qj(){if(_1)return $h;_1=1;let e=Tt();$h=n;function n(a,s){let u={};a.forEach((d,h)=>{let m=u[d.v]={indegree:0,in:[],out:[],vs:[d.v],i:h};d.barycenter!==void 0&&(m.barycenter=d.barycenter,m.weight=d.weight)}),s.edges().forEach(d=>{let h=u[d.v],m=u[d.w];h!==void 0&&m!==void 0&&(m.indegree++,h.out.push(u[d.w]))});let f=Object.values(u).filter(d=>!d.indegree);return r(f)}function r(a){let s=[];function u(d){return h=>{h.merged||(h.barycenter===void 0||d.barycenter===void 0||h.barycenter>=d.barycenter)&&l(d,h)}}function f(d){return h=>{h.in.push(d),--h.indegree===0&&a.push(h)}}for(;a.length;){let d=a.pop();s.push(d),d.in.reverse().forEach(u(d)),d.out.forEach(f(d))}return s.filter(d=>!d.merged).map(d=>e.pick(d,["vs","i","barycenter","weight"]))}function l(a,s){let u=0,f=0;a.weight&&(u+=a.barycenter*a.weight,f+=a.weight),s.weight&&(u+=s.barycenter*s.weight,f+=s.weight),a.vs=s.vs.concat(a.vs),a.barycenter=u/f,a.weight=f,a.i=Math.min(s.i,a.i),s.merged=!0}return $h}var Ph,E1;function Uj(){if(E1)return Ph;E1=1;let e=Tt();Ph=n;function n(a,s){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),f=u.lhs,d=u.rhs.sort((w,k)=>k.i-w.i),h=[],m=0,p=0,y=0;f.sort(l(!!s)),y=r(h,d,y),f.forEach(w=>{y+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,y=r(h,d,y)});let v={vs:h.flat(!0)};return p&&(v.barycenter=m/p,v.weight=p),v}function r(a,s,u){let f;for(;s.length&&(f=s[s.length-1]).i<=u;)s.pop(),a.push(f.vs),u++;return u}function l(a){return(s,u)=>s.barycenteru.barycenter?1:a?u.i-s.i:s.i-u.i}return Ph}var Xh,N1;function Ij(){if(N1)return Xh;N1=1;let e=Bj(),n=qj(),r=Uj();Xh=l;function l(u,f,d,h){let m=u.children(f),p=u.node(f),y=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,w={};y&&(m=m.filter(T=>T!==y&&T!==v));let k=e(u,m);k.forEach(T=>{if(u.children(T.v).length){let E=l(u,T.v,d,h);w[T.v]=E,Object.hasOwn(E,"barycenter")&&s(T,E)}});let S=n(k,d);a(S,w);let _=r(S,h);if(y&&(_.vs=[y,_.vs,v].flat(!0),u.predecessors(y).length)){let T=u.node(u.predecessors(y)[0]),E=u.node(u.predecessors(v)[0]);Object.hasOwn(_,"barycenter")||(_.barycenter=0,_.weight=0),_.barycenter=(_.barycenter*_.weight+T.order+E.order)/(_.weight+2),_.weight+=2}return _}function a(u,f){u.forEach(d=>{d.vs=d.vs.flatMap(h=>f[h]?f[h].vs:h)})}function s(u,f){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+f.barycenter*f.weight)/(u.weight+f.weight),u.weight+=f.weight):(u.barycenter=f.barycenter,u.weight=f.weight)}return Xh}var Fh,k1;function Vj(){if(k1)return Fh;k1=1;let e=Yn().Graph,n=Tt();Fh=r;function r(a,s,u,f){f||(f=a.nodes());let d=l(a),h=new e({compound:!0}).setGraph({root:d}).setDefaultNodeLabel(m=>a.node(m));return f.forEach(m=>{let p=a.node(m),y=a.parent(m);(p.rank===s||p.minRank<=s&&s<=p.maxRank)&&(h.setNode(m),h.setParent(m,y||d),a[u](m).forEach(v=>{let w=v.v===m?v.w:v.v,k=h.edge(w,m),S=k!==void 0?k.weight:0;h.setEdge(w,m,{weight:a.edge(v).weight+S})}),Object.hasOwn(p,"minRank")&&h.setNode(m,{borderLeft:p.borderLeft[s],borderRight:p.borderRight[s]}))}),h}function l(a){for(var s;a.hasNode(s=n.uniqueId("_root")););return s}return Fh}var Qh,C1;function Gj(){if(C1)return Qh;C1=1,Qh=e;function e(n,r,l){let a={},s;l.forEach(u=>{let f=n.parent(u),d,h;for(;f;){if(d=n.parent(f),d?(h=a[d],a[d]=f):(h=s,s=f),h&&h!==f){r.setEdge(h,f);return}f=d}})}return Qh}var Zh,T1;function Yj(){if(T1)return Zh;T1=1;let e=Lj(),n=Hj(),r=Ij(),l=Vj(),a=Gj(),s=Yn().Graph,u=Tt();Zh=f;function f(p,y){if(y&&typeof y.customOrder=="function"){y.customOrder(p,f);return}let v=u.maxRank(p),w=d(p,u.range(1,v+1),"inEdges"),k=d(p,u.range(v-1,-1,-1),"outEdges"),S=e(p);if(m(p,S),y&&y.disableOptimalOrderHeuristic)return;let _=Number.POSITIVE_INFINITY,T;for(let E=0,z=0;z<4;++E,++z){h(E%2?w:k,E%4>=2),S=u.buildLayerMatrix(p);let I=n(p,S);I<_&&(z=0,T=Object.assign({},S),_=I)}m(p,T)}function d(p,y,v){const w=new Map,k=(S,_)=>{w.has(S)||w.set(S,[]),w.get(S).push(_)};for(const S of p.nodes()){const _=p.node(S);if(typeof _.rank=="number"&&k(_.rank,S),typeof _.minRank=="number"&&typeof _.maxRank=="number")for(let T=_.minRank;T<=_.maxRank;T++)T!==_.rank&&k(T,S)}return y.map(function(S){return l(p,S,v,w.get(S)||[])})}function h(p,y){let v=new s;p.forEach(function(w){let k=w.graph().root,S=r(w,k,v,y);S.vs.forEach((_,T)=>w.node(_).order=T),a(w,v,S.vs)})}function m(p,y){Object.values(y).forEach(v=>v.forEach((w,k)=>p.node(w).order=k))}return Zh}var Kh,z1;function $j(){if(z1)return Kh;z1=1;let e=Yn().Graph,n=Tt();Kh={positionX:v,findType1Conflicts:r,findType2Conflicts:l,addConflict:s,hasConflict:u,verticalAlignment:f,horizontalCompaction:d,alignCoordinates:p,findSmallestWidthAlignment:m,balance:y};function r(S,_){let T={};function E(z,I){let A=0,R=0,D=z.length,U=I[I.length-1];return I.forEach((X,B)=>{let q=a(S,X),ee=q?S.node(q).order:D;(q||X===U)&&(I.slice(R,B+1).forEach(L=>{S.predecessors(L).forEach($=>{let M=S.node($),Y=M.order;(Y{X=I[B],S.node(X).dummy&&S.predecessors(X).forEach(q=>{let ee=S.node(q);ee.dummy&&(ee.orderU)&&s(T,q,X)})})}function z(I,A){let R=-1,D,U=0;return A.forEach((X,B)=>{if(S.node(X).dummy==="border"){let q=S.predecessors(X);q.length&&(D=S.node(q[0]).order,E(A,U,B,R,D),U=B,R=D)}E(A,U,A.length,D,I.length)}),A}return _.length&&_.reduce(z),T}function a(S,_){if(S.node(_).dummy)return S.predecessors(_).find(T=>S.node(T).dummy)}function s(S,_,T){if(_>T){let z=_;_=T,T=z}let E=S[_];E||(S[_]=E={}),E[T]=!0}function u(S,_,T){if(_>T){let E=_;_=T,T=E}return!!S[_]&&Object.hasOwn(S[_],T)}function f(S,_,T,E){let z={},I={},A={};return _.forEach(R=>{R.forEach((D,U)=>{z[D]=D,I[D]=D,A[D]=U})}),_.forEach(R=>{let D=-1;R.forEach(U=>{let X=E(U);if(X.length){X=X.sort((q,ee)=>A[q]-A[ee]);let B=(X.length-1)/2;for(let q=Math.floor(B),ee=Math.ceil(B);q<=ee;++q){let L=X[q];I[U]===U&&DMath.max(q,I[ee.v]+A.edge(ee)),0)}function X(B){let q=A.outEdges(B).reduce((L,$)=>Math.min(L,I[$.w]-A.edge($)),Number.POSITIVE_INFINITY),ee=S.node(B);q!==Number.POSITIVE_INFINITY&&ee.borderType!==R&&(I[B]=Math.max(I[B],q))}return D(U,A.predecessors.bind(A)),D(X,A.successors.bind(A)),Object.keys(E).forEach(B=>I[B]=I[T[B]]),I}function h(S,_,T,E){let z=new e,I=S.graph(),A=w(I.nodesep,I.edgesep,E);return _.forEach(R=>{let D;R.forEach(U=>{let X=T[U];if(z.setNode(X),D){var B=T[D],q=z.edge(B,X);z.setEdge(B,X,Math.max(A(S,U,D),q||0))}D=U})}),z}function m(S,_){return Object.values(_).reduce((T,E)=>{let z=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY;Object.entries(E).forEach(([R,D])=>{let U=k(S,R)/2;z=Math.max(D+U,z),I=Math.min(D-U,I)});const A=z-I;return A{["l","r"].forEach(A=>{let R=I+A,D=S[R];if(D===_)return;let U=Object.values(D),X=E-n.applyWithChunking(Math.min,U);A!=="l"&&(X=z-n.applyWithChunking(Math.max,U)),X&&(S[R]=n.mapValues(D,B=>B+X))})})}function y(S,_){return n.mapValues(S.ul,(T,E)=>{if(_)return S[_.toLowerCase()][E];{let z=Object.values(S).map(I=>I[E]).sort((I,A)=>I-A);return(z[1]+z[2])/2}})}function v(S){let _=n.buildLayerMatrix(S),T=Object.assign(r(S,_),l(S,_)),E={},z;["u","d"].forEach(A=>{z=A==="u"?_:Object.values(_).reverse(),["l","r"].forEach(R=>{R==="r"&&(z=z.map(B=>Object.values(B).reverse()));let D=(A==="u"?S.predecessors:S.successors).bind(S),U=f(S,z,T,D),X=d(S,z,U.root,U.align,R==="r");R==="r"&&(X=n.mapValues(X,B=>-B)),E[A+R]=X})});let I=m(S,E);return p(E,I),y(E,S.graph().align)}function w(S,_,T){return(E,z,I)=>{let A=E.node(z),R=E.node(I),D=0,U;if(D+=A.width/2,Object.hasOwn(A,"labelpos"))switch(A.labelpos.toLowerCase()){case"l":U=-A.width/2;break;case"r":U=A.width/2;break}if(U&&(D+=T?U:-U),U=0,D+=(A.dummy?_:S)/2,D+=(R.dummy?_:S)/2,D+=R.width/2,Object.hasOwn(R,"labelpos"))switch(R.labelpos.toLowerCase()){case"l":U=R.width/2;break;case"r":U=-R.width/2;break}return U&&(D+=T?U:-U),U=0,D}}function k(S,_){return S.node(_).width}return Kh}var Jh,A1;function Pj(){if(A1)return Jh;A1=1;let e=Tt(),n=$j().positionX;Jh=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(n(a)).forEach(([s,u])=>a.node(s).x=u)}function l(a){let s=e.buildLayerMatrix(a),u=a.graph().ranksep,f=0;s.forEach(d=>{const h=d.reduce((m,p)=>{const y=a.node(p).height;return m>y?m:y},0);d.forEach(m=>a.node(m).y=f+h/2),f+=h+u})}return Jh}var Wh,M1;function Xj(){if(M1)return Wh;M1=1;let e=Tj(),n=zj(),r=Mj(),l=Tt().normalizeRanks,a=jj(),s=Tt().removeEmptyRanks,u=Oj(),f=Dj(),d=Rj(),h=Yj(),m=Pj(),p=Tt(),y=Yn().Graph;Wh=v;function v(N,G){let F=G&&G.debugTiming?p.time:p.notime;F("layout",()=>{let J=F(" buildLayoutGraph",()=>D(N));F(" runLayout",()=>w(J,F,G)),F(" updateInputGraph",()=>k(N,J))})}function w(N,G,F){G(" makeSpaceForEdgeLabels",()=>U(N)),G(" removeSelfEdges",()=>Q(N)),G(" acyclic",()=>e.run(N)),G(" nestingGraph.run",()=>u.run(N)),G(" rank",()=>r(p.asNonCompoundGraph(N))),G(" injectEdgeLabelProxies",()=>X(N)),G(" removeEmptyRanks",()=>s(N)),G(" nestingGraph.cleanup",()=>u.cleanup(N)),G(" normalizeRanks",()=>l(N)),G(" assignRankMinMax",()=>B(N)),G(" removeEdgeLabelProxies",()=>q(N)),G(" normalize.run",()=>n.run(N)),G(" parentDummyChains",()=>a(N)),G(" addBorderSegments",()=>f(N)),G(" order",()=>h(N,F)),G(" insertSelfEdges",()=>K(N)),G(" adjustCoordinateSystem",()=>d.adjust(N)),G(" position",()=>m(N)),G(" positionSelfEdges",()=>j(N)),G(" removeBorderNodes",()=>Y(N)),G(" normalize.undo",()=>n.undo(N)),G(" fixupEdgeLabelCoords",()=>$(N)),G(" undoCoordinateSystem",()=>d.undo(N)),G(" translateGraph",()=>ee(N)),G(" assignNodeIntersects",()=>L(N)),G(" reversePoints",()=>M(N)),G(" acyclic.undo",()=>e.undo(N))}function k(N,G){N.nodes().forEach(F=>{let J=N.node(F),ne=G.node(F);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,G.children(F).length&&(J.width=ne.width,J.height=ne.height))}),N.edges().forEach(F=>{let J=N.edge(F),ne=G.edge(F);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),N.graph().width=G.graph().width,N.graph().height=G.graph().height}let S=["nodesep","edgesep","ranksep","marginx","marginy"],_={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},T=["acyclicer","ranker","rankdir","align"],E=["width","height","rank"],z={width:0,height:0},I=["minlen","weight","width","height","labeloffset"],A={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},R=["labelpos"];function D(N){let G=new y({multigraph:!0,compound:!0}),F=P(N.graph());return G.setGraph(Object.assign({},_,H(F,S),p.pick(F,T))),N.nodes().forEach(J=>{let ne=P(N.node(J));const re=H(ne,E);Object.keys(z).forEach(se=>{re[se]===void 0&&(re[se]=z[se])}),G.setNode(J,re),G.setParent(J,N.parent(J))}),N.edges().forEach(J=>{let ne=P(N.edge(J));G.setEdge(J,Object.assign({},A,H(ne,I),p.pick(ne,R)))}),G}function U(N){let G=N.graph();G.ranksep/=2,N.edges().forEach(F=>{let J=N.edge(F);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(G.rankdir==="TB"||G.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function X(N){N.edges().forEach(G=>{let F=N.edge(G);if(F.width&&F.height){let J=N.node(G.v),re={rank:(N.node(G.w).rank-J.rank)/2+J.rank,e:G};p.addDummyNode(N,"edge-proxy",re,"_ep")}})}function B(N){let G=0;N.nodes().forEach(F=>{let J=N.node(F);J.borderTop&&(J.minRank=N.node(J.borderTop).rank,J.maxRank=N.node(J.borderBottom).rank,G=Math.max(G,J.maxRank))}),N.graph().maxRank=G}function q(N){N.nodes().forEach(G=>{let F=N.node(G);F.dummy==="edge-proxy"&&(N.edge(F.e).labelRank=F.rank,N.removeNode(G))})}function ee(N){let G=Number.POSITIVE_INFINITY,F=0,J=Number.POSITIVE_INFINITY,ne=0,re=N.graph(),se=re.marginx||0,ye=re.marginy||0;function ve(xe){let pe=xe.x,_e=xe.y,Me=xe.width,Ce=xe.height;G=Math.min(G,pe-Me/2),F=Math.max(F,pe+Me/2),J=Math.min(J,_e-Ce/2),ne=Math.max(ne,_e+Ce/2)}N.nodes().forEach(xe=>ve(N.node(xe))),N.edges().forEach(xe=>{let pe=N.edge(xe);Object.hasOwn(pe,"x")&&ve(pe)}),G-=se,J-=ye,N.nodes().forEach(xe=>{let pe=N.node(xe);pe.x-=G,pe.y-=J}),N.edges().forEach(xe=>{let pe=N.edge(xe);pe.points.forEach(_e=>{_e.x-=G,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=G),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=F-G+se,re.height=ne-J+ye}function L(N){N.edges().forEach(G=>{let F=N.edge(G),J=N.node(G.v),ne=N.node(G.w),re,se;F.points?(re=F.points[0],se=F.points[F.points.length-1]):(F.points=[],re=ne,se=J),F.points.unshift(p.intersectRect(J,re)),F.points.push(p.intersectRect(ne,se))})}function $(N){N.edges().forEach(G=>{let F=N.edge(G);if(Object.hasOwn(F,"x"))switch((F.labelpos==="l"||F.labelpos==="r")&&(F.width-=F.labeloffset),F.labelpos){case"l":F.x-=F.width/2+F.labeloffset;break;case"r":F.x+=F.width/2+F.labeloffset;break}})}function M(N){N.edges().forEach(G=>{let F=N.edge(G);F.reversed&&F.points.reverse()})}function Y(N){N.nodes().forEach(G=>{if(N.children(G).length){let F=N.node(G),J=N.node(F.borderTop),ne=N.node(F.borderBottom),re=N.node(F.borderLeft[F.borderLeft.length-1]),se=N.node(F.borderRight[F.borderRight.length-1]);F.width=Math.abs(se.x-re.x),F.height=Math.abs(ne.y-J.y),F.x=re.x+F.width/2,F.y=J.y+F.height/2}}),N.nodes().forEach(G=>{N.node(G).dummy==="border"&&N.removeNode(G)})}function Q(N){N.edges().forEach(G=>{if(G.v===G.w){var F=N.node(G.v);F.selfEdges||(F.selfEdges=[]),F.selfEdges.push({e:G,label:N.edge(G)}),N.removeEdge(G)}})}function K(N){var G=p.buildLayerMatrix(N);G.forEach(F=>{var J=0;F.forEach((ne,re)=>{var se=N.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(ye=>{p.addDummyNode(N,"selfedge",{width:ye.label.width,height:ye.label.height,rank:se.rank,order:re+ ++J,e:ye.e,label:ye.label},"_se")}),delete se.selfEdges})})}function j(N){N.nodes().forEach(G=>{var F=N.node(G);if(F.dummy==="selfedge"){var J=N.node(F.e.v),ne=J.x+J.width/2,re=J.y,se=F.x-ne,ye=J.height/2;N.setEdge(F.e,F.label),N.removeNode(G),F.label.points=[{x:ne+2*se/3,y:re-ye},{x:ne+5*se/6,y:re-ye},{x:ne+se,y:re},{x:ne+5*se/6,y:re+ye},{x:ne+2*se/3,y:re+ye}],F.label.x=F.x,F.label.y=F.y}})}function H(N,G){return p.mapValues(p.pick(N,G),Number)}function P(N){var G={};return N&&Object.entries(N).forEach(([F,J])=>{typeof F=="string"&&(F=F.toLowerCase()),G[F]=J}),G}return Wh}var ep,j1;function Fj(){if(j1)return ep;j1=1;let e=Tt(),n=Yn().Graph;ep={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),s=new n({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{s.setNode(u,{label:u}),s.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>s.setEdge(u.v,u.w,{},u.name)),a.forEach((u,f)=>{let d="layer"+f;s.setNode(d,{rank:"same"}),u.reduce((h,m)=>(s.setEdge(h,m,{style:"invis"}),m))}),s}return ep}var tp,O1;function Qj(){return O1||(O1=1,tp="1.1.8"),tp}var np,D1;function Zj(){return D1||(D1=1,np={graphlib:Yn(),layout:Xj(),debug:Fj(),util:{time:Tt().time,notime:Tt().notime},version:Qj()}),np}var Kj=Zj();const R1=Bo(Kj),vo=200,Ql=56,L1=20,H1=40,Jj=20,B1=12;function Wj(e,n,r,l,a,s,u){const f=[],d=[],h=new Set,m=new Set,p=new Map;for(const v of r)for(const w of v.agents)m.add(w),p.set(w,v.name);for(const v of r){const w=a[v.name],k=v.agents.length,S=vo+L1*2,_=H1+k*Ql+(k-1)*B1+Jj;f.push({id:v.name,type:"groupNode",position:{x:0,y:0},data:{label:v.name,type:"parallel_group",status:(w==null?void 0:w.status)||"pending",groupName:v.name,progress:s[v.name]},style:{width:S,height:_}});for(let T=0;T$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}for(const v of n)d.push({id:`${v.from}->${v.to}`,source:v.from,target:v.to,type:"animatedEdge",data:{when:v.when},animated:!1});return e5(f,d),{nodes:f,edges:d}}function e5(e,n){var l,a,s,u;const r=new R1.graphlib.Graph;r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const f of e){if(f.parentId)continue;const d=f.type==="groupNode",h=d&&((l=f.style)==null?void 0:l.width)||vo,m=d&&((a=f.style)==null?void 0:a.height)||Ql;r.setNode(f.id,{width:h,height:m})}for(const f of n)r.hasNode(f.source)&&r.hasNode(f.target)&&r.setEdge(f.source,f.target);R1.layout(r);for(const f of e){if(f.parentId)continue;const d=r.node(f.id);if(!d)continue;const h=f.type==="groupNode",m=h&&((s=f.style)==null?void 0:s.width)||vo,p=h&&((u=f.style)==null?void 0:u.height)||Ql;f.position={x:d.x-m/2,y:d.y-p/2}}}const $e={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},t5=70,q1=90;function _c({data:e,children:n}){const[r,l]=V.useState(!1),a=V.useRef(null),s=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),f=$e[e.status]||$e.pending;return b.jsxs("div",{className:"relative",onMouseEnter:s,onMouseLeave:u,children:[n,r&&b.jsxs("div",{className:Be("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[b.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),b.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[b.jsxs("div",{className:"flex items-center gap-1.5",children:[b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:f}}),b.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&b.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:Qt(e.elapsed)})]}),e.model&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),b.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Vn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&b.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Vn(e.inputTokens),"↑ ",Vn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),b.jsx("span",{className:"text-[var(--text)] font-mono",children:mi(e.costUsd)})]}),e.exitCode!=null&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),b.jsx("span",{className:Be("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),b.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"h-px bg-[var(--border)]"}),b.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&b.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),b.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const n5=V.memo(function({data:n,id:r,selected:l}){var R;const a=n,s=he(D=>D.getViewedContext().nodes),f=((R=s[r])==null?void 0:R.status)||a.status||"pending",d=$e[f]||$e.pending,h=s[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.model,y=h==null?void 0:h.tokens,v=h==null?void 0:h.input_tokens,w=h==null?void 0:h.output_tokens,k=h==null?void 0:h.cost_usd,S=h==null?void 0:h.iteration,_=h==null?void 0:h.error_type,T=h==null?void 0:h.error_message,E=h==null?void 0:h.context_pct,z=r5(r,f),I=i5(f),A=(()=>{if(f==="failed"&&T)return{text:T.length>40?T.slice(0,37)+"...":T,className:"text-red-400"};if(f==="running")return{text:z,className:"text-[var(--text-muted)]"};if(f==="completed"){const D=[];return m!=null&&D.push(Qt(m)),y!=null&&D.push(`${Vn(y)} tok`),k!=null&&D.push(mi(k)),{text:D.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:f,elapsed:m,model:p,tokens:y,inputTokens:v,outputTokens:w,costUsd:k,iteration:S,errorType:_,errorMessage:T},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",I),style:{borderColor:d},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:b.jsx(Q2,{className:"w-3.5 h-3.5",style:{color:d}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S!=null&&S>1&&b.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${d}25`,color:d},children:["x",S]})]}),A.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",A.className),children:A.text})]}),E!=null&&b.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:b.jsx("div",{className:Be("h-full transition-all duration-500",E>=q1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(E,100)}%`,backgroundColor:E>=q1?"#ef4444":E>=t5?"#f59e0b":"#22c55e"}})})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function r5(e,n){const r=he(d=>{var h;return(h=d.getViewedContext().nodes[e])==null?void 0:h.startedAt}),l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const m=r??a??0;u(Qt((a??m)-m));return}const d=r!=null?r*1e3:Date.now(),h=()=>{const m=(Date.now()-d)/1e3;u(Qt(m))};return h(),f.current=setInterval(h,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function i5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const l5=V.memo(function({data:n,id:r,selected:l}){var _;const a=n,s=he(T=>T.getViewedContext().nodes),f=((_=s[r])==null?void 0:_.status)||a.status||"pending",d=$e[f]||$e.pending,h=s[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.exit_code,y=h==null?void 0:h.error_type,v=h==null?void 0:h.error_message,w=a5(r,f),k=o5(f),S=(()=>{if(f==="failed"&&v)return{text:v.length>40?v.slice(0,37)+"...":v,className:"text-red-400"};if(f==="running")return{text:w,className:"text-[var(--text-muted)]"};if(f==="completed"){const T=[];return m!=null&&T.push(Qt(m)),p!=null&&T.push(`exit ${p}`),{text:T.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:f,elapsed:m,exitCode:p,errorType:y,errorMessage:v},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",k),style:{borderColor:d},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:b.jsx(cN,{className:"w-3.5 h-3.5",style:{color:d}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),S.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",S.className),children:S.text})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function a5(e,n){const r=he(d=>{var h;return(h=d.getViewedContext().nodes[e])==null?void 0:h.startedAt}),l=he(d=>d.replayMode),a=he(d=>d.lastEventTime),[s,u]=V.useState("0.0s"),f=V.useRef(null);return V.useEffect(()=>{if(n==="running"){if(l){f.current&&clearInterval(f.current);const m=r??a??0;u(Qt((a??m)-m));return}const d=r!=null?r*1e3:Date.now(),h=()=>{const m=(Date.now()-d)/1e3;u(Qt(m))};return h(),f.current=setInterval(h,1e3),()=>{f.current&&clearInterval(f.current)}}else f.current&&clearInterval(f.current)},[n,r,l,a]),s}function o5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const s5=V.memo(function({data:n,id:r,selected:l}){var p,y;const a=n,s=he(v=>v.getViewedContext().nodes),f=((p=s[r])==null?void 0:p.status)||a.status||"pending",d=$e[f]||$e.pending,h=(y=s[r])==null?void 0:y.selected_option,m=u5(f);return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:f,selectedOption:h},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",f==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",f==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:d},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",f==="waiting"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:b.jsx(uN,{className:"w-3.5 h-3.5",style:{color:d}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),f==="waiting"&&b.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),f==="completed"&&h&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:h})]})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function u5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const c5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=a.type==="for_each_group"?aN:rN,f=a.progress,h=he(k=>{var S;return(S=k.getViewedContext().nodes[r])==null?void 0:S.status})||a.status||"pending",m=$e[h]||$e.pending,p=f5(h),y=f?`${f.completed+f.failed}/${f.total}${f.failed>0?` (${f.failed} failed)`:""}`:null,v=f&&f.total>0?(f.completed+f.failed)/f.total*100:0,w=f!=null&&f.failed>0;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsxs("div",{className:Be("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",h==="running"&&"shadow-[0_0_16px_var(--running-glow)]",p),style:{borderColor:m,minHeight:"100%"},children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx(u,{className:"w-3.5 h-3.5",style:{color:m}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),y&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:y}),f&&f.total>0&&h==="running"&&b.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${v}%`,backgroundColor:w?"var(--failed)":"var(--completed)"}})})]}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function f5(e){const n=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=n.current;if(n.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const s=setTimeout(()=>l(""),400);return()=>clearTimeout(s)},[e]),r}const d5=V.memo(function({data:n,id:r,selected:l}){const a=n,u=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.status})||a.status||"pending",f=$e[u]||$e.pending,d=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.elapsed}),h=he(S=>{var _;return(_=S.nodes[r])==null?void 0:_.error_message}),m=he(S=>S.navigateIntoSubworkflow),p=he(S=>S.getViewedContext().subworkflowContexts),y=p.some(S=>S.parentAgent===r),v=p.find(S=>S.parentAgent===r),w=v==null?void 0:v.workflowName,k=(()=>{if(u==="failed"&&h)return{text:h.length>35?h.slice(0,32)+"...":h,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const S=[];return w&&S.push(w),d!=null&&S.push(`${d.toFixed(1)}s`),{text:S.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx(_c,{data:{status:u,elapsed:d,errorType:void 0,errorMessage:h,iteration:void 0},children:b.jsxs("div",{className:Be("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:f,borderStyle:"dashed"},onDoubleClick:S=>{y&&(S.stopPropagation(),m(r))},children:[b.jsx("div",{className:Be("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${f}20`},children:b.jsx($p,{className:"w-3.5 h-3.5",style:{color:f}})}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("div",{className:"flex items-center gap-1",children:b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),k.text&&b.jsx("span",{className:Be("text-[10px] truncate leading-tight",k.className),children:k.text})]}),y&&b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),h5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=a==="completed",u=a==="failed",f=!s&&!u,d=s?$e.completed:u?$e.failed:$e.pending;return b.jsxs(b.Fragment,{children:[b.jsx($t,{type:"target",position:be.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",s?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:d},children:s?b.jsx(Vi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?b.jsx(Ob,{className:"w-3.5 h-3.5 text-white",fill:"white"}):b.jsx(Vi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:f?$e.pending:d}})})]})}),p5=V.memo(function({data:n,selected:r}){const a=n.status||"pending",s=$e[a]||$e.pending,u=a==="running"||a==="completed";return b.jsxs(b.Fragment,{children:[b.jsx("div",{className:Be("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:s},children:b.jsx(Pp,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":s}})}),b.jsx($t,{type:"source",position:be.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),m5=V.memo(function({id:n,sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f,source:d,target:h,data:m}){const p=he(U=>U.getViewedContext().highlightedEdges),y=V.useMemo(()=>p.find(U=>U.from===d&&U.to===h),[p,d,h]),[v,w,k]=sm({sourceX:r,sourceY:l,targetX:a,targetY:s,sourcePosition:u,targetPosition:f}),S=m==null?void 0:m.when,_=!!S,T=(y==null?void 0:y.state)==="taken",E=(y==null?void 0:y.state)==="highlighted",z=(y==null?void 0:y.state)==="failed";let I="var(--edge-color)",A=2,R;z?(I="var(--failed)",A=3):T?(I="var(--edge-taken)",A=3):E&&(I="var(--edge-active)",A=3),_&&!T&&!E&&!z&&(R="6 3");const D=z?"failed":T?"taken":E?"active":"default";return b.jsxs(b.Fragment,{children:[b.jsx(Fo,{id:n,path:v,style:{stroke:I,strokeWidth:A,strokeDasharray:R,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${D})`}),_&&b.jsx(HM,{children:b.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${k}px)`,pointerEvents:"all"},children:b.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:z?"var(--failed)":T?"var(--edge-taken)":"var(--surface)",color:z||T?"var(--bg)":"var(--text-muted)",border:`1px solid ${z?"var(--failed)":T?"var(--edge-taken)":"var(--border)"}`},title:S,children:S})})}),T&&b.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:b.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:v})}),z&&b.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:b.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:v})})]})});function g5(){const e=he(u=>u.workflowStatus),n=he(u=>u.workflowFailure),r=he(u=>u.workflowFailedAgent),l=he(u=>u.selectNode);if(e!=="failed"||!n)return null;const a=n.message||n.error_type||"Unknown error",s=n.error_type==="TimeoutError";return b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[b.jsx(fN,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),b.jsxs("div",{className:"flex flex-col min-w-0",children:[b.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),b.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),s&&n.current_agent&&b.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",n.current_agent]}),n.checkpoint_path&&b.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:n.checkpoint_path,children:["Checkpoint: ",n.checkpoint_path.split("/").pop()]})]}),r&&b.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[b.jsx(eN,{className:"w-3 h-3"}),"View"]})]})})}function y5(){const[e,n]=V.useState(!1),r=he(d=>d.workflowStatus),l=he(d=>d.totalCost),a=he(d=>d.totalTokens),s=he(d=>d.agentsCompleted),u=he(d=>d.agentsTotal),f=Rb();return r!=="completed"||e?null:b.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:b.jsxs("div",{className:Be("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[b.jsx(K2,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),b.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[b.jsx("span",{children:f}),u>0&&b.jsxs("span",{children:[s,"/",u," agents"]}),a>0&&b.jsxs("span",{children:[Vn(a)," tok"]}),l>0&&b.jsx("span",{children:mi(l)})]}),b.jsx("button",{onClick:()=>n(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:b.jsx(Uo,{className:"w-3.5 h-3.5"})})]})})}const x5={agentNode:n5,scriptNode:l5,gateNode:s5,groupNode:c5,workflowNode:d5,endNode:h5,startNode:p5},v5={animatedEdge:m5},b5={type:"animatedEdge"};function w5(){return b.jsx("svg",{style:{position:"absolute",width:0,height:0},children:b.jsxs("defs",{children:[b.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),b.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),b.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),b.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:b.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function S5(){const e=he(M=>M.getViewedContext),n=he(M=>M.viewContextPath),r=he(M=>M.selectNode),l=he(M=>M.selectedNode),a=he(M=>M.workflowStatus),s=he(M=>M.wsStatus),u=he(M=>M.workflowFailedAgent),f=he(M=>M.navigateIntoSubworkflow),d=e(),{agents:h,routes:m,parallelGroups:p,forEachGroups:y,nodes:v,groupProgress:w,entryPoint:k,subworkflowContexts:S}=d,[_,T,E]=BM([]),[z,I,A]=qM([]),R=V.useRef(!1),D=V.useRef(""),U=JSON.stringify(n);V.useEffect(()=>{if(h.length===0){D.current!==U&&(R.current=!1,D.current=U);return}if(D.current!==U&&(R.current=!1,D.current=U),R.current)return;R.current=!0;const{nodes:M,edges:Y}=Wj(h,m,p,y,v,w,k);T(M),I(Y)},[h,m,p,y,v,w,k,T,I,U]),V.useEffect(()=>{R.current&&T(M=>M.map(Y=>{const Q=v[Y.id];if(!Q)return Y;const K=Q.status||"pending",j=Y.data.status;if(K!==j){const H={...Y.data,status:K};return Y.data.groupName&&w[Y.data.groupName]&&(H.progress=w[Y.data.groupName]),{...Y,data:H}}if(Y.data.groupName&&w[Y.data.groupName]){const H=Y.data.progress,P=w[Y.data.groupName];if(P&&(!H||H.completed!==P.completed||H.failed!==P.failed))return{...Y,data:{...Y.data,progress:P}}}return Y}))},[v,w,T]);const X=V.useCallback((M,Y)=>{Y.type==="groupNode"&&Y.data.type!=="for_each_group"||r(Y.id)},[r]),B=V.useCallback((M,Y)=>{S.some(K=>K.parentAgent===Y.id)&&f(Y.id)},[S,f]),q=V.useCallback(()=>{r(null)},[r]),ee=V.useCallback(M=>{var Q;const Y=((Q=M.data)==null?void 0:Q.status)||"pending";return $e[Y]||$e.pending},[]);V.useEffect(()=>{T(M=>M.map(Y=>({...Y,selected:Y.id===l})))},[l,T]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const L=a==="pending"&&h.length===0,$=(()=>{switch(s){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return b.jsxs("div",{className:"w-full h-full relative",children:[b.jsx(w5,{}),b.jsx(g5,{}),b.jsx(y5,{}),L&&b.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[b.jsxs("div",{className:"relative mb-3",children:[b.jsx(pN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),b.jsx(No,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),b.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:$})]}),b.jsxs(RM,{nodes:_,edges:z,onNodesChange:E,onEdgesChange:A,onNodeClick:X,onNodeDoubleClick:B,onPaneClick:q,nodeTypes:x5,edgeTypes:v5,defaultEdgeOptions:b5,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[b.jsx(YM,{variant:zr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),b.jsx(cj,{nodeColor:ee,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),b.jsx(KM,{showInteractive:!1,children:b.jsx(_5,{})}),b.jsx(E5,{})]})]})}function _5(){const{fitView:e}=Xo(),n=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return b.jsx("button",{onClick:n,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:b.jsx(iN,{className:"w-3.5 h-3.5"})})}function E5(){const{fitView:e}=Xo();return V.useEffect(()=>{const n=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e]),null}function Wi({items:e}){const n=e.filter(r=>r.value!=null&&r.value!=="");return n.length===0?null:b.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:n.map(({label:r,value:l})=>b.jsxs("div",{className:"contents",children:[b.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),b.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function $S(e){const n=[];return e.elapsed!=null&&n.push({label:"Elapsed",value:Qt(e.elapsed)}),e.model&&n.push({label:"Model",value:e.model}),e.tokens!=null&&n.push({label:"Tokens",value:Vn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&n.push({label:"In / Out",value:`${Vn(e.input_tokens)} / ${Vn(e.output_tokens)}`}),e.cost_usd!=null&&n.push({label:"Cost",value:mi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&n.push({label:"Context",value:kN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&n.push({label:"Iteration",value:e.iteration}),e.error_type&&n.push({label:"Error",value:e.error_type}),e.error_message&&n.push({label:"Message",value:e.error_message}),n}function Ki({output:e,title:n="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,s]=V.useState(r),[u,f]=V.useState(!1),d=Db(e);if(!d)return null;const h=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(d),f(!0),setTimeout(()=>f(!1),2e3)};return b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),n]}),a&&b.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}):b.jsx(Mb,{className:"w-3 h-3"})})]}),a&&b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:h?b.jsx(N5,{text:d}):d})]})}function N5({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function gm({activity:e,defaultExpanded:n=!0}){const[r,l]=V.useState(n),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:b.jsxs("div",{className:"space-y-1.5",children:[b.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&b.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((s,u)=>b.jsx(k5,{entry:s},u))})]})}function k5({entry:e}){const n={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return b.jsxs("div",{className:Be("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[b.jsxs("div",{className:"flex items-start gap-1.5",children:[b.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),b.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),b.jsx("span",{className:Be("break-words",n[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&b.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function C5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?b.jsx(U1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:n,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):b.jsxs(b.Fragment,{children:[b.jsx(Wi,{items:$S(e)}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),b.jsx(gm,{activity:e.activity,defaultExpanded:n!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>b.jsx(U1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:n,snapshot:a},a.iteration))]})}function U1({label:e,defaultExpanded:n,snapshot:r,status:l}){const[a,s]=V.useState(n);return b.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[b.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?b.jsx(Ji,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:T5(r.elapsed)})]}),a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[b.jsx(Wi,{items:$S(r)}),r.prompt&&b.jsx(Ki,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),b.jsx(gm,{activity:r.activity,defaultExpanded:n&&l!=="completed"}),r.output!=null&&b.jsx(Ki,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&b.jsxs("div",{className:"text-xs text-red-400",children:[b.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function T5(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const n=Math.floor(e/60),r=(e%60).toFixed(0);return`${n}m ${r}s`}function z5({node:e}){const n=e.status,r=$e[n]||$e.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Qt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` - ---- stderr --- -`:"")+e.stderr),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Script"})]}),b.jsx(Wi,{items:l}),a&&b.jsx(Ki,{output:a,title:"Output"})]})}function A5(e,n){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const M5=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,j5=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,O5={};function I1(e,n){return(O5.jsx?j5:M5).test(e)}const D5=/[ \t\n\f\r]/g;function R5(e){return typeof e=="object"?e.type==="text"?V1(e.value):!1:V1(e)}function V1(e){return e.replace(D5,"")===""}class Qo{constructor(n,r,l){this.normal=r,this.property=n,l&&(this.space=l)}}Qo.prototype.normal={};Qo.prototype.property={};Qo.prototype.space=void 0;function PS(e,n){const r={},l={};for(const a of e)Object.assign(r,a.property),Object.assign(l,a.normal);return new Qo(r,l,n)}function Rp(e){return e.toLowerCase()}class sn{constructor(n,r){this.attribute=r,this.property=n}}sn.prototype.attribute="";sn.prototype.booleanish=!1;sn.prototype.boolean=!1;sn.prototype.commaOrSpaceSeparated=!1;sn.prototype.commaSeparated=!1;sn.prototype.defined=!1;sn.prototype.mustUseProperty=!1;sn.prototype.number=!1;sn.prototype.overloadedBoolean=!1;sn.prototype.property="";sn.prototype.spaceSeparated=!1;sn.prototype.space=void 0;let L5=0;const Oe=el(),Ct=el(),Lp=el(),me=el(),ot=el(),Wl=el(),yn=el();function el(){return 2**++L5}const Hp=Object.freeze(Object.defineProperty({__proto__:null,boolean:Oe,booleanish:Ct,commaOrSpaceSeparated:yn,commaSeparated:Wl,number:me,overloadedBoolean:Lp,spaceSeparated:ot},Symbol.toStringTag,{value:"Module"})),rp=Object.keys(Hp);class ym extends sn{constructor(n,r,l,a){let s=-1;if(super(n,r),G1(this,"space",a),typeof l=="number")for(;++s4&&r.slice(0,4)==="data"&&I5.test(n)){if(n.charAt(4)==="-"){const s=n.slice(5).replace(Y1,Y5);l="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=n.slice(4);if(!Y1.test(s)){let u=s.replace(U5,G5);u.charAt(0)!=="-"&&(u="-"+u),n="data"+u}}a=ym}return new a(l,n)}function G5(e){return"-"+e.toLowerCase()}function Y5(e){return e.charAt(1).toUpperCase()}const $5=PS([XS,H5,ZS,KS,JS],"html"),xm=PS([XS,B5,ZS,KS,JS],"svg");function P5(e){return e.join(" ").trim()}var Vl={},ip,$1;function X5(){if($1)return ip;$1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,f=/^\s+|\s+$/g,d=` -`,h="/",m="*",p="",y="comment",v="declaration";function w(S,_){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];_=_||{};var T=1,E=1;function z(L){var $=L.match(n);$&&(T+=$.length);var M=L.lastIndexOf(d);E=~M?L.length-M:E+L.length}function I(){var L={line:T,column:E};return function($){return $.position=new A(L),U(),$}}function A(L){this.start=L,this.end={line:T,column:E},this.source=_.source}A.prototype.content=S;function R(L){var $=new Error(_.source+":"+T+":"+E+": "+L);if($.reason=L,$.filename=_.source,$.line=T,$.column=E,$.source=S,!_.silent)throw $}function D(L){var $=L.exec(S);if($){var M=$[0];return z(M),S=S.slice(M.length),$}}function U(){D(r)}function X(L){var $;for(L=L||[];$=B();)$!==!1&&L.push($);return L}function B(){var L=I();if(!(h!=S.charAt(0)||m!=S.charAt(1))){for(var $=2;p!=S.charAt($)&&(m!=S.charAt($)||h!=S.charAt($+1));)++$;if($+=2,p===S.charAt($-1))return R("End of comment missing");var M=S.slice(2,$-2);return E+=2,z(M),S=S.slice($),E+=2,L({type:y,comment:M})}}function q(){var L=I(),$=D(l);if($){if(B(),!D(a))return R("property missing ':'");var M=D(s),Y=L({type:v,property:k($[0].replace(e,p)),value:M?k(M[0].replace(e,p)):p});return D(u),Y}}function ee(){var L=[];X(L);for(var $;$=q();)$!==!1&&(L.push($),X(L));return L}return U(),ee()}function k(S){return S?S.replace(f,p):p}return ip=w,ip}var P1;function F5(){if(P1)return Vl;P1=1;var e=Vl&&Vl.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.default=r;const n=e(X5());function r(l,a){let s=null;if(!l||typeof l!="string")return s;const u=(0,n.default)(l),f=typeof a=="function";return u.forEach(d=>{if(d.type!=="declaration")return;const{property:h,value:m}=d;f?a(h,m,d):m&&(s=s||{},s[h]=m)}),s}return Vl}var uo={},X1;function Q5(){if(X1)return uo;X1=1,Object.defineProperty(uo,"__esModule",{value:!0}),uo.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,l=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,s=function(h){return!h||r.test(h)||e.test(h)},u=function(h,m){return m.toUpperCase()},f=function(h,m){return"".concat(m,"-")},d=function(h,m){return m===void 0&&(m={}),s(h)?h:(h=h.toLowerCase(),m.reactCompat?h=h.replace(a,f):h=h.replace(l,f),h.replace(n,u))};return uo.camelCase=d,uo}var co,F1;function Z5(){if(F1)return co;F1=1;var e=co&&co.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},n=e(F5()),r=Q5();function l(a,s){var u={};return!a||typeof a!="string"||(0,n.default)(a,function(f,d){f&&d&&(u[(0,r.camelCase)(f,s)]=d)}),u}return l.default=l,co=l,co}var K5=Z5();const J5=Bo(K5),WS=e_("end"),vm=e_("start");function e_(e){return n;function n(r){const l=r&&r.position&&r.position[e]||{};if(typeof l.line=="number"&&l.line>0&&typeof l.column=="number"&&l.column>0)return{line:l.line,column:l.column,offset:typeof l.offset=="number"&&l.offset>-1?l.offset:void 0}}}function W5(e){const n=vm(e),r=WS(e);if(n&&r)return{start:n,end:r}}function So(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Q1(e.position):"start"in e||"end"in e?Q1(e):"line"in e||"column"in e?Bp(e):""}function Bp(e){return Z1(e&&e.line)+":"+Z1(e&&e.column)}function Q1(e){return Bp(e&&e.start)+"-"+Bp(e&&e.end)}function Z1(e){return e&&typeof e=="number"?e:1}class Pt extends Error{constructor(n,r,l){super(),typeof r=="string"&&(l=r,r=void 0);let a="",s={},u=!1;if(r&&("line"in r&&"column"in r?s={place:r}:"start"in r&&"end"in r?s={place:r}:"type"in r?s={ancestors:[r],place:r.position}:s={...r}),typeof n=="string"?a=n:!s.cause&&n&&(u=!0,a=n.message,s.cause=n),!s.ruleId&&!s.source&&typeof l=="string"){const d=l.indexOf(":");d===-1?s.ruleId=l:(s.source=l.slice(0,d),s.ruleId=l.slice(d+1))}if(!s.place&&s.ancestors&&s.ancestors){const d=s.ancestors[s.ancestors.length-1];d&&(s.place=d.position)}const f=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=f?f.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=f?f.line:void 0,this.name=So(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=u&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Pt.prototype.file="";Pt.prototype.name="";Pt.prototype.reason="";Pt.prototype.message="";Pt.prototype.stack="";Pt.prototype.column=void 0;Pt.prototype.line=void 0;Pt.prototype.ancestors=void 0;Pt.prototype.cause=void 0;Pt.prototype.fatal=void 0;Pt.prototype.place=void 0;Pt.prototype.ruleId=void 0;Pt.prototype.source=void 0;const bm={}.hasOwnProperty,e4=new Map,t4=/[A-Z]/g,n4=new Set(["table","tbody","thead","tfoot","tr"]),r4=new Set(["td","th"]),t_="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function i4(e,n){if(!n||n.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=n.filePath||void 0;let l;if(n.development){if(typeof n.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");l=d4(r,n.jsxDEV)}else{if(typeof n.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof n.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");l=f4(r,n.jsx,n.jsxs)}const a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:l,elementAttributeNameCase:n.elementAttributeNameCase||"react",evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space==="svg"?xm:$5,stylePropertyNameCase:n.stylePropertyNameCase||"dom",tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},s=n_(a,e,void 0);return s&&typeof s!="string"?s:a.create(e,a.Fragment,{children:s||void 0},void 0)}function n_(e,n,r){if(n.type==="element")return l4(e,n,r);if(n.type==="mdxFlowExpression"||n.type==="mdxTextExpression")return a4(e,n);if(n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement")return s4(e,n,r);if(n.type==="mdxjsEsm")return o4(e,n);if(n.type==="root")return u4(e,n,r);if(n.type==="text")return c4(e,n)}function l4(e,n,r){const l=e.schema;let a=l;n.tagName.toLowerCase()==="svg"&&l.space==="html"&&(a=xm,e.schema=a),e.ancestors.push(n);const s=i_(e,n.tagName,!1),u=h4(e,n);let f=Sm(e,n);return n4.has(n.tagName)&&(f=f.filter(function(d){return typeof d=="string"?!R5(d):!0})),r_(e,u,s,n),wm(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function a4(e,n){if(n.data&&n.data.estree&&e.evaluater){const l=n.data.estree.body[0];return l.type,e.evaluater.evaluateExpression(l.expression)}Ho(e,n.position)}function o4(e,n){if(n.data&&n.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(n.data.estree);Ho(e,n.position)}function s4(e,n,r){const l=e.schema;let a=l;n.name==="svg"&&l.space==="html"&&(a=xm,e.schema=a),e.ancestors.push(n);const s=n.name===null?e.Fragment:i_(e,n.name,!0),u=p4(e,n),f=Sm(e,n);return r_(e,u,s,n),wm(u,f),e.ancestors.pop(),e.schema=l,e.create(n,s,u,r)}function u4(e,n,r){const l={};return wm(l,Sm(e,n)),e.create(n,e.Fragment,l,r)}function c4(e,n){return n.value}function r_(e,n,r,l){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(n.node=l)}function wm(e,n){if(n.length>0){const r=n.length>1?n:n[0];r&&(e.children=r)}}function f4(e,n,r){return l;function l(a,s,u,f){const h=Array.isArray(u.children)?r:n;return f?h(s,u,f):h(s,u)}}function d4(e,n){return r;function r(l,a,s,u){const f=Array.isArray(s.children),d=vm(l);return n(a,s,u,f,{columnNumber:d?d.column-1:void 0,fileName:e,lineNumber:d?d.line:void 0},void 0)}}function h4(e,n){const r={};let l,a;for(a in n.properties)if(a!=="children"&&bm.call(n.properties,a)){const s=m4(e,a,n.properties[a]);if(s){const[u,f]=s;e.tableCellAlignToStyle&&u==="align"&&typeof f=="string"&&r4.has(n.tagName)?l=f:r[u]=f}}if(l){const s=r.style||(r.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=l}return r}function p4(e,n){const r={};for(const l of n.attributes)if(l.type==="mdxJsxExpressionAttribute")if(l.data&&l.data.estree&&e.evaluater){const s=l.data.estree.body[0];s.type;const u=s.expression;u.type;const f=u.properties[0];f.type,Object.assign(r,e.evaluater.evaluateExpression(f.argument))}else Ho(e,n.position);else{const a=l.name;let s;if(l.value&&typeof l.value=="object")if(l.value.data&&l.value.data.estree&&e.evaluater){const f=l.value.data.estree.body[0];f.type,s=e.evaluater.evaluateExpression(f.expression)}else Ho(e,n.position);else s=l.value===null?!0:l.value;r[a]=s}return r}function Sm(e,n){const r=[];let l=-1;const a=e.passKeys?new Map:e4;for(;++la?0:a+n:n=n>a?a:n,r=r>0?r:0,l.length<1e4)u=Array.from(l),u.unshift(n,r),e.splice(...u);else for(r&&e.splice(n,r);s0?(rr(e,e.length,0,n),e):n}const W1={}.hasOwnProperty;function _4(e){const n={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function ea(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const er=gi(/[A-Za-z]/),bn=gi(/[\dA-Za-z]/),k4=gi(/[#-'*+\--9=?A-Z^-~]/);function qp(e){return e!==null&&(e<32||e===127)}const Up=gi(/\d/),C4=gi(/[\dA-Fa-f]/),T4=gi(/[!-/:-@[-`{-~]/);function Te(e){return e!==null&&e<-2}function on(e){return e!==null&&(e<0||e===32)}function Ke(e){return e===-2||e===-1||e===32}const z4=gi(new RegExp("\\p{P}|\\p{S}","u")),A4=gi(/\s/);function gi(e){return n;function n(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function ua(e){const n=[];let r=-1,l=0,a=0;for(;++r55295&&s<57344){const f=e.charCodeAt(r+1);s<56320&&f>56319&&f<57344?(u=String.fromCharCode(s,f),a=1):u="�"}else u=String.fromCharCode(s);u&&(n.push(e.slice(l,r),encodeURIComponent(u)),l=r+a+1,u=""),a&&(r+=a,a=0)}return n.join("")+e.slice(l)}function st(e,n,r,l){const a=l?l-1:Number.POSITIVE_INFINITY;let s=0;return u;function u(d){return Ke(d)?(e.enter(r),f(d)):n(d)}function f(d){return Ke(d)&&s++u))return;const R=n.events.length;let D=R,U,X;for(;D--;)if(n.events[D][0]==="exit"&&n.events[D][1].type==="chunkFlow"){if(U){X=n.events[D][1].end;break}U=!0}for(_(l),A=R;AE;){const I=r[z];n.containerState=I[1],I[0].exit.call(n,e)}r.length=E}function T(){a.write([null]),s=void 0,a=void 0,n.containerState._closeFlow=void 0}}function R4(e,n,r){return st(e,e.attempt(this.parser.constructs.document,n,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function tb(e){if(e===null||on(e)||A4(e))return 1;if(z4(e))return 2}function Em(e,n,r){const l=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const p={...e[l][1].end},y={...e[r][1].start};nb(p,-d),nb(y,d),u={type:d>1?"strongSequence":"emphasisSequence",start:p,end:{...e[l][1].end}},f={type:d>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:y},s={type:d>1?"strongText":"emphasisText",start:{...e[l][1].end},end:{...e[r][1].start}},a={type:d>1?"strong":"emphasis",start:{...u.start},end:{...f.end}},e[l][1].end={...u.start},e[r][1].start={...f.end},h=[],e[l][1].end.offset-e[l][1].start.offset&&(h=Mn(h,[["enter",e[l][1],n],["exit",e[l][1],n]])),h=Mn(h,[["enter",a,n],["enter",u,n],["exit",u,n],["enter",s,n]]),h=Mn(h,Em(n.parser.constructs.insideSpan.null,e.slice(l+1,r),n)),h=Mn(h,[["exit",s,n],["enter",f,n],["exit",f,n],["exit",a,n]]),e[r][1].end.offset-e[r][1].start.offset?(m=2,h=Mn(h,[["enter",e[r][1],n],["exit",e[r][1],n]])):m=0,rr(e,l-1,r-l+3,h),r=l+h.length-m-2;break}}for(r=-1;++r0&&Ke(A)?st(e,T,"linePrefix",s+1)(A):T(A)}function T(A){return A===null||Te(A)?e.check(rb,k,z)(A):(e.enter("codeFlowValue"),E(A))}function E(A){return A===null||Te(A)?(e.exit("codeFlowValue"),T(A)):(e.consume(A),E)}function z(A){return e.exit("codeFenced"),n(A)}function I(A,R,D){let U=0;return X;function X($){return A.enter("lineEnding"),A.consume($),A.exit("lineEnding"),B}function B($){return A.enter("codeFencedFence"),Ke($)?st(A,q,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)($):q($)}function q($){return $===f?(A.enter("codeFencedFenceSequence"),ee($)):D($)}function ee($){return $===f?(U++,A.consume($),ee):U>=u?(A.exit("codeFencedFenceSequence"),Ke($)?st(A,L,"whitespace")($):L($)):D($)}function L($){return $===null||Te($)?(A.exit("codeFencedFence"),R($)):D($)}}}function X4(e,n,r){const l=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}const ap={name:"codeIndented",tokenize:Q4},F4={partial:!0,tokenize:Z4};function Q4(e,n,r){const l=this;return a;function a(h){return e.enter("codeIndented"),st(e,s,"linePrefix",5)(h)}function s(h){const m=l.events[l.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?u(h):r(h)}function u(h){return h===null?d(h):Te(h)?e.attempt(F4,u,d)(h):(e.enter("codeFlowValue"),f(h))}function f(h){return h===null||Te(h)?(e.exit("codeFlowValue"),u(h)):(e.consume(h),f)}function d(h){return e.exit("codeIndented"),n(h)}}function Z4(e,n,r){const l=this;return a;function a(u){return l.parser.lazy[l.now().line]?r(u):Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):st(e,s,"linePrefix",5)(u)}function s(u){const f=l.events[l.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?n(u):Te(u)?a(u):r(u)}}const K4={name:"codeText",previous:W4,resolve:J4,tokenize:eO};function J4(e){let n=e.length-4,r=3,l,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[n][1].type==="lineEnding"||e[n][1].type==="space")){for(l=r;++l=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+n+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return nthis.left.length?this.right.slice(this.right.length-l+this.left.length,this.right.length-n+this.left.length).reverse():this.left.slice(n).concat(this.right.slice(this.right.length-l+this.left.length).reverse())}splice(n,r,l){const a=r||0;this.setCursor(Math.trunc(n));const s=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return l&&fo(this.left,l),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(n){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(n)}pushMany(n){this.setCursor(Number.POSITIVE_INFINITY),fo(this.left,n)}unshift(n){this.setCursor(0),this.right.push(n)}unshiftMany(n){this.setCursor(0),fo(this.right,n.reverse())}setCursor(n){if(!(n===this.left.length||n>this.left.length&&this.right.length===0||n<0&&this.left.length===0))if(n=4?n(u):e.interrupt(l.parser.constructs.flow,r,n)(u)}}function f_(e,n,r,l,a,s,u,f,d){const h=d||Number.POSITIVE_INFINITY;let m=0;return p;function p(_){return _===60?(e.enter(l),e.enter(a),e.enter(s),e.consume(_),e.exit(s),y):_===null||_===32||_===41||qp(_)?r(_):(e.enter(l),e.enter(u),e.enter(f),e.enter("chunkString",{contentType:"string"}),k(_))}function y(_){return _===62?(e.enter(s),e.consume(_),e.exit(s),e.exit(a),e.exit(l),n):(e.enter(f),e.enter("chunkString",{contentType:"string"}),v(_))}function v(_){return _===62?(e.exit("chunkString"),e.exit(f),y(_)):_===null||_===60||Te(_)?r(_):(e.consume(_),_===92?w:v)}function w(_){return _===60||_===62||_===92?(e.consume(_),v):v(_)}function k(_){return!m&&(_===null||_===41||on(_))?(e.exit("chunkString"),e.exit(f),e.exit(u),e.exit(l),n(_)):m999||v===null||v===91||v===93&&!d||v===94&&!f&&"_hiddenFootnoteSupport"in u.parser.constructs?r(v):v===93?(e.exit(s),e.enter(a),e.consume(v),e.exit(a),e.exit(l),n):Te(v)?(e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===null||v===91||v===93||Te(v)||f++>999?(e.exit("chunkString"),m(v)):(e.consume(v),d||(d=!Ke(v)),v===92?y:p)}function y(v){return v===91||v===92||v===93?(e.consume(v),f++,p):p(v)}}function h_(e,n,r,l,a,s){let u;return f;function f(y){return y===34||y===39||y===40?(e.enter(l),e.enter(a),e.consume(y),e.exit(a),u=y===40?41:y,d):r(y)}function d(y){return y===u?(e.enter(a),e.consume(y),e.exit(a),e.exit(l),n):(e.enter(s),h(y))}function h(y){return y===u?(e.exit(s),d(u)):y===null?r(y):Te(y)?(e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),st(e,h,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(y))}function m(y){return y===u||y===null||Te(y)?(e.exit("chunkString"),h(y)):(e.consume(y),y===92?p:m)}function p(y){return y===u||y===92?(e.consume(y),m):m(y)}}function _o(e,n){let r;return l;function l(a){return Te(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,l):Ke(a)?st(e,l,r?"linePrefix":"lineSuffix")(a):n(a)}}const sO={name:"definition",tokenize:cO},uO={partial:!0,tokenize:fO};function cO(e,n,r){const l=this;let a;return s;function s(v){return e.enter("definition"),u(v)}function u(v){return d_.call(l,e,f,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(v)}function f(v){return a=ea(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),v===58?(e.enter("definitionMarker"),e.consume(v),e.exit("definitionMarker"),d):r(v)}function d(v){return on(v)?_o(e,h)(v):h(v)}function h(v){return f_(e,m,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(v)}function m(v){return e.attempt(uO,p,p)(v)}function p(v){return Ke(v)?st(e,y,"whitespace")(v):y(v)}function y(v){return v===null||Te(v)?(e.exit("definition"),l.parser.defined.push(a),n(v)):r(v)}}function fO(e,n,r){return l;function l(f){return on(f)?_o(e,a)(f):r(f)}function a(f){return h_(e,s,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(f)}function s(f){return Ke(f)?st(e,u,"whitespace")(f):u(f)}function u(f){return f===null||Te(f)?n(f):r(f)}}const dO={name:"hardBreakEscape",tokenize:hO};function hO(e,n,r){return l;function l(s){return e.enter("hardBreakEscape"),e.consume(s),a}function a(s){return Te(s)?(e.exit("hardBreakEscape"),n(s)):r(s)}}const pO={name:"headingAtx",resolve:mO,tokenize:gO};function mO(e,n){let r=e.length-2,l=3,a,s;return e[l][1].type==="whitespace"&&(l+=2),r-2>l&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(l===r-1||r-4>l&&e[r-2][1].type==="whitespace")&&(r-=l+1===r?2:4),r>l&&(a={type:"atxHeadingText",start:e[l][1].start,end:e[r][1].end},s={type:"chunkText",start:e[l][1].start,end:e[r][1].end,contentType:"text"},rr(e,l,r-l+1,[["enter",a,n],["enter",s,n],["exit",s,n],["exit",a,n]])),e}function gO(e,n,r){let l=0;return a;function a(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),u(m)}function u(m){return m===35&&l++<6?(e.consume(m),u):m===null||on(m)?(e.exit("atxHeadingSequence"),f(m)):r(m)}function f(m){return m===35?(e.enter("atxHeadingSequence"),d(m)):m===null||Te(m)?(e.exit("atxHeading"),n(m)):Ke(m)?st(e,f,"whitespace")(m):(e.enter("atxHeadingText"),h(m))}function d(m){return m===35?(e.consume(m),d):(e.exit("atxHeadingSequence"),f(m))}function h(m){return m===null||m===35||on(m)?(e.exit("atxHeadingText"),f(m)):(e.consume(m),h)}}const yO=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],lb=["pre","script","style","textarea"],xO={concrete:!0,name:"htmlFlow",resolveTo:wO,tokenize:SO},vO={partial:!0,tokenize:EO},bO={partial:!0,tokenize:_O};function wO(e){let n=e.length;for(;n--&&!(e[n][0]==="enter"&&e[n][1].type==="htmlFlow"););return n>1&&e[n-2][1].type==="linePrefix"&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e}function SO(e,n,r){const l=this;let a,s,u,f,d;return h;function h(N){return m(N)}function m(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),p}function p(N){return N===33?(e.consume(N),y):N===47?(e.consume(N),s=!0,k):N===63?(e.consume(N),a=3,l.interrupt?n:j):er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function y(N){return N===45?(e.consume(N),a=2,v):N===91?(e.consume(N),a=5,f=0,w):er(N)?(e.consume(N),a=4,l.interrupt?n:j):r(N)}function v(N){return N===45?(e.consume(N),l.interrupt?n:j):r(N)}function w(N){const G="CDATA[";return N===G.charCodeAt(f++)?(e.consume(N),f===G.length?l.interrupt?n:q:w):r(N)}function k(N){return er(N)?(e.consume(N),u=String.fromCharCode(N),S):r(N)}function S(N){if(N===null||N===47||N===62||on(N)){const G=N===47,F=u.toLowerCase();return!G&&!s&&lb.includes(F)?(a=1,l.interrupt?n(N):q(N)):yO.includes(u.toLowerCase())?(a=6,G?(e.consume(N),_):l.interrupt?n(N):q(N)):(a=7,l.interrupt&&!l.parser.lazy[l.now().line]?r(N):s?T(N):E(N))}return N===45||bn(N)?(e.consume(N),u+=String.fromCharCode(N),S):r(N)}function _(N){return N===62?(e.consume(N),l.interrupt?n:q):r(N)}function T(N){return Ke(N)?(e.consume(N),T):X(N)}function E(N){return N===47?(e.consume(N),X):N===58||N===95||er(N)?(e.consume(N),z):Ke(N)?(e.consume(N),E):X(N)}function z(N){return N===45||N===46||N===58||N===95||bn(N)?(e.consume(N),z):I(N)}function I(N){return N===61?(e.consume(N),A):Ke(N)?(e.consume(N),I):E(N)}function A(N){return N===null||N===60||N===61||N===62||N===96?r(N):N===34||N===39?(e.consume(N),d=N,R):Ke(N)?(e.consume(N),A):D(N)}function R(N){return N===d?(e.consume(N),d=null,U):N===null||Te(N)?r(N):(e.consume(N),R)}function D(N){return N===null||N===34||N===39||N===47||N===60||N===61||N===62||N===96||on(N)?I(N):(e.consume(N),D)}function U(N){return N===47||N===62||Ke(N)?E(N):r(N)}function X(N){return N===62?(e.consume(N),B):r(N)}function B(N){return N===null||Te(N)?q(N):Ke(N)?(e.consume(N),B):r(N)}function q(N){return N===45&&a===2?(e.consume(N),M):N===60&&a===1?(e.consume(N),Y):N===62&&a===4?(e.consume(N),H):N===63&&a===3?(e.consume(N),j):N===93&&a===5?(e.consume(N),K):Te(N)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(vO,P,ee)(N)):N===null||Te(N)?(e.exit("htmlFlowData"),ee(N)):(e.consume(N),q)}function ee(N){return e.check(bO,L,P)(N)}function L(N){return e.enter("lineEnding"),e.consume(N),e.exit("lineEnding"),$}function $(N){return N===null||Te(N)?ee(N):(e.enter("htmlFlowData"),q(N))}function M(N){return N===45?(e.consume(N),j):q(N)}function Y(N){return N===47?(e.consume(N),u="",Q):q(N)}function Q(N){if(N===62){const G=u.toLowerCase();return lb.includes(G)?(e.consume(N),H):q(N)}return er(N)&&u.length<8?(e.consume(N),u+=String.fromCharCode(N),Q):q(N)}function K(N){return N===93?(e.consume(N),j):q(N)}function j(N){return N===62?(e.consume(N),H):N===45&&a===2?(e.consume(N),j):q(N)}function H(N){return N===null||Te(N)?(e.exit("htmlFlowData"),P(N)):(e.consume(N),H)}function P(N){return e.exit("htmlFlow"),n(N)}}function _O(e,n,r){const l=this;return a;function a(u){return Te(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),s):r(u)}function s(u){return l.parser.lazy[l.now().line]?r(u):n(u)}}function EO(e,n,r){return l;function l(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(Ec,n,r)}}const NO={name:"htmlText",tokenize:kO};function kO(e,n,r){const l=this;let a,s,u;return f;function f(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),d}function d(j){return j===33?(e.consume(j),h):j===47?(e.consume(j),I):j===63?(e.consume(j),E):er(j)?(e.consume(j),D):r(j)}function h(j){return j===45?(e.consume(j),m):j===91?(e.consume(j),s=0,w):er(j)?(e.consume(j),T):r(j)}function m(j){return j===45?(e.consume(j),v):r(j)}function p(j){return j===null?r(j):j===45?(e.consume(j),y):Te(j)?(u=p,Y(j)):(e.consume(j),p)}function y(j){return j===45?(e.consume(j),v):p(j)}function v(j){return j===62?M(j):j===45?y(j):p(j)}function w(j){const H="CDATA[";return j===H.charCodeAt(s++)?(e.consume(j),s===H.length?k:w):r(j)}function k(j){return j===null?r(j):j===93?(e.consume(j),S):Te(j)?(u=k,Y(j)):(e.consume(j),k)}function S(j){return j===93?(e.consume(j),_):k(j)}function _(j){return j===62?M(j):j===93?(e.consume(j),_):k(j)}function T(j){return j===null||j===62?M(j):Te(j)?(u=T,Y(j)):(e.consume(j),T)}function E(j){return j===null?r(j):j===63?(e.consume(j),z):Te(j)?(u=E,Y(j)):(e.consume(j),E)}function z(j){return j===62?M(j):E(j)}function I(j){return er(j)?(e.consume(j),A):r(j)}function A(j){return j===45||bn(j)?(e.consume(j),A):R(j)}function R(j){return Te(j)?(u=R,Y(j)):Ke(j)?(e.consume(j),R):M(j)}function D(j){return j===45||bn(j)?(e.consume(j),D):j===47||j===62||on(j)?U(j):r(j)}function U(j){return j===47?(e.consume(j),M):j===58||j===95||er(j)?(e.consume(j),X):Te(j)?(u=U,Y(j)):Ke(j)?(e.consume(j),U):M(j)}function X(j){return j===45||j===46||j===58||j===95||bn(j)?(e.consume(j),X):B(j)}function B(j){return j===61?(e.consume(j),q):Te(j)?(u=B,Y(j)):Ke(j)?(e.consume(j),B):U(j)}function q(j){return j===null||j===60||j===61||j===62||j===96?r(j):j===34||j===39?(e.consume(j),a=j,ee):Te(j)?(u=q,Y(j)):Ke(j)?(e.consume(j),q):(e.consume(j),L)}function ee(j){return j===a?(e.consume(j),a=void 0,$):j===null?r(j):Te(j)?(u=ee,Y(j)):(e.consume(j),ee)}function L(j){return j===null||j===34||j===39||j===60||j===61||j===96?r(j):j===47||j===62||on(j)?U(j):(e.consume(j),L)}function $(j){return j===47||j===62||on(j)?U(j):r(j)}function M(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),n):r(j)}function Y(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),Q}function Q(j){return Ke(j)?st(e,K,"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):K(j)}function K(j){return e.enter("htmlTextData"),u(j)}}const Nm={name:"labelEnd",resolveAll:AO,resolveTo:MO,tokenize:jO},CO={tokenize:OO},TO={tokenize:DO},zO={tokenize:RO};function AO(e){let n=-1;const r=[];for(;++n=3&&(h===null||Te(h))?(e.exit("thematicBreak"),n(h)):r(h)}function d(h){return h===a?(e.consume(h),l++,d):(e.exit("thematicBreakSequence"),Ke(h)?st(e,f,"whitespace")(h):f(h))}}const ln={continuation:{tokenize:$O},exit:XO,name:"list",tokenize:YO},VO={partial:!0,tokenize:FO},GO={partial:!0,tokenize:PO};function YO(e,n,r){const l=this,a=l.events[l.events.length-1];let s=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return f;function f(v){const w=l.containerState.type||(v===42||v===43||v===45?"listUnordered":"listOrdered");if(w==="listUnordered"?!l.containerState.marker||v===l.containerState.marker:Up(v)){if(l.containerState.type||(l.containerState.type=w,e.enter(w,{_container:!0})),w==="listUnordered")return e.enter("listItemPrefix"),v===42||v===45?e.check(Yu,r,h)(v):h(v);if(!l.interrupt||v===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),d(v)}return r(v)}function d(v){return Up(v)&&++u<10?(e.consume(v),d):(!l.interrupt||u<2)&&(l.containerState.marker?v===l.containerState.marker:v===41||v===46)?(e.exit("listItemValue"),h(v)):r(v)}function h(v){return e.enter("listItemMarker"),e.consume(v),e.exit("listItemMarker"),l.containerState.marker=l.containerState.marker||v,e.check(Ec,l.interrupt?r:m,e.attempt(VO,y,p))}function m(v){return l.containerState.initialBlankLine=!0,s++,y(v)}function p(v){return Ke(v)?(e.enter("listItemPrefixWhitespace"),e.consume(v),e.exit("listItemPrefixWhitespace"),y):r(v)}function y(v){return l.containerState.size=s+l.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(v)}}function $O(e,n,r){const l=this;return l.containerState._closeFlow=void 0,e.check(Ec,a,s);function a(f){return l.containerState.furtherBlankLines=l.containerState.furtherBlankLines||l.containerState.initialBlankLine,st(e,n,"listItemIndent",l.containerState.size+1)(f)}function s(f){return l.containerState.furtherBlankLines||!Ke(f)?(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,u(f)):(l.containerState.furtherBlankLines=void 0,l.containerState.initialBlankLine=void 0,e.attempt(GO,n,u)(f))}function u(f){return l.containerState._closeFlow=!0,l.interrupt=void 0,st(e,e.attempt(ln,n,r),"linePrefix",l.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(f)}}function PO(e,n,r){const l=this;return st(e,a,"listItemIndent",l.containerState.size+1);function a(s){const u=l.events[l.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===l.containerState.size?n(s):r(s)}}function XO(e){e.exit(this.containerState.type)}function FO(e,n,r){const l=this;return st(e,a,"listItemPrefixWhitespace",l.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(s){const u=l.events[l.events.length-1];return!Ke(s)&&u&&u[1].type==="listItemPrefixWhitespace"?n(s):r(s)}}const ab={name:"setextUnderline",resolveTo:QO,tokenize:ZO};function QO(e,n){let r=e.length,l,a,s;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){l=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!s&&e[r][1].type==="definition"&&(s=r);const u={type:"setextHeading",start:{...e[l][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",s?(e.splice(a,0,["enter",u,n]),e.splice(s+1,0,["exit",e[l][1],n]),e[l][1].end={...e[s][1].end}):e[l][1]=u,e.push(["exit",u,n]),e}function ZO(e,n,r){const l=this;let a;return s;function s(h){let m=l.events.length,p;for(;m--;)if(l.events[m][1].type!=="lineEnding"&&l.events[m][1].type!=="linePrefix"&&l.events[m][1].type!=="content"){p=l.events[m][1].type==="paragraph";break}return!l.parser.lazy[l.now().line]&&(l.interrupt||p)?(e.enter("setextHeadingLine"),a=h,u(h)):r(h)}function u(h){return e.enter("setextHeadingLineSequence"),f(h)}function f(h){return h===a?(e.consume(h),f):(e.exit("setextHeadingLineSequence"),Ke(h)?st(e,d,"lineSuffix")(h):d(h))}function d(h){return h===null||Te(h)?(e.exit("setextHeadingLine"),n(h)):r(h)}}const KO={tokenize:JO};function JO(e){const n=this,r=e.attempt(Ec,l,e.attempt(this.parser.constructs.flowInitial,a,st(e,e.attempt(this.parser.constructs.flow,a,e.attempt(rO,a)),"linePrefix")));return r;function l(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),n.currentConstruct=void 0,r}function a(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),n.currentConstruct=void 0,r}}const WO={resolveAll:m_()},eD=p_("string"),tD=p_("text");function p_(e){return{resolveAll:m_(e==="text"?nD:void 0),tokenize:n};function n(r){const l=this,a=this.parser.constructs[e],s=r.attempt(a,u,f);return u;function u(m){return h(m)?s(m):f(m)}function f(m){if(m===null){r.consume(m);return}return r.enter("data"),r.consume(m),d}function d(m){return h(m)?(r.exit("data"),s(m)):(r.consume(m),d)}function h(m){if(m===null)return!0;const p=a[m];let y=-1;if(p)for(;++y-1){const f=u[0];typeof f=="string"?u[0]=f.slice(l):u.shift()}s>0&&u.push(e[a].slice(0,s))}return u}function mD(e,n){let r=-1;const l=[];let a;for(;++r0){const Xt=Ne.tokenStack[Ne.tokenStack.length-1];(Xt[1]||sb).call(Ne,void 0,Xt[0])}for(ge.position={start:fi(ue.length>0?ue[0][1].start:{line:1,column:1,offset:0}),end:fi(ue.length>0?ue[ue.length-2][1].end:{line:1,column:1,offset:0})},Ye=-1;++Ye0&&(l.className=["language-"+a[0]]);let s={type:"element",tagName:"code",properties:l,children:[{type:"text",value:r}]};return n.meta&&(s.data={meta:n.meta}),e.patch(n,s),s=e.applyData(n,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(n,s),s}function zD(e,n){const r={type:"element",tagName:"del",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function AD(e,n){const r={type:"element",tagName:"em",properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function MD(e,n){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",l=String(n.identifier).toUpperCase(),a=ua(l.toLowerCase()),s=e.footnoteOrder.indexOf(l);let u,f=e.footnoteCounts.get(l);f===void 0?(f=0,e.footnoteOrder.push(l),u=e.footnoteOrder.length):u=s+1,f+=1,e.footnoteCounts.set(l,f);const d={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(f>1?"-"+f:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(n,d);const h={type:"element",tagName:"sup",properties:{},children:[d]};return e.patch(n,h),e.applyData(n,h)}function jD(e,n){const r={type:"element",tagName:"h"+n.depth,properties:{},children:e.all(n)};return e.patch(n,r),e.applyData(n,r)}function OD(e,n){if(e.options.allowDangerousHtml){const r={type:"raw",value:n.value};return e.patch(n,r),e.applyData(n,r)}}function x_(e,n){const r=n.referenceType;let l="]";if(r==="collapsed"?l+="[]":r==="full"&&(l+="["+(n.label||n.identifier)+"]"),n.type==="imageReference")return[{type:"text",value:"!["+n.alt+l}];const a=e.all(n),s=a[0];s&&s.type==="text"?s.value="["+s.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=l:a.push({type:"text",value:l}),a}function DD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return x_(e,n);const a={src:ua(l.url||""),alt:n.alt};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"img",properties:a,children:[]};return e.patch(n,s),e.applyData(n,s)}function RD(e,n){const r={src:ua(n.url)};n.alt!==null&&n.alt!==void 0&&(r.alt=n.alt),n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"img",properties:r,children:[]};return e.patch(n,l),e.applyData(n,l)}function LD(e,n){const r={type:"text",value:n.value.replace(/\r?\n|\r/g," ")};e.patch(n,r);const l={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(n,l),e.applyData(n,l)}function HD(e,n){const r=String(n.identifier).toUpperCase(),l=e.definitionById.get(r);if(!l)return x_(e,n);const a={href:ua(l.url||"")};l.title!==null&&l.title!==void 0&&(a.title=l.title);const s={type:"element",tagName:"a",properties:a,children:e.all(n)};return e.patch(n,s),e.applyData(n,s)}function BD(e,n){const r={href:ua(n.url)};n.title!==null&&n.title!==void 0&&(r.title=n.title);const l={type:"element",tagName:"a",properties:r,children:e.all(n)};return e.patch(n,l),e.applyData(n,l)}function qD(e,n,r){const l=e.all(n),a=r?UD(r):v_(n),s={},u=[];if(typeof n.checked=="boolean"){const m=l[0];let p;m&&m.type==="element"&&m.tagName==="p"?p=m:(p={type:"element",tagName:"p",properties:{},children:[]},l.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:n.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let f=-1;for(;++f1}function ID(e,n){const r={},l=e.all(n);let a=-1;for(typeof n.start=="number"&&n.start!==1&&(r.start=n.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},f=vm(n.children[1]),d=WS(n.children[n.children.length-1]);f&&d&&(u.position={start:f,end:d}),a.push(u)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(n,s),e.applyData(n,s)}function PD(e,n,r){const l=r?r.children:void 0,s=(l?l.indexOf(n):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,f=u?u.length:n.children.length;let d=-1;const h=[];for(;++d0,!0),l[0]),a=l.index+l[0].length,l=r.exec(n);return s.push(fb(n.slice(a),a>0,!1)),s.join("")}function fb(e,n,r){let l=0,a=e.length;if(n){let s=e.codePointAt(l);for(;s===ub||s===cb;)l++,s=e.codePointAt(l)}if(r){let s=e.codePointAt(a-1);for(;s===ub||s===cb;)a--,s=e.codePointAt(a-1)}return a>l?e.slice(l,a):""}function QD(e,n){const r={type:"text",value:FD(String(n.value))};return e.patch(n,r),e.applyData(n,r)}function ZD(e,n){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(n,r),e.applyData(n,r)}const KD={blockquote:kD,break:CD,code:TD,delete:zD,emphasis:AD,footnoteReference:MD,heading:jD,html:OD,imageReference:DD,image:RD,inlineCode:LD,linkReference:HD,link:BD,listItem:qD,list:ID,paragraph:VD,root:GD,strong:YD,table:$D,tableCell:XD,tableRow:PD,text:QD,thematicBreak:ZD,toml:Du,yaml:Du,definition:Du,footnoteDefinition:Du};function Du(){}const b_=-1,Nc=0,Eo=1,ac=2,km=3,Cm=4,Tm=5,zm=6,w_=7,S_=8,db=typeof self=="object"?self:globalThis,JD=(e,n)=>{const r=(a,s)=>(e.set(s,a),a),l=a=>{if(e.has(a))return e.get(a);const[s,u]=n[a];switch(s){case Nc:case b_:return r(u,a);case Eo:{const f=r([],a);for(const d of u)f.push(l(d));return f}case ac:{const f=r({},a);for(const[d,h]of u)f[l(d)]=l(h);return f}case km:return r(new Date(u),a);case Cm:{const{source:f,flags:d}=u;return r(new RegExp(f,d),a)}case Tm:{const f=r(new Map,a);for(const[d,h]of u)f.set(l(d),l(h));return f}case zm:{const f=r(new Set,a);for(const d of u)f.add(l(d));return f}case w_:{const{name:f,message:d}=u;return r(new db[f](d),a)}case S_:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:f}=new Uint8Array(u);return r(new DataView(f),u)}}return r(new db[s](u),a)};return l},hb=e=>JD(new Map,e)(0),Gl="",{toString:WD}={},{keys:eR}=Object,ho=e=>{const n=typeof e;if(n!=="object"||!e)return[Nc,n];const r=WD.call(e).slice(8,-1);switch(r){case"Array":return[Eo,Gl];case"Object":return[ac,Gl];case"Date":return[km,Gl];case"RegExp":return[Cm,Gl];case"Map":return[Tm,Gl];case"Set":return[zm,Gl];case"DataView":return[Eo,r]}return r.includes("Array")?[Eo,r]:r.includes("Error")?[w_,r]:[ac,r]},Ru=([e,n])=>e===Nc&&(n==="function"||n==="symbol"),tR=(e,n,r,l)=>{const a=(u,f)=>{const d=l.push(u)-1;return r.set(f,d),d},s=u=>{if(r.has(u))return r.get(u);let[f,d]=ho(u);switch(f){case Nc:{let m=u;switch(d){case"bigint":f=S_,m=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+d);m=null;break;case"undefined":return a([b_],u)}return a([f,m],u)}case Eo:{if(d){let y=u;return d==="DataView"?y=new Uint8Array(u.buffer):d==="ArrayBuffer"&&(y=new Uint8Array(u)),a([d,[...y]],u)}const m=[],p=a([f,m],u);for(const y of u)m.push(s(y));return p}case ac:{if(d)switch(d){case"BigInt":return a([d,u.toString()],u);case"Boolean":case"Number":case"String":return a([d,u.valueOf()],u)}if(n&&"toJSON"in u)return s(u.toJSON());const m=[],p=a([f,m],u);for(const y of eR(u))(e||!Ru(ho(u[y])))&&m.push([s(y),s(u[y])]);return p}case km:return a([f,u.toISOString()],u);case Cm:{const{source:m,flags:p}=u;return a([f,{source:m,flags:p}],u)}case Tm:{const m=[],p=a([f,m],u);for(const[y,v]of u)(e||!(Ru(ho(y))||Ru(ho(v))))&&m.push([s(y),s(v)]);return p}case zm:{const m=[],p=a([f,m],u);for(const y of u)(e||!Ru(ho(y)))&&m.push(s(y));return p}}const{message:h}=u;return a([f,{name:d,message:h}],u)};return s},pb=(e,{json:n,lossy:r}={})=>{const l=[];return tR(!(n||r),!!n,new Map,l)(e),l},oc=typeof structuredClone=="function"?(e,n)=>n&&("json"in n||"lossy"in n)?hb(pb(e,n)):structuredClone(e):(e,n)=>hb(pb(e,n));function nR(e,n){const r=[{type:"text",value:"↩"}];return n>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(n)}]}),r}function rR(e,n){return"Back to reference "+(e+1)+(n>1?"-"+n:"")}function iR(e){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||nR,l=e.options.footnoteBackLabel||rR,a=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},f=[];let d=-1;for(;++d0&&w.push({type:"text",value:" "});let T=typeof r=="string"?r:r(d,v);typeof T=="string"&&(T={type:"text",value:T}),w.push({type:"element",tagName:"a",properties:{href:"#"+n+"fnref-"+y+(v>1?"-"+v:""),dataFootnoteBackref:"",ariaLabel:typeof l=="string"?l:l(d,v),className:["data-footnote-backref"]},children:Array.isArray(T)?T:[T]})}const S=m[m.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const T=S.children[S.children.length-1];T&&T.type==="text"?T.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...w)}else m.push(...w);const _={type:"element",tagName:"li",properties:{id:n+"fn-"+y},children:e.wrap(m,!0)};e.patch(h,_),f.push(_)}if(f.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...oc(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(f,!0)},{type:"text",value:` -`}]}}const __=(function(e){if(e==null)return sR;if(typeof e=="function")return kc(e);if(typeof e=="object")return Array.isArray(e)?lR(e):aR(e);if(typeof e=="string")return oR(e);throw new Error("Expected function, string, or object as test")});function lR(e){const n=[];let r=-1;for(;++r":""))+")"})}return y;function y(){let v=E_,w,k,S;if((!n||s(d,h,m[m.length-1]||void 0))&&(v=hR(r(d,m)),v[0]===mb))return v;if("children"in d&&d.children){const _=d;if(_.children&&v[0]!==fR)for(k=(l?_.children.length:-1)+u,S=m.concat(_);k>-1&&k<_.children.length;){const T=_.children[k];if(w=f(T,k,S)(),w[0]===mb)return w;k=typeof w[1]=="number"?w[1]:k+u}}return v}}}function hR(e){return Array.isArray(e)?e:typeof e=="number"?[cR,e]:e==null?E_:[e]}function N_(e,n,r,l){let a,s,u;typeof n=="function"&&typeof r!="function"?(s=void 0,u=n,a=r):(s=n,u=r,a=l),dR(e,s,f,a);function f(d,h){const m=h[h.length-1],p=m?m.children.indexOf(d):void 0;return u(d,p,m)}}const Vp={}.hasOwnProperty,pR={};function mR(e,n){const r=n||pR,l=new Map,a=new Map,s=new Map,u={...KD,...r.handlers},f={all:h,applyData:yR,definitionById:l,footnoteById:a,footnoteCounts:s,footnoteOrder:[],handlers:u,one:d,options:r,patch:gR,wrap:vR};return N_(e,function(m){if(m.type==="definition"||m.type==="footnoteDefinition"){const p=m.type==="definition"?l:a,y=String(m.identifier).toUpperCase();p.has(y)||p.set(y,m)}}),f;function d(m,p){const y=m.type,v=f.handlers[y];if(Vp.call(f.handlers,y)&&v)return v(f,m,p);if(f.options.passThrough&&f.options.passThrough.includes(y)){if("children"in m){const{children:k,...S}=m,_=oc(S);return _.children=f.all(m),_}return oc(m)}return(f.options.unknownHandler||xR)(f,m,p)}function h(m){const p=[];if("children"in m){const y=m.children;let v=-1;for(;++v0&&r.push({type:"text",value:` -`}),r}function gb(e){let n=0,r=e.charCodeAt(n);for(;r===9||r===32;)n++,r=e.charCodeAt(n);return e.slice(n)}function yb(e,n){const r=mR(e,n),l=r.one(e,void 0),a=iR(r),s=Array.isArray(l)?{type:"root",children:l}:l||{type:"root",children:[]};return a&&s.children.push({type:"text",value:` -`},a),s}function bR(e,n){return e&&"run"in e?async function(r,l){const a=yb(r,{file:l,...n});await e.run(a,l)}:function(r,l){return yb(r,{file:l,...e||n})}}function xb(e){if(e)throw e}var sp,vb;function wR(){if(vb)return sp;vb=1;var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,l=Object.getOwnPropertyDescriptor,a=function(h){return typeof Array.isArray=="function"?Array.isArray(h):n.call(h)==="[object Array]"},s=function(h){if(!h||n.call(h)!=="[object Object]")return!1;var m=e.call(h,"constructor"),p=h.constructor&&h.constructor.prototype&&e.call(h.constructor.prototype,"isPrototypeOf");if(h.constructor&&!m&&!p)return!1;var y;for(y in h);return typeof y>"u"||e.call(h,y)},u=function(h,m){r&&m.name==="__proto__"?r(h,m.name,{enumerable:!0,configurable:!0,value:m.newValue,writable:!0}):h[m.name]=m.newValue},f=function(h,m){if(m==="__proto__")if(e.call(h,m)){if(l)return l(h,m).value}else return;return h[m]};return sp=function d(){var h,m,p,y,v,w,k=arguments[0],S=1,_=arguments.length,T=!1;for(typeof k=="boolean"&&(T=k,k=arguments[1]||{},S=2),(k==null||typeof k!="object"&&typeof k!="function")&&(k={});S<_;++S)if(h=arguments[S],h!=null)for(m in h)p=f(k,m),y=f(h,m),k!==y&&(T&&y&&(s(y)||(v=a(y)))?(v?(v=!1,w=p&&a(p)?p:[]):w=p&&s(p)?p:{},u(k,{name:m,newValue:d(T,w,y)})):typeof y<"u"&&u(k,{name:m,newValue:y}));return k},sp}var SR=wR();const up=Bo(SR);function Gp(e){if(typeof e!="object"||e===null)return!1;const n=Object.getPrototypeOf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _R(){const e=[],n={run:r,use:l};return n;function r(...a){let s=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);f(null,...a);function f(d,...h){const m=e[++s];let p=-1;if(d){u(d);return}for(;++pu.length;let d;f&&u.push(a);try{d=e.apply(this,u)}catch(h){const m=h;if(f&&r)throw m;return a(m)}f||(d&&d.then&&typeof d.then=="function"?d.then(s,a):d instanceof Error?a(d):s(d))}function a(u,...f){r||(r=!0,n(u,...f))}function s(u){a(null,u)}}const Jn={basename:NR,dirname:kR,extname:CR,join:TR,sep:"/"};function NR(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Zo(e);let r=0,l=-1,a=e.length,s;if(n===void 0||n.length===0||n.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else l<0&&(s=!0,l=a+1);return l<0?"":e.slice(r,l)}if(n===e)return"";let u=-1,f=n.length-1;for(;a--;)if(e.codePointAt(a)===47){if(s){r=a+1;break}}else u<0&&(s=!0,u=a+1),f>-1&&(e.codePointAt(a)===n.codePointAt(f--)?f<0&&(l=a):(f=-1,l=u));return r===l?l=u:l<0&&(l=e.length),e.slice(r,l)}function kR(e){if(Zo(e),e.length===0)return".";let n=-1,r=e.length,l;for(;--r;)if(e.codePointAt(r)===47){if(l){n=r;break}}else l||(l=!0);return n<0?e.codePointAt(0)===47?"/":".":n===1&&e.codePointAt(0)===47?"//":e.slice(0,n)}function CR(e){Zo(e);let n=e.length,r=-1,l=0,a=-1,s=0,u;for(;n--;){const f=e.codePointAt(n);if(f===47){if(u){l=n+1;break}continue}r<0&&(u=!0,r=n+1),f===46?a<0?a=n:s!==1&&(s=1):a>-1&&(s=-1)}return a<0||r<0||s===0||s===1&&a===r-1&&a===l+1?"":e.slice(a,r)}function TR(...e){let n=-1,r;for(;++n0&&e.codePointAt(e.length-1)===47&&(r+="/"),n?"/"+r:r}function AR(e,n){let r="",l=0,a=-1,s=0,u=-1,f,d;for(;++u<=e.length;){if(u2){if(d=r.lastIndexOf("/"),d!==r.length-1){d<0?(r="",l=0):(r=r.slice(0,d),l=r.length-1-r.lastIndexOf("/")),a=u,s=0;continue}}else if(r.length>0){r="",l=0,a=u,s=0;continue}}n&&(r=r.length>0?r+"/..":"..",l=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),l=u-a-1;a=u,s=0}else f===46&&s>-1?s++:s=-1}return r}function Zo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const MR={cwd:jR};function jR(){return"/"}function Yp(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function OR(e){if(typeof e=="string")e=new URL(e);else if(!Yp(e)){const n=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw n.code="ERR_INVALID_ARG_TYPE",n}if(e.protocol!=="file:"){const n=new TypeError("The URL must be of scheme file");throw n.code="ERR_INVALID_URL_SCHEME",n}return DR(e)}function DR(e){if(e.hostname!==""){const l=new TypeError('File URL host must be "localhost" or empty on darwin');throw l.code="ERR_INVALID_FILE_URL_HOST",l}const n=e.pathname;let r=-1;for(;++r0){let[v,...w]=m;const k=l[y][1];Gp(k)&&Gp(v)&&(v=up(!0,k,v)),l[y]=[h,v,...w]}}}}const BR=new Am().freeze();function hp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function pp(e,n){if(typeof n!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function mp(e,n){if(n)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function wb(e){if(!Gp(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Sb(e,n,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+n+"` instead")}function Lu(e){return qR(e)?e:new k_(e)}function qR(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function UR(e){return typeof e=="string"||IR(e)}function IR(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const VR="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",_b=[],Eb={allowDangerousHtml:!0},GR=/^(https?|ircs?|mailto|xmpp)$/i,YR=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function $R(e){const n=PR(e),r=XR(e);return FR(n.runSync(n.parse(r),r),e)}function PR(e){const n=e.rehypePlugins||_b,r=e.remarkPlugins||_b,l=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Eb}:Eb;return BR().use(ND).use(r).use(bR,l).use(n)}function XR(e){const n=e.children||"",r=new k_;return typeof n=="string"&&(r.value=n),r}function FR(e,n){const r=n.allowedElements,l=n.allowElement,a=n.components,s=n.disallowedElements,u=n.skipHtml,f=n.unwrapDisallowed,d=n.urlTransform||QR;for(const m of YR)Object.hasOwn(n,m.from)&&(""+m.from+(m.to?"use `"+m.to+"` instead":"remove it")+VR+m.id,void 0);return N_(e,h),i4(e,{Fragment:b.Fragment,components:a,ignoreInvalidStyle:!0,jsx:b.jsx,jsxs:b.jsxs,passKeys:!0,passNode:!0});function h(m,p,y){if(m.type==="raw"&&y&&typeof p=="number")return u?y.children.splice(p,1):y.children[p]={type:"text",value:m.value},p;if(m.type==="element"){let v;for(v in lp)if(Object.hasOwn(lp,v)&&Object.hasOwn(m.properties,v)){const w=m.properties[v],k=lp[v];(k===null||k.includes(m.tagName))&&(m.properties[v]=d(String(w||""),v,m))}}if(m.type==="element"){let v=r?!r.includes(m.tagName):s?s.includes(m.tagName):!1;if(!v&&l&&typeof p=="number"&&(v=!l(m,p,y)),v&&y&&typeof p=="number")return f&&m.children?y.children.splice(p,1,...m.children):y.children.splice(p,1),p}}}function QR(e){const n=e.indexOf(":"),r=e.indexOf("?"),l=e.indexOf("#"),a=e.indexOf("/");return n===-1||a!==-1&&n>a||r!==-1&&n>r||l!==-1&&n>l||GR.test(e.slice(0,n))?e:""}function ZR({node:e}){const n=he(E=>E.sendGateResponse),r=he(E=>E.wsStatus),[l,a]=V.useState(null),[s,u]=V.useState(""),[f,d]=V.useState(null),[h,m]=V.useState(!1),p=e.status==="waiting",y=e.status==="completed";V.useEffect(()=>{p&&(a(null),u(""),d(null),m(!1))},[p]);const v=p&&r==="connected"&&l===null,w=(E,z)=>{if(v){if(z){a(E),d(z);return}a(E),m(!0),n(e.name,E)}},k=()=>{if(l===null||f===null)return;const E={[f]:s};m(!0),n(e.name,l,E),d(null)},S=e.option_details,_=S==null?void 0:S.find(E=>E.value===e.selected_option),T=(_==null?void 0:_.label)||e.selected_option;return b.jsxs("div",{className:"space-y-3",children:[p&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30",children:[b.jsxs("span",{className:"relative flex h-2.5 w-2.5 flex-shrink-0",children:[b.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),b.jsx("span",{className:"relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"})]}),b.jsx("span",{className:"text-xs font-semibold text-amber-400 tracking-wide",children:"Decision Required"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-amber-500/50 pl-3 py-0.5",children:b.jsx(gp,{text:e.prompt,muted:!1})}),S&&S.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsx("div",{className:"flex flex-col gap-1.5",children:S.map(E=>{const z=l===E.value,I=l!==null&&!z;return b.jsx("button",{disabled:!v&&!z,onClick:()=>w(E.value,E.prompt_for),className:`w-full text-left px-3 py-2.5 rounded-lg border transition-all duration-150 ${z?"border-green-500/60 bg-green-500/10":I?"border-[var(--border)] opacity-40 cursor-default":"border-[var(--border)] bg-[var(--surface)] hover:border-amber-400/60 hover:bg-amber-500/5 cursor-pointer group"}`,children:b.jsxs("div",{className:"flex items-center gap-2.5",children:[b.jsx("div",{className:"flex-shrink-0",children:z?b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}):b.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-colors ${I?"border-[var(--border)]":"border-[var(--border)] group-hover:border-amber-400"}`})}),b.jsx("div",{className:"flex-1 min-w-0",children:b.jsx("span",{className:`text-xs font-medium ${z?"text-green-400":"text-[var(--text)]"}`,children:E.label})}),E.route&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] flex-shrink-0",children:["→ ",E.route]})]})},E.value)})}),h&&!f&&b.jsxs("div",{className:"flex items-center gap-2 px-1",children:[b.jsx(No,{className:"w-3 h-3 text-green-400 animate-spin"}),b.jsx("span",{className:"text-[10px] text-green-400",children:"Sending..."})]}),v&&b.jsx("p",{className:"text-[10px] text-[var(--text-muted)] px-1",children:"Select an option to continue the workflow"})]}),!S&&e.options&&e.options.length>0&&b.jsxs("div",{className:"space-y-1.5",children:[b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:"Options"}),b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded border border-[var(--border)] text-[var(--text-muted)]",children:E},E))})]}),f&&b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--bg)] overflow-hidden",children:[b.jsx("div",{className:"px-3 py-2 border-b border-[var(--border)] bg-[var(--surface)]",children:b.jsx("h4",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:f})}),b.jsxs("div",{className:"p-3 space-y-2",children:[b.jsx("input",{type:"text",value:s,onChange:E=>u(E.target.value),onKeyDown:E=>E.key==="Enter"&&k(),placeholder:`Enter ${f}...`,className:"w-full text-xs px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--bg)] text-[var(--text)] outline-none focus:border-amber-400 transition-colors",autoFocus:!0}),b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:"Press Enter or click Submit"}),b.jsxs("button",{onClick:k,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-amber-500 text-white hover:bg-amber-600 transition-colors font-medium",children:[b.jsx(sN,{className:"w-3 h-3"}),"Submit"]})]})]})]})]}),y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg bg-green-500/10 border border-green-500/30",children:[b.jsx(Vi,{className:"w-3.5 h-3.5 text-green-400 flex-shrink-0"}),b.jsx("span",{className:"text-xs font-semibold text-green-400 tracking-wide",children:"Decision Completed"})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(gp,{text:e.prompt,muted:!0})}),T&&b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[b.jsx("div",{className:"w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0",children:b.jsx(Vi,{className:"w-2.5 h-2.5 text-white",strokeWidth:3})}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)]",children:T}),e.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",e.route]})]}),S&&S.length>1&&b.jsx("div",{className:"space-y-1",children:S.filter(E=>E.value!==e.selected_option).map(E=>b.jsxs("div",{className:"flex items-center gap-2.5 px-3 py-2 rounded-lg opacity-35",children:[b.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-[var(--border)] flex-shrink-0"}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:E.label}),E.route&&b.jsxs("span",{className:"ml-auto text-[10px] text-[var(--text-muted)]",children:["→ ",E.route]})]},E.value))}),!S&&e.options&&e.options.length>0&&b.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.options.map(E=>b.jsxs("span",{className:`text-[11px] px-2.5 py-1 rounded-lg border ${E===e.selected_option?"border-green-500/30 text-green-400 bg-green-500/5":"border-[var(--border)] text-[var(--text-muted)] opacity-40"}`,children:[E===e.selected_option&&"✓ ",E]},E))}),b.jsx(KR,{node:e})]}),!p&&!y&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Human Gate"}),b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] capitalize",children:["(",e.status,")"]})]}),e.prompt&&b.jsx("div",{className:"border-l-2 border-[var(--border)] pl-3 py-0.5",children:b.jsx(gp,{text:e.prompt,muted:!0})})]})]})}function gp({text:e,muted:n}){const r=n?"text-[var(--text-muted)]":"text-[var(--text)]";return b.jsx("div",{className:`gate-markdown text-xs leading-relaxed ${r}`,children:b.jsx($R,{components:{h1:({children:l})=>b.jsx("h1",{className:"text-sm font-bold mb-2 mt-1",children:l}),h2:({children:l})=>b.jsx("h2",{className:"text-xs font-bold mb-1.5 mt-1",children:l}),h3:({children:l})=>b.jsx("h3",{className:"text-xs font-semibold mb-1 mt-1",children:l}),p:({children:l})=>b.jsx("p",{className:"mb-1.5 last:mb-0",children:l}),ul:({children:l})=>b.jsx("ul",{className:"list-disc list-inside mb-1.5 space-y-0.5",children:l}),ol:({children:l})=>b.jsx("ol",{className:"list-decimal list-inside mb-1.5 space-y-0.5",children:l}),li:({children:l})=>b.jsx("li",{children:l}),code:({children:l,className:a})=>(a==null?void 0:a.includes("language-"))?b.jsx("code",{className:"block bg-[var(--bg)] border border-[var(--border)] rounded px-2 py-1.5 font-mono text-[11px] my-1 overflow-x-auto whitespace-pre",children:l}):b.jsx("code",{className:"bg-[var(--bg)] border border-[var(--border)] rounded px-1 py-0.5 font-mono text-[11px]",children:l}),pre:({children:l})=>b.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md px-2.5 py-2 font-mono text-[11px] my-1.5 overflow-x-auto",children:l}),strong:({children:l})=>b.jsx("strong",{className:"font-semibold",children:l}),em:({children:l})=>b.jsx("em",{className:"italic",children:l}),a:({href:l,children:a})=>b.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300 underline underline-offset-2",children:a}),blockquote:({children:l})=>b.jsx("blockquote",{className:"border-l-2 border-[var(--border)] pl-2.5 my-1.5 opacity-80",children:l}),hr:()=>b.jsx("hr",{className:"border-[var(--border)] my-2"})},children:e})})}function KR({node:e}){const n=[];if(e.route&&n.push({label:"Route",value:`→ ${e.route}`}),e.additional_input){const r=typeof e.additional_input=="object"?JSON.stringify(e.additional_input):e.additional_input;n.push({label:"Additional Input",value:r})}return n.length===0?null:b.jsx(Wi,{items:n})}function JR({node:e}){const n=e.status,r=$e[n]||$e.pending,a=he(m=>m.getViewedContext()).groupProgress[e.name],s=e.type==="for_each_group",[u,f]=V.useState(!0),d=[];e.elapsed!=null&&d.push({label:"Elapsed",value:Qt(e.elapsed)}),a&&(d.push({label:"Total",value:a.total}),d.push({label:"Completed",value:a.completed}),a.failed>0&&d.push({label:"Failed",value:a.failed})),e.success_count!=null&&d.push({label:"Success",value:e.success_count}),e.failure_count!=null&&d.push({label:"Failures",value:e.failure_count});const h=e.for_each_items;return b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:s?"For-Each Group":"Parallel Group"})]}),a&&a.total>0&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-[10px] text-[var(--text-muted)]",children:[b.jsx("span",{children:"Progress"}),b.jsxs("span",{children:[a.completed+a.failed,"/",a.total]})]}),b.jsx("div",{className:"h-1.5 bg-[var(--bg)] rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${(a.completed+a.failed)/a.total*100}%`,background:a.failed>0?`linear-gradient(90deg, var(--completed) ${a.completed/(a.completed+a.failed)*100}%, var(--failed) 0%)`:"var(--completed)"}})})]}),b.jsx(Wi,{items:d}),s&&h&&h.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("button",{onClick:()=>f(!u),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold hover:text-[var(--text)] transition-colors",children:[u?b.jsx(Ji,{className:"w-3 h-3"}):b.jsx(Mr,{className:"w-3 h-3"}),"Items (",h.length,")"]}),u&&b.jsx("div",{className:"space-y-1",children:h.map(m=>b.jsx(e6,{item:m},`${m.key}-${m.index}`))})]})]})}const WR={running:$e.running,completed:$e.completed,failed:$e.failed};function e6({item:e}){const[n,r]=V.useState(e.status==="running"),l=WR[e.status],a=!!(e.prompt||e.output!=null||e.activity&&e.activity.length>0||e.error_type),s=[];return e.elapsed!=null&&s.push({label:"Elapsed",value:Qt(e.elapsed)}),e.tokens!=null&&s.push({label:"Tokens",value:Vn(e.tokens)}),e.cost_usd!=null&&s.push({label:"Cost",value:mi(e.cost_usd)}),b.jsxs("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--surface)] overflow-hidden",children:[b.jsxs("button",{onClick:()=>a&&r(!n),className:"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--node-bg)] transition-colors",disabled:!a,children:[a?n?b.jsx(Ji,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):b.jsx(Mr,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}):e.status==="running"?b.jsx(No,{className:"w-3 h-3 animate-spin flex-shrink-0",style:{color:l}}):b.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0 ml-0.5 mr-0.5",style:{backgroundColor:l}}),b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate flex-1 min-w-0",children:e.key}),!n&&(e.elapsed!=null||e.tokens!=null||e.cost_usd!=null)&&b.jsxs("span",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)] flex-shrink-0",children:[e.elapsed!=null&&b.jsx("span",{children:Qt(e.elapsed)}),e.tokens!=null&&b.jsx("span",{children:Vn(e.tokens)}),e.cost_usd!=null&&b.jsx("span",{children:mi(e.cost_usd)})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${l}20`,color:l},children:e.status})]}),n&&a&&b.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[s.length>0&&b.jsx(Wi,{items:s}),e.prompt&&b.jsx(Ki,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!1}),e.activity&&e.activity.length>0&&b.jsx(gm,{activity:e.activity,defaultExpanded:e.status!=="completed"}),e.output!=null&&b.jsx(Ki,{output:e.output,title:"Output",defaultExpanded:!0}),e.status==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]})]})]})}function t6({node:e}){const n=e.status,r=$e[n]||$e.pending,l=he(f=>f.navigateIntoSubworkflow),s=he(f=>f.getViewedContext()).subworkflowContexts.filter(f=>f.parentAgent===e.name),u=[];return e.elapsed!=null&&u.push({label:"Elapsed",value:Qt(e.elapsed)}),e.cost_usd!=null&&u.push({label:"Cost",value:mi(e.cost_usd)}),e.tokens!=null&&u.push({label:"Tokens",value:Vn(e.tokens)}),e.iteration!=null&&e.iteration>1&&u.push({label:"Iteration",value:e.iteration}),b.jsxs("div",{className:"space-y-4",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:n}),b.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Subworkflow Agent"})]}),b.jsx(Wi,{items:u}),s.length>0&&b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"text-[10px] uppercase tracking-wider text-[var(--text-muted)] font-semibold",children:["Subworkflow Runs (",s.length,")"]}),b.jsx("div",{className:"space-y-1",children:s.map((f,d)=>b.jsx(n6,{ctx:f,onClick:()=>l(e.name,f.iteration)},`${f.parentAgent}-${f.iteration}-${d}`))})]}),n==="failed"&&(e.error_type||e.error_message)&&b.jsxs("div",{className:"text-xs text-red-400",children:[e.error_type&&b.jsx("span",{className:"font-semibold",children:e.error_type}),e.error_message&&b.jsxs("span",{className:"ml-1",children:["— ",e.error_message]})]}),s.length===0&&n==="pending"&&b.jsx("div",{className:"text-xs text-[var(--text-muted)] italic",children:"Subworkflow has not started yet."})]})}function n6({ctx:e,onClick:n}){const r=$e[e.status]||$e.pending;return b.jsxs("button",{onClick:n,className:"flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--surface)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[b.jsx($p,{className:"w-3.5 h-3.5 flex-shrink-0",style:{color:r}}),b.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[b.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:e.workflowName||e.workflowFile||"Subworkflow"}),b.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-[var(--text-muted)]",children:[e.agentsTotal>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(jb,{className:"w-2.5 h-2.5"}),e.agentsCompleted,"/",e.agentsTotal," agents"]}),e.totalCost>0&&b.jsxs("span",{className:"flex items-center gap-0.5",children:[b.jsx(Ab,{className:"w-2.5 h-2.5"}),mi(e.totalCost)]})]})]}),b.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider flex-shrink-0 px-1.5 py-0.5 rounded",style:{backgroundColor:`${r}20`,color:r},children:e.status}),b.jsx(Mr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}function r6(){const e=he(f=>f.selectedNode),n=he(f=>f.getViewedContext()),r=he(f=>f.selectNode),[l,a]=V.useState(!1);V.useEffect(()=>(requestAnimationFrame(()=>a(!0)),()=>a(!1)),[e]);const s=e?n.nodes[e]:null;if(!e||!s)return b.jsxs("div",{className:"h-full flex flex-col bg-[var(--surface)]",children:[b.jsx("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Detail"})}),b.jsx("div",{className:"flex-1 flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Click a node to view details"})})]});const u=(()=>{switch(s.type){case"script":return z5;case"human_gate":return ZR;case"parallel_group":case"for_each_group":return JR;case"workflow":return t6;default:return C5}})();return b.jsxs("div",{className:Be("h-full flex flex-col bg-[var(--surface)] transition-all duration-150 ease-out",l?"translate-x-0 opacity-100":"translate-x-4 opacity-0"),children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)] flex-shrink-0",children:[b.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] truncate",children:e}),b.jsx("button",{onClick:()=>r(null),className:"p-1 rounded hover:bg-[var(--surface-hover)] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Close panel",children:b.jsx(Uo,{className:"w-4 h-4"})})]}),b.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:b.jsx(u,{node:s})})]})}function $u(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function i6(){const e=he(S=>S.eventLog),n=he(S=>S.activityLog),r=he(S=>S.workflowOutput),l=he(S=>S.workflowStatus),[a,s]=V.useState("log"),[u,f]=V.useState(!1),[d,h]=V.useState(0),[m,p]=V.useState(0),y=V.useCallback(S=>{s(S),S==="log"&&h(e.length),S==="activity"&&p(n.length)},[e.length,n.length]);V.useEffect(()=>{a==="log"&&h(e.length)},[a,e.length]),V.useEffect(()=>{a==="activity"&&p(n.length)},[a,n.length]),V.useEffect(()=>{l==="completed"&&r!=null&&s("output")},[l,r]);const v=r!=null,w=a!=="log"?Math.max(0,e.length-d):0,k=a!=="activity"?Math.max(0,n.length-m):0;return u?b.jsx("div",{className:"flex items-center bg-[var(--surface)] border-t border-[var(--border)] px-3 py-1",children:b.jsxs("button",{onClick:()=>f(!1),className:"flex items-center gap-1.5 text-xs text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",children:[b.jsx(Z2,{className:"w-3 h-3"}),b.jsx(_x,{className:"w-3 h-3"}),b.jsx("span",{children:"Output"}),n.length>0&&b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)]",children:["(",n.length,")"]})]})}):b.jsxs("div",{className:"flex flex-col h-full bg-[var(--surface)] border-t border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center justify-between px-2 flex-shrink-0 border-b border-[var(--border)]",children:[b.jsxs("div",{className:"flex items-center gap-0.5",children:[b.jsx(yp,{active:a==="log",onClick:()=>y("log"),icon:b.jsx(_x,{className:"w-3 h-3"}),label:"Log",count:e.length,unread:w}),b.jsx(yp,{active:a==="activity",onClick:()=>y("activity"),icon:b.jsx(zb,{className:"w-3 h-3"}),label:"Activity",count:n.length,unread:k}),b.jsx(yp,{active:a==="output",onClick:()=>y("output"),icon:b.jsx(nN,{className:"w-3 h-3"}),label:"Output",badge:v?l==="failed"?"error":"success":void 0})]}),b.jsx("button",{onClick:()=>f(!0),className:"p-1 rounded text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--surface-hover)] transition-colors",title:"Collapse panel",children:b.jsx(Ji,{className:"w-3.5 h-3.5"})})]}),b.jsx("div",{className:"flex-1 overflow-hidden",children:a==="activity"?b.jsx(l6,{entries:n}):a==="log"?b.jsx(a6,{entries:e}):b.jsx(o6,{output:r,status:l})})]})}function yp({active:e,onClick:n,icon:r,label:l,count:a,badge:s,unread:u}){return b.jsxs("button",{onClick:n,className:Be("relative flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors border-b-2 -mb-px",e?"text-[var(--text)] border-[var(--accent)]":"text-[var(--text-muted)] border-transparent hover:text-[var(--text-secondary)]"),children:[r,b.jsx("span",{children:l}),a!=null&&a>0&&b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums",children:a}),s&&b.jsx("span",{className:Be("w-1.5 h-1.5 rounded-full",s==="success"?"bg-[var(--completed)]":"bg-[var(--failed)]")}),!e&&u!=null&&u>0&&b.jsx("span",{className:"absolute -top-0.5 -right-0.5 flex h-3.5 min-w-[14px] items-center justify-center rounded-full bg-[var(--accent)] px-1",children:b.jsx("span",{className:"text-[8px] font-bold text-white leading-none tabular-nums",children:u>99?"99+":u})})]})}const Nb={reasoning:{color:"text-indigo-400/70",label:"THINK",labelColor:"text-indigo-500"},"tool-start":{color:"text-blue-400",label:"TOOL →",labelColor:"text-blue-500"},"tool-complete":{color:"text-green-400",label:"TOOL ←",labelColor:"text-green-600"},turn:{color:"text-amber-400",label:"STEP",labelColor:"text-amber-500"},message:{color:"text-[var(--text)]",label:"MSG",labelColor:"text-[var(--text-muted)]"},prompt:{color:"text-cyan-400/70",label:"PROMPT",labelColor:"text-cyan-600"}};function l6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(d=>d.selectNode),[a,s]=V.useState(""),u=V.useCallback(()=>{const d=n.current;if(!d)return;const h=d.scrollHeight-d.scrollTop-d.clientHeight<30;r.current=h},[]),f=V.useMemo(()=>{if(!a)return e;const d=a.toLowerCase();return e.filter(h=>h.source.toLowerCase().includes(d)||$u(h.message).toLowerCase().includes(d))},[e,a]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[f.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for agent activity…"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx(oN,{className:"w-3 h-3 text-[var(--text-muted)] flex-shrink-0"}),b.jsx("input",{type:"text",value:a,onChange:d=>s(d.target.value),placeholder:"Filter by agent or message…",className:"flex-1 bg-transparent text-[11px] text-[var(--text)] placeholder:text-[var(--text-muted)] outline-none min-w-0"}),a&&b.jsxs(b.Fragment,{children:[b.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] tabular-nums flex-shrink-0",children:[f.length," of ",e.length]}),b.jsx("button",{onClick:()=>s(""),className:"text-[var(--text-muted)] hover:text-[var(--text)] transition-colors flex-shrink-0",title:"Clear filter",children:b.jsx(Uo,{className:"w-3 h-3"})})]})]}),b.jsxs("div",{ref:n,onScroll:u,className:"flex-1 overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:[f.map((d,h)=>{const m=Nb[d.type]||Nb.message,p=C_(d.timestamp);return b.jsxs("div",{className:"group",children:[b.jsxs("div",{className:"flex gap-1.5 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:p}),b.jsx("span",{className:Be("flex-shrink-0 w-[5ch] text-[10px] font-semibold tabular-nums select-none",m.labelColor),children:m.label}),b.jsx("button",{onClick:()=>l(d.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${d.source}`,children:d.source}),b.jsx("span",{className:Be("break-words min-w-0",m.color,d.type==="reasoning"&&"italic"),children:$u(d.message)})]}),d.detail&&b.jsx("div",{className:"ml-[calc(7ch+5ch+8ch+1rem)] px-2 py-1 my-0.5 bg-[var(--bg)] rounded text-[10px] text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto border-l-2 border-[var(--border)]",children:$u(d.detail)})]},h)}),a&&f.length===0&&b.jsx("div",{className:"flex items-center justify-center py-4",children:b.jsxs("p",{className:"text-xs text-[var(--text-muted)]",children:['No matches for "',a,'"']})})]})]})}const kb={info:{color:"text-blue-400",icon:"›"},success:{color:"text-green-400",icon:"✓"},error:{color:"text-red-400",icon:"✗"},warning:{color:"text-amber-400",icon:"⚠"},debug:{color:"text-[var(--text-muted)]",icon:"·"}};function a6({entries:e}){const n=V.useRef(null),r=V.useRef(!0),l=he(s=>s.selectNode),a=V.useCallback(()=>{const s=n.current;if(!s)return;const u=s.scrollHeight-s.scrollTop-s.clientHeight<30;r.current=u},[]);return V.useEffect(()=>{n.current&&r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e.length]),e.length===0?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Waiting for events…"})}):b.jsx("div",{ref:n,onScroll:a,className:"h-full overflow-y-auto font-mono text-[11px] leading-[1.6] px-3 py-2",children:e.map((s,u)=>{const f=kb[s.level]||kb.info,d=C_(s.timestamp);return b.jsxs("div",{className:"flex gap-2 hover:bg-[var(--surface-hover)] rounded px-1 -mx-1",children:[b.jsx("span",{className:"text-[var(--text-muted)] flex-shrink-0 select-none tabular-nums",children:d}),b.jsx("span",{className:Be("flex-shrink-0 w-3 text-center select-none",f.color),children:f.icon}),b.jsx("button",{onClick:()=>l(s.source),className:"text-[var(--text-secondary)] flex-shrink-0 min-w-[8ch] max-w-[16ch] truncate hover:text-[var(--accent)] hover:underline transition-colors text-left",title:`Select ${s.source}`,children:s.source}),b.jsx("span",{className:Be("break-words",s.level==="error"?"text-red-400":s.level==="success"?"text-green-400":"text-[var(--text)]"),children:$u(s.message)})]},u)})})}function C_(e){const n=new Date(e*1e3),r=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),a=n.getSeconds().toString().padStart(2,"0");return`${r}:${l}:${a}`}function o6({output:e,status:n}){const[r,l]=V.useState(!1),a=Db(e),s=async()=>{a&&(await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3))};return e==null?b.jsx("div",{className:"h-full flex items-center justify-center",children:b.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n==="running"?"Workflow running — output will appear when complete…":n==="failed"?"Workflow failed — no output produced":"No output yet"})}):b.jsxs("div",{className:"h-full flex flex-col",children:[b.jsxs("div",{className:"flex items-center justify-between px-3 py-1 border-b border-[var(--border-subtle)] flex-shrink-0",children:[b.jsx("span",{className:"text-[10px] text-[var(--text-muted)] uppercase tracking-wider font-semibold",children:"Workflow Result"}),b.jsx("button",{onClick:s,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors px-1.5 py-0.5 rounded hover:bg-[var(--surface-hover)]",title:"Copy to clipboard",children:r?b.jsxs(b.Fragment,{children:[b.jsx(Vi,{className:"w-3 h-3 text-[var(--completed)]"}),b.jsx("span",{className:"text-[var(--completed)]",children:"Copied"})]}):b.jsxs(b.Fragment,{children:[b.jsx(Mb,{className:"w-3 h-3"}),b.jsx("span",{children:"Copy"})]})})]}),b.jsx("div",{className:"flex-1 overflow-auto px-3 py-2",children:b.jsx("pre",{className:"font-mono text-[11px] leading-relaxed text-[var(--text)] whitespace-pre-wrap break-words",children:typeof e=="object"?b.jsx(s6,{text:a}):a})})]})}function s6({text:e}){const n=e.split(/("(?:[^"\\]|\\.)*")/g);return b.jsx(b.Fragment,{children:n.map((r,l)=>{if(l%2===1){const s=n.slice(l+1).join(""),u=/^\s*:/.test(s);return b.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(s,u,f)=>u?`${s}`:f?`${s}`:s);return b.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function u6(){const e=he(n=>n.selectedNode);return b.jsxs(vp,{direction:"vertical",className:"flex-1 overflow-hidden",children:[b.jsx(po,{defaultSize:70,minSize:30,children:b.jsxs(vp,{direction:"horizontal",className:"h-full",children:[b.jsx(po,{defaultSize:e?65:100,minSize:40,children:b.jsx(S5,{})}),e&&b.jsxs(b.Fragment,{children:[b.jsx(bp,{className:"w-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-col-resize"}),b.jsx(po,{defaultSize:35,minSize:20,maxSize:60,children:b.jsx(r6,{})})]})]})}),b.jsx(bp,{className:"h-[3px] bg-[var(--border)] hover:bg-[var(--text-muted)] transition-colors cursor-row-resize"}),b.jsx(po,{defaultSize:30,minSize:5,maxSize:70,collapsible:!0,children:b.jsx(i6,{})})]})}const c6=3e4;function f6(){const e=he(p=>p.processEvent),n=he(p=>p.replayState),r=he(p=>p.setWsStatus),l=he(p=>p.setWsSend),a=V.useRef(null),s=V.useRef(1e3),u=V.useRef(null),f=V.useRef(null),d=V.useRef(()=>{}),h=V.useCallback(()=>{r("reconnecting"),u.current=setTimeout(()=>{s.current=Math.min(s.current*2,c6),d.current()},s.current)},[r]),m=V.useCallback(()=>{r("connecting"),f.current&&f.current.abort();const p=new AbortController;f.current=p,fetch("/api/state",{signal:p.signal}).then(y=>y.json()).then(y=>{y&&y.length>0&&n(y);const w=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{const k=new WebSocket(w);a.current=k,k.onopen=()=>{s.current=1e3,r("connected"),l(S=>{k.readyState===WebSocket.OPEN&&k.send(JSON.stringify(S))})},k.onmessage=S=>{try{const _=JSON.parse(S.data);e(_)}catch(_){console.error("Failed to parse WebSocket message:",_)}},k.onclose=()=>{r("disconnected"),l(null),a.current=null,h()},k.onerror=()=>{}}catch{h()}}).catch(y=>{p.signal.aborted||(console.error("Failed to fetch state:",y),h())})},[e,n,r,l,h]);d.current=m,V.useEffect(()=>(m(),()=>{f.current&&f.current.abort(),u.current&&clearTimeout(u.current),a.current&&a.current.close(),l(null)}),[m,l])}function d6(){const e=he(h=>h.setReplayMode),n=he(h=>h.setWsStatus),r=he(h=>h.replayPlaying),l=he(h=>h.replayPosition),a=he(h=>h.replayTotalEvents),s=he(h=>h.replaySpeed),u=he(h=>h.replayEvents),f=he(h=>h.setReplayPosition);V.useEffect(()=>{n("connecting"),fetch("/api/state").then(h=>h.json()).then(h=>{e(h),n("connected")}).catch(h=>{console.error("Failed to load replay events:",h),n("disconnected")})},[e,n]);const d=V.useRef(null);V.useEffect(()=>{if(!r||l>=a){d.current&&clearTimeout(d.current),r&&l>=a&&he.getState().setReplayPlaying(!1);return}const h=u[l-1],m=u[l];let p=100;if(h&&m){const y=(m.timestamp-h.timestamp)*1e3;p=Math.max(16,Math.min(y/s,2e3))}return d.current=setTimeout(()=>{f(l+1)},p),()=>{d.current&&clearTimeout(d.current)}},[r,l,a,s,u,f])}function h6(){return f6(),null}function p6(){return d6(),null}function m6(){const[e,n]=V.useState(null),r=he(s=>s.replayMode),l=he(s=>s.selectNode),a=he(s=>s.workflowName);return V.useEffect(()=>{fetch("/api/replay/info").then(s=>{s.ok?n(!0):n(!1)}).catch(()=>n(!1))},[]),V.useEffect(()=>{document.title=a?`Conductor — ${a}`:"Conductor Dashboard"},[a]),V.useEffect(()=>{const s=u=>{u.key==="Escape"&&l(null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[l]),e===null?null:b.jsxs("div",{className:"h-full flex flex-col bg-[var(--bg)]",children:[e?b.jsx(p6,{}):b.jsx(h6,{}),b.jsx(EN,{}),b.jsx(NN,{}),b.jsx(u6,{}),r?b.jsx(AN,{}):b.jsx(CN,{})]})}$2.createRoot(document.getElementById("root")).render(b.jsx(V.StrictMode,{children:b.jsx(m6,{})})); diff --git a/src/conductor/web/static/index.html b/src/conductor/web/static/index.html index 177fab7..16ffed9 100644 --- a/src/conductor/web/static/index.html +++ b/src/conductor/web/static/index.html @@ -5,8 +5,8 @@ Conductor Dashboard - - + +
    diff --git a/tests/test_gates/test_human.py b/tests/test_gates/test_human.py index 343e5a5..70afb17 100644 --- a/tests/test_gates/test_human.py +++ b/tests/test_gates/test_human.py @@ -287,12 +287,15 @@ async def test_prompt_rendered_with_context( ): await handler.handle_gate(human_gate_agent, context) - # Verify Panel was called with rendered content + # Verify Panel was called with rendered content wrapped in RichMarkdown mock_panel.assert_called() panel_args = mock_panel.call_args - # First positional arg should be the rendered prompt + # First positional arg should be a RichMarkdown instance rendered_prompt = panel_args[0][0] - assert "Generated content here" in rendered_prompt + from rich.markdown import Markdown as RichMarkdown + + assert isinstance(rendered_prompt, RichMarkdown) + assert "Generated content here" in rendered_prompt.markup class TestHumanGateHandlerAutoSelect: @@ -544,3 +547,59 @@ async def test_detects_potential_loop(self, mock_console: MagicMock) -> None: panel_args = mock_panel.call_args panel_content = panel_args[0][0] assert "loop" in panel_content.lower() + + +class TestGatePromptMarkdownRendering: + """Tests that gate prompts are rendered as Rich Markdown in the terminal.""" + + @pytest.mark.asyncio + async def test_prompt_wrapped_in_rich_markdown( + self, + mock_console: MagicMock, + sample_options: list[GateOption], + ) -> None: + """Verify Panel receives a RichMarkdown object, not a bare string.""" + from rich.markdown import Markdown as RichMarkdown + + agent = AgentDef( + name="md_gate", + type="human_gate", + prompt="## Review\n\n- [plan](./plan.md)\n- **bold** text", + options=sample_options, + ) + handler = HumanGateHandler(console=mock_console, skip_gates=False) + + with ( + patch("conductor.gates.human.Prompt.ask", return_value="1"), + patch("conductor.gates.human.Panel") as mock_panel, + ): + await handler.handle_gate(agent, {}) + + mock_panel.assert_called() + rendered = mock_panel.call_args[0][0] + assert isinstance(rendered, RichMarkdown) + # Verify the original markdown text is preserved in the markup + assert "## Review" in rendered.markup + assert "[plan](./plan.md)" in rendered.markup + assert "**bold**" in rendered.markup + + @pytest.mark.asyncio + async def test_skip_gates_auto_selects_without_panel( + self, + mock_console: MagicMock, + sample_options: list[GateOption], + ) -> None: + """Verify that skip_gates mode auto-selects without displaying the Panel.""" + agent = AgentDef( + name="skip_md_gate", + type="human_gate", + prompt="# Auto-review\nPlain text here.", + options=sample_options, + ) + handler = HumanGateHandler(console=mock_console, skip_gates=True) + + result = await handler.handle_gate(agent, {}) + + # skip_gates auto-selects the first option + assert result.selected_option == sample_options[0] + assert result.route == "next_agent" diff --git a/tests/test_web/test_server.py b/tests/test_web/test_server.py index 31db239..bd4027b 100644 --- a/tests/test_web/test_server.py +++ b/tests/test_web/test_server.py @@ -12,6 +12,7 @@ import asyncio import time +from pathlib import Path from unittest.mock import AsyncMock, MagicMock import pytest @@ -21,10 +22,14 @@ from conductor.web.server import WebDashboard -def _make_dashboard(*, bg: bool = False) -> tuple[WorkflowEventEmitter, WebDashboard]: +def _make_dashboard( + *, bg: bool = False, workflow_root: Path | None = None +) -> tuple[WorkflowEventEmitter, WebDashboard]: """Create an emitter and dashboard pair for testing.""" emitter = WorkflowEventEmitter() - dashboard = WebDashboard(emitter, host="127.0.0.1", port=0, bg=bg) + dashboard = WebDashboard( + emitter, host="127.0.0.1", port=0, bg=bg, workflow_root=workflow_root + ) return emitter, dashboard @@ -543,3 +548,120 @@ async def _short_grace(event: asyncio.Event, delay: float) -> None: """Helper for testing: short grace period.""" await asyncio.sleep(delay) event.set() + + +class TestFileApi: + """Tests for GET /api/files/{file_path} endpoint. + + Covers security checks (path traversal, extension filtering, size limits, + absolute path rejection) and the happy-path for reading files. + """ + + @pytest.fixture + def workflow_dir(self, tmp_path: Path) -> Path: + """Create a temporary workflow directory with sample files.""" + (tmp_path / "plan.md").write_text("# My Plan\nSome content", encoding="utf-8") + (tmp_path / "data.json").write_text('{"key": "value"}', encoding="utf-8") + (tmp_path / "sub").mkdir() + (tmp_path / "sub" / "nested.yaml").write_text("key: value", encoding="utf-8") + (tmp_path / "secret.exe").write_bytes(b"\x00binary") + (tmp_path / "image.png").write_bytes(b"\x89PNG") + return tmp_path + + def _client(self, workflow_dir: Path) -> TestClient: + _, dashboard = _make_dashboard(workflow_root=workflow_dir) + return TestClient(dashboard.app) + + def test_read_markdown_file(self, workflow_dir: Path) -> None: + """Happy path: read a .md file.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/plan.md") + assert resp.status_code == 200 + body = resp.json() + assert body["path"] == "plan.md" + assert "# My Plan" in body["content"] + assert body["extension"] == ".md" + assert body["size"] > 0 + + def test_read_nested_file(self, workflow_dir: Path) -> None: + """Read a file in a subdirectory.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/sub/nested.yaml") + assert resp.status_code == 200 + assert resp.json()["path"] == "sub/nested.yaml" + + def test_read_json_file(self, workflow_dir: Path) -> None: + """Read a JSON file.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/data.json") + assert resp.status_code == 200 + assert '"key"' in resp.json()["content"] + + def test_file_not_found(self, workflow_dir: Path) -> None: + """Non-existent file returns 404.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/nonexistent.md") + assert resp.status_code == 404 + + def test_path_traversal_dotdot(self, workflow_dir: Path) -> None: + """Path traversal with .. is blocked (403 containment check).""" + # Create a file outside workflow_dir to prove it can't be reached + outside = workflow_dir.parent / "secret.txt" + outside.write_text("top secret", encoding="utf-8") + with self._client(workflow_dir) as client: + resp = client.get("/api/files/../secret.txt") + assert resp.status_code in (403, 404) + + def test_absolute_path_rejected(self, workflow_dir: Path) -> None: + """Absolute path is rejected with 403.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files//etc/passwd") + assert resp.status_code == 403 + + def test_drive_path_rejected(self, workflow_dir: Path) -> None: + """Windows drive-qualified path is rejected.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/C:/Windows/system32/cmd.exe") + assert resp.status_code == 403 + + def test_scheme_rejected(self, workflow_dir: Path) -> None: + """URL scheme in path is rejected.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/file:///etc/passwd") + assert resp.status_code == 403 + + def test_disallowed_extension(self, workflow_dir: Path) -> None: + """Binary/disallowed extension returns 403.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/secret.exe") + assert resp.status_code == 403 + assert "not supported" in resp.json()["error"] + + def test_disallowed_image_extension(self, workflow_dir: Path) -> None: + """Image extension is not in the allowlist.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/image.png") + assert resp.status_code == 403 + + def test_large_file_rejected(self, workflow_dir: Path) -> None: + """File larger than 1MB is rejected with 413.""" + big = workflow_dir / "huge.txt" + big.write_text("x" * (1024 * 1024 + 1), encoding="utf-8") + with self._client(workflow_dir) as client: + resp = client.get("/api/files/huge.txt") + assert resp.status_code == 413 + assert "too large" in resp.json()["error"].lower() + + def test_no_workflow_root_returns_404(self) -> None: + """When workflow_root is None, endpoint returns 404.""" + _, dashboard = _make_dashboard(workflow_root=None) + with TestClient(dashboard.app) as client: + resp = client.get("/api/files/plan.md") + assert resp.status_code == 404 + assert "No workflow root" in resp.json()["error"] + + def test_unc_path_rejected(self, workflow_dir: Path) -> None: + """UNC path (\\\\server\\share) is rejected.""" + with self._client(workflow_dir) as client: + resp = client.get("/api/files/\\\\server\\share\\file.txt") + assert resp.status_code in (403, 404) From 23e9b68304f8df40ce5633a5a2f0c4a504b9c9ca Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Thu, 23 Apr 2026 17:01:59 -0700 Subject: [PATCH 28/42] fix: guard against proactor accept-loop race on Windows (Python 3.14+) On Windows with Python 3.14+, the proactor event loop's accept callback can fire after Server.close() sets _sockets = None during shutdown, causing an AssertionError in base_events.py:_attach that crashes the workflow process. Fix: - Add _guarded_serve() wrapper that catches AssertionError when the uvicorn server is in shutdown state (should_exit = True) - Install a custom event-loop exception handler during server lifetime that suppresses the same race when it surfaces through callbacks - _is_proactor_shutdown_race() validates: AssertionError type, server shutdown state, and asyncio-originating traceback frames - Restore original exception handler in stop() The guard is narrowly scoped: only AssertionError during server shutdown is suppressed. All other exceptions delegate to the original handler. Tests: 9 new tests covering the race detection, exception handler delegation, guarded serve behavior, and edge cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/web/server.py | 87 ++++++++++++++++++++++- tests/test_web/test_server.py | 126 ++++++++++++++++++++++++++++++++++ 2 files changed, 212 insertions(+), 1 deletion(-) diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index 5d4a78c..b4b306d 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -116,6 +116,7 @@ def __init__( self._serve_task: asyncio.Task[None] | None = None self._broadcast_task: asyncio.Task[None] | None = None self._actual_port: int | None = None + self._original_exception_handler: Any = None # Build FastAPI app self._app = self._create_app() @@ -470,12 +471,82 @@ async def wait_for_stop(self) -> None: # Server lifecycle # ------------------------------------------------------------------ + def _is_proactor_shutdown_race(self, context: dict[str, Any]) -> bool: + """Check if an exception context matches the proactor accept-loop race. + + On Windows with Python 3.14+, the proactor event loop's accept + callback can fire after ``Server.close()`` sets ``_sockets = None``, + causing ``AssertionError`` in ``base_events.py:_attach``. This is + benign during shutdown — the server is already closing and does not + need new connections. + + Returns True only when all of: + - The exception is ``AssertionError`` + - The uvicorn server is in shutdown state (``should_exit`` is set) + - The traceback (if available) originates from asyncio internals + """ + exc = context.get("exception") + if not isinstance(exc, AssertionError): + return False + if self._server is None or not getattr(self._server, "should_exit", False): + return False + # Extra safety: check traceback originates from asyncio, not user code + import traceback as tb_mod + + tb = exc.__traceback__ + if tb is not None: + frames = tb_mod.extract_tb(tb) + if frames and "asyncio" in frames[-1].filename: + return True + # If no traceback but server is shutting down, still suppress — + # the only known source of AssertionError during shutdown is this race. + return True + + def _loop_exception_handler( + self, loop: asyncio.AbstractEventLoop, context: dict[str, Any] + ) -> None: + """Custom event-loop exception handler that suppresses the proactor race.""" + if self._is_proactor_shutdown_race(context): + logger.debug( + "Suppressed proactor accept-loop race during server shutdown: %s", + context.get("message", ""), + ) + return + # Delegate to the original handler (or the default) + if self._original_exception_handler is not None: + self._original_exception_handler(loop, context) + else: + loop.default_exception_handler(context) + + async def _guarded_serve(self) -> None: + """Run ``uvicorn.Server.serve()`` with a guard for the proactor race. + + If ``serve()`` itself raises ``AssertionError`` during shutdown + (rather than the exception surfacing through a callback), this + wrapper suppresses it. + """ + try: + await self._server.serve() + except AssertionError: + if self._server is not None and getattr(self._server, "should_exit", False): + logger.debug( + "Suppressed proactor accept-loop AssertionError during server shutdown" + ) + else: + raise + async def start(self) -> None: """Start the uvicorn server as an asyncio task. The broadcaster is started automatically via the FastAPI lifespan. Waits until the server socket is bound and the actual port is known before returning. + + On Windows with Python 3.14+, installs a custom event-loop + exception handler to suppress the proactor accept-loop race + (``AssertionError: self._sockets is not None``) that can fire + when a new connection is accepted after ``Server.close()`` sets + ``_sockets = None`` during shutdown. """ import uvicorn @@ -487,8 +558,15 @@ async def start(self) -> None: ) self._server = uvicorn.Server(config) + # Install a guarded exception handler to suppress the proactor + # accept-race AssertionError that occurs on Windows (Python 3.14+) + # when the server is shutting down. + loop = asyncio.get_running_loop() + self._original_exception_handler = loop.get_exception_handler() + loop.set_exception_handler(self._loop_exception_handler) + # Launch server (broadcaster starts via app lifespan) - self._serve_task = asyncio.create_task(self._server.serve()) + self._serve_task = asyncio.create_task(self._guarded_serve()) # Wait for server to bind — poll until .started is set while not self._server.started: @@ -531,6 +609,13 @@ async def stop(self) -> None: await self._serve_task self._serve_task = None + # Restore the original event-loop exception handler + try: + loop = asyncio.get_running_loop() + loop.set_exception_handler(self._original_exception_handler) + except RuntimeError: + pass # No running loop (e.g. during interpreter shutdown) + # Close remaining WebSocket connections for ws in list(self._connections): with contextlib.suppress(Exception): diff --git a/tests/test_web/test_server.py b/tests/test_web/test_server.py index bd4027b..faefe28 100644 --- a/tests/test_web/test_server.py +++ b/tests/test_web/test_server.py @@ -504,6 +504,132 @@ async def _cancel_serve(self: object) -> None: await dashboard.start() +class TestProactorShutdownRace: + """Tests for the proactor accept-loop race guard (Python 3.14+ Windows). + + The proactor event loop can raise AssertionError when a new connection + is accepted after Server.close() sets _sockets = None during shutdown. + The dashboard guards against this with both a custom exception handler + and a guarded serve wrapper. + """ + + def test_is_proactor_shutdown_race_true_during_shutdown(self) -> None: + """_is_proactor_shutdown_race returns True when server is shutting down.""" + _, dashboard = _make_dashboard() + dashboard._server = MagicMock() + dashboard._server.should_exit = True + + context = {"exception": AssertionError()} + assert dashboard._is_proactor_shutdown_race(context) is True + + def test_is_proactor_shutdown_race_false_when_not_shutting_down(self) -> None: + """_is_proactor_shutdown_race returns False when server is running.""" + _, dashboard = _make_dashboard() + dashboard._server = MagicMock() + dashboard._server.should_exit = False + + context = {"exception": AssertionError()} + assert dashboard._is_proactor_shutdown_race(context) is False + + def test_is_proactor_shutdown_race_false_for_non_assertion(self) -> None: + """_is_proactor_shutdown_race returns False for non-AssertionError.""" + _, dashboard = _make_dashboard() + dashboard._server = MagicMock() + dashboard._server.should_exit = True + + context = {"exception": RuntimeError("something else")} + assert dashboard._is_proactor_shutdown_race(context) is False + + def test_is_proactor_shutdown_race_false_without_server(self) -> None: + """_is_proactor_shutdown_race returns False when no server exists.""" + _, dashboard = _make_dashboard() + dashboard._server = None + + context = {"exception": AssertionError()} + assert dashboard._is_proactor_shutdown_race(context) is False + + def test_loop_exception_handler_suppresses_race(self) -> None: + """Custom exception handler suppresses the proactor race silently.""" + _, dashboard = _make_dashboard() + dashboard._server = MagicMock() + dashboard._server.should_exit = True + + loop = MagicMock() + context = {"exception": AssertionError(), "message": "test"} + + # Should not raise or call default handler + dashboard._loop_exception_handler(loop, context) + loop.default_exception_handler.assert_not_called() + + def test_loop_exception_handler_delegates_other_errors(self) -> None: + """Custom exception handler delegates non-race errors to the default.""" + _, dashboard = _make_dashboard() + dashboard._server = MagicMock() + dashboard._server.should_exit = False + dashboard._original_exception_handler = None + + loop = MagicMock() + context = {"exception": RuntimeError("real error"), "message": "boom"} + + dashboard._loop_exception_handler(loop, context) + loop.default_exception_handler.assert_called_once_with(context) + + def test_loop_exception_handler_delegates_to_original(self) -> None: + """Custom exception handler delegates to original handler if set.""" + _, dashboard = _make_dashboard() + dashboard._server = MagicMock() + dashboard._server.should_exit = False + original = MagicMock() + dashboard._original_exception_handler = original + + loop = MagicMock() + context = {"exception": ValueError("other"), "message": "test"} + + dashboard._loop_exception_handler(loop, context) + original.assert_called_once_with(loop, context) + loop.default_exception_handler.assert_not_called() + + @pytest.mark.asyncio + async def test_guarded_serve_suppresses_assertion_during_shutdown(self) -> None: + """_guarded_serve swallows AssertionError when server is shutting down.""" + from unittest.mock import patch + + _, dashboard = _make_dashboard() + + async def _assert_serve(self: object) -> None: + raise AssertionError("self._sockets is not None") + + import uvicorn + + with patch.object(uvicorn.Server, "serve", _assert_serve): + dashboard._server = uvicorn.Server( + uvicorn.Config(app=dashboard._app, host="127.0.0.1", port=0) + ) + dashboard._server.should_exit = True + # Should not raise + await dashboard._guarded_serve() + + @pytest.mark.asyncio + async def test_guarded_serve_reraises_assertion_when_running(self) -> None: + """_guarded_serve re-raises AssertionError when server is NOT shutting down.""" + from unittest.mock import patch + + _, dashboard = _make_dashboard() + + async def _assert_serve(self: object) -> None: + raise AssertionError("unexpected assertion") + + import uvicorn + + with patch.object(uvicorn.Server, "serve", _assert_serve): + dashboard._server = uvicorn.Server( + uvicorn.Config(app=dashboard._app, host="127.0.0.1", port=0) + ) + dashboard._server.should_exit = False + with pytest.raises(AssertionError, match="unexpected assertion"): + await dashboard._guarded_serve() + + class TestWaitForGateResponse: """Tests for WebDashboard.wait_for_gate_response stale-message handling.""" From 45189bc494eb12bd697d558f7700e45e87a57059 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Thu, 23 Apr 2026 17:19:32 -0700 Subject: [PATCH 29/42] fix: remove unused Request import to pass ruff lint Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/web/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index b4b306d..d867025 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -27,7 +27,7 @@ from pathlib import Path from typing import Any -from fastapi import FastAPI, Request, WebSocket, WebSocketDisconnect +from fastapi import FastAPI, WebSocket, WebSocketDisconnect from fastapi.responses import FileResponse, JSONResponse from fastapi.staticfiles import StaticFiles From 3d968691668293b9a313752a9174add184e3c46a Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Thu, 23 Apr 2026 23:01:19 -0700 Subject: [PATCH 30/42] fix(web): clear stale graph edges when navigating between workflow layers When navigating between subworkflow layers via breadcrumbs or double-click, old React Flow edges from the previous layer persisted as floating links disconnected from any visible nodes. Two fixes: - WorkflowGraph: explicitly clear nodes and edges when switching to an empty context (subworkflow data not yet populated) - graph-layout: filter edges against the actual node ID set to prevent orphan edges from routes referencing non-existent nodes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../web/frontend/src/components/graph/WorkflowGraph.tsx | 4 +++- .../web/frontend/src/components/graph/graph-layout.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx index b637889..7ff3d77 100644 --- a/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx +++ b/src/conductor/web/frontend/src/components/graph/WorkflowGraph.tsx @@ -94,10 +94,12 @@ export function WorkflowGraph() { const viewPathKey = JSON.stringify(viewContextPath); useEffect(() => { if (agents.length === 0) { - // Reset if navigated to empty context + // Clear stale graph elements when navigated to an empty context if (prevViewPath.current !== viewPathKey) { graphBuilt.current = false; prevViewPath.current = viewPathKey; + setFlowNodes([]); + setFlowEdges([]); } return; } diff --git a/src/conductor/web/frontend/src/components/graph/graph-layout.ts b/src/conductor/web/frontend/src/components/graph/graph-layout.ts index fa63322..df5bc86 100644 --- a/src/conductor/web/frontend/src/components/graph/graph-layout.ts +++ b/src/conductor/web/frontend/src/components/graph/graph-layout.ts @@ -177,8 +177,10 @@ export function buildGraphElements( }); } - // Create edges + // Create edges — only include edges whose source and target exist as nodes + const nodeIds = new Set(flowNodes.map((n) => n.id)); for (const r of routes) { + if (!nodeIds.has(r.from) || !nodeIds.has(r.to)) continue; flowEdges.push({ id: `${r.from}->${r.to}`, source: r.from, From 3285c274bd20f563741805808d82583e33d56c74 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Thu, 23 Apr 2026 23:29:36 -0700 Subject: [PATCH 31/42] feat(gates): auto-linkify bare file paths and URLs in gate prompts Add a markdown-aware post-processor that converts bare file paths and URLs in rendered gate prompts into clickable markdown links. This fixes the issue where Jinja2-rendered file paths appeared as plain grey text in the web dashboard instead of interactive file links. Processing: - Normalizes Jinja2 whitespace artifacts (collapses excessive blank lines) - Auto-detects bare http(s):// URLs and wraps in markdown link syntax - Auto-detects relative file paths (verified against workflow root), wraps in markdown links that the dashboard FileViewer can open - Markdown-aware: skips fenced code blocks, inline code, existing links - Reuses the server's extension allowlist for file detection - Security: path traversal outside workflow root is blocked Applied to both web dashboard (gate_presented event) and terminal (Rich markdown rendering in HumanGateHandler). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/engine/workflow.py | 22 ++- src/conductor/executor/linkify.py | 263 ++++++++++++++++++++++++++++ src/conductor/gates/human.py | 9 +- tests/test_executor/test_linkify.py | 213 ++++++++++++++++++++++ 4 files changed, 503 insertions(+), 4 deletions(-) create mode 100644 src/conductor/executor/linkify.py create mode 100644 tests/test_executor/test_linkify.py diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 8f06a93..f04a49b 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -33,6 +33,7 @@ TimeoutError as ConductorTimeoutError, ) from conductor.executor.agent import AgentExecutor +from conductor.executor.linkify import linkify_markdown from conductor.executor.script import ScriptExecutor, ScriptOutput from conductor.executor.template import TemplateRenderer from conductor.gates.human import ( @@ -854,7 +855,10 @@ async def _handle_gate_with_web( """ # If no web dashboard at all, use CLI only. if self._web_dashboard is None: - return await self.gate_handler.handle_gate(agent, agent_context) + gate_base = ( + Path(self.workflow_path).resolve().parent if self.workflow_path else None + ) + return await self.gate_handler.handle_gate(agent, agent_context, base_dir=gate_base) # Race CLI vs web input. We start the web task unconditionally (not only # when a client is currently connected), because the human often opens @@ -862,8 +866,9 @@ async def _handle_gate_with_web( # If we bail early when ``has_connections()`` is False, a later click # in the dashboard pushes a message to ``_gate_response_queue`` that # nobody is awaiting, and the workflow hangs forever. + gate_base = Path(self.workflow_path).resolve().parent if self.workflow_path else None cli_task = asyncio.create_task( - self.gate_handler.handle_gate(agent, agent_context), + self.gate_handler.handle_gate(agent, agent_context, base_dir=gate_base), name="gate_cli", ) web_task = asyncio.create_task( @@ -1463,13 +1468,24 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: for o in (agent.options or []) ] + # Render prompt and auto-linkify paths/URLs for markdown display + rendered_prompt = self.renderer.render(agent.prompt, agent_context) + gate_base_dir = ( + Path(self.workflow_path).resolve().parent + if self.workflow_path + else None + ) + rendered_prompt = linkify_markdown( + rendered_prompt, base_dir=gate_base_dir + ) + self._emit( "gate_presented", { "agent_name": agent.name, "options": [o.value for o in (agent.options or [])], "option_details": gate_options_data, - "prompt": self.renderer.render(agent.prompt, agent_context), + "prompt": rendered_prompt, }, ) diff --git a/src/conductor/executor/linkify.py b/src/conductor/executor/linkify.py new file mode 100644 index 0000000..01fef83 --- /dev/null +++ b/src/conductor/executor/linkify.py @@ -0,0 +1,263 @@ +"""Auto-linkify bare file paths and URLs in rendered markdown text. + +This module provides post-processing for human-facing rendered text (gate +prompts, etc.) to automatically convert bare file paths and URLs into +markdown links. It is *not* used inside the generic ``TemplateRenderer`` — +only at call-sites that produce text destined for markdown rendering (web +dashboard, Rich terminal). + +The processing is markdown-aware: fenced code blocks, inline code spans, +and existing markdown links are left untouched. +""" + +from __future__ import annotations + +import re +from pathlib import Path + +# --------------------------------------------------------------------------- +# Shared extension allowlist — kept in sync with web/server.py +# --------------------------------------------------------------------------- +LINKABLE_EXTENSIONS = frozenset( + { + ".md", + ".txt", + ".yaml", + ".yml", + ".json", + ".log", + ".py", + ".ts", + ".js", + ".tsx", + ".jsx", + ".css", + ".html", + ".toml", + ".cfg", + ".ini", + ".csv", + ".xml", + ".sh", + ".bat", + ".ps1", + ".plan.md", + } +) + +# --------------------------------------------------------------------------- +# Regex patterns +# --------------------------------------------------------------------------- + +# Fenced code block (``` or ~~~, with optional language tag) +_FENCED_CODE_RE = re.compile(r"^(`{3,}|~{3,}).*?^\1", re.MULTILINE | re.DOTALL) + +# Inline code span (`...`) +_INLINE_CODE_RE = re.compile(r"`[^`\n]+`") + +# Existing markdown links: [text](url) or [text][ref] +_EXISTING_LINK_RE = re.compile(r"\[[^\]]*\]\([^)]*\)|\[[^\]]*\]\[[^\]]*\]") + +# Bare URL: http(s)://... terminated at whitespace or common punctuation +_URL_RE = re.compile( + r"(?\]\[\"'`]+" +) + +# Bare file path: contains at least one /, ends with a known extension. +# Must start at a word boundary or line start. Avoids matching inside +# URLs (already handled) by requiring no scheme prefix. +_FILE_PATH_RE = re.compile( + r"(? str: + """Post-process rendered text to add markdown links for paths and URLs. + + Processing steps: + 1. Normalize Jinja2 whitespace artifacts (3+ consecutive newlines → 2). + 2. Auto-linkify bare ``http(s)://`` URLs. + 3. Auto-linkify bare file paths (verified against *base_dir* when given). + + Fenced code blocks, inline code spans, and existing markdown links are + preserved unchanged. + + Args: + text: Rendered template text (may contain markdown). + base_dir: Optional directory for file existence checks. When + provided, only paths that resolve to an existing file within + *base_dir* are linkified. + + Returns: + Text with bare paths/URLs wrapped in markdown link syntax. + """ + # Step 1: normalize whitespace + text = _normalize_whitespace(text) + + # Step 2 & 3: linkify, skipping protected regions + text = _linkify_with_protection(text, base_dir) + + return text + + +# --------------------------------------------------------------------------- +# Internals +# --------------------------------------------------------------------------- + + +def _normalize_whitespace(text: str) -> str: + """Collapse 3+ consecutive newlines into exactly 2 (one blank line).""" + return re.sub(r"\n{3,}", "\n\n", text) + + +def _linkify_with_protection(text: str, base_dir: Path | None) -> str: + """Linkify URLs and file paths while protecting code/links. + + Strategy: identify protected spans (fenced code, inline code, existing + links), then process only the unprotected gaps. + """ + protected: list[tuple[int, int]] = [] + + for pattern in (_FENCED_CODE_RE, _INLINE_CODE_RE, _EXISTING_LINK_RE): + for m in pattern.finditer(text): + protected.append((m.start(), m.end())) + + # Sort and merge overlapping spans + protected.sort() + merged: list[tuple[int, int]] = [] + for start, end in protected: + if merged and start <= merged[-1][1]: + merged[-1] = (merged[-1][0], max(merged[-1][1], end)) + else: + merged.append((start, end)) + + # Build result by processing unprotected segments + result: list[str] = [] + prev_end = 0 + for pstart, pend in merged: + if prev_end < pstart: + # Unprotected gap — linkify it + result.append(_linkify_segment(text[prev_end:pstart], base_dir)) + # Protected span — copy verbatim + result.append(text[pstart:pend]) + prev_end = pend + # Final unprotected tail + if prev_end < len(text): + result.append(_linkify_segment(text[prev_end:], base_dir)) + + return "".join(result) + + +def _linkify_segment(segment: str, base_dir: Path | None) -> str: + """Linkify bare URLs and file paths in an unprotected text segment.""" + # First pass: linkify URLs + segment = _URL_RE.sub(_wrap_url, segment) + # Second pass: linkify file paths + segment = _linkify_file_paths(segment, base_dir) + return segment + + +def _wrap_url(m: re.Match[str]) -> str: + """Wrap a bare URL in markdown autolink syntax.""" + url = m.group(0) + # Strip trailing punctuation that's unlikely part of the URL + trailing = "" + while url and url[-1] in ".,;:!?)": + # Keep ) only if there's a matching ( in the URL (e.g. Wikipedia links) + if url[-1] == ")" and "(" in url: + break + trailing = url[-1] + trailing + url = url[:-1] + return f"[{url}]({url}){trailing}" + + +def _linkify_file_paths(segment: str, base_dir: Path | None) -> str: + """Find and linkify bare file paths in a text segment. + + A token is considered a file path if: + - It contains at least one ``/`` + - It ends with a known extension + - If *base_dir* is given, the file must exist + """ + # Split on whitespace boundaries to find path-like tokens + # We process word-by-word to avoid partial matches + tokens = re.split(r"(\s+)", segment) + result: list[str] = [] + + for token in tokens: + linked = _try_linkify_path(token, base_dir) + result.append(linked if linked else token) + + return "".join(result) + + +def _try_linkify_path(token: str, base_dir: Path | None) -> str | None: + """Try to linkify a single token as a file path. + + Returns the markdown link string, or None if the token is not a file path. + """ + # Strip leading/trailing punctuation that isn't part of the path + prefix = "" + suffix = "" + stripped = token + + # Strip common leading chars + while stripped and stripped[0] in "([\"'": + prefix += stripped[0] + stripped = stripped[1:] + + # Strip common trailing chars + while stripped and stripped[-1] in ")]\"'.,;:!?": + suffix = stripped[-1] + suffix + stripped = stripped[:-1] + + if not stripped: + return None + + # Must contain a path separator + if "/" not in stripped and "\\" not in stripped: + return None + + # Normalize to forward slashes for extension check + normalized = stripped.replace("\\", "/") + + # Must end with a known extension + if not _has_linkable_extension(normalized): + return None + + # Must not look like a URL (already handled) + if re.match(r"https?://", stripped): + return None + + # If base_dir is provided, verify file exists + if base_dir is not None: + try: + candidate = (base_dir / stripped).resolve() + # Security: must be within base_dir + if not str(candidate).startswith(str(base_dir.resolve())): + return None + if not candidate.is_file(): + return None + except (OSError, ValueError): + return None + + # Build markdown link with forward slashes (for dashboard API) + link_target = normalized + return f"{prefix}[{stripped}]({link_target}){suffix}" + + +def _has_linkable_extension(path: str) -> bool: + """Check if a path ends with a known linkable extension.""" + lower = path.lower() + return any(lower.endswith(ext) for ext in LINKABLE_EXTENSIONS) diff --git a/src/conductor/gates/human.py b/src/conductor/gates/human.py index 0afcf55..ed735b6 100644 --- a/src/conductor/gates/human.py +++ b/src/conductor/gates/human.py @@ -16,9 +16,12 @@ from rich.prompt import IntPrompt, Prompt from conductor.exceptions import HumanGateError +from conductor.executor.linkify import linkify_markdown from conductor.executor.template import TemplateRenderer if TYPE_CHECKING: + from pathlib import Path + from conductor.config.schema import AgentDef, GateOption @@ -73,6 +76,7 @@ async def handle_gate( self, agent: AgentDef, context: dict[str, Any], + base_dir: Path | None = None, ) -> GateResult: """Handle a human gate interaction. @@ -82,6 +86,8 @@ async def handle_gate( Args: agent: The human_gate agent definition. context: Current workflow context for template rendering. + base_dir: Optional directory for resolving relative file paths + in the rendered prompt into clickable markdown links. Returns: GateResult with selected option, route, and any additional input. @@ -95,8 +101,9 @@ async def handle_gate( suggestion="Add 'options' list to the human_gate agent", ) - # Render the prompt with context + # Render the prompt with context and auto-linkify paths/URLs prompt_text = self.renderer.render(agent.prompt, context) + prompt_text = linkify_markdown(prompt_text, base_dir=base_dir) # If skip_gates is enabled, auto-select first option if self.skip_gates: diff --git a/tests/test_executor/test_linkify.py b/tests/test_executor/test_linkify.py new file mode 100644 index 0000000..ad890c3 --- /dev/null +++ b/tests/test_executor/test_linkify.py @@ -0,0 +1,213 @@ +"""Tests for the linkify_markdown post-processor.""" + +from __future__ import annotations + +from pathlib import Path + +from conductor.executor.linkify import linkify_markdown + +# --------------------------------------------------------------------------- +# Whitespace normalisation +# --------------------------------------------------------------------------- + + +class TestWhitespaceNormalization: + """Tests for Jinja2 whitespace artifact cleanup.""" + + def test_collapses_triple_newlines(self) -> None: + text = "line1\n\n\nline2" + assert linkify_markdown(text) == "line1\n\nline2" + + def test_collapses_many_newlines(self) -> None: + text = "a\n\n\n\n\n\nb" + assert linkify_markdown(text) == "a\n\nb" + + def test_preserves_double_newlines(self) -> None: + text = "a\n\nb" + assert linkify_markdown(text) == "a\n\nb" + + def test_preserves_single_newlines(self) -> None: + text = "a\nb" + assert linkify_markdown(text) == "a\nb" + + def test_jinja_for_loop_artifact(self) -> None: + """Simulates the exact Jinja2 for-loop blank-line issue.""" + text = "Items found:\n\n- item1\n\n- item2\n\n- item3\n\n" + result = linkify_markdown(text) + assert "\n\n\n" not in result + assert "- item1" in result + assert "- item2" in result + + +# --------------------------------------------------------------------------- +# URL auto-linking +# --------------------------------------------------------------------------- + + +class TestUrlLinking: + """Tests for bare URL auto-detection and linking.""" + + def test_bare_http_url(self) -> None: + result = linkify_markdown("Visit https://example.com for info") + assert "[https://example.com](https://example.com)" in result + + def test_bare_http_url_with_path(self) -> None: + result = linkify_markdown("See https://example.com/docs/api") + assert "[https://example.com/docs/api](https://example.com/docs/api)" in result + + def test_strips_trailing_punctuation(self) -> None: + result = linkify_markdown("Check https://example.com.") + assert "[https://example.com](https://example.com)." in result + + def test_preserves_existing_markdown_link(self) -> None: + text = "See [docs](https://example.com/docs) for more" + assert linkify_markdown(text) == text + + def test_url_in_inline_code_untouched(self) -> None: + text = "Run `curl https://example.com/api` to test" + assert linkify_markdown(text) == text + + def test_url_in_fenced_code_untouched(self) -> None: + text = "```\nhttps://example.com/api\n```" + assert linkify_markdown(text) == text + + def test_multiple_urls(self) -> None: + text = "Visit https://a.com and https://b.com" + result = linkify_markdown(text) + assert "[https://a.com](https://a.com)" in result + assert "[https://b.com](https://b.com)" in result + + +# --------------------------------------------------------------------------- +# File path auto-linking +# --------------------------------------------------------------------------- + + +class TestFilePathLinking: + """Tests for bare file path auto-detection and linking.""" + + def test_relative_path_with_extension(self, tmp_path: Path) -> None: + (tmp_path / "docs").mkdir() + (tmp_path / "docs" / "readme.md").write_text("hello") + + result = linkify_markdown("See docs/readme.md for details", base_dir=tmp_path) + assert "[docs/readme.md](docs/readme.md)" in result + + def test_nested_path(self, tmp_path: Path) -> None: + (tmp_path / "docs" / "projects").mkdir(parents=True) + (tmp_path / "docs" / "projects" / "plan.md").write_text("plan") + + result = linkify_markdown("Plan at docs/projects/plan.md", base_dir=tmp_path) + assert "[docs/projects/plan.md](docs/projects/plan.md)" in result + + def test_nonexistent_file_not_linked(self, tmp_path: Path) -> None: + result = linkify_markdown("See docs/missing.md for details", base_dir=tmp_path) + assert "[docs/missing.md]" not in result + assert "docs/missing.md" in result # still present as plain text + + def test_no_base_dir_still_links(self) -> None: + """Without base_dir, file paths are linked without existence check.""" + result = linkify_markdown("See docs/readme.md for details") + assert "[docs/readme.md](docs/readme.md)" in result + + def test_unknown_extension_not_linked(self, tmp_path: Path) -> None: + (tmp_path / "data").mkdir() + (tmp_path / "data" / "file.xyz").write_text("data") + + result = linkify_markdown("See data/file.xyz", base_dir=tmp_path) + assert "[data/file.xyz]" not in result + + def test_path_in_markdown_list(self, tmp_path: Path) -> None: + (tmp_path / "docs").mkdir() + (tmp_path / "docs" / "a.md").write_text("a") + (tmp_path / "docs" / "b.md").write_text("b") + + text = "Plans:\n- docs/a.md\n- docs/b.md" + result = linkify_markdown(text, base_dir=tmp_path) + assert "[docs/a.md](docs/a.md)" in result + assert "[docs/b.md](docs/b.md)" in result + + def test_path_in_inline_code_untouched(self) -> None: + text = "Edit `src/config/schema.py` to fix" + assert linkify_markdown(text) == text + + def test_path_in_fenced_code_untouched(self) -> None: + text = "```\nsrc/config/schema.py\n```" + assert linkify_markdown(text) == text + + def test_existing_markdown_link_untouched(self) -> None: + text = "See [config](src/config/schema.py) for details" + assert linkify_markdown(text) == text + + def test_path_without_separator_not_linked(self) -> None: + result = linkify_markdown("See readme.md for details") + assert "[readme.md]" not in result + + def test_url_not_treated_as_path(self) -> None: + result = linkify_markdown("Visit https://example.com/docs/api.json") + # Should be a URL link, not a file path link + assert "[https://example.com/docs/api.json]" in result + + def test_plan_md_extension(self, tmp_path: Path) -> None: + """The .plan.md compound extension should be recognized.""" + (tmp_path / "docs").mkdir() + (tmp_path / "docs" / "sprint.plan.md").write_text("plan") + + result = linkify_markdown("See docs/sprint.plan.md", base_dir=tmp_path) + assert "[docs/sprint.plan.md](docs/sprint.plan.md)" in result + + +# --------------------------------------------------------------------------- +# Combined / edge cases +# --------------------------------------------------------------------------- + + +class TestCombined: + """Tests for combined scenarios and edge cases.""" + + def test_mixed_urls_and_paths(self, tmp_path: Path) -> None: + (tmp_path / "docs").mkdir() + (tmp_path / "docs" / "api.md").write_text("api") + + text = "See docs/api.md and https://example.com for info" + result = linkify_markdown(text, base_dir=tmp_path) + assert "[docs/api.md](docs/api.md)" in result + assert "[https://example.com](https://example.com)" in result + + def test_empty_string(self) -> None: + assert linkify_markdown("") == "" + + def test_no_links(self) -> None: + text = "Just some plain text with no links." + assert linkify_markdown(text) == text + + def test_realistic_gate_prompt(self, tmp_path: Path) -> None: + """Simulates the exact gate prompt from the bug report.""" + (tmp_path / "docs" / "projects").mkdir(parents=True) + for name in ["area-mode.plan.md", "init-help-updates.plan.md", "recent-mode.plan.md"]: + (tmp_path / "docs" / "projects" / name).write_text("plan") + + text = ( + "Epic with 3 child issue plans found:\n\n" + "- docs/projects/area-mode.plan.md\n\n" + "- docs/projects/init-help-updates.plan.md\n\n" + "- docs/projects/recent-mode.plan.md\n\n" + "What would you like to do?" + ) + result = linkify_markdown(text, base_dir=tmp_path) + + # Whitespace should be normalized + assert "\n\n\n" not in result + + # All paths should be linkified + assert "[docs/projects/area-mode.plan.md](docs/projects/area-mode.plan.md)" in result + assert ( + "[docs/projects/init-help-updates.plan.md](docs/projects/init-help-updates.plan.md)" + in result + ) + assert "[docs/projects/recent-mode.plan.md](docs/projects/recent-mode.plan.md)" in result + + def test_path_traversal_blocked(self, tmp_path: Path) -> None: + """Paths that escape base_dir should not be linked.""" + result = linkify_markdown("See ../../../etc/passwd.txt", base_dir=tmp_path) + assert "[../../../etc/passwd.txt]" not in result From 9754de314222045006a28e6643cf8833e54eac87 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Fri, 24 Apr 2026 11:39:32 -0700 Subject: [PATCH 32/42] feat: add system metadata to workflow_started event and checkpoints Auto-inject runtime diagnostics (PID, platform, Python version, cwd, conductor version, started_at, run_id, log_file, bg_mode) into the workflow_started event. Dashboard port/URL included when --web is active; parent_pid included in --web-bg mode. System metadata flows through: - JSONL event log (via EventLogSubscriber) - Web dashboard /api/info endpoint - Checkpoint files (for resume context) PID files are intentionally left unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/conductor/cli/run.py | 2 + src/conductor/engine/checkpoint.py | 3 + src/conductor/engine/workflow.py | 51 +++++- src/conductor/web/server.py | 45 +++-- tests/test_engine/test_system_metadata.py | 201 ++++++++++++++++++++++ 5 files changed, 288 insertions(+), 14 deletions(-) create mode 100644 tests/test_engine/test_system_metadata.py diff --git a/src/conductor/cli/run.py b/src/conductor/cli/run.py index d6ff0c3..c3941fa 100644 --- a/src/conductor/cli/run.py +++ b/src/conductor/cli/run.py @@ -1130,6 +1130,8 @@ async def run_workflow_async( web_dashboard=dashboard, run_id=event_log_subscriber.run_id if event_log_subscriber else "", log_file=str(event_log_subscriber.path) if event_log_subscriber else "", + dashboard_port=(dashboard._actual_port if dashboard is not None else None), + bg_mode=web_bg or os.environ.get("CONDUCTOR_WEB_BG") == "1", ) # Share interrupt_event with dashboard so POST /api/stop can abort agents diff --git a/src/conductor/engine/checkpoint.py b/src/conductor/engine/checkpoint.py index 27dc2fa..596861e 100644 --- a/src/conductor/engine/checkpoint.py +++ b/src/conductor/engine/checkpoint.py @@ -136,6 +136,7 @@ def save_checkpoint( error: BaseException, inputs: dict[str, Any], copilot_session_ids: dict[str, str] | None = None, + system_metadata: dict[str, Any] | None = None, ) -> Path | None: """Serialize workflow state to a checkpoint file. @@ -153,6 +154,7 @@ def save_checkpoint( error: The exception that triggered the checkpoint. inputs: Workflow inputs. copilot_session_ids: Optional mapping of agent names to session IDs. + system_metadata: Optional system metadata captured at workflow start. Returns: Path to the saved checkpoint file, or ``None`` if saving failed. @@ -193,6 +195,7 @@ def save_checkpoint( "context": _make_json_serializable(context.to_dict()), "limits": _make_json_serializable(limits.to_dict()), "copilot_session_ids": copilot_session_ids or {}, + "system": system_metadata or {}, } # Serialize to JSON diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index f04a49b..8b90ed4 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -273,6 +273,8 @@ def __init__( _subworkflow_depth: int = 0, run_id: str = "", log_file: str = "", + dashboard_port: int | None = None, + bg_mode: bool = False, ) -> None: """Initialize the WorkflowEngine. @@ -359,6 +361,11 @@ def __init__( # Sub-workflow depth tracking self._subworkflow_depth = _subworkflow_depth + # System metadata fields (set by CLI, used in workflow_started event) + self._dashboard_port = dashboard_port + self._bg_mode = bg_mode + self._system_metadata: dict[str, Any] = {} + def _build_pricing_overrides(self) -> dict[str, ModelPricing] | None: """Build pricing overrides from workflow cost configuration. @@ -416,6 +423,43 @@ def _conductor_version() -> str: except Exception: return "unknown" + def _build_system_metadata(self) -> dict[str, Any]: + """Build system metadata dict for the workflow_started event. + + Captures runtime diagnostics that would be lost if the process crashes: + PID, platform, Python version, working directory, etc. + + Returns: + Dict with system metadata fields. + """ + import os + import platform as _platform + import sys + from datetime import UTC, datetime + + system: dict[str, Any] = { + "pid": os.getpid(), + "platform": sys.platform, + "python_version": _platform.python_version(), + "conductor_version": self._conductor_version(), + "cwd": os.getcwd(), + "started_at": datetime.now(UTC).isoformat(), + "run_id": self._run_id, + "log_file": self._log_file, + "bg_mode": self._bg_mode, + } + + # Conditional fields — only when dashboard is active + if self._dashboard_port is not None: + system["dashboard_port"] = self._dashboard_port + system["dashboard_url"] = f"http://127.0.0.1:{self._dashboard_port}" + + # Parent PID is useful in --web-bg to trace back to the forking CLI process + if self._bg_mode: + system["parent_pid"] = os.getppid() + + return system + def _make_event_callback(self, agent_name: str) -> Any: """Create an event callback for an agent that forwards to the emitter. @@ -801,6 +845,7 @@ def _save_checkpoint_on_failure(self, error: BaseException) -> None: error=error, inputs=self.context.workflow_inputs, copilot_session_ids=copilot_session_ids, + system_metadata=self._system_metadata, ) self._last_checkpoint_path = checkpoint_path if checkpoint_path is not None: @@ -855,9 +900,7 @@ async def _handle_gate_with_web( """ # If no web dashboard at all, use CLI only. if self._web_dashboard is None: - gate_base = ( - Path(self.workflow_path).resolve().parent if self.workflow_path else None - ) + gate_base = Path(self.workflow_path).resolve().parent if self.workflow_path else None return await self.gate_handler.handle_gate(agent, agent_context, base_dir=gate_base) # Race CLI vs web input. We start the web task unconditionally (not only @@ -1205,6 +1248,7 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: try: async with self.limits.timeout_context(): # Emit workflow_started before the execution loop + self._system_metadata = self._build_system_metadata() self._emit( "workflow_started", { @@ -1262,6 +1306,7 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: ], **self._yaml_source_field(), "metadata": self.config.workflow.metadata, + "system": self._build_system_metadata(), "run_id": self._run_id, "log_file": self._log_file, }, diff --git a/src/conductor/web/server.py b/src/conductor/web/server.py index d867025..1caaf7f 100644 --- a/src/conductor/web/server.py +++ b/src/conductor/web/server.py @@ -41,11 +41,31 @@ _BG_GRACE_SECONDS = 30 # File API: allowed text extensions and max file size -_FILE_ALLOWED_EXTENSIONS = frozenset({ - ".md", ".txt", ".yaml", ".yml", ".json", ".log", - ".py", ".ts", ".js", ".tsx", ".jsx", ".css", ".html", - ".toml", ".cfg", ".ini", ".csv", ".xml", ".sh", ".bat", ".ps1", -}) +_FILE_ALLOWED_EXTENSIONS = frozenset( + { + ".md", + ".txt", + ".yaml", + ".yml", + ".json", + ".log", + ".py", + ".ts", + ".js", + ".tsx", + ".jsx", + ".css", + ".html", + ".toml", + ".cfg", + ".ini", + ".csv", + ".xml", + ".sh", + ".bat", + ".ps1", + } +) _FILE_MAX_SIZE = 1 * 1024 * 1024 # 1 MB @@ -181,6 +201,7 @@ async def get_info() -> JSONResponse: "workflow_name": data.get("name", ""), "started_at": event.get("timestamp", 0), "metadata": data.get("metadata", {}), + "system": data.get("system", {}), } break return JSONResponse(content=info) @@ -289,12 +310,14 @@ async def get_file(file_path: str) -> JSONResponse: ) rel_path = str(target.relative_to(self._workflow_root)).replace("\\", "/") - return JSONResponse({ - "path": rel_path, - "content": content, - "size": file_size, - "extension": target.suffix.lower(), - }) + return JSONResponse( + { + "path": rel_path, + "content": content, + "size": file_size, + "extension": target.suffix.lower(), + } + ) @app.websocket("/ws") async def websocket_endpoint(ws: WebSocket) -> None: diff --git a/tests/test_engine/test_system_metadata.py b/tests/test_engine/test_system_metadata.py new file mode 100644 index 0000000..46c9814 --- /dev/null +++ b/tests/test_engine/test_system_metadata.py @@ -0,0 +1,201 @@ +"""Tests for system metadata in workflow_started event and checkpoints.""" + +import os +import sys +from pathlib import Path +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest + +from conductor.config.schema import ( + AgentDef, + ContextConfig, + LimitsConfig, + OutputField, + RouteDef, + RuntimeConfig, + WorkflowConfig, + WorkflowDef, +) +from conductor.engine.checkpoint import CheckpointManager +from conductor.engine.workflow import WorkflowEngine +from conductor.events import WorkflowEventEmitter + + +@pytest.fixture +def simple_config() -> WorkflowConfig: + """Minimal workflow config for testing.""" + return WorkflowConfig( + workflow=WorkflowDef( + name="test-workflow", + entry_point="agent1", + runtime=RuntimeConfig(provider="copilot"), + context=ContextConfig(mode="accumulate"), + limits=LimitsConfig(max_iterations=5), + ), + agents=[ + AgentDef( + name="agent1", + model="gpt-4", + prompt="Hello", + output={"result": OutputField(type="string")}, + routes=[RouteDef(to="$end")], + ), + ], + output={"final": "{{ agent1.output.result }}"}, + ) + + +class TestBuildSystemMetadata: + """Tests for WorkflowEngine._build_system_metadata().""" + + def test_always_present_fields(self, simple_config: WorkflowConfig) -> None: + """System metadata includes all required fields.""" + engine = WorkflowEngine(simple_config, run_id="abc123", log_file="/tmp/test.jsonl") + meta = engine._build_system_metadata() + + assert meta["pid"] == os.getpid() + assert meta["platform"] == sys.platform + assert "python_version" in meta + assert meta["conductor_version"] is not None + assert meta["cwd"] == os.getcwd() + assert "started_at" in meta + assert meta["run_id"] == "abc123" + assert meta["log_file"] == "/tmp/test.jsonl" + assert meta["bg_mode"] is False + + def test_no_dashboard_fields_by_default(self, simple_config: WorkflowConfig) -> None: + """Dashboard-specific fields are absent when no dashboard.""" + engine = WorkflowEngine(simple_config) + meta = engine._build_system_metadata() + + assert "dashboard_port" not in meta + assert "dashboard_url" not in meta + assert "parent_pid" not in meta + + def test_dashboard_fields_when_port_set(self, simple_config: WorkflowConfig) -> None: + """Dashboard port and URL present when dashboard_port is provided.""" + engine = WorkflowEngine(simple_config, dashboard_port=8080) + meta = engine._build_system_metadata() + + assert meta["dashboard_port"] == 8080 + assert meta["dashboard_url"] == "http://127.0.0.1:8080" + + def test_bg_mode_includes_parent_pid(self, simple_config: WorkflowConfig) -> None: + """Background mode includes parent_pid.""" + engine = WorkflowEngine(simple_config, bg_mode=True) + meta = engine._build_system_metadata() + + assert meta["bg_mode"] is True + assert meta["parent_pid"] == os.getppid() + + def test_started_at_is_iso_format(self, simple_config: WorkflowConfig) -> None: + """started_at is a valid ISO-8601 timestamp.""" + from datetime import datetime + + engine = WorkflowEngine(simple_config) + meta = engine._build_system_metadata() + + # Should not raise + datetime.fromisoformat(meta["started_at"]) + + +class TestSystemMetadataInEvent: + """Tests that system metadata appears in workflow_started event.""" + + @pytest.mark.asyncio + async def test_workflow_started_has_system_field(self, simple_config: WorkflowConfig) -> None: + """workflow_started event includes a 'system' dict.""" + emitter = WorkflowEventEmitter() + captured_events: list = [] + emitter.subscribe(lambda event: captured_events.append(event.to_dict())) + + engine = WorkflowEngine( + simple_config, + event_emitter=emitter, + run_id="test-run", + log_file="/tmp/test.jsonl", + dashboard_port=9090, + bg_mode=False, + ) + + # Mock out the actual execution to just emit workflow_started + mock_provider = MagicMock() + mock_provider.execute = AsyncMock( + return_value=MagicMock(content='{"result": "hello"}', model="gpt-4") + ) + engine.executor = MagicMock() + engine.executor.execute = mock_provider.execute + + # Trigger _execute_loop directly would be complex, so just call + # _build_system_metadata and verify the shape + meta = engine._build_system_metadata() + assert "pid" in meta + assert meta["dashboard_port"] == 9090 + assert "system" not in meta # no recursion + + +class TestSystemMetadataInCheckpoint: + """Tests that system metadata is saved in checkpoint files.""" + + def test_checkpoint_includes_system_field(self, tmp_path: Path) -> None: + """Checkpoint JSON includes system metadata when provided.""" + import json + + workflow_file = tmp_path / "test.yaml" + workflow_file.write_text("workflow:\n name: test\n") + + system_meta = { + "pid": 12345, + "platform": "win32", + "python_version": "3.12.4", + "cwd": str(tmp_path), + } + + from conductor.engine.context import WorkflowContext + from conductor.engine.limits import LimitEnforcer + + ctx = WorkflowContext() + limits = LimitEnforcer(max_iterations=10) + + with patch.object(CheckpointManager, "get_checkpoints_dir", return_value=tmp_path): + path = CheckpointManager.save_checkpoint( + workflow_path=workflow_file, + context=ctx, + limits=limits, + current_agent="agent1", + error=RuntimeError("test error"), + inputs={"q": "hello"}, + system_metadata=system_meta, + ) + + assert path is not None + data = json.loads(path.read_text()) + assert data["system"] == system_meta + + def test_checkpoint_system_empty_when_not_provided(self, tmp_path: Path) -> None: + """Checkpoint system field defaults to empty dict.""" + import json + + workflow_file = tmp_path / "test.yaml" + workflow_file.write_text("workflow:\n name: test\n") + + from conductor.engine.context import WorkflowContext + from conductor.engine.limits import LimitEnforcer + + ctx = WorkflowContext() + limits = LimitEnforcer(max_iterations=10) + + with patch.object(CheckpointManager, "get_checkpoints_dir", return_value=tmp_path): + path = CheckpointManager.save_checkpoint( + workflow_path=workflow_file, + context=ctx, + limits=limits, + current_agent="agent1", + error=RuntimeError("test error"), + inputs={}, + ) + + assert path is not None + data = json.loads(path.read_text()) + assert data["system"] == {} From 2f858849f6a90a33296f91c9b2a23c81fb3b0bb2 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Fri, 24 Apr 2026 14:58:34 -0700 Subject: [PATCH 33/42] feat: add visual workflow designer (conductor designer) Adds a web-based drag-and-drop visual designer for creating and editing conductor workflow YAML files. Launch with 'conductor designer' CLI command. Backend: - FastAPI server with REST endpoints for workflow CRUD, validation, export/import - WorkflowConfig <-> JSON bridge reusing existing Pydantic validation - YAML export via ruamel.yaml with clean formatting - CLI integration: conductor designer [workflow.yaml] [--port] [--no-open] Frontend (React + @xyflow/react + Zustand + TailwindCSS): - WorkflowConfig as source of truth (ReactFlow nodes/edges derived) - 8 node types: Agent, Gate, Script, Workflow, Parallel, ForEach, Start, End - Property panel with type-specific editors + workflow settings - Jinja2-aware prompt editor with syntax highlighting - YAML preview, validation panel, undo/redo (Ctrl+Z/Ctrl+Shift+Z) - Import/export YAML, save to disk, keyboard shortcuts (Ctrl+S) - Dagre auto-layout for DAG visualization Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .gitignore | 5 +- src/conductor/cli/app.py | 58 + src/conductor/designer/__init__.py | 5 + src/conductor/designer/cli.py | 62 + src/conductor/designer/exporter.py | 89 + src/conductor/designer/frontend/index.html | 13 + .../designer/frontend/package-lock.json | 2744 +++++++++++++++++ src/conductor/designer/frontend/package.json | 30 + src/conductor/designer/frontend/src/App.tsx | 50 + .../components/canvas/DesignerAgentNode.tsx | 52 + .../src/components/canvas/DesignerCanvas.tsx | 147 + .../src/components/canvas/DesignerEndNode.tsx | 20 + .../canvas/DesignerForEachGroup.tsx | 60 + .../components/canvas/DesignerGateNode.tsx | 56 + .../canvas/DesignerParallelGroup.tsx | 58 + .../components/canvas/DesignerScriptNode.tsx | 46 + .../components/canvas/DesignerStartNode.tsx | 20 + .../canvas/DesignerWorkflowNode.tsx | 46 + .../src/components/editors/PromptEditor.tsx | 99 + .../src/components/panels/AgentProperties.tsx | 178 ++ .../src/components/panels/PropertyPanel.tsx | 88 + .../src/components/panels/ValidationPanel.tsx | 62 + .../components/panels/WorkflowSettings.tsx | 137 + .../src/components/preview/YamlPreview.tsx | 53 + .../components/toolbar/DesignerToolbar.tsx | 246 ++ .../designer/frontend/src/globals.css | 58 + .../frontend/src/hooks/useDesignerApi.ts | 100 + .../frontend/src/lib/config-to-graph.ts | 251 ++ src/conductor/designer/frontend/src/main.tsx | 8 + .../frontend/src/stores/designer-store.ts | 390 +++ .../designer/frontend/src/types/designer.ts | 147 + src/conductor/designer/frontend/tsconfig.json | 25 + .../designer/frontend/tsconfig.tsbuildinfo | 1 + .../designer/frontend/vite.config.ts | 26 + src/conductor/designer/server.py | 303 ++ src/conductor/designer/state.py | 101 + .../designer/static/assets/index-DDe9EQpI.js | 71 + .../designer/static/assets/index-DMkjcRrk.css | 1 + src/conductor/designer/static/index.html | 14 + 39 files changed, 5918 insertions(+), 2 deletions(-) create mode 100644 src/conductor/designer/__init__.py create mode 100644 src/conductor/designer/cli.py create mode 100644 src/conductor/designer/exporter.py create mode 100644 src/conductor/designer/frontend/index.html create mode 100644 src/conductor/designer/frontend/package-lock.json create mode 100644 src/conductor/designer/frontend/package.json create mode 100644 src/conductor/designer/frontend/src/App.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerAgentNode.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerCanvas.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerEndNode.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerForEachGroup.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerGateNode.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerParallelGroup.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerScriptNode.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerStartNode.tsx create mode 100644 src/conductor/designer/frontend/src/components/canvas/DesignerWorkflowNode.tsx create mode 100644 src/conductor/designer/frontend/src/components/editors/PromptEditor.tsx create mode 100644 src/conductor/designer/frontend/src/components/panels/AgentProperties.tsx create mode 100644 src/conductor/designer/frontend/src/components/panels/PropertyPanel.tsx create mode 100644 src/conductor/designer/frontend/src/components/panels/ValidationPanel.tsx create mode 100644 src/conductor/designer/frontend/src/components/panels/WorkflowSettings.tsx create mode 100644 src/conductor/designer/frontend/src/components/preview/YamlPreview.tsx create mode 100644 src/conductor/designer/frontend/src/components/toolbar/DesignerToolbar.tsx create mode 100644 src/conductor/designer/frontend/src/globals.css create mode 100644 src/conductor/designer/frontend/src/hooks/useDesignerApi.ts create mode 100644 src/conductor/designer/frontend/src/lib/config-to-graph.ts create mode 100644 src/conductor/designer/frontend/src/main.tsx create mode 100644 src/conductor/designer/frontend/src/stores/designer-store.ts create mode 100644 src/conductor/designer/frontend/src/types/designer.ts create mode 100644 src/conductor/designer/frontend/tsconfig.json create mode 100644 src/conductor/designer/frontend/tsconfig.tsbuildinfo create mode 100644 src/conductor/designer/frontend/vite.config.ts create mode 100644 src/conductor/designer/server.py create mode 100644 src/conductor/designer/state.py create mode 100644 src/conductor/designer/static/assets/index-DDe9EQpI.js create mode 100644 src/conductor/designer/static/assets/index-DMkjcRrk.css create mode 100644 src/conductor/designer/static/index.html diff --git a/.gitignore b/.gitignore index 757d264..256adef 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,8 @@ dist/ downloads/ eggs/ .eggs/ -lib/ -lib64/ +/lib/ +/lib64/ parts/ sdist/ var/ @@ -80,3 +80,4 @@ Thumbs.db # Frontend src/conductor/web/frontend/node_modules/ +src/conductor/designer/frontend/node_modules/ diff --git a/src/conductor/cli/app.py b/src/conductor/cli/app.py index ecc3847..78bd726 100644 --- a/src/conductor/cli/app.py +++ b/src/conductor/cli/app.py @@ -1065,3 +1065,61 @@ def update() -> None: except Exception as e: print_error(e) raise typer.Exit(code=1) from None + + +@app.command() +def designer( + workflow: Annotated[ + str | None, + typer.Argument( + help="Optional workflow YAML file to open for editing.", + ), + ] = None, + port: Annotated[ + int, + typer.Option( + "--port", + help="Port to run the designer server on (0 = auto-select).", + ), + ] = 0, + no_open: Annotated[ + bool, + typer.Option( + "--no-open", + help="Don't auto-open the browser.", + ), + ] = False, + host: Annotated[ + str, + typer.Option( + "--host", + help="Host to bind the server to.", + ), + ] = "127.0.0.1", +) -> None: + """Launch the visual workflow designer. + + Opens a web-based drag-and-drop editor for creating and editing + conductor workflow YAML files. + + \b + Examples: + conductor designer # Create new workflow + conductor designer workflow.yaml # Edit existing file + conductor designer --port 3000 # Use specific port + conductor designer workflow.yaml --no-open # Don't open browser + """ + from conductor.designer.cli import run_designer + + try: + run_designer( + workflow_path=workflow, + host=host, + port=port, + no_open=no_open, + ) + except KeyboardInterrupt: + console.print("\n[dim]Designer stopped.[/dim]") + except Exception as e: + print_error(e) + raise typer.Exit(code=1) from None diff --git a/src/conductor/designer/__init__.py b/src/conductor/designer/__init__.py new file mode 100644 index 0000000..37d1fe2 --- /dev/null +++ b/src/conductor/designer/__init__.py @@ -0,0 +1,5 @@ +"""Conductor visual workflow designer. + +Launch a web-based drag-and-drop editor for creating and editing +workflow YAML files. Run ``conductor designer`` to start. +""" diff --git a/src/conductor/designer/cli.py b/src/conductor/designer/cli.py new file mode 100644 index 0000000..f53f27d --- /dev/null +++ b/src/conductor/designer/cli.py @@ -0,0 +1,62 @@ +"""CLI helper for ``conductor designer``. + +Launches the visual workflow designer server and opens a browser. +""" + +from __future__ import annotations + +import asyncio +import logging +import webbrowser +from pathlib import Path + +from rich.console import Console + +logger = logging.getLogger(__name__) +console = Console(stderr=True) + + +def run_designer( + *, + workflow_path: str | None = None, + host: str = "127.0.0.1", + port: int = 0, + no_open: bool = False, +) -> None: + """Start the designer server and block until Ctrl+C.""" + resolved = Path(workflow_path).resolve() if workflow_path else None + + if resolved and not resolved.exists(): + console.print(f"[yellow]⚠[/yellow] File not found: {resolved}") + console.print(" Starting with a blank workflow. Save will create the file.") + + async def _run() -> None: + from conductor.designer.server import DesignerServer + + server = DesignerServer( + workflow_path=resolved, + host=host, + port=port, + ) + await server.start() + + url = server.url + console.print( + f"\n[bold cyan]🎨 Conductor Designer[/bold cyan] → [link={url}]{url}[/link]" + ) + if resolved: + console.print(f" Editing: [dim]{resolved}[/dim]") + console.print(" Press [bold]Ctrl+C[/bold] to stop.\n") + + if not no_open: + webbrowser.open(url) + + try: + if server._serve_task: + await server._serve_task + except asyncio.CancelledError: + pass + finally: + await server.stop() + + asyncio.run(_run()) diff --git a/src/conductor/designer/exporter.py b/src/conductor/designer/exporter.py new file mode 100644 index 0000000..a530cfd --- /dev/null +++ b/src/conductor/designer/exporter.py @@ -0,0 +1,89 @@ +"""Export a ``WorkflowConfig`` to clean, human-readable YAML. + +Uses ``ruamel.yaml`` in round-trip mode so that editing an existing +file preserves comments and ordering where possible. New files get +a clean, opinionated layout. +""" + +from __future__ import annotations + +import io +from typing import Any + +from ruamel.yaml import YAML +from ruamel.yaml.comments import CommentedMap, CommentedSeq + +from conductor.config.schema import WorkflowConfig + + +def config_to_yaml(config: WorkflowConfig) -> str: + """Serialise *config* to a YAML string. + + The output is designed to be readable and diff-friendly: + * Top-level keys are ordered: ``workflow``, ``tools``, ``agents``, + ``parallel``, ``for_each``, ``output``. + * Empty collections (``[]``, ``{}``) are omitted. + * ``None`` values are omitted. + """ + data = config.model_dump(mode="json", by_alias=True, exclude_none=True) + ordered = _order_top_level(data) + cleaned = _clean_defaults(ordered) + + yaml = YAML() + yaml.default_flow_style = False + yaml.width = 120 + yaml.indent(mapping=2, sequence=4, offset=2) + + buf = io.StringIO() + yaml.dump(cleaned, buf) + return buf.getvalue() + + +def _order_top_level(data: dict[str, Any]) -> CommentedMap: + """Return a ``CommentedMap`` with canonical key ordering.""" + key_order = ["workflow", "tools", "agents", "parallel", "for_each", "output"] + cm = CommentedMap() + for key in key_order: + if key in data: + cm[key] = _to_commented(data[key]) + # Preserve any extra keys not in the canonical order + for key in data: + if key not in cm: + cm[key] = _to_commented(data[key]) + return cm + + +def _to_commented(value: Any) -> Any: + """Recursively convert dicts/lists to ruamel CommentedMap/Seq.""" + if isinstance(value, dict): + cm = CommentedMap() + for k, v in value.items(): + cm[k] = _to_commented(v) + return cm + if isinstance(value, list): + cs = CommentedSeq() + for item in value: + cs.append(_to_commented(item)) + return cs + return value + + +def _clean_defaults(data: Any) -> Any: + """Remove empty collections and default-valued fields.""" + if isinstance(data, (dict, CommentedMap)): + cleaned = CommentedMap() if isinstance(data, CommentedMap) else {} + for key, value in data.items(): + value = _clean_defaults(value) + # Skip empty collections + if isinstance(value, (list, CommentedSeq)) and len(value) == 0: + continue + if isinstance(value, (dict, CommentedMap)) and len(value) == 0: + continue + cleaned[key] = value + return cleaned + if isinstance(data, (list, CommentedSeq)): + result = CommentedSeq() if isinstance(data, CommentedSeq) else [] + for item in data: + result.append(_clean_defaults(item)) + return result + return data diff --git a/src/conductor/designer/frontend/index.html b/src/conductor/designer/frontend/index.html new file mode 100644 index 0000000..1e7ebdb --- /dev/null +++ b/src/conductor/designer/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + Conductor Designer + + + +
    + + + diff --git a/src/conductor/designer/frontend/package-lock.json b/src/conductor/designer/frontend/package-lock.json new file mode 100644 index 0000000..bb8e0fb --- /dev/null +++ b/src/conductor/designer/frontend/package-lock.json @@ -0,0 +1,2744 @@ +{ + "name": "conductor-designer", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "conductor-designer", + "version": "0.1.0", + "dependencies": { + "@dagrejs/dagre": "^1.1.4", + "@xyflow/react": "^12.6.0", + "clsx": "^2.1.1", + "lucide-react": "^0.469.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^2.6.0", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.0.0", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "@vitejs/plugin-react": "^4.3.4", + "tailwindcss": "^4.0.0", + "typescript": "^5.7.0", + "vite": "^6.4.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@dagrejs/dagre": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-1.1.8.tgz", + "integrity": "sha512-5SEDlndt4W/LaVzPYJW+bSmSEZc9EzTf8rJ20WCKvjS5EAZAN0b+x0Yww7VMT4R3Wootkg+X9bUfUxazYw6Blw==", + "license": "MIT", + "dependencies": { + "@dagrejs/graphlib": "2.2.4" + } + }, + "node_modules/@dagrejs/graphlib": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-2.2.4.tgz", + "integrity": "sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw==", + "license": "MIT", + "engines": { + "node": ">17.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", + "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", + "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", + "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", + "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", + "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", + "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", + "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", + "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", + "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", + "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", + "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", + "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", + "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", + "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", + "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", + "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", + "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", + "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", + "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", + "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", + "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", + "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", + "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", + "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", + "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.4.tgz", + "integrity": "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.4" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.4.tgz", + "integrity": "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-x64": "4.2.4", + "@tailwindcss/oxide-freebsd-x64": "4.2.4", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-x64-musl": "4.2.4", + "@tailwindcss/oxide-wasm32-wasi": "4.2.4", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.4.tgz", + "integrity": "sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.4.tgz", + "integrity": "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.4.tgz", + "integrity": "sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.4.tgz", + "integrity": "sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.4.tgz", + "integrity": "sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.4.tgz", + "integrity": "sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.4.tgz", + "integrity": "sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.4.tgz", + "integrity": "sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.4.tgz", + "integrity": "sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.4.tgz", + "integrity": "sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.4.tgz", + "integrity": "sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.4.tgz", + "integrity": "sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.4.tgz", + "integrity": "sha512-pCvohwOCspk3ZFn6eJzrrX3g4n2JY73H6MmYC87XfGPyTty4YsCjYTMArRZm/zOI8dIt3+EcrLHAFPe5A4bgtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.4", + "@tailwindcss/oxide": "4.2.4", + "tailwindcss": "4.2.4" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@xyflow/react": { + "version": "12.10.2", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.10.2.tgz", + "integrity": "sha512-CgIi6HwlcHXwlkTpr0fxLv/0sRVNZ8IdwKLzzeCscaYBwpvfcH1QFOCeaTCuEn1FQEs/B8CjnTSjhs8udgmBgQ==", + "license": "MIT", + "dependencies": { + "@xyflow/system": "0.0.76", + "classcat": "^5.0.3", + "zustand": "^4.4.0" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@xyflow/react/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.76", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.76.tgz", + "integrity": "sha512-hvwvnRS1B3REwVDlWexsq7YQaPZeG3/mKo1jv38UmnpWmxihp14bW6VtEOuHEwJX2FvzFw8k77LyKSk/wiZVNA==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz", + "integrity": "sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001790", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz", + "integrity": "sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/classcat": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.469.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.469.0.tgz", + "integrity": "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", + "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", + "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.5" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz", + "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.2", + "@rollup/rollup-android-arm64": "4.60.2", + "@rollup/rollup-darwin-arm64": "4.60.2", + "@rollup/rollup-darwin-x64": "4.60.2", + "@rollup/rollup-freebsd-arm64": "4.60.2", + "@rollup/rollup-freebsd-x64": "4.60.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", + "@rollup/rollup-linux-arm-musleabihf": "4.60.2", + "@rollup/rollup-linux-arm64-gnu": "4.60.2", + "@rollup/rollup-linux-arm64-musl": "4.60.2", + "@rollup/rollup-linux-loong64-gnu": "4.60.2", + "@rollup/rollup-linux-loong64-musl": "4.60.2", + "@rollup/rollup-linux-ppc64-gnu": "4.60.2", + "@rollup/rollup-linux-ppc64-musl": "4.60.2", + "@rollup/rollup-linux-riscv64-gnu": "4.60.2", + "@rollup/rollup-linux-riscv64-musl": "4.60.2", + "@rollup/rollup-linux-s390x-gnu": "4.60.2", + "@rollup/rollup-linux-x64-gnu": "4.60.2", + "@rollup/rollup-linux-x64-musl": "4.60.2", + "@rollup/rollup-openbsd-x64": "4.60.2", + "@rollup/rollup-openharmony-arm64": "4.60.2", + "@rollup/rollup-win32-arm64-msvc": "4.60.2", + "@rollup/rollup-win32-ia32-msvc": "4.60.2", + "@rollup/rollup-win32-x64-gnu": "4.60.2", + "@rollup/rollup-win32-x64-msvc": "4.60.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.1.tgz", + "integrity": "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.4.tgz", + "integrity": "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vite": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/zustand": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.12.tgz", + "integrity": "sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/src/conductor/designer/frontend/package.json b/src/conductor/designer/frontend/package.json new file mode 100644 index 0000000..bc83047 --- /dev/null +++ b/src/conductor/designer/frontend/package.json @@ -0,0 +1,30 @@ +{ + "name": "conductor-designer", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@dagrejs/dagre": "^1.1.4", + "@xyflow/react": "^12.6.0", + "clsx": "^2.1.1", + "lucide-react": "^0.469.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^2.6.0", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.0.0", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "@vitejs/plugin-react": "^4.3.4", + "tailwindcss": "^4.0.0", + "typescript": "^5.7.0", + "vite": "^6.4.2" + } +} diff --git a/src/conductor/designer/frontend/src/App.tsx b/src/conductor/designer/frontend/src/App.tsx new file mode 100644 index 0000000..6e95319 --- /dev/null +++ b/src/conductor/designer/frontend/src/App.tsx @@ -0,0 +1,50 @@ +/** + * Root application component for the Conductor Designer. + * + * Layout: + * ┌─────────────────────────────────┐ + * │ Toolbar │ + * ├──────────┬──────────┬───────────┤ + * │ │ │ Property │ + * │ Canvas │ YAML │ Panel │ + * │ │ Preview │ │ + * ├──────────┴──────────┴───────────┤ + * │ Validation Panel │ + * └─────────────────────────────────┘ + */ + +import { ReactFlowProvider } from '@xyflow/react'; +import { useDesignerStore } from '@/stores/designer-store'; +import { DesignerCanvas } from '@/components/canvas/DesignerCanvas'; +import { DesignerToolbar } from '@/components/toolbar/DesignerToolbar'; +import { PropertyPanel } from '@/components/panels/PropertyPanel'; +import { ValidationPanel } from '@/components/panels/ValidationPanel'; +import { YamlPreview } from '@/components/preview/YamlPreview'; + +export function App() { + const showYaml = useDesignerStore((s) => s.showYamlPreview); + + return ( + +
    + {/* Toolbar */} + + + {/* Main content */} +
    + {/* Canvas (takes remaining space) */} + + + {/* YAML Preview (optional, toggle) */} + {showYaml && } + + {/* Property Panel (always visible on right) */} + +
    + + {/* Validation panel (bottom) */} + +
    +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerAgentNode.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerAgentNode.tsx new file mode 100644 index 0000000..b47d5b5 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerAgentNode.tsx @@ -0,0 +1,52 @@ +/** + * Designer agent node — the most common node type. + * Shows name, model badge, and a truncated prompt preview. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; +import { useDesignerStore } from '@/stores/designer-store'; + +interface Props { + id: string; + data: DesignerNodeData; + selected?: boolean; +} + +export function DesignerAgentNode({ id, data, selected }: Props) { + const config = useDesignerStore((s) => s.config); + const selectNode = useDesignerStore((s) => s.selectNode); + const agent = config.agents.find((a) => a.name === data.entityName); + + const borderColor = selected ? 'border-blue-500' : 'border-gray-600'; + + return ( +
    selectNode(id)} + > + + +
    + + Agent + + {agent?.model && ( + + {agent.model} + + )} +
    + +
    {data.label}
    + + {agent?.prompt && ( +
    + {agent.prompt.slice(0, 60)}{agent.prompt.length > 60 ? '…' : ''} +
    + )} + + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerCanvas.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerCanvas.tsx new file mode 100644 index 0000000..88f2c6a --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerCanvas.tsx @@ -0,0 +1,147 @@ +/** + * Main designer canvas — wraps ReactFlow with editing capabilities. + */ + +import { useCallback, useEffect } from 'react'; +import { + ReactFlow, + Background, + Controls, + MiniMap, + type Connection, + type NodeChange, + BackgroundVariant, +} from '@xyflow/react'; +import { useDesignerStore } from '@/stores/designer-store'; +import { useLoadWorkflow, useValidate } from '@/hooks/useDesignerApi'; +import { DesignerAgentNode } from './DesignerAgentNode'; +import { DesignerGateNode } from './DesignerGateNode'; +import { DesignerScriptNode } from './DesignerScriptNode'; +import { DesignerWorkflowNode } from './DesignerWorkflowNode'; +import { DesignerParallelGroup } from './DesignerParallelGroup'; +import { DesignerForEachGroup } from './DesignerForEachGroup'; +import { DesignerStartNode } from './DesignerStartNode'; +import { DesignerEndNode } from './DesignerEndNode'; + +const nodeTypes = { + designerAgent: DesignerAgentNode, + designerGate: DesignerGateNode, + designerScript: DesignerScriptNode, + designerWorkflow: DesignerWorkflowNode, + designerParallel: DesignerParallelGroup, + designerForEach: DesignerForEachGroup, + designerStart: DesignerStartNode, + designerEnd: DesignerEndNode, +}; + +export function DesignerCanvas() { + const nodes = useDesignerStore((s) => s.nodes); + const edges = useDesignerStore((s) => s.edges); + const config = useDesignerStore((s) => s.config); + const addRoute = useDesignerStore((s) => s.addRoute); + const selectNode = useDesignerStore((s) => s.selectNode); + const updateNodePosition = useDesignerStore((s) => s.updateNodePosition); + + const loadWorkflow = useLoadWorkflow(); + const validate = useValidate(); + + // Load workflow from server on mount + useEffect(() => { + loadWorkflow(); + }, [loadWorkflow]); + + // Validate on config changes + useEffect(() => { + validate(config); + }, [config, validate]); + + // Handle new connections (edge drag) + const onConnect = useCallback( + (connection: Connection) => { + if (!connection.source || !connection.target) return; + + // Extract entity names from node IDs + const fromName = nodeIdToEntityName(connection.source); + const toName = connection.target === '__end__' + ? '$end' + : nodeIdToEntityName(connection.target); + + if (fromName && toName) { + addRoute(fromName, toName); + } + }, + [addRoute], + ); + + // Handle node position changes + const onNodesChange = useCallback( + (changes: NodeChange[]) => { + for (const change of changes) { + if (change.type === 'position' && 'position' in change && change.position && change.id) { + updateNodePosition(change.id, change.position); + } + if (change.type === 'select' && change.id) { + if ('selected' in change && change.selected) { + selectNode(change.id); + } + } + } + }, + [updateNodePosition, selectNode], + ); + + const onPaneClick = useCallback(() => { + selectNode(null); + }, [selectNode]); + + return ( +
    + + + + { + const data = node.data as { nodeType?: string } | undefined; + switch (data?.nodeType) { + case 'agent': return '#3b82f6'; + case 'human_gate': return '#f59e0b'; + case 'script': return '#22c55e'; + case 'workflow': return '#a855f7'; + case 'parallel': return '#06b6d4'; + case 'for_each': return '#f97316'; + case 'start': return '#22c55e'; + case 'end': return '#ef4444'; + default: return '#6b7280'; + } + }} + /> + +
    + ); +} + +/** Extract entity name from a node ID like "agent-foo" → "foo". */ +function nodeIdToEntityName(nodeId: string): string | null { + const prefixes = ['agent-', 'parallel-', 'foreach-']; + for (const prefix of prefixes) { + if (nodeId.startsWith(prefix)) { + return nodeId.slice(prefix.length); + } + } + return null; +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerEndNode.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerEndNode.tsx new file mode 100644 index 0000000..6ff54c7 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerEndNode.tsx @@ -0,0 +1,20 @@ +/** + * End node — marks workflow termination ($end route target). + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; + +interface Props { + data: DesignerNodeData; +} + +export function DesignerEndNode({ data: _data }: Props) { + return ( +
    + + + End +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerForEachGroup.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerForEachGroup.tsx new file mode 100644 index 0000000..13438fd --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerForEachGroup.tsx @@ -0,0 +1,60 @@ +/** + * For-each group node — composite node showing loop config. + * NOT a container — rendered as a single node with loop metadata. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; +import { useDesignerStore } from '@/stores/designer-store'; + +interface Props { + id: string; + data: DesignerNodeData; + selected?: boolean; +} + +export function DesignerForEachGroup({ id, data, selected }: Props) { + const config = useDesignerStore((s) => s.config); + const selectNode = useDesignerStore((s) => s.selectNode); + const group = (config.for_each ?? []).find((g) => g.name === data.entityName); + + const borderColor = selected ? 'border-orange-500' : 'border-gray-600'; + + return ( +
    selectNode(id)} + > + + +
    + + For Each + + {group && ( + + max {group.max_concurrent} + + )} +
    + +
    {data.label}
    + + {group && ( +
    +
    + source: {group.source} +
    +
    + as: {group.as} +
    +
    + agent: {group.agent.name || '(inline)'} +
    +
    + )} + + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerGateNode.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerGateNode.tsx new file mode 100644 index 0000000..8c2f1d8 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerGateNode.tsx @@ -0,0 +1,56 @@ +/** + * Human gate node — shows gate options as badges. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; +import { useDesignerStore } from '@/stores/designer-store'; + +interface Props { + id: string; + data: DesignerNodeData; + selected?: boolean; +} + +export function DesignerGateNode({ id, data, selected }: Props) { + const config = useDesignerStore((s) => s.config); + const selectNode = useDesignerStore((s) => s.selectNode); + const agent = config.agents.find((a) => a.name === data.entityName); + + const borderColor = selected ? 'border-amber-400' : 'border-gray-600'; + + return ( +
    selectNode(id)} + > + + +
    + + Gate + +
    + +
    {data.label}
    + + {agent?.options && ( +
    + {agent.options.slice(0, 4).map((opt) => ( + + {opt.label} + + ))} + {agent.options.length > 4 && ( + +{agent.options.length - 4} + )} +
    + )} + + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerParallelGroup.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerParallelGroup.tsx new file mode 100644 index 0000000..bcb2380 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerParallelGroup.tsx @@ -0,0 +1,58 @@ +/** + * Parallel group node — visual container showing member agents. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; +import { useDesignerStore } from '@/stores/designer-store'; + +interface Props { + id: string; + data: DesignerNodeData; + selected?: boolean; +} + +export function DesignerParallelGroup({ id, data, selected }: Props) { + const config = useDesignerStore((s) => s.config); + const selectNode = useDesignerStore((s) => s.selectNode); + const group = (config.parallel ?? []).find((g) => g.name === data.entityName); + + const borderColor = selected ? 'border-cyan-500' : 'border-gray-600'; + + return ( +
    selectNode(id)} + > + + +
    + + Parallel + + {group?.failure_mode && group.failure_mode !== 'fail_fast' && ( + + {group.failure_mode} + + )} +
    + +
    {data.label}
    + + {group?.agents && ( +
    + {group.agents.map((agentName) => ( +
    + {agentName} +
    + ))} +
    + )} + + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerScriptNode.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerScriptNode.tsx new file mode 100644 index 0000000..e84e915 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerScriptNode.tsx @@ -0,0 +1,46 @@ +/** + * Script node — shows command preview. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; +import { useDesignerStore } from '@/stores/designer-store'; + +interface Props { + id: string; + data: DesignerNodeData; + selected?: boolean; +} + +export function DesignerScriptNode({ id, data, selected }: Props) { + const config = useDesignerStore((s) => s.config); + const selectNode = useDesignerStore((s) => s.selectNode); + const agent = config.agents.find((a) => a.name === data.entityName); + + const borderColor = selected ? 'border-green-500' : 'border-gray-600'; + + return ( +
    selectNode(id)} + > + + +
    + + Script + +
    + +
    {data.label}
    + + {agent?.command && ( +
    + $ {agent.command} +
    + )} + + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerStartNode.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerStartNode.tsx new file mode 100644 index 0000000..88e9783 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerStartNode.tsx @@ -0,0 +1,20 @@ +/** + * Start node — marks the workflow entry point. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; + +interface Props { + data: DesignerNodeData; +} + +export function DesignerStartNode({ data: _data }: Props) { + return ( +
    + + Start + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/canvas/DesignerWorkflowNode.tsx b/src/conductor/designer/frontend/src/components/canvas/DesignerWorkflowNode.tsx new file mode 100644 index 0000000..a684432 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/canvas/DesignerWorkflowNode.tsx @@ -0,0 +1,46 @@ +/** + * Sub-workflow node — shows workflow path reference. + */ + +import { Handle, Position } from '@xyflow/react'; +import type { DesignerNodeData } from '@/types/designer'; +import { useDesignerStore } from '@/stores/designer-store'; + +interface Props { + id: string; + data: DesignerNodeData; + selected?: boolean; +} + +export function DesignerWorkflowNode({ id, data, selected }: Props) { + const config = useDesignerStore((s) => s.config); + const selectNode = useDesignerStore((s) => s.selectNode); + const agent = config.agents.find((a) => a.name === data.entityName); + + const borderColor = selected ? 'border-purple-500' : 'border-gray-600'; + + return ( +
    selectNode(id)} + > + + +
    + + Workflow + +
    + +
    {data.label}
    + + {agent?.workflow && ( +
    + 📁 {agent.workflow} +
    + )} + + +
    + ); +} diff --git a/src/conductor/designer/frontend/src/components/editors/PromptEditor.tsx b/src/conductor/designer/frontend/src/components/editors/PromptEditor.tsx new file mode 100644 index 0000000..b1ea8e8 --- /dev/null +++ b/src/conductor/designer/frontend/src/components/editors/PromptEditor.tsx @@ -0,0 +1,99 @@ +/** + * Prompt editor with basic Jinja2 template highlighting. + * + * Highlights {{ variable }} and {% control %} blocks with distinct colors. + * Uses a transparent textarea overlaid on a highlighted div. + */ + +import { useRef, useState, useCallback } from 'react'; + +interface Props { + value: string; + onChange: (value: string) => void; + rows?: number; + placeholder?: string; +} + +/** Simple Jinja2-aware prompt editor. */ +export function PromptEditor({ value, onChange, rows = 6, placeholder }: Props) { + const textareaRef = useRef(null); + const [focused, setFocused] = useState(false); + + const handleChange = useCallback( + (e: React.ChangeEvent) => { + onChange(e.target.value); + }, + [onChange], + ); + + return ( +
    + {/* Highlighted preview (behind the textarea) */} +
    + {highlightJinja2(value)} +
    + + {/* Transparent textarea (on top, captures input) */} +