From d477ca7121b714517af48fc9e5dfe1ba84925872 Mon Sep 17 00:00:00 2001 From: colombod Date: Sun, 21 Jun 2026 22:01:01 +0000 Subject: [PATCH 1/3] refactor(hook-context-intelligence): strip skill-fetch, make hook pure telemetry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Relocate all graph-query skill-sync responsibility out of the logging hook (now owned by tool-graph-query). The hook becomes a pure telemetry forwarder: removes the bundled legacy_content fallback, the SkillFetcher/skills:discovered wiring, and the obsolete skill-fetch tests. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- .../__init__.py | 163 +- .../config_resolver.py | 32 +- .../legacy_content/__init__.py | 0 .../context-intelligence-graph-query.md | 1335 ----------------- .../skill_fetcher.py | 229 --- .../hook-context-intelligence/pyproject.toml | 11 +- .../tests/helpers.py | 5 +- .../tests/test_bundle.py | 92 +- .../tests/test_config_resolver.py | 216 +-- .../tests/test_module_loading.py | 8 +- .../tests/test_mount.py | 21 +- .../tests/test_mount_dispatcher.py | 16 +- .../tests/test_resolve_skill_path.py | 138 -- .../tests/test_skill_cleanup.py | 70 + .../tests/test_skill_fetcher.py | 520 ------- .../tests/test_skill_fetcher_mount.py | 785 ---------- .../tests/test_tool_resolver.py | 521 +++++++ modules/hook-context-intelligence/uv.lock | 18 +- 18 files changed, 853 insertions(+), 3327 deletions(-) delete mode 100644 modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/__init__.py delete mode 100644 modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/context-intelligence-graph-query.md delete mode 100644 modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/skill_fetcher.py delete mode 100644 modules/hook-context-intelligence/tests/test_resolve_skill_path.py create mode 100644 modules/hook-context-intelligence/tests/test_skill_cleanup.py delete mode 100644 modules/hook-context-intelligence/tests/test_skill_fetcher.py delete mode 100644 modules/hook-context-intelligence/tests/test_skill_fetcher_mount.py create mode 100644 modules/hook-context-intelligence/tests/test_tool_resolver.py diff --git a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/__init__.py b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/__init__.py index 59b7b3bd..623a3a9d 100644 --- a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/__init__.py +++ b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/__init__.py @@ -13,7 +13,7 @@ workspace : str, optional Workspace identifier used to scope graph data on the server. Resolved automatically from the coordinator when not set - (see ConfigResolver.workspace). + (see HookConfigResolver.workspace). log_level : str, optional Logging level. Default ``"WARNING"``. base_path : str, optional @@ -36,97 +36,12 @@ import fnmatch import logging from collections.abc import Callable, Coroutine -from pathlib import Path -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - from .skill_fetcher import SkillFetcher +from typing import Any log = logging.getLogger(__name__) __amplifier_module_type__ = "hook" -# Path to the bundle root — works regardless of cache location or mounting order -# Path(__file__).parent = amplifier_module_hook_context_intelligence/ -# .parent = hook-context-intelligence/ -# .parent = modules/ -# .parent = bundle root (where skills/ lives) -_BUNDLE_ROOT = Path(__file__).parent.parent.parent.parent - - -def _resolve_skill_path(skill_name: str, coordinator: Any) -> Path | None: - """Resolve the filesystem path for a watched skill's SKILL.md file. - - Primary: queries the ``skills_discovery`` coordinator capability - (registered by the tool-skills module at mount time). Returns - ``metadata.path`` when the capability finds the skill. - - Fallback: returns ``_BUNDLE_ROOT / 'skills' / skill_name / 'SKILL.md'`` - when the parent directory exists on disk. - - Returns ``None`` when neither source can provide a valid path. - """ - from .skill_fetcher import TOOL_SKILLS_DISCOVERY_CAPABILITY - - # Primary: use skills_discovery capability - discovery = coordinator.get_capability(TOOL_SKILLS_DISCOVERY_CAPABILITY) - if discovery is not None: - metadata = discovery.find(skill_name) - if metadata is not None: - log.debug( - "skill_path_resolved: %s -> %s (via skills_discovery)", - skill_name, - metadata.path, - ) - return metadata.path - - # Fallback: check bundle root location - fallback = _BUNDLE_ROOT / "skills" / skill_name / "SKILL.md" - if fallback.parent.exists(): - log.debug( - "skill_path_resolved: %s -> %s (via bundle root fallback)", - skill_name, - fallback, - ) - return fallback - - log.warning( - "skill_path_unresolvable: %s — not found via skills_discovery or bundle root", skill_name - ) - return None - - -async def _refresh_watched_skills( - coordinator: Any, - fetcher: "SkillFetcher", - skills_capable: bool, -) -> None: - """Refresh all watched skills by resolving their paths and updating content. - - Branch B (not skills_capable): writes bundled legacy content via - ``fetcher.write_legacy_content``. - - Branch C (skills_capable): fetches live content from the server via - ``fetcher.fetch``, wrapped in a try/except to skip individual failures. - """ - from .skill_fetcher import WATCHED_SKILLS - - for skill_name in WATCHED_SKILLS: - skill_path = _resolve_skill_path(skill_name, coordinator) - if skill_path is None: - continue - - if not skills_capable: - # Branch B: old server — write bundled legacy content - fetcher.write_legacy_content(skill_name, skill_path) - else: - # Branch C: new server — fetch live content - try: - await fetcher.fetch(skill_name, skill_path) - except Exception as exc: - # Swallow per-skill failures — one bad skill must not block others - log.warning("skill_fetch_failed: %s — %s", skill_name, exc) - async def _discover_events(coordinator: Any) -> set[str]: """Union of ALL_EVENTS + module contributions + legacy capability.""" @@ -153,84 +68,20 @@ async def mount( """Mount the context-intelligence hook. Always: - - Registers ConfigResolver as ``context_intelligence.config_resolver`` capability + - Registers HookConfigResolver as ``context_intelligence.hook_config_resolver`` capability - LoggingHandler — writes events.jsonl + dispatches to CI server """ - from .config_resolver import ConfigResolver + from .config_resolver import HookConfigResolver from .handlers.logging_handler import LoggingHandler - from .skill_fetcher import ( - TOOL_SKILLS_DISCOVERY_CAPABILITY, - WATCHED_SKILLS, - SkillFetcher, - _is_skills_capable, - ) - resolver = ConfigResolver(config, coordinator) + resolver = HookConfigResolver(config, coordinator) log.setLevel(resolver.log_level) - coordinator.register_capability("context_intelligence.config_resolver", resolver) + coordinator.register_capability("context_intelligence.hook_config_resolver", resolver) unregister_fns: list[Callable[[], None]] = [] logging_handler = LoggingHandler(resolver) - # Skill fetch phase — deferred to skills:discovered event - server_url = resolver.context_intelligence_server_url - fetcher: SkillFetcher | None = None - skills_capable: bool = False - - if not server_url: - log.info("skill_fetch_skipped: no server_url in config") - else: - _tentative_fetcher = SkillFetcher(server_url) - result = await _tentative_fetcher.check_server_version() - log.info( - "skill_version_check: server=%s reachable=%s version=%s", - server_url, - result.reachable, - result.version, - ) - - if not result.reachable: - # Branch A: server unreachable — delegation fallback stays, SKILL.md untouched - log.info("skill_fetch_branch=A: server unreachable — SKILL.md unchanged") - else: - # Reachable: defer skill fetch to skills:discovered event - fetcher = _tentative_fetcher - skills_capable = _is_skills_capable(result.version) - - async def on_skills_discovered(event_name: str, data: dict[str, Any]) -> None: - await _refresh_watched_skills(coordinator, fetcher, skills_capable) - - unreg_skills_discovered = coordinator.hooks.register( - "skills:discovered", - on_skills_discovered, - priority=50, - name="SkillFetcher-trigger", - ) - unregister_fns.append(unreg_skills_discovered) - log.info("skill_fetch_deferred: registered skills:discovered handler") - # tools mount before hooks in Amplifier: if skills_discovery is - # already registered (tool-skills already ran), fetch immediately. - # The event handler above handles the reverse order if it ever occurs. - if coordinator.get_capability(TOOL_SKILLS_DISCOVERY_CAPABILITY) is not None: - log.info( - "skill_fetch_immediate: skills_discovery already registered " - "(tools mount before hooks) — fetching now" - ) - await _refresh_watched_skills(coordinator, fetcher, skills_capable) - - # skill:unloaded handler — re-fetches watched skills when they are reloaded - if fetcher is not None: - - async def on_skill_unloaded(event_name: str, data: dict[str, Any]) -> None: - if data.get("skill_name") in WATCHED_SKILLS: - await _refresh_watched_skills(coordinator, fetcher, skills_capable) # type: ignore[arg-type] - - unreg_skill = coordinator.hooks.register( - "skill:unloaded", on_skill_unloaded, priority=100, name="SkillFetcher" - ) - unregister_fns.append(unreg_skill) - # Share mutable state with on_session_ready via a private capability. # The cleanup closure closes over unregister_fns by reference — any entries # appended by on_session_ready() will be torn down automatically. @@ -252,7 +103,7 @@ async def cleanup() -> None: except Exception: pass try: - coordinator.register_capability("context_intelligence.config_resolver", None) + coordinator.register_capability("context_intelligence.hook_config_resolver", None) except Exception: pass try: diff --git a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/config_resolver.py b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/config_resolver.py index aa2b6f2a..f530d66e 100644 --- a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/config_resolver.py +++ b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/config_resolver.py @@ -1,23 +1,16 @@ -"""ConfigResolver — lazy fallback chain for hook configuration values.""" +"""HookConfigResolver — lazy fallback chain for hook configuration values.""" from __future__ import annotations -import os from pathlib import Path from typing import Any -from context_intelligence.config import SETTINGS_PATH, _parse_settings_yaml +from context_intelligence.config import SETTINGS_PATH, _env, _parse_settings_yaml # type: ignore[attr-defined] from context_intelligence.reconstruct.discover import workspace_slug _DEFAULT_BASE_PATH = "~/.amplifier/projects" _DEFAULT_PROJECT_SLUG = "default" -# Environment variable prefix for all hook configuration. -# AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE → workspace -# AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL → context_intelligence_server_url -# etc. -_ENV_PREFIX = "AMPLIFIER_CONTEXT_INTELLIGENCE_" - # Default event-name patterns (fnmatch) excluded from local JSONL logging and graph dispatch. # # The pattern ``llm:stream_*delta`` expresses the transient-streaming-delta *category*: it @@ -35,15 +28,6 @@ _DEFAULT_EXCLUDE_EVENTS: list[str] = ["llm:stream_*delta"] -def _env(suffix: str) -> str | None: - """Read ``AMPLIFIER_CONTEXT_INTELLIGENCE_`` from the environment. - - Returns the value as a string if set and non-empty, otherwise ``None``. - """ - value = os.environ.get(_ENV_PREFIX + suffix) - return value if value else None - - def _slugify_path(path_str: str) -> str: """Convert an absolute path to the CLI's project slug format. @@ -64,13 +48,13 @@ def _slugify_path(path_str: str) -> str: return slug or _DEFAULT_PROJECT_SLUG -class ConfigResolver: - """Resolve configuration values with lazy fallback chains. +class HookConfigResolver: + """Resolve configuration values with lazy fallback chains for the CI hook. Resolution order per property: - project_slug: config → coordinator.config → session.working_dir capability → 'default' - - base_path: config → coordinator.config → default + - base_path: config → coordinator.config → AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH env var → default - workspace: config['workspace'] → coordinator.config['workspace'] → project_slug Resolved values are cached after first access. @@ -151,13 +135,17 @@ def project_slug(self) -> str: def base_path(self) -> Path: """Resolved base path for project storage. - Chain: config['base_path'] → coordinator.config['base_path'] → default. + Chain: config['base_path'] + → coordinator.config['base_path'] + → AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH env var + → default (~/.amplifier/projects). Tilde is expanded. Result is cached after first access. """ if self._base_path is None: raw = ( self._config.get("base_path") or self._coordinator_config_get("base_path") + or _env("BASE_PATH") or _DEFAULT_BASE_PATH ) self._base_path = Path(raw).expanduser() diff --git a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/__init__.py b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/context-intelligence-graph-query.md b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/context-intelligence-graph-query.md deleted file mode 100644 index 221aced2..00000000 --- a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/legacy_content/context-intelligence-graph-query.md +++ /dev/null @@ -1,1335 +0,0 @@ - - ---- -name: context-intelligence-graph-query -version: 1.0.0 -description: Cypher query patterns for the context-intelligence graph store via graph_query tool -license: MIT ---- - -# Context Intelligence Graph Query (Cypher Dialect) - -This skill teaches how to query the context-intelligence property graph using -the `graph_query` tool. All structural traversal — sessions, events, tool calls, -delegations — is done through Cypher queries executed via the -`graph_query` tool. - -Query patterns for searching and traversing the context-intelligence graph. -Covers workspace scoping, structural traversal, delegation chains, step -sequencing, and graph algorithm patterns using native Cypher. - ---- - -## When to Use Graph vs File Patterns - -Choose the right approach based on what you need to find: - -| Query Type | Tool | Example | -|-----------|------|---------| -| Structural navigation (sessions, events, tool calls, delegations) | `graph_query` | "Find all tool calls in this session" | -| Relationship traversal (parent-child, HAS_FORK, HAS_TOOL_CALL) | `graph_query` | "Find all child sessions" | -| Session statistics and aggregations | `graph_query` | "Count tool calls by tool name" | -| Prompt text keyword search | `bash`+`grep` or `graph_query` | "Find prompts containing 'authentication'" | -| Large payload inspection (messages, results) | `bash`+`jq` after `blob_read` | "Read tool result JSON" | -| Event log text search across sessions | `bash`+`grep` on events.jsonl | "Find all sessions with a specific error" | - -**Fallback guidance:** If `graph_query` returns no results, fall back to -`bash`+`grep`/`jq` on the raw events.jsonl file — the graph may not have -been populated yet for in-progress sessions. - ---- - -## Schema Reference — Data Layer 1 - -> **Scope:** This section describes **Data Layer 1** — the only schema that is actually -> implemented and queryable today. See the [Data Layer 2 Warning](#data-layer-2-warning) -> section before writing any Cypher queries. - -### Node Types - -Data Layer 1 contains exactly **three** node types. - -| Node Label | Sub-labels | Description | -|---|---|---| -| `:Session` | `:RootSession` — no parent; `:ForkedSession` — spawned via `session:fork` | One Amplifier session. MERGE key: `{node_id, workspace}`. | -| `:ToolCall` | _(none)_ | One tool invocation lifecycle (pre → post/error). Created by `ToolCallHandler` on `tool:pre`. | -| `:Event` | `:{Category}Event`, `:{Specific}Event` — see Triple-Label Rule below | Every event that reaches `DefaultHandler`. Triple-labeled. | - ---- - -### Edge Types - -Data Layer 1 contains exactly **three** edge types. - -| Edge | From → To | When Created | -|---|---|---| -| `HAS_FORK` | `:Session` → `:Session` | On `session:fork` — parent session → forked child. | -| `HAS_TOOL_CALL` | `:Session` → `:ToolCall` | On `tool:pre` — session owns the tool call lifecycle node. | -| `HAS_EVENT` | `:Session` → `:Event` | On every `DefaultHandler` event — session owns the event node. | -| `HAS_EVENT` | `:ToolCall` → `:Event` | On `tool:pre`, `tool:post`, `tool:error` — tool call owns each lifecycle event. | - ---- - -### Event Triple-Label Rule - -Every `Event` node carries exactly **three** labels derived from the raw event name -by `DefaultHandler.derive_labels()`: - -1. **Base label** — always `:Event` -2. **Category label** — `:{Category}Event` (prefix before the last `:`, PascalCased) -3. **Specific label** — `:{Full}Event` (all parts split on `:` and `_`, PascalCased, `Event` suffix) - -The full table of 24 known event types: - -| Event Name | Category Label | Specific Label | -|---|---|---| -| `session:start` | `:SessionEvent` | `:SessionStartEvent` | -| `session:fork` | `:SessionEvent` | `:SessionForkEvent` | -| `session:end` | `:SessionEvent` | `:SessionEndEvent` | -| `session:resume` | `:SessionEvent` | `:SessionResumeEvent` | -| `execution:start` | `:ExecutionEvent` | `:ExecutionStartEvent` | -| `execution:end` | `:ExecutionEvent` | `:ExecutionEndEvent` | -| `orchestrator:complete` | `:OrchestratorEvent` | `:OrchestratorCompleteEvent` | -| `prompt:submit` | `:PromptEvent` | `:PromptSubmitEvent` | -| `prompt:complete` | `:PromptEvent` | `:PromptCompleteEvent` | -| `provider:request` | `:ProviderEvent` | `:ProviderRequestEvent` | -| `provider:response` | `:ProviderEvent` | `:ProviderResponseEvent` | -| `llm:request` | `:LlmEvent` | `:LlmRequestEvent` | -| `llm:response` | `:LlmEvent` | `:LlmResponseEvent` | -| `tool:pre` | `:ToolEvent` | `:ToolPreEvent` | -| `tool:post` | `:ToolEvent` | `:ToolPostEvent` | -| `tool:error` | `:ToolEvent` | `:ToolErrorEvent` | -| `delegate:start` | `:DelegateEvent` | `:DelegateStartEvent` | -| `delegate:agent_spawned` | `:DelegateEvent` | `:DelegateAgentSpawnedEvent` | -| `delegate:complete` | `:DelegateEvent` | `:DelegateCompleteEvent` | -| `recipe:start` | `:RecipeEvent` | `:RecipeStartEvent` | -| `recipe:step` | `:RecipeEvent` | `:RecipeStepEvent` | -| `recipe:complete` | `:RecipeEvent` | `:RecipeCompleteEvent` | -| `recipe:loop_iteration` | `:RecipeEvent` | `:RecipeLoopIterationEvent` | -| `skill:load` | `:SkillEvent` | `:SkillLoadEvent` | - -Unknown events follow the same derivation automatically. Use `:Event` as the base -label when querying across all event types. - ---- - -### FieldLifter Properties - -`DefaultHandler` applies all matching `FieldLifter` instances to expose structured -fields as top-level node properties on every `:Event` node. All lifters fire (not -first-match-wins); specific lifters can override Universal. - -| Lifter | Applies To (pattern) | Lifted Properties | -|---|---|---| -| `UniversalLifter` | `*` (all events) | `session_id`, `parent_id` | -| `ToolLifter` | `tool:*` | `tool_name`, `tool_input`, `tool_call_id`, `parallel_group_id` | -| `LlmLifter` | `llm:*` | `model`, `provider` | -| `DelegateLifter` | `delegate:*` | `agent`, `sub_session_id`, `parent_session_id`, `tool_call_id`, `parallel_group_id` | -| `PromptLifter` | `prompt:*` | `prompt`, `response_preview` | -| `RecipeLifter` | `recipe:*` | `recipe_name`, `current_step`, `description`, `status`, `step_id`, `total_steps` | -| `SessionLifter` | `session:*` | `parent`; from `metadata` dict: `agent_name`, `tool_call_id`, `parallel_group_id`, `recipe_name`, `recipe_step`, `recipe_step_index` | -| `SkillLifter` | `skill:*` | `skill_directory`, `skill_name` | -| `ArtifactLifter` | `artifact:*` | `bytes`, `path` | - -`None` values and missing keys are silently skipped. `data` (full JSON payload) is -always written as a fallback, but prefer lifted properties for structured access. - ---- - -### Data Layer 2 Warning - -> ⚠️ **Do not write queries using any of the following labels or relationships.** -> They are either stub labels with no connected edges, or relationship types that -> do not exist in the graph. Queries referencing them will silently return no results. - -**Labels That Exist But Have No Connected Edges:** - -The following node labels may appear as orphan nodes in the database but are not -connected to the rest of the graph via any traversable relationship: - -- `OrchestratorRun` -- `Step` -- `ToolExecution` -- `Delegation` -- `RecipeRun` - -These are Data Layer 2 concepts that were planned but whose edge relationships -were never implemented. **Do not write queries that traverse to or from these labels.** - -**Relationship Types That Do Not Exist:** - -The following relationship types are referenced in older documentation or planning -documents but are **not present** in the graph: - -- `HAS_RUN` -- `HAS_STEP` -- `TRIGGERED` -- `PARALLEL_WITH` -- `NEXT` - -**Do not write queries using any of these relationship types.** They will match -nothing and silently produce empty result sets with no error. - ---- - -### Node ID Formats - -| Node Type | Format | Example | -|---|---|---| -| `:Session` (root) | Raw UUID | `f881e0a0-c055-4ee4-84ed-ff44703150ea` | -| `:Session` (forked) | `{hex}-{hex}_{agent-name}` | `a1b2c3d4-e5f6-7890-abcd-ef1234567890_foundation:explorer` | -| `:Event` | `{session_id}__{event_name_underscored}__{epoch_ms}` | `f881e0a0-...__tool_pre__1742018545123` | -| `:ToolCall` | `{session_id}__tool_call__{tool_call_id}` | `f881e0a0-...__tool_call__call_abc123` | - -**Separator:** Double underscore `__` — never a single colon. -**`event_name_underscored`:** Raw event name with `:` replaced by `_` (e.g. `tool:pre` → `tool_pre`). -**`epoch_ms`:** Unix epoch milliseconds from the ISO 8601 timestamp. -**Disambiguator:** `tool_call_id` is appended to Event node IDs for tool lifecycle events to prevent collisions when parallel calls share the same millisecond timestamp. - ---- - -### Two Paths to Tool Data - -There are two complementary ways to query tool call information: - -| Path | Pattern | Best For | -|---|---|---| -| **Flexible** — via Event | `(s:Session)-[:HAS_EVENT]->(e:ToolEvent)` | Filtering by tool name, reading lifted fields, querying all tool activity regardless of lifecycle state | -| **Structured** — via ToolCall | `(s:Session)-[:HAS_TOOL_CALL]->(tc:ToolCall)` | Getting the lifecycle node (start + end times), correlating pre/post/error events via `(tc)-[:HAS_EVENT]->(e)` | - -The `:ToolCall` node provides: -- `tool_name` — the tool being called -- `tool_call_id` — provider-assigned correlation ID -- `session_id` — owning session -- `parallel_group_id` — set when the call is part of a parallel group -- `started_at` / `ended_at` — lifecycle timestamps (from `tool:pre` and `tool:post`/`tool:error`) - -Both paths are valid. Use the flexible path for event-level queries; use the -structured path when you need the lifecycle view or duration calculations. - ---- - -## Workspace Scoping - -Every query is scoped to a **workspace** — an isolated partition identified -by the `workspace` property present on all nodes and relationships. - -The `graph_query` tool handles automatic injection of the `$workspace` -parameter. When querying within the current workspace, the tool injects -the workspace value for you. Write Cypher queries that reference `$workspace` -explicitly in node patterns or WHERE clauses. - -### 1. Default query (own workspace) - -The `graph_query` tool auto-injects `$workspace` from the current session -context. Write queries that filter on `$workspace`: - -```cypher -// $workspace auto-injected by graph_query tool -MATCH (s:Session {workspace: $workspace}) -RETURN s.node_id, s.occurred_at -ORDER BY s.occurred_at DESC -``` - -### 2. Explicit workspace query - -Pass `workspace="other-project"` to target a specific workspace: - -```cypher -MATCH (s:Session {workspace: $workspace}) -RETURN s.node_id, s.occurred_at -``` - -### 3. Cross-workspace (wildcard) query - -Pass `workspace="*"` — the tool skips parameter injection entirely. -Write queries without `$workspace` filter, or add your own: - -```cypher -// workspace="*" — no automatic injection -MATCH (s:Session) -RETURN s.workspace, s.node_id, s.occurred_at -ORDER BY s.workspace, s.occurred_at DESC -``` - ---- - -## Query Patterns - -### Pattern 1: Find All Sessions in a Workspace - -```cypher -MATCH (s:Session {workspace: $workspace}) -RETURN s.node_id AS session_id, - s.occurred_at AS started_at, - labels(s) AS session_labels -ORDER BY s.occurred_at DESC -``` - -To restrict to only top-level (root) sessions: - -```cypher -MATCH (s:Session:RootSession {workspace: $workspace}) -RETURN s.node_id AS session_id, s.started_at AS started_at -ORDER BY s.started_at DESC -``` - -### Pattern 2: Session Execution Brackets - -Find all execution brackets (one per user turn): - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:ExecutionStartEvent) -RETURN e.node_id AS bracket_id, e.occurred_at AS turn_started -ORDER BY e.occurred_at -``` - -Brackets with duration (pair each start with its nearest end): - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(start:ExecutionStartEvent) -OPTIONAL MATCH (s)-[:HAS_EVENT]->(end:ExecutionEndEvent) -WHERE end.occurred_at > start.occurred_at -WITH start, min(end.occurred_at) AS turn_ended -RETURN start.node_id AS bracket_id, - start.occurred_at AS turn_started, - turn_ended, - duration.between(datetime(start.occurred_at), datetime(turn_ended)) AS duration -ORDER BY start.occurred_at -``` - -### Pattern 3: Session Event Timeline - -Complete chronological event timeline for a session: - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:Event) -RETURN e.event_name, labels(e), e.occurred_at -ORDER BY e.occurred_at -``` - -Filter to a specific event category (e.g., LLM events only): - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:LlmEvent) -RETURN e.event_name, e.model, e.occurred_at -ORDER BY e.occurred_at -``` - -### Pattern 4: Session Tool Activity - -There are two complementary paths to tool data in Data Layer 1. Use the **flexible -path** (via `:ToolEvent`) for search and analysis — it lets you filter by tool name, -read lifted fields, and query all tool activity regardless of lifecycle state. Use the -**structured path** (via `:ToolCall`) when the lifecycle node itself is the natural -anchor — for example, when you need start + end timestamps or want to correlate -pre/post/error events via `(tc)-[:HAS_EVENT]->(e)`. - -**Variant 1 — Flexible path (preferred for search and analysis):** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:ToolEvent) -RETURN e.event_name AS event_type, - e.tool_name, - e.tool_call_id, - e.parallel_group_id, - e.occurred_at -ORDER BY e.occurred_at -``` - -**Variant 2 — Filter to tool:pre only:** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:ToolPreEvent) -RETURN e.tool_name, - e.tool_call_id, - e.occurred_at -``` - -**Variant 3 — Structured path (when ToolCall is the anchor):** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_TOOL_CALL]->(tc:ToolCall) -RETURN tc.tool_name, - tc.tool_call_id, - tc.parallel_group_id, - tc.ended_at -ORDER BY tc.ended_at -``` - -### Pattern 5: Child Sessions and Delegation Metadata - -**Variant 1 — Direct child sessions (structural, via HAS_FORK):** - -```cypher -MATCH (parent:Session {workspace: $workspace, node_id: $session_id})-[:HAS_FORK]->(child:Session) -RETURN child.node_id AS child_session_id, - child.started_at AS started_at, - labels(child) AS session_labels -ORDER BY child.started_at -``` - -**Variant 2 — Delegation metadata (via DelegateAgentSpawnedEvent):** - -```cypher -MATCH (parent:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:DelegateAgentSpawnedEvent) -RETURN e.agent AS agent, - e.sub_session_id AS sub_session_id, - e.tool_call_id AS tool_call_id, - e.parallel_group_id AS parallel_group_id, - e.occurred_at AS occurred_at -ORDER BY e.occurred_at -``` - -**Variant 3 — Combined (structural children with delegation metadata):** - -```cypher -MATCH (parent:Session {workspace: $workspace, node_id: $session_id})-[:HAS_FORK]->(child:Session) -OPTIONAL MATCH (parent)-[:HAS_EVENT]->(e:DelegateAgentSpawnedEvent) -WHERE e.sub_session_id = child.node_id -RETURN child.node_id AS child_session_id, - child.started_at AS started_at, - e.agent AS agent, - e.tool_call_id AS tool_call_id -ORDER BY child.started_at -``` - -### Pattern 6: Session Overview - -**Variant 1 — Flat summary (counts per session):** - -```cypher -MATCH (s:Session {workspace: $workspace}) -OPTIONAL MATCH (s)-[:HAS_EVENT]->(e:Event) -OPTIONAL MATCH (s)-[:HAS_TOOL_CALL]->(tc:ToolCall) -OPTIONAL MATCH (s)-[:HAS_FORK]->(child:Session) -RETURN s.node_id, - s.started_at, - s.status, - count(DISTINCT e) AS event_count, - count(DISTINCT tc) AS tool_call_count, - count(DISTINCT child) AS child_session_count -ORDER BY s.started_at DESC -``` - -**Variant 2 — Breakdown by event category:** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:Event) -WITH e, [lbl IN labels(e) WHERE lbl ENDS WITH 'Event' AND lbl <> 'Event'] AS sub_labels -WHERE size(sub_labels) > 0 -RETURN sub_labels[0] AS event_category, - count(e) AS event_count -ORDER BY event_count DESC -``` - -### Pattern 7: Parallel Tool Call Groups - -**Variant 1 — Via ToolCall (structured path):** - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_TOOL_CALL]->(tc:ToolCall) -WHERE tc.parallel_group_id <> '' -RETURN tc.parallel_group_id AS parallel_group_id, - collect(tc.tool_name) AS tool_names, - count(tc) AS group_size -ORDER BY group_size DESC -``` - -**Variant 2 — Via ToolPreEvent (flexible path):** - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:ToolPreEvent) -WHERE e.parallel_group_id <> '' -RETURN e.parallel_group_id AS parallel_group_id, - collect(e.tool_name) AS tool_names, - count(e) AS group_size -ORDER BY group_size DESC -``` - -**Variant 3 — Peak parallelism across workspace:** - -```cypher -MATCH (s:Session:RootSession {workspace: $workspace})-[:HAS_TOOL_CALL]->(tc:ToolCall) -WHERE tc.parallel_group_id <> '' -WITH s.node_id AS session_id, - tc.parallel_group_id AS grp, - count(tc) AS grp_size -RETURN session_id, - max(grp_size) AS peak_parallelism, - count(DISTINCT grp) AS parallel_group_count -ORDER BY peak_parallelism DESC -LIMIT 20 -``` - -> **Note:** `parallel_group_id` is an empty string `""` (not null) when a tool runs -> alone. Use `tc.parallel_group_id <> ''` to filter parallel groups — not `IS NOT NULL`. - -### Pattern 8: Search Prompt Text - -`PromptSubmitEvent` nodes carry the `prompt` property (promoted by `PromptLifter`). Use -`PromptSubmitEvent` for submitted prompts and `PromptCompleteEvent` for completed ones. - -**Basic search:** - -```cypher -MATCH (e:PromptSubmitEvent {workspace: $workspace}) -WHERE e.prompt CONTAINS $search_term -RETURN e.session_id, e.prompt, e.occurred_at -ORDER BY e.occurred_at DESC -``` - -**Case-insensitive search using `toLower()`:** - -```cypher -MATCH (e:PromptSubmitEvent {workspace: $workspace}) -WHERE toLower(e.prompt) CONTAINS toLower($search_term) -RETURN e.session_id, e.prompt, e.occurred_at -ORDER BY e.occurred_at DESC -``` - -### Pattern 9: Count Nodes by Label - -```cypher -MATCH (n {workspace: $workspace}) -RETURN labels(n) AS node_labels, - count(n) AS node_count -ORDER BY node_count DESC -``` - -Count a specific label type: - -```cypher -MATCH (n:ToolCall {workspace: $workspace}) -RETURN count(n) AS tool_call_count -``` - -### Pattern 10: Find Child Sessions of a Parent - -**Variant 1 — Direct children only:** - -```cypher -MATCH (parent:Session {workspace: $workspace, node_id: $session_id})-[:HAS_FORK]->(child:Session) -RETURN child.node_id AS child_session_id, - child.started_at AS started_at, - labels(child) AS session_labels -ORDER BY child.started_at -``` - -**Variant 2 — All descendants (any depth):** - -```cypher -MATCH (parent:Session {workspace: $workspace, node_id: $session_id})-[:HAS_FORK*1..]->(descendant:Session) -RETURN descendant.node_id AS descendant_session_id, - descendant.started_at AS started_at, - labels(descendant) AS session_labels -ORDER BY descendant.started_at -``` - -### Pattern 11: Find Events Attached to a Session - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id}) - -[:HAS_EVENT]->(e:Event) -RETURN e.node_id AS event_id, - labels(e) AS event_labels, - e.occurred_at AS occurred_at -ORDER BY e.occurred_at -``` - -> **Note:** In Data Layer 1, all `HAS_EVENT` edges attach directly to the `Session` node. `ToolCall` nodes also carry `HAS_EVENT` edges for their `tool:pre` and `tool:post` events. - -Via ToolCall: - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_TOOL_CALL]->(tc:ToolCall)-[:HAS_EVENT]->(e:Event) -RETURN tc.tool_name AS tool_name, - tc.tool_call_id AS tool_call_id, - e.event_name AS event_name, - e.occurred_at AS occurred_at -ORDER BY e.occurred_at -``` - -### Pattern 12: Tool Activity Stats - -`:ToolCall` nodes have no `status` property — derive success/failure from event types: -`tool:pre` = initiated, `tool:post` = completed, `tool:error` = failed. - -**Per-tool event counts:** - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:ToolEvent) -RETURN e.tool_name, e.event_name, count(e) AS n -ORDER BY e.tool_name, e.event_name -``` - -**Tool error rate:** - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:ToolEvent) -WHERE e.event_name IN ['tool:post', 'tool:error'] -RETURN e.tool_name, - sum(CASE WHEN e.event_name = 'tool:error' THEN 1 ELSE 0 END) AS errors, - sum(CASE WHEN e.event_name = 'tool:post' THEN 1 ELSE 0 END) AS successes -ORDER BY errors DESC -``` - ---- - -## New Patterns — Data Layer 1 Capabilities - -The following patterns leverage Data Layer 1 graph nodes (`Session`, `Event`, -`ToolCall`, `HAS_FORK`, `HAS_EVENT`) and promoted event labels added by -PromptLifter, RecipeLifter, and other DL1 modules. - ---- - -### N1: Delegation Tree - -Traverse the full delegation chain from a root session to all its forked -descendants. Uses variable-length `HAS_FORK` traversal to build a complete -tree in one query. - -```cypher -MATCH path = (root:Session {workspace: $workspace, node_id: $session_id})-[:HAS_FORK*1..]->(child:Session) -RETURN [n IN nodes(path) | n.node_id] AS session_chain, - [n IN nodes(path) | labels(n)] AS label_chain, - length(path) AS depth -ORDER BY depth, child.started_at -``` - -**Acceptance check** — count paths per delegation depth (no `$session_id` -needed; walk the whole workspace): - -```cypher -MATCH path = (root:Session {workspace: $workspace})-[:HAS_FORK*1..]->(child:Session) -RETURN length(path) AS depth, count(*) AS paths_at_depth -ORDER BY depth -``` - ---- - -### N2: LLM Usage Per Session - -#### (a) Per-model call counts - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:LlmResponseEvent) -RETURN e.model, e.provider, count(e) AS llm_calls -ORDER BY llm_calls DESC -``` - -#### (b) Session-level token summary - -Token totals are surfaced by `OrchestratorCompleteEvent`, which fires once -at the end of each session. - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:OrchestratorCompleteEvent) -RETURN e.total_input_tokens, e.total_output_tokens, e.turn_count, e.occurred_at -``` - -> **Discovery note:** token property names may differ across versions. Run -> `MATCH (e:OrchestratorCompleteEvent) RETURN keys(e) LIMIT 1` to confirm -> the exact property names available on your graph. - ---- - -### N3: Recipe Progress - -#### (a) Step-level iteration tracking - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:RecipeLoopIterationEvent) -RETURN e.recipe_name, e.step_id, e.iteration, e.occurred_at -ORDER BY e.occurred_at -``` - -#### (b) Recipe completion events - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:RecipeLoopCompleteEvent) -RETURN e.recipe_name, e.occurred_at, s.node_id AS session_id -ORDER BY e.occurred_at DESC -``` - ---- - -### N4: ToolCall Lifecycle - -Retrieve all events attached to a specific `ToolCall` node in chronological -order. Each tool invocation gets its own `:ToolCall` node with `HAS_EVENT` -edges to `tool:pre`, `tool:post`, or `tool:error` events. - -```cypher -MATCH (tc:ToolCall {workspace: $workspace, node_id: $tool_call_node_id})-[:HAS_EVENT]->(e:Event) -RETURN e.event_name, e.occurred_at -ORDER BY e.occurred_at -``` - -**Acceptance check** — browse tool events without a specific node ID: - -```cypher -MATCH (tc:ToolCall {workspace: $workspace})-[:HAS_EVENT]->(e:Event) -RETURN tc.tool_name, e.event_name, e.occurred_at -LIMIT 5 -``` - ---- - -### N5: Event-Type Distribution - -Count every distinct event type across all sessions to understand what -activities are most frequent in the workspace. - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:Event) -RETURN e.event_name, count(*) AS n -ORDER BY n DESC -``` - ---- - -## Graph Algorithm Examples - -> ⚠️ **Data Layer 2 Only — DL1 graphs will return zero results for most examples below.** -> The "All Paths from Session to a Specific Tool Execution" and "Variable-Length Traversal" -> examples use DL2 relationships (`HAS_RUN`, `HAS_STEP`, `TRIGGERED`, `SPAWNED`, -> `SUBSESSION_OF`) and the `ToolExecution` label that do not exist in Data Layer 1. -> Only the "Shortest Path" example works on DL1 (it uses no label/relationship filters). -> These examples will be updated in Phase 2. - -### Shortest Path Between Two Nodes - -Find the shortest undirected path between any two nodes by `node_id`: - -```cypher -MATCH (a {node_id: $source_id, workspace: $workspace}), - (b {node_id: $target_id, workspace: $workspace}), - path = shortestPath((a)-[*]-(b)) -RETURN [n IN nodes(path) | n.node_id] AS node_chain, - [r IN relationships(path) | type(r)] AS rel_chain, - length(path) AS hop_count -``` - -### All Paths from Session to a Specific Tool Execution - -```cypher -MATCH (s:Session {node_id: $session_id, workspace: $workspace}), - (tc:ToolCall {node_id: $tool_call_id, workspace: $workspace}), - path = (s)-[*]->(tc) -RETURN [n IN nodes(path) | n.node_id] AS path_nodes, - [r IN relationships(path) | type(r)] AS rel_types, - length(path) AS depth -ORDER BY depth -LIMIT 10 -``` - -### Variable-Length Traversal (Descendant Subgraph) - -Walk up to 6 hops outward from a session to find all reachable nodes: - -```cypher -MATCH (s:Session {node_id: $session_id, workspace: $workspace}) - -[:HAS_EVENT | HAS_TOOL_CALL | HAS_FORK*1..6]->(descendant) -RETURN descendant.node_id AS node_id, - labels(descendant) AS node_labels, - descendant.occurred_at AS occurred_at -ORDER BY descendant.occurred_at -``` - -Walk the delegation lineage (any depth): - -```cypher -MATCH path = (root:Session {workspace: $workspace})-[:HAS_FORK*1..]->(descendant:Session) -RETURN [n IN nodes(path) | n.node_id] AS session_chain, - length(path) AS depth -ORDER BY depth -LIMIT 50 -``` - ---- - -## Usage via graph_query Tool - -### Bootstrap Queries - -Use these queries to verify graph connectivity and explore session data. - -#### Health check - -```cypher -MATCH (s:Session) RETURN count(s) AS session_count -``` - -#### Recent sessions - -```cypher -MATCH (s:Session {workspace: $workspace}) -RETURN s.node_id AS session_id, s.started_at, labels(s) AS session_labels -ORDER BY s.started_at DESC -LIMIT 10 -``` - -#### Tool calls for a session - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_TOOL_CALL]->(tc:ToolCall) -RETURN tc.tool_name, tc.started_at, tc.ended_at -ORDER BY tc.started_at -``` - -#### Child sessions - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_FORK]->(child:Session) -RETURN child.node_id AS child_session_id, child.started_at, labels(child) AS labels -ORDER BY child.started_at -``` - ---- - -All patterns above are executed through the `graph_query` tool. Pass a Cypher -query string as the first argument; the tool handles workspace scoping and -returns results as a list of row dicts. - -Basic usage — find sessions in the current workspace: - -``` -graph_query( - "MATCH (s:Session {workspace: $workspace}) " - "RETURN s.node_id, s.occurred_at ORDER BY s.occurred_at DESC" -) -# Returns: list of dicts, one per row -``` - -With additional parameters — find tool events for a specific session: - -``` -graph_query( - "MATCH (s:Session {workspace: $workspace, node_id: $session_id})" - "-[:HAS_EVENT]->(e:ToolPreEvent) " - "RETURN e.tool_name AS tool_name, e.occurred_at AS started_at", - params={"session_id": "6afb3613-7041-4735-9c0f-c2171452ed18"} -) -``` - -Query another workspace explicitly: - -``` -graph_query( - "MATCH (s:Session {workspace: $workspace}) RETURN s.node_id", - workspace="project-alpha" -) -``` - -Cross-workspace query (wildcard — no `$workspace` injected): - -``` -graph_query( - "MATCH (s:Session) " - "RETURN s.workspace AS ws, count(s) AS session_count " - "ORDER BY session_count DESC", - workspace="*" -) -``` - -> **Note:** `graph_query` operates on the **persisted (flushed) store only**. -> In-memory buffered writes are not visible to Cypher queries until the store -> has been flushed. Use `get_node()` / `get_edge()` for buffer-aware reads. - ---- - -## ID Format Reference - -### Session nodes - -Session `node_id` is the raw UUID from the Amplifier session. No -transformation is applied — the UUID is used directly: - -``` -55c8841a-1234-4abc-8def-000000000001 -``` - -### All other nodes - -Non-session nodes follow the pattern `{session_id}__{event_name}__{epoch_ms}`, -using `__` (double underscore) as the separator: - -``` -55c8841a-1234-4abc-8def-000000000001__prompt_submit__1737972001000 -55c8841a-1234-4abc-8def-000000000001__tool_pre__1737972005000 -55c8841a-1234-4abc-8def-000000000001__execution_start__1737972000000 -``` - -Parsing the ID: - -```python -# Split on double underscore separator -parts = node_id.split("__") -# parts[0] = session_id UUID -# parts[1] = event_name (colons replaced with underscores) -# parts[2] = epoch_ms as string -``` - -### ToolCall nodes - -`ToolCall` node IDs use a three-segment format. Unlike `Event` nodes, there is -no epoch_ms timestamp — the `tool_call_id` is the third segment: - -``` -55c8841a-1234-4abc-8def-000000000001__tool_call__call_abc123 -``` - -Parsing the ID: - -```python -# Split on double underscore separator -parts = node_id.split("__") -# parts[0] = session_id UUID -# parts[1] = "tool_call" (literal) -# parts[2] = tool_call_id (provider-assigned correlation ID) -``` - -### Relationship identity - -Relationships have no stored ID property. Identity is composite: -`(source.node_id, target.node_id, type(r))`. To locate a specific -relationship, match by endpoint `node_id` values and relationship type. - ---- - -## Critical Gotchas - -### 1. `metadata` is a JSON string, not a map - -Node `metadata` properties are stored as JSON-encoded strings. You cannot -filter on nested fields directly in Cypher. Parse them in application code -after retrieving: - -```cypher -// Correct — retrieve and parse in code -MATCH (s:Session {workspace: $workspace}) -RETURN s.node_id, s.metadata -``` - -Do **not** attempt `s.metadata.some_key` — Cypher will return `null`. - -### 2. Silently dropped events - -Events written during the same millisecond with identical `node_id` values -are silently deduplicated on `MERGE`. If two events share `session_id`, -`event_name`, and `timestamp_ms`, only the first is stored. Use -`tool_call_id` (present on `ToolCall` nodes) to disambiguate parallel -tool calls. - -### 3. No ordering guarantee on HAS_EVENT edges - -`HAS_EVENT` edges carry no sequence number. When retrieving events for a session, -always use `ORDER BY e.occurred_at` to get chronological order: - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:Event) -RETURN e.node_id, e.event_name, e.occurred_at -ORDER BY e.occurred_at ASC -``` - -### 4. Workspace scoping is manual - -`graph_query` injects `$workspace` automatically, but only if you reference -`$workspace` in your query. Omitting the filter from a MATCH clause silently -returns data from **all** workspaces. Always include `{workspace: $workspace}` -on the anchor node of every query. - -### 5. `HAS_EVENT` attaches directly to Session in DL1 - -All `HAS_EVENT` edges go directly from `Session` to `Event` — there is no -intermediate run-level node. `ToolCall` nodes also carry `HAS_EVENT` edges -to events scoped to that tool call. There is no run-level event routing in DL1. - -### 6. Node `MERGE` key is `{node_id, workspace}` - -All nodes are upserted using `MERGE (n {node_id: $node_id, workspace: $workspace})`. -Querying by `node_id` alone (without `workspace`) may match nodes from -other workspaces in a shared database. Always include `workspace` in -identity lookups. - ---- - -## Notes - -### Properties vs labels - -Labels are separate from properties. You can filter on both: - -```cypher -// Filter by label AND property -MATCH (s:RootSession {workspace: $workspace}) -RETURN s.node_id - -// Filter by property only (scans more nodes) -MATCH (n {workspace: $workspace}) -WHERE 'RootSession' IN labels(n) -RETURN n.node_id -``` - -Prefer label-based filters — they use index-backed label scans and are faster -than property-only filters. - -### Multi-label nodes - -Nodes carry both a base label and a sub-type label. Both can be used in MATCH: - -```cypher -// Matches any Session regardless of subtype -MATCH (s:Session {workspace: $workspace}) ... - -// Matches only root sessions (both labels present) -MATCH (s:Session:RootSession {workspace: $workspace}) ... - -// Equivalent WHERE form -MATCH (s:Session {workspace: $workspace}) -WHERE s:RootSession ... -``` - -### Workspace property on relationships - -Relationships also carry `workspace`. For cross-workspace queries where -you traverse relationships, add a relationship filter if needed: - -```cypher -// workspace="*" -MATCH (s:Session)-[r:HAS_FORK]->(child:Session) -WHERE r.workspace = $target_workspace -RETURN s.node_id, child.node_id -``` - -### Buffer visibility - -`graph_query` runs against the **persisted state only**. Nodes and -relationships buffered via `upsert_node`/`upsert_edge` but not yet flushed -will **not** appear in Cypher query results. Always flush before running -analysis queries when you need up-to-date results. - ---- - -## Foundational Traversal Primitive - -Data Layer 1 exposes three relationship types from a `Session` node. Use -`OPTIONAL MATCH` to combine all three in a single query: - -```cypher -MATCH (root:Session {node_id: $session_id, workspace: $workspace}) -OPTIONAL MATCH (root)-[:HAS_EVENT]->(e:Event) -OPTIONAL MATCH (root)-[:HAS_TOOL_CALL]->(tc:ToolCall) -OPTIONAL MATCH (root)-[:HAS_FORK*1..]->(child:Session) -RETURN - count(DISTINCT e) AS event_count, - count(DISTINCT tc) AS tool_call_count, - count(DISTINCT child) AS child_session_count -``` - -For deep delegation tree traversal (all descendant sessions, capped at 20 hops): - -```cypher -MATCH (root:Session {node_id: $session_id, workspace: $workspace}) - -[:HAS_FORK*1..20]->(descendant:Session) -RETURN descendant.node_id AS session_id, - labels(descendant) AS labels -ORDER BY descendant.started_at -``` - -**Note:** `parallel_group_id` is an empty string `""` (not null) when a tool -runs alone. Use `tc.parallel_group_id <> ""` to isolate parallel groups — not -`IS NOT NULL`. - ---- - -## Time-Activity Queries - -> All queries below use **Data Layer 1** constructs only: `Session:RootSession`, -> `HAS_EVENT`, `ExecutionStartEvent`, and `ExecutionEndEvent`. -> See [Data Layer 2 Warning](#data-layer-2-warning) for labels and relationship -> types that have no edges in the live graph and will return zero results. - -**Why `started_at <= T`:** For a session to be active at instant T, it must -have started at or before T and not yet ended. - -### 1. Session-Level: Active Sessions at a Point in Time - -Root sessions that were active at a specific instant. Uses `started_at` and -`ended_at` properties on the `Session` node (populated by `session:start` and -`session:end` events). - -```cypher -MATCH (s:Session:RootSession {workspace: $workspace}) -WHERE s.started_at <= $point_in_time - AND (s.ended_at IS NULL OR s.ended_at >= $point_in_time) -RETURN s.node_id AS root_session_id, - s.started_at AS root_started, - s.ended_at AS root_ended -ORDER BY s.started_at DESC -``` - -### 2. Session-Level: Sessions in a Time Range - -Root sessions that started within a time window [t1, t2]: - -```cypher -MATCH (s:Session:RootSession {workspace: $workspace}) -WHERE s.started_at >= $t1 AND s.started_at <= $t2 -RETURN s.node_id AS root_session_id, - s.started_at AS root_started, - s.ended_at AS root_ended -ORDER BY s.started_at DESC -``` - -### 3. Turn-Level: Execution Brackets Within a Session - -Each user turn produces an `ExecutionStartEvent` and (when complete) an -`ExecutionEndEvent`. Use these to find turn boundaries within a specific -session: - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(start:ExecutionStartEvent) -OPTIONAL MATCH (s)-[:HAS_EVENT]->(end:ExecutionEndEvent) -WHERE end.occurred_at > start.occurred_at -WITH start, min(end.occurred_at) AS turn_ended -RETURN start.node_id AS bracket_id, - start.occurred_at AS turn_started, - turn_ended, - duration.between(datetime(start.occurred_at), datetime(turn_ended)) AS duration -ORDER BY start.occurred_at -``` - -### 4. Sessions with Any Turn in a Time Window - -Find root sessions that had at least one execution turn start within [t1, t2]: - -```cypher -MATCH (s:Session:RootSession {workspace: $workspace})-[:HAS_EVENT]->(e:ExecutionStartEvent) -WHERE e.occurred_at >= $t1 AND e.occurred_at <= $t2 -RETURN DISTINCT - s.node_id AS root_session_id, - s.started_at AS root_started, - count(e) AS turns_in_window -ORDER BY root_started DESC -``` - ---- - -## Recipe Analytics - -> **DL1 Note:** In Data Layer 1, recipe data is captured as `RecipeLoopIterationEvent` -> and `RecipeLoopCompleteEvent` nodes. There is no dedicated recipe wrapper node. - -**1. Sessions That Ran a Recipe** (via `RecipeLoopIterationEvent`): - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:RecipeLoopIterationEvent) -RETURN DISTINCT s.node_id AS session_id, s.started_at, - e.recipe_name -ORDER BY s.started_at DESC -``` - -**2. Recipe Progress for a Session** (`recipe_name`, `step_id`, `iteration`, `occurred_at`): - -```cypher -MATCH (s:Session {node_id: $session_id, workspace: $workspace}) - -[:HAS_EVENT]->(e:RecipeLoopIterationEvent) -RETURN e.recipe_name, e.step_id, e.iteration, e.occurred_at -ORDER BY e.occurred_at -``` - -**3. Recipe Completion Events** (via `RecipeLoopCompleteEvent`): - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:RecipeLoopCompleteEvent) -RETURN s.node_id AS session_id, - e.recipe_name, - e.occurred_at AS completed_at, - e.status -ORDER BY e.occurred_at DESC -``` - -**4. Recipe Duration** (start to complete, joining iteration and complete events): - -```cypher -MATCH (s:Session {node_id: $session_id, workspace: $workspace}) - -[:HAS_EVENT]->(iter:RecipeLoopIterationEvent) -MATCH (s)-[:HAS_EVENT]->(done:RecipeLoopCompleteEvent) -WHERE iter.recipe_name = done.recipe_name -RETURN iter.recipe_name, - min(iter.occurred_at) AS recipe_started, - done.occurred_at AS recipe_completed -``` - -> **Note:** Cypher implicitly groups by non-aggregated columns — no explicit -> `GROUP BY` needed. If `occurred_at` is stored as a Neo4j `datetime` type, -> you can wrap both values in `duration.between()` to compute elapsed time. - -**5. Loop Iteration Count per Recipe** (count and max iteration reached, grouped by recipe + step): - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:RecipeLoopIterationEvent) -RETURN e.recipe_name, - e.step_id, - count(e) AS total_iterations, - max(e.iteration) AS max_iteration_reached -ORDER BY total_iterations DESC -``` - ---- - -## Parallelism Degree - -When the orchestrator fires multiple tool calls at once, each concurrent call -shares the same `parallel_group_id` (a UUID string). Tool calls that run alone -get `parallel_group_id = ""` (empty string — **never null**). Always filter -with `<> ""`, never with `IS NOT NULL`. - -**1. Parallel groups for a session — via ToolCall (structured path):** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_TOOL_CALL]->(tc:ToolCall) -WHERE tc.parallel_group_id <> "" -RETURN tc.parallel_group_id, - collect(tc.tool_name) AS tools, - count(tc) AS parallel_degree -ORDER BY parallel_degree DESC -``` - -**2. Parallel groups for a session — via ToolPreEvent (flexible path, includes tool_input):** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:ToolPreEvent) -WHERE e.parallel_group_id <> "" -RETURN e.parallel_group_id, - collect(e.tool_name) AS tools, - collect(e.tool_input) AS tool_inputs, - count(e) AS parallel_degree -ORDER BY parallel_degree DESC -``` - -**3. Peak parallelism across workspace — via Session:RootSession and HAS_TOOL_CALL:** - -```cypher -MATCH (s:Session:RootSession {workspace: $workspace})-[:HAS_TOOL_CALL]->(tc:ToolCall) -WHERE tc.parallel_group_id <> "" -WITH s.node_id AS session_id, tc.parallel_group_id AS grp, count(tc) AS grp_size -RETURN session_id, - max(grp_size) AS peak_parallelism, - count(DISTINCT grp) AS parallel_groups -ORDER BY peak_parallelism DESC LIMIT 20 -``` - -**4. Delegation parallelism — parallel agent spawns via DelegateAgentSpawnedEvent:** - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:DelegateAgentSpawnedEvent) -WHERE e.parallel_group_id <> "" -RETURN e.parallel_group_id, - collect(e.agent) AS agents, - collect(e.sub_session_id) AS sub_sessions, - count(e) AS parallel_degree -ORDER BY parallel_degree DESC -``` - ---- - -## Token Efficiency - -> **In Data Layer 1, token data lives on event nodes.** `LlmResponseEvent` nodes carry -> `model` and `provider` (via `LlmLifter`). Token counts may be at top level or in the -> `data` blob — run the discovery queries below to confirm what is available in your graph. - ---- - -### 1. Discovery: What Token Properties Exist - -Run these two queries first to confirm which properties are present on your graph before -writing any aggregation queries. - -**OrchestratorCompleteEvent properties:** - -```cypher -MATCH (e:OrchestratorCompleteEvent {workspace: $workspace}) -RETURN keys(e) AS properties -LIMIT 3 -``` - -**LlmResponseEvent properties:** - -```cypher -MATCH (e:LlmResponseEvent {workspace: $workspace}) -RETURN keys(e) AS properties -LIMIT 3 -``` - -> **Confirmed property names** (from FieldLifter documentation and live graph): -> - `OrchestratorCompleteEvent`: `total_input_tokens`, `total_output_tokens`, `turn_count` -> - `LlmResponseEvent`: `model`, `provider` (lifted by `LlmLifter`); token counts may be in -> the `data` blob — use `blob_read` + `jq` to extract them (see note at end of section). - ---- - -### 2. Session-Level Token Summary - -`OrchestratorCompleteEvent` fires once per session turn and carries cumulative token totals. -Use `Session` → `HAS_EVENT` → `OrchestratorCompleteEvent` to retrieve them. - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:OrchestratorCompleteEvent) -RETURN e.total_input_tokens AS total_input_tokens, - e.total_output_tokens AS total_output_tokens, - e.turn_count AS turn_count, - e.occurred_at AS occurred_at -ORDER BY e.occurred_at -``` - ---- - -### 3. Per-Model Usage in a Session - -`LlmResponseEvent` nodes carry `model` and `provider` (promoted by `LlmLifter`). Group by -both columns to break down LLM call counts per model within a session. - -```cypher -MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[:HAS_EVENT]->(e:LlmResponseEvent) -RETURN e.model AS model, - e.provider AS provider, - count(e) AS llm_calls -ORDER BY llm_calls DESC -``` - ---- - -### 4. Model Distribution Across Workspace - -Same pattern as above but without the `node_id` filter — returns model usage across all -sessions in the workspace. - -```cypher -MATCH (s:Session {workspace: $workspace})-[:HAS_EVENT]->(e:LlmResponseEvent) -RETURN e.model AS model, - e.provider AS provider, - count(e) AS llm_calls -ORDER BY llm_calls DESC -``` - -> **Extracting token counts from the data blob:** If `total_input_tokens` / -> `total_output_tokens` are null on `OrchestratorCompleteEvent` nodes, the raw values are -> stored in the `data` blob. Use `blob_read` to resolve the `ci-blob://` URI on the `data` -> property, then use `jq` to extract the token fields: -> -> ``` -> # 1. Get the data blob URI -> graph_query("MATCH (s:Session {workspace: $workspace, node_id: $session_id}) -> -[:HAS_EVENT]->(e:OrchestratorCompleteEvent) -> RETURN e.data LIMIT 1") -> -> # 2. Resolve and inspect with jq -> blob_read("ci-blob://...") # returns local file path -> bash("jq '.total_input_tokens, .total_output_tokens' /path/to/blob") -> ``` - diff --git a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/skill_fetcher.py b/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/skill_fetcher.py deleted file mode 100644 index 15f865d0..00000000 --- a/modules/hook-context-intelligence/amplifier_module_hook_context_intelligence/skill_fetcher.py +++ /dev/null @@ -1,229 +0,0 @@ -"""SkillFetcher — conditional HTTP GET for dynamic skill population.""" - -from __future__ import annotations - -import hashlib -import logging -from pathlib import Path -from typing import NamedTuple - -logger = logging.getLogger(__name__) - -WATCHED_SKILLS: frozenset[str] = frozenset({"context-intelligence-graph-query"}) - -# Coordinator capability key registered by the tool-skills module at mount time. -# tool-skills populates this with a SkillsDiscovery object that exposes -# .find(skill_name) -> SkillMetadata with the absolute filesystem path for each skill. -TOOL_SKILLS_DISCOVERY_CAPABILITY: str = "skills_discovery" - -# Sidecar filenames stored alongside SKILL.md -_ETAG_FILENAME: str = ".etag" -_CONTENT_HASH_FILENAME: str = ".content_hash" - - -class VersionCheckResult(NamedTuple): - """Result of a server version pre-check. - - reachable: True when the server responded (even with 404); False on network errors. - version: The server version string from GET /version, or None if not available. - """ - - reachable: bool - version: str | None - - -# DEPRECATED: Use server capability negotiation instead of version comparison. -_MIN_SKILLS_VERSION: tuple[int, ...] = (2, 0, 0) - - -def _is_skills_capable(version: str | None) -> bool: - """Return True if *version* is >= 2.0.0, False otherwise. - - Returns False for None, unparseable strings, and versions below 2.0.0. - """ - try: - parsed = tuple(int(part) for part in version.split(".")) # type: ignore[union-attr] - except (ValueError, AttributeError): - return False - return parsed >= _MIN_SKILLS_VERSION - - -def _sha256(path: Path) -> str: - """Return the hex SHA-256 digest of *path*'s content.""" - return hashlib.sha256(path.read_bytes()).hexdigest() - - -class SkillFetcher: - """Fetches skill files from a remote server with conditional GET (ETag). - - Drift detection - --------------- - tool-skills loads skills from git at mount time, potentially overwriting a - SKILL.md that was previously fetched from the server. To avoid the fetcher - incorrectly trusting a stale ETag after such an external write, a - ``.content_hash`` sidecar (SHA-256 of the last server-written content) is - stored alongside the ``.etag`` sidecar. Before sending ``If-None-Match``, - the fetcher verifies that the local file's hash still matches the stored - hash. A mismatch means the file drifted (git, manual edit, etc.) and an - unconditional GET is performed instead. - """ - - def __init__(self, server_url: str, timeout: float = 3.0) -> None: - self._server_url = server_url.rstrip("/") - self._timeout = timeout - - async def check_server_version(self) -> VersionCheckResult: - """Check the server version via GET /version. - - Returns - ------- - VersionCheckResult with reachable=False, version=None on network errors. - VersionCheckResult with reachable=True, version=None on 404. - VersionCheckResult with reachable=True, version= on 200. - VersionCheckResult with reachable=False, version=None on any other status. - Never raises — all exceptions are caught. - """ - import httpx # noqa: PLC0415 — lazy import to avoid loading httpx at module init time - - url = f"{self._server_url}/version" - try: - # Single GET — no context manager needed; httpx cleans up via __del__. - response = await httpx.AsyncClient().get(url, timeout=self._timeout) - except httpx.RequestError as exc: - logger.debug("check_server_version: unreachable — %s", exc) - return VersionCheckResult(reachable=False, version=None) - - if response.status_code == 404: - logger.debug("check_server_version: server reachable, /version absent (404)") - return VersionCheckResult(reachable=True, version=None) - - if response.status_code == 200: - version = response.json().get("version") - logger.debug("check_server_version: server at %s reported version=%s", url, version) - return VersionCheckResult(reachable=True, version=version) - - logger.debug( - "check_server_version: unexpected status %d — treating as unreachable", - response.status_code, - ) - return VersionCheckResult(reachable=False, version=None) - - # DEPRECATED: Remove once all servers >= 2.0.0. - def write_legacy_content(self, skill_name: str, skill_path: Path) -> None: - """Write bundled legacy skill content to *skill_path*. - - Reads the corresponding .md file from the ``legacy_content`` package - directory and writes it to *skill_path*. Any existing ``.etag`` sidecar - alongside *skill_path* is removed so the next session performs an - unconditional GET once the server is upgraded. The ``.content_hash`` - sidecar is updated to reflect what was written so drift detection - remains accurate. - - Raises - ------ - FileNotFoundError - If no legacy content exists for *skill_name* (packaging error — - must not be silenced). - - .. deprecated:: - Remove this method once all servers are >= 2.0.0. - """ - legacy_path = Path(__file__).parent / "legacy_content" / f"{skill_name}.md" - content = legacy_path.read_text(encoding="utf-8") - skill_path.write_text(content, encoding="utf-8") - - etag_path = skill_path.parent / _ETAG_FILENAME - if etag_path.exists(): - etag_path.unlink() - - # Keep .content_hash in sync with what was written so the next - # fetch() can detect if git later overwrites the file again. - content_hash_path = skill_path.parent / _CONTENT_HASH_FILENAME - content_hash_path.write_text(_sha256(skill_path)) - - logger.debug("legacy_skill_written: skill=%s [DEPRECATED]", skill_name) - - async def fetch(self, skill_name: str, skill_path: Path) -> bool: - """Fetch a skill file from the server. - - Performs a conditional HTTP GET using If-None-Match when an ETag sidecar - exists alongside *skill_path* **and** the local file's SHA-256 still - matches the stored ``.content_hash`` sidecar. A mismatch between the - local file and the stored hash means the file was modified externally - (e.g. tool-skills loaded a newer version from git) — in that case the - ETag is stale relative to the local state and an unconditional GET is - performed to re-align the local file with the server. - - Returns - ------- - True — 200 received; *skill_path*, ``.etag``, and ``.content_hash`` - sidecars were all updated. - False — 304 (not modified), connection/timeout error, or unexpected status. - """ - import httpx # noqa: PLC0415 — lazy import to avoid loading httpx at module init time - - url = f"{self._server_url}/skills/{skill_name}" - etag_path = skill_path.parent / _ETAG_FILENAME - content_hash_path = skill_path.parent / _CONTENT_HASH_FILENAME - - headers: dict[str, str] = {} - if etag_path.exists(): - stored_etag = etag_path.read_text().strip() - if stored_etag: - if skill_path.exists() and content_hash_path.exists(): - stored_hash = content_hash_path.read_text().strip() - current_hash = _sha256(skill_path) - if current_hash == stored_hash: - # Local file unchanged since last server fetch — safe to - # use the cached ETag for a conditional GET. - headers["If-None-Match"] = stored_etag - else: - # Local file drifted (e.g. git overwrote it). The stored - # ETag no longer corresponds to local content; skip it to - # force an unconditional GET and re-align with the server. - logger.info( - "skill_local_drift: %s — local content modified externally " - "(stored hash %s… → current %s…); " - "skipping If-None-Match for unconditional GET", - skill_name, - stored_hash[:8], - current_hash[:8], - ) - else: - # No content_hash sidecar yet (first run after upgrade, or - # legacy session). We cannot verify whether the local file - # still matches the server's ETag, so skip If-None-Match and - # let the server decide authoritatively. - logger.debug( - "skill_hash_missing: %s — no .content_hash sidecar; " - "skipping If-None-Match for unconditional GET", - skill_name, - ) - - try: - async with httpx.AsyncClient() as client: - response = await client.get(url, headers=headers, timeout=self._timeout) - except (httpx.ConnectError, httpx.TimeoutException) as exc: - logger.warning("skill_fetch_failed: %s — %s", skill_name, exc) - return False - - if response.status_code == 200: - skill_path.write_text(response.text) - etag = response.headers.get("etag", "") - if etag: - etag_path.write_text(etag) - # Record the hash of exactly what we wrote so drift detection works - # on the next session start. - content_hash_path.write_text(_sha256(skill_path)) - return True - - if response.status_code == 304: - logger.debug("Skill %s not modified (304)", skill_name) - return False - - logger.warning( - "skill_fetch_failed: unexpected status %d for %s", - response.status_code, - skill_name, - ) - return False diff --git a/modules/hook-context-intelligence/pyproject.toml b/modules/hook-context-intelligence/pyproject.toml index d8954adc..fb75fb8b 100644 --- a/modules/hook-context-intelligence/pyproject.toml +++ b/modules/hook-context-intelligence/pyproject.toml @@ -8,7 +8,7 @@ license = "MIT" dependencies = [ "httpx>=0.28.1", "idna>=3.15", - "amplifier-bundle-context-intelligence @ git+https://github.com/microsoft/amplifier-bundle-context-intelligence@v0.1.1", + "amplifier-bundle-context-intelligence @ git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main", ] [project.entry-points."amplifier.modules"] @@ -30,7 +30,7 @@ allow-direct-references = true [dependency-groups] dev = [ - "amplifier-core>=1.4.1", + "amplifier-core>=1.6.0", "pytest>=9.0.3", "pytest-asyncio>=0.24", "pyyaml>=6.0", @@ -38,13 +38,6 @@ dev = [ "ruff>=0.4", ] -[tool.uv.sources] -amplifier-core = { git = "https://github.com/microsoft/amplifier-core", rev = "v1.4.1" } -# Note: the bundle dependency is declared as a PEP 508 direct git reference in -# [project.dependencies] above (survives `uv pip install --no-sources`). It is -# intentionally NOT given a `path = "../.."` source here, so the module installs -# identically inside the monorepo and standalone. - [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" diff --git a/modules/hook-context-intelligence/tests/helpers.py b/modules/hook-context-intelligence/tests/helpers.py index ccce71ec..8cd7e348 100644 --- a/modules/hook-context-intelligence/tests/helpers.py +++ b/modules/hook-context-intelligence/tests/helpers.py @@ -7,9 +7,8 @@ from tests.helpers import make_lifecycle_coordinator, mount_and_ready -The ``config_resolver``-focused tests in ``test_config_resolver.py`` and the -skill-fetcher-specific tests in ``test_skill_fetcher_mount.py`` use different -coordinator shapes and should keep their own local helpers. +The ``config_resolver``-focused tests in ``test_config_resolver.py`` use a +different coordinator shape and should keep their own local helpers. """ from __future__ import annotations diff --git a/modules/hook-context-intelligence/tests/test_bundle.py b/modules/hook-context-intelligence/tests/test_bundle.py index 55564439..a75cdca6 100644 --- a/modules/hook-context-intelligence/tests/test_bundle.py +++ b/modules/hook-context-intelligence/tests/test_bundle.py @@ -9,21 +9,26 @@ def _load_behavior() -> dict: - """Load and parse the behavior YAML file.""" + """Load and parse the FULL umbrella behavior YAML file (composes design + logging).""" path = REPO_ROOT / "behaviors" / "context-intelligence.yaml" return yaml.safe_load(path.read_text()) -def _ci_hook(data: dict) -> dict: - """Return the hook-context-intelligence spec, located by module name. +def _load_logging_behavior() -> dict: + """Load and parse the LOGGING behavior YAML file (hook-only).""" + path = REPO_ROOT / "behaviors" / "context-intelligence-logging.yaml" + return yaml.safe_load(path.read_text()) + + +def _load_named_behavior(name: str) -> dict: + """Load and parse a behavior YAML file by behavior name (no .yaml suffix).""" + path = REPO_ROOT / "behaviors" / f"{name}.yaml" + return yaml.safe_load(path.read_text()) + - The behavior may wire multiple hooks (e.g. hooks-mode for mode discovery), - so this must not assume a fixed position in the hooks list. - """ - hooks = data.get("hooks", []) - matches = [h for h in hooks if h.get("module") == "hook-context-intelligence"] - assert matches, "behavior must wire the hook-context-intelligence hook" - return matches[0] +def _bundle_refs(data: dict) -> list[str]: + """Return the list of `includes[].bundle` reference strings for a behavior.""" + return [i["bundle"] for i in data.get("includes", []) if "bundle" in i] class TestBundleRoot: @@ -77,29 +82,64 @@ def test_root_pyproject_toml_is_for_library(self): assert "context_intelligence" in packages -class TestBehaviorYaml: - """Validate behavior YAML structure.""" +class TestFullBehaviorYaml: + """Validate the FULL umbrella behavior composes design + logging (no inline hook).""" def test_behavior_yaml_exists(self): assert (REPO_ROOT / "behaviors" / "context-intelligence.yaml").is_file() - def test_behavior_has_hooks_section(self): + def test_full_behavior_composes_design_and_logging(self): + """Full umbrella must include BOTH the design (top analysis layer) and logging behaviors.""" + bundle_refs = _bundle_refs(_load_behavior()) + assert any("context-intelligence-design" in ref for ref in bundle_refs), ( + f"Full behavior must include the design behavior, got: {bundle_refs!r}" + ) + assert any("context-intelligence-logging" in ref for ref in bundle_refs), ( + f"Full behavior must include logging behavior, got: {bundle_refs!r}" + ) + + def test_full_behavior_has_no_inline_hook(self): + """The hook now lives in the logging behavior, not inline in the full behavior. + + This keeps the hook registered exactly once across the include graph. + """ data = _load_behavior() - assert "hooks" in data, "Behavior YAML must have a hooks: section" + hook_modules = [h["module"] for h in data.get("hooks", [])] + assert "hook-context-intelligence" not in hook_modules, ( + "Full behavior must NOT inline the hook; it is composed via the logging behavior" + ) + + +class TestLoggingBehaviorYaml: + """Validate the LOGGING (hook-only) behavior YAML structure.""" + + def test_logging_behavior_exists(self): + assert (REPO_ROOT / "behaviors" / "context-intelligence-logging.yaml").is_file() + + def test_behavior_has_hooks_section(self): + data = _load_logging_behavior() + assert "hooks" in data, "Logging behavior YAML must have a hooks: section" + + def test_logging_behavior_has_no_agents_or_tools(self): + """Logging behavior is hook-ONLY — no analysis surface.""" + data = _load_logging_behavior() + assert "agents" not in data, "Logging behavior must not declare agents" + assert "tools" not in data, "Logging behavior must not declare tools" def test_behavior_hook_module_name(self): - data = _load_behavior() - # Located by module name, not position: the behavior also wires hooks-mode. - assert _ci_hook(data)["module"] == "hook-context-intelligence" + data = _load_logging_behavior() + hook_specs = data.get("hooks", []) + assert len(hook_specs) >= 1 + assert hook_specs[0]["module"] == "hook-context-intelligence" def test_behavior_hook_has_source(self): - data = _load_behavior() - hook_spec = _ci_hook(data) + data = _load_logging_behavior() + hook_spec = data["hooks"][0] assert "source" in hook_spec, "Hook spec must have a source field" def test_behavior_hook_has_config(self): - data = _load_behavior() - hook_spec = _ci_hook(data) + data = _load_logging_behavior() + hook_spec = data["hooks"][0] assert "config" in hook_spec, "Hook spec must have a config field" config = hook_spec["config"] # Thin forwarder config keys @@ -107,7 +147,7 @@ def test_behavior_hook_has_config(self): assert "log_level" in config def test_behavior_hook_is_in_hooks_section_not_tools(self): - data = _load_behavior() + data = _load_logging_behavior() hook_modules = [h["module"] for h in data.get("hooks", [])] assert "hook-context-intelligence" in hook_modules tool_modules = [t["module"] for t in data.get("tools", [])] @@ -115,15 +155,15 @@ def test_behavior_hook_is_in_hooks_section_not_tools(self): def test_behavior_source_points_to_main(self): """Source must point to the main branch (post-merge).""" - data = _load_behavior() - source = _ci_hook(data).get("source", "") + data = _load_logging_behavior() + source = data["hooks"][0].get("source", "") # Source may have a #subdirectory= fragment after @main assert "@main" in source, f"Source must reference @main branch after merge, got: {source!r}" def test_no_graph_store_in_config(self): """Thin forwarder has no graph_store config (moved to server).""" - data = _load_behavior() - config = _ci_hook(data).get("config", {}) + data = _load_logging_behavior() + config = data["hooks"][0].get("config", {}) assert "graph_store" not in config, "graph_store must be removed from thin-forwarder config" assert "enable_graph" not in config, ( "enable_graph must be removed from thin-forwarder config" diff --git a/modules/hook-context-intelligence/tests/test_config_resolver.py b/modules/hook-context-intelligence/tests/test_config_resolver.py index ee9c47cf..324059f6 100644 --- a/modules/hook-context-intelligence/tests/test_config_resolver.py +++ b/modules/hook-context-intelligence/tests/test_config_resolver.py @@ -1,11 +1,12 @@ -"""Tests for ConfigResolver resolution chains.""" +"""Tests for HookConfigResolver resolution chains.""" +import fnmatch from pathlib import Path from unittest.mock import MagicMock -import fnmatch - -from amplifier_module_hook_context_intelligence.config_resolver import ConfigResolver +from amplifier_module_hook_context_intelligence.config_resolver import ( # type: ignore[attr-defined] + HookConfigResolver, +) from amplifier_module_hook_context_intelligence.config_resolver import _slugify_path @@ -35,35 +36,39 @@ class TestBasePathResolution: def test_config_value_wins(self) -> None: """Explicit hook config base_path wins over coordinator config.""" coordinator = _make_coordinator(config={"base_path": "/coordinator/path"}) - resolver = ConfigResolver(config={"base_path": "/explicit/path"}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"base_path": "/explicit/path"}, coordinator=coordinator + ) assert resolver.base_path == Path("/explicit/path") def test_coordinator_fallback_when_config_absent(self) -> None: """When config has no base_path, falls back to coordinator.config.""" coordinator = _make_coordinator(config={"base_path": "/coordinator/path"}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.base_path == Path("/coordinator/path") def test_default_when_both_absent(self) -> None: """When both config and coordinator lack base_path, uses default.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.base_path == Path("~/.amplifier/projects").expanduser() def test_tilde_expanded(self) -> None: """Tilde in base_path is expanded (no '~' in string result).""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"base_path": "~/custom/path"}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"base_path": "~/custom/path"}, coordinator=coordinator + ) assert "~" not in str(resolver.base_path) def test_cached_after_first_access(self) -> None: """base_path returns the same object on repeated access (cached).""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) first = resolver.base_path second = resolver.base_path @@ -73,44 +78,73 @@ def test_cached_after_first_access(self) -> None: def test_coordinator_without_config_attr_falls_back_to_default(self) -> None: """Coordinator without .config attribute safely falls back to default.""" bare = _make_bare_coordinator() - resolver = ConfigResolver(config={}, coordinator=bare) + resolver = HookConfigResolver(config={}, coordinator=bare) assert resolver.base_path == Path("~/.amplifier/projects").expanduser() def test_returns_path_type(self) -> None: """base_path always returns a Path instance.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"base_path": "/some/path"}, coordinator=coordinator) + resolver = HookConfigResolver(config={"base_path": "/some/path"}, coordinator=coordinator) assert isinstance(resolver.base_path, Path) + def test_env_var_used_when_config_and_coordinator_absent(self, monkeypatch) -> None: + """AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH env var is used when config and coordinator both lack base_path.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH", "/from/env") + resolver = HookConfigResolver(config={}, coordinator=_make_coordinator(config={})) + + assert resolver.base_path == Path("/from/env") + + def test_env_var_does_not_override_config_dict(self, monkeypatch) -> None: + """Config dict base_path wins over AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH env var.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH", "/from/env") + resolver = HookConfigResolver( + config={"base_path": "/from/config"}, + coordinator=_make_coordinator(config={}), + ) + + assert resolver.base_path == Path("/from/config") + + def test_env_var_does_not_override_coordinator_config(self, monkeypatch) -> None: + """Coordinator config base_path wins over AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH env var.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH", "/from/env") + resolver = HookConfigResolver( + config={}, + coordinator=_make_coordinator(config={"base_path": "/from/coordinator"}), + ) + + assert resolver.base_path == Path("/from/coordinator") + class TestProjectSlugResolution: def test_config_value_wins(self) -> None: """Explicit hook config project_slug wins over coordinator config.""" coordinator = _make_coordinator(config={"project_slug": "from-coordinator"}) - resolver = ConfigResolver(config={"project_slug": "from-config"}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"project_slug": "from-config"}, coordinator=coordinator + ) assert resolver.project_slug == "from-config" def test_coordinator_fallback_when_config_absent(self) -> None: """When config has no project_slug, falls back to coordinator.config.""" coordinator = _make_coordinator(config={"project_slug": "from-coordinator"}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.project_slug == "from-coordinator" def test_default_when_both_absent(self) -> None: """When both config and coordinator lack project_slug, uses 'default'.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.project_slug == "default" def test_cached_after_first_access(self) -> None: """project_slug returns the same object on repeated access (cached).""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) first = resolver.project_slug second = resolver.project_slug @@ -120,14 +154,16 @@ def test_cached_after_first_access(self) -> None: def test_coordinator_without_config_attr_falls_back_to_default(self) -> None: """Coordinator without .config attribute safely falls back to 'default'.""" bare = _make_bare_coordinator() - resolver = ConfigResolver(config={}, coordinator=bare) + resolver = HookConfigResolver(config={}, coordinator=bare) assert resolver.project_slug == "default" def test_returns_str_type(self) -> None: """project_slug always returns a str instance.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"project_slug": "my-project"}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"project_slug": "my-project"}, coordinator=coordinator + ) assert isinstance(resolver.project_slug, str) @@ -143,48 +179,48 @@ class TestWorkspaceResolution: def test_hook_config_wins_over_coordinator_config(self) -> None: """config['workspace'] has highest priority — overrides coordinator.config.""" coordinator = _make_coordinator(config={"workspace": "from-coordinator"}) - resolver = ConfigResolver(config={"workspace": "from-hook"}, coordinator=coordinator) + resolver = HookConfigResolver(config={"workspace": "from-hook"}, coordinator=coordinator) assert resolver.workspace == "from-hook" def test_coordinator_config_fallback_when_hook_config_absent(self) -> None: """coordinator.config['workspace'] is used when config has no workspace.""" coordinator = _make_coordinator(config={"workspace": "from-coordinator"}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.workspace == "from-coordinator" def test_hook_config_wins_over_project_slug(self) -> None: """config['workspace'] wins when coordinator has no workspace.""" coordinator = _make_coordinator(config={"project_slug": "proj-slug"}) - resolver = ConfigResolver(config={"workspace": "from-hook"}, coordinator=coordinator) + resolver = HookConfigResolver(config={"workspace": "from-hook"}, coordinator=coordinator) assert resolver.workspace == "from-hook" def test_falls_back_to_project_slug(self) -> None: """When both coordinator.config and config lack workspace, falls back to project_slug.""" coordinator = _make_coordinator(config={"project_slug": "slug-fallback"}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.workspace == "slug-fallback" def test_defaults_to_default_when_all_absent(self) -> None: """When all workspace sources are absent, resolves to 'default'.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.workspace == "default" def test_returns_str_type(self) -> None: """workspace always returns a str.""" coordinator = _make_coordinator(config={"workspace": "my-ws"}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert isinstance(resolver.workspace, str) def test_coordinator_none_falls_back_to_config(self) -> None: """When coordinator is None, falls back to config['workspace'].""" - resolver = ConfigResolver(config={"workspace": "from-config"}, coordinator=None) + resolver = HookConfigResolver(config={"workspace": "from-config"}, coordinator=None) assert resolver.workspace == "from-config" @@ -194,19 +230,20 @@ class TestContextIntelligenceServerUrl: def test_returns_none_when_absent(self, monkeypatch, tmp_path) -> None: """Returns None when context_intelligence_server_url not in config.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) monkeypatch.setattr( "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", tmp_path / "nonexistent.yaml", ) coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.context_intelligence_server_url is None def test_returns_string_when_set(self) -> None: """Returns the URL string when configured.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"context_intelligence_server_url": "http://localhost:8000"}, coordinator=coordinator, ) @@ -215,12 +252,13 @@ def test_returns_string_when_set(self) -> None: def test_returns_none_for_empty_string(self, monkeypatch, tmp_path) -> None: """Returns None when value is an empty string (falsy).""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) monkeypatch.setattr( "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", tmp_path / "nonexistent.yaml", ) coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"context_intelligence_server_url": ""}, coordinator=coordinator, ) @@ -238,7 +276,7 @@ def test_defaults_to_stream_delta_glob(self) -> None: by shared code or import — the two hooks must remain decoupled. """ coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.exclude_events == {"llm:stream_*delta"} @@ -250,7 +288,7 @@ def test_explicit_empty_list_disables_filter(self) -> None: is intentional: unset uses the default; [] means the operator wants everything. """ coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"exclude_events": []}, coordinator=coordinator, ) @@ -260,14 +298,14 @@ def test_explicit_empty_list_disables_filter(self) -> None: def test_stream_block_delta_excluded_by_default(self) -> None: """llm:stream_block_delta is matched by the default glob — treated as excluded.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert any(fnmatch.fnmatch("llm:stream_block_delta", p) for p in resolver.exclude_events) def test_stream_block_start_not_excluded_by_default(self) -> None: """llm:stream_block_start is NOT matched by the default glob — structural event spared.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert not any( fnmatch.fnmatch("llm:stream_block_start", p) for p in resolver.exclude_events @@ -276,21 +314,21 @@ def test_stream_block_start_not_excluded_by_default(self) -> None: def test_stream_block_end_not_excluded_by_default(self) -> None: """llm:stream_block_end is NOT matched by the default glob — structural event spared.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert not any(fnmatch.fnmatch("llm:stream_block_end", p) for p in resolver.exclude_events) def test_stream_aborted_not_excluded_by_default(self) -> None: """llm:stream_aborted is NOT matched by the default glob — structural event spared.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert not any(fnmatch.fnmatch("llm:stream_aborted", p) for p in resolver.exclude_events) def test_ordinary_event_not_excluded_by_default(self) -> None: """Ordinary events like llm:response are NOT matched by the default glob.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert not any(fnmatch.fnmatch("llm:response", p) for p in resolver.exclude_events) @@ -303,7 +341,7 @@ def test_glob_spares_structural_streaming_events(self) -> None: llm:stream_aborted -> no match (passes through) """ coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) patterns = resolver.exclude_events def is_excluded(event: str) -> bool: @@ -317,7 +355,7 @@ def is_excluded(event: str) -> bool: def test_returns_set_from_list(self) -> None: """exclude_events converts a list from config to a set.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"exclude_events": ["event_a", "event_b"]}, coordinator=coordinator, ) @@ -327,7 +365,7 @@ def test_returns_set_from_list(self) -> None: def test_returns_frozenset_type(self) -> None: """exclude_events always returns a frozenset instance (cached, immutable).""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"exclude_events": ["event_a"]}, coordinator=coordinator, ) @@ -337,7 +375,7 @@ def test_returns_frozenset_type(self) -> None: def test_cached_after_first_access(self) -> None: """exclude_events returns the same object on repeated access (cached).""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"exclude_events": ["event_a", "event_b"]}, coordinator=coordinator, ) @@ -352,14 +390,14 @@ class TestLogLevel: def test_defaults_to_warning(self) -> None: """log_level returns 'WARNING' when not set in config.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.log_level == "WARNING" def test_explicit_value_works(self) -> None: """log_level returns the explicitly configured value.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"log_level": "DEBUG"}, coordinator=coordinator) + resolver = HookConfigResolver(config={"log_level": "DEBUG"}, coordinator=coordinator) assert resolver.log_level == "DEBUG" @@ -368,7 +406,7 @@ class TestSessionDir: def test_composes_correct_path_from_explicit_values(self) -> None: """session_dir composes base_path / project_slug / sessions / session_id / context-intelligence.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"base_path": "/my/base", "project_slug": "my-project"}, coordinator=coordinator, ) @@ -380,7 +418,7 @@ def test_composes_correct_path_from_explicit_values(self) -> None: def test_uses_resolved_defaults(self) -> None: """session_dir uses default base_path and project_slug when not configured.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) result = resolver.session_dir("xyz") expected = ( @@ -396,7 +434,7 @@ def test_uses_resolved_defaults(self) -> None: def test_returns_path_type(self) -> None: """session_dir returns a Path instance.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"base_path": "/base", "project_slug": "proj"}, coordinator=coordinator, ) @@ -408,7 +446,7 @@ def test_uses_coordinator_values_in_path_composition(self) -> None: coordinator = _make_coordinator( config={"base_path": "/coord/base", "project_slug": "coord-project"} ) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) result = resolver.session_dir("sess-42") @@ -421,7 +459,7 @@ class TestBlobStoreRoot: def test_blob_store_root_returns_path(self) -> None: """blob_store_root is base_path / project_slug / 'sessions'.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"base_path": "/tmp/test-projects", "project_slug": "my-project"}, coordinator=coordinator, ) @@ -431,7 +469,7 @@ def test_blob_store_root_returns_path(self) -> None: def test_blob_store_root_uses_default_base_path(self) -> None: """blob_store_root works with default base_path.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"project_slug": "default"}, coordinator=coordinator) + resolver = HookConfigResolver(config={"project_slug": "default"}, coordinator=coordinator) result = resolver.blob_store_root expected = Path("~/.amplifier/projects").expanduser() / "default" / "sessions" assert result == expected @@ -442,17 +480,18 @@ class TestContextIntelligenceApiKey: def test_returns_none_when_not_configured(self, monkeypatch, tmp_path) -> None: """Returns None when context_intelligence_api_key not in config.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) monkeypatch.setattr( "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", tmp_path / "nonexistent.yaml", ) - resolver = ConfigResolver(config={}, coordinator=_make_coordinator(config={})) + resolver = HookConfigResolver(config={}, coordinator=_make_coordinator(config={})) assert resolver.context_intelligence_api_key is None def test_returns_string_when_configured(self) -> None: """Returns the API key string when configured.""" - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"context_intelligence_api_key": "my-secret-key"}, coordinator=_make_coordinator(config={}), ) @@ -461,11 +500,12 @@ def test_returns_string_when_configured(self) -> None: def test_returns_none_for_empty_string(self, monkeypatch, tmp_path) -> None: """Returns None when value is an empty string (falsy).""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) monkeypatch.setattr( "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", tmp_path / "nonexistent.yaml", ) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"context_intelligence_api_key": ""}, coordinator=_make_coordinator(config={}), ) @@ -474,7 +514,7 @@ def test_returns_none_for_empty_string(self, monkeypatch, tmp_path) -> None: def test_coerces_non_string_to_string(self) -> None: """Coerces non-string values to str.""" - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"context_intelligence_api_key": 12345}, coordinator=_make_coordinator(config={}), ) @@ -487,21 +527,21 @@ class TestDispatchTimeout: def test_defaults_to_10(self) -> None: """dispatch_timeout returns 10.0 when not configured.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.dispatch_timeout == 10.0 def test_reads_from_config(self) -> None: """dispatch_timeout returns the configured value as a float.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"dispatch_timeout": 10}, coordinator=coordinator) + resolver = HookConfigResolver(config={"dispatch_timeout": 10}, coordinator=coordinator) assert resolver.dispatch_timeout == 10.0 def test_returns_float_type(self) -> None: """dispatch_timeout always returns a float even when config value is a string.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"dispatch_timeout": "45"}, coordinator=coordinator) + resolver = HookConfigResolver(config={"dispatch_timeout": "45"}, coordinator=coordinator) assert isinstance(resolver.dispatch_timeout, float) assert resolver.dispatch_timeout == 45.0 @@ -511,21 +551,23 @@ class TestDispatchFailureThreshold: def test_defaults_to_3(self) -> None: """dispatch_failure_threshold returns 3 when not configured.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.dispatch_failure_threshold == 3 def test_reads_from_config(self) -> None: """dispatch_failure_threshold returns the configured value as an int.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"dispatch_failure_threshold": 5}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"dispatch_failure_threshold": 5}, coordinator=coordinator + ) assert resolver.dispatch_failure_threshold == 5 def test_returns_int_type(self) -> None: """dispatch_failure_threshold always returns an int even when config value is a string.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"dispatch_failure_threshold": "7"}, coordinator=coordinator ) @@ -537,14 +579,16 @@ class TestDispatchQueueCapacity: def test_defaults_to_256(self) -> None: """dispatch_queue_capacity returns 256 when not configured.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.dispatch_queue_capacity == 256 def test_reads_from_config(self) -> None: """dispatch_queue_capacity returns the configured value as an int.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"dispatch_queue_capacity": 64}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"dispatch_queue_capacity": 64}, coordinator=coordinator + ) assert resolver.dispatch_queue_capacity == 64 @@ -553,14 +597,16 @@ class TestCloseDrainTimeout: def test_defaults_to_half_second(self) -> None: """close_drain_timeout returns 0.5 when not configured.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.close_drain_timeout == 0.5 def test_reads_from_config(self) -> None: """close_drain_timeout returns the configured value as a float.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={"close_drain_timeout": "1.25"}, coordinator=coordinator) + resolver = HookConfigResolver( + config={"close_drain_timeout": "1.25"}, coordinator=coordinator + ) assert resolver.close_drain_timeout == 1.25 @@ -569,14 +615,14 @@ class TestAdditionalEvents: def test_defaults_to_empty_set(self) -> None: """additional_events returns an empty frozenset when not set in config.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver(config={}, coordinator=coordinator) + resolver = HookConfigResolver(config={}, coordinator=coordinator) assert resolver.additional_events == frozenset() def test_returns_frozenset_from_list(self) -> None: """additional_events converts a list from config to a frozenset.""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"additional_events": ["delegate:agent_spawned", "delegate:agent_completed"]}, coordinator=coordinator, ) @@ -589,7 +635,7 @@ def test_returns_frozenset_from_list(self) -> None: def test_cached_after_first_access(self) -> None: """additional_events returns the same object on repeated access (cached).""" coordinator = _make_coordinator(config={}) - resolver = ConfigResolver( + resolver = HookConfigResolver( config={"additional_events": ["delegate:agent_spawned"]}, coordinator=coordinator, ) @@ -619,7 +665,7 @@ def test_server_url_falls_back_to_settings_yaml(self, monkeypatch, tmp_path): settings_file, ) - resolver = ConfigResolver(config={}, coordinator=_make_coordinator(config={})) + resolver = HookConfigResolver(config={}, coordinator=_make_coordinator(config={})) assert resolver.context_intelligence_server_url == "http://from-settings-yaml" @@ -640,7 +686,7 @@ def test_env_var_wins_over_settings_yaml(self, monkeypatch, tmp_path): settings_file, ) - resolver = ConfigResolver(config={}, coordinator=_make_coordinator(config={})) + resolver = HookConfigResolver(config={}, coordinator=_make_coordinator(config={})) assert resolver.context_intelligence_server_url == "http://from-env" @@ -661,7 +707,7 @@ def test_api_key_falls_back_to_settings_yaml(self, monkeypatch, tmp_path): settings_file, ) - resolver = ConfigResolver(config={}, coordinator=_make_coordinator(config={})) + resolver = HookConfigResolver(config={}, coordinator=_make_coordinator(config={})) assert resolver.context_intelligence_api_key == "sk-from-settings-yaml" @@ -672,7 +718,7 @@ def test_settings_yaml_returns_none_when_file_missing(self, monkeypatch, tmp_pat "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", tmp_path / "nonexistent.yaml", ) - resolver = ConfigResolver(config={}, coordinator=_make_coordinator(config={})) + resolver = HookConfigResolver(config={}, coordinator=_make_coordinator(config={})) assert resolver.context_intelligence_server_url is None @@ -686,33 +732,33 @@ class TestParentId: """ def test_parent_id_from_config(self) -> None: - """ConfigResolver.parent_id reads from hook config['parent_id'].""" - cr = ConfigResolver({"parent_id": "parent-abc-123"}, _make_coordinator()) + """HookConfigResolver.parent_id reads from hook config['parent_id'].""" + cr = HookConfigResolver({"parent_id": "parent-abc-123"}, _make_coordinator()) assert cr.parent_id == "parent-abc-123" def test_parent_id_empty_when_absent(self) -> None: - """ConfigResolver.parent_id returns empty string when config has no parent_id key.""" - cr = ConfigResolver({}, _make_coordinator()) + """HookConfigResolver.parent_id returns empty string when config has no parent_id key.""" + cr = HookConfigResolver({}, _make_coordinator()) assert cr.parent_id == "" def test_parent_id_empty_when_none(self) -> None: - """ConfigResolver.parent_id returns empty string when config has parent_id=None.""" - cr = ConfigResolver({"parent_id": None}, _make_coordinator()) + """HookConfigResolver.parent_id returns empty string when config has parent_id=None.""" + cr = HookConfigResolver({"parent_id": None}, _make_coordinator()) assert cr.parent_id == "" def test_parent_id_returns_str_type(self) -> None: - """ConfigResolver.parent_id always returns a str.""" - cr = ConfigResolver({"parent_id": "abc"}, _make_coordinator()) + """HookConfigResolver.parent_id always returns a str.""" + cr = HookConfigResolver({"parent_id": "abc"}, _make_coordinator()) assert isinstance(cr.parent_id, str) def test_no_coordinator_fallback(self) -> None: - """ConfigResolver.parent_id does NOT fall back to coordinator.config. + """HookConfigResolver.parent_id does NOT fall back to coordinator.config. parent_id is a per-session value stamped by the resolver; it must not bleed from a coordinator-level config that spans multiple sessions. """ coordinator = _make_coordinator(config={"parent_id": "from-coordinator"}) - cr = ConfigResolver({}, coordinator) + cr = HookConfigResolver({}, coordinator) assert cr.parent_id == "" @@ -723,23 +769,23 @@ class TestResolveInstanceId: """ def test_resolve_instance_id_from_config(self) -> None: - """ConfigResolver.resolve_instance_id reads from hook config['resolve_instance_id'].""" - cr = ConfigResolver({"resolve_instance_id": "abc-def-123"}, _make_coordinator()) + """HookConfigResolver.resolve_instance_id reads from hook config['resolve_instance_id'].""" + cr = HookConfigResolver({"resolve_instance_id": "abc-def-123"}, _make_coordinator()) assert cr.resolve_instance_id == "abc-def-123" def test_resolve_instance_id_empty_when_absent(self) -> None: - """ConfigResolver.resolve_instance_id returns empty string when absent.""" - cr = ConfigResolver({}, _make_coordinator()) + """HookConfigResolver.resolve_instance_id returns empty string when absent.""" + cr = HookConfigResolver({}, _make_coordinator()) assert cr.resolve_instance_id == "" def test_resolve_instance_id_empty_when_none(self) -> None: - """ConfigResolver.resolve_instance_id returns empty string when config has None.""" - cr = ConfigResolver({"resolve_instance_id": None}, _make_coordinator()) + """HookConfigResolver.resolve_instance_id returns empty string when config has None.""" + cr = HookConfigResolver({"resolve_instance_id": None}, _make_coordinator()) assert cr.resolve_instance_id == "" def test_resolve_instance_id_returns_str_type(self) -> None: - """ConfigResolver.resolve_instance_id always returns a str.""" - cr = ConfigResolver({"resolve_instance_id": "xyz"}, _make_coordinator()) + """HookConfigResolver.resolve_instance_id always returns a str.""" + cr = HookConfigResolver({"resolve_instance_id": "xyz"}, _make_coordinator()) assert isinstance(cr.resolve_instance_id, str) diff --git a/modules/hook-context-intelligence/tests/test_module_loading.py b/modules/hook-context-intelligence/tests/test_module_loading.py index 18619a80..81d348c1 100644 --- a/modules/hook-context-intelligence/tests/test_module_loading.py +++ b/modules/hook-context-intelligence/tests/test_module_loading.py @@ -62,7 +62,9 @@ def test_on_session_ready_exists_and_is_valid(self): class TestBundleYamlEntryPointConsistency: def _load_behavior_yaml(self) -> dict: - path = REPO_ROOT / "behaviors" / "context-intelligence.yaml" + # The hook now lives in the dedicated logging behavior (composed by the + # full context-intelligence behavior). Hook-shape assertions read it here. + path = REPO_ROOT / "behaviors" / "context-intelligence-logging.yaml" return yaml.safe_load(path.read_text()) def test_behavior_yaml_module_matches_entry_point(self): @@ -134,7 +136,9 @@ class TestBehaviorYamlConfigShape: """Validate the behavior YAML has the expected thin-forwarder config shape.""" def _load_behavior_yaml(self) -> dict: - path = REPO_ROOT / "behaviors" / "context-intelligence.yaml" + # The hook now lives in the dedicated logging behavior (composed by the + # full context-intelligence behavior). Hook-shape assertions read it here. + path = REPO_ROOT / "behaviors" / "context-intelligence-logging.yaml" return yaml.safe_load(path.read_text()) def _ci_hook(self, data: dict) -> dict: diff --git a/modules/hook-context-intelligence/tests/test_mount.py b/modules/hook-context-intelligence/tests/test_mount.py index 5f53e177..96f9c795 100644 --- a/modules/hook-context-intelligence/tests/test_mount.py +++ b/modules/hook-context-intelligence/tests/test_mount.py @@ -56,17 +56,28 @@ async def test_mount_returns_cleanup_callable(): async def test_mount_registers_hook_state_capability(): """mount() must register _hook_state containing logging_handler, unregister_fns, resolver.""" + import os from unittest.mock import patch from amplifier_module_hook_context_intelligence import mount from amplifier_module_hook_context_intelligence.handlers.logging_handler import LoggingHandler coordinator = _make_coordinator() - # Isolate from local ~/.amplifier/settings.yaml — prevents live server detection from - # populating unregister_fns with skill-fetcher handlers before on_session_ready(). - with patch( - "amplifier_module_hook_context_intelligence.config_resolver._parse_settings_yaml", - return_value={}, + # Isolate from local ~/.amplifier/settings.yaml AND from CI env vars — both prevent live + # server detection from populating unregister_fns with skill-fetcher handlers before + # on_session_ready(). + with ( + patch( + "amplifier_module_hook_context_intelligence.config_resolver._parse_settings_yaml", + return_value={}, + ), + patch.dict( + os.environ, + { + "AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL": "", + "AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY": "", + }, + ), ): await mount(coordinator, config={}) diff --git a/modules/hook-context-intelligence/tests/test_mount_dispatcher.py b/modules/hook-context-intelligence/tests/test_mount_dispatcher.py index af765bf5..d601b2dc 100644 --- a/modules/hook-context-intelligence/tests/test_mount_dispatcher.py +++ b/modules/hook-context-intelligence/tests/test_mount_dispatcher.py @@ -326,22 +326,24 @@ def test_mount_signature_has_coordinator_and_config(self) -> None: # TestCapabilityRegistration # --------------------------------------------------------------------------- class TestCapabilityRegistration: - """Hook registers ConfigResolver as a coordinator capability.""" + """Hook registers HookConfigResolver as a coordinator capability.""" async def test_config_resolver_capability_registered_on_mount(self) -> None: - """mount() registers the config_resolver capability with a ConfigResolver instance.""" + """mount() registers the config_resolver capability with a HookConfigResolver instance.""" from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.config_resolver import ConfigResolver + from amplifier_module_hook_context_intelligence.config_resolver import HookConfigResolver coordinator = _make_coordinator() await mount(coordinator, config={}) reg_calls = coordinator.register_capability.call_args_list - cap_calls = [c for c in reg_calls if c.args[0] == "context_intelligence.config_resolver"] + cap_calls = [ + c for c in reg_calls if c.args[0] == "context_intelligence.hook_config_resolver" + ] assert len(cap_calls) == 1, ( - "register_capability should be called once with 'context_intelligence.config_resolver'" + "register_capability should be called once with 'context_intelligence.hook_config_resolver'" ) - assert isinstance(cap_calls[0].args[1], ConfigResolver) + assert isinstance(cap_calls[0].args[1], HookConfigResolver) async def test_hook_state_capability_registered_on_mount(self) -> None: """mount() registers the _hook_state capability as a dict with required keys.""" @@ -375,5 +377,5 @@ async def test_cleanup_vacates_both_capabilities(self) -> None: null_calls: dict[str, Any] = { c.args[0]: c.args[1] for c in coordinator.register_capability.call_args_list } - assert null_calls["context_intelligence.config_resolver"] is None + assert null_calls["context_intelligence.hook_config_resolver"] is None assert null_calls["context_intelligence._hook_state"] is None diff --git a/modules/hook-context-intelligence/tests/test_resolve_skill_path.py b/modules/hook-context-intelligence/tests/test_resolve_skill_path.py deleted file mode 100644 index 6d9a30be..00000000 --- a/modules/hook-context-intelligence/tests/test_resolve_skill_path.py +++ /dev/null @@ -1,138 +0,0 @@ -"""Tests for _resolve_skill_path and _refresh_watched_skills helpers.""" - -from __future__ import annotations - -from pathlib import Path -from unittest.mock import AsyncMock, MagicMock, patch - - -class TestResolveSkillPath: - """_resolve_skill_path uses skills_discovery first, then _BUNDLE_ROOT fallback.""" - - def test_prefers_skills_discovery(self, tmp_path: Path) -> None: - """When skills_discovery capability is available, return metadata.path.""" - from amplifier_module_hook_context_intelligence import _resolve_skill_path # type: ignore[attr-defined] - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - - # Build coordinator mock with skills_discovery capability - metadata = MagicMock() - metadata.path = skill_path - discovery = MagicMock() - discovery.find = MagicMock(return_value=metadata) - - coordinator = MagicMock() - coordinator.get_capability = MagicMock(return_value=discovery) - - result = _resolve_skill_path("context-intelligence-graph-query", coordinator) - - assert result == skill_path - coordinator.get_capability.assert_called_once_with("skills_discovery") - discovery.find.assert_called_once_with("context-intelligence-graph-query") - - def test_fallback_to_bundle_root(self, tmp_path: Path) -> None: - """When skills_discovery is unavailable, fall back to _BUNDLE_ROOT/skills/.""" - import amplifier_module_hook_context_intelligence as mod - from amplifier_module_hook_context_intelligence import _resolve_skill_path # type: ignore[attr-defined] - - skill_name = "context-intelligence-graph-query" - skill_dir = tmp_path / "skills" / skill_name - skill_dir.mkdir(parents=True) - - coordinator = MagicMock() - coordinator.get_capability = MagicMock(return_value=None) - - with patch.object(mod, "_BUNDLE_ROOT", tmp_path): - result = _resolve_skill_path(skill_name, coordinator) - - assert result == tmp_path / "skills" / skill_name / "SKILL.md" - - def test_returns_none_when_parent_missing(self, tmp_path: Path) -> None: - """Returns None when _BUNDLE_ROOT doesn't contain the expected skills directory.""" - import amplifier_module_hook_context_intelligence as mod - from amplifier_module_hook_context_intelligence import _resolve_skill_path # type: ignore[attr-defined] - - nonexistent = tmp_path / "does_not_exist" - - coordinator = MagicMock() - coordinator.get_capability = MagicMock(return_value=None) - - with patch.object(mod, "_BUNDLE_ROOT", nonexistent): - result = _resolve_skill_path("context-intelligence-graph-query", coordinator) - - assert result is None - - -class TestRefreshWatchedSkills: - """_refresh_watched_skills routes to write_legacy_content or fetch based on skills_capable.""" - - async def test_branch_b_legacy(self, tmp_path: Path) -> None: - """Branch B: skills_capable=False calls write_legacy_content, not fetch.""" - from amplifier_module_hook_context_intelligence import _refresh_watched_skills # type: ignore[attr-defined] - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - - # Build coordinator mock with skills_discovery capability returning metadata with skill_path - metadata = MagicMock() - metadata.path = skill_path - discovery = MagicMock() - discovery.find = MagicMock(return_value=metadata) - - coordinator = MagicMock() - coordinator.get_capability = MagicMock(return_value=discovery) - - # Build fetcher mock - fetcher = MagicMock() - fetcher.fetch = AsyncMock() - - await _refresh_watched_skills(coordinator, fetcher, skills_capable=False) - - fetcher.write_legacy_content.assert_called_once_with( - "context-intelligence-graph-query", skill_path - ) - fetcher.fetch.assert_not_called() - - async def test_branch_c_fetch(self, tmp_path: Path) -> None: - """Branch C: skills_capable=True calls fetch, not write_legacy_content.""" - from amplifier_module_hook_context_intelligence import _refresh_watched_skills # type: ignore[attr-defined] - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - - # Build coordinator mock with skills_discovery capability returning metadata with skill_path - metadata = MagicMock() - metadata.path = skill_path - discovery = MagicMock() - discovery.find = MagicMock(return_value=metadata) - - coordinator = MagicMock() - coordinator.get_capability = MagicMock(return_value=discovery) - - # Build fetcher mock — fetch returns True via AsyncMock - fetcher = MagicMock() - fetcher.fetch = AsyncMock(return_value=True) - - await _refresh_watched_skills(coordinator, fetcher, skills_capable=True) - - fetcher.fetch.assert_called_once_with("context-intelligence-graph-query", skill_path) - fetcher.write_legacy_content.assert_not_called() - - async def test_skips_when_path_none(self, tmp_path: Path) -> None: - """When skill_path resolves to None, neither fetch nor write_legacy_content is called.""" - import amplifier_module_hook_context_intelligence as mod - from amplifier_module_hook_context_intelligence import _refresh_watched_skills # type: ignore[attr-defined] - - # skills_discovery not available (get_capability returns None) - coordinator = MagicMock() - coordinator.get_capability = MagicMock(return_value=None) - - # Build fetcher mock - fetcher = MagicMock() - fetcher.fetch = AsyncMock() - - nonexistent = tmp_path / "does_not_exist" - - with patch.object(mod, "_BUNDLE_ROOT", nonexistent): - await _refresh_watched_skills(coordinator, fetcher, skills_capable=True) - - fetcher.fetch.assert_not_called() - fetcher.write_legacy_content.assert_not_called() diff --git a/modules/hook-context-intelligence/tests/test_skill_cleanup.py b/modules/hook-context-intelligence/tests/test_skill_cleanup.py new file mode 100644 index 00000000..ce63ec27 --- /dev/null +++ b/modules/hook-context-intelligence/tests/test_skill_cleanup.py @@ -0,0 +1,70 @@ +"""Assertions that skill-fetch code has been fully stripped from the hook module. + +Tests verify: +- The skill_fetcher sub-module is no longer importable. +- mount() registers no skill-related event handlers (skills:discovered, skill:unloaded). +- mount() still registers the context_intelligence.hook_config_resolver capability. +""" + +from __future__ import annotations + +import importlib +from unittest.mock import AsyncMock, MagicMock + +import pytest + +_HookCalls = list[tuple[str, object, dict[str, object]]] + + +def _capture_register() -> tuple[MagicMock, _HookCalls]: + """Return a (register_mock, calls) pair. + + The mock appends (event, handler, dict(kwargs)) to *calls* on each + invocation and returns a fresh MagicMock() as the unregister handle. + """ + calls: _HookCalls = [] + + def _side_effect(event: str, handler: object, **kwargs: object) -> MagicMock: + calls.append((event, handler, dict(kwargs))) + return MagicMock() + + return MagicMock(side_effect=_side_effect), calls + + +class TestSkillFetcherModuleGone: + def test_skill_fetcher_module_is_unimportable(self) -> None: + with pytest.raises(ModuleNotFoundError): + importlib.import_module("amplifier_module_hook_context_intelligence.skill_fetcher") + + +class TestMountRegistersNoSkillHandlers: + async def test_mount_registers_no_skill_event_handlers(self) -> None: + from amplifier_module_hook_context_intelligence import mount + + coordinator = MagicMock() + coordinator.config = {} + coordinator.collect_contributions = AsyncMock(return_value=[]) + coordinator.register_capability = MagicMock() + register, calls = _capture_register() + coordinator.hooks.register = register + + await mount(coordinator, config={}) + + registered_events = {evt for evt, _h, _k in calls} + assert "skills:discovered" not in registered_events + assert "skill:unloaded" not in registered_events + + async def test_mount_still_registers_hook_config_resolver_capability(self) -> None: + from amplifier_module_hook_context_intelligence import mount + + coordinator = MagicMock() + coordinator.config = {} + coordinator.collect_contributions = AsyncMock(return_value=[]) + coordinator.register_capability = MagicMock() + register, calls = _capture_register() + coordinator.hooks.register = register + + await mount(coordinator, config={}) + + cap_names = [c.args[0] for c in coordinator.register_capability.call_args_list] + assert "context_intelligence.hook_config_resolver" in cap_names diff --git a/modules/hook-context-intelligence/tests/test_skill_fetcher.py b/modules/hook-context-intelligence/tests/test_skill_fetcher.py deleted file mode 100644 index eb8771ca..00000000 --- a/modules/hook-context-intelligence/tests/test_skill_fetcher.py +++ /dev/null @@ -1,520 +0,0 @@ -"""Tests for SkillFetcher — conditional HTTP GET with ETag sidecar.""" - -from __future__ import annotations - -import hashlib -import logging -from pathlib import Path -from unittest.mock import AsyncMock, MagicMock, patch - -import httpx -import pytest - - -class TestConstants: - """Module constants have the correct values.""" - - def test_tool_skills_discovery_capability_value(self) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - TOOL_SKILLS_DISCOVERY_CAPABILITY, - ) - - # Must match exactly what tool-skills registers: - # coordinator.register_capability("skills_discovery", SkillsDiscovery(...)) - assert TOOL_SKILLS_DISCOVERY_CAPABILITY == "skills_discovery" - - def test_watched_skills_contains_only_graph_query(self) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import WATCHED_SKILLS - - assert WATCHED_SKILLS == frozenset({"context-intelligence-graph-query"}) - - -def _make_http_mock(status_code: int, text: str, etag: str) -> MagicMock: - """Build a patch-ready mock for httpx.AsyncClient as async context manager.""" - response = MagicMock() - response.status_code = status_code - response.text = text - response.headers = {"etag": etag} if etag else {} - - client = AsyncMock() - client.get = AsyncMock(return_value=response) - client.__aenter__ = AsyncMock(return_value=client) - client.__aexit__ = AsyncMock(return_value=None) - - return MagicMock(return_value=client) - - -def _make_error_mock(exc: Exception) -> MagicMock: - """Build a patch-ready mock for httpx.AsyncClient that raises exc on get().""" - client = AsyncMock() - client.get = AsyncMock(side_effect=exc) - client.__aenter__ = AsyncMock(return_value=client) - client.__aexit__ = AsyncMock(return_value=None) - - return MagicMock(return_value=client) - - -def _make_version_http_mock(status_code: int, body: dict) -> MagicMock: - """Build a patch-ready mock for httpx.AsyncClient returning a JSON response. - - Unlike _make_http_mock, this mock intentionally omits __aenter__/__aexit__ - because check_server_version() calls AsyncClient().get() directly rather - than via ``async with``. The mock matches the production call pattern exactly. - """ - response = MagicMock() - response.status_code = status_code - response.json = MagicMock(return_value=body) - - client = AsyncMock() - client.get = AsyncMock(return_value=response) - - return MagicMock(return_value=client) - - -class TestSkillFetcher200: - """SkillFetcher returns True and writes files on 200 response.""" - - async def test_returns_true_on_200(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(200, "skill content", 'W/"abc123"'), - ): - result = await fetcher.fetch("my-skill", skill_path) - - assert result is True - - async def test_writes_content_to_skill_path(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(200, "skill content here", 'W/"abc123"'), - ): - await fetcher.fetch("my-skill", skill_path) - - assert skill_path.read_text() == "skill content here" - - async def test_writes_etag_sidecar(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(200, "skill content", 'W/"etag-value"'), - ): - await fetcher.fetch("my-skill", skill_path) - - etag_path = tmp_path / ".etag" - assert etag_path.exists() - assert etag_path.read_text() == 'W/"etag-value"' - - -class TestSkillFetcher304: - """SkillFetcher returns False and does not overwrite files on 304 response.""" - - async def test_returns_false_on_304(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - skill_path.write_text("# Existing Content") - etag_path = tmp_path / ".etag" - etag_path.write_text('W/"abc123"') - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(304, "", ""), - ): - result = await fetcher.fetch("my-skill", skill_path) - - assert result is False - - async def test_does_not_overwrite_skill_on_304(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - skill_path.write_text("# Existing Content") - etag_path = tmp_path / ".etag" - etag_path.write_text('W/"abc123"') - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(304, "", ""), - ): - await fetcher.fetch("my-skill", skill_path) - - assert skill_path.read_text() == "# Existing Content" - - -class TestSkillFetcherUnexpectedStatus: - """SkillFetcher returns False and logs a warning on unexpected HTTP status codes.""" - - async def test_returns_false_on_404(self, tmp_path: Path) -> None: - """fetch() returns False and logs a warning when the server returns 404.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(404, "not found", ""), - ): - result = await fetcher.fetch("my-skill", skill_path) - - assert result is False - assert not skill_path.exists() - - async def test_logs_warning_on_unexpected_status( - self, tmp_path: Path, caplog: pytest.LogCaptureFixture - ) -> None: - """fetch() emits a skill_fetch_failed warning for any non-200/304 status.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with caplog.at_level(logging.WARNING): - with patch( - "httpx.AsyncClient", - _make_http_mock(500, "server error", ""), - ): - await fetcher.fetch("my-skill", skill_path) - - assert any("skill_fetch_failed" in record.getMessage() for record in caplog.records) - - -class TestSkillFetcherErrors: - """SkillFetcher returns False on connection errors and timeouts.""" - - async def test_returns_false_on_connect_error(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_error_mock(httpx.ConnectError("refused")), - ): - result = await fetcher.fetch("my-skill", skill_path) - - assert result is False - assert not skill_path.exists() - - async def test_returns_false_on_timeout(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_error_mock(httpx.TimeoutException("timed out", request=None)), - ): - result = await fetcher.fetch("my-skill", skill_path) - - assert result is False - assert not skill_path.exists() - - async def test_logs_warning_on_connect_error( - self, tmp_path: Path, caplog: pytest.LogCaptureFixture - ) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - with caplog.at_level(logging.WARNING): - with patch( - "httpx.AsyncClient", - _make_error_mock(httpx.ConnectError("refused")), - ): - await fetcher.fetch("my-skill", skill_path) - - assert any("skill_fetch_failed" in record.getMessage() for record in caplog.records) - - -class TestSkillFetcherETagSidecar: - """SkillFetcher uses ETag sidecar for conditional GET requests.""" - - async def test_no_etag_sidecar_sends_unconditional_get(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - fetcher = SkillFetcher("http://localhost:8000") - - mock_cls = _make_http_mock(200, "skill content", "") - with patch( - "httpx.AsyncClient", - mock_cls, - ): - await fetcher.fetch("my-skill", skill_path) - - mock_client = mock_cls.return_value - sent_headers = mock_client.get.call_args.kwargs.get("headers", {}) - assert "If-None-Match" not in sent_headers - - async def test_existing_etag_sidecar_sends_if_none_match(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - # Drift detection requires both the skill file and a matching .content_hash - # to trust the stored ETag; create both so If-None-Match is sent. - skill_path.write_text("# Existing skill content") - content_hash_path = tmp_path / ".content_hash" - content_hash_path.write_text(hashlib.sha256(skill_path.read_bytes()).hexdigest()) - etag_path = tmp_path / ".etag" - etag_path.write_text("stored-etag-value") - fetcher = SkillFetcher("http://localhost:8000") - - mock_cls = _make_http_mock(304, "", "") - with patch( - "httpx.AsyncClient", - mock_cls, - ): - await fetcher.fetch("my-skill", skill_path) - - mock_client = mock_cls.return_value - sent_headers = mock_client.get.call_args.kwargs.get("headers", {}) - assert sent_headers.get("If-None-Match") == "stored-etag-value" - - async def test_no_etag_sidecar_written_when_response_omits_etag(self, tmp_path: Path) -> None: - """fetch() must NOT write a .etag sidecar when the server omits the ETag header. - - An empty .etag file would be indistinguishable from an intentional empty-string - ETag and can confuse debugging. When no ETag is returned, skip the write. - """ - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - etag_path = tmp_path / ".etag" - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_http_mock(200, "skill content", ""), # no ETag in response - ): - result = await fetcher.fetch("my-skill", skill_path) - - assert result is True - assert skill_path.read_text() == "skill content" - assert not etag_path.exists(), ".etag must not be written when response has no ETag" - - async def test_etag_sidecar_updated_on_200(self, tmp_path: Path) -> None: - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "SKILL.md" - etag_path = tmp_path / ".etag" - etag_path.write_text("old-etag") - fetcher = SkillFetcher("http://localhost:8000") - - mock_cls = _make_http_mock(200, "new content", "new-etag") - with patch( - "httpx.AsyncClient", - mock_cls, - ): - await fetcher.fetch("my-skill", skill_path) - - assert etag_path.read_text() == "new-etag" - - -class TestVersionCapability: - """Tests for VersionCheckResult NamedTuple and _is_skills_capable() function.""" - - def test_is_skills_capable_none_returns_false(self) -> None: - """_is_skills_capable(None) returns False (no version information).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import _is_skills_capable - - assert _is_skills_capable(None) is False - - def test_is_skills_capable_old_version_returns_false(self) -> None: - """_is_skills_capable('1.9.0') returns False (below minimum).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import _is_skills_capable - - assert _is_skills_capable("1.9.0") is False - - def test_is_skills_capable_min_version_returns_true(self) -> None: - """_is_skills_capable('2.0.0') returns True (exactly at minimum).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import _is_skills_capable - - assert _is_skills_capable("2.0.0") is True - - def test_is_skills_capable_newer_version_returns_true(self) -> None: - """_is_skills_capable('3.1.0') returns True (above minimum).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import _is_skills_capable - - assert _is_skills_capable("3.1.0") is True - - def test_is_skills_capable_unparseable_returns_false(self) -> None: - """_is_skills_capable('invalid') returns False (unparseable string).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import _is_skills_capable - - assert _is_skills_capable("invalid") is False - - def test_version_check_result_namedtuple_reachable(self) -> None: - """VersionCheckResult can be constructed with reachable=True, version='2.0.0'.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - result = VersionCheckResult(reachable=True, version="2.0.0") - assert result.reachable is True - assert result.version == "2.0.0" - - def test_version_check_result_namedtuple_unreachable(self) -> None: - """VersionCheckResult can be constructed with reachable=False, version=None.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - result = VersionCheckResult(reachable=False, version=None) - assert result.reachable is False - assert result.version is None - - -class TestCheckServerVersion: - """SkillFetcher.check_server_version() returns correct VersionCheckResult.""" - - async def test_connect_error_returns_unreachable(self) -> None: - """ConnectError maps to VersionCheckResult(reachable=False, version=None).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - SkillFetcher, - VersionCheckResult, - ) - - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_error_mock(httpx.ConnectError("refused")), - ): - result = await fetcher.check_server_version() - - assert result == VersionCheckResult(reachable=False, version=None) - - async def test_timeout_returns_unreachable(self) -> None: - """TimeoutException maps to VersionCheckResult(reachable=False, version=None).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - SkillFetcher, - VersionCheckResult, - ) - - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_error_mock(httpx.TimeoutException("timed out", request=None)), - ): - result = await fetcher.check_server_version() - - assert result == VersionCheckResult(reachable=False, version=None) - - async def test_404_returns_reachable_with_none_version(self) -> None: - """404 response maps to VersionCheckResult(reachable=True, version=None).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - SkillFetcher, - VersionCheckResult, - ) - - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_version_http_mock(404, {}), - ): - result = await fetcher.check_server_version() - - assert result == VersionCheckResult(reachable=True, version=None) - - async def test_200_with_version_returns_reachable_with_version(self) -> None: - """200 with version field maps to VersionCheckResult(reachable=True, version='2.0.0').""" - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - SkillFetcher, - VersionCheckResult, - ) - - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_version_http_mock(200, {"version": "2.0.0"}), - ): - result = await fetcher.check_server_version() - - assert result == VersionCheckResult(reachable=True, version="2.0.0") - - async def test_200_without_version_returns_reachable_with_none(self) -> None: - """200 without version key maps to VersionCheckResult(reachable=True, version=None).""" - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - SkillFetcher, - VersionCheckResult, - ) - - fetcher = SkillFetcher("http://localhost:8000") - - with patch( - "httpx.AsyncClient", - _make_version_http_mock(200, {}), - ): - result = await fetcher.check_server_version() - - assert result == VersionCheckResult(reachable=True, version=None) - - -class TestWriteLegacyContent: - """SkillFetcher.write_legacy_content() writes bundled legacy skill content to disk.""" - - def test_writes_content_to_skill_path(self, tmp_path: Path) -> None: - """write_legacy_content() writes the skill file; content is > 500 chars.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "context-intelligence-graph-query.md" - fetcher = SkillFetcher("http://localhost:8000") - - fetcher.write_legacy_content("context-intelligence-graph-query", skill_path) - - assert skill_path.exists() - assert len(skill_path.read_text(encoding="utf-8")) > 500 - - def test_clears_existing_etag_sidecar(self, tmp_path: Path) -> None: - """write_legacy_content() removes an existing .etag sidecar file.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "context-intelligence-graph-query.md" - etag_path = tmp_path / ".etag" - etag_path.write_text('W/"old-etag"', encoding="utf-8") - fetcher = SkillFetcher("http://localhost:8000") - - fetcher.write_legacy_content("context-intelligence-graph-query", skill_path) - - assert not etag_path.exists() - - def test_no_etag_created_when_none_existed(self, tmp_path: Path) -> None: - """write_legacy_content() does not create a .etag sidecar when none existed.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "context-intelligence-graph-query.md" - etag_path = tmp_path / ".etag" - fetcher = SkillFetcher("http://localhost:8000") - - fetcher.write_legacy_content("context-intelligence-graph-query", skill_path) - - assert not etag_path.exists() - - def test_raises_file_not_found_for_unknown_skill(self, tmp_path: Path) -> None: - """write_legacy_content() raises FileNotFoundError for an unknown skill name.""" - from amplifier_module_hook_context_intelligence.skill_fetcher import SkillFetcher - - skill_path = tmp_path / "unknown-skill.md" - fetcher = SkillFetcher("http://localhost:8000") - - with pytest.raises(FileNotFoundError): - fetcher.write_legacy_content("unknown-skill-that-does-not-exist", skill_path) diff --git a/modules/hook-context-intelligence/tests/test_skill_fetcher_mount.py b/modules/hook-context-intelligence/tests/test_skill_fetcher_mount.py deleted file mode 100644 index 7d48b202..00000000 --- a/modules/hook-context-intelligence/tests/test_skill_fetcher_mount.py +++ /dev/null @@ -1,785 +0,0 @@ -"""Tests for mount() — skill fetch phase (happy path).""" - -from __future__ import annotations - -from pathlib import Path -from typing import overload -from unittest.mock import AsyncMock, MagicMock, patch - -_HookCalls = list[tuple[str, object, dict[str, object]]] - - -def _make_coordinator(server_url: str | None, skill_path: Path | None) -> MagicMock: - """Build a minimal coordinator mock for skill fetch phase tests. - - - coordinator.hooks.register returns MagicMock - - coordinator.collect_contributions is AsyncMock returning [] - - coordinator.get_capability('skills_discovery') returns a mock with - .find(skill_name) returning metadata (with .path = skill_path) when - skill_path is not None, else returns None. - """ - coordinator = MagicMock() - coordinator.hooks.register = MagicMock(return_value=MagicMock()) - coordinator.collect_contributions = AsyncMock(return_value=[]) - - # Configure skills_discovery capability - if skill_path is not None: - skills_discovery = MagicMock() - metadata = MagicMock() - metadata.path = skill_path - skills_discovery.find = MagicMock(return_value=metadata) - _skills_discovery_cap = skills_discovery - else: - _skills_discovery_cap = None - - def _get_capability(name: str) -> object: - if name == "skills_discovery": - return _skills_discovery_cap - return None - - coordinator.get_capability = MagicMock(side_effect=_get_capability) - # Put server_url in coordinator.config so ConfigResolver can find it - coordinator.config = {"context_intelligence_server_url": server_url} if server_url else {} - - return coordinator - - -@overload -def _capture_hooks_register() -> tuple[MagicMock, _HookCalls]: ... - - -@overload -def _capture_hooks_register(coordinator: MagicMock) -> _HookCalls: ... - - -def _capture_hooks_register( - coordinator: MagicMock | None = None, -) -> _HookCalls | tuple[MagicMock, _HookCalls]: - """Create a hooks.register mock that records all calls. - - When *coordinator* is supplied, wires ``coordinator.hooks.register`` automatically - and returns just the *calls* list. - - When called without arguments, returns ``(mock, calls)`` for callers that need - to wire the mock themselves. - """ - calls: _HookCalls = [] - - def _side_effect(event: str, handler: object, **kwargs: object) -> MagicMock: - calls.append((event, handler, dict(kwargs))) - return MagicMock() - - mock = MagicMock(side_effect=_side_effect) - if coordinator is not None: - coordinator.hooks.register = mock - return calls - return mock, calls - - -def _find_handler(calls: _HookCalls, event: str, name: str) -> object: - """Find a registered handler by event name and handler name (from kwargs). - - Asserts exactly 1 match found. - """ - matches = [ - handler for evt, handler, kwargs in calls if evt == event and kwargs.get("name") == name - ] - assert len(matches) == 1, ( - f"Expected 1 handler for event={event!r} name={name!r}, found {len(matches)}." - ) - return matches[0] - - -class TestMountSkillFetchHappyPath: - """mount() fetches watched skills when server_url is available and SKILL.md exists.""" - - async def test_fetch_called_for_watched_skill(self, tmp_path: Path) -> None: - """SkillFetcher.fetch is called via skills:discovered handler (deferred from mount). - - fetch must NOT be called during mount(), but must be called when the - skills:discovered handler fires. - """ - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - # Place the SKILL.md at the expected bundle-root-relative location - skill_path = tmp_path / "skills" / "context-intelligence-graph-query" / "SKILL.md" - skill_path.parent.mkdir(parents=True) - skill_path.write_text("# test") - - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - mock_register, calls = _capture_hooks_register() - coordinator.hooks.register = mock_register - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch("amplifier_module_hook_context_intelligence._BUNDLE_ROOT", tmp_path), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # fetch IS called immediately during mount — skills_discovery was already registered - mock_fetcher_instance.fetch.assert_called_once_with( - "context-intelligence-graph-query", skill_path - ) - mock_fetcher_instance.fetch.reset_mock() - - # Find and fire the skills:discovered handler — it must also trigger a refresh - handler = _find_handler(calls, "skills:discovered", "SkillFetcher-trigger") - await handler("skills:discovered", {}) # type: ignore[operator] - - # After the handler fires, fetch should have been called once more - mock_fetcher_instance.fetch.assert_called_once_with( - "context-intelligence-graph-query", skill_path - ) - - async def test_cleanup_is_still_callable_after_fetch(self, tmp_path: Path) -> None: - """cleanup() returned from mount() can be awaited without error after fetch.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - cleanup = await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # Should be awaitable without error - await cleanup() - - -class TestMountSkillFetchSkipsWhenUnconfigured: - """mount() skips skill fetch gracefully when server_url or skills_discovery is absent.""" - - async def test_no_fetch_when_server_url_is_none(self, tmp_path: Path) -> None: - """SkillFetcher.fetch is NOT called and SKILL.md is unchanged when server_url is None.""" - from amplifier_module_hook_context_intelligence import mount - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - # skill_path is set so skills_discovery capability is available, but server_url=None - coordinator = _make_coordinator(server_url=None, skill_path=skill_path) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.fetch = AsyncMock() - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch( - "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", - tmp_path / "no-settings.yaml", - ), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - cleanup = await mount(coordinator, config={}) - - mock_fetcher_instance.fetch.assert_not_called() - # SKILL.md was never written - assert not skill_path.exists() - assert callable(cleanup) - - async def test_no_fetch_when_skill_path_not_found(self, tmp_path: Path) -> None: - """SkillFetcher.fetch is NOT called when SKILL.md does not exist at the bundle root.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - # tmp_path has no skills/ subdirectory — SKILL.md will not be found - coordinator = _make_coordinator(server_url="http://localhost:8000", skill_path=None) - - mock_register, calls = _capture_hooks_register() - coordinator.hooks.register = mock_register - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock() - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch("amplifier_module_hook_context_intelligence._BUNDLE_ROOT", tmp_path), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # Find and fire the skills:discovered handler — path is unresolvable, fetch must not run. - # Handler must be invoked while _BUNDLE_ROOT is still patched to tmp_path (empty dir), - # otherwise the real bundle root fallback would resolve the skill path and call fetch. - handler = _find_handler(calls, "skills:discovered", "SkillFetcher-trigger") - await handler("skills:discovered", {}) # type: ignore[operator] - - mock_fetcher_instance.fetch.assert_not_called() - - async def test_mount_still_returns_cleanup_when_fetch_skipped(self, tmp_path: Path) -> None: - """mount() returns a callable, awaitable cleanup even when the fetch phase is skipped.""" - from amplifier_module_hook_context_intelligence import mount - - # Both server_url=None and skill_path=None — fetch is skipped on both counts - coordinator = _make_coordinator(server_url=None, skill_path=None) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.fetch = AsyncMock() - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch( - "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", - tmp_path / "no-settings.yaml", - ), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - cleanup = await mount(coordinator, config={}) - - assert callable(cleanup) - # Must be awaitable without raising - await cleanup() - - -class TestSkillUnloadedHandler: - """mount() registers skill:unloaded handler that creates tasks for watched skills.""" - - async def test_skill_unloaded_triggers_fetch_for_watched_skill(self, tmp_path: Path) -> None: - """Handler fetches when skill:unloaded fires for a skill in WATCHED_SKILLS. - - After the refactor, the handler uses await _refresh_watched_skills directly - instead of asyncio.create_task. - """ - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - registered = _capture_hooks_register(coordinator) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # Reset calls from mount-time immediate check (skills_discovery already registered) - mock_fetcher_instance.fetch.reset_mock() - - handler = _find_handler(registered, "skill:unloaded", "SkillFetcher") - await handler( # type: ignore[operator] - "skill:unloaded", {"skill_name": "context-intelligence-graph-query"} - ) - - # fetch is called directly by the skill:unloaded handler (no asyncio.create_task) - mock_fetcher_instance.fetch.assert_awaited_once() - - async def test_skill_unloaded_skips_fetch_for_unwatched_skill(self, tmp_path: Path) -> None: - """Handler does nothing when skill:unloaded fires for a skill NOT in WATCHED_SKILLS.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - registered = _capture_hooks_register(coordinator) - - # Use AsyncMock for the entire fetcher instance so that attribute access - # (e.g. .fetch) automatically returns awaitable AsyncMock children. - # Note: a RuntimeWarning about unawaited coroutines may appear during teardown - # in Python 3.13 — this is a known mock teardown artifact, not a bug. - mock_fetcher_instance = AsyncMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # Reset calls from mount-time immediate check (skills_discovery already registered) - mock_fetcher_instance.fetch.reset_mock() - - handler = _find_handler(registered, "skill:unloaded", "SkillFetcher") - await handler( # type: ignore[operator] - "skill:unloaded", {"skill_name": "some-other-unrelated-skill"} - ) - - # skill is unwatched — no additional fetch should be triggered by the handler - mock_fetcher_instance.fetch.assert_not_awaited() - - async def test_does_not_crash_when_metadata_not_found(self, tmp_path: Path) -> None: - """Handler returns cleanly when SKILL.md does not exist at the bundle root.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - # tmp_path has no skills/ subdirectory — SKILL.md will not be found - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=None, - ) - - registered = _capture_hooks_register(coordinator) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch("amplifier_module_hook_context_intelligence._BUNDLE_ROOT", tmp_path), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # SKILL.md absent at bundle root — handler must return without calling fetch - handler = _find_handler(registered, "skill:unloaded", "SkillFetcher") - await handler( # type: ignore[operator] - "skill:unloaded", {"skill_name": "context-intelligence-graph-query"} - ) - - mock_fetcher_instance.fetch.assert_not_awaited() - - -class TestMountNoOpWhenServerUrlAbsent: - """When server_url is not configured, mount() must not touch skills_discovery at all.""" - - async def test_get_capability_not_called_when_no_server_url(self, tmp_path: Path) -> None: - """coordinator.get_capability must NOT be called when server_url is None.""" - from amplifier_module_hook_context_intelligence import mount - - coordinator = _make_coordinator(server_url=None, skill_path=None) - with patch( - "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", - tmp_path / "no-settings.yaml", - ): - await mount(coordinator, config={}) - - # get_capability should never have been called for skills_discovery - for call in coordinator.get_capability.call_args_list: - assert call.args[0] != "skills_discovery", ( - "get_capability('skills_discovery') was called even though server_url is None" - ) - - async def test_skill_unloaded_not_registered_when_no_server_url(self, tmp_path: Path) -> None: - """skill:unloaded handler must NOT be registered when server_url is None.""" - from amplifier_module_hook_context_intelligence import mount - - registered_events: list[str] = [] - - def capture(event: str, handler: object, **kwargs: object) -> object: - registered_events.append(event) - return MagicMock() - - coordinator = _make_coordinator(server_url=None, skill_path=None) - coordinator.hooks.register = MagicMock(side_effect=capture) - - with patch( - "amplifier_module_hook_context_intelligence.config_resolver.SETTINGS_PATH", - tmp_path / "no-settings.yaml", - ): - await mount(coordinator, config={}) - - assert "skill:unloaded" not in registered_events, ( - "skill:unloaded handler was registered even though server_url is None" - ) - assert "skills:discovered" not in registered_events, ( - "skills:discovered handler was registered even though server_url is None" - ) - - -class TestMountThreeWayBranch: - """mount() routes to unreachable/old-server/new-server based on check_server_version.""" - - async def test_unreachable_server_no_op(self, tmp_path: Path) -> None: - """Unreachable server: SKILL.md untouched, fetch not called, write_legacy_content not called.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=False, version=None) - ) - mock_fetcher_instance.fetch = AsyncMock() - mock_fetcher_instance.write_legacy_content = MagicMock() - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - assert not skill_path.exists() - mock_fetcher_instance.fetch.assert_not_called() - mock_fetcher_instance.write_legacy_content.assert_not_called() - - async def test_old_server_registers_skills_discovered_handler(self, tmp_path: Path) -> None: - """Old server (reachable=True, version=None): skills:discovered handler registered. - - After the refactor, both old and new servers register a skills:discovered handler - rather than calling write_legacy_content or fetch inline during mount(). - The handler fires later and uses skills_capable to decide which path to take. - """ - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - # Place SKILL.md at the expected bundle-root-relative location - skill_path = tmp_path / "skills" / "context-intelligence-graph-query" / "SKILL.md" - skill_path.parent.mkdir(parents=True) - skill_path.write_text("# test") - - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - mock_register, calls = _capture_hooks_register() - coordinator.hooks.register = mock_register - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version=None) - ) - mock_fetcher_instance.fetch = AsyncMock() - mock_fetcher_instance.write_legacy_content = MagicMock() - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch("amplifier_module_hook_context_intelligence._BUNDLE_ROOT", tmp_path), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # fetch is NOT called for old server (write_legacy_content is used instead) - mock_fetcher_instance.fetch.assert_not_called() - # write_legacy_content IS called immediately during mount — skills_discovery was already registered - mock_fetcher_instance.write_legacy_content.assert_called_once() - # skills:discovered SkillFetcher-trigger handler must still be registered - _find_handler(calls, "skills:discovered", "SkillFetcher-trigger") - - async def test_new_server_registers_skills_discovered_handler(self, tmp_path: Path) -> None: - """New server (reachable=True, version='2.0.0'): skills:discovered handler registered. - - After the refactor, fetch is deferred — mount() only registers the handler. - """ - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - # Place SKILL.md at the expected bundle-root-relative location - skill_path = tmp_path / "skills" / "context-intelligence-graph-query" / "SKILL.md" - skill_path.parent.mkdir(parents=True) - skill_path.write_text("# test") - - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - mock_register, calls = _capture_hooks_register() - coordinator.hooks.register = mock_register - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_instance.write_legacy_content = MagicMock() - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch("amplifier_module_hook_context_intelligence._BUNDLE_ROOT", tmp_path), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # fetch IS called immediately during mount — skills_discovery was already registered - mock_fetcher_instance.fetch.assert_called_once() - mock_fetcher_instance.write_legacy_content.assert_not_called() - # skills:discovered SkillFetcher-trigger handler must still be registered - _find_handler(calls, "skills:discovered", "SkillFetcher-trigger") - - -class TestSkillsDiscoveredHandler: - """mount() registers skills:discovered handler that triggers refresh on new server.""" - - async def test_skills_discovered_triggers_refresh(self, tmp_path: Path) -> None: - """skills:discovered handler calls fetch once for the watched skill. - - The handler should be registered during mount() and trigger a fetch - when fired — fetch must NOT be called during mount itself. - """ - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - # Place skill_path at a non-standard location (no skills/ prefix) so that - # _BUNDLE_ROOT / "skills" / skill_name / "SKILL.md" won't resolve it during - # mount — only skills_discovery capability returns this path. - skill_path = tmp_path / "context-intelligence-graph-query" / "SKILL.md" - skill_path.parent.mkdir(parents=True) - skill_path.write_text("# test") - - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - mock_register, calls = _capture_hooks_register() - coordinator.hooks.register = mock_register - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with ( - patch("amplifier_module_hook_context_intelligence._BUNDLE_ROOT", tmp_path), - patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ), - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # fetch IS called immediately during mount — skills_discovery was already registered - mock_fetcher_instance.fetch.assert_called_once_with( - "context-intelligence-graph-query", skill_path - ) - mock_fetcher_instance.fetch.reset_mock() - - # Find the skills:discovered handler and fire it — handler must also trigger a refresh - handler = _find_handler(calls, "skills:discovered", "SkillFetcher-trigger") - await handler("skills:discovered", {}) # type: ignore[operator] - - # After the handler fires, fetch should have been called once more - mock_fetcher_instance.fetch.assert_called_once_with( - "context-intelligence-graph-query", skill_path - ) - - async def test_no_handler_when_server_unreachable(self) -> None: - """No skills:discovered SkillFetcher-trigger handler when server is unreachable.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - coordinator = _make_coordinator(server_url="http://localhost:8000", skill_path=None) - - mock_register, calls = _capture_hooks_register() - coordinator.hooks.register = mock_register - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=False, version=None) - ) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # No SkillFetcher-trigger handler should be registered for skills:discovered - # when the server is unreachable (Branch A) - trigger_handlers = [ - (evt, hdlr, kw) - for evt, hdlr, kw in calls - if evt == "skills:discovered" and kw.get("name") == "SkillFetcher-trigger" - ] - assert len(trigger_handlers) == 0, ( - "skills:discovered SkillFetcher-trigger handler was registered even though " - "server is unreachable" - ) - - -class TestSkillUnloadedHandlerRefresh: - """skill:unloaded handler uses await _refresh_watched_skills (not asyncio.create_task).""" - - async def test_skill_unloaded_awaits_refresh_for_watched_skill(self, tmp_path: Path) -> None: - """skill:unloaded handler awaits _refresh_watched_skills for watched skills. - - After the refactor, the handler must NOT use asyncio.create_task. Instead, - it must directly await _refresh_watched_skills, which calls fetcher.fetch. - """ - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import ( - VersionCheckResult, - WATCHED_SKILLS, - ) - - skill_name = next(iter(WATCHED_SKILLS)) - skill_path = tmp_path / skill_name / "SKILL.md" - skill_path.parent.mkdir(parents=True) - skill_path.write_text("# test") - - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - registered = _capture_hooks_register(coordinator) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - # Reset fetch calls after mount (mount should NOT have called fetch directly) - mock_fetcher_instance.fetch.reset_mock() - - handler = _find_handler(registered, "skill:unloaded", "SkillFetcher") - await handler( # type: ignore[operator] - "skill:unloaded", {"skill_name": skill_name} - ) - - # New behavior: fetcher.fetch IS called directly (via _refresh_watched_skills) - mock_fetcher_instance.fetch.assert_awaited_once() - - async def test_skill_unloaded_ignores_unwatched_skill(self, tmp_path: Path) -> None: - """skill:unloaded handler does nothing for skills NOT in WATCHED_SKILLS.""" - from amplifier_module_hook_context_intelligence import mount - from amplifier_module_hook_context_intelligence.skill_fetcher import VersionCheckResult - - skill_path = tmp_path / "some-skill" / "SKILL.md" - skill_path.parent.mkdir(parents=True) - skill_path.write_text("# test") - - coordinator = _make_coordinator( - server_url="http://localhost:8000", - skill_path=skill_path, - ) - - registered = _capture_hooks_register(coordinator) - - mock_fetcher_instance = MagicMock() - mock_fetcher_instance.check_server_version = AsyncMock( - return_value=VersionCheckResult(reachable=True, version="2.0.0") - ) - mock_fetcher_instance.fetch = AsyncMock(return_value=True) - mock_fetcher_cls = MagicMock(return_value=mock_fetcher_instance) - - with patch( - "amplifier_module_hook_context_intelligence.skill_fetcher.SkillFetcher", - mock_fetcher_cls, - ): - await mount( - coordinator, - config={"context_intelligence_server_url": "http://localhost:8000"}, - ) - - mock_fetcher_instance.fetch.reset_mock() - - handler = _find_handler(registered, "skill:unloaded", "SkillFetcher") - await handler( # type: ignore[operator] - "skill:unloaded", {"skill_name": "some-unwatched-unrelated-skill"} - ) - - # Not a watched skill — no fetch should be triggered - mock_fetcher_instance.fetch.assert_not_called() diff --git a/modules/hook-context-intelligence/tests/test_tool_resolver.py b/modules/hook-context-intelligence/tests/test_tool_resolver.py new file mode 100644 index 00000000..2a60336c --- /dev/null +++ b/modules/hook-context-intelligence/tests/test_tool_resolver.py @@ -0,0 +1,521 @@ +"""Tests for ToolConfigResolver resolution chains. + +ToolConfigResolver is the analytics-only resolver for CI tools when the hook is +NOT mounted. It shares the same priority chain as HookConfigResolver for the +three keys tools actually use (server_url, api_key, workspace), with one +deliberate difference: workspace does NOT fall back to project_slug because +there is no live capture session to derive it from. +""" + +from unittest.mock import MagicMock + +from context_intelligence.tool_resolver import ToolConfigResolver + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _make_coordinator(config: dict | None = None) -> MagicMock: + """Build a MagicMock coordinator with a .config dict attribute.""" + coordinator = MagicMock() + coordinator.config = config if config is not None else {} + return coordinator + + +def _make_bare_coordinator() -> object: + """Return a plain object without a .config attribute.""" + return object() + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverServerUrl +# --------------------------------------------------------------------------- + + +class TestToolConfigResolverServerUrl: + """context_intelligence_server_url: config dict → coordinator → env var → settings.yaml.""" + + def test_config_dict_wins_over_coordinator(self) -> None: + """Mount-time config dict has highest priority over coordinator.config.""" + coordinator = _make_coordinator( + config={"context_intelligence_server_url": "http://from-coordinator"} + ) + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://from-config"}, + coordinator=coordinator, + ) + assert resolver.context_intelligence_server_url == "http://from-config" + + def test_coordinator_fallback_when_config_absent(self) -> None: + """Falls back to coordinator.config when config dict has no server URL.""" + coordinator = _make_coordinator( + config={"context_intelligence_server_url": "http://from-coordinator"} + ) + resolver = ToolConfigResolver(config={}, coordinator=coordinator) + assert resolver.context_intelligence_server_url == "http://from-coordinator" + + def test_env_var_fallback_when_config_and_coordinator_absent(self, monkeypatch) -> None: + """AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL env var is the third priority.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://from-env") + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_server_url == "http://from-env" + + def test_config_wins_over_env_var(self, monkeypatch) -> None: + """Config dict wins over env var.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://from-env") + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://from-config"}, + coordinator=_make_coordinator(config={}), + ) + assert resolver.context_intelligence_server_url == "http://from-config" + + def test_coordinator_wins_over_env_var(self, monkeypatch) -> None: + """Coordinator config wins over env var.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://from-env") + resolver = ToolConfigResolver( + config={}, + coordinator=_make_coordinator( + config={"context_intelligence_server_url": "http://from-coordinator"} + ), + ) + assert resolver.context_intelligence_server_url == "http://from-coordinator" + + def test_settings_yaml_fallback(self, monkeypatch, tmp_path) -> None: + """~/.amplifier/settings.yaml is the lowest-priority fallback.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + settings_file = tmp_path / "settings.yaml" + settings_file.write_text( + "overrides:\n" + " hook-context-intelligence:\n" + " config:\n" + " context_intelligence_server_url: http://from-settings-yaml\n" + ) + monkeypatch.setattr("context_intelligence.tool_resolver.SETTINGS_PATH", settings_file) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_server_url == "http://from-settings-yaml" + + def test_env_var_wins_over_settings_yaml(self, monkeypatch, tmp_path) -> None: + """Env var beats settings.yaml.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://from-env") + settings_file = tmp_path / "settings.yaml" + settings_file.write_text( + "overrides:\n" + " hook-context-intelligence:\n" + " config:\n" + " context_intelligence_server_url: http://from-settings-yaml\n" + ) + monkeypatch.setattr("context_intelligence.tool_resolver.SETTINGS_PATH", settings_file) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_server_url == "http://from-env" + + def test_returns_none_when_all_absent(self, monkeypatch, tmp_path) -> None: + """Returns None when no source has a server URL.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.setattr( + "context_intelligence.tool_resolver.SETTINGS_PATH", + tmp_path / "nonexistent.yaml", + ) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_server_url is None + + def test_returns_none_for_empty_string(self, monkeypatch, tmp_path) -> None: + """Empty string config value is treated as absent.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.setattr( + "context_intelligence.tool_resolver.SETTINGS_PATH", + tmp_path / "nonexistent.yaml", + ) + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": ""}, + coordinator=_make_coordinator(config={}), + ) + assert resolver.context_intelligence_server_url is None + + def test_returns_string_type(self) -> None: + """Returns a str when value is present.""" + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://localhost:8000"}, + coordinator=_make_coordinator(config={}), + ) + result = resolver.context_intelligence_server_url + assert isinstance(result, str) + + def test_bare_coordinator_falls_back_to_config(self, monkeypatch, tmp_path) -> None: + """Coordinator without .config attribute safely skips to config dict.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.setattr( + "context_intelligence.tool_resolver.SETTINGS_PATH", + tmp_path / "nonexistent.yaml", + ) + bare = _make_bare_coordinator() + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://from-config"}, + coordinator=bare, + ) + assert resolver.context_intelligence_server_url == "http://from-config" + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverApiKey +# --------------------------------------------------------------------------- + + +class TestToolConfigResolverApiKey: + """context_intelligence_api_key: config dict → coordinator → env var → settings.yaml.""" + + def test_config_dict_wins_over_coordinator(self) -> None: + """Mount-time config dict has highest priority.""" + coordinator = _make_coordinator( + config={"context_intelligence_api_key": "key-from-coordinator"} + ) + resolver = ToolConfigResolver( + config={"context_intelligence_api_key": "key-from-config"}, + coordinator=coordinator, + ) + assert resolver.context_intelligence_api_key == "key-from-config" + + def test_coordinator_fallback_when_config_absent(self) -> None: + """Falls back to coordinator.config when config dict has no API key.""" + coordinator = _make_coordinator( + config={"context_intelligence_api_key": "key-from-coordinator"} + ) + resolver = ToolConfigResolver(config={}, coordinator=coordinator) + assert resolver.context_intelligence_api_key == "key-from-coordinator" + + def test_env_var_fallback(self, monkeypatch) -> None: + """AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY env var is the third priority.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", "key-from-env") + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_api_key == "key-from-env" + + def test_settings_yaml_fallback(self, monkeypatch, tmp_path) -> None: + """settings.yaml is lowest-priority fallback for api_key.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + settings_file = tmp_path / "settings.yaml" + settings_file.write_text( + "overrides:\n" + " hook-context-intelligence:\n" + " config:\n" + " context_intelligence_api_key: sk-from-settings-yaml\n" + ) + monkeypatch.setattr("context_intelligence.tool_resolver.SETTINGS_PATH", settings_file) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_api_key == "sk-from-settings-yaml" + + def test_returns_none_when_all_absent(self, monkeypatch, tmp_path) -> None: + """Returns None when no source has an API key.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + monkeypatch.setattr( + "context_intelligence.tool_resolver.SETTINGS_PATH", + tmp_path / "nonexistent.yaml", + ) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.context_intelligence_api_key is None + + def test_returns_none_for_empty_string(self, monkeypatch, tmp_path) -> None: + """Empty string config value is treated as absent.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + monkeypatch.setattr( + "context_intelligence.tool_resolver.SETTINGS_PATH", + tmp_path / "nonexistent.yaml", + ) + resolver = ToolConfigResolver( + config={"context_intelligence_api_key": ""}, + coordinator=_make_coordinator(config={}), + ) + assert resolver.context_intelligence_api_key is None + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverWorkspace +# --------------------------------------------------------------------------- + + +class TestToolConfigResolverWorkspace: + """workspace: config dict → coordinator → env var → 'default'. + + Key difference from HookConfigResolver: does NOT fall back to project_slug + (auto-derived from session.working_dir). In analytics-only mode there is + no live capture session to derive it from. + """ + + def test_config_dict_wins_over_coordinator(self) -> None: + """Mount-time config dict has highest priority.""" + coordinator = _make_coordinator(config={"workspace": "from-coordinator"}) + resolver = ToolConfigResolver(config={"workspace": "from-config"}, coordinator=coordinator) + assert resolver.workspace == "from-config" + + def test_coordinator_fallback_when_config_absent(self) -> None: + """Falls back to coordinator.config when config dict has no workspace.""" + coordinator = _make_coordinator(config={"workspace": "from-coordinator"}) + resolver = ToolConfigResolver(config={}, coordinator=coordinator) + assert resolver.workspace == "from-coordinator" + + def test_env_var_fallback(self, monkeypatch) -> None: + """AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE env var is the third priority.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", "from-env") + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.workspace == "from-env" + + def test_config_wins_over_env_var(self, monkeypatch) -> None: + """Config dict wins over env var.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", "from-env") + resolver = ToolConfigResolver( + config={"workspace": "from-config"}, coordinator=_make_coordinator(config={}) + ) + assert resolver.workspace == "from-config" + + def test_coordinator_wins_over_env_var(self, monkeypatch) -> None: + """Coordinator config wins over env var.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", "from-env") + resolver = ToolConfigResolver( + config={}, + coordinator=_make_coordinator(config={"workspace": "from-coordinator"}), + ) + assert resolver.workspace == "from-coordinator" + + def test_defaults_to_default_when_all_absent(self, monkeypatch) -> None: + """Falls back to 'default' string when no source provides workspace.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert resolver.workspace == "default" + + def test_does_not_use_project_slug_derivation(self, monkeypatch) -> None: + """workspace does NOT auto-derive from session.working_dir in analytics-only mode. + + HookConfigResolver falls back to project_slug (slugified from session.working_dir) + when no workspace is configured. ToolConfigResolver MUST NOT do this — it is + designed for use without an active capture session. The fallback is 'default'. + """ + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + coordinator = _make_coordinator(config={}) + # Simulate a coordinator that has a working_dir capability (as hook would see) + coordinator.get_capability = MagicMock(return_value="/home/user/myproject") + resolver = ToolConfigResolver(config={}, coordinator=coordinator) + # ToolConfigResolver must ignore get_capability and return 'default' + assert resolver.workspace == "default" + + def test_returns_str_type(self, monkeypatch) -> None: + """workspace always returns a str.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + assert isinstance(resolver.workspace, str) + + def test_bare_coordinator_falls_back_to_default(self, monkeypatch) -> None: + """Coordinator without .config attribute safely falls back to 'default'.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + bare = _make_bare_coordinator() + resolver = ToolConfigResolver(config={}, coordinator=bare) + assert resolver.workspace == "default" + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverWorkspaceCaching +# --------------------------------------------------------------------------- + + +class TestToolConfigResolverWorkspaceCaching: + """workspace value is cached after first access.""" + + def test_workspace_cached_after_first_access(self, monkeypatch) -> None: + """workspace returns the same object on repeated access (cached).""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + resolver = ToolConfigResolver( + config={"workspace": "my-workspace"}, coordinator=_make_coordinator(config={}) + ) + first = resolver.workspace + second = resolver.workspace + assert first is second + + def test_workspace_cache_does_not_read_env_twice(self, monkeypatch) -> None: + """Env var is read once; subsequent accesses return the cached value.""" + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", "from-env-first") + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator(config={})) + + first = resolver.workspace + assert first == "from-env-first" + + # Change the env var — cached value must NOT change + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", "from-env-second") + second = resolver.workspace + assert second == "from-env-first" + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverDuckTyping +# --------------------------------------------------------------------------- + + +class TestToolConfigResolverDuckTyping: + """ToolConfigResolver exposes the same interface the tools depend on. + + Tools access exactly three attributes: context_intelligence_server_url, + context_intelligence_api_key, and workspace. This class verifies they + exist and return the expected types — enabling duck-type compatibility + with HookConfigResolver for the tool-facing contract. + """ + + def test_has_server_url_property(self) -> None: + """context_intelligence_server_url attribute exists and returns str or None.""" + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://x"}, + coordinator=_make_coordinator(), + ) + result = resolver.context_intelligence_server_url + assert result is None or isinstance(result, str) + + def test_has_api_key_property(self) -> None: + """context_intelligence_api_key attribute exists and returns str or None.""" + resolver = ToolConfigResolver( + config={"context_intelligence_api_key": "key"}, + coordinator=_make_coordinator(), + ) + result = resolver.context_intelligence_api_key + assert result is None or isinstance(result, str) + + def test_has_workspace_property(self, monkeypatch) -> None: + """workspace attribute exists and always returns a str.""" + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator()) + result = resolver.workspace + assert isinstance(result, str) + + def test_interface_is_property_based_not_method_based(self) -> None: + """All three attributes are properties (accessed without calling them).""" + resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://x"}, + coordinator=_make_coordinator(), + ) + # Properties: access via attribute, not via call + assert not callable(resolver.context_intelligence_server_url) + # workspace is always a str (not a callable) + assert isinstance(resolver.workspace, str) + + def test_same_keys_as_hook_resolver(self) -> None: + """ToolConfigResolver exposes the three keys that tools read from HookConfigResolver. + + Verifies the duck-type contract: a tool that does + ``resolver.context_intelligence_server_url`` + ``resolver.context_intelligence_api_key`` + ``resolver.workspace`` + will work with EITHER HookConfigResolver or ToolConfigResolver. + """ + from amplifier_module_hook_context_intelligence.config_resolver import HookConfigResolver + + hook_resolver = HookConfigResolver( + config={"context_intelligence_server_url": "http://h"}, + coordinator=_make_coordinator(), + ) + tool_resolver = ToolConfigResolver( + config={"context_intelligence_server_url": "http://t"}, + coordinator=_make_coordinator(), + ) + + for resolver in (hook_resolver, tool_resolver): + assert hasattr(resolver, "context_intelligence_server_url") + assert hasattr(resolver, "context_intelligence_api_key") + assert hasattr(resolver, "workspace") + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverSkillSyncEnabled +# --------------------------------------------------------------------------- + +_SKILL_SYNC_ENV = "AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED" + + +class TestToolConfigResolverSkillSyncEnabled: + """skill_sync_enabled: three-state resolution, default True. + + Resolution order (first DEFINITE value wins; empty / placeholder / + unrecognized => absent => fall through): config dict -> coordinator.config + -> AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED env -> True. + """ + + def test_default_is_true_when_nothing_set(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator()) + assert resolver.skill_sync_enabled is True + + def test_config_real_bool_false_is_not_eaten(self, monkeypatch) -> None: + # Regression guard: a truthy ``or``-chain would silently drop False. + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + resolver = ToolConfigResolver( + config={"skill_sync_enabled": False}, coordinator=_make_coordinator() + ) + assert resolver.skill_sync_enabled is False + + def test_config_real_bool_true(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + resolver = ToolConfigResolver( + config={"skill_sync_enabled": True}, coordinator=_make_coordinator() + ) + assert resolver.skill_sync_enabled is True + + def test_config_string_false_forms(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + for token in ("false", "False", "FALSE", "0", "no", "off", " off "): + resolver = ToolConfigResolver( + config={"skill_sync_enabled": token}, coordinator=_make_coordinator() + ) + assert resolver.skill_sync_enabled is False, token + + def test_config_string_true_forms(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + for token in ("true", "True", "1", "yes", "on", " ON "): + resolver = ToolConfigResolver( + config={"skill_sync_enabled": token}, coordinator=_make_coordinator() + ) + assert resolver.skill_sync_enabled is True, token + + def test_empty_string_resolves_to_default_true_not_false(self, monkeypatch) -> None: + # The critical trap: an unexpanded YAML placeholder that resolves to "" + # must be treated as ABSENT (default True), never as False. + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + for blank in ("", " ", "\t"): + resolver = ToolConfigResolver( + config={"skill_sync_enabled": blank}, coordinator=_make_coordinator() + ) + assert resolver.skill_sync_enabled is True, repr(blank) + + def test_unexpanded_placeholder_with_unset_env_is_default_true(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + resolver = ToolConfigResolver( + config={"skill_sync_enabled": "${" + _SKILL_SYNC_ENV + ":}"}, + coordinator=_make_coordinator(), + ) + assert resolver.skill_sync_enabled is True + + def test_placeholder_expands_from_env_to_false(self, monkeypatch) -> None: + monkeypatch.setenv(_SKILL_SYNC_ENV, "false") + resolver = ToolConfigResolver( + config={"skill_sync_enabled": "${" + _SKILL_SYNC_ENV + ":}"}, + coordinator=_make_coordinator(), + ) + assert resolver.skill_sync_enabled is False + + def test_coordinator_fallback_when_config_absent(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + coordinator = _make_coordinator(config={"skill_sync_enabled": False}) + resolver = ToolConfigResolver(config={}, coordinator=coordinator) + assert resolver.skill_sync_enabled is False + + def test_env_fallback_when_config_and_coordinator_absent(self, monkeypatch) -> None: + monkeypatch.setenv(_SKILL_SYNC_ENV, "off") + resolver = ToolConfigResolver(config={}, coordinator=_make_coordinator()) + assert resolver.skill_sync_enabled is False + + def test_config_dict_wins_over_coordinator_and_env(self, monkeypatch) -> None: + monkeypatch.setenv(_SKILL_SYNC_ENV, "true") + coordinator = _make_coordinator(config={"skill_sync_enabled": True}) + resolver = ToolConfigResolver(config={"skill_sync_enabled": False}, coordinator=coordinator) + assert resolver.skill_sync_enabled is False + + def test_unrecognized_string_falls_through_to_default_true(self, monkeypatch) -> None: + monkeypatch.delenv(_SKILL_SYNC_ENV, raising=False) + resolver = ToolConfigResolver( + config={"skill_sync_enabled": "maybe"}, coordinator=_make_coordinator() + ) + assert resolver.skill_sync_enabled is True diff --git a/modules/hook-context-intelligence/uv.lock b/modules/hook-context-intelligence/uv.lock index d5ae18ac..845a63b8 100644 --- a/modules/hook-context-intelligence/uv.lock +++ b/modules/hook-context-intelligence/uv.lock @@ -5,12 +5,12 @@ requires-python = ">=3.11" [[package]] name = "amplifier-bundle-context-intelligence" version = "0.1.1" -source = { git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=v0.1.1#b722074f17a354816ebf5adcf0881b1562a2cbc5" } +source = { git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main#5509b397eb61054039ba2e62a1e898be4b1d5519" } [[package]] name = "amplifier-core" -version = "1.4.1" -source = { git = "https://github.com/microsoft/amplifier-core?rev=v1.4.1#12f3d383de723993c9d15cf61d8f0f77e5e874d4" } +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "pydantic" }, @@ -18,6 +18,14 @@ dependencies = [ { name = "tomli" }, { name = "typing-extensions" }, ] +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/90/d520390cd91aae3d02db53653f828046089c79203dbb142e9bda346fa1d6/amplifier_core-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d35130e4262cf0db2d6c5f7e65e244a9ef2c7397bfe2a9853bc9b0d9fd05be64", size = 8113151, upload-time = "2026-05-18T16:13:46.825Z" }, + { url = "https://files.pythonhosted.org/packages/94/75/3ab3126ba5a6f2fc6051a4d08e42364899e4c9ac4daa9d0a60947bf8acd1/amplifier_core-1.6.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:387a2c58fcf4caefdb45c52ec228307bc225e73606897f242154782bc3e123da", size = 7268223, upload-time = "2026-05-18T16:13:48.749Z" }, + { url = "https://files.pythonhosted.org/packages/21/22/5a36160b3487170bcba0cbc61535101ff624e8314ed38fd35e561cb711a1/amplifier_core-1.6.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8344fccdedd725a51c018de17867cdf1c35abb571dabc0bbccdb5c1242324a47", size = 7532259, upload-time = "2026-05-18T16:13:50.614Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d7/3874c2308523209411367cf3b8b690e14e869f5f6bfb64cb1b1971e06a96/amplifier_core-1.6.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a8e0103242a2e2a975c880b1de0e5a02501e0421c1e5386dadae3f111e1d2b5", size = 8507642, upload-time = "2026-05-18T16:13:52.977Z" }, + { url = "https://files.pythonhosted.org/packages/86/59/3646a89537b4556274183519f6db9c354fb3d183f52ef4a2179af12dd386/amplifier_core-1.6.0-cp311-abi3-win_amd64.whl", hash = "sha256:5113aa2d88038776eb257af9e7d9de7af13b3cd9097d2ac67aef5730fa0678e3", size = 8910313, upload-time = "2026-05-18T16:13:55.249Z" }, + { url = "https://files.pythonhosted.org/packages/9f/9e/58b141115e5eea65703f0b01459eefed36b561e9642ba96d48542345cd8f/amplifier_core-1.6.0-cp311-abi3-win_arm64.whl", hash = "sha256:e1b2731dc09d1cbc668b411007e7f9a2c7edbd75b2525407cae1e6b4a4de0b83", size = 7661416, upload-time = "2026-05-18T16:13:57.513Z" }, +] [[package]] name = "amplifier-module-hook-context-intelligence" @@ -41,14 +49,14 @@ dev = [ [package.metadata] requires-dist = [ - { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=v0.1.1" }, + { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "idna", specifier = ">=3.15" }, ] [package.metadata.requires-dev] dev = [ - { name = "amplifier-core", git = "https://github.com/microsoft/amplifier-core?rev=v1.4.1" }, + { name = "amplifier-core", specifier = ">=1.6.0" }, { name = "pyright", specifier = ">=1.1" }, { name = "pytest", specifier = ">=9.0.3" }, { name = "pytest-asyncio", specifier = ">=0.24" }, From 82b6884a40caffcfbfb7546509f1ea0201dbe1b7 Mon Sep 17 00:00:00 2001 From: colombod Date: Sun, 21 Jun 2026 22:01:01 +0000 Subject: [PATCH 2/3] feat(tool-graph-query): relocate skill-sync + skill_sync_enabled opt-out with vendored offline-body swap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owns analytics-path skill-sync (SkillFetcher + skill_sync + on_session_ready) in the graph-analyst sub-session where the skill is consumed. Adds the skill_sync_enabled config knob (default true) on tool-graph-query: when disabled and a server is configured, swap the shipped 'Server Unavailable' stub for a vendored real graph-query body (zero network, fail-loud, idempotent, crash-atomic); when no server is configured, retain the stub. Resolution via ToolConfigResolver 3-state chain. Addresses amplifier-support#283 (per-turn skill-sync overhead). 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- context_intelligence/config.py | 52 + context_intelligence/tool_resolver.py | 234 ++++ .../__init__.py | 23 +- .../bundled_skill/__init__.py | 52 + .../context-intelligence-graph-query.md | 1105 +++++++++++++++++ .../graph_query_tool.py | 86 +- .../skill_fetcher.py | 161 +++ .../skill_sync.py | 338 +++++ modules/tool-graph-query/pyproject.toml | 19 +- .../tests/test_bundled_skill.py | 52 + .../tests/test_graph_query_tool.py | 420 ++++++- modules/tool-graph-query/tests/test_mount.py | 71 ++ .../tests/test_skill_fetcher.py | 337 +++++ .../tool-graph-query/tests/test_skill_sync.py | 442 +++++++ modules/tool-graph-query/uv.lock | 31 +- 15 files changed, 3369 insertions(+), 54 deletions(-) create mode 100644 context_intelligence/tool_resolver.py create mode 100644 modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/__init__.py create mode 100644 modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/context-intelligence-graph-query.md create mode 100644 modules/tool-graph-query/amplifier_module_tool_graph_query/skill_fetcher.py create mode 100644 modules/tool-graph-query/amplifier_module_tool_graph_query/skill_sync.py create mode 100644 modules/tool-graph-query/tests/test_bundled_skill.py create mode 100644 modules/tool-graph-query/tests/test_skill_fetcher.py create mode 100644 modules/tool-graph-query/tests/test_skill_sync.py diff --git a/context_intelligence/config.py b/context_intelligence/config.py index df45f032..bfac942d 100644 --- a/context_intelligence/config.py +++ b/context_intelligence/config.py @@ -16,6 +16,7 @@ import logging import os +import re from pathlib import Path log = logging.getLogger("context_intelligence.config") @@ -87,6 +88,57 @@ def _parse_settings_yaml(path: Path) -> dict: return result +# --------------------------------------------------------------------------- +# Shared env-var helpers (used by HookConfigResolver and ToolConfigResolver) +# --------------------------------------------------------------------------- + +#: Environment variable prefix shared by all CI configuration. +#: ``AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE`` → workspace +#: ``AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL`` → context_intelligence_server_url +#: etc. +_ENV_PREFIX = "AMPLIFIER_CONTEXT_INTELLIGENCE_" + + +def _env(suffix: str) -> str | None: + """Read ``AMPLIFIER_CONTEXT_INTELLIGENCE_`` from the environment. + + Returns the value as a string if set and non-empty, otherwise ``None``. + """ + value = os.environ.get(_ENV_PREFIX + suffix) + return value if value else None + + +# --------------------------------------------------------------------------- +# Shell-style placeholder expander (used by ToolConfigResolver) +# --------------------------------------------------------------------------- + +_PLACEHOLDER_RE = re.compile(r"\$\{([^}:]+)(?::([^}]*))?\}") + + +def _expand_env_placeholders(value: str) -> str: + """Expand shell-style ``${VAR}``, ``${VAR:}``, ``${VAR:default}`` placeholders. + + - ``${VAR}`` — replaced with ``os.environ[VAR]`` if set, else ``""``. + - ``${VAR:}`` — same as ``${VAR}`` (empty default when var is unset). + - ``${VAR:default}`` — replaced with ``os.environ[VAR]`` if set, else ``"default"``. + - Non-placeholder strings pass through unchanged. + + Note: ``os.path.expandvars`` does **not** support the ``${VAR:default}`` + colon syntax used by the agent behavior YAML files shipped with this bundle, + hence this small regex-based helper. + + Note: every ``${...}`` token is treated as an expandable placeholder. + There is NO escape syntax — literal ``${...}`` sequences are not preserved. + """ + + def _replace(m: re.Match[str]) -> str: + var_name = m.group(1) + default = m.group(2) if m.group(2) is not None else "" + return os.environ.get(var_name, default) + + return _PLACEHOLDER_RE.sub(_replace, value) + + # --------------------------------------------------------------------------- # Public API # --------------------------------------------------------------------------- diff --git a/context_intelligence/tool_resolver.py b/context_intelligence/tool_resolver.py new file mode 100644 index 00000000..0759d55e --- /dev/null +++ b/context_intelligence/tool_resolver.py @@ -0,0 +1,234 @@ +"""ToolConfigResolver — lazy config resolver for CI tools in analytics-only mode. + +Used by tool-graph-query and tool-blob-read when the hook-context-intelligence +module is NOT mounted. Constructed **eagerly** inside the tool's ``__init__`` +(both tools always create a ``ToolConfigResolver`` at construction time). Its +properties are evaluated lazily on each access. The hook resolver +(``context_intelligence.hook_config_resolver`` coordinator capability), when +present, takes priority over ``ToolConfigResolver`` at call time. + +Resolution priority for every property (mirrors HookConfigResolver for the +shared keys): + + 1. mount() config dict — highest, from agent frontmatter + 2. coordinator.config — app-level programmatic override + 3. AMPLIFIER_CONTEXT_INTELLIGENCE_* env var + 4. ~/.amplifier/settings.yaml — lowest-priority fallback + 5. default — built-in last resort + +workspace resolution differs from HookConfigResolver by design: + + HookConfigResolver.workspace falls back to ``project_slug`` which is + auto-derived from ``session.working_dir`` — a coordinator capability + that only exists in an active capture session managed by the hook. + + ToolConfigResolver.workspace falls back to the env var then ``"default"`` + because in analytics-only mode there is no live capture session to derive + a project slug from. Set ``AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE`` + explicitly, or pass ``workspace`` in the tool's mount() config dict. + +Properties: ``context_intelligence_server_url``, ``context_intelligence_api_key``, +``workspace``. ``workspace`` is cached after first access; ``server_url`` and +``api_key`` are recomputed on each call (mirrors HookConfigResolver behaviour). +""" + +from __future__ import annotations + +from typing import Any + +from context_intelligence.config import ( # type: ignore[attr-defined] + SETTINGS_PATH, + _env, + _expand_env_placeholders, + _parse_settings_yaml, +) + +_DEFAULT_WORKSPACE = "default" + +#: Case-insensitive string tokens accepted for boolean config knobs. +_TRUE_TOKENS = frozenset({"true", "1", "yes", "on"}) +_FALSE_TOKENS = frozenset({"false", "0", "no", "off"}) + + +def _expand(value: Any) -> Any: + """Expand shell-style ``${VAR}`` placeholders in *value* if it is a string. + + Returns the expanded string, or *value* unchanged when it is not a string. + An unexpanded placeholder like ``${VAR:}`` with *VAR* unset expands to ``""`` + (falsy), letting the caller's ``or``-chain continue to the next source. + """ + return _expand_env_placeholders(value) if isinstance(value, str) else value + + +def _coerce_bool(value: Any) -> bool | None: + """Three-state boolean coercion for config knobs. + + Returns ``True`` / ``False`` only when *value* is a definite, recognized + boolean; returns ``None`` (meaning "absent — fall through to the next + source / the default") for every other case. + + Critically, an **empty / whitespace-only string** resolves to ``None``, + **never** ``False``. This is what makes an unexpanded YAML placeholder + (``"${AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED:}"`` with the env + var unset, which expands to ``""``) behave as *absent* rather than silently + disabling the knob for every user. An unrecognized string is likewise + treated as absent (safe fall-through) rather than guessed. + """ + if value is None: + return None + if isinstance(value, bool): + return value + text = str(value).strip().lower() + if not text: + return None # empty / placeholder / whitespace → absent + if text in _TRUE_TOKENS: + return True + if text in _FALSE_TOKENS: + return False + return None # unrecognized → absent (fall through to default) + + +class ToolConfigResolver: + """Config resolver for CI tools — analytics-only mode (no hook mounted). + + Constructed eagerly in the tool's ``__init__`` (both tools always create a + ``ToolConfigResolver`` at construction time, alongside ``_hook_resolver = None``). + Its properties are evaluated lazily on each access. At call time, the hook + resolver (when present via the coordinator capability) takes priority; this + class is only consulted when the hook capability is absent. Reads + ``server_url``, ``api_key``, and ``workspace`` using the same four-level + priority chain as ``HookConfigResolver`` for those keys. + See module docstring for the workspace asymmetry rationale. + """ + + def __init__(self, config: dict[str, Any], coordinator: Any) -> None: + self._config = config + self._coordinator = coordinator + self._workspace: str | None = None # cached after first access + + # ------------------------------------------------------------------ + # Private helpers + # ------------------------------------------------------------------ + + def _coordinator_config_get(self, key: str) -> Any: + """Safely read *key* from coordinator.config. + + Returns ``None`` if the coordinator has no ``.config`` attribute or + if the key is absent from it. Mirrors HookConfigResolver._coordinator_config_get. + """ + coord_config = getattr(self._coordinator, "config", None) + if not isinstance(coord_config, dict): + return None + return coord_config.get(key) + + # ------------------------------------------------------------------ + # Properties + # ------------------------------------------------------------------ + + @property + def context_intelligence_server_url(self) -> str | None: + """Server URL. + + Resolution order (first truthy value wins): + 1. config['context_intelligence_server_url'] — mount() config dict + 2. coordinator.config['context_intelligence_server_url'] + 3. AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL env var + 4. ~/.amplifier/settings.yaml + + Shell-style placeholders (``${VAR:}``) in steps 1–2 are expanded + against the environment before the truthiness check so that an + unexpanded placeholder does not short-circuit the chain. + """ + value = ( + _expand(self._config.get("context_intelligence_server_url")) + or _expand(self._coordinator_config_get("context_intelligence_server_url")) + or _env("SERVER_URL") + or _parse_settings_yaml(SETTINGS_PATH).get("server_url") + ) + return str(value) if value else None + + @property + def context_intelligence_api_key(self) -> str | None: + """API key. + + Resolution order (first truthy value wins): + 1. config['context_intelligence_api_key'] — mount() config dict + 2. coordinator.config['context_intelligence_api_key'] + 3. AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY env var + 4. ~/.amplifier/settings.yaml + + Shell-style placeholders (``${VAR:}``) in steps 1–2 are expanded + against the environment before the truthiness check so that an + unexpanded placeholder does not short-circuit the chain. + """ + value = ( + _expand(self._config.get("context_intelligence_api_key")) + or _expand(self._coordinator_config_get("context_intelligence_api_key")) + or _env("API_KEY") + or _parse_settings_yaml(SETTINGS_PATH).get("api_key") + ) + return str(value) if value else None + + @property + def workspace(self) -> str: + """Workspace identifier for scoping queries. + + Resolution order (first truthy value wins): + 1. config['workspace'] — mount() config dict + 2. coordinator.config['workspace'] + 3. AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE env var + 4. 'default' — built-in fallback + + Note: does NOT fall back to project_slug / session.working_dir. + That auto-derivation belongs to HookConfigResolver, which runs inside + an active capture session. In analytics-only mode set the env var or + pass workspace explicitly via the tool's config. + + Shell-style placeholders (``${VAR:}``) in steps 1–2 are expanded + against the environment before the truthiness check. + + Cached after first access. + """ + if self._workspace is None: + self._workspace = str( + _expand(self._config.get("workspace")) + or _expand(self._coordinator_config_get("workspace")) + or _env("WORKSPACE") + or _DEFAULT_WORKSPACE + ) + return self._workspace + + @property + def skill_sync_enabled(self) -> bool: + """Whether the analytics path syncs watched skills on session start. + + Default ``True`` — preserves the existing behaviour for every consumer + who does not set the knob. Set to ``false`` for headless / pipeline / + single-command-series workflows that compose the full behaviour but + never invoke the graph-analyst sub-session: when disabled, + ``skill_sync.on_session_ready`` becomes a complete no-op (no + ``GET /version`` ping, no skill fetch, no ``skill:unloaded`` reload + handler registration), so those workflows pay **zero** skill traffic + per turn. + + Resolution order (first *definite* value wins; empty / placeholder / + unrecognized values are treated as *absent* and fall through): + 1. config['skill_sync_enabled'] — mount() config dict + 2. coordinator.config['skill_sync_enabled'] — app-level override + 3. AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED — env var + 4. True — default + + Accepted string forms (case-insensitive): true/1/yes/on and + false/0/no/off. An unexpanded YAML placeholder that resolves to an + empty string resolves to the default (``True``), never ``False`` — it + cannot silently disable sync for everyone. + """ + for raw in ( + _expand(self._config.get("skill_sync_enabled")), + _expand(self._coordinator_config_get("skill_sync_enabled")), + _env("SKILL_SYNC_ENABLED"), + ): + resolved = _coerce_bool(raw) + if resolved is not None: + return resolved + return True diff --git a/modules/tool-graph-query/amplifier_module_tool_graph_query/__init__.py b/modules/tool-graph-query/amplifier_module_tool_graph_query/__init__.py index baa50c3e..761c1af5 100644 --- a/modules/tool-graph-query/amplifier_module_tool_graph_query/__init__.py +++ b/modules/tool-graph-query/amplifier_module_tool_graph_query/__init__.py @@ -1,26 +1,37 @@ """Graph query tool module — Cypher queries against the context-intelligence server. Implements the Amplifier Tool protocol. Configuration is resolved lazily -via the ``context_intelligence.config_resolver`` coordinator capability +via the ``context_intelligence.hook_config_resolver`` coordinator capability registered by the hook-context-intelligence module. + +This module also owns analytics-path skill-content sync: it exposes a +module-level ``on_session_ready`` (see ``skill_sync``) that the kernel runs +after all modules mount, syncing the context-intelligence-graph-query skill +in the graph-analyst sub-session where it is consumed. """ from __future__ import annotations from typing import Any +from .skill_sync import _GRAPH_QUERY_TOOL_CAPABILITY, on_session_ready + __amplifier_module_type__ = "tool" +__all__ = ["mount", "on_session_ready"] + -async def mount(coordinator: Any, config: dict[str, Any]) -> dict[str, Any]: # noqa: ARG001 +async def mount(coordinator: Any, config: dict[str, Any]) -> dict[str, Any]: """Mount the graph_query tool. - Captures a coordinator reference for lazy capability resolution. - The tool reads the config resolver at execute() time, not mount() time, - because hooks mount after tools. + Passes ``config`` into GraphQueryTool so it can resolve server_url, + api_key and workspace directly when hook-context-intelligence is not + mounted (analytics-only mode). When the hook IS mounted its + ``context_intelligence.hook_config_resolver`` capability takes priority. """ from .graph_query_tool import GraphQueryTool - tool = GraphQueryTool(coordinator=coordinator) + tool = GraphQueryTool(coordinator=coordinator, config=config) await coordinator.mount("tools", tool, name=tool.name) + coordinator.register_capability(_GRAPH_QUERY_TOOL_CAPABILITY, tool) return {"tool": tool.name, "status": "mounted"} diff --git a/modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/__init__.py b/modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/__init__.py new file mode 100644 index 00000000..7063ff36 --- /dev/null +++ b/modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/__init__.py @@ -0,0 +1,52 @@ +"""Vendored offline skill bodies for the analytics path. + +DO NOT DELETE THE ``.md`` FILE(S) IN THIS PACKAGE. They are load-bearing. + +Why this exists (the safe-default invariant) +--------------------------------------------- +The bundle ships ``skills/context-intelligence-graph-query/SKILL.md`` as a +deliberately pessimistic **"Server Unavailable" stub** — it tells the +graph-analyst the graph is unreachable and to delegate to ``session-navigator``. +That stub is the *safe default*: a freshly installed bundle with **no** server +configured must never tell the agent "the graph is available" and invite Cypher +queries against a server that isn't there. + +When skill sync is ENABLED (the default), ``skill_sync.on_session_ready`` +overwrites that stub on session start with the real, full graph-query body +fetched from the live server (``GET /skills/context-intelligence-graph-query``). + +When skill sync is DISABLED (``skill_sync_enabled: false`` — the per-turn +network opt-out for headless / single-command-series workflows) **and a server +URL is configured**, we still must not leave the agent holding the "Server +Unavailable" stub while the graph is actually usable. Instead we **swap** in the +vendored real body from this package — a local file copy, zero network. That is +the only reason this vendored body exists. + +Provenance / how to refresh +--------------------------- +``context-intelligence-graph-query.md`` is a byte-for-byte copy of the canonical +skill body served by the context-intelligence server, sourced from +``microsoft/amplifier-context-intelligence`` at +``context_intelligence_server/skills/context-intelligence-graph-query/SKILL.md``. +Its SHA-256 is pinned by ``EXPECTED_BUNDLED_SKILL_SHA256`` below and asserted by +``tests/test_bundled_skill.py`` (fail-loud: the test breaks if the file is +missing from the wheel or drifts). To refresh: copy the latest canonical +``SKILL.md`` over the vendored file, update the pinned hash, and re-run the +tests + the DTU 4-cell proof. + +This package is the reincarnation of the ``legacy_content`` fallback that a +prior refactor deleted. It was re-introduced on purpose; a future "cleanup" +that deletes it will silently reintroduce the crippled-graph-analyst regression +issue #283 fixed. The DTU profile +``context-intelligence-skill-sync-disabled-behavioral-test.yaml`` and the unit +suite exist to make that deletion fail loud. +""" + +from __future__ import annotations + +#: SHA-256 of ``context-intelligence-graph-query.md`` — the vendored canonical +#: graph-query skill body (v2.0.0). Pinned so wheel-inclusion + drift is asserted +#: by tests rather than discovered in production. +EXPECTED_BUNDLED_SKILL_SHA256 = "d03a3f20df49b6ac05bdc92098e55edefaeae3a49c7457932703b9cceafa0533" + +__all__ = ["EXPECTED_BUNDLED_SKILL_SHA256"] diff --git a/modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/context-intelligence-graph-query.md b/modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/context-intelligence-graph-query.md new file mode 100644 index 00000000..1d43a596 --- /dev/null +++ b/modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/context-intelligence-graph-query.md @@ -0,0 +1,1105 @@ +--- +name: context-intelligence-graph-query +description: > + Use when querying the context-intelligence property graph for session history, + tool call traces, LLM iteration analysis, execution scale metrics, agent + delegation trees, skill loading, and recipe orchestration. Covers all graph + layers, cross-layer SOURCED_FROM joins, SST navigation, blob handling, and + verified Cypher patterns. +license: MIT +metadata: + version: "2.0.0" +--- + +# Context Intelligence Graph Query + +This skill equips you to navigate and extract insights from the context-intelligence +property graph using the `graph_query` tool. The graph holds a complete record of +every Amplifier session — what happened, when, how things connect, and at what scale. + +--- + +## Section 1 — What the Graph Gives You + +The graph holds two complementary views of every session. + +**Data layer 1** is the raw event stream. Every kernel event is preserved as a node, +queryable by type, field, and time. It answers: *what happened and when.* Complete +timeline, exact field values, every tool call and LLM exchange recorded as-is. + +**Data layer 2** is the semantic layer. Events are assembled into meaningful runtime +entities — turns (OrchestratorRun), LLM iterations (Iteration), content blocks +(ContentBlock), tool calls (ToolCall), prompts (Prompt), and more. Connected by 15 +typed relationships. It answers: *what ran, how, and at what scale.* Conversation +structure, execution scale, tool correlation, turn-level reasoning. + +**The foundation layer** surfaces what happens above the kernel: delegation trees (Delegation, Agent), skill loading snapshots (SkillLoad), and recipe orchestration (RecipeRun, RecipeStep, Recipe). It answers: *who delegated to whom, which skills were active, and how recipe steps connect to the tool calls and delegations they triggered.* + +All layers coexist in the same graph and are bridged by **SOURCED_FROM** edges — the +canonical cross-layer connection. Every data layer 2 entity carries one or more +SOURCED_FROM edges back to the raw data layer 1 events that produced it, giving every +semantic node a direct provenance link into the original event stream. Use data layer 1 +when you need exact event fields or the raw timeline. Use data layer 2 when you need +structure, scale, or causation. Navigate between them with SOURCED_FROM. + +**Layer identification signal:** The `node_id` separator tells you which layer a node +came from. `__` (double underscore) = data layer 1 node. `::` (double colon) = +data layer 2 node. A few data layer 2 types use plain identifiers (ToolCall uses +the provider's tool_call_id directly; Orchestrator uses the orchestrator name string). Foundation layer entities use the same `::` separator; concept nodes (`Agent`, `Recipe`) use their name string directly as `node_id`, like `Orchestrator` in data layer 2. + +--- + +## Section 2 — Schema Reference + +### Temporal Property Types: ZONED DATETIME, Not Strings + +**Read this before writing any query that touches a timestamp.** Every `*_at` property (`started_at`, `ended_at`, `occurred_at`, `completed_at`, `resumed_at`, `cancelled_at`, `last_loop_iteration_at`, `loop_completed_at`) and the non-`*_at` field `last_updated` — on nodes AND on the three edge types that carry `occurred_at` (`HAS_EVENT`, `HAS_SUBSESSION`, `FORKED`) — are stored as native Neo4j **`ZONED DATETIME`** values. They are NOT strings. + +❌ Wrong: `WHERE s.started_at > '2026-05-01'` — silently returns no results (comparing ZONED DATETIME to string literal always evaluates false; Neo4j raises no error). + +✅ Correct: `WHERE s.started_at > datetime('2026-05-01')` — wrap every literal in `datetime(...)`. + +✅ `ORDER BY s.started_at` — correct as-is. + +✅ `duration.between(s.started_at, s.ended_at)` — now works, returns a Neo4j DURATION value (e.g. PT1H30M). + +See Gotcha #12 for the same warning at the point of use, and Section 6 for temporal query patterns. + +### Data Layer 1 Nodes + +| Node Label | Description | node_id Format | +|---|---|---| +| `:Session` | One Amplifier session. Sub-labels: `:RootSession`, `:SubSession`, `:ForkedSession`, `:IncompleteSession`. | Raw UUID | +| `:Event` | Every kernel event. Triple-labeled: `:Event` + `:{Category}Event` + `:{Specific}Event`. | `{session_id}__{event_name}__{epoch_ms}` | + +Key properties on `:Event` nodes: +- `occurred_at` — **`ZONED DATETIME`** (native Neo4j temporal; compare with `datetime(...)`, not string literals — see "Temporal Property Types" above) +- `session_id` — owning session UUID +- `workspace` — workspace partition key +- `event_name` — raw event name (e.g. `tool:pre`) +- **`data`** — **JSON string** of the complete raw kernel event payload from the session JSONL. Not a Cypher map. Dot notation (`e.data.tool_name`) does not work in Cypher. Use lifted properties (`tool_name`, `model`, `tool_call_id`, etc.) which are extracted at ingest time as first-class node properties. When raw payload fields not lifted are needed, retrieve the `data` string and parse with `jq` outside Cypher (see Section 5). May contain `ci-blob://` URI references for large payloads. +- Plus event-specific lifted properties (e.g. `tool_name`, `tool_call_id` on `:ToolPreEvent`; `model`, `provider` on `:LlmResponseEvent`). + +Common event labels: `:ToolPreEvent`, `:ToolPostEvent`, `:ToolErrorEvent`, `:LlmRequestEvent`, `:LlmResponseEvent`, `:PromptSubmitEvent`, `:ExecutionStartEvent`, `:ExecutionEndEvent`, `:DelegateAgentSpawnedEvent`, `:SessionStartEvent`, `:SessionEndEvent`. + +### Data Layer 1 Edges + +| Edge | From → To | Meaning | +|---|---|---| +| `HAS_FORK` | Session → Session | Parent session forked a child | +| `HAS_TOOL_CALL` | Session → ToolCall | Session owns a data layer 1 tool call lifecycle node | +| `HAS_EVENT` | Session → Event | Session owns an event node. Carries edge property `occurred_at` (ZONED DATETIME). | +| `HAS_EVENT` | ToolCall → Event | Tool call owns its lifecycle events | + +### Data Layer 2 Entity Types + +All data layer 2 nodes carry a `workspace` property and an SST type label. + +| Entity | Labels | SST Type | node_id Format | Key Properties | +|---|---|---|---|---| +| Session | `:Session:SST_EVENT` (+ `:RootSession`/`:SubSession`/`:ForkedSession`/`:IncompleteSession`) | Temporal | Raw UUID | `started_at` (ZONED DATETIME), `ended_at` (ZONED DATETIME), `last_updated` (ZONED DATETIME), `status` | +| OrchestratorRun | `:OrchestratorRun:SST_EVENT` | Temporal | `{session_id}::orch_run::{started_at}` | `started_at` (ZONED DATETIME), `ended_at` (ZONED DATETIME), `completed_at` (ZONED DATETIME, when present), `orchestrator_name` | +| Iteration | `:Iteration:SST_EVENT` | Temporal | `{session_id}::iteration::{N}` | `iteration_number`, `started_at` (ZONED DATETIME) | +| ContentBlock | `:ContentBlock:SST_EVENT` | Temporal | `{session_id}::block::{iteration_N}::{index}` | `block_type`, `block_index`, `started_at` (ZONED DATETIME, when present) | +| ToolCall | `:ToolCall:SST_EVENT` | Temporal | `{tool_call_id}` (provider UUID directly) | `tool_name`, `tool_call_id`, `result_success`, `result_error`, `result_output`, `started_at` (ZONED DATETIME), `ended_at` (ZONED DATETIME), `parallel_group_id` | +| Prompt | `:Prompt:SST_EVENT` | Temporal | `{session_id}::prompt::{timestamp}` | `prompt_text`, `started_at` (ZONED DATETIME) | +| Cancellation | `:Cancellation:SST_EVENT` | Temporal | `{session_id}::cancellation::{timestamp}` | `occurred_at` (ZONED DATETIME) | +| ContextCompaction | `:ContextCompaction:SST_EVENT` | Temporal | `{session_id}::compaction::{timestamp}` | `occurred_at` (ZONED DATETIME) | +| MountPlan | `:MountPlan:SST_THING` | Resource | `{session_id}::mount_plan` | `mount_plan_data` | +| Orchestrator | `:Orchestrator:SST_CONCEPT` | Abstract | Orchestrator name string (e.g. `loop-streaming`) | `name` | + +### Data Layer 2 Edge Types + +All edges carry an `sst_semantic` property that expresses the relationship's meaning. + +| Edge Type | `sst_semantic` | From → To | What It Means | +|---|---|---|---| +| `HAS_EXECUTION` | `CONTAINS` | Session → OrchestratorRun | Session contains this orchestrator run (one per user turn) | +| `FORKED` | `LEADS_TO` | Session → ForkedSession | Session forked a child session. Carries edge property `occurred_at` (ZONED DATETIME). | +| `HAS_ATTRIBUTE` | `EXPRESSES` | Session → Orchestrator | Session describes its orchestrator type | +| `HAS_PART` | `CONTAINS` | Session → MountPlan/Prompt/Cancellation | Session contains these parts | +| `HAS_PART` | `CONTAINS` | OrchestratorRun → Iteration | Run contains these LLM iterations | +| `HAS_PART` | `CONTAINS` | Iteration → ContentBlock | Iteration contains these content blocks | +| `HAS_TOOL_CALL` | `CONTAINS` | Iteration → ToolCall | Iteration contains these tool calls | +| `HAS_COMPACTION` | `CONTAINS` | Session → ContextCompaction | Session contains this compaction event | +| `HAS_SUBSESSION` | `LEADS_TO` | Session → SubSession | Session leads to a sub-session. Carries edge property `occurred_at` (ZONED DATETIME). | +| `CAUSED` | `LEADS_TO` | ContentBlock → ToolCall | This content block triggered this tool call | +| `PARALLEL_EXECUTION` | `NEAR` | ToolCall ↔ ToolCall | These tool calls ran concurrently in the same parallel group | +| `TRIGGERS` | `LEADS_TO` | Prompt → OrchestratorRun | This prompt started this orchestrator run | +| `ENABLES` | `LEADS_TO` | OrchestratorRun → Prompt | This run's completion enabled the next prompt | +| `SOURCED_FROM` | (none) | data_layer_2 entity → data_layer_1 Event | Cross-layer provenance bridge. Every data layer 2 entity has one SOURCED_FROM edge per contributing raw event. No `sst_semantic` — infrastructure, not SST model. | + +### Foundation Layer Entity Types + +All foundation layer nodes carry a `workspace` property and an SST type label. + +| Entity | Labels | SST Type | node_id Format | Key Properties | +|---|---|---|---|---| +| Delegation | `:Delegation:SST_EVENT` | Temporal | `{parent_session_id}::delegation::{tool_call_id\|sub_session_id}` | `agent`, `sub_session_id`, `parent_session_id`, `started_at` (ZONED DATETIME), `ended_at` (ZONED DATETIME), `resumed_at` (ZONED DATETIME, when present), `cancelled_at` (ZONED DATETIME, when present), `context_depth`, `context_scope` | +| Agent | `:Agent:SST_CONCEPT` | Abstract | Agent name string (e.g. `foundation:explorer`) | `agent` | +| SkillLoad | `:SkillLoad:SST_EVENT` | Temporal | `{session_id}::skill::{skill_name}::{loaded_at_ts}` | `skill_name`, `content_length`, `loaded_at` | +| RecipeRun | `:RecipeRun:SST_EVENT` | Temporal | `{session_id}::recipe_run::{timestamp}` | `name`, `status`, `current_step`, `total_steps`, `last_loop_iteration_at` (ZONED DATETIME, when present), `loop_completed_at` (ZONED DATETIME, when present) | +| RecipeStep | `:RecipeStep:SST_EVENT` | Temporal | `{session_id}::recipe_run::{ts}::step::{N}` | `name`, `status`, `step_id` | +| Recipe | `:Recipe:SST_CONCEPT` | Abstract | Recipe name string | `name` | + +### Foundation Layer Edge Types + +| Edge Type | `sst_semantic` | From → To | What It Means | +|---|---|---|---| +| `HAS_AGENT` | `EXPRESSES` | Session(sub) → Agent | Sub-session describes its agent type | +| `ENCOMPASSES` | `CONTAINS` | Delegation → Session(sub) | Delegation encompasses the sub-session lifecycle | +| `TRIGGERED` | `LEADS_TO` | ToolCall → Delegation | Tool call triggered this delegation | +| `PARALLEL_AGENT` | `NEAR` | Delegation ↔ Delegation | These delegations ran concurrently | +| `HAS_SKILL_LOAD` | `CONTAINS` | Iteration → SkillLoad | Iteration contains this skill load | +| `HAS_RECIPE_RUN` | `CONTAINS` | Session → RecipeRun | Session contains this recipe run | +| `HAS_RECIPE` | `EXPRESSES` | RecipeRun → Recipe | RecipeRun describes its recipe type | +| `HAS_STEP` | `CONTAINS` | RecipeRun → RecipeStep | RecipeRun contains these steps | +| `TRIGGERED` | `LEADS_TO` | RecipeStep → RecipeRun(child) | Step spawned a nested recipe | +| `TRIGGERED` | `LEADS_TO` | RecipeStep → Delegation | Step triggered this delegation | +| `TRIGGERED` | `LEADS_TO` | RecipeStep → ToolCall | Step triggered this tool call | + +--- + +## Section 3 — SST Navigation (Reasoning by Semantic Type) + +The data layer 2 schema uses SST type labels to classify every node by its fundamental +character. These labels let you query across entity boundaries without knowing specific +node labels in advance. + +### Querying by SST Type Label + +Three SST type labels partition the semantic layer: + +| SST Label | Meaning | Entities | +|---|---|---| +| `:SST_EVENT` | Temporal, bounded occurrence | Session, OrchestratorRun, Iteration, ContentBlock, ToolCall, Prompt, Cancellation, ContextCompaction, Delegation, SkillLoad, RecipeRun, RecipeStep | +| `:SST_THING` | Persistent resource or artifact | MountPlan | +| `:SST_CONCEPT` | Abstract, reusable identity | Orchestrator, Agent, Recipe | + +**Example — find all temporal events in the last session:** + +```cypher +MATCH (s:Session {workspace: $workspace}) +WITH s ORDER BY s.started_at DESC LIMIT 1 +MATCH (s)-[:HAS_EXECUTION|HAS_PART*1..3]->(e:SST_EVENT) +RETURN labels(e) AS types, e.node_id, e.started_at +ORDER BY e.started_at +LIMIT 50 +``` + +**Example — find all abstract concepts referenced by a session:** + +```cypher +MATCH (s:Session {workspace: $workspace})-[:HAS_ATTRIBUTE]->(c:SST_CONCEPT) +RETURN c.name AS orchestrator_name +``` + +**Example — find all persistent resources (things) attached to sessions:** + +```cypher +MATCH (s:Session {workspace: $workspace})-[:HAS_PART]->(t:SST_THING) +RETURN s.node_id AS session, labels(t) AS resource_type, t.node_id +``` + +### Querying by Edge Semantic + +Every data layer 2 edge carries an `sst_semantic` property that expresses the relationship's +abstract meaning, independent of the concrete edge type. This lets you query causation, +containment, and concurrence uniformly. + +| `sst_semantic` Value | Meaning | Concrete edges that carry it | +|---|---|---| +| `CONTAINS` | Part-of / containment relationship | `HAS_EXECUTION`, `HAS_PART`, `HAS_TOOL_CALL`, `HAS_COMPACTION` | +| `LEADS_TO` | Causal / sequential relationship | `FORKED`, `HAS_SUBSESSION`, `CAUSED`, `TRIGGERS`, `ENABLES` | +| `EXPRESSES` | Description / attribution relationship | `HAS_ATTRIBUTE` | +| `NEAR` | Concurrent / proximity relationship | `PARALLEL_EXECUTION` | + +**Example — find all causal relationships emanating from a session:** + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id})-[r]->(target) +WHERE r.sst_semantic = 'LEADS_TO' +RETURN type(r) AS edge_type, r.sst_semantic, labels(target) AS target_type, target.node_id +LIMIT 50 +``` + +**Example — find all concurrent tool calls in the session:** + +```cypher +MATCH (tc1:ToolCall)-[r:PARALLEL_EXECUTION]-(tc2:ToolCall) +WHERE r.sst_semantic = 'NEAR' + AND tc1.workspace = $workspace +RETURN tc1.tool_name, tc2.tool_name, tc1.parallel_group_id +``` + +### Hierarchical Traversal Pattern + +Use variable-length paths with `HAS_EXECUTION|HAS_PART*` to traverse the full session +containment hierarchy in a single query. This pattern reaches any depth of the +Session → OrchestratorRun → Iteration → ContentBlock tree. + +**Pattern — reach all descendants of a session:** + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION|HAS_PART*]->(descendant) +RETURN labels(descendant) AS type, descendant.node_id +ORDER BY descendant.started_at +``` + +**Pattern — reach tool calls specifically (three-hop max):** + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION|HAS_PART*1..3]->(iteration:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN tc.tool_name, tc.started_at, tc.result_success +ORDER BY tc.started_at +``` + +The `*1..3` bound prevents runaway traversal on large sessions. Use `*` (unbounded) only +when the session hierarchy depth is known to be shallow. + +### Turn Chain Pattern + +The `TRIGGERS` and `ENABLES` edges form a chain that represents the conversation flow: +each user prompt triggers an orchestrator run, and each completed run enables the next +prompt. Traversing this chain reconstructs the turn-by-turn progression of a session. + +**Pattern — walk the turn chain forward from the first prompt:** + +```cypher +MATCH path = (p:Prompt {workspace: $workspace}) + -[:TRIGGERS]->(run:OrchestratorRun) + -[:ENABLES]->(next_prompt:Prompt) +WHERE p.session_id = $session_id +RETURN [node IN nodes(path) | {type: labels(node), id: node.node_id, at: node.started_at}] + AS turn_chain +ORDER BY p.started_at +``` + +**Pattern — count turns in a session:** + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_PART]->(p:Prompt) + -[:TRIGGERS]->(run:OrchestratorRun) +RETURN count(run) AS turn_count +``` + +--- + +## Section 4 — Cross-Layer Queries + +Data layer 1 (raw events) and data layer 2 (semantic entities) coexist in the same graph. +The canonical way to move between them is the `SOURCED_FROM` edge. Two additional fallback +strategies cover cases where SOURCED_FROM edges are absent (older sessions ingested before +the SOURCED_FROM handler was deployed). + +### Join 1 — SOURCED_FROM (Canonical) + +Every data layer 2 entity is linked back to the raw data layer 1 event(s) that produced +it via `SOURCED_FROM` edges. This is the preferred join strategy because it is exact, +direction-aware, and does not require shared scalar keys. + +```cypher +// Navigate from a ToolCall entity back to its source raw event +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +MATCH (tc)-[:SOURCED_FROM]->(pre:ToolPreEvent) +RETURN tc.tool_name AS tool_name, + tc.result_success AS succeeded, + pre.occurred_at AS event_fired_at, + pre.data AS raw_payload +ORDER BY pre.occurred_at +``` + +```cypher +// Navigate in the reverse direction — from a raw event to the semantic entity it produced +MATCH (pre:ToolPreEvent {workspace: $workspace, session_id: $session_id}) +MATCH (tc:ToolCall)-[:SOURCED_FROM]->(pre) +RETURN pre.tool_name AS event_name, + pre.occurred_at AS fired_at, + tc.result_success AS succeeded, + tc.result_output AS output +ORDER BY pre.occurred_at +``` + +Use this join when you want to retrieve the raw event payload for a semantic entity, or +when you want the structured result for a raw event. + +### Join 2 — ToolCall Direct Match (Fallback) + +The `:ToolCall` data layer 2 node uses the provider's `tool_call_id` directly as its +`node_id`. The `:ToolPreEvent` data layer 1 node lifts the same identifier as its +`tool_call_id` property. This shared key is a direct join between the layers. + +```cypher +// Find the semantic ToolCall entity for a given raw ToolPreEvent +MATCH (e:ToolPreEvent {workspace: $workspace, tool_call_id: $tool_call_id}) +MATCH (tc:ToolCall {node_id: e.tool_call_id}) +RETURN e.tool_name AS event_tool_name, + e.occurred_at AS event_time, + tc.result_success AS succeeded, + tc.result_output AS output, + tc.ended_at AS completed_at +``` + +Use this join when SOURCED_FROM edges are absent (older sessions) and you have a +ToolPreEvent. It works only for ToolCall entities — other data layer 2 types do not +share a direct key with data layer 1. + +### Join 3 — Session Containment (Fallback) + +When you need to correlate raw events with the semantic structure of a session, join +through the shared `:Session` node. Data layer 1 uses `HAS_EVENT` to attach raw event +nodes. Data layer 2 uses `HAS_EXECUTION` and `HAS_PART` to attach semantic entities. + +```cypher +// Correlate raw LLM response events with semantic iterations +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) +MATCH (s)-[:HAS_EVENT]->(lre:LlmResponseEvent) // data layer 1 +MATCH (s)-[:HAS_EXECUTION]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) // data layer 2 +WHERE lre.iteration_number = iter.iteration_number +RETURN iter.iteration_number, + lre.model AS model, + lre.occurred_at AS responded_at, + iter.started_at AS iter_started +ORDER BY iter.iteration_number +``` + +The `s` (Session) node is the bridge: traverse `HAS_EVENT` to reach data layer 1 nodes, +traverse `HAS_EXECUTION`/`HAS_PART` to reach data layer 2 entities, then join on shared +scalar properties (`iteration_number`, `tool_call_id`, etc.). + +### Workspace Scoping + +Every query must be scoped to a workspace. The workspace is a partition key that prevents +results from bleeding across unrelated projects or users. + +**Default workspace** — the `graph_query` tool automatically injects the configured +workspace as `$workspace`. Most queries use it without any explicit parameter: + +```cypher +MATCH (s:Session {workspace: $workspace}) +RETURN s.node_id, s.started_at +ORDER BY s.started_at DESC +LIMIT 10 +``` + +**Explicit workspace parameter** — when the workspace differs from the default, pass it +explicitly in the `params` dict of the `graph_query` call: + +```cypher +// Query with explicit workspace override +MATCH (s:Session {workspace: $workspace}) +RETURN count(s) AS session_count +``` + +Invoke with `params: {"workspace": "my-other-project"}` to override the default. + +**Cross-workspace queries** — pass `workspace: '*'` to query across all workspaces. Use +sparingly; cross-workspace queries skip the partition index and can be slow on large graphs: + +```cypher +MATCH (s:Session) +WHERE s.workspace <> '' +RETURN s.workspace, count(s) AS sessions_per_workspace +ORDER BY sessions_per_workspace DESC +``` + +**Mandatory workspace placement** — always place `{workspace: $workspace}` on the anchor +node (the first `MATCH` pattern that establishes the starting point of the query). Do not +rely on downstream nodes or `WHERE` clauses alone to scope results. Placing the workspace +constraint on the anchor node allows the graph engine to use the workspace index and +avoids full graph scans: + +```cypher +// CORRECT — workspace on anchor node Session +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(run:OrchestratorRun) +RETURN run.orchestrator_name, run.started_at + +// INCORRECT — workspace on a downstream node (misses the index) +MATCH (s:Session {node_id: $session_id}) + -[:HAS_EXECUTION]->(run:OrchestratorRun {workspace: $workspace}) +RETURN run.orchestrator_name, run.started_at +``` + +--- + +## Section 5 — Blob Handling (Critical) + +### The `data` Field Is a JSON String, Not a Cypher Map + +The `data` property on every `:Event` node holds the original kernel event payload as a +**JSON-encoded string**. It is not a Cypher map. You cannot use dot notation (`e.data.tool_name`) +to access sub-fields from Cypher. The entire payload is stored as an opaque string and must +be parsed in application code or with a post-processing tool like `jq`. + +```cypher +// Returns the raw JSON string — you must parse it outside Cypher +MATCH (e:ToolPreEvent {workspace: $workspace, tool_call_id: $tool_call_id}) +RETURN e.data AS raw_payload +``` + +### ci-blob:// URI Replacement for Large Payloads + +When an event payload exceeds the graph storage threshold, the server replaces the full +`data` string with a `ci-blob://` URI reference. The URI points to a blob store entry +that holds the original payload. The `data` field in this case looks like: + +``` +ci-blob://SESSION_ID/EVENT_KEY +``` + +The presence of a `ci-blob://` value in `data` means the full payload is too large to +store inline and must be retrieved separately using `blob_read`. + +### Agent Workflow for Blob-Aware Data Extraction + +When writing queries that access the `data` field, always follow this four-step workflow: + +**Step 1 — Run the Cypher query and retrieve the `data` field:** + +```cypher +MATCH (e:LlmResponseEvent {workspace: $workspace}) +WHERE e.session_id = $session_id +RETURN e.node_id, e.data +ORDER BY e.occurred_at DESC +LIMIT 5 +``` + +**Step 2 — Inspect each `data` value. If it starts with `ci-blob://`, it is a blob +reference. Do NOT try to parse it as JSON.** + +**Step 3 — For blob references, call `blob_read` with the URI. `blob_read` returns a +file path on the local filesystem — it does NOT return the content directly:** + +```python +# blob_read returns {"file_path": "/tmp/ci-blobs/SESSION_ID/EVENT_KEY.json"} +# The content is at the file_path, not in the return value +result = blob_read(uri="ci-blob://SESSION_ID/EVENT_KEY") +file_path = result["file_path"] +``` + +**Step 4 — Extract the fields you need with `jq`. Never load the full blob into the +agent's context — large blobs can be tens of thousands of tokens:** + +```bash +# Extract a specific field from the blob file using jq +jq '.messages[-1].content' /tmp/ci-blobs/SESSION_ID/EVENT_KEY.json + +# Extract just the top-level keys to understand the structure +jq 'keys' /tmp/ci-blobs/SESSION_ID/EVENT_KEY.json + +# Extract a nested field safely with a fallback +jq '.response.usage // "no usage data"' /tmp/ci-blobs/SESSION_ID/EVENT_KEY.json +``` + +### Rules for Blob Handling + +- **Never load the full blob** — always use `jq` to extract only the fields you need. +- **`blob_read` returns a file path**, not content — dereference the path, then read. +- **Check for `ci-blob://` before parsing** — treat any `data` value that starts with + `ci-blob://` as a URI, not as JSON. +- **Lifted properties bypass blobs** — commonly needed fields (e.g. `tool_name`, + `tool_call_id`, `model`, `provider`) are lifted onto the node as top-level properties + during ingestion. Query lifted properties directly from Cypher rather than fetching + blobs when the lifted field is sufficient. + +--- + +## Section 6 — Discovery Patterns (Verified Cypher) + +The following patterns are verified to work against the data layer 2 schema. All use +`$workspace` as the workspace parameter automatically injected by `graph_query`. + +### Pattern 1 — Full Conversation Turn Trace + +Reconstructs the complete turn-by-turn flow of a session: each prompt, the orchestrator +run it triggered, the iterations within that run, and the tool calls in each iteration. + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_PART]->(p:Prompt) + -[:TRIGGERS]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN p.started_at AS turn_start, + run.orchestrator_name AS orchestrator, + iter.iteration_number AS iteration, + tc.tool_name AS tool, + tc.result_success AS succeeded, + tc.started_at AS tool_start +ORDER BY p.started_at, iter.iteration_number, tc.started_at +LIMIT 100 +``` + +> **Size note:** Run a count query first (`count(tc)`) if the session has more than a few +> turns. Raise the limit only after confirming the total is manageable. Use SKIP to paginate. + +### Pattern 2 — Tool Usage Per LLM Iteration + +Counts and lists every tool call grouped by which LLM iteration fired it. Useful for +understanding how many tools each iteration invoked and what they were. + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN iter.iteration_number AS iteration, + collect(tc.tool_name) AS tools_called, + count(tc) AS tool_count +ORDER BY iter.iteration_number +LIMIT 50 +``` + +### Pattern 3 — Parallel Tool Groups + +Finds all tool calls that executed concurrently within the same parallel group. The +`parallel_group_id` property identifies the group; `PARALLEL_EXECUTION` edges connect +the members directly. + +```cypher +MATCH (tc1:ToolCall {workspace: $workspace}) + -[:PARALLEL_EXECUTION]-(tc2:ToolCall) +WHERE tc1.node_id < tc2.node_id // deduplicate undirected pairs + AND tc1.session_id = $session_id +RETURN tc1.parallel_group_id AS group_id, + tc1.tool_name AS tool_a, + tc2.tool_name AS tool_b, + tc1.started_at AS started_at +ORDER BY tc1.started_at +LIMIT 50 +``` + +### Pattern 4 — ContentBlock → ToolCall Causation + +Traces which content block in the LLM response caused each tool call to be issued. +The `CAUSED` edge from `ContentBlock` to `ToolCall` expresses this direct causation. + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_PART]->(block:ContentBlock) + -[:CAUSED]->(tc:ToolCall) +RETURN iter.iteration_number AS iteration, + block.block_index AS block_index, + block.block_type AS block_type, + tc.tool_name AS tool_triggered, + tc.result_success AS succeeded +ORDER BY iter.iteration_number, block.block_index +LIMIT 100 +``` + +### Pattern 5 — Session Comparison + +Compares two sessions side by side: total turns, total iterations, total tool calls, +and success rate. Useful for comparing agent behavior across sessions. + +```cypher +MATCH (s:Session {workspace: $workspace}) +WHERE s.node_id IN [$session_id_a, $session_id_b] +OPTIONAL MATCH (s)-[:HAS_PART]->(p:Prompt)-[:TRIGGERS]->(run:OrchestratorRun) +OPTIONAL MATCH (run)-[:HAS_PART]->(iter:Iteration) +OPTIONAL MATCH (iter)-[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN s.node_id AS session, + count(DISTINCT p) AS turns, + count(DISTINCT iter) AS iterations, + count(DISTINCT tc) AS tool_calls, + sum(CASE WHEN tc.result_success THEN 1 ELSE 0 END) AS successful_tools +ORDER BY s.node_id +``` + +### Pattern 6 — Failed Tool Calls + +Lists every tool call that failed (result_success is false), including the error message +and the session it belongs to. Useful for diagnosing error-prone sessions. + +```cypher +MATCH (s:Session {workspace: $workspace}) + -[:HAS_EXECUTION]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +WHERE tc.result_success = false +RETURN s.node_id AS session, + iter.iteration_number AS iteration, + tc.tool_name AS tool, + tc.result_error AS error, + tc.started_at AS failed_at +ORDER BY tc.started_at +LIMIT 50 +``` + +> **Size note:** This query spans ALL sessions in the workspace. Scope to a single session +> with `AND s.node_id = $session_id` to limit exposure, or add `ORDER BY tc.started_at DESC` +> to retrieve the most recent failures first. + +### Pattern 7 — Data Layer 1 / Data Layer 2 Cross-Layer Join + +Joins raw `:ToolPreEvent` nodes (data layer 1) with semantic `:ToolCall` entities +(data layer 2) using the shared `tool_call_id` key. Returns both the raw event timestamp +and the structured result from the semantic layer. + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EVENT]->(pre:ToolPreEvent) +MATCH (tc:ToolCall {node_id: pre.tool_call_id}) +RETURN pre.tool_name AS tool_name, + pre.occurred_at AS event_fired_at, + tc.result_success AS succeeded, + tc.result_error AS error, + tc.result_output AS output_preview, + tc.ended_at AS completed_at +ORDER BY pre.occurred_at +LIMIT 50 +``` + +### Pattern 8 — SOURCED_FROM Cross-Layer Navigation + +Navigates from a semantic `:ToolCall` entity (data layer 2) through its `SOURCED_FROM` +edge to the originating `:ToolPreEvent` (data layer 1). Returns both the structured +result stored on the semantic entity and the raw event timestamp from the event stream. +Use this pattern as the canonical cross-layer join when SOURCED_FROM edges are present. + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(run:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +MATCH (tc)-[:SOURCED_FROM]->(pre:ToolPreEvent) +RETURN iter.iteration_number AS iteration, + tc.tool_name AS tool, + tc.result_success AS succeeded, + pre.occurred_at AS event_fired_at, + pre.data AS raw_payload +ORDER BY pre.occurred_at +LIMIT 25 +``` + +> **Size note:** `pre.data` may be a `ci-blob://` URI or a large JSON string. Limit to 25 rows +> and follow the blob handling workflow (Section 5) before loading any `data` field. + +### Delegation Tree + +Lists every agent delegation in a session: which tool call triggered it, which agent was spawned, and the resulting sub-session. + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) + -[:TRIGGERED]->(d:Delegation) +RETURN d.agent, d.sub_session_id, d.context_depth, + d.started_at, d.ended_at, tc.tool_name AS via_tool +ORDER BY d.started_at +LIMIT 50 +``` + +### Skills Active Per Iteration + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_SKILL_LOAD]->(sl:SkillLoad) +RETURN iter.iteration_number, sl.skill_name, sl.content_length, sl.loaded_at +ORDER BY iter.iteration_number, sl.loaded_at +LIMIT 100 +``` + +### Recipe Run Trace + +```cypher +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_RECIPE_RUN]->(rr:RecipeRun) + -[:HAS_STEP]->(step:RecipeStep) +OPTIONAL MATCH (step)-[:TRIGGERED]->(target) +RETURN rr.name, step.name, step.status, + labels(target) AS triggered_type, target.node_id AS triggered_id +ORDER BY step.step_id +LIMIT 50 +``` + +--- + +## Section 7 — Result Size Management and Pagination + +The graph can hold hundreds or thousands of sessions, each containing many events, tool +calls, and semantic nodes. Returning results without limits is the most common way to +destroy your context window. Every query must be designed with size in mind. + +--- + +### The Cardinal Rule: Always LIMIT + +**Every query that traverses unbounded data MUST include a `LIMIT` clause.** There are +no exceptions. A session with 50 turns and 300 tool calls will return 300+ rows from an +unguarded Pattern 1 query. Multiplied across even 10 sessions, that is 3,000+ rows — +enough to saturate the context window before you have read a single result. + +```cypher +// WRONG — no LIMIT, will return everything +MATCH (s:Session {workspace: $workspace}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN tc.tool_name, tc.started_at + +// CORRECT — bounded +MATCH (s:Session {workspace: $workspace}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN tc.tool_name, tc.started_at +ORDER BY tc.started_at +LIMIT 50 +``` + +--- + +### Safe Default LIMIT Values by Query Type + +Use these defaults when you do not know the expected result size in advance. Reduce +further if the query is part of a larger multi-step analysis. + +| Query type | Safe default LIMIT | Notes | +|---|---|---| +| Session listing | 10 | Very wide rows (many properties) | +| Tool call listing | 50 | One row per call; can be large per session | +| Event listing | 25 | `data` field makes rows wide | +| Iteration listing | 25 | One row per LLM round-trip | +| Delegation listing | 25 | Usually sparse, but can be large in recipe sessions | +| Cross-layer joins | 25 | Double the data per row | +| Aggregation / GROUP BY | 50 | Aggregated rows are lean | +| Path / hierarchy traversal | 25 | Variable row width | +| Full conversation trace | 50 | One row per tool call across all turns | + +If you need more rows than the safe default, always run a COUNT query first (see below) +to understand the actual result size before raising the limit. + +--- + +### Count-First Pattern (Always Run Before Wide Queries) + +Before executing any query that returns multi-field rows over an unknown population, +run a count-first query to understand the scale. This costs almost nothing and prevents +context overflow. + +```cypher +// Step 1 — count first (cheap) +MATCH (s:Session {workspace: $workspace}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +WHERE s.node_id = $session_id +RETURN count(tc) AS total_tool_calls +``` + +```cypher +// Step 2 — retrieve data only after you know the count +// If total_tool_calls > 50, use pagination (see SKIP/LIMIT below) +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN iter.iteration_number, tc.tool_name, tc.result_success, tc.started_at +ORDER BY tc.started_at +LIMIT 50 +``` + +Apply this pattern whenever you are querying a session you have not seen before, or when +querying across multiple sessions at once. + +--- + +### SKIP + LIMIT Pagination Pattern + +When you need more results than the safe default, paginate using `SKIP` and `LIMIT`. +Never raise the limit beyond 200 rows per page — the context cost of wide rows +compounds quickly. + +```cypher +// Page 1 — first 50 results +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN iter.iteration_number, tc.tool_name, tc.result_success, tc.started_at +ORDER BY tc.started_at +SKIP 0 LIMIT 50 + +// Page 2 — next 50 +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN iter.iteration_number, tc.tool_name, tc.result_success, tc.started_at +ORDER BY tc.started_at +SKIP 50 LIMIT 50 +``` + +**Pagination rules:** +- Always include `ORDER BY` before `SKIP`/`LIMIT` — without it, page boundaries are + non-deterministic and you may see duplicate or missing rows across pages. +- Use a stable, unique sort key (`started_at` + `node_id` as tiebreaker) to guarantee + consistent ordering across pages. +- Stop paginating when the returned row count is less than the page size — that signals + the last page. + +--- + +### Progressive Exploration Strategy + +For unfamiliar sessions or multi-session queries, always follow a three-phase funnel. +Going straight to full detail is almost always a mistake. + +**Phase 1 — Orient (counts and summaries only)** + +```cypher +// How many sessions, how large? +MATCH (s:Session {workspace: $workspace}) +OPTIONAL MATCH (s)-[:HAS_EXECUTION]->(:OrchestratorRun)-[:HAS_PART]->(iter:Iteration) +RETURN s.node_id, s.started_at, s.status, count(iter) AS iteration_count +ORDER BY s.started_at DESC +LIMIT 10 +``` + +**Phase 2 — Scope (aggregated view of the target session)** + +```cypher +// What happened in this session, at a glance? +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) +OPTIONAL MATCH (s)-[:HAS_EXECUTION]->(:OrchestratorRun)-[:HAS_PART]->(iter:Iteration) +OPTIONAL MATCH (iter)-[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN count(DISTINCT iter) AS iterations, + count(DISTINCT tc) AS tool_calls, + sum(CASE WHEN tc.result_success = false THEN 1 ELSE 0 END) AS failures +``` + +**Phase 3 — Drill (filtered, bounded detail)** + +```cypher +// Now retrieve the specific rows you need, filtered and limited +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +WHERE tc.result_success = false // focus on failures only +RETURN iter.iteration_number, tc.tool_name, tc.result_error, tc.started_at +ORDER BY tc.started_at +LIMIT 25 +``` + +This funnel ensures you only load detailed rows for the subset you actually need. + +--- + +### Bounding Variable-Length Path Traversal + +Variable-length path patterns (`*`, `*1..N`) can fanout explosively on large or deeply +nested graphs. Always bound them. + +```cypher +// DANGEROUS — unbounded path, will traverse everything reachable +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION|HAS_PART*]->(descendant) +RETURN labels(descendant), descendant.node_id + +// SAFE — bounded depth (3 hops covers the full Session→Run→Iter→Block hierarchy) +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION|HAS_PART*1..3]->(descendant) +RETURN labels(descendant), descendant.node_id +ORDER BY descendant.started_at +LIMIT 100 +``` + +**Recommended depth bounds:** +- `*1..2` — Session → Run → Iteration (stops before ContentBlock/ToolCall) +- `*1..3` — Session → Run → Iteration → ContentBlock (full semantic hierarchy) +- `*1..4` — includes ToolCall via ContentBlock (only if you need CAUSED edges) +- Avoid `*` or `*1..10` entirely — use explicit typed-edge chains instead. + +--- + +### Filtering Before Returning (Reduce in Graph, Not in Client) + +Apply `WHERE` filters inside the Cypher query rather than retrieving all rows and +filtering in the calling code. Every unneeded row is context tokens wasted. + +```cypher +// INEFFICIENT — retrieve all tool calls, filter in code +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN tc.tool_name, tc.result_success, tc.started_at +LIMIT 200 + +// EFFICIENT — filter in Cypher, return only what you need +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +WHERE tc.tool_name = 'delegate' + AND tc.started_at > $cutoff_time +RETURN tc.tool_name, tc.result_success, tc.started_at +ORDER BY tc.started_at +LIMIT 50 +``` + +**Common filter strategies:** +- Filter by `session_id` first to scope to one session before retrieving detailed data. +- Use `tool_name` filters to narrow tool call queries to the tool you care about. +- Use `started_at` range filters to limit time-based queries. +- Use `result_success = false` to focus on error analysis. +- Use `LIMIT 1` with `ORDER BY ... DESC` to get the single most recent item. + +--- + +### Multi-Session Queries: Extra Caution + +Queries that span multiple sessions multiply the row count by the number of sessions +matched. Always add an explicit session count guard or use `WHERE s.node_id IN [...]` +to constrain to a known set. + +```cypher +// DANGEROUS — matches all sessions in workspace, multiplies rows +MATCH (s:Session {workspace: $workspace}) + -[:HAS_EXECUTION]->(:OrchestratorRun) + -[:HAS_PART]->(iter:Iteration) + -[:HAS_TOOL_CALL]->(tc:ToolCall) +RETURN s.node_id, tc.tool_name, tc.result_success +LIMIT 50 // 50 rows across ALL sessions — almost certainly not what you want + +// SAFE — one session at a time +MATCH (s:Session {workspace: $workspace, node_id: $session_id}) + ... + +// SAFE — explicit set of sessions +MATCH (s:Session {workspace: $workspace}) +WHERE s.node_id IN [$session_a, $session_b, $session_c] + ... +LIMIT 50 // 50 rows across 3 known sessions — controlled +``` + +When you do need cross-session analysis, use aggregation (COUNT, collect, GROUP BY) +to collapse results before returning them, then drill into specific sessions. + +--- + +## Gotchas + +**1. Data layer 2 nodes only exist if handlers ran.** +Semantic entities (OrchestratorRun, Iteration, ContentBlock, ToolCall, etc.) are +created by data layer 2 handlers during event ingestion. If a session was ingested +before data layer 2 was deployed, or if the handler for a specific event type is +disabled, those nodes will not exist. Always use `OPTIONAL MATCH` when joining +data layer 2 entities against unknown sessions. + +**2. `result_success: false` signals the error path.** +A `:ToolCall` node with `result_success = false` means the tool returned an error. +The `result_error` property holds the error message. A missing `result_success` +property (null) means the `ToolPostEvent` or `ToolErrorEvent` has not been processed +yet — the tool call is still in-flight or the handler did not run. + +**3. `data` is a JSON string, not a Cypher map.** +The `data` property on `:Event` nodes is a serialized JSON string. You cannot access +`e.data.tool_name` in Cypher. Lifted properties (`tool_name`, `tool_call_id`, `model`, +etc.) are your first resort. When you need raw payload fields not lifted, retrieve the +`data` string and parse it with `jq` outside Cypher (see Section 5). + +**4. `ENABLES` edges are sparse.** +The `ENABLES` edge from `OrchestratorRun` to the next `Prompt` is only written when +the session has a multi-turn chain. Single-turn sessions and sessions where the run +ended without a follow-up prompt will have no `ENABLES` edge. For a session with N +prompts, there are exactly N−1 `ENABLES` edges (each run connects to the next prompt, +but the last run has no successor). Do not rely on `ENABLES` existing to determine if +a session ended cleanly. + +**5. Workspace scoping is mandatory.** +Every query must include `{workspace: $workspace}` on the anchor node. Omitting the +workspace filter causes a full graph scan and may return results from unrelated projects +or users. The `graph_query` tool automatically injects `$workspace` — always include +it in the first `MATCH` pattern. + +**6. The node MERGE key is `{node_id, workspace}`.** +Data layer 2 nodes are merged using the composite key `{node_id, workspace}`. This +means the same logical entity (e.g. an Orchestrator named `loop-streaming`) can exist +as separate nodes in different workspaces. Cross-workspace queries (passing `workspace: +'*'`) will return one node per workspace, not one node per unique `node_id`. Account +for this when aggregating across workspaces. + +**7. `SOURCED_FROM` edges may be absent on older sessions.** +Sessions ingested before the SOURCED_FROM handler was deployed will not have any +cross-layer provenance edges. To check which data layer 2 nodes are missing their +source link, run: + +```cypher +MATCH (n:SST_EVENT) WHERE NOT (n)-[:SOURCED_FROM]->() AND NOT n:Session RETURN labels(n), count(*) +``` + +If this returns results, fall back to Join 2 (ToolCall Direct Match) or Join 3 +(Session Containment) for those sessions. + +**8. Foundation layer nodes only exist when those features were used.** +A session with no delegation, no skills, and no recipes will have no `Delegation`, `SkillLoad`, `RecipeRun`, or `RecipeStep` nodes. Always use `OPTIONAL MATCH` when joining foundation layer entities against arbitrary sessions. + +**9. `Agent` and `Recipe` are concept nodes shared across sessions.** +Unlike `SST_EVENT` entities, `Agent` and `Recipe` nodes are merged by name across the entire workspace. Querying `(a:Agent)` without a session anchor will span all sessions. Scope through the session: reach `Agent` via `HAS_AGENT` from the sub-session, or `Recipe` via `HAS_RECIPE` from a `RecipeRun`. + +**10. `SkillLoad` may attach to `Session` directly, not `Iteration`.** +Skills loaded before the first `provider:request` have no active `Iteration`. The `HAS_SKILL_LOAD` edge then comes from `Session` rather than `Iteration`. Pattern "Skills Active Per Iteration" only returns skills tied to an iteration — add `OPTIONAL MATCH (s)-[:HAS_SKILL_LOAD]->(sl:SkillLoad)` to catch session-level loads. + +**11. Unbounded queries will destroy your context window.** +A graph with many sessions is NOT like a small in-memory dataset. Each session can have +hundreds of tool calls, thousands of events, and dozens of iterations. A query with no +`LIMIT` clause against the whole workspace can return tens of thousands of rows, saturating +the context window before any result can be processed. Three mandatory habits: + +1. **Always LIMIT.** Every query that traverses tool calls, events, or iterations must have + `LIMIT N`. Start at the safe defaults from Section 7. Raise only after counting. + +2. **Count before widening.** If you need to understand the full extent of a dataset, run a + `count()` aggregation first. The count result is a single number — it costs almost nothing. + Then decide whether the actual rows are safe to retrieve. + +3. **Anchor on a session before traversing.** The pattern `MATCH (s:Session {workspace: $workspace})` + without a `node_id` filter spans every session. Add `node_id: $session_id` or + `WHERE s.node_id IN [...]` to constrain the starting set before any traversal. + +See Section 7 for the complete size management and pagination reference. + +**12. Temporal comparisons require the `datetime()` wrapper.** Comparing a ZONED DATETIME +property to a string literal (`WHERE s.started_at > '2026-05-01'`) always evaluates false — +no error is raised, no results are returned, the query silently produces nothing. Use +`datetime('2026-05-01')` instead. ORDER BY on temporal columns requires no change. See +"Temporal Property Types" at the top of Section 2 for the full list of ZONED DATETIME +properties. + +- `duration.between(s.started_at, s.ended_at)` computes elapsed time (session length, + tool-call duration) and returns a Neo4j DURATION value (e.g. PT1H30M). +- `WHERE s.started_at > datetime() - duration('P30D')` enables rolling time-window queries + (sessions started in the last 30 days). Both were impossible with string storage. + +**13. `IncompleteSession` is a health marker, not a terminal label.** +A session node carrying `:IncompleteSession` reached `session:end` with no prior `session:start` +or `session:fork` event captured. It carries **none** of the terminal labels (`:RootSession`, +`:SubSession`, `:ForkedSession`) and has `has_terminal: false`. It is not a stub for a lost root +session — it is a health signal. A spike in the count indicates upstream event loss. Count them +with: + +```cypher +MATCH (s:Session:IncompleteSession) RETURN count(s) +``` + +Do not treat `:IncompleteSession` nodes as `:RootSession`. Filter them out of normal terminal- +session queries with `WHERE NOT s:IncompleteSession`, or check `has_terminal: false` on the +session node. A WARNING is logged at ingest time: "reached end with no start/fork event; marked +IncompleteSession (recovered)". diff --git a/modules/tool-graph-query/amplifier_module_tool_graph_query/graph_query_tool.py b/modules/tool-graph-query/amplifier_module_tool_graph_query/graph_query_tool.py index 120f7581..6d826b95 100644 --- a/modules/tool-graph-query/amplifier_module_tool_graph_query/graph_query_tool.py +++ b/modules/tool-graph-query/amplifier_module_tool_graph_query/graph_query_tool.py @@ -1,8 +1,10 @@ """GraphQueryTool — agent-facing tool for executing Cypher queries. -Implements the Amplifier Tool protocol. Resolves configuration lazily -via the ``context_intelligence.config_resolver`` coordinator capability -registered by the hook-context-intelligence module. +Implements the Amplifier Tool protocol. Configuration is resolved lazily at +execute() time, preferring the ``context_intelligence.hook_config_resolver`` +coordinator capability registered by hook-context-intelligence. When the hook +is not mounted (analytics-only mode) the tool falls back to the ``config`` dict +passed via mount() — the standard Amplifier tool configuration mechanism. """ from __future__ import annotations @@ -10,6 +12,7 @@ from typing import Any from context_intelligence.client import AsyncCIClient +from context_intelligence.tool_resolver import ToolConfigResolver from amplifier_core.models import ToolResult @@ -18,13 +21,19 @@ class GraphQueryTool: """Execute Cypher queries against the context-intelligence server. Implements the Amplifier Tool protocol (name, description, input_schema, - execute). Configuration is resolved lazily at execute() time via the - coordinator's ``context_intelligence.config_resolver`` capability. + execute). Configuration priority at execute() time: + + 1. ``context_intelligence.hook_config_resolver`` coordinator capability + (registered by hook-context-intelligence when the full behavior is used). + 2. ``config`` dict passed to mount() — used when the analytics-only behavior + is composed without the hook. """ - def __init__(self, coordinator: Any) -> None: + def __init__(self, coordinator: Any, config: dict[str, Any] | None = None) -> None: self._coordinator = coordinator - self._resolver: Any | None = None + self._config: dict[str, Any] = config or {} + self._hook_resolver: Any | None = None + self._tool_resolver = ToolConfigResolver(self._config, coordinator) @property def name(self) -> str: @@ -74,22 +83,57 @@ def input_schema(self) -> dict[str, Any]: "required": ["query"], } - async def execute(self, input: dict[str, Any]) -> ToolResult: # noqa: A002 - if self._resolver is None: - self._resolver = self._coordinator.get_capability( - "context_intelligence.config_resolver" + @property + def skill_sync_enabled(self) -> bool: + """Whether the analytics-path skill sync runs on session start. + + Defaults to ``True`` (existing behaviour preserved). Resolved via the + tool's ``ToolConfigResolver`` from the ``skill_sync_enabled`` key + (mount config dict -> coordinator.config -> + ``AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED`` env var -> + default). When ``False``, ``skill_sync.on_session_ready`` is a complete + no-op, so headless / pipeline / single-command-series workflows pay zero + skill traffic per turn. Read by ``skill_sync.on_session_ready`` via the + ``context_intelligence._graph_query_tool`` coordinator capability. + """ + return self._tool_resolver.skill_sync_enabled + + def _resolve_server_config(self, coordinator: Any) -> tuple[str | None, str | None, str]: + """Return (server_url, api_key, workspace) from hook resolver or ToolConfigResolver. + + While ``_hook_resolver`` is ``None``, calls ``get_capability`` on every + invocation so that a hook mounted after tool construction is picked up on + the very next ``execute()`` call (late-mount upgrade path). Once set, + ``_hook_resolver`` is cached and ``get_capability`` is no longer called. + + In analytics-only mode (no hook), ``_tool_resolver`` (a + ``ToolConfigResolver``) is used. It applies the full four-level + priority chain: config dict → coordinator.config → + AMPLIFIER_CONTEXT_INTELLIGENCE_* env vars → ~/.amplifier/settings.yaml. + If no source provides a server URL, ``server_url`` is ``None`` and + ``execute()`` will return a ``configuration_error``. + """ + if self._hook_resolver is None: + self._hook_resolver = coordinator.get_capability( + "context_intelligence.hook_config_resolver" ) - - if self._resolver is None: - return ToolResult( - success=False, - error={ - "message": "context-intelligence hook not configured", - "type": "configuration_error", - }, + if self._hook_resolver is not None: + return ( + self._hook_resolver.context_intelligence_server_url, + self._hook_resolver.context_intelligence_api_key, + self._hook_resolver.workspace, ) + # Analytics-only mode: delegate to ToolConfigResolver for full + # env-var / settings.yaml fallback chain. + return ( + self._tool_resolver.context_intelligence_server_url, + self._tool_resolver.context_intelligence_api_key, + self._tool_resolver.workspace, + ) + + async def execute(self, input: dict[str, Any]) -> ToolResult: # noqa: A002 + server_url, api_key, workspace = self._resolve_server_config(self._coordinator) - server_url = self._resolver.context_intelligence_server_url if not server_url: return ToolResult( success=False, @@ -99,7 +143,6 @@ async def execute(self, input: dict[str, Any]) -> ToolResult: # noqa: A002 }, ) - workspace = self._resolver.workspace query: str = input["query"] ws_override = input.get("workspace") effective_workspace = ws_override if ws_override is not None else workspace @@ -118,7 +161,6 @@ async def execute(self, input: dict[str, Any]) -> ToolResult: # noqa: A002 else: params = raw_params - api_key = self._resolver.context_intelligence_api_key async_client = AsyncCIClient(server_url=server_url, api_key=api_key or "") result = await async_client.cypher(query, effective_workspace, params=params) return ToolResult(success=True, output=result) diff --git a/modules/tool-graph-query/amplifier_module_tool_graph_query/skill_fetcher.py b/modules/tool-graph-query/amplifier_module_tool_graph_query/skill_fetcher.py new file mode 100644 index 00000000..7048a83b --- /dev/null +++ b/modules/tool-graph-query/amplifier_module_tool_graph_query/skill_fetcher.py @@ -0,0 +1,161 @@ +"""SkillFetcher — conditional HTTP GET for dynamic skill population. + +Relocated from hook-context-intelligence into tool-graph-query: skill-content +sync is an analytics-path concern, consumed by the graph-analyst sub-session, +NOT a logging concern. The ETag + content-hash drift logic is unchanged; the +deprecated bundled-legacy-content writer was dropped during relocation. +""" + +from __future__ import annotations + +import hashlib +import logging +from pathlib import Path +from typing import NamedTuple + +logger = logging.getLogger(__name__) + +WATCHED_SKILLS: frozenset[str] = frozenset({"context-intelligence-graph-query"}) + +# Sidecar filenames stored alongside SKILL.md +_ETAG_FILENAME: str = ".etag" +_CONTENT_HASH_FILENAME: str = ".content_hash" + + +class VersionCheckResult(NamedTuple): + """Result of a server version pre-check. + + reachable: True when the server responded (even with 404); False on network errors. + version: The server version string from GET /version, or None if not available. + """ + + reachable: bool + version: str | None + + +# DEPRECATED: Use server capability negotiation instead of version comparison. +_MIN_SKILLS_VERSION: tuple[int, ...] = (2, 0, 0) + + +def _is_skills_capable(version: str | None) -> bool: + """Return True if *version* is >= 2.0.0, False otherwise (incl. None/unparseable).""" + try: + parsed = tuple(int(part) for part in version.split(".")) # type: ignore[union-attr] + except (ValueError, AttributeError): + return False + return parsed >= _MIN_SKILLS_VERSION + + +def _sha256(path: Path) -> str: + """Return the hex SHA-256 digest of *path*'s content.""" + return hashlib.sha256(path.read_bytes()).hexdigest() + + +class SkillFetcher: + """Fetches skill files from a remote server with conditional GET (ETag). + + Drift detection + --------------- + tool-skills loads skills from git at mount time, potentially overwriting a + SKILL.md that was previously fetched from the server. A ``.content_hash`` + sidecar (SHA-256 of the last server-written content) is stored alongside the + ``.etag`` sidecar. Before sending ``If-None-Match`` the fetcher verifies the + local file's hash still matches the stored hash. A mismatch means the file + drifted (git, manual edit, etc.) and an unconditional GET is performed. + """ + + def __init__(self, server_url: str, timeout: float = 3.0, api_key: str | None = None) -> None: + self._server_url = server_url.rstrip("/") + self._timeout = timeout + self._api_key = api_key + + async def check_server_version(self) -> VersionCheckResult: + """Check the server version via GET /version. Never raises.""" + import httpx # noqa: PLC0415 — lazy import to avoid loading httpx at module init time + + url = f"{self._server_url}/version" + try: + response = await httpx.AsyncClient().get(url, timeout=self._timeout) + except httpx.RequestError as exc: + logger.debug("check_server_version: unreachable — %s", exc) + return VersionCheckResult(reachable=False, version=None) + + if response.status_code == 404: + return VersionCheckResult(reachable=True, version=None) + + if response.status_code == 200: + version = response.json().get("version") + return VersionCheckResult(reachable=True, version=version) + + logger.debug( + "check_server_version: unexpected status %d — treating as unreachable", + response.status_code, + ) + return VersionCheckResult(reachable=False, version=None) + + async def fetch(self, skill_name: str, skill_path: Path) -> bool: + """Fetch a skill file from the server (conditional GET via If-None-Match). + + Returns + ------- + True — 200 received; *skill_path*, ``.etag``, and ``.content_hash`` updated. + False — 304, connection/timeout error, or unexpected status. + """ + import httpx # noqa: PLC0415 — lazy import to avoid loading httpx at module init time + + url = f"{self._server_url}/skills/{skill_name}" + etag_path = skill_path.parent / _ETAG_FILENAME + content_hash_path = skill_path.parent / _CONTENT_HASH_FILENAME + + headers: dict[str, str] = {} + if self._api_key: + headers["Authorization"] = f"Bearer {self._api_key}" + if etag_path.exists(): + stored_etag = etag_path.read_text().strip() + if stored_etag: + if skill_path.exists() and content_hash_path.exists(): + stored_hash = content_hash_path.read_text().strip() + current_hash = _sha256(skill_path) + if current_hash == stored_hash: + headers["If-None-Match"] = stored_etag + else: + logger.info( + "skill_local_drift: %s — local content modified externally " + "(stored hash %s… → current %s…); " + "skipping If-None-Match for unconditional GET", + skill_name, + stored_hash[:8], + current_hash[:8], + ) + else: + logger.debug( + "skill_hash_missing: %s — no .content_hash sidecar; " + "skipping If-None-Match for unconditional GET", + skill_name, + ) + + try: + async with httpx.AsyncClient() as client: + response = await client.get(url, headers=headers, timeout=self._timeout) + except (httpx.ConnectError, httpx.TimeoutException) as exc: + logger.warning("skill_fetch_failed: %s — %s", skill_name, exc) + return False + + if response.status_code == 200: + skill_path.write_text(response.text) + etag = response.headers.get("etag", "") + if etag: + etag_path.write_text(etag) + content_hash_path.write_text(_sha256(skill_path)) + return True + + if response.status_code == 304: + logger.debug("Skill %s not modified (304)", skill_name) + return False + + logger.warning( + "skill_fetch_failed: unexpected status %d for %s", + response.status_code, + skill_name, + ) + return False diff --git a/modules/tool-graph-query/amplifier_module_tool_graph_query/skill_sync.py b/modules/tool-graph-query/amplifier_module_tool_graph_query/skill_sync.py new file mode 100644 index 00000000..2446659e --- /dev/null +++ b/modules/tool-graph-query/amplifier_module_tool_graph_query/skill_sync.py @@ -0,0 +1,338 @@ +"""skill_sync — offline integrity + per-skill sync helpers. + +Provides two helpers consumed by the graph-analyst sub-session: + +_invalidate_if_drift + Q2 offline-drift sidecar invalidation: compares the stored content hash + against the current SKILL.md content and removes both sidecars when they + no longer match (drift). Content is always preserved. + +_sync_skill + Integrity pre-flight + conditional fetch: runs offline integrity when no + server is reachable, or delegates to SkillFetcher when the server responds. + One bad skill must not break the session — all fetch errors are logged and + swallowed. +""" + +from __future__ import annotations + +import hashlib +import logging +import os +from importlib import resources +from pathlib import Path + +from .skill_fetcher import ( + _CONTENT_HASH_FILENAME, + _ETAG_FILENAME, + WATCHED_SKILLS, + SkillFetcher, + _sha256, +) + +log = logging.getLogger(__name__) + +# Capability identifiers consumed by graph_query_tool.py +TOOL_SKILLS_DISCOVERY_CAPABILITY: str = "skills_discovery" +_GRAPH_QUERY_TOOL_CAPABILITY: str = "context_intelligence._graph_query_tool" + +#: Package holding the vendored offline skill bodies (see bundled_skill/__init__.py). +_BUNDLED_SKILL_PACKAGE: str = "amplifier_module_tool_graph_query.bundled_skill" + +__all__ = [ + "TOOL_SKILLS_DISCOVERY_CAPABILITY", + "WATCHED_SKILLS", + "_GRAPH_QUERY_TOOL_CAPABILITY", + "on_session_ready", +] + + +def _sha256_text(text: str) -> str: + """Return the hex SHA-256 digest of *text* (UTF-8).""" + return hashlib.sha256(text.encode("utf-8")).hexdigest() + + +def _vendored_body(skill_name: str) -> str | None: + """Return the vendored offline body for *skill_name*, or ``None`` if absent. + + The body is packaged inside ``bundled_skill/.md``. A missing + file (e.g. dropped from the wheel by a faulty build) returns ``None`` so the + caller can fail loud rather than silently doing the wrong thing. + """ + try: + resource = resources.files(_BUNDLED_SKILL_PACKAGE).joinpath(f"{skill_name}.md") + if resource.is_file(): + return resource.read_text(encoding="utf-8") + except (FileNotFoundError, ModuleNotFoundError, OSError) as exc: + log.error("vendored_skill_body_error: %s — %s", skill_name, exc) + return None + + +def _install_vendored_body(skill_name: str, skill_path: Path) -> None: + """Swap *skill_path*'s content for the vendored offline body — zero network. + + Used on the ``skill_sync_enabled=false`` path when a server IS configured: + the shipped ``SKILL.md`` is the pessimistic "Server Unavailable" stub, so we + replace it with the real bundled body, otherwise a working graph-analyst is + handed a skill that tells it the graph is dead. + + Correctness properties (see issue #283 council review): + - **Fail loud**: a missing vendored body logs an ERROR and leaves the + on-disk file untouched — never a silent wrong result. + - **Idempotent by SHA-256**: rewrites only when the on-disk content differs, + so a single-command series writes once and then no-ops (zero disk churn). + - **Crash-atomic, ETag-first**: the stale ``.etag`` sidecar is removed FIRST + (a vendored body is not an ETag-validated server fetch), then the content + is replaced via a temp-file + ``os.replace`` atomic rename, then the + ``.content_hash`` sidecar is written. Any crash window therefore leaves + the skill in a clean "no ETag → next enabled sync does an unconditional + GET" state — never a stale-ETag→304 freeze of the vendored body. + """ + body = _vendored_body(skill_name) + if body is None: + log.error( + "skill_swap_unavailable: %s — vendored offline body missing from the " + "tool-graph-query package; leaving on-disk skill unchanged (the " + "graph-analyst may see the 'Server Unavailable' stub). This indicates " + "a broken build — the vendored body must ship in the wheel.", + skill_name, + ) + return + + new_hash = _sha256_text(body) + etag_path = skill_path.parent / _ETAG_FILENAME + content_hash_path = skill_path.parent / _CONTENT_HASH_FILENAME + + # ETag-first: a vendored body has no server ETag; drop any stale one so a + # later re-enabled sync issues a clean unconditional GET. + try: + etag_path.unlink() + except FileNotFoundError: + pass + except OSError as exc: + log.debug("skill_swap_etag_unlink_failed: %s — %s", skill_name, exc) + + if skill_path.exists() and _sha256(skill_path) == new_hash: + # Already the vendored body — keep the content-hash sidecar honest, no rewrite. + if not content_hash_path.exists() or content_hash_path.read_text().strip() != new_hash: + content_hash_path.write_text(new_hash) + log.debug("skill_swap_noop: %s already matches vendored offline body", skill_name) + return + + tmp_path = skill_path.parent / f".{skill_path.name}.swap.{os.getpid()}.tmp" + tmp_path.write_text(body, encoding="utf-8") + os.replace(tmp_path, skill_path) # atomic on the same filesystem + content_hash_path.write_text(new_hash) + log.info( + "skill_swap_applied: %s — installed vendored offline body (%d bytes, zero network)", + skill_name, + len(body), + ) + + +async def _apply_offline_skill_bodies(coordinator: object, tool: object) -> None: + """Disabled-sync path: ensure each watched skill has a usable body, no network. + + For each watched skill: + - **server configured** → swap the pessimistic stub for the vendored real + body (``_install_vendored_body``). ``server_url`` is read from config + only — no reachability ping — so this stays strictly zero-network. + - **no server configured** → retain the shipped "Server Unavailable" stub + (correct: the graph genuinely is not there). + + Empty / whitespace / unexpanded-placeholder ``server_url`` resolves to + ``None`` via the resolver and is treated as "not configured". + """ + discovery = coordinator.get_capability(TOOL_SKILLS_DISCOVERY_CAPABILITY) # type: ignore[union-attr] + if discovery is None: + log.info( + "skill_sync_disabled: skills_discovery capability not available — " + "nothing to swap; skipping (zero network)" + ) + return + + server_url, _api_key, _workspace = tool._resolve_server_config(coordinator) # type: ignore[attr-defined] + server_configured = bool(server_url) + + for skill_name in WATCHED_SKILLS: + meta = discovery.find(skill_name) + if meta is None: + log.debug( + "skill_sync_disabled: %s — discovery.find() returned None; skipping", + skill_name, + ) + continue + skill_path = Path(meta.path) + if server_configured: + log.info( + "skill_sync_disabled: server configured — installing vendored offline " + "body for %s without any network (no GET /version, no GET /skills/)", + skill_name, + ) + _install_vendored_body(skill_name, skill_path) + else: + log.info( + "skill_sync_disabled: no server configured — retaining shipped " + "'Server Unavailable' stub for %s (graph genuinely absent)", + skill_name, + ) + + +def _invalidate_if_drift( + skill_name: str, + skill_path: Path, + etag_path: Path, + content_hash_path: Path, +) -> None: + """Remove both sidecar files when offline content has drifted. + + Returns immediately (noop) when: + - *skill_path* does not exist, or + - *content_hash_path* does not exist (no baseline to compare against). + + When the stored hash matches the current file hash the skill is in sync + and both sidecars are left untouched. When the hashes diverge, both + *etag_path* and *content_hash_path* are deleted so that the next + online sync will perform an unconditional GET rather than send a stale + ``If-None-Match``. The content file is never deleted. + """ + if not (skill_path.exists() and content_hash_path.exists()): + return + + stored_hash = content_hash_path.read_text().strip() + current_hash = _sha256(skill_path) + + if stored_hash == current_hash: + return # In sync — nothing to do. + + # Drift detected: remove both sidecars so the next online GET is unconditional. + for path in (etag_path, content_hash_path): + try: + path.unlink() + except OSError as exc: + log.debug("skill_sidecar_unlink_failed: %s — %s", path.name, exc) + + log.warning( + "skill_offline_drift_invalidated: %s — stored hash %s… != current %s…; " + "ETag and content-hash sidecars removed", + skill_name, + stored_hash[:8], + current_hash[:8], + ) + + +async def _sync_skill( + skill_name: str, + skill_path: Path, + server_url: str | None, + api_key: str | None, +) -> None: + """Integrity pre-flight + conditional fetch for a single skill. + + Offline path (no server_url or server unreachable): + Run _invalidate_if_drift so stale ETag sidecars are cleaned up before + the next online session. + + Online path (server reachable): + Delegate to SkillFetcher.fetch which handles conditional GET (ETag / + If-None-Match) and content-hash drift internally. Any exception is + caught and logged so that one bad skill cannot break the session. + """ + etag_path = skill_path.parent / _ETAG_FILENAME + content_hash_path = skill_path.parent / _CONTENT_HASH_FILENAME + + if not server_url: + _invalidate_if_drift(skill_name, skill_path, etag_path, content_hash_path) + return + + fetcher = SkillFetcher(server_url, api_key=api_key) + version = await fetcher.check_server_version() + + if not version.reachable: + _invalidate_if_drift(skill_name, skill_path, etag_path, content_hash_path) + return + + try: + await fetcher.fetch(skill_name, skill_path) + except Exception as exc: # noqa: BLE001 — one bad skill must not break the session + log.warning("skill_sync_failed: %s — %s", skill_name, exc) + + +async def _resync_all_watched(coordinator: object) -> None: + """Re-sync all watched skills using coordinator capabilities. + + Hard guards: + - Logs a WARNING and returns when skills_discovery capability is absent. + - Logs a WARNING and skips a skill when discovery.find() returns None. + + Config is resolved via the tool's _resolve_server_config so that the + correct server URL and API key are used for the current session. + """ + discovery = coordinator.get_capability(TOOL_SKILLS_DISCOVERY_CAPABILITY) # type: ignore[union-attr] + if discovery is None: + log.warning( + "skill_sync_skipped: skills_discovery capability not available — " + "skill sync will be deferred until the capability is registered" + ) + return + + tool = coordinator.get_capability(_GRAPH_QUERY_TOOL_CAPABILITY) # type: ignore[union-attr] + + for skill_name in WATCHED_SKILLS: + meta = discovery.find(skill_name) + if meta is None: + log.warning( + "skill_sync_skipped: %s — discovery.find() returned None; " + "skill may not be registered in this session", + skill_name, + ) + continue + + skill_path = Path(meta.path) + + if tool is not None: + server_url, api_key, _workspace = tool._resolve_server_config(coordinator) + else: + server_url, api_key = None, None + + await _sync_skill(skill_name, skill_path, server_url, api_key) + + +async def on_session_ready(coordinator: object) -> None: + """Orchestrate skill sync on session start and register a reload handler. + + Performs an initial sync of all watched skills, then registers a + ``skill:unloaded`` hook so that mid-session skill reloads trigger a + re-sync automatically. + + Opt-out gate: when the graph-query tool capability is present and reports + ``skill_sync_enabled is False`` (the ``skill_sync_enabled`` config knob / + ``AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED`` env var), this performs + **zero per-turn network** — no ``GET /version`` ping, no skill fetch — and + does **not** register the ``skill:unloaded`` reload handler. It does NOT, + however, leave a working graph-analyst stranded on the pessimistic "Server + Unavailable" stub: when a server IS configured it swaps in the vendored + offline body (a local copy, still zero network); when no server is + configured it retains the stub. See ``_apply_offline_skill_bodies``. This + lets headless / single-command-series workflows pay zero skill traffic per + turn while keeping the graph-analyst usable. When the tool capability is + absent the gate does not fire and the existing offline-integrity path runs + unchanged. + """ + tool = coordinator.get_capability(_GRAPH_QUERY_TOOL_CAPABILITY) # type: ignore[union-attr] + if tool is not None and not getattr(tool, "skill_sync_enabled", True): + await _apply_offline_skill_bodies(coordinator, tool) + return + + await _resync_all_watched(coordinator) + + async def _on_skill_unloaded(event_name: str, data: dict) -> None: # type: ignore[type-arg] + if data.get("skill_name") in WATCHED_SKILLS: + await _resync_all_watched(coordinator) + + coordinator.hooks.register( # type: ignore[union-attr] + "skill:unloaded", + _on_skill_unloaded, + priority=100, + name="SkillSync", + ) diff --git a/modules/tool-graph-query/pyproject.toml b/modules/tool-graph-query/pyproject.toml index 346bc500..dc02c6ee 100644 --- a/modules/tool-graph-query/pyproject.toml +++ b/modules/tool-graph-query/pyproject.toml @@ -6,7 +6,7 @@ requires-python = ">=3.11" license = "MIT" dependencies = [ - "amplifier-bundle-context-intelligence", + "amplifier-bundle-context-intelligence @ git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main", "httpx>=0.28.1", "idna>=3.15", ] @@ -24,19 +24,26 @@ package = true [tool.hatch.build.targets.wheel] packages = ["amplifier_module_tool_graph_query"] +# Guarantee the vendored offline skill body ships in the wheel. It is a non-.py +# data file consumed at runtime (skill_sync._vendored_body) on the +# skill_sync_enabled=false path; a missing copy would silently strand the +# graph-analyst on the "Server Unavailable" stub. tests/test_bundled_skill.py +# asserts its presence + pinned hash so a faulty build fails loud. +[tool.hatch.build.targets.wheel.force-include] +"amplifier_module_tool_graph_query/bundled_skill/context-intelligence-graph-query.md" = "amplifier_module_tool_graph_query/bundled_skill/context-intelligence-graph-query.md" + +[tool.hatch.metadata] +allow-direct-references = true + [dependency-groups] dev = [ - "amplifier-core", + "amplifier-core>=1.6.0", "pytest>=9.0.3", "pytest-asyncio>=0.24", "pyright>=1.1", "ruff>=0.4", ] -[tool.uv.sources] -amplifier-bundle-context-intelligence = { path = "../.." } -amplifier-core = { git = "https://github.com/microsoft/amplifier-core", branch = "main" } - [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" diff --git a/modules/tool-graph-query/tests/test_bundled_skill.py b/modules/tool-graph-query/tests/test_bundled_skill.py new file mode 100644 index 00000000..09d8743b --- /dev/null +++ b/modules/tool-graph-query/tests/test_bundled_skill.py @@ -0,0 +1,52 @@ +"""Fail-loud guard for the vendored offline skill body. + +The vendored ``bundled_skill/context-intelligence-graph-query.md`` is consumed at +runtime on the ``skill_sync_enabled=false`` path: when a server is configured we +swap the pessimistic "Server Unavailable" stub for this real body so the +graph-analyst is not stranded. A prior refactor already deleted the equivalent +``legacy_content`` fallback once; these tests make any future deletion, wheel +omission, or silent drift FAIL LOUD in CI instead of in production. +""" + +from __future__ import annotations + +import hashlib +from importlib import resources + +_PKG = "amplifier_module_tool_graph_query.bundled_skill" +_SKILL_FILE = "context-intelligence-graph-query.md" + + +def test_vendored_body_is_packaged_and_importable() -> None: + resource = resources.files(_PKG).joinpath(_SKILL_FILE) + assert resource.is_file(), ( + f"vendored offline body {_SKILL_FILE!r} is missing from the " + f"{_PKG} package — it must ship in the wheel (see pyproject force-include)" + ) + + +def test_vendored_body_hash_is_pinned() -> None: + from amplifier_module_tool_graph_query.bundled_skill import EXPECTED_BUNDLED_SKILL_SHA256 + + data = resources.files(_PKG).joinpath(_SKILL_FILE).read_text(encoding="utf-8") + actual = hashlib.sha256(data.encode("utf-8")).hexdigest() + assert actual == EXPECTED_BUNDLED_SKILL_SHA256, ( + "vendored offline body drifted from its pinned hash. If this was an " + "intentional refresh from the canonical " + "microsoft/amplifier-context-intelligence skill, update " + "EXPECTED_BUNDLED_SKILL_SHA256 in bundled_skill/__init__.py and re-run the " + "DTU proof." + ) + + +def test_vendored_body_is_the_real_skill_not_the_stub() -> None: + """Guard against accidentally vendoring the 'Server Unavailable' stub.""" + data = resources.files(_PKG).joinpath(_SKILL_FILE).read_text(encoding="utf-8") + assert "Server Unavailable" not in data, ( + "vendored body must be the REAL graph-query skill, not the stub" + ) + assert "# Context Intelligence Graph Query" in data + # The watched-skill name the swap logic resolves must match this file's stem. + from amplifier_module_tool_graph_query.skill_fetcher import WATCHED_SKILLS + + assert _SKILL_FILE[: -len(".md")] in WATCHED_SKILLS diff --git a/modules/tool-graph-query/tests/test_graph_query_tool.py b/modules/tool-graph-query/tests/test_graph_query_tool.py index ad626145..d78ccb08 100644 --- a/modules/tool-graph-query/tests/test_graph_query_tool.py +++ b/modules/tool-graph-query/tests/test_graph_query_tool.py @@ -110,10 +110,18 @@ async def test_execute_returns_tool_result(self) -> None: class TestLazyCapabilityResolution: """Lazy resolver lookup and caching behaviour.""" - async def test_capability_not_found_returns_configuration_error(self) -> None: + async def test_capability_not_found_returns_configuration_error(self, monkeypatch) -> None: from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + # Isolate from live AMPLIFIER_CONTEXT_INTELLIGENCE_* env vars so that + # ToolConfigResolver cannot find a server URL anywhere and the guard + # in execute() returns configuration_error. + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + coordinator = _make_coordinator(resolver=None) + coordinator.config = {} tool = GraphQueryTool(coordinator=coordinator) result = await tool.execute({"query": "MATCH (n) RETURN n"}) @@ -146,7 +154,9 @@ async def test_resolver_cached_after_first_lookup(self) -> None: await tool.execute({"query": "MATCH (n) RETURN n LIMIT 2"}) # get_capability should only be called once (on first execute) - coordinator.get_capability.assert_called_once_with("context_intelligence.config_resolver") + coordinator.get_capability.assert_called_once_with( + "context_intelligence.hook_config_resolver" + ) async def test_configured_resolver_succeeds(self) -> None: from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool @@ -376,3 +386,409 @@ async def test_non_dict_params_returns_validation_error(self) -> None: assert result.success is False assert result.error is not None assert result.error["type"] == "validation_error" + + +# --------------------------------------------------------------------------- +# TestAnalyticsOnlyMode +# --------------------------------------------------------------------------- + + +class TestAnalyticsOnlyMode: + """Analytics-only mode: config dict is used when the hook capability is absent.""" + + async def test_analytics_only_success(self) -> None: + """Tool succeeds using config values when no hook capability is registered.""" + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + coordinator = _make_coordinator(resolver=None) + config = { + "context_intelligence_server_url": "http://ci:4200", + "context_intelligence_api_key": "key123", + "workspace": "my-ws", + } + tool = GraphQueryTool(coordinator=coordinator, config=config) + + mock_instance, mock_cls = _make_mock_async_ci_client() + with patch("amplifier_module_tool_graph_query.graph_query_tool.AsyncCIClient", mock_cls): + result = await tool.execute({"query": "MATCH (n) RETURN n"}) + + assert result.success is True + mock_cls.assert_called_once() + call_kwargs = mock_cls.call_args.kwargs + assert call_kwargs.get("server_url") == "http://ci:4200" + assert call_kwargs.get("api_key") == "key123" + # workspace must be forwarded as the 2nd positional arg to cypher() + cypher_args = mock_instance.cypher.call_args + all_args = list(cypher_args.args) + list(cypher_args.kwargs.values()) + assert "my-ws" in all_args + + async def test_analytics_only_workspace_defaults_to_default(self) -> None: + """When config has no 'workspace' key the cypher call receives 'default'.""" + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + coordinator = _make_coordinator(resolver=None) + config = { + "context_intelligence_server_url": "http://ci:4200", + "context_intelligence_api_key": "key123", + # no "workspace" key + } + tool = GraphQueryTool(coordinator=coordinator, config=config) + + mock_instance, mock_cls = _make_mock_async_ci_client() + with patch("amplifier_module_tool_graph_query.graph_query_tool.AsyncCIClient", mock_cls): + await tool.execute({"query": "MATCH (n) RETURN n"}) + + cypher_args = mock_instance.cypher.call_args + # workspace is the 2nd positional arg: cypher(query, workspace, params=...) + assert cypher_args.args[1] == "default" + + async def test_analytics_only_no_server_url_returns_error(self, monkeypatch) -> None: + """Missing server URL in config returns a configuration_error — not 'hook not configured'.""" + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + # Isolate from live AMPLIFIER_CONTEXT_INTELLIGENCE_* env vars so + # ToolConfigResolver has nowhere to find a server URL. + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + + coordinator = _make_coordinator(resolver=None) + coordinator.config = {} + config = { + "context_intelligence_api_key": "key123", + # no "context_intelligence_server_url" + } + tool = GraphQueryTool(coordinator=coordinator, config=config) + + result = await tool.execute({"query": "MATCH (n) RETURN n"}) + + assert result.success is False + assert result.error is not None + assert result.error["type"] == "configuration_error" + assert "server URL not configured" in result.error["message"] + + async def test_analytics_only_env_var_fallback_resolves_server_url(self, monkeypatch) -> None: + """ToolConfigResolver env-var fallback must be used when config has no server_url. + + Regression: commits 584efb9/be6451e removed ToolConfigResolver, dropping the + AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL env-var fallback path in analytics-only + mode. This test ensures the fallback is restored. + """ + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + # Stamp a specific URL into the env var (overrides whatever live value exists) + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://env-server:8000") + + coordinator = _make_coordinator(resolver=None) + coordinator.config = {} # prevent coordinator.config from providing a URL + config = { + "context_intelligence_api_key": "key123", + # deliberately NO "context_intelligence_server_url" in config + } + tool = GraphQueryTool(coordinator=coordinator, config=config) + + mock_instance, mock_cls = _make_mock_async_ci_client() + with patch("amplifier_module_tool_graph_query.graph_query_tool.AsyncCIClient", mock_cls): + result = await tool.execute({"query": "MATCH (n) RETURN n"}) + + # ToolConfigResolver must have resolved the URL from the env var + assert result.success is True, f"Expected success=True (env-var fallback), got: {result}" + call_kwargs = mock_cls.call_args.kwargs + assert call_kwargs.get("server_url") == "http://env-server:8000" + + +# --------------------------------------------------------------------------- +# TestLateMountUpgrade +# --------------------------------------------------------------------------- + + +class TestLateMountUpgrade: + """Late-mount upgrade path: hook resolver supersedes ToolConfigResolver after mount. + + The lazy re-check design: while ``_resolver`` is ``None``, + ``get_capability`` is called on every ``execute()``. A coordinator that + mounts the hook between two calls therefore causes the tool to switch from + the ToolConfigResolver fallback to the hook resolver — changing + ``server_url`` — on the very next call. + """ + + async def test_late_mount_switches_from_tool_resolver_to_hook_resolver( + self, + ) -> None: + """First execute() uses ToolConfigResolver (hook absent); second uses hook resolver. + + Asserts that ``AsyncCIClient`` is constructed with the tool-config + ``server_url`` on call 1 and the hook ``server_url`` on call 2. + """ + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + hook_resolver = _make_resolver( + server_url="http://hook-server:9000", + workspace="hook-workspace", + api_key="hook-key", + ) + # First get_capability call returns None (hook not yet mounted). + # Second get_capability call returns hook_resolver (hook mounted between calls). + coordinator = MagicMock() + coordinator.get_capability = MagicMock(side_effect=[None, hook_resolver]) + coordinator.config = {} + + config = { + "context_intelligence_server_url": "http://tool-config-server:8000", + "context_intelligence_api_key": "tool-key", + "workspace": "tool-workspace", + } + tool = GraphQueryTool(coordinator=coordinator, config=config) + + mock_instance, mock_cls = _make_mock_async_ci_client() + with patch("amplifier_module_tool_graph_query.graph_query_tool.AsyncCIClient", mock_cls): + result1 = await tool.execute({"query": "MATCH (n) RETURN n LIMIT 1"}) + result2 = await tool.execute({"query": "MATCH (n) RETURN n LIMIT 2"}) + + # Both calls must succeed + assert result1.success is True + assert result2.success is True + + # AsyncCIClient must have been constructed once per execute() call + assert mock_cls.call_count == 2 + + first_url = mock_cls.call_args_list[0].kwargs.get("server_url") + second_url = mock_cls.call_args_list[1].kwargs.get("server_url") + + # Call 1: hook absent → ToolConfigResolver drives server_url from config dict + assert first_url == "http://tool-config-server:8000", ( + f"Expected tool-config URL on first call, got {first_url!r}" + ) + # Call 2: hook now present → hook resolver drives server_url + assert second_url == "http://hook-server:9000", ( + f"Expected hook URL on second call, got {second_url!r}" + ) + + +# --------------------------------------------------------------------------- +# TestResolveServerConfigHelper +# --------------------------------------------------------------------------- + + +class TestResolveServerConfigHelper: + """Tests for the _resolve_server_config(coordinator) helper method.""" + + def test_uses_hook_resolver_when_present(self) -> None: + """When a hook resolver is registered, it drives server_url/api_key/workspace.""" + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + hook = _make_resolver( + server_url="http://hook:9000", + api_key="hook-key", + workspace="hook-ws", + ) + coordinator = _make_coordinator(resolver=hook) + tool = GraphQueryTool(coordinator=coordinator) + + server_url, api_key, workspace = tool._resolve_server_config(coordinator) + + assert server_url == "http://hook:9000" + assert api_key == "hook-key" + assert workspace == "hook-ws" + + def test_falls_back_to_config_dict_when_hook_absent(self) -> None: + """When no hook resolver is registered, config dict values are returned.""" + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + coordinator = _make_coordinator(resolver=None) + coordinator.config = {} + config = { + "context_intelligence_server_url": "http://tool:8000", + "context_intelligence_api_key": "tool-key", + "workspace": "tool-ws", + } + tool = GraphQueryTool(coordinator=coordinator, config=config) + + server_url, api_key, workspace = tool._resolve_server_config(coordinator) + + assert server_url == "http://tool:8000" + assert api_key == "tool-key" + assert workspace == "tool-ws" + + def test_caches_hook_resolver_on_attribute(self) -> None: + """After resolution, _hook_resolver is set to the hook resolver object.""" + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + + hook = _make_resolver( + server_url="http://hook:9000", + api_key="hook-key", + workspace="hook-ws", + ) + coordinator = _make_coordinator(resolver=hook) + tool = GraphQueryTool(coordinator=coordinator) + + tool._resolve_server_config(coordinator) + + assert tool._hook_resolver is hook + + +# --------------------------------------------------------------------------- +# TestExpandEnvPlaceholders — unit tests for the helper (Case 4) +# --------------------------------------------------------------------------- + + +class TestExpandEnvPlaceholders: + """Unit tests for _expand_env_placeholders in context_intelligence.config.""" + + def test_var_syntax_env_set(self, monkeypatch) -> None: + """${VAR} with env set → env var value.""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.setenv("_CI_TEST_PLACEHOLDER_VAR", "hello") + assert _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR}") == "hello" + + def test_var_syntax_env_unset(self, monkeypatch) -> None: + """${VAR} with env unset → empty string.""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.delenv("_CI_TEST_PLACEHOLDER_VAR", raising=False) + assert _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR}") == "" + + def test_var_colon_empty_default_env_set(self, monkeypatch) -> None: + """${VAR:} with env set → env var value.""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.setenv("_CI_TEST_PLACEHOLDER_VAR", "world") + assert _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR:}") == "world" + + def test_var_colon_empty_default_env_unset(self, monkeypatch) -> None: + """${VAR:} with env unset → empty string.""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.delenv("_CI_TEST_PLACEHOLDER_VAR", raising=False) + assert _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR:}") == "" + + def test_var_with_default_env_unset(self, monkeypatch) -> None: + """${VAR:default} with env unset → 'default'.""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.delenv("_CI_TEST_PLACEHOLDER_VAR", raising=False) + assert _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR:my_default}") == "my_default" + + def test_var_with_default_env_set(self, monkeypatch) -> None: + """${VAR:default} with env set → env var value (default is ignored).""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.setenv("_CI_TEST_PLACEHOLDER_VAR", "from_env") + assert _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR:my_default}") == "from_env" + + def test_plain_string_passes_through_unchanged(self) -> None: + """A non-placeholder string passes through unchanged.""" + from context_intelligence.config import _expand_env_placeholders + + assert _expand_env_placeholders("http://plain:8000") == "http://plain:8000" + + def test_multiple_placeholders_in_one_string(self, monkeypatch) -> None: + """Multiple ${VAR} placeholders in a single string — one re.sub pass expands all.""" + from context_intelligence.config import _expand_env_placeholders + + monkeypatch.setenv("_CI_TEST_PLACEHOLDER_VAR_A", "valA") + monkeypatch.setenv("_CI_TEST_PLACEHOLDER_VAR_B", "valB") + assert ( + _expand_env_placeholders("${_CI_TEST_PLACEHOLDER_VAR_A}:${_CI_TEST_PLACEHOLDER_VAR_B}") + == "valA:valB" + ) + + +# --------------------------------------------------------------------------- +# TestToolConfigResolverPlaceholderExpansion — Cases 1-3 +# --------------------------------------------------------------------------- + + +class TestToolConfigResolverPlaceholderExpansion: + """ToolConfigResolver must expand ${VAR} placeholders from the config dict. + + In analytics-only mode, agent behaviors ship config values like: + context_intelligence_server_url: "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}" + These arrive as literal strings in the mount() config dict. Without + expansion they are truthy and short-circuit the env-var fallback chain. + """ + + def test_server_url_placeholder_with_env_set(self, monkeypatch) -> None: + """Case 1: placeholder config + env set → real URL and api_key are both returned.""" + from context_intelligence.tool_resolver import ToolConfigResolver + + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://real:8000") + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", "real-key") + # Isolate the settings.yaml fallback so only env var or placeholder matters. + import context_intelligence.tool_resolver as _tr + + monkeypatch.setattr(_tr, "_parse_settings_yaml", lambda _: {}) + + config = { + "context_intelligence_server_url": "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}", + "context_intelligence_api_key": "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:}", + } + resolver = ToolConfigResolver(config=config, coordinator=MagicMock()) + + assert resolver.context_intelligence_server_url == "http://real:8000" + assert resolver.context_intelligence_api_key == "real-key" + + def test_server_url_placeholder_with_env_unset_returns_none(self, monkeypatch) -> None: + """Case 2: placeholder config + env unset → None (falls through entire chain).""" + from context_intelligence.tool_resolver import ToolConfigResolver + + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + import context_intelligence.tool_resolver as _tr + + monkeypatch.setattr(_tr, "_parse_settings_yaml", lambda _: {}) + + config = { + "context_intelligence_server_url": "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}" + } + coordinator = MagicMock() + coordinator.config = {} # ensure _coordinator_config_get returns None + resolver = ToolConfigResolver(config=config, coordinator=coordinator) + + assert resolver.context_intelligence_server_url is None + + def test_api_key_placeholder_with_env_set(self, monkeypatch) -> None: + """Case 3: api_key placeholder config + env set → 'secret' is returned.""" + from context_intelligence.tool_resolver import ToolConfigResolver + + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", "secret") + import context_intelligence.tool_resolver as _tr + + monkeypatch.setattr(_tr, "_parse_settings_yaml", lambda _: {}) + + config = {"context_intelligence_api_key": "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:}"} + resolver = ToolConfigResolver(config=config, coordinator=MagicMock()) + + assert resolver.context_intelligence_api_key == "secret" + + def test_workspace_placeholder_with_env_set(self, monkeypatch) -> None: + """workspace placeholder config + env set → env value is returned.""" + from context_intelligence.tool_resolver import ToolConfigResolver + + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", "_CI_TEST_my-ws") + + config = {"workspace": "${AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE:}"} + resolver = ToolConfigResolver(config=config, coordinator=MagicMock()) + + assert resolver.workspace == "_CI_TEST_my-ws" + + def test_server_url_placeholder_via_coordinator_config(self, monkeypatch) -> None: + """coordinator.config placeholder + env set → env URL returned (step 2 of chain).""" + from context_intelligence.tool_resolver import ToolConfigResolver + + monkeypatch.setenv( + "AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://_ci_test_coord:7000" + ) + import context_intelligence.tool_resolver as _tr + + monkeypatch.setattr(_tr, "_parse_settings_yaml", lambda _: {}) + + # No key in mount config dict (step 1 absent) — placeholder lives in coordinator.config + config: dict = {} + coordinator = MagicMock() + coordinator.config = { + "context_intelligence_server_url": ("${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}") + } + resolver = ToolConfigResolver(config=config, coordinator=coordinator) + + assert resolver.context_intelligence_server_url == "http://_ci_test_coord:7000" diff --git a/modules/tool-graph-query/tests/test_mount.py b/modules/tool-graph-query/tests/test_mount.py index d97b8437..f6d55876 100644 --- a/modules/tool-graph-query/tests/test_mount.py +++ b/modules/tool-graph-query/tests/test_mount.py @@ -71,3 +71,74 @@ async def test_mount_returns_metadata_dict(self) -> None: assert isinstance(result, dict) assert result["tool"] == "graph_query" assert result["status"] == "mounted" + + async def test_config_dict_passed_to_tool_constructor(self) -> None: + """Config dict is forwarded to the tool so it can resolve server_url and workspace.""" + from amplifier_module_tool_graph_query import mount + + coordinator = MagicMock() + coordinator.mount = AsyncMock() + await mount( + coordinator, + config={"context_intelligence_server_url": "http://test", "workspace": "ws1"}, + ) + tool = coordinator.mount.call_args.args[1] + assert tool._config["context_intelligence_server_url"] == "http://test" + assert tool._config["workspace"] == "ws1" + + +class TestOnSessionReadyWiring: + """on_session_ready is exposed at module level and mount() registers the tool capability.""" + + def test_module_exposes_on_session_ready(self) -> None: + import amplifier_module_tool_graph_query as mod + + fn = getattr(mod, "on_session_ready", None) + assert fn is not None + assert inspect.iscoroutinefunction(fn) + sig = inspect.signature(fn) + first_param = list(sig.parameters.keys())[0] + assert first_param == "coordinator" + + async def test_mount_registers_graph_query_tool_capability(self) -> None: + from amplifier_module_tool_graph_query import mount + + coordinator = MagicMock() + coordinator.mount = AsyncMock() + coordinator.register_capability = MagicMock() + await mount(coordinator, config={}) + names = [c.args[0] for c in coordinator.register_capability.call_args_list] + assert "context_intelligence._graph_query_tool" in names + + +class TestSkillSyncEnabledConfig: + """The skill_sync_enabled knob is forwarded to the tool and resolves.""" + + async def test_config_skill_sync_enabled_false_forwarded_and_resolves( + self, monkeypatch + ) -> None: + from amplifier_module_tool_graph_query import mount + + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED", raising=False) + coordinator = MagicMock() + coordinator.config = {} # real dict so the resolver coordinator-level read is clean + coordinator.mount = AsyncMock() + + await mount(coordinator, config={"skill_sync_enabled": False}) + + tool = coordinator.mount.call_args.args[1] + assert tool._config["skill_sync_enabled"] is False + assert tool.skill_sync_enabled is False + + async def test_default_skill_sync_enabled_is_true(self, monkeypatch) -> None: + from amplifier_module_tool_graph_query import mount + + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED", raising=False) + coordinator = MagicMock() + coordinator.config = {} + coordinator.mount = AsyncMock() + + await mount(coordinator, config={}) + + tool = coordinator.mount.call_args.args[1] + assert tool.skill_sync_enabled is True diff --git a/modules/tool-graph-query/tests/test_skill_fetcher.py b/modules/tool-graph-query/tests/test_skill_fetcher.py new file mode 100644 index 00000000..18f36906 --- /dev/null +++ b/modules/tool-graph-query/tests/test_skill_fetcher.py @@ -0,0 +1,337 @@ +"""Tests for SkillFetcher (relocated into tool-graph-query) — conditional HTTP GET.""" + +from __future__ import annotations + +import hashlib +import logging +from pathlib import Path +from unittest.mock import AsyncMock, MagicMock, patch + +import httpx +import pytest + + +def _make_http_mock(status_code: int, text: str, etag: str) -> MagicMock: + """Patch-ready mock for httpx.AsyncClient used as an async context manager.""" + response = MagicMock() + response.status_code = status_code + response.text = text + response.headers = {"etag": etag} if etag else {} + + client = AsyncMock() + client.get = AsyncMock(return_value=response) + client.__aenter__ = AsyncMock(return_value=client) + client.__aexit__ = AsyncMock(return_value=None) + return MagicMock(return_value=client) + + +def _make_error_mock(exc: Exception) -> MagicMock: + """Patch-ready mock for httpx.AsyncClient that raises exc on get().""" + client = AsyncMock() + client.get = AsyncMock(side_effect=exc) + client.__aenter__ = AsyncMock(return_value=client) + client.__aexit__ = AsyncMock(return_value=None) + return MagicMock(return_value=client) + + +def _make_version_http_mock(status_code: int, body: dict) -> MagicMock: + """Mock for check_server_version() — calls AsyncClient().get() directly (no async with).""" + response = MagicMock() + response.status_code = status_code + response.json = MagicMock(return_value=body) + + client = AsyncMock() + client.get = AsyncMock(return_value=response) + return MagicMock(return_value=client) + + +class TestConstants: + def test_watched_skills_contains_only_graph_query(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import WATCHED_SKILLS + + assert WATCHED_SKILLS == frozenset({"context-intelligence-graph-query"}) + + +class TestSkillFetcher200: + async def test_returns_true_on_200(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(200, "skill content", 'W/"abc123"')): + result = await fetcher.fetch("my-skill", skill_path) + assert result is True + + async def test_writes_content_to_skill_path(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(200, "skill content here", 'W/"abc123"')): + await fetcher.fetch("my-skill", skill_path) + assert skill_path.read_text() == "skill content here" + + async def test_writes_etag_sidecar(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(200, "skill content", 'W/"etag-value"')): + await fetcher.fetch("my-skill", skill_path) + etag_path = tmp_path / ".etag" + assert etag_path.exists() + assert etag_path.read_text() == 'W/"etag-value"' + + async def test_writes_content_hash_sidecar(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(200, "abc", 'W/"e"')): + await fetcher.fetch("my-skill", skill_path) + content_hash_path = tmp_path / ".content_hash" + assert content_hash_path.exists() + assert content_hash_path.read_text() == hashlib.sha256(b"abc").hexdigest() + + +class TestSkillFetcher304: + async def test_returns_false_on_304(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + skill_path.write_text("# Existing Content") + (tmp_path / ".etag").write_text('W/"abc123"') + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(304, "", "")): + result = await fetcher.fetch("my-skill", skill_path) + assert result is False + + async def test_does_not_overwrite_skill_on_304(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + skill_path.write_text("# Existing Content") + (tmp_path / ".etag").write_text('W/"abc123"') + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(304, "", "")): + await fetcher.fetch("my-skill", skill_path) + assert skill_path.read_text() == "# Existing Content" + + +class TestSkillFetcherUnexpectedStatus: + async def test_returns_false_on_404(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(404, "not found", "")): + result = await fetcher.fetch("my-skill", skill_path) + assert result is False + assert not skill_path.exists() + + async def test_logs_warning_on_unexpected_status( + self, tmp_path: Path, caplog: pytest.LogCaptureFixture + ) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with caplog.at_level(logging.WARNING): + with patch("httpx.AsyncClient", _make_http_mock(500, "server error", "")): + await fetcher.fetch("my-skill", skill_path) + assert any("skill_fetch_failed" in r.getMessage() for r in caplog.records) + + +class TestSkillFetcherErrors: + async def test_returns_false_on_connect_error(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_error_mock(httpx.ConnectError("refused"))): + result = await fetcher.fetch("my-skill", skill_path) + assert result is False + assert not skill_path.exists() + + async def test_returns_false_on_timeout(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + with patch( + "httpx.AsyncClient", + _make_error_mock(httpx.TimeoutException("timed out", request=None)), + ): + result = await fetcher.fetch("my-skill", skill_path) + assert result is False + assert not skill_path.exists() + + +class TestSkillFetcherETagSidecar: + async def test_no_etag_sidecar_sends_unconditional_get(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + mock_cls = _make_http_mock(200, "skill content", "") + with patch("httpx.AsyncClient", mock_cls): + await fetcher.fetch("my-skill", skill_path) + sent_headers = mock_cls.return_value.get.call_args.kwargs.get("headers", {}) + assert "If-None-Match" not in sent_headers + + async def test_existing_etag_sidecar_sends_if_none_match_when_hash_matches( + self, tmp_path: Path + ) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + skill_path.write_text("# Existing skill content") + (tmp_path / ".content_hash").write_text(hashlib.sha256(skill_path.read_bytes()).hexdigest()) + (tmp_path / ".etag").write_text("stored-etag-value") + fetcher = SkillFetcher("http://localhost:8000") + mock_cls = _make_http_mock(304, "", "") + with patch("httpx.AsyncClient", mock_cls): + await fetcher.fetch("my-skill", skill_path) + sent_headers = mock_cls.return_value.get.call_args.kwargs.get("headers", {}) + assert sent_headers.get("If-None-Match") == "stored-etag-value" + + async def test_drift_skips_if_none_match_for_unconditional_get(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + skill_path.write_text("# drifted local content") + # Stored hash deliberately does NOT match the current file -> drift. + (tmp_path / ".content_hash").write_text("0" * 64) + (tmp_path / ".etag").write_text("stored-etag-value") + fetcher = SkillFetcher("http://localhost:8000") + mock_cls = _make_http_mock(200, "new server content", 'W/"new"') + with patch("httpx.AsyncClient", mock_cls): + await fetcher.fetch("my-skill", skill_path) + sent_headers = mock_cls.return_value.get.call_args.kwargs.get("headers", {}) + assert "If-None-Match" not in sent_headers + + async def test_no_etag_sidecar_written_when_response_omits_etag(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + etag_path = tmp_path / ".etag" + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(200, "skill content", "")): + result = await fetcher.fetch("my-skill", skill_path) + assert result is True + assert skill_path.read_text() == "skill content" + assert not etag_path.exists() + + async def test_etag_sidecar_updated_on_200(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + (tmp_path / ".etag").write_text("old-etag") + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_http_mock(200, "new content", "new-etag")): + await fetcher.fetch("my-skill", skill_path) + assert (tmp_path / ".etag").read_text() == "new-etag" + + +class TestVersionCapability: + def test_is_skills_capable_none_returns_false(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import _is_skills_capable + + assert _is_skills_capable(None) is False + + def test_is_skills_capable_old_version_returns_false(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import _is_skills_capable + + assert _is_skills_capable("1.9.0") is False + + def test_is_skills_capable_min_version_returns_true(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import _is_skills_capable + + assert _is_skills_capable("2.0.0") is True + + def test_is_skills_capable_unparseable_returns_false(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import _is_skills_capable + + assert _is_skills_capable("invalid") is False + + def test_version_check_result_namedtuple(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import VersionCheckResult + + result = VersionCheckResult(reachable=True, version="2.0.0") + assert result.reachable is True + assert result.version == "2.0.0" + + +class TestCheckServerVersion: + async def test_connect_error_returns_unreachable(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import ( + SkillFetcher, + VersionCheckResult, + ) + + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_error_mock(httpx.ConnectError("refused"))): + result = await fetcher.check_server_version() + assert result == VersionCheckResult(reachable=False, version=None) + + async def test_404_returns_reachable_with_none_version(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import ( + SkillFetcher, + VersionCheckResult, + ) + + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_version_http_mock(404, {})): + result = await fetcher.check_server_version() + assert result == VersionCheckResult(reachable=True, version=None) + + async def test_200_with_version_returns_reachable_with_version(self) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import ( + SkillFetcher, + VersionCheckResult, + ) + + fetcher = SkillFetcher("http://localhost:8000") + with patch("httpx.AsyncClient", _make_version_http_mock(200, {"version": "2.0.0"})): + result = await fetcher.check_server_version() + assert result == VersionCheckResult(reachable=True, version="2.0.0") + + +class TestSkillFetcherAuth: + async def test_bearer_header_present_when_api_key_set(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000", api_key="secret-token") + mock_cls = _make_http_mock(200, "skill content", "") + with patch("httpx.AsyncClient", mock_cls): + await fetcher.fetch("my-skill", skill_path) + sent_headers = mock_cls.return_value.get.call_args.kwargs.get("headers", {}) + assert sent_headers.get("Authorization") == "Bearer secret-token" + + async def test_no_auth_header_when_api_key_absent(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + fetcher = SkillFetcher("http://localhost:8000") + mock_cls = _make_http_mock(200, "skill content", "") + with patch("httpx.AsyncClient", mock_cls): + await fetcher.fetch("my-skill", skill_path) + sent_headers = mock_cls.return_value.get.call_args.kwargs.get("headers", {}) + assert "Authorization" not in sent_headers + + async def test_auth_and_if_none_match_coexist(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import SkillFetcher + + skill_path = tmp_path / "SKILL.md" + content = b"# Existing skill content" + skill_path.write_bytes(content) + (tmp_path / ".content_hash").write_text(hashlib.sha256(content).hexdigest()) + (tmp_path / ".etag").write_text("stored-etag-value") + fetcher = SkillFetcher("http://localhost:8000", api_key="secret-token") + mock_cls = _make_http_mock(304, "", "") + with patch("httpx.AsyncClient", mock_cls): + await fetcher.fetch("my-skill", skill_path) + sent_headers = mock_cls.return_value.get.call_args.kwargs.get("headers", {}) + assert sent_headers.get("Authorization") == "Bearer secret-token" + assert sent_headers.get("If-None-Match") == "stored-etag-value" diff --git a/modules/tool-graph-query/tests/test_skill_sync.py b/modules/tool-graph-query/tests/test_skill_sync.py new file mode 100644 index 00000000..78d6faef --- /dev/null +++ b/modules/tool-graph-query/tests/test_skill_sync.py @@ -0,0 +1,442 @@ +"""Tests for skill_sync — offline integrity + per-skill sync helpers.""" + +from __future__ import annotations + +import hashlib +import logging +from pathlib import Path +from unittest.mock import AsyncMock, MagicMock, patch + + +class TestInvalidateIfDrift: + def test_drift_deletes_both_sidecars_keeps_content(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import _invalidate_if_drift + + skill = tmp_path / "SKILL.md" + skill.write_text("# drifted content") + etag = tmp_path / ".etag" + etag.write_text("etag-value") + chash = tmp_path / ".content_hash" + chash.write_text("0" * 64) # Does NOT match actual content -> drift + + _invalidate_if_drift("my-skill", skill, etag, chash) + + assert skill.exists(), "Content file must be retained" + assert not etag.exists(), ".etag sidecar must be deleted" + assert not chash.exists(), ".content_hash sidecar must be deleted" + + def test_match_is_noop(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import _invalidate_if_drift + + skill = tmp_path / "SKILL.md" + skill.write_text("# matching content") + etag = tmp_path / ".etag" + etag.write_text("etag-value") + chash = tmp_path / ".content_hash" + chash.write_text(hashlib.sha256(skill.read_bytes()).hexdigest()) # Matches -> in sync + + _invalidate_if_drift("my-skill", skill, etag, chash) + + assert skill.exists() + assert etag.exists(), ".etag must remain when hash matches" + assert chash.exists(), ".content_hash must remain when hash matches" + + def test_no_content_hash_sidecar_is_noop(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import _invalidate_if_drift + + skill = tmp_path / "SKILL.md" + skill.write_text("# some content") + etag = tmp_path / ".etag" + etag.write_text("etag-value") + # No .content_hash created — _invalidate_if_drift should return early + + _invalidate_if_drift("my-skill", skill, etag, tmp_path / ".content_hash") + + assert etag.exists(), ".etag must be untouched when no .content_hash present" + assert etag.read_text() == "etag-value" + + +class TestSyncSkill: + async def test_no_server_url_runs_offline_integrity_no_fetch(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import _sync_skill + + skill = tmp_path / "SKILL.md" + skill.write_text("# drifted content") + etag = tmp_path / ".etag" + etag.write_text("etag-value") + chash = tmp_path / ".content_hash" + chash.write_text("0" * 64) # Drift state — hash does not match + + with patch("amplifier_module_tool_graph_query.skill_sync.SkillFetcher") as mock_fetcher: + await _sync_skill("my-skill", skill, server_url=None, api_key=None) + + mock_fetcher.assert_not_called() + assert not etag.exists(), ".etag must be deleted (offline drift detected)" + assert not chash.exists(), ".content_hash must be deleted (offline drift detected)" + + async def test_unreachable_server_runs_offline_integrity_no_fetch(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import VersionCheckResult + from amplifier_module_tool_graph_query.skill_sync import _sync_skill + + skill = tmp_path / "SKILL.md" + skill.write_text("# drifted content") + etag = tmp_path / ".etag" + etag.write_text("etag-value") + chash = tmp_path / ".content_hash" + chash.write_text("0" * 64) # Drift state + + instance = MagicMock() + instance.check_server_version = AsyncMock( + return_value=VersionCheckResult(reachable=False, version=None) + ) + instance.fetch = AsyncMock() + + with patch( + "amplifier_module_tool_graph_query.skill_sync.SkillFetcher", + return_value=instance, + ): + await _sync_skill("my-skill", skill, server_url="http://down:9000", api_key=None) + + instance.fetch.assert_not_awaited() + assert not etag.exists(), ".etag must be deleted (unreachable server + drift)" + assert not chash.exists(), ".content_hash must be deleted (unreachable server + drift)" + + async def test_reachable_server_calls_fetch(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_fetcher import VersionCheckResult + from amplifier_module_tool_graph_query.skill_sync import _sync_skill + + skill = tmp_path / "SKILL.md" + skill.write_text("# content") + + instance = MagicMock() + instance.check_server_version = AsyncMock( + return_value=VersionCheckResult(reachable=True, version="2.0.0") + ) + instance.fetch = AsyncMock(return_value=True) + + with patch( + "amplifier_module_tool_graph_query.skill_sync.SkillFetcher", + return_value=instance, + ) as mock_fetcher_cls: + await _sync_skill("my-skill", skill, server_url="http://up:9000", api_key="k") + + mock_fetcher_cls.assert_called_once_with("http://up:9000", api_key="k") + instance.fetch.assert_awaited_once_with("my-skill", skill) + + +# ====================================================================== +# Helpers for on_session_ready tests +# ====================================================================== + + +def _make_tool(server_url: str, api_key: str = "k", workspace: str = "ws") -> MagicMock: + tool = MagicMock() + tool._resolve_server_config = MagicMock(return_value=(server_url, api_key, workspace)) + return tool + + +def _make_ready_coordinator( + skill_path: Path, + tool: MagicMock | None, + *, + discovery_present: bool = True, + find_returns_meta: bool = True, +) -> MagicMock: + discovery: MagicMock | None = None + if discovery_present: + discovery = MagicMock() + meta = MagicMock() + meta.path = skill_path + discovery.find = MagicMock(return_value=meta if find_returns_meta else None) + + caps: dict[str, object] = { + "skills_discovery": discovery, + "context_intelligence._graph_query_tool": tool, + } + + coord = MagicMock() + coord.get_capability = MagicMock(side_effect=lambda name: caps.get(name)) + coord.hooks = MagicMock() + coord.hooks.register = MagicMock(return_value=MagicMock()) + return coord + + +class TestOnSessionReadyHardGuards: + async def test_missing_discovery_capability_is_loud_noop(self, tmp_path: Path, caplog) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + tool = _make_tool("http://up:9000") + coord = _make_ready_coordinator(tmp_path / "SKILL.md", tool, discovery_present=False) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ) as mock_sync: + with caplog.at_level(logging.WARNING): + await on_session_ready(coord) + + mock_sync.assert_not_awaited() + assert any("skill_sync" in record.message for record in caplog.records) + + async def test_find_returns_none_is_loud_noop(self, tmp_path: Path, caplog) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + tool = _make_tool("http://up:9000") + coord = _make_ready_coordinator(tmp_path / "SKILL.md", tool, find_returns_meta=False) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ) as mock_sync: + with caplog.at_level(logging.WARNING): + await on_session_ready(coord) + + mock_sync.assert_not_awaited() + assert any("skill_sync" in record.message for record in caplog.records) + + +class TestOnSessionReadyOrchestration: + async def test_dispatches_sync_with_resolved_config(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + tool = _make_tool("http://up:9000", api_key="key-1", workspace="ws-1") + coord = _make_ready_coordinator(skill_path, tool) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ) as mock_sync: + await on_session_ready(coord) + + mock_sync.assert_awaited_once_with( + "context-intelligence-graph-query", skill_path, "http://up:9000", "key-1" + ) + + async def test_registers_skill_unloaded_handler(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + tool = _make_tool("http://up:9000") + coord = _make_ready_coordinator(skill_path, tool) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ): + await on_session_ready(coord) + + assert "skill:unloaded" in [c.args[0] for c in coord.hooks.register.call_args_list] + + +_STUB_BODY = ( + "---\nname: context-intelligence-graph-query\nversion: 2.0.0\n---\n\n" + "# Context Intelligence Graph Query — Server Unavailable\n\n" + "The context intelligence server is not reachable.\n" + "Delegate immediately to `session-navigator`. Do not attempt Cypher queries.\n" +) +_ETAG = ".etag" +_CHASH = ".content_hash" + + +def _write_stub(skill_path: Path) -> str: + skill_path.write_text(_STUB_BODY) + return hashlib.sha256(skill_path.read_bytes()).hexdigest() + + +class TestOnSessionReadySkillSyncDisabled: + """skill_sync_enabled=false gate at the top of on_session_ready. + + Disabled performs ZERO per-turn network and does NOT register the + skill:unloaded handler. But it must NOT strand a working graph-analyst on the + pessimistic "Server Unavailable" stub: + - server configured -> swap stub for the vendored real body (local copy) + - no server -> retain the stub (graph genuinely absent) + """ + + async def test_disabled_server_configured_swaps_in_vendored_body(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.bundled_skill import EXPECTED_BUNDLED_SKILL_SHA256 + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + _write_stub(skill_path) + tool = _make_tool("http://up:9000") + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + # ZERO network: SkillFetcher must never be constructed, _sync_skill never awaited. + with ( + patch("amplifier_module_tool_graph_query.skill_sync.SkillFetcher") as mock_fetcher, + patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ) as mock_sync, + ): + await on_session_ready(coord) + + mock_fetcher.assert_not_called() + mock_sync.assert_not_awaited() + # The pessimistic stub has been replaced by the vendored real body. + got = hashlib.sha256(skill_path.read_bytes()).hexdigest() + assert got == EXPECTED_BUNDLED_SKILL_SHA256 + assert "Server Unavailable" not in skill_path.read_text() + # No per-turn reload handler. + assert "skill:unloaded" not in [c.args[0] for c in coord.hooks.register.call_args_list] + + async def test_disabled_server_configured_removes_stale_etag_and_sets_hash( + self, tmp_path: Path + ) -> None: + from amplifier_module_tool_graph_query.bundled_skill import EXPECTED_BUNDLED_SKILL_SHA256 + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + _write_stub(skill_path) + # Seed a STALE etag + content_hash (left over from a prior server fetch). + (tmp_path / _ETAG).write_text('W/"stale-etag"') + (tmp_path / _CHASH).write_text("0" * 64) + tool = _make_tool("http://up:9000") + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + await on_session_ready(coord) + + # Stale etag removed (so a later re-enabled sync does a clean unconditional GET). + assert not (tmp_path / _ETAG).exists(), "stale .etag must be removed on vendored swap" + # content_hash now matches the vendored body. + assert (tmp_path / _CHASH).read_text().strip() == EXPECTED_BUNDLED_SKILL_SHA256 + + async def test_disabled_server_configured_idempotent_second_turn_no_rewrite( + self, tmp_path: Path + ) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + _write_stub(skill_path) + tool = _make_tool("http://up:9000") + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + await on_session_ready(coord) # turn 1 — writes vendored body + first_mtime = skill_path.stat().st_mtime_ns + await on_session_ready(coord) # turn 2 — content already correct + second_mtime = skill_path.stat().st_mtime_ns + + assert first_mtime == second_mtime, "idempotent: SKILL.md must not be rewritten on turn 2" + + async def test_disabled_rewrites_when_content_differs_by_trailing_newline( + self, tmp_path: Path + ) -> None: + # tester-breaker: idempotency must compare by sha256, not eyeballing. A + # one-byte difference (extra trailing newline) is NOT the vendored body + # and must be normalized back to it. + from amplifier_module_tool_graph_query.bundled_skill import EXPECTED_BUNDLED_SKILL_SHA256 + from amplifier_module_tool_graph_query.skill_sync import _vendored_body, on_session_ready + + skill_path = tmp_path / "SKILL.md" + body = _vendored_body("context-intelligence-graph-query") + assert body is not None + skill_path.write_text(body + "\n") # differs by one trailing newline + tool = _make_tool("http://up:9000") + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + await on_session_ready(coord) + + got = hashlib.sha256(skill_path.read_bytes()).hexdigest() + assert got == EXPECTED_BUNDLED_SKILL_SHA256 + + async def test_disabled_no_server_retains_stub(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + stub_hash = _write_stub(skill_path) + tool = _make_tool("") # no server configured + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + with patch("amplifier_module_tool_graph_query.skill_sync.SkillFetcher") as mock_fetcher: + await on_session_ready(coord) + + mock_fetcher.assert_not_called() + assert hashlib.sha256(skill_path.read_bytes()).hexdigest() == stub_hash, ( + "no server -> the 'Server Unavailable' stub must be retained untouched" + ) + assert "skill:unloaded" not in [c.args[0] for c in coord.hooks.register.call_args_list] + + async def test_disabled_missing_vendored_body_fails_loud_and_leaves_file( + self, tmp_path: Path, caplog + ) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + stub_hash = _write_stub(skill_path) + tool = _make_tool("http://up:9000") + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._vendored_body", + return_value=None, + ): + with caplog.at_level(logging.ERROR): + await on_session_ready(coord) + + # Fail loud + leave the on-disk file untouched (never a silent wrong result). + assert any("skill_swap_unavailable" in r.message for r in caplog.records) + assert hashlib.sha256(skill_path.read_bytes()).hexdigest() == stub_hash + + async def test_disabled_emits_legible_info_signal(self, tmp_path: Path, caplog) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + _write_stub(skill_path) + tool = _make_tool("http://up:9000") + tool.skill_sync_enabled = False + coord = _make_ready_coordinator(skill_path, tool) + + with caplog.at_level(logging.INFO): + await on_session_ready(coord) + + assert any("skill_sync_disabled" in record.message for record in caplog.records), ( + "disabled gate must log a legible INFO signal" + ) + + async def test_enabled_explicit_true_still_syncs(self, tmp_path: Path) -> None: + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + tool = _make_tool("http://up:9000", api_key="key-1", workspace="ws-1") + tool.skill_sync_enabled = True + coord = _make_ready_coordinator(skill_path, tool) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ) as mock_sync: + await on_session_ready(coord) + + mock_sync.assert_awaited_once_with( + "context-intelligence-graph-query", skill_path, "http://up:9000", "key-1" + ) + # Enabled path registers the reload handler. + assert "skill:unloaded" in [c.args[0] for c in coord.hooks.register.call_args_list] + + async def test_tool_absent_falls_through_to_offline_path(self, tmp_path: Path) -> None: + # Gate only fires when tool is present AND disabled. With no tool the + # existing offline-integrity path must run unchanged (server_url None). + from amplifier_module_tool_graph_query.skill_sync import on_session_ready + + skill_path = tmp_path / "SKILL.md" + coord = _make_ready_coordinator(skill_path, tool=None) + + with patch( + "amplifier_module_tool_graph_query.skill_sync._sync_skill", + new_callable=AsyncMock, + ) as mock_sync: + await on_session_ready(coord) + + mock_sync.assert_awaited_once_with( + "context-intelligence-graph-query", skill_path, None, None + ) + registered_events = [c.args[0] for c in coord.hooks.register.call_args_list] + assert "skill:unloaded" in registered_events diff --git a/modules/tool-graph-query/uv.lock b/modules/tool-graph-query/uv.lock index 8d2a6e23..b7a8387a 100644 --- a/modules/tool-graph-query/uv.lock +++ b/modules/tool-graph-query/uv.lock @@ -5,25 +5,12 @@ requires-python = ">=3.11" [[package]] name = "amplifier-bundle-context-intelligence" version = "0.1.1" -source = { editable = "../../" } - -[package.metadata] - -[package.metadata.requires-dev] -dev = [ - { name = "httpx", specifier = ">=0.25" }, - { name = "idna", specifier = ">=3.15" }, - { name = "pyright", specifier = ">=1.1" }, - { name = "pytest", specifier = ">=9.0.3" }, - { name = "pytest-asyncio", specifier = ">=0.24" }, - { name = "pyyaml", specifier = ">=6.0" }, - { name = "ruff", specifier = ">=0.4" }, -] +source = { git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main#5509b397eb61054039ba2e62a1e898be4b1d5519" } [[package]] name = "amplifier-core" -version = "1.2.4" -source = { git = "https://github.com/microsoft/amplifier-core?branch=main#7a99cbbcb6b191872e9ffd5cf4beed18a59511c2" } +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "pydantic" }, @@ -31,6 +18,14 @@ dependencies = [ { name = "tomli" }, { name = "typing-extensions" }, ] +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/90/d520390cd91aae3d02db53653f828046089c79203dbb142e9bda346fa1d6/amplifier_core-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d35130e4262cf0db2d6c5f7e65e244a9ef2c7397bfe2a9853bc9b0d9fd05be64", size = 8113151, upload-time = "2026-05-18T16:13:46.825Z" }, + { url = "https://files.pythonhosted.org/packages/94/75/3ab3126ba5a6f2fc6051a4d08e42364899e4c9ac4daa9d0a60947bf8acd1/amplifier_core-1.6.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:387a2c58fcf4caefdb45c52ec228307bc225e73606897f242154782bc3e123da", size = 7268223, upload-time = "2026-05-18T16:13:48.749Z" }, + { url = "https://files.pythonhosted.org/packages/21/22/5a36160b3487170bcba0cbc61535101ff624e8314ed38fd35e561cb711a1/amplifier_core-1.6.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8344fccdedd725a51c018de17867cdf1c35abb571dabc0bbccdb5c1242324a47", size = 7532259, upload-time = "2026-05-18T16:13:50.614Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d7/3874c2308523209411367cf3b8b690e14e869f5f6bfb64cb1b1971e06a96/amplifier_core-1.6.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a8e0103242a2e2a975c880b1de0e5a02501e0421c1e5386dadae3f111e1d2b5", size = 8507642, upload-time = "2026-05-18T16:13:52.977Z" }, + { url = "https://files.pythonhosted.org/packages/86/59/3646a89537b4556274183519f6db9c354fb3d183f52ef4a2179af12dd386/amplifier_core-1.6.0-cp311-abi3-win_amd64.whl", hash = "sha256:5113aa2d88038776eb257af9e7d9de7af13b3cd9097d2ac67aef5730fa0678e3", size = 8910313, upload-time = "2026-05-18T16:13:55.249Z" }, + { url = "https://files.pythonhosted.org/packages/9f/9e/58b141115e5eea65703f0b01459eefed36b561e9642ba96d48542345cd8f/amplifier_core-1.6.0-cp311-abi3-win_arm64.whl", hash = "sha256:e1b2731dc09d1cbc668b411007e7f9a2c7edbd75b2525407cae1e6b4a4de0b83", size = 7661416, upload-time = "2026-05-18T16:13:57.513Z" }, +] [[package]] name = "amplifier-module-tool-graph-query" @@ -53,14 +48,14 @@ dev = [ [package.metadata] requires-dist = [ - { name = "amplifier-bundle-context-intelligence", editable = "../../" }, + { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "idna", specifier = ">=3.15" }, ] [package.metadata.requires-dev] dev = [ - { name = "amplifier-core", git = "https://github.com/microsoft/amplifier-core?branch=main" }, + { name = "amplifier-core", specifier = ">=1.6.0" }, { name = "pyright", specifier = ">=1.1" }, { name = "pytest", specifier = ">=9.0.3" }, { name = "pytest-asyncio", specifier = ">=0.24" }, From 54b6f99036575944e515a57b0215c7f9746be35e Mon Sep 17 00:00:00 2001 From: colombod Date: Sun, 21 Jun 2026 22:01:01 +0000 Subject: [PATCH 3/3] test+docs+behaviors: layered behaviors, DTU profiles, skill-sync flow diagram, README/AGENTS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Layered context-intelligence behaviors (navigation/analysis/design/logging/ umbrella), DTU behavioral + standalone-install + skill-sync-disabled profiles, skill-sync-from-server flow DOT/PNG, and README/AGENTS updates documenting the skill_sync_enabled knob, the vendored-swap tradeoff, and the layered-behavior selection story. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- .../profiles/ci-bundle-smoke-test.yaml | 144 ---- ...-intelligence-analyst-behavioral-test.yaml | 451 +++++++++++++ ...ontext-intelligence-bundle-smoke-test.yaml | 169 +++++ ...ext-intelligence-hook-behavioral-test.yaml | 391 +++++++++++ ...-intelligence-logging-behavioral-test.yaml | 342 ++++++++++ ...text-intelligence-signals-validation.yaml} | 24 +- ...e-skill-sync-disabled-behavioral-test.yaml | 246 +++++++ ...-intelligence-standalone-install-test.yaml | 94 +++ .github/workflows/ci.yml | 13 +- AGENTS.md | 137 ++++ README.md | 129 +++- agents/graph-analyst.md | 12 +- agents/session-navigator.md | 38 +- behaviors/context-intelligence-analysis.yaml | 26 + behaviors/context-intelligence-design.yaml | 27 + behaviors/context-intelligence-logging.yaml | 34 + .../context-intelligence-navigation.yaml | 20 + behaviors/context-intelligence.yaml | 69 +- bundle.dot | 14 +- bundle.png | Bin 113846 -> 146541 bytes context/config-resolution.dot | 6 +- context/dual-path-library-template.md | 2 +- docs/context-intelligence-skill-sync-flow.dot | 616 ++++++++++++++++++ docs/context-intelligence-skill-sync-flow.png | Bin 0 -> 752600 bytes docs/logging-handler-flow.dot | 4 +- docs/logging-handler-flow.png | Bin 0 -> 420325 bytes .../__init__.py | 13 +- .../blob_read_tool.py | 49 +- modules/tool-blob-read/pyproject.toml | 11 +- .../tests/test_blob_read_tool.py | 110 +++- modules/tool-blob-read/tests/test_mount.py | 13 + modules/tool-blob-read/uv.lock | 31 +- .../uploader.py | 2 +- .../pyproject.toml | 2 +- .../tool-context-intelligence-upload/uv.lock | 8 +- .../SKILL.md | 2 +- 36 files changed, 2946 insertions(+), 303 deletions(-) delete mode 100644 .amplifier/digital-twin-universe/profiles/ci-bundle-smoke-test.yaml create mode 100644 .amplifier/digital-twin-universe/profiles/context-intelligence-analyst-behavioral-test.yaml create mode 100644 .amplifier/digital-twin-universe/profiles/context-intelligence-bundle-smoke-test.yaml create mode 100644 .amplifier/digital-twin-universe/profiles/context-intelligence-hook-behavioral-test.yaml create mode 100644 .amplifier/digital-twin-universe/profiles/context-intelligence-logging-behavioral-test.yaml rename .amplifier/digital-twin-universe/profiles/{ci-signals-validation.yaml => context-intelligence-signals-validation.yaml} (91%) create mode 100644 .amplifier/digital-twin-universe/profiles/context-intelligence-skill-sync-disabled-behavioral-test.yaml create mode 100644 .amplifier/digital-twin-universe/profiles/context-intelligence-standalone-install-test.yaml create mode 100644 AGENTS.md create mode 100644 behaviors/context-intelligence-analysis.yaml create mode 100644 behaviors/context-intelligence-design.yaml create mode 100644 behaviors/context-intelligence-logging.yaml create mode 100644 behaviors/context-intelligence-navigation.yaml create mode 100644 docs/context-intelligence-skill-sync-flow.dot create mode 100644 docs/context-intelligence-skill-sync-flow.png create mode 100644 docs/logging-handler-flow.png diff --git a/.amplifier/digital-twin-universe/profiles/ci-bundle-smoke-test.yaml b/.amplifier/digital-twin-universe/profiles/ci-bundle-smoke-test.yaml deleted file mode 100644 index e218c77e..00000000 --- a/.amplifier/digital-twin-universe/profiles/ci-bundle-smoke-test.yaml +++ /dev/null @@ -1,144 +0,0 @@ -# Smoke-test profile for amplifier-bundle-context-intelligence -# -# Tests: library imports, CLI tools, hook ConfigResolver, and Amplifier -# bundle loading. Does NOT require an external CI server. -# -# Usage: -# export GH_TOKEN=$(gh auth token) -# amplifier-digital-twin launch .amplifier/digital-twin-universe/profiles/ci-bundle-smoke-test.yaml \ -# --name ci-bundle-smoke-test -name: ci-bundle-smoke-test -description: > - Smoke test for the context-intelligence bundle. Validates library imports, - upload CLI, hook additional_events config, and Amplifier bundle loading. - -base: - image: ubuntu:24.04 - -passthrough: - allow_external: true - services: - - name: anthropic - key_env: ANTHROPIC_API_KEY - - name: github - key_env: GH_TOKEN - -provision: - setup_cmds: - # System dependencies - - apt-get update && apt-get install -y git curl python3 python3-venv - - # Install uv - - curl -LsSf https://astral.sh/uv/install.sh | sh - - # Configure git credentials for private GitHub repos - - | - if [ -n "$GH_TOKEN" ]; then - echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc - chmod 600 /root/.netrc - git config --global credential.helper 'store' - fi - - # Clone the bundle (HEAD of main) - - | - export PATH="/root/.local/bin:$PATH" - git clone --depth 1 https://github.com/microsoft/amplifier-bundle-context-intelligence.git /opt/ci-bundle - - # Create a venv and install packages in dependency order. - # Ubuntu 24.04 marks system Python as externally managed (PEP 668), - # so we use a dedicated virtualenv for the smoke-test packages. - - | - export PATH="/root/.local/bin:$PATH" - uv venv /opt/venv --python python3 - export VIRTUAL_ENV=/opt/venv - export PATH="/opt/venv/bin:$PATH" - uv pip install /opt/ci-bundle/ - uv pip install "httpx>=0.28.1" - uv pip install --no-deps /opt/ci-bundle/modules/hook-context-intelligence/ - uv pip install --no-deps /opt/ci-bundle/modules/tool-context-intelligence-upload/ - - # Quick sanity — library importable? - - /opt/venv/bin/python3 -c "from context_intelligence.config import resolve_config; print('context_intelligence importable')" - - # Install Amplifier itself (uv tool uses its own isolated venv) - - | - export PATH="/root/.local/bin:$PATH" - uv tool install git+https://github.com/microsoft/amplifier@main - - # Configure Amplifier provider - - | - mkdir -p /root/.amplifier - cat > /root/.amplifier/settings.yaml << 'EOF' - config: - providers: - - module: provider-anthropic - source: git+https://github.com/microsoft/amplifier-module-provider-anthropic@main - config: - api_key_env: ANTHROPIC_API_KEY - EOF - - # Add the context-intelligence bundle to Amplifier - - | - export PATH="/root/.local/bin:$PATH" - amplifier bundle add git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main --app - - # Verify Amplifier is working - - | - export PATH="/root/.local/bin:$PATH" - amplifier --version - - # Persist PATH for interactive shells and exec commands - - | - echo 'export PATH="/opt/venv/bin:/root/.local/bin:$PATH"' >> /root/.bashrc - echo 'export VIRTUAL_ENV=/opt/venv' >> /root/.bashrc - echo 'PATH=/opt/venv/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/environment - echo 'VIRTUAL_ENV=/opt/venv' >> /etc/environment - - # Workspace for the user - - mkdir -p /home/user/project - -readiness: - - name: library-check - command: "/opt/venv/bin/python3 -c \"from context_intelligence.client import AsyncCIClient; print('ready')\"" - -validation_cmds: - # Install the stub event contributor fixture module from the local bundle - - name: install-stub-module - command: | - export PATH="/opt/venv/bin:/root/.local/bin:$PATH" - export VIRTUAL_ENV=/opt/venv - uv pip install --no-deps /opt/ci-bundle/modules/hook-context-intelligence/tests/dtu/fixtures/stub-event-contributor/ - - # Run a short session that exercises the on_session_ready path. - # The stub-event-contributor module contributes its event AFTER the hook - # mounts (because tool modules mount before hook modules in Amplifier). - # on_session_ready() must pick it up and write it to events.jsonl. - - name: run-session-with-stub-module - command: | - export PATH="/root/.local/bin:$PATH" - mkdir -p /tmp/ci-validation-project - cd /tmp/ci-validation-project - amplifier run \ - --module stub-event-contributor \ - "Say hello in one word." \ - --max-turns 1 \ - 2>&1 | tee /tmp/session-output.log - echo "Session completed" - - # Assert the stub event appears in events.jsonl - - name: verify-stub-event-in-jsonl - command: | - set -e - EVENTS_FILE=$(find /root/.amplifier/projects -name "events.jsonl" -newer /tmp/session-output.log | head -1) - if [ -z "$EVENTS_FILE" ]; then - echo "FAIL: No events.jsonl found after session" - exit 1 - fi - if grep -q "stub-event-contributor:test-event" "$EVENTS_FILE"; then - echo "PASS: stub-event-contributor:test-event found in $EVENTS_FILE" - else - echo "FAIL: stub-event-contributor:test-event NOT found in $EVENTS_FILE" - echo "Events found:" - cat "$EVENTS_FILE" | python3 -c "import sys,json; [print(json.loads(l).get('event','?')) for l in sys.stdin]" - exit 1 - fi diff --git a/.amplifier/digital-twin-universe/profiles/context-intelligence-analyst-behavioral-test.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-analyst-behavioral-test.yaml new file mode 100644 index 00000000..560077dd --- /dev/null +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-analyst-behavioral-test.yaml @@ -0,0 +1,451 @@ +# ============================================================================ +# BEHAVIORAL TEST PROFILE 2 of 2 -- ANALYST MODE +# ============================================================================ +# +# GOAL +# Deep, evidence-based proof that a FRESH Amplifier session, with the +# context-intelligence bundle installed in its ANALYTICS-ONLY behavior, +# provides graph/session analysis capabilities WITHOUT instrumenting the +# session (NO event-capture hook), and that the graph-analyst correctly +# falls back to local JSONL extraction when no CI server is reachable. +# +# WHAT "WORKS AS EXPECTED" MEANS HERE +# The read/query-only DESIGN behavior (behaviors/context-intelligence-design.yaml) +# composes the graph-analyst + session-navigator agents, the +# context-intelligence design MODE, tool-delegate, and tool-skills (5 general +# skills) -- but NOT the hook-context-intelligence module. Installed via +# `amplifier bundle add @main#subdirectory=behaviors/context-intelligence-design.yaml --app`. +# Therefore: +# * No new session writes a context-intelligence/events.jsonl (no hook). +# * graph-analyst is the mandatory entry point; it checks server +# availability and, when unreachable / 0 sessions, falls back to +# session-navigator which reads local JSONL via bash/jq. +# * Design-mode agents (context-intelligence-design-facilitator, +# context-intelligence-tool-designer) are MODE-GATED and must NOT be +# present while the context-intelligence mode is inactive. +# +# A seeded FIXTURE session (containing a recognizable "fixture_marker_tool" +# event) gives the analyst path real local data to read, proving the +# server-unreachable -> session-navigator -> local-extraction fallback works. +# +# ASSERTIONS (each validation_cmd prints PASS/FAIL and exits non-zero on FAIL) +# A1 Hook is ABSENT: after running an analytics session, NO new +# context-intelligence/events.jsonl is created for that new session +# (only the seeded fixture dir exists). Proof analytics-only has no hook. +# A2 Agents available: `amplifier agents list` shows graph-analyst AND +# session-navigator. +# A3 Mode-gating: design-mode agents context-intelligence-design-facilitator +# and context-intelligence-tool-designer are NOT listed while the +# context-intelligence mode is inactive. +# A4 End-to-end analyst behavior with no server: graph-analyst detects the +# server is unreachable, FALLS BACK to session-navigator, reads the +# seeded fixture JSONL, and the output references the fixture (mentions +# fixture_marker_tool or the correct session count). +# +# LOCAL-BRANCH UNDER TEST +# Source of truth is the local working branch of the +# amplifier-bundle-context-intelligence submodule, mirrored to Gitea (see +# the MANDATORY url_rewrites block below). NOT GitHub @main. +# +# USAGE +# amplifier-digital-twin launch \ +# .amplifier/digital-twin-universe/profiles/context-intelligence-analyst-behavioral-test.yaml \ +# --var GITEA_URL=http://: \ +# --var GITEA_TOKEN= \ +# --name context-intelligence-analyst-behavioral-test +# ============================================================================ + +name: context-intelligence-analyst-behavioral-test +description: > + ANALYST MODE behavioral test for the context-intelligence bundle (local branch + via Gitea). Installs the ANALYTICS-ONLY behavior (no hook), seeds a fixture + session, and asserts: no hook instrumentation, graph-analyst + session-navigator + present, design-mode agents gated out, and graph-analyst falls back to local + JSONL extraction when no CI server is reachable. + +base: + image: ubuntu:24.04 + +# MANDATORY: Gitea URL rewrite for local branch skill resolution. +# The bundle ships skills with a git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills source in behaviors/context-intelligence.yaml. +# When running in DTU, local working branch is source of truth -- NOT GitHub @main. Without rewrite, skill registration inside DTU fetches from GitHub @main and silently runs stale code, producing test results that do not reflect local changes. +# The digital-twin-universe:dtu-profile-builder agent mirrors the local amplifier-bundle-context-intelligence submodule to Gitea on current branch. These rewrites point every reference at that mirror. +# url_rewrites: +# - from: "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main" +# to: "git+http://{gitea_host}/microsoft/amplifier-bundle-context-intelligence@main" +# +# Implemented below using the functional DTU url_rewrites schema (auth + rules +# with boundary match). The mitmproxy rewrite redirects EVERY reference to +# github.com/microsoft/amplifier-bundle-context-intelligence (the analytics +# behavior subdirectory AND the 5 #subdirectory=skills/* skill sources declared +# in behaviors/context-intelligence-design.yaml) to the Gitea mirror +# admin/amplifier-bundle-context-intelligence, whose `main` branch holds the +# local working-tree snapshot. {gitea_host} is supplied at launch via +# --var GITEA_URL (resolved to the Gitea mirror reachable from inside the DTU). +url_rewrites: + auth: + username: admin + token_var: GITEA_TOKEN + default_match_mode: boundary + rules: + - match: github.com/microsoft/amplifier-bundle-context-intelligence + target: ${GITEA_URL}/admin/amplifier-bundle-context-intelligence + +passthrough: + allow_external: true + services: + - name: anthropic + key_env: ANTHROPIC_API_KEY + - name: github + key_env: GH_TOKEN + +provision: + setup_cmds: + # System dependencies (jq + python3 used by the assertions below) + - apt-get update && apt-get install -y git curl python3 jq + + # Install uv + - curl -LsSf https://astral.sh/uv/install.sh | sh + + # Configure git credentials for GitHub (transitive public deps; harmless if unset) + - | + if [ -n "$GH_TOKEN" ]; then + echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc + chmod 600 /root/.netrc + git config --global credential.helper 'store' + fi + + # Install Amplifier itself + - uv tool install git+https://github.com/microsoft/amplifier@main + + # Configure Amplifier provider (anthropic only -- minimal, matches smoke test) + - | + mkdir -p /root/.amplifier + cat > /root/.amplifier/settings.yaml << 'EOF' + config: + providers: + - module: provider-anthropic + source: git+https://github.com/microsoft/amplifier-module-provider-anthropic@main + config: + api_key_env: ANTHROPIC_API_KEY + EOF + + # Install the read/query-only DESIGN behavior (NO hook). + # url_rewrites redirects this @main reference to the Gitea mirror (local branch). + - amplifier bundle add 'git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence-design.yaml' --app + + # Sanity: Amplifier is working and the analytics behavior is registered + - amplifier --version + - amplifier bundle list + + # ------------------------------------------------------------------ + # SEED a fixture local session so the analyst path has real data to read. + # Layout: ~/.amplifier/projects//sessions//context-intelligence/ + # Contains valid envelope lines incl. a recognizable "fixture_marker_tool" + # tool event, plus a matching metadata.json with all required fields. + # This dir is created at PROVISION time (before any validation marker), so + # A1's "no NEW events.jsonl" check correctly ignores it. + # ------------------------------------------------------------------ + - | + FIX=/root/.amplifier/projects/fixture-proj/sessions/fixture-0001/context-intelligence + mkdir -p "$FIX" + cat > "$FIX/events.jsonl" << 'EOF' + {"event":"session.started","workspace":"fixture-proj","timestamp":"2026-01-01T00:00:00Z","data":{"session_id":"fixture-0001"}} + {"event":"provider.request","workspace":"fixture-proj","timestamp":"2026-01-01T00:00:01Z","data":{"model":"claude-sonnet"}} + {"event":"tool.called","workspace":"fixture-proj","timestamp":"2026-01-01T00:00:02Z","data":{"tool":"fixture_marker_tool","args":{"probe":"deep-evidence"}}} + {"event":"provider.response","workspace":"fixture-proj","timestamp":"2026-01-01T00:00:03Z","data":{"tokens":42}} + {"event":"session.completed","workspace":"fixture-proj","timestamp":"2026-01-01T00:00:04Z","data":{"status":"ok"}} + EOF + cat > "$FIX/metadata.json" << 'EOF' + { + "format": "context-intelligence-events", + "version": "1", + "session_id": "fixture-0001", + "workspace": "fixture-proj", + "started_at": "2026-01-01T00:00:00Z", + "last_event_at": "2026-01-01T00:00:04Z", + "status": "completed", + "working_dir": "/tmp/fixture-proj" + } + EOF + echo "Seeded fixture session at $FIX" + ls -la "$FIX" + + # Snapshot the set of events.jsonl present AFTER seeding, BEFORE any test + # session. A1 compares against this baseline to prove no hook fired. + - find /root/.amplifier/projects -path '*context-intelligence/events.jsonl' | sort > /tmp/jsonl-baseline.txt + - mkdir -p /tmp/analyst-proj + +readiness: + - name: amplifier-installed + command: amplifier --version + +validation_cmds: + # ---------------------------------------------------------------------- + # A2: graph-analyst AND session-navigator are COMPOSED into the session. + # + # METHODOLOGY: `amplifier agents show` reports the GLOBAL agent catalog (every + # agent .md in any cached bundle), not what was composed -- so it cannot prove + # composition. Analytics-only ships NO context-intelligence hook, so there is + # no context-intelligence/events.jsonl to read. We instead read the FOUNDATION + # generic event logger (hooks-logging) at sessions//events.jsonl, which + # captures the same session:config event, and assert data.raw.agents contains + # both analytics agents AND that the context-intelligence hook is ABSENT. + # (A4 below provides the stronger runtime proof via actual delegation.) + # ---------------------------------------------------------------------- + - name: A2-agents-composed + command: | + set -e + mkdir -p /tmp/a2-proj && cd /tmp/a2-proj + SID=$(amplifier run "Say hello in one word." --mode single 2>&1 | tee /tmp/a2.log | grep -oE 'Session ID: [0-9a-f-]+' | awk '{print $3}') + echo "session: $SID" + GEN=$(find /root/.amplifier/projects -path "*/sessions/$SID/events.jsonl" 2>/dev/null | head -1) + if [ -z "$GEN" ]; then echo "FAIL[A2]: no generic session log found for $SID"; exit 1; fi + echo "generic session log: $GEN" + python3 - "$GEN" << 'PY' + import json, sys + cfg = None + for l in open(sys.argv[1]): + l = l.strip() + if not l: + continue + try: + o = json.loads(l) + except Exception: + continue + if o.get("event") == "session:config": + cfg = o["data"]["raw"] + if not cfg: + print("FAIL[A2]: no session:config captured"); sys.exit(1) + agents = list((cfg.get("agents") or {}).keys()) + hook_mods = [h.get("module") for h in (cfg.get("hooks") or [])] + ga = [a for a in agents if "graph-analyst" in a] + sn = [a for a in agents if "session-navigator" in a] + context_intelligence_hook = [m for m in hook_mods if m and "context-intelligence" in m] + if not ga or not sn: + print("FAIL[A2]: analytics agents missing -- graph-analyst:", ga or "ABSENT", "session-navigator:", sn or "ABSENT"); sys.exit(1) + if context_intelligence_hook: + print("FAIL[A2]: context-intelligence hook present in analytics-only mode:", context_intelligence_hook); sys.exit(1) + print("PASS[A2]: analytics agents composed -- graph-analyst", ga, "AND session-navigator", sn, "; context-intelligence hook ABSENT (correct)") + PY + + # ---------------------------------------------------------------------- + # A3: design-mode agents are GATED behind the context-intelligence MODE, + # proven by COMPOSED SESSION inspection (not by grepping cached YAML). + # + # In a default (mode-inactive) session composed from the design behavior, + # session:config.raw.agents MUST contain graph-analyst + session-navigator + # (reachable transitively via the analysis -> navigation layers) and MUST + # NOT contain the design-mode agents (context-intelligence-design-facilitator, + # context-intelligence-tool-designer) -- those are contributed ONLY by the + # context-intelligence mode and appear only after the mode is activated. + # ---------------------------------------------------------------------- + - name: A3-mode-gating-composed + command: | + set -e + mkdir -p /tmp/a3-proj && cd /tmp/a3-proj + SID=$(amplifier run "Say hello in one word." --mode single 2>&1 | tee /tmp/a3.log | grep -oE 'Session ID: [0-9a-f-]+' | awk '{print $3}') + echo "session: $SID" + GEN=$(find /root/.amplifier/projects -path "*/sessions/$SID/events.jsonl" 2>/dev/null | head -1) + if [ -z "$GEN" ]; then echo "FAIL[A3]: no generic session log for $SID"; exit 1; fi + python3 - "$GEN" << 'PY' + import json, sys + cfg = None + for line in open(sys.argv[1]): + line = line.strip() + if not line: + continue + try: + o = json.loads(line) + except Exception: + continue + if o.get("event") == "session:config": + cfg = o["data"]["raw"] + if not cfg: + print("FAIL[A3]: no session:config captured"); sys.exit(1) + agents = list((cfg.get("agents") or {}).keys()) + analyst = [a for a in agents if "graph-analyst" in a or "session-navigator" in a] + design = [a for a in agents if "design-facilitator" in a or "tool-designer" in a] + if not analyst: + print("FAIL[A3]: analyst agents missing from composed session:", agents); sys.exit(1) + if design: + print("FAIL[A3]: design-mode agents present while mode INACTIVE (gating broken):", design); sys.exit(1) + print("PASS[A3]: composed session has analyst agents", analyst, "and design-mode agents are ABSENT (mode-gated) ->", design or "none") + PY + + # ---------------------------------------------------------------------- + # A1: hook ABSENT -- run an analytics session, assert NO new events.jsonl + # ---------------------------------------------------------------------- + - name: A1-hook-absent + command: | + set -e + mkdir -p /tmp/analyst-proj + cd /tmp/analyst-proj + touch /tmp/analyst-marker + sleep 1 + amplifier run "Say hello in one word." --mode single 2>&1 | tee /tmp/analyst-trivial.log + # Any events.jsonl newer than the marker would mean a hook fired -> FAIL + NEW=$(find /root/.amplifier/projects -path '*context-intelligence/events.jsonl' -newer /tmp/analyst-marker 2>/dev/null) + if [ -n "$NEW" ]; then + echo "FAIL[A1]: a hook fired -- new events.jsonl created in analytics-only mode:" + echo "$NEW" + exit 1 + fi + # Also confirm the events.jsonl set is unchanged from the seeded baseline + find /root/.amplifier/projects -path '*context-intelligence/events.jsonl' | sort > /tmp/jsonl-after.txt + if ! diff -q /tmp/jsonl-baseline.txt /tmp/jsonl-after.txt >/dev/null; then + echo "FAIL[A1]: events.jsonl set changed after analytics session" + diff /tmp/jsonl-baseline.txt /tmp/jsonl-after.txt || true + exit 1 + fi + echo "PASS[A1]: no hook -- analytics session created NO new events.jsonl (only seeded fixture present)" + + # ---------------------------------------------------------------------- + # A4: graph-analyst -> session-navigator local-extraction fallback (no server) + # ---------------------------------------------------------------------- + - name: A4-analyst-fallback-local-extraction + command: | + set -e + mkdir -p /tmp/analyst-proj + cd /tmp/analyst-proj + amplifier run "Use the graph-analyst to tell me how many context-intelligence sessions exist on disk and name any tool that was used in them. Report the exact tool name." \ + --mode single 2>&1 | tee /tmp/analyst-query.log + echo "----- checking output for fixture evidence -----" + if grep -qi "fixture_marker_tool" /tmp/analyst-query.log; then + echo "PASS[A4]: graph-analyst fell back to local extraction and surfaced the fixture marker tool 'fixture_marker_tool'" + exit 0 + fi + # Secondary acceptance: correct session count (exactly 1 fixture session) + if grep -qiE '\b(1|one)\b[^.]*session' /tmp/analyst-query.log; then + echo "PASS[A4]: graph-analyst fell back to local extraction and reported the correct session count (1)" + exit 0 + fi + echo "FAIL[A4]: analyst output did not reference the fixture (no 'fixture_marker_tool' and no correct session count)" + echo "--- analyst output tail ---" + tail -40 /tmp/analyst-query.log + exit 1 + + # ---------------------------------------------------------------------- + # A5: ZERO always-on awareness. The composed default session must not load + # any context-intelligence awareness file into always-on context. We inspect + # session:config.raw.context and assert none of the (now deleted) awareness + # filenames appear. + # ---------------------------------------------------------------------- + - name: A5-zero-always-on-awareness + command: | + set -e + mkdir -p /tmp/a5-proj && cd /tmp/a5-proj + SID=$(amplifier run "Say hello in one word." --mode single 2>&1 | tee /tmp/a5.log | grep -oE 'Session ID: [0-9a-f-]+' | awk '{print $3}') + GEN=$(find /root/.amplifier/projects -path "*/sessions/$SID/events.jsonl" 2>/dev/null | head -1) + if [ -z "$GEN" ]; then echo "FAIL[A5]: no generic session log for $SID"; exit 1; fi + python3 - "$GEN" << 'PY' + import json, sys + cfg = None + for line in open(sys.argv[1]): + line = line.strip() + if not line: + continue + try: + o = json.loads(line) + except Exception: + continue + if o.get("event") == "session:config": + cfg = o["data"]["raw"] + if not cfg: + print("FAIL[A5]: no session:config captured"); sys.exit(1) + blob = json.dumps(cfg.get("context") or cfg) + banned = [ + "context-intelligence-awareness.md", + "context-intelligence-navigation-awareness.md", + "context-intelligence-graph-awareness.md", + ] + hits = [b for b in banned if b in blob] + if hits: + print("FAIL[A5]: always-on awareness file(s) present in composed context:", hits); sys.exit(1) + print("PASS[A5]: zero always-on awareness -- none of", banned, "are in the composed session context") + PY + + # ---------------------------------------------------------------------- + # A6: mode registration. The design behavior registers the context-intelligence + # mode via hooks-mode search_paths. Prove it with a live `amplifier mode list`. + # ---------------------------------------------------------------------- + - name: A6-mode-registered + command: | + set -e + mkdir -p /tmp/a6 && cd /tmp/a6 + SID=$(amplifier run "Call the mode tool exactly once with operation=set and name=context-intelligence. Report the raw result." \ + --mode single 2>&1 | tee /tmp/a6.log | grep -oE 'Session ID: [0-9a-f-]+' | awk '{print $3}') + echo "session: $SID" + GEN=$(find /root/.amplifier/projects -path "*/sessions/$SID/events.jsonl" 2>/dev/null | head -1) + if [ -z "$GEN" ]; then echo "FAIL[A6]: no session log for $SID"; exit 1; fi + python3 - "$GEN" << 'PY' + import json, sys + recognized = False; unknown = False; detail = None + for l in open(sys.argv[1]): + l = l.strip() + if not l: continue + try: o = json.loads(l) + except: continue + d = o.get("data", {}) + if o.get("event") == "tool:post" and d.get("tool_name") == "mode": + res = d.get("result", {}) or {} + out = res.get("output", {}) if isinstance(res.get("output", {}), dict) else {} + blob = json.dumps(res) + if out.get("active_mode") == "context-intelligence" or out.get("status") == "activated" \ + or out.get("denied_mode") == "context-intelligence" or out.get("status") == "denied": + recognized = True; detail = out.get("status") or out.get("active_mode") + if ("not found" in blob.lower() or "unknown mode" in blob.lower()) and "context-intelligence" in blob: + unknown = True + if unknown and not recognized: + print("FAIL[A6]: mode tool reports context-intelligence as unknown/not-found (NOT registered)"); sys.exit(1) + if not recognized: + print("FAIL[A6]: no mode(set) result referencing context-intelligence found"); sys.exit(1) + print(f"PASS[A6]: context-intelligence mode is REGISTERED/activatable -- mode(set) recognized it (result status: {detail})") + PY + + # ---------------------------------------------------------------------- + # A7: mode-only strategy context + eval skill RESOLVES via load_skill. + # Run a session that activates the context-intelligence mode and instructs the + # agent to load the context-intelligence-evaluation-methodology skill. Assert + # the generic event log shows a SUCCESSFUL load_skill tool call for that skill + # (proves it resolves, not just appears), and that the strategy context file is + # referenced once the mode is active. + # NOTE: replace `--mode context-intelligence` below with the exact activation + # flag confirmed via `amplifier run --help` if it differs. + # ---------------------------------------------------------------------- + - name: A7-mode-active-eval-skill-resolves + command: | + set -e + mkdir -p /tmp/a7 && cd /tmp/a7 + SID=$(amplifier run "You must activate a mode and then load a skill. Step 1: call mode(operation=set, name=context-intelligence). Step 2: if the result status is 'denied' or asks to confirm, call mode(operation=set, name=context-intelligence) a SECOND time to confirm. Step 3: once active, call load_skill(skill_name=context-intelligence-evaluation-methodology). Step 4: report the skill's first heading. Do all four steps yourself; do not ask me anything." \ + --mode single 2>&1 | tee /tmp/a7.log | grep -oE 'Session ID: [0-9a-f-]+' | awk '{print $3}') + echo "session: $SID" + GEN=$(find /root/.amplifier/projects -path "*/sessions/$SID/events.jsonl" 2>/dev/null | head -1) + if [ -z "$GEN" ]; then echo "FAIL[A7]: no session log for $SID"; exit 1; fi + python3 - "$GEN" << 'PY' + import json, sys + mode_status = []; activated = False; skill_ok = False; skill_err = None + for l in open(sys.argv[1]): + l = l.strip() + if not l: continue + try: o = json.loads(l) + except: continue + d = o.get("data", {}) + if o.get("event") == "tool:post" and d.get("tool_name") == "mode": + out = d.get("result", {}).get("output", {}) if isinstance(d.get("result", {}).get("output", {}), dict) else {} + mode_status.append(out.get("status") or out.get("active_mode")) + if out.get("status") == "activated" or out.get("active_mode") == "context-intelligence": + activated = True + if o.get("event") == "tool:post" and d.get("tool_name") == "load_skill" \ + and "context-intelligence-evaluation-methodology" in json.dumps(d.get("tool_input", {})): + res = d.get("result", {}) or {} + if res.get("error"): skill_err = res["error"].get("message", "")[:140] + else: skill_ok = True + print("mode set attempts (status):", mode_status) + print("eval skill load error:", skill_err) + if not activated: + print("FAIL[A7]: context-intelligence mode never activated"); sys.exit(1) + if not skill_ok: + print(f"FAIL[A7]: eval skill did NOT resolve via load_skill (err: {skill_err})"); sys.exit(1) + print("PASS[A7]: mode activated via retry-to-confirm AND context-intelligence-evaluation-methodology resolved via load_skill (error null) while mode active") + PY diff --git a/.amplifier/digital-twin-universe/profiles/context-intelligence-bundle-smoke-test.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-bundle-smoke-test.yaml new file mode 100644 index 00000000..f562698f --- /dev/null +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-bundle-smoke-test.yaml @@ -0,0 +1,169 @@ +# Smoke-test profile for amplifier-bundle-context-intelligence +# +# Tests: library imports, CLI tools, hook HookConfigResolver, and Amplifier +# bundle loading. Does NOT require an external CI server. +# +# Usage: +# export GH_TOKEN=$(gh auth token) +# amplifier-digital-twin launch .amplifier/digital-twin-universe/profiles/context-intelligence-bundle-smoke-test.yaml \ +# --name context-intelligence-bundle-smoke-test +name: context-intelligence-bundle-smoke-test +description: > + Smoke test for the context-intelligence bundle. Validates library imports, + upload CLI, hook additional_events config, and Amplifier bundle loading. + +url_rewrites: + auth: + username: admin + token_var: GITEA_TOKEN + default_match_mode: boundary + rules: + - match: github.com/microsoft/amplifier-bundle-context-intelligence + target: ${GITEA_URL}/admin/amplifier-bundle-context-intelligence + +base: + image: ubuntu:24.04 + +passthrough: + allow_external: true + services: + - name: anthropic + key_env: ANTHROPIC_API_KEY + - name: github + key_env: GH_TOKEN + +provision: + setup_cmds: + # System dependencies + - apt-get update && apt-get install -y git curl python3 python3-venv + + # Install uv + - curl -LsSf https://astral.sh/uv/install.sh | sh + + # Configure git credentials for private GitHub repos + - | + if [ -n "$GH_TOKEN" ]; then + echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc + chmod 600 /root/.netrc + git config --global credential.helper 'store' + fi + + # Clone the bundle (HEAD of main) + - | + export PATH="/root/.local/bin:$PATH" + git clone --depth 1 https://github.com/microsoft/amplifier-bundle-context-intelligence.git /opt/context-intelligence-bundle + + # Create a venv and install packages in dependency order. + # Ubuntu 24.04 marks system Python as externally managed (PEP 668), + # so we use a dedicated virtualenv for the smoke-test packages. + - | + export PATH="/root/.local/bin:$PATH" + uv venv /opt/venv --python python3 + export VIRTUAL_ENV=/opt/venv + export PATH="/opt/venv/bin:$PATH" + uv pip install /opt/context-intelligence-bundle/ + uv pip install "httpx>=0.28.1" + uv pip install --no-deps /opt/context-intelligence-bundle/modules/hook-context-intelligence/ + uv pip install --no-deps /opt/context-intelligence-bundle/modules/tool-context-intelligence-upload/ + + # Quick sanity — library importable? + - /opt/venv/bin/python3 -c "from context_intelligence.config import resolve_config; print('context_intelligence importable')" + + # Install Amplifier itself (uv tool uses its own isolated venv) + - | + export PATH="/root/.local/bin:$PATH" + uv tool install git+https://github.com/microsoft/amplifier@main + + # Configure Amplifier provider + - | + mkdir -p /root/.amplifier + cat > /root/.amplifier/settings.yaml << 'EOF' + config: + providers: + - module: provider-anthropic + source: git+https://github.com/microsoft/amplifier-module-provider-anthropic@main + config: + api_key_env: ANTHROPIC_API_KEY + EOF + + # Add the context-intelligence bundle to Amplifier + - | + export PATH="/root/.local/bin:$PATH" + amplifier bundle add git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main --app + + # Verify Amplifier is working + - | + export PATH="/root/.local/bin:$PATH" + amplifier --version + + # Persist PATH for interactive shells and exec commands + - | + echo 'export PATH="/opt/venv/bin:/root/.local/bin:$PATH"' >> /root/.bashrc + echo 'export VIRTUAL_ENV=/opt/venv' >> /root/.bashrc + echo 'PATH=/opt/venv/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/environment + echo 'VIRTUAL_ENV=/opt/venv' >> /etc/environment + + # Workspace for the user + - mkdir -p /home/user/project + + # Write a smoke wrapper bundle that composes the context-intelligence umbrella + # bundle plus the stub-event-contributor fixture module, then register it. + - | + cat > /root/context-intelligence-smoke-stub-bundle.yaml <<'YAML' + bundle: + name: context-intelligence-smoke-stub + version: 0.1.0 + description: Smoke wrapper - context-intelligence umbrella bundle + stub-event-contributor module. + includes: + - bundle: git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main + tools: + - module: stub-event-contributor + source: git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/hook-context-intelligence/tests/dtu/fixtures/stub-event-contributor + YAML + amplifier bundle add /root/context-intelligence-smoke-stub-bundle.yaml + +readiness: + - name: library-check + command: "/opt/venv/bin/python3 -c \"from context_intelligence.client import AsyncCIClient; print('ready')\"" + +validation_cmds: + - name: smoke-compose-and-on-session-ready + command: | + set -e + mkdir -p /tmp/smoke-final && cd /tmp/smoke-final + amplifier run --bundle context-intelligence-smoke-stub "Say hello in one word." --mode single \ + 2>&1 | tee /tmp/smoke-final.log >/dev/null + SID=$(grep -oE 'Session ID: [0-9a-f-]+' /tmp/smoke-final.log | awk '{print $3}') + echo "SID=$SID" + SDIR=$(find /root/.amplifier/projects -type d -path "*/sessions/$SID" 2>/dev/null | head -1) + GEN="$SDIR/events.jsonl" + CIJ="$SDIR/context-intelligence/events.jsonl" + python3 - "$GEN" "$CIJ" << 'PY' + import json, os, sys + gen, cij = sys.argv[1], sys.argv[2] + composed = False + for l in open(gen): + l = l.strip() + if not l: continue + try: o = json.loads(l) + except: continue + if o.get("event") == "session:config": + tools = (o.get("data", {}).get("raw", {}).get("tools") or []) + if any(isinstance(t, dict) and t.get("module") == "stub-event-contributor" for t in tools): + composed = True + if not composed: + print("FAIL[SMOKE]: stub-event-contributor NOT in session:config mount plan"); sys.exit(1) + if not os.path.exists(cij) or os.path.getsize(cij) == 0: + print("FAIL[SMOKE]: CI hook events.jsonl missing/empty -> on_session_ready did not register the handler"); sys.exit(1) + evset = set() + for l in open(cij): + l = l.strip() + if not l: continue + try: evset.add(json.loads(l).get("event")) + except: pass + need = {"session:start", "session:end"} + if not need.issubset(evset): + print(f"FAIL[SMOKE]: CI events.jsonl missing lifecycle {need - evset}"); sys.exit(1) + print("PASS[SMOKE]: stub-event-contributor composed into mount plan AND on_session_ready ran " + "(CI events.jsonl populated with session:start/session:end via the late-registered LoggingHandler)") + PY diff --git a/.amplifier/digital-twin-universe/profiles/context-intelligence-hook-behavioral-test.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-hook-behavioral-test.yaml new file mode 100644 index 00000000..146a2f5e --- /dev/null +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-hook-behavioral-test.yaml @@ -0,0 +1,391 @@ +# ============================================================================ +# BEHAVIORAL TEST PROFILE 1 of 2 -- HOOK MODE +# ============================================================================ +# +# GOAL +# Deep, evidence-based proof that a FRESH Amplifier session, with the +# context-intelligence bundle installed in its FULL behavior, instruments +# itself correctly via the event-capture hook (hook-context-intelligence) +# running in LOCAL-ONLY mode (no CI server). +# +# WHAT "WORKS AS EXPECTED" MEANS HERE +# The FULL behavior (behaviors/context-intelligence.yaml) is the ONLY +# behavior that ships the event-capture hook. Installing it via +# `amplifier bundle add @main --app` mounts the hook onto every +# session. With NO server env vars set the hook degrades gracefully to +# LOCAL-ONLY mode: it still writes a per-session events.jsonl + metadata.json +# under ~/.amplifier/projects//sessions//context-intelligence/, +# capturing canonical amplifier_core lifecycle events. Server dispatch is +# OFF unless BOTH AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL and +# AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY are set -- which they are NOT here. +# +# ASSERTIONS (each validation_cmd prints PASS/FAIL and exits non-zero on FAIL) +# H1 events.jsonl is created under ~/.amplifier/projects/**/context-intelligence/ +# after a real 1-turn session, and is non-empty. +# H2 metadata.json exists alongside it with required fields: +# format, version, session_id, workspace, started_at, status, working_dir. +# H3 Every line of events.jsonl is valid JSON with the envelope keys +# event, workspace, timestamp, data. +# H4 At least one CANONICAL lifecycle event is present (event name matching +# session/provider/tool) -- proves ALL_EVENTS wiring, not a single custom event. +# H5 Local-only graceful degradation: with NO server env vars, the session +# still completes AND the JSONL is written (no crash, no dispatch required). +# +# LOCAL-BRANCH UNDER TEST +# Source of truth is the local working branch of the +# amplifier-bundle-context-intelligence submodule, mirrored to Gitea (see +# the MANDATORY url_rewrites block below). NOT GitHub @main. +# +# USAGE +# amplifier-digital-twin launch \ +# .amplifier/digital-twin-universe/profiles/context-intelligence-hook-behavioral-test.yaml \ +# --var GITEA_URL=http://: \ +# --var GITEA_TOKEN= \ +# --name context-intelligence-hook-behavioral-test +# ============================================================================ + +name: context-intelligence-hook-behavioral-test +description: > + HOOK MODE behavioral test for the context-intelligence bundle (local branch + via Gitea). Installs the FULL behavior, runs a real 1-turn session in + local-only mode (no CI server), and asserts the event-capture hook writes a + valid per-session events.jsonl + metadata.json with canonical lifecycle events. + +base: + image: ubuntu:24.04 + +# MANDATORY: Gitea URL rewrite for local branch skill resolution. +# The bundle ships skills with a git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills source in behaviors/context-intelligence.yaml. +# When running in DTU, local working branch is source of truth -- NOT GitHub @main. Without rewrite, skill registration inside DTU fetches from GitHub @main and silently runs stale code, producing test results that do not reflect local changes. +# The digital-twin-universe:dtu-profile-builder agent mirrors the local amplifier-bundle-context-intelligence submodule to Gitea on current branch. These rewrites point every reference at that mirror. +# url_rewrites: +# - from: "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main" +# to: "git+http://{gitea_host}/microsoft/amplifier-bundle-context-intelligence@main" +# +# Implemented below using the functional DTU url_rewrites schema (auth + rules +# with boundary match). The mitmproxy rewrite redirects EVERY reference to +# github.com/microsoft/amplifier-bundle-context-intelligence (the bundle add, +# the analytics subdirectory, and #subdirectory=skills/* skill sources) to the +# Gitea mirror admin/amplifier-bundle-context-intelligence, whose `main` branch +# holds the local working-tree snapshot. {gitea_host} is supplied at launch via +# --var GITEA_URL (resolved to the Gitea mirror reachable from inside the DTU). +url_rewrites: + auth: + username: admin + token_var: GITEA_TOKEN + default_match_mode: boundary + rules: + - match: github.com/microsoft/amplifier-bundle-context-intelligence + target: ${GITEA_URL}/admin/amplifier-bundle-context-intelligence + +passthrough: + allow_external: true + services: + - name: anthropic + key_env: ANTHROPIC_API_KEY + - name: github + key_env: GH_TOKEN + +provision: + setup_cmds: + # System dependencies (jq + python3 used by the assertions below) + - apt-get update && apt-get install -y git curl python3 jq + + # Install uv + - curl -LsSf https://astral.sh/uv/install.sh | sh + + # Configure git credentials for GitHub (transitive public deps; harmless if unset) + - | + if [ -n "$GH_TOKEN" ]; then + echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc + chmod 600 /root/.netrc + git config --global credential.helper 'store' + fi + + # Install Amplifier itself + - uv tool install git+https://github.com/microsoft/amplifier@main + + # Configure Amplifier provider (anthropic only -- minimal, matches smoke test) + - | + mkdir -p /root/.amplifier + cat > /root/.amplifier/settings.yaml << 'EOF' + config: + providers: + - module: provider-anthropic + source: git+https://github.com/microsoft/amplifier-module-provider-anthropic@main + config: + api_key_env: ANTHROPIC_API_KEY + EOF + + # Install the FULL context-intelligence behavior (analytics + HOOK). + # url_rewrites redirects this @main reference to the Gitea mirror (local branch). + # The hook ships ONLY in this behavior. + - amplifier bundle add git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main --app + + # Sanity: Amplifier is working and the bundle is registered + - amplifier --version + - amplifier bundle list + + # Workspace for the test session + - mkdir -p /tmp/hook-proj + +readiness: + - name: amplifier-installed + command: amplifier --version + +validation_cmds: + # ---------------------------------------------------------------------- + # Run a REAL 1-turn session in LOCAL-ONLY mode (no CI server env vars). + # The FULL behavior's hook mounts and must write events.jsonl + metadata.json. + # ---------------------------------------------------------------------- + - name: run-hook-session + command: | + set -e + # Prove local-only mode: no server env vars set + echo "AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL='${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:-}'" + echo "AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY='${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:-}'" + mkdir -p /tmp/hook-proj + cd /tmp/hook-proj + touch /tmp/hook-pre-marker + sleep 1 + amplifier run "Say hello in one word." --mode single 2>&1 | tee /tmp/hook-session.log + echo "Session completed" + + # ---------------------------------------------------------------------- + # H1: events.jsonl created and non-empty + # ---------------------------------------------------------------------- + - name: H1-events-jsonl-created + command: | + set -e + EVENTS_FILE=$(find /root/.amplifier/projects -path '*context-intelligence/events.jsonl' -newer /tmp/hook-pre-marker 2>/dev/null | head -1) + if [ -z "$EVENTS_FILE" ]; then + echo "FAIL[H1]: No events.jsonl created under ~/.amplifier/projects/**/context-intelligence/ after session" + find /root/.amplifier/projects -type f 2>/dev/null | head -50 + exit 1 + fi + if [ ! -s "$EVENTS_FILE" ]; then + echo "FAIL[H1]: events.jsonl exists but is EMPTY: $EVENTS_FILE" + exit 1 + fi + LINES=$(wc -l < "$EVENTS_FILE") + echo "$EVENTS_FILE" > /tmp/hook-events-path + echo "PASS[H1]: events.jsonl created and non-empty ($LINES lines): $EVENTS_FILE" + + # ---------------------------------------------------------------------- + # H2: metadata.json exists with required fields + # ---------------------------------------------------------------------- + - name: H2-metadata-required-fields + command: | + set -e + EVENTS_FILE=$(cat /tmp/hook-events-path) + META="$(dirname "$EVENTS_FILE")/metadata.json" + if [ ! -f "$META" ]; then + echo "FAIL[H2]: metadata.json not found at $META" + exit 1 + fi + # Required fields per the hook's metadata contract. The criterion is + # PRESENCE of the keys (the hook may legitimately leave a value empty in + # some run contexts). Empty values are surfaced as a NOTE, not a failure. + MISSING=$(python3 - "$META" << 'PY' + import json, sys + required = ["format","version","session_id","workspace","started_at","status","working_dir"] + d = json.load(open(sys.argv[1])) + print(",".join([k for k in required if k not in d])) + PY + ) + if [ -n "$MISSING" ]; then + echo "FAIL[H2]: metadata.json missing required field(s): $MISSING" + echo "--- metadata.json ---"; cat "$META" + exit 1 + fi + EMPTY=$(python3 - "$META" << 'PY' + import json, sys + required = ["format","version","session_id","workspace","started_at","status","working_dir"] + d = json.load(open(sys.argv[1])) + print(",".join([k for k in required if d.get(k) in (None, "")])) + PY + ) + echo "PASS[H2]: metadata.json contains all required fields (format,version,session_id,workspace,started_at,status,working_dir): $META" + if [ -n "$EMPTY" ]; then + echo "NOTE[H2]: the following required field(s) are present but EMPTY: $EMPTY" + fi + cat "$META" + + # ---------------------------------------------------------------------- + # H3: every line is valid JSON with envelope keys event/workspace/timestamp/data + # ---------------------------------------------------------------------- + - name: H3-envelope-structure + command: | + set -e + EVENTS_FILE=$(cat /tmp/hook-events-path) + python3 - "$EVENTS_FILE" << 'PY' + import json, sys + required = {"event","workspace","timestamp","data"} + bad = 0 + total = 0 + with open(sys.argv[1]) as f: + for i, line in enumerate(f, 1): + line = line.strip() + if not line: + continue + total += 1 + try: + obj = json.loads(line) + except Exception as e: + print(f"FAIL[H3]: line {i} is not valid JSON: {e}") + bad += 1 + continue + missing = required - set(obj.keys()) + if missing: + print(f"FAIL[H3]: line {i} missing envelope keys: {sorted(missing)}") + bad += 1 + if bad or total == 0: + print(f"FAIL[H3]: {bad} bad line(s) of {total}") + sys.exit(1) + print(f"PASS[H3]: all {total} lines valid JSON with envelope keys event/workspace/timestamp/data") + PY + + # ---------------------------------------------------------------------- + # H4: at least one canonical lifecycle event (session/provider/tool) + # ---------------------------------------------------------------------- + - name: H4-canonical-lifecycle-event + command: | + set -e + EVENTS_FILE=$(cat /tmp/hook-events-path) + python3 - "$EVENTS_FILE" << 'PY' + import json, sys, re + pat = re.compile(r'(session|provider|tool)', re.I) + names = [] + with open(sys.argv[1]) as f: + for line in f: + line = line.strip() + if not line: + continue + try: + names.append(json.loads(line).get("event","")) + except Exception: + pass + matches = sorted({n for n in names if pat.search(n or "")}) + if not matches: + print("FAIL[H4]: no canonical session/provider/tool lifecycle event found") + print("Events present:", sorted(set(names))) + sys.exit(1) + print("PASS[H4]: canonical lifecycle event(s) present:", matches) + print("All distinct events:", sorted(set(names))) + PY + + # ---------------------------------------------------------------------- + # H5: local-only graceful degradation -- no server env, session completed, JSONL written + # ---------------------------------------------------------------------- + - name: H5-local-only-degradation + command: | + set -e + FAILED=0 + if [ -n "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:-}" ] || [ -n "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:-}" ]; then + echo "FAIL[H5]: server env vars are set -- this test must run local-only" + FAILED=1 + fi + EVENTS_FILE=$(cat /tmp/hook-events-path 2>/dev/null || true) + if [ -z "$EVENTS_FILE" ] || [ ! -s "$EVENTS_FILE" ]; then + echo "FAIL[H5]: no non-empty events.jsonl written in local-only mode" + FAILED=1 + fi + # Session must have completed without a crash/traceback + if grep -qiE 'Traceback \(most recent call last\)|Fatal error' /tmp/hook-session.log; then + echo "FAIL[H5]: session log contains a crash/traceback" + grep -iE 'Traceback|Fatal error' /tmp/hook-session.log | head + FAILED=1 + fi + if [ "$FAILED" -ne 0 ]; then + exit 1 + fi + echo "PASS[H5]: local-only mode -- no server env vars, session completed cleanly, JSONL written ($EVENTS_FILE)" + + # ---------------------------------------------------------------------- + # F2: analytics surface PRESENT in FULL behavior (regression for the split). + # The FULL behavior now `includes:` analytics + logging, so graph-analyst AND + # session-navigator must both be composed and available/[on] -- proving FULL + # still carries the read/query surface after the refactor. + # ---------------------------------------------------------------------- + # NOTE: `amplifier agents show` reports the GLOBAL agent catalog (every agent + # .md in any cached bundle), so it cannot distinguish composed-vs-catalogued. + # We assert against the captured session:config (data.raw.agents) -- the + # authoritative record of what was actually composed into THIS session. + - name: F2-analytics-present + command: | + set -e + EVENTS_FILE=$(cat /tmp/hook-events-path) + python3 - "$EVENTS_FILE" << 'PY' + import json, sys + cfg = None + for l in open(sys.argv[1]): + l = l.strip() + if not l: + continue + o = json.loads(l) + if o.get("event") == "session:config": + cfg = o["data"]["raw"] + if not cfg: + print("FAIL[F2]: no session:config captured"); sys.exit(1) + agents = list((cfg.get("agents") or {}).keys()) + ga = [a for a in agents if "graph-analyst" in a] + sn = [a for a in agents if "session-navigator" in a] + if not ga or not sn: + print("FAIL[F2]: FULL session missing analytics agents -- graph-analyst:", ga or "ABSENT", "session-navigator:", sn or "ABSENT"); sys.exit(1) + print("PASS[F2]: FULL behavior composes analytics -- graph-analyst", ga, "AND session-navigator", sn, "present in session:config") + PY + + # ---------------------------------------------------------------------- + # F3: hook registered EXACTLY ONCE despite FULL including BOTH behaviors. + # The critical regression check: FULL `includes:` analytics + logging, and the + # hook ships in logging. There must be NO double registration: + # (a) exactly ONE context-intelligence/events.jsonl was created for the session; + # (b) exactly ONE session-start lifecycle event in that file (a second mount + # would duplicate lifecycle capture); + # (c) no duplicate-registration warning/error in the session log. + # ---------------------------------------------------------------------- + - name: F3-hook-registered-once + command: | + set -e + FAILED=0 + # (a) exactly one events.jsonl newer than the pre-session marker + mapfile -t NEWFILES < <(find /root/.amplifier/projects -path '*context-intelligence/events.jsonl' -newer /tmp/hook-pre-marker 2>/dev/null) + COUNT=${#NEWFILES[@]} + echo "New events.jsonl files for this session: $COUNT" + printf '%s\n' "${NEWFILES[@]}" + if [ "$COUNT" -ne 1 ]; then + echo "FAIL[F3a]: expected exactly 1 context-intelligence events.jsonl for the session, found $COUNT (possible double hook registration)" + FAILED=1 + fi + EVENTS_FILE=$(cat /tmp/hook-events-path) + # (b) exactly one session-start lifecycle event (no duplicated capture) + STARTS=$(python3 - "$EVENTS_FILE" << 'PY' + import json, sys, re + pat = re.compile(r'session[:._-](start|started|begin)', re.I) + n = 0 + for line in open(sys.argv[1]): + line = line.strip() + if not line: + continue + try: + ev = json.loads(line).get("event","") + except Exception: + continue + if pat.search(ev or ""): + n += 1 + print(n) + PY + ) + echo "session-start lifecycle events in file: $STARTS" + if [ "$STARTS" -gt 1 ]; then + echo "FAIL[F3b]: $STARTS session-start events -- hook lifecycle captured more than once (double registration)" + FAILED=1 + fi + # (c) no duplicate-registration warning/error in the session log + if grep -qiE 'already registered|duplicate (hook|handler|registration)|registered twice|registered more than once' /tmp/hook-session.log; then + echo "FAIL[F3c]: session log shows a duplicate-registration warning/error" + grep -niE 'already registered|duplicate (hook|handler|registration)|registered twice|registered more than once' /tmp/hook-session.log | head + FAILED=1 + fi + [ "$FAILED" -ne 0 ] && exit 1 + echo "PASS[F3]: hook registered EXACTLY ONCE despite FULL including both behaviors (one events.jsonl, one session-start event, no duplicate-registration warnings)" diff --git a/.amplifier/digital-twin-universe/profiles/context-intelligence-logging-behavioral-test.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-logging-behavioral-test.yaml new file mode 100644 index 00000000..17d4221c --- /dev/null +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-logging-behavioral-test.yaml @@ -0,0 +1,342 @@ +# ============================================================================ +# BEHAVIORAL TEST PROFILE 3 of 3 -- LOGGING-ONLY MODE (the NEW granular split) +# ============================================================================ +# +# GOAL +# Deep, evidence-based proof that a FRESH Amplifier session, with the +# context-intelligence bundle installed in its NEW LOGGING-ONLY behavior +# (behaviors/context-intelligence-logging.yaml), instruments itself via the +# event-capture hook (hook-context-intelligence) running in LOCAL-ONLY mode +# (no CI server) -- AND carries NONE of the analytics read/query surface. +# +# THE NEW THREE-WAY SPLIT (consumers pick granularity) +# * LOGGING-ONLY (this profile) -> behaviors/context-intelligence-logging.yaml +# hook-context-intelligence ONLY (event capture / JSONL). NO agents, +# NO tools, NO skills, NO mode. Pure producer side. +# * READ/QUERY -> behaviors/context-intelligence-design.yaml +# graph-analyst + session-navigator + tools + skills + mode, NO hook. +# * FULL -> behaviors/context-intelligence.yaml +# `includes:` BOTH design and logging (hook registered EXACTLY once). +# +# ASSERTIONS (each validation_cmd prints PASS/FAIL and exits non-zero on FAIL) +# L1 events.jsonl created & non-empty after a real 1-turn session AND +# metadata.json has all required fields: session_id, workspace, +# started_at, status, working_dir, format, version. +# L2 Every events.jsonl line is a valid envelope {event,workspace,timestamp, +# data} AND canonical lifecycle events are present (session/provider/ +# llm/tool). +# L3 Analytics surface is ABSENT (this is the KEY new check): +# (a) `amplifier agents show graph-analyst` / `session-navigator` +# report NEITHER as available/[on]; +# (b) the cached logging behavior YAML has a hooks: section but NO +# agents:/tools:/context: sections (structural proof of pure +# producer side); +# (c) graph_query / blob_read tools are NOT referenced anywhere in the +# composed session telemetry. Proves logging-only carries no +# read/query surface. +# L4 Local-only graceful degradation: with NO server env vars, the session +# still completes cleanly AND the JSONL is written (no crash, no dispatch). +# +# LOCAL-BRANCH UNDER TEST +# Source of truth is the local working branch of the +# amplifier-bundle-context-intelligence submodule, mirrored to Gitea (see the +# MANDATORY url_rewrites block below). NOT GitHub @main. +# +# USAGE +# amplifier-digital-twin launch \ +# .amplifier/digital-twin-universe/profiles/context-intelligence-logging-behavioral-test.yaml \ +# --var GITEA_URL=http://: \ +# --var GITEA_TOKEN= \ +# --name context-intelligence-logging-behavioral-test +# ============================================================================ + +name: context-intelligence-logging-behavioral-test +description: > + LOGGING-ONLY behavioral test for the context-intelligence bundle (local branch + via Gitea). Installs the NEW logging-only behavior (hook only, no analytics), + runs a real 1-turn session in local-only mode (no CI server), and asserts the + event-capture hook writes a valid per-session events.jsonl + metadata.json with + canonical lifecycle events, while NONE of the analytics agents/tools/skills are + composed (proving the granular producer-only split). + +base: + image: ubuntu:24.04 + +# MANDATORY: Gitea URL rewrite for local branch skill resolution. +# The bundle ships skills with a git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills source in behaviors/context-intelligence.yaml. +# When running in DTU, local working branch is source of truth -- NOT GitHub @main. Without rewrite, skill registration inside DTU fetches from GitHub @main and silently runs stale code, producing test results that do not reflect local changes. +# The digital-twin-universe:dtu-profile-builder agent mirrors the local amplifier-bundle-context-intelligence submodule to Gitea on current branch. These rewrites point every reference at that mirror. +# url_rewrites: +# - from: "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main" +# to: "git+http://{gitea_host}/microsoft/amplifier-bundle-context-intelligence@main" +# +# Implemented below using the functional DTU url_rewrites schema (auth + rules +# with boundary match). The mitmproxy rewrite redirects EVERY reference to +# github.com/microsoft/amplifier-bundle-context-intelligence (the logging +# behavior subdirectory AND the hook module #subdirectory=modules/... source +# declared in behaviors/context-intelligence-logging.yaml) to the Gitea mirror +# admin/amplifier-bundle-context-intelligence, whose `main` branch holds the +# local working-tree snapshot. {gitea_host} is supplied at launch via +# --var GITEA_URL (resolved to the Gitea mirror reachable from inside the DTU). +url_rewrites: + auth: + username: admin + token_var: GITEA_TOKEN + default_match_mode: boundary + rules: + - match: github.com/microsoft/amplifier-bundle-context-intelligence + target: ${GITEA_URL}/admin/amplifier-bundle-context-intelligence + +passthrough: + allow_external: true + services: + - name: anthropic + key_env: ANTHROPIC_API_KEY + - name: github + key_env: GH_TOKEN + +provision: + setup_cmds: + # System dependencies (jq + python3 used by the assertions below) + - apt-get update && apt-get install -y git curl python3 jq + + # Install uv + - curl -LsSf https://astral.sh/uv/install.sh | sh + + # Configure git credentials for GitHub (transitive public deps; harmless if unset) + - | + if [ -n "$GH_TOKEN" ]; then + echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc + chmod 600 /root/.netrc + git config --global credential.helper 'store' + fi + + # Install Amplifier itself + - uv tool install git+https://github.com/microsoft/amplifier@main + + # Configure Amplifier provider (anthropic only -- minimal, matches smoke test) + - | + mkdir -p /root/.amplifier + cat > /root/.amplifier/settings.yaml << 'EOF' + config: + providers: + - module: provider-anthropic + source: git+https://github.com/microsoft/amplifier-module-provider-anthropic@main + config: + api_key_env: ANTHROPIC_API_KEY + EOF + + # Install the LOGGING-ONLY behavior (hook ONLY -- no analytics agents/tools/skills). + # url_rewrites redirects this @main reference to the Gitea mirror (local branch). + - amplifier bundle add 'git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence-logging.yaml' --app + + # Sanity: Amplifier is working and the logging behavior is registered + - amplifier --version + - amplifier bundle list + + # Workspace for the test session + - mkdir -p /tmp/logging-proj + +readiness: + - name: amplifier-installed + command: amplifier --version + +validation_cmds: + # ---------------------------------------------------------------------- + # Run a REAL 1-turn session in LOCAL-ONLY mode (no CI server env vars). + # The logging-only behavior's hook mounts and must write events.jsonl + metadata.json. + # ---------------------------------------------------------------------- + - name: run-logging-session + command: | + set -e + echo "AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL='${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:-}'" + echo "AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY='${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:-}'" + mkdir -p /tmp/logging-proj + cd /tmp/logging-proj + touch /tmp/logging-pre-marker + sleep 1 + amplifier run "Say hello in one word." --mode single 2>&1 | tee /tmp/logging-session.log + echo "Session completed" + + # ---------------------------------------------------------------------- + # L1: events.jsonl created & non-empty + metadata.json required fields + # ---------------------------------------------------------------------- + - name: L1-events-and-metadata + command: | + set -e + EVENTS_FILE=$(find /root/.amplifier/projects -path '*context-intelligence/events.jsonl' -newer /tmp/logging-pre-marker 2>/dev/null | head -1) + if [ -z "$EVENTS_FILE" ]; then + echo "FAIL[L1]: No events.jsonl created under ~/.amplifier/projects/**/context-intelligence/ after session" + find /root/.amplifier/projects -type f 2>/dev/null | head -50 + exit 1 + fi + if [ ! -s "$EVENTS_FILE" ]; then + echo "FAIL[L1]: events.jsonl exists but is EMPTY: $EVENTS_FILE" + exit 1 + fi + LINES=$(wc -l < "$EVENTS_FILE") + echo "$EVENTS_FILE" > /tmp/logging-events-path + echo "events.jsonl: $EVENTS_FILE ($LINES lines)" + META="$(dirname "$EVENTS_FILE")/metadata.json" + if [ ! -f "$META" ]; then + echo "FAIL[L1]: metadata.json not found at $META" + exit 1 + fi + MISSING=$(python3 - "$META" << 'PY' + import json, sys + required = ["session_id","workspace","started_at","status","working_dir","format","version"] + d = json.load(open(sys.argv[1])) + print(",".join([k for k in required if k not in d])) + PY + ) + if [ -n "$MISSING" ]; then + echo "FAIL[L1]: metadata.json missing required field(s): $MISSING" + echo "--- metadata.json ---"; cat "$META" + exit 1 + fi + EMPTY=$(python3 - "$META" << 'PY' + import json, sys + required = ["session_id","workspace","started_at","status","working_dir","format","version"] + d = json.load(open(sys.argv[1])) + print(",".join([k for k in required if d.get(k) in (None, "")])) + PY + ) + echo "PASS[L1]: events.jsonl non-empty ($LINES lines) AND metadata.json has all required fields (session_id,workspace,started_at,status,working_dir,format,version)" + if [ -n "$EMPTY" ]; then + echo "NOTE[L1]: present-but-EMPTY required field(s): $EMPTY" + fi + cat "$META" + + # ---------------------------------------------------------------------- + # L2: envelope structure + canonical lifecycle events + # ---------------------------------------------------------------------- + - name: L2-envelope-and-lifecycle + command: | + set -e + EVENTS_FILE=$(cat /tmp/logging-events-path) + python3 - "$EVENTS_FILE" << 'PY' + import json, sys, re + required = {"event","workspace","timestamp","data"} + bad = 0; total = 0; names = [] + with open(sys.argv[1]) as f: + for i, line in enumerate(f, 1): + line = line.strip() + if not line: + continue + total += 1 + try: + obj = json.loads(line) + except Exception as e: + print(f"FAIL[L2]: line {i} not valid JSON: {e}"); bad += 1; continue + missing = required - set(obj.keys()) + if missing: + print(f"FAIL[L2]: line {i} missing envelope keys: {sorted(missing)}"); bad += 1 + names.append(obj.get("event","")) + if bad or total == 0: + print(f"FAIL[L2]: {bad} bad line(s) of {total}"); sys.exit(1) + pat = re.compile(r'(session|provider|llm|tool)', re.I) + lifecycle = sorted({n for n in names if pat.search(n or "")}) + if not lifecycle: + print("FAIL[L2]: no canonical session/provider/llm/tool lifecycle event found") + print("Events present:", sorted(set(names))); sys.exit(1) + print(f"PASS[L2]: all {total} lines valid envelopes; canonical lifecycle events present: {lifecycle}") + print("All distinct events:", sorted(set(names))) + PY + + # ---------------------------------------------------------------------- + # L3: analytics surface ABSENT (the KEY new check) + # + # METHODOLOGY NOTE: `amplifier agents show ` reports the GLOBAL agent + # CATALOG (every agent .md present in any cached bundle repo). Because the + # url_rewrite mirrors the WHOLE amplifier-bundle-context-intelligence repo to + # Gitea, that catalog DOES contain graph-analyst/session-navigator even in + # logging-only mode -- so `agents show` is NOT a valid composition probe. + # The authoritative source of what was actually COMPOSED into the session is + # the `session:config` event the hook captured (data.raw.agents / .tools / + # .hooks). We assert against that. + # ---------------------------------------------------------------------- + - name: L3-analytics-absent + command: | + set -e + FAILED=0 + EVENTS_FILE=$(cat /tmp/logging-events-path) + # (a)/(c) authoritative composition probe via captured session:config + python3 - "$EVENTS_FILE" << 'PY' || FAILED=1 + import json, sys + cfg = None + for l in open(sys.argv[1]): + l = l.strip() + if not l: + continue + o = json.loads(l) + if o.get("event") == "session:config": + cfg = o["data"]["raw"] + if not cfg: + print("FAIL[L3]: no session:config event captured -- cannot prove composition"); sys.exit(1) + agents = list((cfg.get("agents") or {}).keys()) + tk = cfg.get("tools") + tools = list(tk.keys()) if isinstance(tk, dict) else ([t.get("module") if isinstance(t, dict) else t for t in tk] if isinstance(tk, list) else (tk or [])) + hook_mods = [h.get("module") for h in (cfg.get("hooks") or [])] + context_intelligence_agents = [a for a in agents if "graph-analyst" in a or "session-navigator" in a] + context_intelligence_tools = [t for t in tools if t and ("graph_query" in str(t) or "blob_read" in str(t))] + context_intelligence_hook = [m for m in hook_mods if m and "context-intelligence" in m] + bad = False + if context_intelligence_agents: + print("FAIL[L3a]: analytics agents composed into logging-only session:", context_intelligence_agents); bad = True + else: + print("PASS[L3a]: NO context-intelligence graph-analyst/session-navigator composed (analytics agents ABSENT)") + if context_intelligence_tools: + print("FAIL[L3c]: analytics tools composed into logging-only session:", context_intelligence_tools); bad = True + else: + print("PASS[L3c]: NO graph_query/blob_read tools composed (analytics tools ABSENT)") + if context_intelligence_hook != ["hook-context-intelligence"]: + print("FAIL[L3]: expected exactly the logging hook composed, got:", context_intelligence_hook); bad = True + else: + print("PASS[L3]: hook-context-intelligence IS composed (producer side present)") + if bad: + sys.exit(1) + PY + + # (b) structural: cached logging behavior YAML has hooks: and NO agents/tools/context/modes + BEH=$(find /root/.amplifier/cache -path '*behaviors/context-intelligence-logging.yaml' 2>/dev/null | head -1) + if [ -z "$BEH" ]; then + echo "FAIL[L3b]: could not locate cached logging behavior YAML in DTU (rewrite/resolution problem)"; FAILED=1 + else + echo "Cached logging behavior: $BEH" + python3 - "$BEH" << 'PY' || FAILED=1 + import sys, yaml + d = yaml.safe_load(open(sys.argv[1])) + bad = [] + if "hooks" not in d: bad.append("missing hooks:") + for k in ("agents","tools","context","modes"): + if k in d: bad.append(f"unexpected {k}: section present") + if bad: + print("FAIL[L3b]:", "; ".join(bad)); sys.exit(1) + mods = [h.get("module") for h in d.get("hooks", [])] + print("PASS[L3b]: logging behavior has hooks:", mods, "and NO agents/tools/context/modes sections (pure producer side)") + PY + fi + + [ "$FAILED" -ne 0 ] && exit 1 + echo "PASS[L3]: analytics read/query surface is ABSENT in logging-only mode (no analytics agents/tools composed; structural producer-only; logging hook present)" + + # ---------------------------------------------------------------------- + # L4: local-only graceful degradation + # ---------------------------------------------------------------------- + - name: L4-local-only-degradation + command: | + set -e + FAILED=0 + if [ -n "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:-}" ] || [ -n "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:-}" ]; then + echo "FAIL[L4]: server env vars are set -- this test must run local-only"; FAILED=1 + fi + EVENTS_FILE=$(cat /tmp/logging-events-path 2>/dev/null || true) + if [ -z "$EVENTS_FILE" ] || [ ! -s "$EVENTS_FILE" ]; then + echo "FAIL[L4]: no non-empty events.jsonl written in local-only mode"; FAILED=1 + fi + if grep -qiE 'Traceback \(most recent call last\)|Fatal error' /tmp/logging-session.log; then + echo "FAIL[L4]: session log contains a crash/traceback" + grep -iE 'Traceback|Fatal error' /tmp/logging-session.log | head; FAILED=1 + fi + [ "$FAILED" -ne 0 ] && exit 1 + echo "PASS[L4]: local-only mode -- no server env vars, session completed cleanly, JSONL written ($EVENTS_FILE)" diff --git a/.amplifier/digital-twin-universe/profiles/ci-signals-validation.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-signals-validation.yaml similarity index 91% rename from .amplifier/digital-twin-universe/profiles/ci-signals-validation.yaml rename to .amplifier/digital-twin-universe/profiles/context-intelligence-signals-validation.yaml index 86811bfa..69fe6892 100644 --- a/.amplifier/digital-twin-universe/profiles/ci-signals-validation.yaml +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-signals-validation.yaml @@ -1,4 +1,4 @@ -# ci-signals-validation.yaml +# context-intelligence-signals-validation.yaml # # End-to-end integration test for context_intelligence.signals library, # CLI commands, render-findings output, and recipe YAML structural validity. @@ -9,10 +9,10 @@ # Usage: # export GH_TOKEN=$(gh auth token) # amplifier-digital-twin launch \ -# .amplifier/digital-twin-universe/profiles/ci-signals-validation.yaml \ -# --name ci-signals-validation +# .amplifier/digital-twin-universe/profiles/context-intelligence-signals-validation.yaml \ +# --name context-intelligence-signals-validation # -name: ci-signals-validation +name: context-intelligence-signals-validation description: > Integration test for context_intelligence.signals library and workflow-pattern-analysis recipe. Validates signal scoring, @@ -50,7 +50,7 @@ provision: git clone \ --depth 1 \ https://github.com/microsoft/amplifier-bundle-context-intelligence.git \ - /opt/ci-bundle + /opt/context-intelligence-bundle # Create a venv and install the signals library + pyyaml (for validation E) # Note: pyyaml is a dev dependency — not bundled in the wheel, must be explicit. @@ -59,16 +59,16 @@ provision: uv venv /opt/venv --python python3 export VIRTUAL_ENV=/opt/venv export PATH="/opt/venv/bin:$PATH" - uv pip install /opt/ci-bundle/ + uv pip install /opt/context-intelligence-bundle/ uv pip install pyyaml # Quick sanity — signals module importable? - /opt/venv/bin/python3 -c "from context_intelligence.signals import score_session; print('signals importable')" - # Set up fixture session directories under /root/.amplifier/projects/ci-test-workspace/ + # Set up fixture session directories under /root/.amplifier/projects/context-intelligence-test-workspace/ - | mkdir -p /root/.amplifier/projects - bash /opt/ci-bundle/tests/dtu/setup_fixtures.sh /root/.amplifier/projects + bash /opt/context-intelligence-bundle/tests/dtu/setup_fixtures.sh /root/.amplifier/projects # Persist PATH and VIRTUAL_ENV for exec commands - | @@ -108,7 +108,7 @@ validation_cmds: import json, sys, subprocess result = subprocess.run( ["/opt/venv/bin/python3", "-m", "context_intelligence.signals", - "score-session", "/opt/ci-bundle/tests/fixtures/s1_session.jsonl"], + "score-session", "/opt/context-intelligence-bundle/tests/fixtures/s1_session.jsonl"], capture_output=True, text=True ) if result.returncode != 0: @@ -136,7 +136,7 @@ validation_cmds: import json, sys, subprocess result = subprocess.run( ["/opt/venv/bin/python3", "-m", "context_intelligence.signals", - "score-session", "/opt/ci-bundle/tests/fixtures/minimal_session.jsonl"], + "score-session", "/opt/context-intelligence-bundle/tests/fixtures/minimal_session.jsonl"], capture_output=True, text=True ) if result.returncode != 0: @@ -227,7 +227,7 @@ validation_cmds: set -e /opt/venv/bin/python3 -c " import yaml, pathlib, sys - text = pathlib.Path('/opt/ci-bundle/recipes/workflow-pattern-analysis.yaml').read_text() + text = pathlib.Path('/opt/context-intelligence-bundle/recipes/workflow-pattern-analysis.yaml').read_text() data = yaml.safe_load(text) stages = data.get('stages', []) stage_names = [s['name'] for s in stages] @@ -253,7 +253,7 @@ validation_cmds: command: | set -e export PATH="/opt/venv/bin:$PATH" - FIXTURE_DIR="/opt/ci-bundle/tests/fixtures" + FIXTURE_DIR="/opt/context-intelligence-bundle/tests/fixtures" PASS_COUNT=0 FAIL_COUNT=0 diff --git a/.amplifier/digital-twin-universe/profiles/context-intelligence-skill-sync-disabled-behavioral-test.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-skill-sync-disabled-behavioral-test.yaml new file mode 100644 index 00000000..84c86cd3 --- /dev/null +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-skill-sync-disabled-behavioral-test.yaml @@ -0,0 +1,246 @@ +# ============================================================================ +# SKILL-SYNC OPT-OUT (skill_sync_enabled) BEHAVIORAL TEST PROFILE +# ============================================================================ +# GOAL +# End-to-end, evidence-based proof of the `skill_sync_enabled` opt-out added +# for issue #283, INCLUDING the corrected vendored-body swap. Installs +# tool-graph-query STANDALONE from the local-branch Gitea mirror and drives +# the REAL on_session_ready() against a live local HTTP capture server that +# records every request, proving the full 4-cell matrix: +# +# Cell 1 disabled + server configured -> stub is SWAPPED for the vendored +# real body; ZERO network (capture server saw no request); NO +# skill:unloaded handler registered. +# Cell 2 disabled + NO server -> "Server Unavailable" stub is +# RETAINED untouched; ZERO network. +# Cell 3 enabled + server up -> GET /version AND +# GET /skills/context-intelligence-graph-query DID fire; SKILL.md +# updated from the server body; skill:unloaded handler registered. +# Cell 4 enabled + server DOWN -> graceful offline path, no crash, +# stub retained. +# +# This is deterministic (no LLM, no provider key): it imports and runs the +# shipped module code, so it also proves the vendored body actually ships in +# the wheel (a missing file would fail Cell 1). +# +# LOCAL-BRANCH UNDER TEST +# tool-graph-query's bundle self-dependency points at +# github.com/microsoft/amplifier-bundle-context-intelligence@main. The +# url_rewrites block redirects that to the Gitea mirror of the LOCAL working +# branch, so the install resolves local code (incl. bundled_skill/), not +# GitHub @main. +# +# USAGE +# amplifier-digital-twin launch \ +# .amplifier/digital-twin-universe/profiles/context-intelligence-skill-sync-disabled-behavioral-test.yaml \ +# --var GITEA_URL=http://: \ +# --var GITEA_TOKEN= \ +# --name context-intelligence-skill-sync-disabled-behavioral-test +# ============================================================================ + +name: context-intelligence-skill-sync-disabled-behavioral-test +description: > + End-to-end proof of the skill_sync_enabled opt-out + vendored-body swap + (issue #283) for the context-intelligence bundle (local branch via Gitea). + Installs tool-graph-query standalone and drives the real on_session_ready + against a live HTTP capture server, asserting the full 4-cell matrix: + disabled+server -> vendored swap + zero network; disabled+no-server -> stub + retained; enabled+up -> server fetch fires; enabled+down -> graceful offline. + +base: + image: ubuntu:24.04 + +# MANDATORY: redirect every github.com/microsoft/amplifier-bundle-context-intelligence +# reference (the module's @main bundle self-dependency, which carries the shared +# context_intelligence package AND the vendored bundled_skill) to the Gitea mirror +# whose `main` branch holds the local working-tree snapshot. +url_rewrites: + auth: + username: admin + token_var: GITEA_TOKEN + default_match_mode: boundary + rules: + - match: github.com/microsoft/amplifier-bundle-context-intelligence + target: ${GITEA_URL}/admin/amplifier-bundle-context-intelligence + +passthrough: + allow_external: true + services: + - name: github + key_env: GH_TOKEN + +provision: + setup_cmds: + - apt-get update && apt-get install -y git curl python3 + - curl -LsSf https://astral.sh/uv/install.sh | sh + - | + if [ -n "$GH_TOKEN" ]; then + echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc + chmod 600 /root/.netrc + git config --global credential.helper 'store' + fi + # Standalone install of tool-graph-query from the local-branch mirror. + # --no-sources reproduces foundation's module-activation policy; the bundle + # self-dependency (@main, github) is rewritten to the Gitea mirror. + - | + export PATH="$HOME/.local/bin:$PATH" + uv venv /tmp/ss-venv + VIRTUAL_ENV=/tmp/ss-venv uv pip install --no-sources \ + "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/tool-graph-query" + # graph_query_tool.py imports amplifier_core.models at top level. The kernel + # is always present in a real deployment, so the module declares it dev-only, + # not as a hard runtime dep — install it explicitly for this standalone harness. + VIRTUAL_ENV=/tmp/ss-venv uv pip install "amplifier-core>=1.6.0" + +readiness: + - name: module-imports + command: /tmp/ss-venv/bin/python -c "import amplifier_module_tool_graph_query, context_intelligence; print('ok')" + +validation_cmds: + # -------------------------------------------------------------------------- + # SS1: Full 4-cell matrix against a live HTTP capture server. + # Deterministic — drives the real on_session_ready(), no LLM involved. + # -------------------------------------------------------------------------- + - name: SS1-skill-sync-matrix-end-to-end + command: | + set -e + /tmp/ss-venv/bin/python - << 'PY' + import asyncio, hashlib, json, os, threading + from http.server import BaseHTTPRequestHandler, HTTPServer + from pathlib import Path + import tempfile + + # Neutralize ambient CI config so each cell's server posture is exactly + # what its config dict declares (a developer host may export these — the + # clean DTU container does not). Without this, the "no server" cell could + # silently inherit a real server_url and stop testing what it claims to. + for _v in ( + "AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", + "AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", + "AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED", + ): + os.environ.pop(_v, None) + + from amplifier_module_tool_graph_query.graph_query_tool import GraphQueryTool + from amplifier_module_tool_graph_query.skill_sync import ( + on_session_ready, + _GRAPH_QUERY_TOOL_CAPABILITY, + TOOL_SKILLS_DISCOVERY_CAPABILITY, + ) + from amplifier_module_tool_graph_query.bundled_skill import EXPECTED_BUNDLED_SKILL_SHA256 + + SKILL = "context-intelligence-graph-query" + STUB = ( + "---\nname: context-intelligence-graph-query\nversion: 2.0.0\n---\n\n" + "# Context Intelligence Graph Query \u2014 Server Unavailable\n\n" + "The context intelligence server is not reachable. Do not attempt Cypher queries.\n" + ) + SERVER_BODY = ( + "---\nname: context-intelligence-graph-query\nversion: 2.0.0\n---\n\n" + "# Context Intelligence Graph Query\n\nFRESH-FROM-SERVER-MARKER\n" + ) + SERVER_ETAG = '"server-etag-v2"' + + def _sha(p): return hashlib.sha256(Path(p).read_bytes()).hexdigest() + def _sha_text(s): return hashlib.sha256(s.encode()).hexdigest() + + # ---- live HTTP capture server ----------------------------------------- + class Handler(BaseHTTPRequestHandler): + requests = [] + def log_message(self, *a): pass + def do_GET(self): + Handler.requests.append(self.path) + if self.path == "/version": + body = json.dumps({"version": "2.0.0"}).encode() + self.send_response(200); self.send_header("Content-Type","application/json") + self.send_header("Content-Length", str(len(body))); self.end_headers() + self.wfile.write(body); return + if self.path == f"/skills/{SKILL}": + body = SERVER_BODY.encode() + self.send_response(200); self.send_header("Content-Type","text/markdown") + self.send_header("ETag", SERVER_ETAG) + self.send_header("Content-Length", str(len(body))); self.end_headers() + self.wfile.write(body); return + self.send_response(404); self.end_headers() + + srv = HTTPServer(("127.0.0.1", 0), Handler) + port = srv.server_address[1] + threading.Thread(target=srv.serve_forever, daemon=True).start() + UP = f"http://127.0.0.1:{port}" + DOWN = "http://127.0.0.1:1" # nothing listening + + # ---- fakes ------------------------------------------------------------- + class Meta: + def __init__(self, path): self.path = str(path) + class Discovery: + def __init__(self, path): self._m = Meta(path) + def find(self, name): return self._m if name == SKILL else None + class Hooks: + def __init__(self): self.events = [] + def register(self, event, *a, **k): self.events.append(event) + class Coord: + def __init__(self, skill_path): + self.config = {} + self.hooks = Hooks() + self._caps = {TOOL_SKILLS_DISCOVERY_CAPABILITY: Discovery(skill_path)} + def get_capability(self, name): return self._caps.get(name) + + def make(cell_dir, config, seed=STUB): + d = Path(cell_dir); d.mkdir(parents=True, exist_ok=True) + skill_path = d / "SKILL.md"; skill_path.write_text(seed) + coord = Coord(skill_path) + tool = GraphQueryTool(coordinator=coord, config=config) + coord._caps[_GRAPH_QUERY_TOOL_CAPABILITY] = tool + return coord, skill_path + + tmp = Path(tempfile.mkdtemp()) + failures = [] + def check(cond, msg): + print(("PASS: " if cond else "FAIL: ") + msg) + if not cond: failures.append(msg) + + # ---- Cell 1: disabled + server configured -> vendored swap, zero net --- + Handler.requests.clear() + coord, sp = make(tmp/"c1", {"context_intelligence_server_url": UP, "skill_sync_enabled": False}) + asyncio.run(on_session_ready(coord)) + check(Handler.requests == [], "Cell1 disabled+server: ZERO network (no requests) -> %r" % Handler.requests) + check(_sha(sp) == EXPECTED_BUNDLED_SKILL_SHA256, "Cell1 disabled+server: stub SWAPPED for vendored real body") + check("Server Unavailable" not in sp.read_text(), "Cell1 disabled+server: 'Server Unavailable' stub is gone") + check("skill:unloaded" not in coord.hooks.events, "Cell1 disabled+server: NO skill:unloaded handler registered") + + # ---- Cell 2: disabled + no server -> stub retained, zero net ----------- + Handler.requests.clear() + coord, sp = make(tmp/"c2", {"skill_sync_enabled": False}) + asyncio.run(on_session_ready(coord)) + check(Handler.requests == [], "Cell2 disabled+no-server: ZERO network") + check(_sha(sp) == _sha_text(STUB), "Cell2 disabled+no-server: 'Server Unavailable' stub RETAINED untouched") + check("skill:unloaded" not in coord.hooks.events, "Cell2 disabled+no-server: NO skill:unloaded handler") + + # ---- Cell 3: enabled + server up -> fetch fires, body updated ---------- + Handler.requests.clear() + coord, sp = make(tmp/"c3", {"context_intelligence_server_url": UP}) # default skill_sync_enabled=True + asyncio.run(on_session_ready(coord)) + check("/version" in Handler.requests, "Cell3 enabled+up: GET /version fired -> %r" % Handler.requests) + check(f"/skills/{SKILL}" in Handler.requests, "Cell3 enabled+up: GET /skills/%s fired" % SKILL) + check(_sha(sp) == _sha_text(SERVER_BODY), "Cell3 enabled+up: SKILL.md updated from SERVER body") + check("skill:unloaded" in coord.hooks.events, "Cell3 enabled+up: skill:unloaded handler registered") + + # ---- Cell 4: enabled + server down -> graceful offline, no crash ------- + Handler.requests.clear() + coord, sp = make(tmp/"c4", {"context_intelligence_server_url": DOWN}) + try: + asyncio.run(on_session_ready(coord)) + crashed = False + except Exception as e: # noqa: BLE001 + crashed = True; print("unexpected exception:", e) + check(not crashed, "Cell4 enabled+down: graceful offline path, no crash") + check(_sha(sp) == _sha_text(STUB), "Cell4 enabled+down: stub retained (offline, content preserved)") + + srv.shutdown() + if failures: + print("\nFAIL[SS1]: %d assertion(s) failed" % len(failures)) + for f in failures: print(" - " + f) + raise SystemExit(1) + print("\nPASS[SS1]: all 4 cells proven end-to-end (vendored body shipped in wheel; " + "disabled=zero network + correct body; enabled=server fetch).") + PY diff --git a/.amplifier/digital-twin-universe/profiles/context-intelligence-standalone-install-test.yaml b/.amplifier/digital-twin-universe/profiles/context-intelligence-standalone-install-test.yaml new file mode 100644 index 00000000..8ae4273d --- /dev/null +++ b/.amplifier/digital-twin-universe/profiles/context-intelligence-standalone-install-test.yaml @@ -0,0 +1,94 @@ +# ============================================================================ +# STANDALONE-INSTALL TEST PROFILE +# ============================================================================ +# GOAL +# Prove the hook module installs and imports STANDALONE (outside the monorepo, +# with NO [tool.uv.sources] path override) via its PEP 508 direct git +# reference to the bundle. Reproduces foundation's `uv pip install --no-sources` +# module-activation policy, which strips [tool.uv.sources] -- so this only +# passes if the bundle dependency is a surviving `name @ git+https://...` +# direct reference that carries the shared `context_intelligence` package. +# +# LOCAL-BRANCH UNDER TEST +# The hook's bundle dependency points at +# git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main. +# The url_rewrites block below redirects that to the Gitea mirror of the LOCAL +# working branch, so the install resolves local code, not GitHub @main. +# +# USAGE +# amplifier-digital-twin launch \ +# .amplifier/digital-twin-universe/profiles/context-intelligence-standalone-install-test.yaml \ +# --var GITEA_URL=http://: \ +# --var GITEA_TOKEN= \ +# --name context-intelligence-standalone-install-test +# ============================================================================ + +name: context-intelligence-standalone-install-test +description: > + Standalone-install proof for the context-intelligence hook module. Installs the + hook straight from git with `uv pip install --no-sources` (no path override), with + the bundle self-reference redirected to the local-branch Gitea mirror, then imports + context_intelligence and the hook mount entry point. + +base: + image: ubuntu:24.04 + +# MANDATORY: redirect every github.com/microsoft/amplifier-bundle-context-intelligence +# reference (the hook's @main bundle self-dependency) to the Gitea mirror whose `main` +# branch holds the local working-tree snapshot. {GITEA_URL} is supplied at launch. +url_rewrites: + auth: + username: admin + token_var: GITEA_TOKEN + default_match_mode: boundary + rules: + - match: github.com/microsoft/amplifier-bundle-context-intelligence + target: ${GITEA_URL}/admin/amplifier-bundle-context-intelligence + +passthrough: + allow_external: true + services: + - name: github + key_env: GH_TOKEN + +provision: + setup_cmds: + - apt-get update && apt-get install -y git curl python3 + - curl -LsSf https://astral.sh/uv/install.sh | sh + - | + if [ -n "$GH_TOKEN" ]; then + echo "machine github.com login x-token-auth password $GH_TOKEN" > /root/.netrc + chmod 600 /root/.netrc + git config --global credential.helper 'store' + fi + +readiness: + - name: uv-installed + command: bash -lc 'uv --version' + +validation_cmds: + # -------------------------------------------------------------------------- + # S1: Standalone install from git with --no-sources, then import the shared + # library and the hook mount entry point. + # -------------------------------------------------------------------------- + - name: S1-standalone-install-and-import + command: | + set -e + export PATH="$HOME/.local/bin:$PATH" + # Fresh, isolated venv -- nothing from the monorepo on the path. + uv venv /tmp/standalone-venv + # Install the hook module straight from git, reproducing foundation's + # module-activation policy (--no-sources strips any [tool.uv.sources]). + # The bundle self-dependency (@main, github) is rewritten to the Gitea + # local-branch mirror by the url_rewrites block above. + VIRTUAL_ENV=/tmp/standalone-venv uv pip install --no-sources \ + "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/hook-context-intelligence" + # Prove the shared library AND the hook entry point import in the clean venv. + /tmp/standalone-venv/bin/python - << 'PY' + import importlib + ci = importlib.import_module("context_intelligence") + mod = importlib.import_module("amplifier_module_hook_context_intelligence") + assert hasattr(mod, "mount") and callable(mod.mount), "hook module has no callable mount()" + print("PASS[S1]: standalone install OK -- imported context_intelligence from", ci.__file__, + "and amplifier_module_hook_context_intelligence.mount is callable") + PY diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2420a3ec..ea63532d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,10 +90,19 @@ jobs: - name: Install dependencies working-directory: modules/${{ matrix.module }} # --frozen: respect the module's own lockfile exactly as committed. - # The module's path dependency on `../..` is resolved from the - # checked-out root, so no special setup is needed. + # The module declares the shared bundle as a @main git ref (NOT a path + # source — enforced by test_bundle_is_not_a_uv_path_source for standalone + # install). So uv installs the *published* context_intelligence; the Run + # tests step shadows it with the in-repo source (below). run: uv sync --frozen - name: Run tests working-directory: modules/${{ matrix.module }} + # Test the module against the IN-REPO shared library, which may carry + # not-yet-published changes (e.g. context_intelligence/tool_resolver.py) + # that @main only gains when this PR merges. Put the checked-out root on + # PYTHONPATH to shadow the @main-installed copy — the same convention + # AGENTS.md prescribes for local runs. + env: + PYTHONPATH: ${{ github.workspace }} run: uv run pytest tests/ -q --tb=short --ignore=tests/dtu diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..ab62c2b4 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,137 @@ +# AGENTS.md — amplifier-bundle-context-intelligence + +## What this repo is + +Composable behaviors for session observability + context intelligence, organized as a **layered +"onion"** plus an independent telemetry hook. Each layer adds exactly one capability and +`includes:` the layer beneath it: + +- **`context-intelligence-navigation`** — innermost; `session-navigator` agent + local-JSONL nav skill. +- **`context-intelligence-analysis`** — includes navigation; adds `graph-analyst` + graph skills. +- **`context-intelligence-design`** — includes analysis; adds the `/context-intelligence` design **mode** + (registered via `hooks-mode` `search_paths: ["@context-intelligence:modes"]`; mode is `advertised: false`, activated on demand). +- **`context-intelligence-logging`** — independent; the `hook-context-intelligence` telemetry hook only. +- **`context-intelligence`** (full umbrella) — composes `design` + `logging`. + +Ships as a bundle with behaviors in `behaviors/`. + +--- + +## Key directories + +| Path | Contents | +|------|----------| +| `behaviors/` | Layered behavior YAMLs: `-navigation` → `-analysis` → `-design` (nested onion) + independent `-logging` + the full `context-intelligence` umbrella | +| `modules/tool-graph-query/` | Graph query tool + `SkillFetcher` + `skill_sync` (`on_session_ready`) — owns dynamic skill-content sync from the server | +| `modules/tool-blob-read/` | `blob_read` tool for resolving `ci-blob://` URIs | +| `modules/hook-context-intelligence/` | Telemetry hook (logging behavior) — **pure telemetry**, no skill sync code | +| `context_intelligence/` | Shared library (config + `HookConfigResolver` + `ToolConfigResolver`) used by all three modules | +| `agents/` | `graph-analyst` + `session-navigator` agent definitions | +| `docs/` | Product docs + diagrams (`bundle.dot` and `bundle.png` are at the **repo root**, not here) | +| `.amplifier/digital-twin-universe/profiles/` | DTU profiles for end-to-end behavioral testing | + +--- + +## Setup + +Each module is an independent `uv` package — set up separately: + +```bash +cd modules/tool-graph-query && uv sync +cd modules/tool-blob-read && uv sync +cd modules/hook-context-intelligence && uv sync +``` + +--- + +## Test commands + +Run before claiming done — reviewer expects evidence: + +```bash +cd modules/tool-graph-query && PYTHONPATH="$(git rev-parse --show-toplevel)" uv run pytest -q # 90 tests +cd modules/tool-blob-read && PYTHONPATH="$(git rev-parse --show-toplevel)" uv run pytest -q # 35 tests +cd modules/hook-context-intelligence && PYTHONPATH="$(git rev-parse --show-toplevel)" uv run pytest -q # 300 tests +``` + +Lint + types (run from each module directory): + +```bash +uv run ruff check . && uv run ruff format --check . && uv run pyright +``` + +--- + +## DTU end-to-end tests (REQUIRED for server/sync changes) + +Changes touching `skill_sync.py`, `SkillFetcher`, `on_session_ready`, or `ToolConfigResolver` +**must** be validated against a live context-intelligence server via all four DTU scenarios: + +| Scenario | What it covers | +|----------|----------------| +| **S1** | Analysis-layer sync — skill fetched and discoverable after `on_session_ready` | +| **S2** | Offline-drift invalidation — ETag/hash sidecars removed when body drifts; content retained | +| **S3** | Logging-only — zero skill activity (hook has no sync code) | +| **S4** | Full behavior — telemetry hook + analysis-layer sync both active | + +DTU profiles live in `.amplifier/digital-twin-universe/profiles/` (including +`context-intelligence-analyst-behavioral-test`, `context-intelligence-logging-behavioral-test`, `context-intelligence-hook-behavioral-test`, +`example-dtu-external-server`). Load the `digital-twin-universe` skill or use the +`amplifier-tester` bundle to run them. + +> **Mandatory:** the DTU mirrors your **local branch** to Gitea (`url_rewrite` in the profile) +> so it runs your uncommitted code — not a published version. Confirm `url_rewrite` is set +> before trusting DTU results. + +--- + +## Verification gradient + +| Change area | Required verification | +|-------------|----------------------| +| `skill_sync` / `SkillFetcher` / `on_session_ready` | Unit tests + all 4 DTU scenarios | +| `ToolConfigResolver` / config resolution | Unit tests + placeholder-expansion regression tests | +| `tool-graph-query` / `tool-blob-read` tool logic | Unit tests | +| `hook-context-intelligence` | Unit tests | +| Bundle YAML / behaviors / agents | Regenerate `bundle.dot` via the `generate-bundle-docs` recipe | + +--- + +## Common pitfalls + +Each of these burned real debugging time: + +- **Shared lib is a `@main` git self-reference, not a path source** — each module's `pyproject` + declares `amplifier-bundle-context-intelligence @ git+...@main` (with `[tool.hatch.metadata]` + `allow-direct-references = true`); there is no `[tool.uv.sources]` `path = "../.."` override. + This makes modules install identically in the monorepo and standalone (PR #36's intent). For + LOCAL unit runs, the installed copy is the git `@main` snapshot, so tests import the LOCAL shared + library by shadowing it with the repo root on `PYTHONPATH`: + `PYTHONPATH="$(git rev-parse --show-toplevel)" uv run pytest -q`. Do NOT reintroduce a + `[tool.uv.sources]` `path = "../.."` override to fix imports. + +- **`skills find()` returns `None` — SKILL.md must start with `---`** — tool-skills' catalog + builder silently drops any `SKILL.md` lacking a leading `---` YAML frontmatter delimiter. + When drifting skill content in a test, change the **body only** and keep the `---` header. + Frontmatter-destroying drift makes the skill vanish from discovery before sync runs — that's a + test-methodology bug, not a product bug. + +- **`amplifier-core` is the PyPI wheel (>=1.6.0), NOT a git/Rust source build** — all three + modules pin `amplifier-core>=1.6.0` from PyPI (prebuilt wheel). Do not switch to a git source + or downgrade to v1.2.x — that forces a maturin/Rust build that hangs the test run. + +- **Analysis-layer config placeholders** — `${AMPLIFIER_CONTEXT_INTELLIGENCE_*}` placeholders in + behavior config are expanded by `ToolConfigResolver._expand`. In the analysis layer without the + hook (e.g. `context-intelligence-analysis`/`-design` composed without `-logging`), + the tool resolver — not the hook resolver — supplies `server_url`/`api_key`. If placeholder + expansion produces raw `${...}` strings at runtime, check whether you edited the tool resolver + path, not just the hook resolver. + +--- + +## Done means + +- Module unit tests green (90 + 35 + 300). +- For sync/server changes: all 4 DTU scenarios pass. +- `bundle.dot` regenerated (via `generate-bundle-docs` recipe) if bundle structure changed. +- `.github/PULL_REQUEST_TEMPLATE.md` (if present) is honored. diff --git a/README.md b/README.md index d937748e..fd255c37 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,66 @@ Two agents are included for querying session data: A **`/context-intelligence` mode** is also included for building new context intelligence-aware tooling. Activate it to enter a design workspace where you can investigate session data, explore the graph model, and produce reusable Amplifier components (skills, agents, context files, recipes, CLIs) for your project. +### Composable layers (the "onion") + +The bundle's behaviors are organized as a **layered onion** — each layer adds **exactly one capability** and `includes:` the layer beneath it. Compose the smallest layer that covers your need; everything below it comes along automatically. + +``` +context-intelligence ← FULL umbrella: design + logging +├── context-intelligence-design + /context-intelligence design MODE +│ └── context-intelligence-analysis + graph-analyst agent & graph skills +│ └── context-intelligence-navigation session-navigator (local JSONL only) +└── context-intelligence-logging telemetry hook only (independent layer) +``` + +| Layer | Adds | Builds on | Use when | +|-------|------|-----------|----------| +| **`context-intelligence-navigation`** | `session-navigator` agent + local-JSONL navigation skill | — (innermost) | You only need offline/local session navigation, no graph server. | +| **`context-intelligence-analysis`** | `graph-analyst` agent + graph-query / blob-read / reconstruction / pattern skills | navigation | You need graph-powered query & exploration (still no design mode). | +| **`context-intelligence-design`** | the `/context-intelligence` design **mode** (`advertised: false`, activate on demand) | analysis | You also want the goal-driven tooling-design workflow. | +| **`context-intelligence-logging`** | `hook-context-intelligence` telemetry hook only | — (independent) | Always-on, team-wide session telemetry. Natural `--app` fit. | +| **`context-intelligence`** (full) | composes **design + logging** | both | Telemetry **and** full analysis/design in one install. | + +> The design mode ships `advertised: false` — it never clutters `/modes`; users activate it explicitly with `/mode context-intelligence` when they want the design workspace. + +### Skill sync and per-session overhead + +The `graph-analyst` agent relies on the `context-intelligence-graph-query` skill, whose content is kept current by `tool-graph-query`. On every session start — when a server URL is configured — the analytics path performs a lightweight sync: a `GET /version` reachability ping plus a conditional, ETag-cached `GET` of the skill. For one long-lived interactive session this is negligible. But workflows that drive Amplifier as a **series of one-shot commands** run the session-start lifecycle on *every* invocation, so the sync fires **per turn** and compounds over a long run. + +**Pick the layer that matches your traffic profile** — only the analysis/full layers carry any skill-sync cost at all: + +| If you… | Use | Skill-sync cost | +|---------|-----|-----------------| +| Forward telemetry only (headless / pipeline / event-forwarding) | `context-intelligence-logging` | **Zero** — no `tool-graph-query`, no version ping | +| Navigate local JSONL only | `context-intelligence-navigation` | **Zero** | +| Need graph-powered analysis | `context-intelligence-analysis` / `context-intelligence` (full) | Per-session sync (ETag-conditioned) | + +**Already on the full behavior but running a single-command series?** Set `skill_sync_enabled: false` on `tool-graph-query` to eliminate the per-turn skill traffic — **no `GET /version`, no `GET /skills/`, no `skill:unloaded` reload handler** — *without* downgrading your behavior. + +Disabling sync does **not** strand the graph-analyst, though. The bundle ships `context-intelligence-graph-query`'s `SKILL.md` as a pessimistic *"Server Unavailable"* stub (so a fresh install with no server never invites Cypher queries against a graph that isn't there). On the disabled path: + +| Disabled + … | What happens on disk | Network | +|--------------|----------------------|---------| +| **a server URL is configured** | The stub is **swapped** for the real graph-query body **vendored in the `tool-graph-query` package** (a byte-for-byte copy of the canonical server skill), so the graph-analyst stays fully usable | **Zero** — local file copy only | +| **no server configured** | The *"Server Unavailable"* stub is **retained** (the graph genuinely isn't there) | **Zero** | + +The swap is idempotent (rewrites only on content change) and crash-safe. The trade-off to understand: with sync disabled you get the **bundled** body, which is refreshed from the canonical [`microsoft/amplifier-context-intelligence`](https://github.com/microsoft/amplifier-context-intelligence) skill at bundle-authoring time — it will not auto-refresh from your live server until you re-enable sync. And if the server is configured but actually **down** while sync is disabled, the agent receives the optimistic "graph available" body; its `graph_query` calls then error and the graph-analyst's built-in fallback delegates to `session-navigator` (local JSONL) — degraded but never broken. + +| Key | Env var | Default | Effect when `false` | +|-----|---------|---------|---------------------| +| `skill_sync_enabled` | `AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED` | `true` | Zero per-turn skill traffic; server-configured sessions get the vendored offline body, no-server sessions keep the stub | + +Configure it through the `tool-graph-query` module config (agent frontmatter or a `settings.yaml` override), or set the env var to disable per-turn sync host-wide: + +```bash +# ~/.amplifier/keys.env or your shell — disable per-turn skill sync host-wide +AMPLIFIER_CONTEXT_INTELLIGENCE_SKILL_SYNC_ENABLED=false +``` + +Accepted values are case-insensitive: `true`/`1`/`yes`/`on` and `false`/`0`/`no`/`off`. An empty or unset value resolves to the default (`true`) — an unexpanded `${VAR:}` placeholder can never silently disable sync. + +> **Want cheaper sync rather than no sync?** A per-process version-check cache with a short TTL (skip `GET /version` while a recent check is still fresh) is a tracked follow-up that would reduce per-turn cost for users who still want sync. `skill_sync_enabled` is the opt-out available today; the TTL cache is a separate, deferred enhancement. + --- ## Understanding workspace @@ -62,10 +122,36 @@ The hook resolves `workspace` using the same `config → coordinator → default ### 1. Install -**Add to an existing app** (recommended) — layers the behavior on top of your active bundle without pulling in foundation as a dependency: +**Add to an existing app** — the `--app` flag layers a behavior onto **every** session, regardless of which primary bundle is active. Pick the layer from the onion above that fits your needs (each one includes everything beneath it): + +**Full** (everything — analysis agents + design mode + telemetry hook): ```bash -amplifier bundle add git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence.yaml --app +amplifier bundle add "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence.yaml" --app +``` + +**Design** (analysis + the `/context-intelligence` design mode, no telemetry hook): + +```bash +amplifier bundle add "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence-design.yaml" --app +``` + +**Analysis** (graph-analyst + graph skills, no design mode, no telemetry hook): + +```bash +amplifier bundle add "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence-analysis.yaml" --app +``` + +**Navigation** (innermost — `session-navigator` for local-JSONL navigation only): + +```bash +amplifier bundle add "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence-navigation.yaml" --app +``` + +**Logging only** (telemetry hook only — ideal as an always-on app bundle): + +```bash +amplifier bundle add "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=behaviors/context-intelligence-logging.yaml" --app ``` **Standalone** — creates a dedicated session configuration using the full root bundle (includes foundation): @@ -77,6 +163,13 @@ amplifier bundle use context-intelligence Every Amplifier session will now write events to local JSONL files automatically — no server required. +> **Composing in your own bundle?** Use the bare `namespace:path` include form, e.g. +> `- bundle: context-intelligence:behaviors/context-intelligence-analysis`. Because the layers +> nest via `includes:`, picking one layer pulls in every layer beneath it — and the +> tool-skills config merges additively, so each layer contributes exactly its own skills. + +**`--app` vs standalone:** `--app` composes the behavior onto every session regardless of which primary bundle is active — it never becomes the primary bundle. The standalone form (`bundle add` + `bundle use`) makes context-intelligence the primary bundle for explicitly selected sessions. + ### 2. (Optional) Enable server forwarding To push events to the [Context Intelligence Server](https://github.com/microsoft/amplifier-context-intelligence) for graph storage and querying, you need a running server instance and its API key. See the [server repository](https://github.com/microsoft/amplifier-context-intelligence) for setup instructions. @@ -157,7 +250,7 @@ overrides: context_intelligence_api_key: "${CONTEXT_INTELLIGENCE_TEAM_SERVER_API_KEY}" ``` -The `${...}` placeholder is resolved by the app-cli before the value reaches the hook, so `ConfigResolver` receives the secret value through its config dict (highest resolution priority). The custom key name in `keys.env` is invisible to the bundle itself. +The `${...}` placeholder is resolved by the app-cli before the value reaches the hook, so `HookConfigResolver` receives the secret value through its config dict (highest resolution priority). The custom key name in `keys.env` is invisible to the bundle itself. --- @@ -230,10 +323,10 @@ cleanup = await mount(coordinator, config={ ### Accessing resolved values -`mount()` registers a `ConfigResolver` as the `context_intelligence.config_resolver` capability: +`mount()` registers a `HookConfigResolver` as the `context_intelligence.hook_config_resolver` capability: ```python -resolver = coordinator.get_capability("context_intelligence.config_resolver") +resolver = coordinator.get_capability("context_intelligence.hook_config_resolver") resolver.workspace # resolved workspace string resolver.base_path # resolved Path object resolver.session_dir("abc-123") # Path to a session's CI directory @@ -409,7 +502,7 @@ amplifier-bundle-context-intelligence/ │ ├── event-schema.md ← all 51+ Amplifier events │ ├── graph-model-reference.md ← Neo4j graph model for Cypher queries │ ├── safe-extraction-patterns.md ← JSONL navigation patterns -│ ├── config-resolution.dot ← ConfigResolver fallback chain diagram +│ ├── config-resolution.dot ← HookConfigResolver fallback chain diagram │ ├── session-disk-layout.dot ← on-disk session directory structure │ ├── delegation-strategy.dot ← graph-analyst → session-navigator delegation logic │ ├── agents/ @@ -434,12 +527,28 @@ amplifier-bundle-context-intelligence/ ## Development +Each module is an independent `uv` package. Set up and test them separately: + ```bash -# Module tests -cd modules/hook-context-intelligence -uv sync -uv run pytest tests/ -q +# Setup +cd modules/tool-graph-query && uv sync +cd modules/tool-blob-read && uv sync +cd modules/hook-context-intelligence && uv sync + +# Tests (run from the respective module directory) +cd modules/tool-graph-query && uv run pytest -q # 97 tests +cd modules/tool-blob-read && uv run pytest -q # 35 tests +cd modules/hook-context-intelligence && uv run pytest -q # 312 tests + +# Lint + types (run from the respective module directory) +uv run ruff check . && uv run ruff format --check . && uv run pyright +``` + +> **Built-copy caveat — mandatory before any red-green cycle on shared code:** modules install the shared `context_intelligence` package as a **built (non-editable) copy** in their venv. After editing shared code under `context_intelligence/`, run `uv sync --reinstall --refresh` in the affected module before testing — otherwise the stale built copy silently shadows your change and tests falsely pass even with the fix reverted. +End-to-end behavior is validated in Digital Twin Universe (DTU) scenarios against a live context-intelligence server. See [AGENTS.md](AGENTS.md) for the DTU gate and the `.amplifier/digital-twin-universe/profiles/` profiles. + +```bash # Bundle-level tests uv run pytest ../../tests/ -q diff --git a/agents/graph-analyst.md b/agents/graph-analyst.md index 780cc052..32161f12 100644 --- a/agents/graph-analyst.md +++ b/agents/graph-analyst.md @@ -40,8 +40,18 @@ tools: source: git+https://github.com/microsoft/amplifier-foundation@main#subdirectory=modules/tool-delegate - module: tool-graph-query source: git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/tool-graph-query + config: + # Used as fallback when hook-context-intelligence is not mounted (analytics-only mode). + # When the hook is present its config_resolver capability takes priority over these values. + context_intelligence_server_url: "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}" + context_intelligence_api_key: "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:}" + workspace: "${AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE:}" - module: tool-blob-read source: git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/tool-blob-read + config: + # Same fallback semantics as tool-graph-query above. + context_intelligence_server_url: "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}" + context_intelligence_api_key: "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:}" - module: tool-filesystem source: git+https://github.com/microsoft/amplifier-module-tool-filesystem@main config: @@ -291,7 +301,7 @@ reconstructs session summaries that can then be uploaded to the graph server for ## Section 4: Context File References @context-intelligence:context/config-resolution.dot - + @context-intelligence:context/delegation-strategy.dot diff --git a/agents/session-navigator.md b/agents/session-navigator.md index 19a4ba64..fca2ff6d 100644 --- a/agents/session-navigator.md +++ b/agents/session-navigator.md @@ -45,6 +45,20 @@ tools: > **IDENTITY NOTICE**: You ARE the session-navigator agent. When you receive a task involving local JSONL session navigation, event search, or session discovery — YOU perform it directly using YOUR tools. Do NOT delegate to "session-navigator" — that would be delegating to yourself, causing an infinite loop. You have all the capabilities needed: filesystem access, search, bash, and skills. Execute the requested operations directly. +## Base Path Resolution + +**At the start of every investigation**, resolve the base path with: + +```bash +export BASE_PATH="${AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH:-$HOME/.amplifier/projects}" +echo "Base path: $BASE_PATH" +``` + +Use `$BASE_PATH` (not the literal `~/.amplifier/projects`) in every subsequent bash command. +This allows operators to override the storage root without changing agent instructions. + +Default: `~/.amplifier/projects`. Override: set `AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH`. + --- ## ⛔ CRITICAL: events.jsonl Will Kill Your Session @@ -113,11 +127,11 @@ You are `session-navigator` — the local JSONL fallback navigation agent for th **No server tools:** You do NOT have `graph_query` or `blob_read` tools. You operate entirely on local filesystem files using bash/jq/grep safe extraction patterns. Never attempt to use server tools — they are not available in your tool set. -**Storage path convention:** All session data lives at: +**Storage path convention:** All session data lives under `$BASE_PATH` (resolve it first — see top of document): ``` -~/.amplifier/projects/{project-slug}/sessions/{session_id}/context-intelligence/events.jsonl -~/.amplifier/projects/{project-slug}/sessions/{session_id}/context-intelligence/metadata.json +$BASE_PATH/{project-slug}/sessions/{session_id}/context-intelligence/events.jsonl +$BASE_PATH/{project-slug}/sessions/{session_id}/context-intelligence/metadata.json ``` Every `events.jsonl` line and every `metadata.json` file contains a `workspace` field. The graph-analyst will pass the active workspace when it delegates to you. **Always scope your search to that workspace.** @@ -129,7 +143,7 @@ When a workspace is provided by the caller, apply it immediately before any othe **Step 1 — Try directory-first lookup** (fast, covers the common case where workspace equals the project slug): ```bash -ls ~/.amplifier/projects/{WORKSPACE}/sessions/ 2>/dev/null +ls "$BASE_PATH/{WORKSPACE}/sessions/" 2>/dev/null ``` If this directory exists and contains sessions, work within it exclusively. @@ -137,7 +151,7 @@ If this directory exists and contains sessions, work within it exclusively. **Step 2 — If that directory is empty or missing**, the workspace was set explicitly and differs from the project slug. Scan across all project directories and filter by the `workspace` field in `metadata.json`: ```bash -for f in ~/.amplifier/projects/*/sessions/*/context-intelligence/metadata.json; do +for f in "$BASE_PATH"/*/sessions/*/context-intelligence/metadata.json; do jq -r 'select(.workspace == "{WORKSPACE}") | input_filename' "$f" 2>/dev/null done ``` @@ -156,25 +170,25 @@ Find sessions by ID, project slug, date, or agent name, always scoped to the pro ```bash # List sessions in a workspace (directory-first path) -for f in ~/.amplifier/projects/my-project/sessions/*/context-intelligence/metadata.json; do +for f in "$BASE_PATH/my-project/sessions"/*/context-intelligence/metadata.json; do jq -r '[.session_id, .workspace, .status, .started_at, .agent_name // "(root)"] | join("\t")' "$f" 2>/dev/null done | sort -t$'\t' -k4 # List sessions scoped by workspace field (cross-project scan) -for f in ~/.amplifier/projects/*/sessions/*/context-intelligence/metadata.json; do +for f in "$BASE_PATH"/*/sessions/*/context-intelligence/metadata.json; do jq -r 'select(.workspace == "my-project") | [.session_id, .status, .started_at, .agent_name // "(root)"] | join("\t")' "$f" 2>/dev/null done | sort -t$'\t' -k3 # Find a session by partial ID (within a workspace) -find ~/.amplifier/projects/my-project/sessions -maxdepth 1 -name "*PARTIAL_ID*" -type d +find "$BASE_PATH/my-project/sessions" -maxdepth 1 -name "*PARTIAL_ID*" -type d # Find sessions by agent name within a workspace -for f in ~/.amplifier/projects/my-project/sessions/*/context-intelligence/metadata.json; do +for f in "$BASE_PATH/my-project/sessions"/*/context-intelligence/metadata.json; do jq -r 'select(.agent_name == "TARGET_AGENT") | .session_id' "$f" 2>/dev/null done # Confirm the workspace of a specific session -jq -r '.workspace' ~/.amplifier/projects/my-project/sessions/SESSION_ID/context-intelligence/metadata.json +jq -r '.workspace' "$BASE_PATH/my-project/sessions/SESSION_ID/context-intelligence/metadata.json" ``` ### Event Search @@ -212,7 +226,7 @@ jq -r '{parent_id, workspace, status}' metadata.json # Find child sessions within a workspace PARENT_ID="YOUR_SESSION_ID_HERE" -for f in ~/.amplifier/projects/my-project/sessions/*/context-intelligence/metadata.json; do +for f in "$BASE_PATH/my-project/sessions"/*/context-intelligence/metadata.json; do jq -r "select(.parent_id == \"$PARENT_ID\") | [.session_id, .agent_name // \"(root)\", .status, .workspace] | join(\"\t\")" "$f" 2>/dev/null done @@ -238,7 +252,7 @@ Since session-navigator is active when no server is configured, you must locate ```bash context-intelligence-upload \ - --path ~/.amplifier/projects/my-project \ + --path "$BASE_PATH/my-project" \ --server-url "https://your-server.example.com" \ --api-key "your-api-key" ``` diff --git a/behaviors/context-intelligence-analysis.yaml b/behaviors/context-intelligence-analysis.yaml new file mode 100644 index 00000000..4161ad8d --- /dev/null +++ b/behaviors/context-intelligence-analysis.yaml @@ -0,0 +1,26 @@ +bundle: + name: context-intelligence-analysis-behavior + version: 0.1.0 + description: > + LAYER 2 of 3. Adds graph-analyst + graph skills (blob-reading, graph-query, + session-reconstruction, workflow-pattern-analysis). Includes + context-intelligence-navigation. Use for graph read/query/exploration + without the design mode. + +includes: + - bundle: context-intelligence:behaviors/context-intelligence-navigation + +agents: + include: + - context-intelligence:graph-analyst + +tools: + - module: tool-skills + source: git+https://github.com/microsoft/amplifier-bundle-skills@main#subdirectory=modules/tool-skills + config: + skills: + # Concatenates with the navigation layer's skill list (list-merge with dedup). + - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/blob-reading" + - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/context-intelligence-graph-query" + - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/context-intelligence-session-reconstruction" + - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/workflow-pattern-analysis" diff --git a/behaviors/context-intelligence-design.yaml b/behaviors/context-intelligence-design.yaml new file mode 100644 index 00000000..d8eff604 --- /dev/null +++ b/behaviors/context-intelligence-design.yaml @@ -0,0 +1,27 @@ +bundle: + name: context-intelligence-design-behavior + version: 0.1.0 + description: > + LAYER 3 of 3 (top). Adds the context-intelligence design MODE (gates + design-facilitator + tool-designer agents and design skills). Includes + context-intelligence-analysis. Use for full read/query + tooling-design + workflow. + +includes: + - bundle: context-intelligence:behaviors/context-intelligence-analysis + # Brings tool-mode + the approval hook + the default hooks-mode config (search_paths: []). + - bundle: git+https://github.com/microsoft/amplifier-bundle-modes@main#subdirectory=behaviors/modes.yaml + +# Register this bundle's modes/ directory with hooks-mode. This is the REAL +# registration mechanism (a bare `modes: include:` block is NOT a recognized +# foundation field and is silently dropped). The hooks-mode entry deep-merges by +# module ID with the one from behaviors/modes.yaml, replacing its empty +# search_paths with the CI modes directory. "@context-intelligence:modes" +# resolves to /modes/, so modes/context-intelligence.md is +# discovered and registered (visible in `mode list`). +hooks: + - module: hooks-mode + source: git+https://github.com/microsoft/amplifier-bundle-modes@main#subdirectory=modules/hooks-mode + config: + search_paths: + - "@context-intelligence:modes" diff --git a/behaviors/context-intelligence-logging.yaml b/behaviors/context-intelligence-logging.yaml new file mode 100644 index 00000000..44b0e61b --- /dev/null +++ b/behaviors/context-intelligence-logging.yaml @@ -0,0 +1,34 @@ +bundle: + name: context-intelligence-logging-behavior + version: 0.1.0 + description: > + Context intelligence: event-capture hook ONLY. Instruments the session by + capturing all events as structured JSONL (and optionally dispatching them to + a graph server) — without any analysis agents, tools, skills, or design mode. + Compose this behavior into any app that needs pure session telemetry/logging. + Note: this is the producer side only. It does NOT include graph_query, blob_read, + or the navigation agents — pair it with context-intelligence-design (or use + the full context-intelligence behavior) if you also need to read events back. + +hooks: + - module: hook-context-intelligence + source: git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/hook-context-intelligence + config: + context_intelligence_server_url: "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}" + context_intelligence_api_key: "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:}" + # workspace: auto-resolved from coordinator project_slug → config → env var fallback + workspace: "${AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE:}" + log_level: "${AMPLIFIER_CONTEXT_INTELLIGENCE_LOG_LEVEL:INFO}" + dispatch_timeout: "${AMPLIFIER_CONTEXT_INTELLIGENCE_DISPATCH_TIMEOUT:30}" + dispatch_failure_threshold: "${AMPLIFIER_CONTEXT_INTELLIGENCE_DISPATCH_FAILURE_THRESHOLD:3}" + additional_events: + - delegate:agent_spawned + - delegate:agent_resumed + - delegate:agent_completed + - delegate:agent_cancelled + - delegate:error + # Base path where session files are written. Defaults to ~/.amplifier/projects. + # Override via env var or set explicitly here. + base_path: "${AMPLIFIER_CONTEXT_INTELLIGENCE_BASE_PATH:}" + # project_slug: (auto-resolved from working directory; uncomment to override) + # exclude_events: [] (optional fnmatch patterns; uncomment and list events to suppress) diff --git a/behaviors/context-intelligence-navigation.yaml b/behaviors/context-intelligence-navigation.yaml new file mode 100644 index 00000000..65592b5d --- /dev/null +++ b/behaviors/context-intelligence-navigation.yaml @@ -0,0 +1,20 @@ +bundle: + name: context-intelligence-navigation-behavior + version: 0.1.0 + description: > + LAYER 1 of 3 (innermost). Adds session-navigator (reads raw session JSONL + on disk, no graph server). Includes: nothing. Use alone for local/offline + navigation fallback. + +agents: + include: + - context-intelligence:session-navigator + +tools: + - module: tool-delegate + source: git+https://github.com/microsoft/amplifier-foundation@main#subdirectory=modules/tool-delegate + - module: tool-skills + source: git+https://github.com/microsoft/amplifier-bundle-skills@main#subdirectory=modules/tool-skills + config: + skills: + - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/context-intelligence-session-navigation" diff --git a/behaviors/context-intelligence.yaml b/behaviors/context-intelligence.yaml index 9cfe94be..985c7f07 100644 --- a/behaviors/context-intelligence.yaml +++ b/behaviors/context-intelligence.yaml @@ -2,63 +2,16 @@ bundle: name: context-intelligence-behavior version: 0.1.0 description: > - Context intelligence capability: graph-powered session analysis - and event-driven telemetry capture for Amplifier sessions. + FULL drop-in context intelligence: graph-powered session analysis, + navigation agents, skills, the design mode, AND the event-capture hook for + session telemetry. Composes the design behavior (read/query/design) and the + logging behavior (event-capture hook) into one unit. Use this when you want + both read/query capabilities AND session instrumentation. For finer control, + compose a single layer directly: context-intelligence-navigation (LAYER 1 — + JSONL fallback navigation only), context-intelligence-analysis (LAYER 2 — + graph read/query/exploration, no design mode), context-intelligence-design + (LAYER 3 — adds the design mode), or context-intelligence-logging (hook only). -# Include the modes BEHAVIOR (not the full modes bundle). The full bundle -# transitively includes foundation, which would override session.orchestrator. -# The behavior provides the modes infrastructure (hooks-mode, tool-mode) and -# registers the "modes" namespace; modes:context/modes-instructions.md arrives -# automatically via the behavior's context.include accumulation. includes: - - bundle: git+https://github.com/microsoft/amplifier-bundle-modes@main#subdirectory=behaviors/modes.yaml - -agents: - include: - - context-intelligence:graph-analyst - - context-intelligence:session-navigator - -tools: - - module: tool-delegate - source: git+https://github.com/microsoft/amplifier-foundation@main#subdirectory=modules/tool-delegate - - module: tool-skills - source: git+https://github.com/microsoft/amplifier-bundle-skills@main#subdirectory=modules/tool-skills - config: - skills: - # General context-intelligence skills only — design-phase skills gated behind the context-intelligence mode - - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/blob-reading" - - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/context-intelligence-graph-query" - - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/context-intelligence-session-navigation" - - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/context-intelligence-session-reconstruction" - - "git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=skills/workflow-pattern-analysis" - -hooks: - # Register this bundle's modes/ directory with hooks-mode so the - # context-intelligence mode is discoverable even when the host does not - # otherwise compose the modes infrastructure. The modes behavior brings - # hooks-mode with search_paths: []; this declaration deep-merges on top - # (same module ID, later wins on lists) to add the deferred @mention path. - - module: hooks-mode - source: git+https://github.com/microsoft/amplifier-bundle-modes@main#subdirectory=modules/hooks-mode - config: - search_paths: - - "@context-intelligence:modes" - - module: hook-context-intelligence - source: git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main#subdirectory=modules/hook-context-intelligence - config: - context_intelligence_server_url: "${AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL:}" - context_intelligence_api_key: "${AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY:}" - # workspace: auto-resolved from coordinator project_slug → config → env var fallback - workspace: "${AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE:}" - log_level: "${AMPLIFIER_CONTEXT_INTELLIGENCE_LOG_LEVEL:INFO}" - dispatch_timeout: "${AMPLIFIER_CONTEXT_INTELLIGENCE_DISPATCH_TIMEOUT:30}" - dispatch_failure_threshold: "${AMPLIFIER_CONTEXT_INTELLIGENCE_DISPATCH_FAILURE_THRESHOLD:3}" - additional_events: - - delegate:agent_spawned - - delegate:agent_resumed - - delegate:agent_completed - - delegate:agent_cancelled - - delegate:error - # base_path: ~/.amplifier/projects (auto-resolved; uncomment to override) - # project_slug: (auto-resolved from working directory; uncomment to override) - # exclude_events: [] (optional fnmatch patterns; uncomment and list events to suppress) + - bundle: context-intelligence:behaviors/context-intelligence-design + - bundle: context-intelligence:behaviors/context-intelligence-logging diff --git a/bundle.dot b/bundle.dot index c7d8b5b5..89109aa1 100644 --- a/bundle.dot +++ b/bundle.dot @@ -8,7 +8,7 @@ digraph context_intelligence { nodesep=0.6 ranksep=0.7 bgcolor="white" - source_hash="dba7ae999a5fd095337bcd9ede4c54b866044c0b31d63d20c4b0ef4483abaf6c" + source_hash="b8319fbcaf08bc56718b69d03a5cf0015567db9891a1b58f4be73f6412e8ebf8" node [fontname="Helvetica", fontsize=11, style="filled,rounded"] edge [fontname="Helvetica", fontsize=9] @@ -21,7 +21,11 @@ digraph context_intelligence { fillcolor="#f9f9f9" color="#999999" - beh_context_intelligence_behavior [label="context-intelligence-behavior\n4 tools\n~1832 tok", shape=box, fillcolor="#e0f2f1", style="filled,rounded"] + beh_context_intelligence_analysis_behavior [label="context-intelligence-analysis-behavior\n1 tools\n~864 tok", shape=box, fillcolor="#e0f2f1", style="filled,rounded"] + beh_context_intelligence_design_behavior [label="context-intelligence-design-behavior\n1 tools\n~331 tok", shape=box, fillcolor="#e0f2f1", style="filled,rounded"] + beh_context_intelligence_logging_behavior [label="context-intelligence-logging-behavior\n1 tools\n~497 tok", shape=box, fillcolor="#e0f2f1", style="filled,rounded"] + beh_context_intelligence_navigation_behavior [label="context-intelligence-navigation-behavior\n2 tools\n~561 tok", shape=box, fillcolor="#e0f2f1", style="filled,rounded"] + beh_context_intelligence_behavior [label="context-intelligence-behavior\n~236 tok", shape=box, fillcolor="#e0f2f1", style="filled,rounded"] } subgraph cluster_agents { @@ -73,7 +77,7 @@ digraph context_intelligence { root_context_intelligence -> ext_githttps___github_com_microsoft_amplifier_foundation_main [style=dashed] root_context_intelligence -> beh_context_intelligence_behavior [label="composes"] - beh_context_intelligence_behavior -> agt_graph_analyst [label="owns"] - beh_context_intelligence_behavior -> agt_session_navigator [label="owns"] - beh_context_intelligence_behavior -> mod_hook_context_intelligence [label="uses", penwidth=0.8] + beh_context_intelligence_analysis_behavior -> agt_graph_analyst [label="owns"] + beh_context_intelligence_logging_behavior -> mod_hook_context_intelligence [label="uses", penwidth=0.8] + beh_context_intelligence_navigation_behavior -> agt_session_navigator [label="owns"] } \ No newline at end of file diff --git a/bundle.png b/bundle.png index b0b34e1a199186d8c4dae02d3b047107bd26bb68..a6e08683f420b4f0376d6f91832edd8c13424aa1 100644 GIT binary patch literal 146541 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

x5&d`R>FNF1Dq$dnBg#BL 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 LKrdJ4cd z;}&@4$ycO4`0t*!r055A#+XBwL_HiH3%I z%Mhe5+ z2e!Vx{)UF;qORj2lDI;&n1-I77q+c#VX>Pflf(_%rY9#~y*{UV^M>2$c(dGOOts=` zPG;t)TZro?E35rPJ|};Ff7LR>J(dM)$CKUp7#4%G!!;rJiqCzt{`@&#JTz9VwY4>q zvBI979@F@bJF|^im1Y`tc6Q&X+n&eF?(b}$9v~bY9SIrLPxhC)-0xz2{rXixQu36I zQ~+Mr&~TL@88up+uAPl7|nKUHN(Q9cz8y^V&(3;_n{ zQFe4ZtFhf6%C&exlq>Y(k;!QOK!3ksS<8o=JwoKxWF;mZ)#1*p04Jw?S0uyZ$B%Pz za=N0J5MwhVBWx@zVH#YlpLNmD3@a#G6VTAyviac`_Q>sNclTSjZ+|Bj@)DD{I&b`3 zq}A8}+tJk1%kc5>NlT+RSIS#jS}HZ@>rLc4pR6>GV${ejC?Mf?t_lo%L{7=fyf>U9 z?-Bg{K8{?aRZjwsvaqlx?*4r9kL2WJaBEZ3tq=;)KY#wn4Lo|m`B71k&GpLJuJQbM zOQ-k~u+;@*Z|J9w&-P5cldP;P5fRa1TY#Uxzw^b(o-aP#-^P7Erk856fq^te2m}I{ z*cF(?%gbvspt!hLxkxjC&&lq?hn8B{PPP%bM|N&*O>He1mz6HK|KQ-@)PP6;(dz|| zJNNIqDlgp&iHUjs?3q~FfENx~VMd0qsq^Xn^3leaa{i~^pWkLP%+JsFB?)L%e0~0S z3)kbv577@FKHgWhxb-SgY!jN7mzU#V&>cV?DGc+{Bq*0@5X!wkTgdsVt-U(^9J;n9*?e0*Pj9R4`+q-vvy1UcigQKIGKR^El zhRPX96Ac2(QR{Mk{OZxSgTNdwX{m5hOmcpHej%@i;$mXbocJvt2CQVt!Q*UwE}Y*85!A(1V)SFFwcziBz4b`&w50} zx(aq;5GfzgJ6$mqmFJCjJ_v+lL(Qja*c=a64-ah!{9fC`axcM6?H>hWTx2~!+a>;t zj&`xXJ=-XgHc(+U{by$X>}cc99|;0K+pP&UNC&uY_7*s54<0-Sqn623GM}mv#CXnY zZ{gs;<=2{c*<6VHX?)d32Kn1X`BKj+rU!s0FY5;&N{jOH_SMw1l<@$vCA zdv^`!=2kHhWT1Y8OiFTcx!KvtN|KV2YGsDSR?A?h%PT9Rxr%hXZQ$rqdZ;%ztNik4 z1Vh2Kx;U{!H-*#h2c=|M&i(qPr>8d@>4QgYY-}tibcINA#URhf$k;pv$5~cRZedD! z7t{Lk%+~m5Bv09NqHLbGDn83&Rn%jBcxEPXU14?G{XWe}(i^m2ML5dwXmcDEyK{or z*w|WHTE_$w6cp>wTwo+)BO~c}&X9@1f&xCvg%+?YozIU0rvFY)C)C7wL$i3excFSJ z;(^|+69xwdUtBmFcdhiqVLyDRuA!l!u3lDFR$)G?nPkcK zSsOyaW7pl^Z_yDAW+kG{S>zwV&gTAuR)N8qTs{`{%2Mg*>&@AKYi4-=-&!{3R3b>buu+I{spP=X_#9HIX4kit2p8**7zDC6>)( zcw}T;jg;5^qrCh9IFUWi9JM;U^a*_!c$|9HuZB5;*Cmrl!r!O(*2GbS$gS z#7v6N58wn#lj2@^04E$W!MKm>aPAOtI?u0>!!W$T$|-}kou_#V8qNLXlq8&tGX#Xq zQ;pgK;$)g@1#~pHUe&@Kv_^Cxp=N5C#Np9VE3MJ~k&yr&pZSZpO)wDP6jSR;znuqY zYSh}fobG41F@2||qB=V}>rLR{pr$tX6HXf$85tWJ%PUl%S}tLD3p+acBXC*p%QH3v zL2pwL|K8mf2|L&uD=QVcouLPaK4k@k{xusyLPBGwBF*|w^h!21tmp5bA3k{0)zuXj z@8M8(uhqU9LqwOnrldSv9r&&am5|VW7Xxle+C|%ltD~T`~dqlJoKe@O;^7xm41zhuhP&U?lRB zEG#USmzUtsILz!S-M6)t6%<5w>dIFs1>pz;z+dC^yu9(MAW&J^+HOr%mnJ36f>??F z^eGiIzC-t&gI8|Qj2*I%sD4(utL2l9ujtE=tp?RW3qc?1J1g2YC%5v~#bb%T}Q#i_wA5@|4- zw1PlnrKB+1?|z1OS65e;mDzm${PIX%N=iyWA>5m}zP^68!KDlC3XZ3R`=@`tA3=0iSO-lp55?p=pTskHuwMIjk5p>E{Kb~BWWPup?^!WH#Q&TfdB*4nj zG9)q*DlL6ibxzX>R*0C9kuzTV`ZHJ`3A_P1mG7PSBXV) zC$~!Qoo(*?SRSpmHlU@Y1&c^VM%G)j3gXC2d;1S)7E6p22S+8hs0tY3=xF5Swg)gD zJ|SUOSJ&jkgdEx9%%L@xv%~rEPZmpFBOtT_cLk0LVr7Ns*|W{@(jN!YULb)S9UYB` zh*()!0js6+_L-`x>ZTLMT{3s>`^r#gp-y|?Cb@Ouy;<82RXq4Voj_t=ZH=h-I=-;5 z&}8lAevLBqg5fRF^}A?pnM+^-o1!p~X8^;1s2})(>(xwta%YvpL1tK(JTPX0@&!5? zD|VG44q9?GIE-o_r}Oj_28IFAda}%@6n^PwNqrX$ZP)1+I3YI|`K}V*e_yry*8*rk zporpncfJ|;lh%j_Xcu2IGc#*yY8HA?1=1YyAgO6>ywm^$kp+pnXmEBeuIlz6vbdNS zAD+kH1#YtsgK*{u;Iw8Jyl8U<2Np0tfA3Y0IE#sifpn-f;SqSzubn%6oan5CHr(}D z85ub-)%Eo*Ha2BdL#U$aBmvZ7h9avrXED}@k36WSoSDEddq7@JZ;YCh+m2_`nilCc z9`JUp3Bsi>XL8!UiEN>YwB7nx_`HIK2A}iakK5NxJF`VYz!Rm`)#Zl_9URAp$A&g( zCM+zrR;ymS1tiziO^rBQOt86nH%NY$IT|a{qJ~<$PQ})uzkjCueF9Y^&eiVP=V{_m z(9%}hj9VEyEZm7|l?34-1`h%cDH{JEEaGx`7E#Y_+9t(jdvx#NUkrBhso>C1bv3o2 z=!DV7L{DBZ^t@bncD3{Re6jskp7MAeV`1Ul)67=eKHTYkQ0uwx(_KptL$S&*l-E(B$Nz&Qz)}(g`a8abC zdP8k8Ne>85dc&fWquE`~`oBPbJlfQ%`6`TH)Zm?>hVCCetZ_MS{(+;@7D&Qs-x0Vq z`D9_yY4UG(EQ>M(;*MML3#Mr-k?ZeYmJ(9DF}>pO)mES|kHPpz1suzI?^p$S$8H%7WocnO1lb9{%L;wp z()aBtQdWBmr) zQ%41b^l7w7gAiGeyJo=ubas;R7!S9Ihn?X(dylb~z`^mF%V9L0>+apVcnuem#ksytUQ?-Sp+QZJfNW!qg>)YFT2oF+oT zw4W#4;%>=0pnSrk?y+~EN6u2@#NXk zo(|kpzb85|Je<>D`@+|EUr&-Ci3^rE(cswnU>kFZ^f4R$-kv!DgXTNq?&xm+hucdg zCMM0zJLVG$Q3j!E1}6a)$*vUBwaB^C2zD~2pf;I%sBMiLe1Vk}9=>#ce%}1a6Y$CR zah}IU2ixzr_<;TW1oCdCUaj7E*?IOZ-Zb@N$V{WF>)Jx=NlSVpgW40w11zi{GQJwU z4R%OJuE5nZ?rtC4CkN{zpk!RX;Ont&mrWC`1fF)f`8)1A`;LBJ-v=rxD))pYhCz}# z70=T*;+mgQ1N@p}6l2YhK{usGdS)iS%f82(c&VQ5?8wV=oVTp~AT=KxyGc^>$C?@d+>to$#aV6OI%xDr=>$(){hz= zKVk(oLSx12DYlT1ksKNvlv7g5RO+d=U@+=4F6)xw8TO1(iq1(`OKNwyc_EG&P zC#Ma|N>5i%SO37!Ugv1LzqFT+Lk2=xSJ$7C68?{RZ8+)7)+?K;`V6o~CQ3zv18Yn3 zYo{-H>tvWV0##K{9ZszgebgSh1_or@KLrl2Zleo{L7{`|*{uy7pfKsW@&RGz5>hODt}jP~0!V_`L*S>Wrnx@ zFHcV$bVLH8cWOUJ4_Q1nig`Yisi3Iz7{YnmH&G<3H^Jd}q0*G+`|pA0{o;ZyiV0a- zo&jHXlb`ib%rL}M1+JWsHxS$!TbOma`cM3M%a(w z^8Ulsp-QdpJY^5uyLW}*8J?e?KYtD;&Z6H#%GnQ972#%L3YzGB{_&9YcxSR!=bU|8 zGdtJk6(}e4&7g|X9=Pqlzh7}VeqAd8{)J)3#3ZjEt<+**fx9*?I$AjO!7=9kwj|6KcLWQ>F?QfJDw@|7LIUQYBy$+q?$eKJA z;ZuT+KY!qFE^M|TXym#l-j9bep`#-sar`>>42U2xF|p-}@*8Gm6B3H$nVG;S-zPMw zlf8|0o!Z3F*w}2@%CB9m9c^re+w9AWl>V+ z<>Zx{=80SqJ%9d1S9dB^7z-k%YP=47XATU1cz8HHE9)@?V5pG#`|+jAKfsB}%e9|b zZ>y&ur{rTOsH;;~mI-oUMrb%XnwbSgR#X5lVPg~C(D1FUj@N(?*cXJV^>yG@rl#V- zrdp3lnwXgIs5A%YNV%=eg0@b1S$R&1<-MoO0cFF(s`>?mg)>3YUzL=UEG>&uQpo$X z03atXFArdwzn%n*m`hx*dfTQtaqNC-Rl;5R5+gUYHXZ^$a=6pm-u0dQwdYs}YHMQj z*8vE5&g%v=exJQ^;{OlW{0k;HPnkPeX(l2fvU|?Pz!q`&;0|=GNWnLa+(ohL96X%%7N)=s?k>1$-q zcoJeIU_(It3cIW{$n`+g5dWWzD{bve!Zlf#z{763XKk7A9^=cq7|Y_~%_J~(0J^n* ze*5A+w((FVLnDScC>0M^Qz9b?&P{E3`7m&Tf?S7snwtLnQGHJctT8k^3~&|u(^nJY zBjwU@6&DML1J3>^{ydP{V_4&(;#+ zKPMN=GBGm3wzdil30WrGHTxJWI96DopvWaEOHI@VXNngv&^9*y+#i7(8XEfI`Qv%^ zfduQ0V&Kb_gnoc_x3zJ?}D9D<9J3P8nD2n;n7!|HemSu9!|CM-a-j} z)%FcvaBV!Q93Nd?E=3il8W|k?mW3lLQb^WNXK_C|-3mvu5bnw_2E@lM4%Lbb#; z27iME*Nlu1y@?v-R(BgUACd6>G(jBW?9A56Sn$C&v)vfM;>9z&tk2fkg-1kSdS3(g zq(v5&C6kz*nf}nK%=P#X6WMUo!cy<;jbI;D`jSE}?&GuA7RX3T`=#<)NyDY>`tY;p z4}jLdnJFj|<6>h1 ziIjlJ<5{kZgK8`L9)K_S7I${mmZy7~Qu9($0C1DfWqnsF%1vi1Q+hH#pB_B{RRO(c z8O|@_3?OAW){~n0ySFIddbacqz8NZvg-H(35a3#l10N|6w+nvP(X3yXsRY$27guL* zZ=$NLh0W4f*Lxlwq5u($wIP(V89DEkLf82F_b*1EmWBoiFmt0XaQVJ^Mhz> zql1RQtm8tArmf;g+*pyQ{|jML1$p_XurLabw=n<(4R&#|J2#yb3XX5DD=!5x%Pw4Jg?NUL2GYBoA-u7+%G zel_M%To1l3zzCo?)0*7u;H?b~S-$kg<>B{h)h+(?#KzH78r!c^;p4|>X6wi~7gv98 zmbbPgNUe?0mE~pGym;i!NJ>slOjOeK?Mo}OoSf6X0=H{T=CpxN9_{3~Z#7<+UX|*= z;hME}v5*7Q`Eb+EP$7f@$A7Kyr5JfL!!z;CdFez#2YGg!Yo~>&$q_&or~>*gZ{@P+}?wC8&3uY-?dRuf%VfU`O0-f)~L1!f7W;S zY;X`fJ9eu`j@a7T8X%#c=tqG&?A53`L7ZXxMKPvf=D%eq$k)-ix_RD>n+u} zs=Z!g<8_bVa@Q*^+Y%Y6&Ah?T!Ta;bqS=}rYowy<1+(>88R5WygM)+lY+GJ-_U_ln zxHuO5VGKULOFwkN$RhRD&u>3$x@$Q%7EDr0+hAc~E6OVe1^RE!r2Q!N@p1d2id;9H z&O^d_9`+rwo6Rh&EL^NF`zaMDfJExQc_eD@wL|uZ)r?S%+8gQfu69ivQQeR4fo<1;nrQ+ z#oPC$t1Z^{VbX-Ct;6cT+It>;>(;IKgaoX{r+&;SA_T;ELK?7l%*@3l+pRN+k+F`~ zSA0fZWz8?!!Li05uQZ=lFrBV3kdZvTMZRRKK9welQ(j(PYct?-yqR-O8N|JpqpTkl z83`QX+Gs)C9AkFdCQJdt`x;ca{lRkp2}Z7tmpUOyd6Ads@j{ExAl%TfFcJbHReAZv zCDwSyVtWUN(`89QP%5C7LP5PHSo?5oGK%F0y4v`6qfg@`u~KxhEafzP%PC4_o}hUN|7^$h!_8Rg+oDe!ZVEKm8e z+D!U8;z07~B?VH8xsX>Vl~XJ@ar6zd4s z)h2%mgt~Ai@WEy>u{Vg>$-u4L^f&GoaguP_RLxlr9AvL@StCG!;kvH7<0Xv+r!88T ziH?c$ z{%dmG&)4wWKN3X7rY|<{wY0X$^^j`v?fhE{aKUc=u76`tSkz?R{WKy1f4I#lC8fTA zzI>uGZedYTLs8h2zM~Jhx4)X2rl&^#Qv$M zsKmYB_XS=((mDISsH=gmw%Q;R@eTKG-(pk4LW{Zni7A5PP9m4}pPrtW&8?g#dW zdkUw8_I21K%&jbLsi>(D6XRKfie0VpyJkxZ$l3**&ip6nC@DGT_9GCo1Lljf_wJ~_ z^!WKHUmR~*wbBgl=-tXfL|%Ik2{vW}z(jeBQYYQeZ!a$3O-)g2G}shhVa@_9SN&J( zQW-3upQ4YktgL)2|I&IQyb~WE-&()N#?ErfRLA;a$;j3=px)rY9_Z67T3K`p|GA;Ko zH#kgVd7M@@syMex^LklFeJ+kooe{kWcY~q~L~k|uCT<~n>u9n(=7toNWtgsdh<{(A z+^`!B(TXhqk=I*=g*O$SKUZNgPpYrIhDRkb(!PGp&=ag242T&Uvr^~_+Vms1cMX~WL_LQcLvrD0iXd*Vm?s){5el4S6HioUbDs@FqGJ2{GXFGE=x7a zY>WV%zcIeJ8q%C25W=NmvjgX#^tZ<9W85TpG0n&8?!L|W@CASYF8bmZ1N+QHdoO6G zSUTGrUUI|MUj13Z@CJUe+4_IlV_~*VTvEE;1;Hq!8jD*3U!;PFsek>dsk!|}F%N*< z_a2oIa~U7D`l0tS7V`En!hQYxmY4DGpbP?H+J&}nVu9OB2*P95`2oKMAa77)3-l&e z#~69*DG!C(N$TlAI`(u#aW-e8j^>4IZP~~{@mN$D&@;G9=Ui83Y+`(GVzMuuO-)HD z5;t{F!gE4dMCte-s?Q@BhinFrStezsJ!eV$F6RK-&NeXw3|Fq@k4Gf-R3Eea$BSKv z=M~#N0+KJs^X$<6^==IfOLHmKdX_jTDOgw@*jDD%9D$3d-PP0W7|Oaw9^RgKeTGlr zEY0S%ZsZuNK%%jyqXbd`+sxM-9HK&L34nntpOBTLV7I5hwj5fL7K2YEB$R71C>wVsW!nCH&{7XXzOSGh*i_(c^F5j~fX z?6P5DE6m9u_u#Cp;;yZVjELw-_nWF-oy-&^)0vAZ}sq*=hHPSn7KpvYBvE%pJI!N{IC zFKn{H{Cp{lkltm5Y{Qkj#*-X{^{5HGx5{*1dDWJN!6AA&cBrjiU-nWh1 znZ<*Ea5qzLqHJach$(EKT*%IzBkbw#5Car#kRlxx)&qW*GaFDM3{YH0$HvgUd1E%a zuB@u+cs|r5r+Jc5)$2M%SY>Y~h@n#aH76!!yl~oSlZ1qTAzFq_$#nW` zYtkO5EIy0M?(*Ws6EH>#xU9n(L*r(91}mBZ#=OR)EQjq;mke$TIkQM)@K#zWkGrW#0MtWAvU=3lRY z8s6#47f`k0a^pi}FwwJ208kDjM*!=kDZ9y8aM$l+WdZmp_YK`q*=mIWvT%*XfQ0t~ zhr9&JSiL(hs!iianO^G*nOIMinfZ@t@EkU)_Hf8}Y3S(i zc%`-j?|9(z0k$%e0S>IPnme}KvZn)W{(+V7ASKJgZHSHX#0-Fu>(#Vi-=Jkv6Ctj@ zlj7peZEmWcWPI|+{N1Odre>mJdNennlh~)k=Ad?2@%EX&!+}d{LWc~;-{0`bzyvQ5 z5s2EEy~Eq|bdU@Zk<+2};H*M(-HTgr3LEZA72WWvQrtLzBKz`qida!|ewe!XI93wu zU6Ow|DYr~)PrUK<%H>h%`JgpxKVM(R3kq0_ z%d*Y=4ZFWKa#Zd_gvQgKHZl=ja>I|aZ$hg-{Je=4AVmP(vtH>1nIBY2DxSq8)3!)c zG$<+k+R^nBNB&YerO`d1DV5!0I>hk-Yo9Etgkr^ObeaEvAuBJx0oWR#1JYdussAWn ztyZW8PNW`likYN|5;PLKT(gGf&iSM^SSR1|4zbH@W`gBRc<`i%t_ zL|>04Q$dl%$j8UX*xTLx^>=D(mQ2D!%txbxgQ^Wy5kOHuz64J77Rd{MI!j_WTwSQl zMbO1vR?O5mQ1D*B6%>}HYhgflQEzkVduBlA%dMfHtPGTiKf> z$)S}n0~^6+eVCT*^)hgiaTO;TH8vrt1=dgPNk63g{aqbo^vm-AfXgh;1{n+SzMdly zGaRg}l)HZ-e0{CVlW2z>TCIz?spWR3UvA%6@qO69aH8el@bC-nZrT$wT=I0+YjgmO zA~k-BrD@cre18EZi$T8F9$=I)_y>qGeE0Vgcq-(bwkE2DpwQl-E;`-8-PHf`#n4a;+oB~~7CW@y z1LHmZs!FAs_mH59W*Ai0!DisiHR5=L%Qhy>0QyO?|tL~pELj~AOt zL!m5gnd!9ZmbpTbk{bZD@W5p-H3dHqF@Vg2G@`-!eDts7qIF5BK~GFxe*RYj11(uu z!L4^@bq8P!nB)L^(vUWtsru4h*toSxfD-(1%SEf#DXY>tdeXDzpbxZ{qP7INFmb-3VIqS_nXJ>sdMhQ zp0Og2C6x=`T{$g2?_>0OWc>iZy`%nXOqw5dCS5C-@-_PH zjd(F2-LVz9!4##%@#y1$_t(|a!yvD&=KAr7R7y$=I6dR z7a%R&b0_LmM#gKvAz_oThfnls_~JrrxNTDj!o$ODuA;m`L*>NxV9s7u{Ntc5pDs+G zLfVOUUdI#j)+WQxOq$yY&uV~5mgKEPvUjztz}nh|b;T0@1CKGmr})Ithx?&X z%6}_iGKzYy$y*HepW?_AaTI9*-T~mRCf6_cpcp9whPDepV8)W3K`oOoT4QT+ECTp9 zAQJ#Gpc?{DLegQDy^T>g+aNxYQ4MNZB=74jCMQ=?Q4y)i$i!q|j_9uDALn;E`w&hC z1v5hNYD%I7fGr#!9|tno)TK63BE%b{>`UiIsWeq-04|Xb7YAusnVjNlkEeu$K-WBK z^eZ@$@y#2#%N^GJDZld%3o!zyS+QbEuRqUP&&_STQjd#_1-wy@b}@h-^?PC$ISqd{ zd=qS%w1#<4Lmf>}ca zPDkAEO$_q%+}!<#MULNb2OC_@XV}??HNiF+wlXIs#`GbJG3`0tN_$0tNe<*iwcunr z)w;VwfbRFQw0wKS36L{W*CRQ`sLaO4;b^`8+a-eWPL<4lG@muMt$AGk)Q1;5ecwCQ z2AY4&B!+$P7s(oOI@)$Q=@*2EfellfCVDnLVZ{y>ELjO1t_K?rx~&#+KVd;=m@66ijvKN zo;uq&_JFrFo${F=7*%T}%_#BF>*}VDPu|BSwE_u<(0wkm@v>t6@sh4O?rX~^hbavO zB_*jOcDarW|%G{(mt{|y~Ew-2#tMKZn+x~|=k$wNGLn_?KW9esU(1_orQ<17qR`QWOl zxksL!o=(a3IwQ{WE)PUWX*8-Y$@a)5BSSBn0foW(hy$npx%iU`8UIhRR|_DAj@{c% zDE7f@yce$l6g*Gy@z*wpaUpNsyjfV#9>LjR|{iR+iguq z$GvknjAjn}eh(}9FZTdSXe$?*@qBQCo153X5a`Z9tukxeVA*gMkI=M*QYNNdF`WE6 zpK3|K0DI(D(MBaxd@`4xUqFE?Eyh2c2p+}{D%S-|J#%lG7l_);l{lvxY+2sDgS506 z<>Y|yf01))Q48Oi=ptkys+Kv>jz*$TFd^e}mtUedETPICDS=$Z$G) z{|hY;Z95@1NqNkifp5eh{|);N76Aa;;uxJ>UG;HB2ZcAH&wwrPITE&6fSi?4}b>Acb1B znK?NsKpjtfATgV~;r8veLtr3+*IG1h=p2}IrmdZjfB-n^we_{27i6Z?)>ny8y>VH;*Ynkv(2n|v@K7=z{bXV z(a^U;l}n!R2MnGCxXPg_oik_#hSJ)CIuxY!fDcn%dp|3XIL`j60JBD_UBjgmeUKd}GO!nXWZ} znQ6}W8_7do2(%?U>~jD(Q7tTGap8x=CV=ZeL48LmljhVK+63O9NxBWZPk2JY*2;RF z#qW!|2MB_v1cfT~R_({83Ob4MJw6E9VI}D;Kq&!riVWx@fYbByYZ`jZ=H>yR6Y1va zdly;d@Wa14kDaejnfrSRlTA8kaWOMIjzhL9!qttIRad?)5HrfC%wBo9L(? zwO~u%`%caoO9OVK&er;f$=D@Z=TI1KiT3y)LmWFPA3PLSTUYl3gU!~&k$r((ZoUOC0V-gz`%~I{V|&`EJDST6S58CmXys^Q z$e>pi8>ErKKJto+G4b(0p(0bj&B=XbeFC!mni_6)snw@Zd3I3TUHQoJJR3OOko~ zV2Q~GnAn4kU_cqv5=Mpxe^gRB{ulkWR($#Q^oEQV2s%l!Or@l(i%1^=Fh^eQo1FWQ zJ85t5B&4Mo`q($k&r3c@0gyy6Yix8F7Xn&#viCQ4L(+iQCY3CD){S=wYYz zr=^oahOFY^+)gpv&rcFCFD&4sHOl71KAk!8UXe= z2K>M_*bPRzxeivSDeLN8cQg~!j_fOzV$hZ~KRr8&Jp$M~$YUp9tG_H2 zOYi?qvr%aRk=jJVdXRuVH0k&iHxLZ%Y)!gWo|{hd8>Om!GR%&xakSCZMUwJGGHT5) zZjEP1MgfBJ&UAy$&Yai@?_!H~ah2M>q#JJNe`XC&-S8TLS=y~dEB-6__~fX3hZhmU zL)13|T3TS&^`#}LfZh(N|9%_xz3T7ZA!?Zi4DolQsAS?Vtr`?%o=(Y|e${RocbldC zfMIEw@Y7-Oo)86vi_2|v4bbej&F2W+J1!}!@U=hYW#T~AzDvj8zrKm{Ap>KD8eN(` zK|zh6hoMhxjp$B*$kOr>SLG)aHK5aQxw~=A|nH@038B3TK6Z$qr$@v*M-b8hM24*SIdJn^1nbZjs*ft!a5n~9EYBYnuIIa69y zbwc4C=zv6p4Pe1n$S4QkOkk{u^`Kq^qVk5SDxj2aZE5kS{hfnH4VVFYmq*bo%&$Jb zb6DvcFKYOP?(}5cLs4En3;x=pEI6XPtYpD~YPi!MWoX%tAFBwSasD>d1{=U0dujF| zitEoBdj7EO15*6*3^_KiHe9SDDm$nX- z8)vT*E!{JXfz2$l`aeSxIOlgt;88w;=heZODWKsJtg2ipJAcl+-@{y%8p{r_<*F<+i6B1P)Z`5RShVKQ#(_p|(9#S-tD&hW-`BrCPfqM19jgOri;Igc&d$I^MAEA? zHFO0UEP{4vXdHVFFkEY^9_YjX!s1M#AQB#SfPA*MQv)mYrwA<&y+qyo{o*fAcPcv2 zFA7>T08|0q1k|7I?zith>W*dG0F4WP;{gp8K-3=O?Ty=SzcW+s5e&LP1Buvtai5To zT!PLA06bArQGxzsP97dLS=kU4R7r;RUf#1Qr_(nm2xyf+moTW~=n3dR3kd*uK!ZsF zx2@dAkI56DjR(t6>T(#gofr!W3*U72LGH=|S$c)qr%$ZwzfiYABO-Z_MFoWZK++ls zbQ#*_M&l)VpzT#$9MehC(vn&6!`@dZ2H zwAR|%3fc(317p4QRr=g*F!D;b%^KY>N?(rr3W@^&-0j=6TJU=ph9Muv61EFb0 z&+zdTm6X~vf$tjv^7ot^adB~SkJYs`aj}c*yKPKb4Z6Czs~a0m_V$M$0}ek*==--8 z;OgRZ*lruNDe!|h5rL9D>FVo)mPR1f9>okzNRUn&AhJ$Z*a3&bz7F-p1879|A7mwE z>|s$q_Vn^nRa5Kg?0ii{rTXa;FK9sM?v|Pocj5TwnD<9p%IfR(}@aGAjGW# z%}uk##y93M)TN1!B>^nMdcnfYyk5Sl16?<$>;LJu2K?W-9FO!WJhTuX{W?561gbRv zUQmV6Zre1(0UQf7Ab}vLr>onNaC4M@!Gz`yCG$W}I;zjSD+)*t0jA!P0CfSRH)s#_ zf5zO@+$;oo1*g_-=H(6Gh09c96B8T~?%@=n`(SU=DHpPS%k{yPQ&T&?I6VM&fdN`> zqRa^NPb~EQb1W!XK_a{TA~q9rS3|r51AB2c&rkLixvW=OT3RlyxdSp&iY9*#rz^HU zDv|JIo!C*{R*H%uM69?t#|7^#j8y)SFxCNNFUTHvoQ}V8CtTH|gAVV|#6+_%Uk3VP zZkA)$P3;KI1+p%HhRFg5ocx1?NZX);6p}ejH8;Ww zT;brm7C^fdKzmvfZX6z(R@K5`>BTSntk_s0Ev;F=`^n|iu-ALh@0pH2O}d*~kmFNh zb9D8a0(5$K;8IYe5p$Rs0!EM&9rQYbE1CHc&f&tQNKeo;G!&K_OZnWtn0OTWcWsO^ zj|zgJAvgF(Z;JI=r=YwXgB-93Yv3CTpwPhRp_@s}-S!+R(guDJxKwhFj=XGp(kY## z&(z!gaBln_JAP4|^}|gl#wld}ki@om zE%auGbkKCjfRCSPiN<|`kH5UN#jx#vvzqqr=PBWU@~~d%{!;vj71L+H^(tjFqqK^} zSRwSG*G6E^n=Lj>a?oMdXuAHz!`e}`$^P|TwZtZ@ExY4Fp zIV&b6#Ji}-95l55>*XgnPodh8iHTRpSyw#BQ`NlVqvNOG4QXGJ&H0^aP$jVErKTWi zJZ@Ux%QKh(zbat+t<`MQMg&X6GK&Iw+dwM9Yyfl;8T66fY~`D=UwJl($45(19Z~Ul zj^>I4N?)@%x_9Q##67g6^Z?F+*YQy7Uz_#c@bE-xRX&s?;cq>qASt9<~VW7usAv`)-jG=66 zP`obY;uR$&<;1EX9t1?Ze;=vFkDNY3z+^dhx$yD#^!GQCGu`=EZpPer3%tMO>T?LC zkOX))H|6t(5LA0?72Zv-KOuaOrN2Jt%NBwjMa-_hpOz(BmnqlvZG)ZnNMP*e-pz|z z?t040+vy!8WozEta~1MfQH{vzPg!OiXjG#--G_J&=RLwBB{MV^u&I$hx5J{-K`(?g2+f+WiA(gq1yATnrbYIg4G9 z#3CeE9+9im-Y`RIS^53M^l7)vYI5L;KHv!h8?0xA8|lyGD68sQJLZY*o%s`#WH#SJ zWM#+`&))el-WNlgm6{JuSHuSAcD<&0{q`!4vWif>XXxOsn4uZ3>Fe#^H&*c`F66u< zeX3fSN${o-UQn3*H75mH@TPKzrju!|TGmkNH5;3;ppvYhDzvcd=SOIDhTAcN>Kj=s zxxqm;MMaO`KZ8ZHZ|EY1C*>y9a`Q&UGjj9uQ_~N<5lX%iq;&yY{>rd_jPvw)y?~AfG%MTI`u}<*p`m zsBjGKU}kCWMr}$&h8EV09xtD@rr|p;yW362WN*&p!lOb7EU#X{Zu<>Tn3<1XtzG_D z-}f!^&gPl48!_2MeKgtvkpCbTS9wH>O($#TPCDkpxpbGSJMI$>e{;i=KP={T#b*$vh2 zb#7nsOxoy=#G^<~Y`(cE0|pt8n*ZMzUzxd=+t2z{vpFE(r+jem*pKiGTE zsHWDgZ4@im01Kj2k&UPbSm-T+0t(WrRF#cL4L#IE0YyPTnn*`_5fG4GVgp2)^xk{u zCA5U(o58((&v)MUj5EIT>-=~!#va2>RVG#_X-Zt~#7i5~CEm$Dpr z9VtyO@Z{I<56+<1ZqQ#$jJEabe$Hs5Tjn@(j%LthI(Rd!o%C_g!-WVykN3Hf=|umK z&>h4{s;B!$ja4|ogQ1tJ8L4-_*nv!PX?HkZfSW~1#R^H%c!9jaQFbW_oG5H63{Bd! zA!@*hu!zOb?_ZP@oro?TdgZ3PzsRP0i6|)iePtECeq+#mENvKKSUWge>x1s{Gio*{ zVfal-xmyztyF;4* zhDh|UiqTr(&o4$#1O>&qqbG?6r0LspjmaqyMwj)AtlE>H0~AZI{0drDXO?T(gNzwD zP_=M~Z&wG#SQ|IFjSXP#`C&3H(RhU_ zitmy7SB85A~rSbUjWBUCN$h$A~qlP>;68-tM=L(uhc$9i8sWFP> zSE>_!A4#*w9te`7s5sl&&g`Bnj2<2@T+ir{??71JjMd82EFF2l4Dw2GP@Vs^?=e&p z;amUy`_wv!k!|w(XsGo>+aC5h2jE+aJUgqPMLTGA9dXi;xu})do*?aQQ?)e-7cqwM-ox5^~*f`WHKT^Wn;PU0R%*Mcw9K`hb~2y%t%C?_9)^(Vz)58-_n*h%E$X_aQ zd-)CM0i~-!UpAAhBs@~mOAk%RHqQA_WXWhaD8Z);4S27o^pw`I|NQxXxF@$Q+V^$q zL%?nP=}8MbS7GbkQ}ZDp9h9k+RrI7K5yUB4_`oE6<%;p6;4$2BE~C|q#vY568}<$k zNpY(f0rTEZI?Zw32aj2_B+9nyL%dH-Vt{`UatT4V~dCk8-!aIo6T+WkPg8ylss2Bu>9HZF?*i0E>9(qqg@-7kNBS_T@d&agPV_)$x_KMp zkXykdiNNmOZ^xtk;U&c$pL%C|`Cv}vdN1guND{|GS!us=g09Lp4uurDIRdv*Y4b|mp5d@ zzmaJx)i2KBj=5^JxpbS*0xo%z-A7{-(4sQRmotgxKc4SZLteVq6hrin$wG6{zWuoL>s+*%Hl@D1! zE-g(T#-qcBBZ>SI3*^8ZE#f(@z;woRmJs$BZ2M_6RX1K`r# z<)e{TyyDBAbN1S!>8H=y;xOp0STJ`g$}VffXZ!e>-AHCfPS2HL@IeS8RFA2*3Sumy zmQ*#{l*M1QxfWU$@ANaHIIs-eRudpiFClE+`VBQyFuO;EJjNc>?~bJ39~8h^{uqxt zM+3x8(l9HER%++9rQB=XxX81Z?q7TMAv`t))FO%w0;0AI!Ps>#!YLv^kqQwh>f?!xhcP! za})!%fSe%BnNx;~Il`}7Xg~3WwBvp5NoQiU4>fxO==UIo7fsl0+CQ1o?~iXHUqs9L z9%+)W9PBSvLCiKNgkQ#sZNGD}?A$NCwCu|s$RbqXRPH>rGm+>?0BDQKPkYx?F&d&} zvCsB-pX)BYv5}W&;=Vp#0C&>JZJ~6_ADeBEqCmeNOC+u)*Rqw*G>LnkJL9^OKIXoD z)a$_rcYG6Ov9f8P?0~ebZM4wxEmkNP`KC5%XB+fnTK9oi9#+__sil^UfM+y@qWSha z6Y`Emg(4$A8r2j-huuk4=*X;fTCCcfMP5+xAdd2onf8BqX_+In^{H)r3jxW>MZK>X z-Igt>PQ;oo)_wiXJ9ugOE2QmNpxzv57UMZh$u{5`JGU@cYNwlSZbZ58Of8+p12d70>_G%kW3%jw#{+6HLIPdH5$hRP=_3lsC%`Gu{C$WgiyP*eX zW{QVgG_JfI8d>^=-U&OMt&gm)bG7cRm!>CHIM3JfSJ-~PR(onh9ISad1P^l{W6OGP>< zsXVpN3)1u~Lj_a8hUI*Q6(!oBuV~pdDEPPw@Q;MQjw@H|!zm9+tL7M#G8J0vOk$y4 zZr%T(2O}ktW3#heZUb5w0!SxYqH|V}HEO{4{iAAl7|XMqpR9+_UGt#%H($mwgkggY zHiZ*IcKYfN!I_#K}fe2Egjxl^b*u|vgHQ=%AuH(Uf{DBUrmJMO1VkaUa!Qgu|ODqRLFGezm zgi?Y*XMbA-13>jvknPiP*ntz^zl2sNA{cpz(B3}s$Lr`QDEu5i4G6*-pTce!wd)^l z1jQaCtJ4mYgCH(qr=(lmhTt>txQ^Kpn*kf*YwZEIz#HeIEUEZ@Re0^=Ytu7G>8g0%fP zu2PKMp+Rz^|0LyCUc3sS$bQa#;!Qn^}=av$Ahv!BO%v+hT;#ET-LaEnH{7W3}-l zxAGO>uebYyKUabHE*UNb8WXkRHB?wdtu`+imQ`KHSI3Gw-Wj>k-d>&R6C^u2DNo+o0b#sVn@?2foNqf^wzCAK3F#2dLzgj4o{b9+mpeqk@x zCiXA`4@0%(e3f;deLi|?qA$0KG#rc4_8@!u19^owYfOFg%$u+<&FNf-@BRt!rsWS( zJthAY-sGp2F zCF7zXuVI?E$5R=cMjq&Yh^SM>L{nDT%y3tmKklcuToE`17(CP{+b$6pma>w`u zxCo{sr$`9xEH={GoW{ots8>DO>SHV4X)hogJ#+QJSD!;_%@9pXj*BZ--vXVz4YmQx z&Wx>JN1#;1!;FvFdq??h)#kQ;z0O5ps2)Q$1r)vAeR=qv2*W;zK!KUlIQVX-dkxE& zYtcK=uSiY)xaM26vyB!YC)ETn%S!@Kdbma&@AnMkaGN4;Os&5{&FNTT(~IZcgUPmB zEX~m#(EIj+&VM(FcxS8N2<4!P$zIFtV>lgys;)J6g|zT0;@f)Tc>MM!^R~o6a5x7z zV@?e47We0yOf@<1v$BA(wq4@LE{koQZ&l=P1P#VNDG8LK$7+Ja$0}}|*!nqk;QIK= z>h&8pK;(Hh%)dxA686i;6W^i4ER2^(GHbteSgGCK;WYA`@1UfalstiA>OI$5Arq;rlyl+YsRC7hS<|fM+WQAgb?^oyPMJ`};2qFKd3F-!Bc1;ol_42eb>K zLkwC;!U}hl4tbpu78d^fF@;`im`1zMW26U>RGVZ3riKt^oA?0!K=cJHW0>xOAa2j8 zSD<}bvzqErefX?zp=EFWeIjYTuLz6(sjn}LoaruYlV9|3{Bhj3oq%DC-<*!!QasI@ zv6?0(A8YFf)PVKvxrlgl>C}wmWRsg&Z4s-Xo8v2EhMkl&qh2WZC83l6A#3jO%v#V9 zj6#8}CcL?!%+;UCu5IYJEsLxo0@4J^S&ZwI!_P4iSo^J?!QMG8<3;k?eEP>R-S}^E z12=GS@m-|ruKi)~7LC_~Z`*V7i!oOp4ZmzazHM@!t#l}(>n$~r4_gG|nK<@ZqfQfG z(Jv9lUJXg*_XX1hq7y8ea|+V1g_qph!bDZll2bqE7LBeYDf=UacZw%@4L&Z-6vyA? z34I$MkN7zI^uQutx|%x{Zi6wXiLX7L$iCLUWr#Ug9#W|Tng8^a{ya~4 z`u%}EpEu5F0Nz=ognRC0R{$@?Q89Y}=^Vzfz z^TFuVGRH-GykQsQLW9hUN=)Jqz(1xIX2lRTEBY(K+QY)@b#nCbE|Z4eo~3S%yEZlF z-^8a?=19MPwkx}c>}m>d*Y1n}&}|;dH($j_+UrGrqO6}spjwvfiMN3R9(~RDTMRl> z$SzCl=BD)&=yH9;Y*}19zTI?%Gt@WEe((!?d%QSSeL~@GT^&TBcKyeZ_uR)m*qAxZ z^_!b?zL1UQD;rxD$1MKnu++@etHdcW4(V<@Ez8NIruxk8V|zLBI&HJdQlzic&Tt!3 z;Rdru&zlUDiZ@{~pt>Zn{@i!SZ6Z5{SD!$O6aFyte1az|2tj&5ZL_)Nt%AM3snm8_ ziNDnRcC`XSL6;dFi}Pg8zPRqixuv z=h5z6vP+%0`WSU=sMk5&iYLq4PP1dYr@D$v`ifZl7Pbo%3NM=(Z7$mSA$V-yS;k9k zuAOHE`0$Xd$WGqta!&(#f2~Y)^G<}>u`(Cc(!&#p6xg`>sqMDOS*OKx(cGr{u$)+f zhFUT`XLmuE<#RD4U3GPhvh_J8N}hl5F)>g>h9@|J7)XxMeC1)en>k#1AD*i!#cie! z_M@k>5uo*SNUQ$Xh$77VP8YG{0*>Li)qu*Z*SU1yP5yZo`T>wkh3}Zav0m7#||y~ z^_kpz#!DcljznJtG;DfxD}HFbOFy>^m#Lv5DYy%8J%Hp)WcOJf%hZe2c) zQ14$hOA)Qc6DZ;{*WkZ&Aklq}yA$9>Ri1?*lK}2v16mJVBu`Eyp|{mMg@Wd#BE)w( zgH1rvTy&-mHh>H()ze3H*dM34L9w3_(o8jP+1_dX65mXQN(TpJwXMF4MzUSoUa9B9 zkV>ZjRAR=T2d8rDYsR~o-ojb=Rm8SNEFu>3^Vh6zkY1jZY`Z_nKRdcunMr)+6X&)k ziDbrKvGf&OVF&~@_>1sa2dPXQqJT}mOJ~Dg0@NrZiA B=PMxnk5SEU?zk>gilf$4d1 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�% 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 diff --git a/context/config-resolution.dot b/context/config-resolution.dot index 249df50c..5358858a 100644 --- a/context/config-resolution.dot +++ b/context/config-resolution.dot @@ -1,4 +1,4 @@ -// ConfigResolver — lazy fallback chain for hook configuration values. +// HookConfigResolver — lazy fallback chain for hook configuration values. // // Each property is resolved on first access and cached. // Empty strings in config are treated as absent and fall through @@ -6,14 +6,14 @@ // // Render: dot -Tsvg config-resolution.dot -o config-resolution.svg -digraph ConfigResolver { +digraph HookConfigResolver { rankdir=TB; fontname="Helvetica"; node [fontname="Helvetica", shape=box, style="rounded,filled", fillcolor="#f0f0f0"]; edge [fontname="Helvetica", fontsize=10]; // --- Central node --- - resolver [label="ConfigResolver", shape=component, fillcolor="#d4e6f1", style="filled"]; + resolver [label="HookConfigResolver", shape=component, fillcolor="#d4e6f1", style="filled"]; // --- Input sources --- subgraph cluster_inputs { diff --git a/context/dual-path-library-template.md b/context/dual-path-library-template.md index da99d454..70deb189 100644 --- a/context/dual-path-library-template.md +++ b/context/dual-path-library-template.md @@ -164,7 +164,7 @@ def _via_jsonl(*args: Any, session_dir: Path) -> list[dict]: # Wrapper examples (each is a thin shell over get_X): # # Agent tool (in-session): -# register a tool whose handler reads ConfigResolver for server_url and +# register a tool whose handler reads HookConfigResolver for server_url and # session_dir, then calls get_X(..., mode="auto", ...). # # CLI (out-of-session): diff --git a/docs/context-intelligence-skill-sync-flow.dot b/docs/context-intelligence-skill-sync-flow.dot new file mode 100644 index 00000000..8c897038 --- /dev/null +++ b/docs/context-intelligence-skill-sync-flow.dot @@ -0,0 +1,616 @@ +// context-intelligence-skill-sync-flow.dot +// Context-Intelligence Skill-Sync Flow (with the skill_sync_enabled opt-out) +// Owned by tool-graph-query (graph-analyst sub-session). +// The logging hook is now PURE TELEMETRY — skill-content sync was relocated here. +// +// SAFE-DEFAULT INVARIANT (do not delete the vendored body — see cluster 0/2b): +// The bundle ships skills/context-intelligence-graph-query/SKILL.md as a +// pessimistic "Server Unavailable" STUB. Sync (enabled) overwrites it with the +// real body fetched from the server. When sync is DISABLED but a server is +// configured, on_session_ready SWAPS the stub for the VENDORED real body in +// amplifier_module_tool_graph_query/bundled_skill/ (a local copy, ZERO +// network) so a working graph-analyst is never stranded on the stub. That +// vendored body is load-bearing; a prior refactor deleted its predecessor +// (legacy_content) and crippled this path (issue #283). Do not remove it. +// +// Grounded in: +// modules/tool-graph-query/amplifier_module_tool_graph_query/skill_sync.py +// modules/tool-graph-query/amplifier_module_tool_graph_query/skill_fetcher.py +// modules/tool-graph-query/amplifier_module_tool_graph_query/graph_query_tool.py +// modules/tool-graph-query/amplifier_module_tool_graph_query/bundled_skill/__init__.py +// context_intelligence/tool_resolver.py (skill_sync_enabled property) +// modules/tool-graph-query/amplifier_module_tool_graph_query/__init__.py +// +// Generated: 2026-06-21 +// Render: dot -Tpng context-intelligence-skill-sync-flow.dot -o context-intelligence-skill-sync-flow.png + +digraph SkillSyncFlow { + rankdir=TB; + fontname="Helvetica"; + fontsize=12; + compound=true; + nodesep=0.65; + ranksep=0.9; + pad=0.5; + label="Context-Intelligence: Skill-Sync-from-Server Flow\ntool-graph-query | graph-analyst sub-session (logging hook = pure telemetry; skill sync relocated here)"; + labelloc=t; + fontsize=14; + + node [fontname="Helvetica", fontsize=11]; + edge [fontname="Helvetica", fontsize=10]; + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 1 — Sub-session mount + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_mount { + label="1. graph-analyst Sub-Session: tool-graph-query mounts"; + style=filled; + fillcolor="#FAFAFA"; + color="#B0BEC5"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + mount_call [ + label="mount(coordinator, config)\n────────────────────────\nGraphQueryTool(coordinator, config)\n + ToolConfigResolver(config, coordinator)", + fillcolor="#E3F2FD", + color="#1565C0" + ]; + + mount_tool [ + label="coordinator.mount(\"tools\", tool, name=\"graph_query\")\ncoordinator.register_capability(\n \"context_intelligence._graph_query_tool\", tool\n)", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + mount_osr [ + label="Kernel: on_session_ready(coordinator)\ncalled after ALL modules mount", + fillcolor="#FFF8E1", + color="#F57F17" + ]; + + mount_call -> mount_tool; + mount_tool -> mount_osr; + } + + // ════════════════════════════════════════════════════════════════════════ + // CLUSTER 0 — skill_sync_enabled gate (on_session_ready entry) + // ════════════════════════════════════════════════════════════════════════ + + subgraph cluster_gate { + label="0. on_session_ready — skill_sync_enabled gate"; + style=filled; + fillcolor="#FAFAFA"; + color="#B0BEC5"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + gate_enabled [ + label="tool.skill_sync_enabled?\n(config / coordinator /\nAMPLIFIER_CONTEXT_INTELLIGENCE_\nSKILL_SYNC_ENABLED env — default TRUE)", + fillcolor="#FFEBEE", + color="#C62828", + fontcolor="#C62828" + ]; + } + + // ════════════════════════════════════════════════════════════════════════ + // CLUSTER 2b — DISABLED path: zero-network offline-body swap + // (the opt-out for headless / single-command-series workflows — issue #283) + // ════════════════════════════════════════════════════════════════════════ + + subgraph cluster_disabled { + label="2b. skill_sync_enabled=FALSE → _apply_offline_skill_bodies (ZERO network)"; + style=filled; + fillcolor="#ECEFF1"; + color="#37474F"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + dis_server_check [ + label="server_url configured?\n(read from config only —\nNO reachability ping)", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + dis_keep_stub [ + label="no server → RETAIN shipped stub\n'Server Unavailable' SKILL.md\n(graph genuinely absent — correct)", + fillcolor="#EEEEEE", + color="#757575" + ]; + + dis_swap [ + label="server configured → SWAP in vendored body\n────────────────────────────\n_install_vendored_body() — bundled_skill/\ncontext-intelligence-graph-query.md (pinned sha256)\n• fail loud if vendored body missing from wheel\n• idempotent by sha256 (write only if different)\n• crash-atomic: remove .etag FIRST, then\n temp-write + os.replace, then write .content_hash\n• ZERO network: no GET /version, no GET /skills/\n• NO skill:unloaded handler registered", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + dis_server_check -> dis_keep_stub [ + label=" NO ", color="#757575", fontcolor="#757575", penwidth=1.5 + ]; + dis_server_check -> dis_swap [ + label=" YES ", color="#2E7D32", fontcolor="#2E7D32", penwidth=2 + ]; + } + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 2 — on_session_ready / _resync_all_watched + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_osr { + label="2. on_session_ready → _resync_all_watched(coordinator)"; + style=filled; + fillcolor="#FAFAFA"; + color="#B0BEC5"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + osr_cap_check [ + label="skills_discovery\ncapability\navailable?", + fillcolor="#FFEBEE", + color="#C62828", + fontcolor="#C62828" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + osr_warn_cap [ + label="WARN + return\nskill_sync_skipped:\nskills_discovery not available", + fillcolor="#EEEEEE", + color="#757575" + ]; + + osr_get_tool [ + label="get_capability(\n \"context_intelligence._graph_query_tool\"\n)\n[tool instance, for config resolution]", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + osr_for_each [ + label="for each name in WATCHED_SKILLS\n{\"context-intelligence-graph-query\"}", + fillcolor="#E3F2FD", + color="#1565C0" + ]; + + node [shape=diamond, style=filled, penwidth=2]; + + osr_find_check [ + label="discovery.find(name)\nreturned meta?", + fillcolor="#FFEBEE", + color="#C62828", + fontcolor="#C62828" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + osr_warn_find [ + label="WARN + skip\nskill_sync_skipped:\ndiscovery.find() returned None\n\nNote: tool-skills drops SKILL.md\nlacking leading \"---\" frontmatter", + fillcolor="#EEEEEE", + color="#757575" + ]; + + osr_skill_path [ + label="skill_path = Path(meta.path)\n[SKILL.md location on disk]", + fillcolor="#E8EAF6", + color="#283593" + ]; + + osr_cap_check -> osr_warn_cap [ + label=" NO ", color="#757575", fontcolor="#757575", penwidth=1.5 + ]; + osr_cap_check -> osr_get_tool [ + label=" YES ", color="#2E7D32", fontcolor="#2E7D32", penwidth=2 + ]; + osr_get_tool -> osr_for_each [penwidth=1.5]; + osr_for_each -> osr_find_check [penwidth=1.5]; + osr_find_check -> osr_warn_find [ + label=" None ", color="#757575", fontcolor="#757575", penwidth=1.5 + ]; + osr_find_check -> osr_skill_path [ + label=" found ", color="#2E7D32", fontcolor="#2E7D32", penwidth=2 + ]; + } + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 3 — Config resolution + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_config { + label="3. Config Resolution: tool._resolve_server_config(coordinator)"; + style=filled; + fillcolor="#FAFAFA"; + color="#B0BEC5"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + cfg_hook_check [ + label="hook_config_resolver\ncapability present?\n(context_intelligence.\nhook_config_resolver)", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + cfg_hook [ + label="HookConfigResolver\n(logging hook is mounted — full behavior)\n────────────────────────\nserver_url, api_key,\nworkspace (project_slug from\n session.working_dir)", + fillcolor="#F3E5F5", + color="#6A1B9A" + ]; + + cfg_tool [ + label="ToolConfigResolver (analytics-only — no hook)\n────────────────────────\nPriority chain (each level expands\n${VAR:default} shell placeholders):\n 1. mount() config dict\n 2. coordinator.config\n 3. AMPLIFIER_CONTEXT_INTELLIGENCE_* env\n 4. ~/.amplifier/settings.yaml\n 5. built-in default", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + cfg_result [ + label="→ (server_url, api_key, workspace)", + fillcolor="#E8EAF6", + color="#283593", + shape=box, + style="rounded,filled" + ]; + + cfg_hook_check -> cfg_hook [ + label=" YES (full) ", color="#6A1B9A", fontcolor="#6A1B9A", penwidth=2 + ]; + cfg_hook_check -> cfg_tool [ + label=" NO (analytics-only) ", color="#2E7D32", fontcolor="#2E7D32", penwidth=1.5 + ]; + cfg_hook -> cfg_result [penwidth=1.5]; + cfg_tool -> cfg_result [penwidth=1.5]; + } + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 4 — _sync_skill: reachability gate + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_dispatch { + label="4. _sync_skill — Server Reachability Gate"; + style=filled; + fillcolor="#FAFAFA"; + color="#B0BEC5"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + dispatch_url_check [ + label="server_url\nconfigured?", + fillcolor="#FFEBEE", + color="#C62828", + fontcolor="#C62828" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + dispatch_version [ + label="SkillFetcher(server_url, api_key)\ncheck_server_version()\nGET {server_url}/version", + fillcolor="#E0F7FA", + color="#00838F" + ]; + + node [shape=diamond, style=filled, penwidth=2]; + + dispatch_reach_check [ + label="server\nreachable?\n(HTTP response\nor connect error)", + fillcolor="#FFEBEE", + color="#C62828", + fontcolor="#C62828" + ]; + + dispatch_url_check -> dispatch_version [ + label=" YES ", color="#00838F", fontcolor="#00838F", penwidth=2 + ]; + dispatch_version -> dispatch_reach_check [penwidth=1.5]; + } + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 5 — OFFLINE path: _invalidate_if_drift + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_offline { + label="OFFLINE — _invalidate_if_drift"; + style=filled; + fillcolor="#FFF3E0"; + color="#E65100"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + off_exists [ + label="SKILL.md AND\n.content_hash\nexist?", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + off_match [ + label="sha256(SKILL.md)\n==\nstored .content_hash?", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + off_noop [ + label="noop\n(no baseline to compare)", + fillcolor="#EEEEEE", + color="#757575" + ]; + + off_insync [ + label="in sync\n(no-op — leave sidecars)", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + off_invalidate [ + label="DRIFT DETECTED\n────────────────────────\ndelete .etag\ndelete .content_hash\nRETAIN SKILL.md content\n\nWARN: skill_offline_drift_invalidated\n→ next online GET is unconditional", + fillcolor="#FFEBEE", + color="#C62828" + ]; + + off_exists -> off_noop [ + label=" NO ", color="#757575", fontcolor="#757575", penwidth=1.5 + ]; + off_exists -> off_match [ + label=" YES ", color="#F57F17", fontcolor="#F57F17", penwidth=1.5 + ]; + off_match -> off_insync [ + label=" match ", color="#2E7D32", fontcolor="#2E7D32", penwidth=1.5 + ]; + off_match -> off_invalidate [ + label=" drift ", color="#C62828", fontcolor="#C62828", penwidth=2 + ]; + } + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 6 — ONLINE path: SkillFetcher.fetch + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_online { + label="ONLINE — SkillFetcher.fetch"; + style=filled; + fillcolor="#E0F7FA"; + color="#006064"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=diamond, style=filled, penwidth=2]; + + on_etag_check [ + label=".etag exists\n& non-empty?", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + on_drift_check [ + label="sha256(SKILL.md)\n==\nstored .content_hash?", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + on_cond_get [ + label="Conditional GET\n────────────────────────\nHeaders:\n If-None-Match: {stored_etag}\n Authorization: Bearer {api_key}", + fillcolor="#E0F7FA", + color="#00838F" + ]; + + on_uncond_get [ + label="Unconditional GET\n────────────────────────\n(local drift or no .content_hash)\nHeaders:\n Authorization: Bearer {api_key}", + fillcolor="#E0F7FA", + color="#00838F" + ]; + + on_request [ + label="GET {server_url}/skills/{skill_name}", + fillcolor="#B2EBF2", + color="#006064" + ]; + + node [shape=diamond, style=filled, penwidth=2]; + + on_status [ + label="HTTP\nstatus?", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + on_304 [ + label="304 Not Modified\n→ skill unchanged\n→ no write", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + on_200 [ + label="200 OK — write to disk\n────────────────────────\nSKILL.md ← response body\n.etag ← ETag response header\n.content_hash ← sha256(new content)", + fillcolor="#E8F5E9", + color="#2E7D32" + ]; + + on_error [ + label="Error / unexpected status\n────────────────────────\nlog WARNING: skill_fetch_failed\ncontinue (session not broken)\none bad skill never breaks session", + fillcolor="#FFEBEE", + color="#C62828" + ]; + + on_etag_check -> on_drift_check [ + label=" YES ", color="#F57F17", fontcolor="#F57F17", penwidth=1.5 + ]; + on_etag_check -> on_uncond_get [ + label=" NO .etag ", color="#757575", fontcolor="#757575", penwidth=1.5 + ]; + on_drift_check -> on_cond_get [ + label=" in sync ", color="#00838F", fontcolor="#00838F", penwidth=2 + ]; + on_drift_check -> on_uncond_get [ + label=" local drift ", color="#C62828", fontcolor="#C62828", penwidth=1.5 + ]; + on_cond_get -> on_request [penwidth=1.5]; + on_uncond_get -> on_request [penwidth=1.5]; + on_request -> on_status [penwidth=2]; + on_status -> on_304 [ + label=" 304 ", color="#2E7D32", fontcolor="#2E7D32", penwidth=1.5 + ]; + on_status -> on_200 [ + label=" 200 ", color="#2E7D32", fontcolor="#2E7D32", penwidth=2 + ]; + on_status -> on_error [ + label=" other/error ", color="#C62828", fontcolor="#C62828", penwidth=1.5 + ]; + } + + // ═══════════════════════════════════════════════════════════════ + // CLUSTER 7 — Mid-session reload (skill:unloaded hook) + // ═══════════════════════════════════════════════════════════════ + + subgraph cluster_reload { + label="5. Mid-Session Reload (after initial sync)"; + style=filled; + fillcolor="#F3E5F5"; + color="#6A1B9A"; + fontsize=12; + fontname="Helvetica Bold"; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + reload_register [ + label="coordinator.hooks.register(\n \"skill:unloaded\",\n _on_skill_unloaded, priority=100\n)\n[registered once after initial _resync_all_watched]", + fillcolor="#F3E5F5", + color="#6A1B9A" + ]; + + reload_fire [ + label="skill:unloaded event fires\n(mid-session skill reload)", + fillcolor="#EDE7F6", + color="#4527A0" + ]; + + node [shape=diamond, style=filled, penwidth=2]; + + reload_check [ + label="skill_name in\nWATCHED_SKILLS?", + fillcolor="#FFF8E1", + color="#F57F17", + fontcolor="#F57F17" + ]; + + node [shape=box, style="rounded,filled", penwidth=1.5]; + + reload_skip [ + label="skip\n(other skill reloaded)", + fillcolor="#EEEEEE", + color="#757575" + ]; + + reload_resync [ + label="re-run\n_resync_all_watched(coordinator)\n[full re-sync of watched skills]", + fillcolor="#EDE7F6", + color="#4527A0" + ]; + + reload_register -> reload_fire [style=dashed, color="#9C27B0", penwidth=1.5, label=" event fires later "]; + reload_fire -> reload_check [penwidth=1.5]; + reload_check -> reload_skip [ + label=" NO ", color="#757575", fontcolor="#757575", penwidth=1.5 + ]; + reload_check -> reload_resync [ + label=" YES ", color="#6A1B9A", fontcolor="#6A1B9A", penwidth=2 + ]; + } + + // ═══════════════════════════════════════════════════════════════ + // Cross-cluster edges + // ═══════════════════════════════════════════════════════════════ + + // Mount → on_session_ready → skill_sync_enabled gate + mount_osr -> gate_enabled [ + penwidth=2, color="#F57F17", + ltail=cluster_mount, lhead=cluster_gate, + label=" kernel triggers " + ]; + + // Gate: ENABLED (default) → existing resync flow + gate_enabled -> osr_cap_check [ + label=" TRUE (default) — sync from server ", + color="#2E7D32", fontcolor="#2E7D32", penwidth=2, + ltail=cluster_gate, lhead=cluster_osr + ]; + + // Gate: DISABLED → zero-network offline-body swap (issue #283 opt-out) + gate_enabled -> dis_server_check [ + label=" FALSE — zero per-turn network ", + color="#37474F", fontcolor="#37474F", penwidth=2, + ltail=cluster_gate, lhead=cluster_disabled + ]; + + // on_session_ready → config resolution + osr_skill_path -> cfg_hook_check [ + penwidth=1.5, + ltail=cluster_osr, lhead=cluster_config + ]; + + // Config resolution → _sync_skill dispatch + cfg_result -> dispatch_url_check [ + penwidth=1.5, + ltail=cluster_config, lhead=cluster_dispatch + ]; + + // Dispatch: NO server_url → OFFLINE + dispatch_url_check -> off_exists [ + label=" NO — offline ", color="#E65100", fontcolor="#E65100", + penwidth=2, ltail=cluster_dispatch, lhead=cluster_offline + ]; + + // Dispatch: server unreachable → OFFLINE + dispatch_reach_check -> off_exists [ + label=" unreachable ", color="#E65100", fontcolor="#E65100", + penwidth=2, ltail=cluster_dispatch, lhead=cluster_offline + ]; + + // Dispatch: server reachable → ONLINE + dispatch_reach_check -> on_etag_check [ + label=" reachable ", color="#00838F", fontcolor="#00838F", + penwidth=2, ltail=cluster_dispatch, lhead=cluster_online + ]; + + // on_session_ready → mid-session reload register + osr_warn_find -> reload_register [ + style=invis + ]; + osr_skill_path -> reload_register [ + style=dashed, color="#9C27B0", penwidth=1.5, + label=" after initial sync ", + constraint=false + ]; + + // Mid-session reload re-runs config path + reload_resync -> osr_cap_check [ + style=dashed, color="#9C27B0", penwidth=1.5, + label=" re-runs full sync ", + constraint=false + ]; +} diff --git a/docs/context-intelligence-skill-sync-flow.png b/docs/context-intelligence-skill-sync-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..fd34428706ca6bf71e2e1bcfae9d56799a86327d GIT binary patch literal 752600 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

*3P}H5t;ejh;^0pqjJ?O+fD$zTO0>A! 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 W_*j^y+)X9u1pKCsM(K_FfBg^7I>JE! literal 0 HcmV?d00001 diff --git a/docs/logging-handler-flow.dot b/docs/logging-handler-flow.dot index 7a1c09a1..540478a3 100644 --- a/docs/logging-handler-flow.dot +++ b/docs/logging-handler-flow.dot @@ -41,7 +41,7 @@ digraph LoggingHandlerFlow { ]; mount_resolver [ - label="ConfigResolver(config, coordinator)\n───────────────────\nLazy fallback chains for:\nproject_slug, base_path,\nworkspace, server_url, log_level", + label="HookConfigResolver(config, coordinator)\n───────────────────\nLazy fallback chains for:\nproject_slug, base_path,\nworkspace, server_url, log_level", fillcolor="#E8F5E9", color="#2E7D32" ]; @@ -295,7 +295,7 @@ digraph LoggingHandlerFlow { deterministic key supports server dedup ─────────────────────────── httpx.AsyncClient(connect=0.5s, write=10s, read=3s) - bounded queue: failure/full => disable dispatch + bounded queue: failure/full => disable dispatch >, fillcolor="#E0F7FA", color="#00838F" diff --git a/docs/logging-handler-flow.png b/docs/logging-handler-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0fc2266fe51171bbd2ebc6acd902b145239ccd GIT binary patch literal 420325 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

Jli-D#Rg83~u+_0R1;#dvxV-_aQ`Z0T{1L$RH? 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 z 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 gY-uK#) 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

XkZvwWcXz#g@9+PA zZ@sfvt_7ahXU^WUXTF*F#`(g1vgNtq2TgU2Xd76wH7H2dVHDi23qly@jHH1gM7bdSs|tf1}%_g|>7tG)G+jUWna^eY!^qkb~XF|0YY-o!8>3p@IRd z4C{S(^2z4z=wOcLWpfNM!y;Pg|Bt}c@qEtK{lD;B-?;2yCyq2?TXA{TnY`uGf z8sTOz`R*7rN}aCdIplVrh*P`NUqTM+y=h+MdLobI7WA(Jsy*s_bAz+pZaHx1!}OfQ zmeA94n^N3|!^phVFLtqj(nF$oT*puINZ0;w(=e~G#<|t$R`s$O^)Qf}R@9R*63a-*XkGRN`H(cDp*=G`r^J2s zJ~Wl>m+ddmLE)dla$ZP+$HxA5JxBNZvt|MQYg|0My4}Bf!8$CM1gPS7sa~Msu3P%P z-p2SxYaVH0?yHY1@iDN@Kk zKaM%;!(4;ca70Y*FGMFHI<F(df4BrUqsum~n;U&Ps@A>pJ>Ur+Xs`6BOi{QEJwav_&-*NT;m@#zT zR+r@SO*W(31Z6gY&2LkFtnW=*gQ_Cn24o+%ioF^B4;j*%Y2Qin+PJ`5TM!*Tn_IZ1 zT03lo-HF2299waeDa_xhC9ia_#p9nP2a%pR@NJZzbuxCw0-yABWPEHT8We+N`)22N zQ$5flqqll40w7IhVMB@+N9R91N3Jm>LS8~mE)!Yv2GL(}xYXQCxa}`r?cyQTpj>^P$znD%?8Fu&e4$xSBW+Jo(DH;}ZAm?}l zD%JeRJ#OLKD?T2V!y9pcQqVVF+IRoRFrK|X7{waj#3vJ={XNkg3(uo5v*Sy()7S5l zG~~@Z0*C+^k(Uxp`BUdTXR`&b`_x+iasq6-#|U^RH#b9dypr!C6QWGTBs{qsw<1#S z*4M{2h&HeYS?pkG?x^HoS}(>Nd~3xly@t{NtOB&h`~*u(Ov-te*S$xN02B(_7Q{q` z_jVik-Q2p>&p-WHvclBTd~kCUJAjYk%id7k>!x03?73ZAB7s4&YP8BG;4;_lj%AF| zdoLv^3k1OE*=JB8EiDrnrI>9yJ~r;?=vX+4^^1T{)A87PRmTaW13;F6RRW8ce!dY@)`B&g*5KGXGtsc4u>3y!cz2EH z<#XuyP%{uaClgyfc$c^M!K@>!pC-fQ!cV%uKkt28U3X{#x8aS_X!-FYMW6mlQW(;nC06fHBQ-TF+jd4<1Ri z0gY0+tVX;(7=KK2W4y^9=)@gob$!=rEDMp{2$WA-5U6zD7RGUDHEgyrx?iRAj@`4E?q=J@+O51|B0UpA_&e zZBwnL_c3T{pI~0&dk#^f z)BXfhi(qrxKB`OZ-bAyAqeOdNyU6vdcaVYz(DXYT^#f=Fc*+dPP<;y%p3`gdO80BX z#2CSl-j(YG@)_0`>)%HAm_@baf9iG7?L|+k0ry;^CiqRA-#m31pHatevN=wPgLHDn) zeL;CEsIpHe`i=MOar5;PI-O=|B_$<@EdZcl>0a{jrJHW`8)|Fm9DVTtux==*Gg;hEX*kp2Tq!Xm&IyH z_iQVM#^!wGw*Z&_mz}Wu^wBDl^}V!`PE_YD!3gFX=VwFrziZ7(7Z%|8$q^LGh8Yz< zRZmF<;2rkx+O5M2S7%~COSOdy_j6cq9OH*oG$iHUv1OdVh{>ydm{sK-dMK}by$X!V8LomhurJ-hk4v%AXW=^8!g{rLVK|a-snE*4zKU$!jCdG z)|W(BxJciHN%&-+k&Il`={3Q9IFJksABt^m$o@oo)JYB)*H=h z-DJ;LkQWX|DcGxQ{9st4jfDjji0F#EtoniO11nfHh?qVFLGLas5&~S@lcU|$sgc8A zow_m@{<9}atw|qHBqcvVzZ`zDkuB9x;=LF0b}DuAn_pX9)q&bka5GQOwb7+}lUiHv zj_9Nbcs^?+j7^R=nj9MxEa#L6tunpdOWv6SFZ&bE5|vz30=>%GLhEzg%?m)w9S0&w zAu=*&(MT4& zxtu1(EW*Zt8tV%m0VD>Lf8M_kIXO8^(d2fGEV^L4TLFqop<+|NwsVnQcEa9b$qCqA+3{lnZ+Ua; zXJRCcwf5Pcc3>1V)?8Tt9x1m=M_AL3^5OBG=~!CpG?rsGYVD|Ii#AyPb7dB&qGLu!NluWR z7{B=6T!5wXTRujUy=I5K{p9WTHt#|HIMO+X#Yop+&fS^hxFk-KgN?8h-cnfY*B+x6 zA_6V<-TF))WC)vg%dAs%Nyw{AgL+)o|D@zIDx|#-M9WKBU0d^#xuS99tg5P7zvXkj zDq|Hf@xvAY|G4nDvJggk5ok_RVGy#&J4$yKW1p|ttjncg?Yvai&}3d#3N|gX`grMa zx7w(N8-t5VuE{e)q*{vgitybM$g6dowXqUB-kD1%cn^Hi4^7bA5~APifGs#VIIf;^T29jp|P>NPz2>AGek^PHFhJx=PUmszZgb9 zTN5BRqB#0T`t@6nqQYDryNzE`pW}L~A=iI)$D+pySo12?K{t}9p4S494$!L-s=ZgT zT?dS++*=kIb&&fp#ZiHWZ}1K*%zpZ%yDE2YRaJa)F&&*|h2;;C&c|SRCcI2&|A2+l zGCne~H(pk^LQ25;2~NMzY(2SUTm%Bt8M&pD$^?50Qy*^ zuEYhFQMJ-X>RNN02X*n+>_HH0A7t`P%e{lZyg$<1I@VTS)>c@8!%{A#?Oq*%!l85y1Tn^qg4AZlxs&c zFa~vBI)!=@5ExcW&%Ln6<3!4j4E-8f){M1_tN7{n%(R^xjnbnid8DoOz)@RP7PQ)u z{jYwz#?fCpT1P>CR<-b<6vw;wl!3Y+M)L)#ZKxD=6oAS}NkJKC!6u0sSZGn017gG2 zpPeMRN+i3xr>Klne*_f<*>#>@)N>Kd{xN<~jJg4VN(@trmqCA@&QA@h)^Gp4 z6a6$I!ewCjj0d5O9es7TowxcJHN_9<^c{$fHC*i=t3>iB#8 zS>F$3=j5X5?ccfAfu4#<0a};sV4a_Ex$)NRVYkqCGji3R%Xcvl_q|@*-7e`GX02jE zOW;>J5iC2?1)iQR=o@$H$XR@)R84i=bxs-_9E3`qsHw@#&Hc}z#rs--^=%Y(W^v{m z`7c;|-?7w6+);prriMVc3#EsSqV@|2rSwHZjg}=K(ztCrLxTa9BR>*eimS2P*>hET z4Gl%@&0Q(HFhybE2jpTJms;~QJJRaf(#aRq27e@^VMXqcH`5WH7Cg-sgFe0UWCGru z{BHwh1yGs=Fg(^)qwk=JEJ51fgRc(`D-M^|+tluB8v2bG$T2WNW4ucfnG9~a&eN=t z*jiqA#q`l@lsgJ1w2zIALrCV>A>HxE8S9DM9DM@=o;Qp3VEWml?pbVEc<;jmXk3&{ z_Xn+Kq3=81dtKtXo^5f9{Lqtt&3o^gFl&HMe~Wxtc7XhAC3_`9SX8qXP-)i&g$APX z;;5RGcxI4#CmtI9xm-&XGNRBmvcMYg-lm@eOT#yBPAuJE?|Cg)G{_U?+lT1D*G8< zCB>EfMg>Cps$MT_P*F`)Z_X6tu!GMIjuDWoKK<8Lz7_Mq9mwlq;b6aX-D5n%JZsxs z_D)`$n}MGE)NyxgzW?_-2Q7|;mBn;0^(8i8dT}P*46Wv$g@N|nyS}G!jM_n0FN_T* zUHY>tfWz0Ole&-{(BuGt;ADbzW5t>B$T(i0kZLP0w@NhXN7i4U$OkQYNm?Y6| zg=|`k#pQnp^~7hmpa0t}UvGKhs{oNnLeV?lgUyx}%%>1JN2^3X4JV9D_<6aqgtJt7 z_x-BQ(Z+T4AD&2eZS$;1cv=fCM4^7WFYn`IZD~vi8RhF|7&4(OS=ss7E_ZHI(|@Zf zhATKAq2Bj~!@z#=b*S&i#$y#2Z}?y^sJj#q3r)uyAU3%rt+A#ZHo5;q zr2k{jCJHrUa*t&WGEJ(dd11F*0l} zb+%jA!J)TZ;e{poPUJ^Q*?uukk_IS!S60_98*0wC$39=qtomZtt(Bt1((jBkqwR*^ z<;PgQOJ#Gu=cN~@IazDe>iZsh#d%8G3NWYJ&Bh^qPyQ{zcqyR?C4mhYif< zQ)8Iuo0i075dx$ujshTBh|b_FS->E@rXVOSn0G&pz4 zPIz(o{o@VRHURlP=p@YbVXy8<4BT{_vmPM9sEf$1&jMy!WM+$K zGV7HpqBrSP_^t}D;(@{MlT658jkk*;AHX*d8Z*5^#B480oP>xoMH-A?BK=E7<9FWq z%M1#-8o-8(xyLWxC^4acWN!Id=v9Yl#}JPICp{;CUp6~gs@Etz(g8Lt#6eXxz0Gr3 z%{EqcB@ZO}ipoo}1}Ks+QnAC}N~zBTSbO~H|L-De~JzgR8p2CnTlE(%#=Qz&M z8n)`%!7320mV0YWR2NFZRv6e!ERn`)zS0r+ma;>v%j4=`GhjHX&T8t7#pj+T3Y{ii zSfdjs4U5Ifujj0kGK{0LZWdSmg&WCm3j(hf#0px0THC42AKvVf-ZAKN{pX( z!1g1XO6;A=!b&c1xR7$4I!FSr(kLS;n&9`jzgav%I*4Yi{w9b(h+C%$Ja6zCcl&(% z@d!dA<#MxFQO^1~v#uvlvM9E+_v27RlOIhW^e^~+r;bN_pk&ld^Qr-F8~Kc|++wrv zq?%1Kv7~sPorF2!QD8!#``!*M6$8AoFa3d}iK zEFk6JS>LSH+yp4=$AcdHX@v9zH{|%StX{kVLCkX^+&rU zpy(YW|7Nyjf|eubMEu&yj)d%=9f47mf3~zZRV+O~0o*~*I|raMeBS*1o#TGknT3Ug zSw#*fzlJZSTmZ4$Z#%0^DxQTu6CdF2NA>AZxwV1&p-26JHE_MZ@;{v@QLh8kjS4a} zw5-QKhK7`(c&aTZm?ZS%!W}vmN<#x-l5Bo9+kY z!lt4_Ybz_*B5wr61)9#8T-5C_W(vOU+Y0ylF(54E!NupI>U8jGAtTI~i@{Hao@IwW z6yjpi#8HNohvCu^&+Cleil-^h&Wr|p7eb(T{etX0u!Dheg-^c9v8s2zVtHc6Pdq5U z%PI_Y4Vg|(q-bbpOfu^2Pvu0_rJYA!1_wV2F4cqXjb`wZzoTXj99kzzAPf{RFtCtD z2?S}^U+mxb+HtuV&)gjBiK?1R+~lBvP8@z(z;q7-{e#`6Ez%|yK)Z#OyA~x=SztQj z?6I?54He=5sx}ae^No<%<}6V^kqD3_rYoUS8CQNOZDQgE<`+AK3K@2MjMf7hic8wG zA@A#}U686PPK1Yxo7pNBXcD24U+JR4p`N?ne0`pJzulxHA%{WCegY=YpIpja-s-q_ z>X*#Lr3i^lObp|rJof)^UwW^y78yw10$-#J7Z1IpEzmFT@BK26ksB~J78fP{rxw&F zIx;OmZ>CUljmPA&^T|Grz~A1*rPbd?ER1^fHwSm3X_x}QS_Ba2(mF$v%T?R#WD>T4 zkyVEgOB7C&7^$T6$2Y)bQ)#%WSE9|MZ>*zBtuxzB(-J2lPSM;EXj=Dd3jlqS#Kb?G z?#@V5({fWoPr9OBL`h4Bg0&0s;DAl&+4VK$ICc;#fq!&lODp4R))0vQ*jF4H57N#J z8r-hyb&n+|?d~K+6e<&zHDG}9$H!+VeD&u@;a$9Li`~D-AH_?rIV0nIrY(2XF5R$} zl`UOKi}8&|vj*eTXNrt!34+8xjSPP5yQhSy&%34_khj+V((aPhQVE9OYvkl)PEY*; zwf8{n`x`HWx@Qe)BMQ;qy%A(>MIqna;lmQ(@>re^&CNYiewbfSRP)72qspo#EG(?~ zJ3o2H?BsR0xHl6aI%s$#@*}b`GCXalCFS}X@)^zocAe$6EGrsoz#67O;_h%=UW5Nt zzHnA$Ri(+`B{!h^e9PZl0VGtbTqlkC=P~0EeV7 zZ|zzLcb%`6wsLW1CY==%10}=Gi7O5(j>wPLTF5o#uCvtwDC^Jz@oJHeswO6~kkSOd z1X~F~k&oRw37PN8bek$IjKslI4i&6F7uvt`w6f~E>(SBRqqnwZ#!#hlxkzu(xw4wC zXXmDNUHq%R^ygKzQff}kcqr}UlZRgqrhjB~$x2=bGZQn)^!uqQE1sO3fsY^*-ohU* zO_??XYqf0kH7%>$cj7c~TL05Xd$KCwlcqbVv8!q0E=hYiB zUtwNU5R{ZG4bq#}d`#kDck!=}R&)kKRW0*)g_u+@4KMg^LomPfpv3uUTGrF>hFT{T zwfk7po~;~Dp7XsO;>FeN)1zt7u03^6ph=>BrkN0!JFhYM`Pj_NR8`MF*ryAf#L&oU zC-{`qZxkZHd2$_u1%dt6(RwAYa2f|!#qEQ~_$tAB5 z+KGjhO*cXG!yhb^H1j|Iyn|2mXu{*&T%Y?-j7Y z?sXRPTdo~d#nO^-K{%s_EFIb#;DsXi z@xvQGTVBU4Y!=$=n4;hfpAVr#^RAHdHYgg10s@6J-Q*q&?8()%hBI_JDk`dZ%}sjX zI=^p|)8)d6O^x+B{apimgJ!SG8IewdsraQFHB->S$!Is$sjd|E>C?wKSGzd7@%JL# zq}ytadkd?l!D_v|z3#eySe_fle>m#+(QODFy`%UnJO*$;(usqx5t=PB5rrWW+Cx;i;j zO1nSLG}(=w%(u_dlC#z0^R6IkOE?!52o@YrNppP7|{fGz8-UrIM`9)pv~Q9C#o0;ooofN>!I(rudy*SHItxy#P&G6 zg|Bv^E;B`>up-pzhtMynFry^z$z=hgl@UE}!MWgVs2=Z_ExYJp6T zA3oScAIEmvEv;$}WtOO`eAJTd^|Iaxh1_VgI~3zUE~O`nGAA#G6rEpr@_nL!eM5u) zOeS9N_LbO3t||}cj>UkD;*0kIn5o2boP2TMJEbO{>Lx@6JLNo^b4AU#LjEt82tH(2~V#ysB}-PVkFkO$Pm~z zA7h|r5{uConHbr?PMj}yWs-OwpP?7u^W_+un(Bez2)V#QKOl8&4Ueq_gk2?09uK^i z0>#e-7V1W-=J+iF8Y=7Yt`Ia9;4P6_0$$^TeZcfiL#itxn3zYQ_ zx)~V48wETJFM{o?Rd(mIAn}{=L4qWmjEBfpBx6M?L;9S>@Fa3@$TMFi;~D1~HdMmC z7(ZD(AXusj?;oJ=&qzT*LLq-w$7Fi;6S~CM7K0b9cBZ9kyo%Pbe0-VK`oW^m43W#`vq7y1>XK%$nRNT<|UR+9Koc(s#d9~Lx&len!zape3DTbPb#$T zA8oz_95X)sAQdHc!S#ZY9g(kqEip*Y&hnROir=COa0%YEK$q|Go}LTxo0+UFeqLYF z9~qOLR2CJ_5~dHplD7rcimb4#w%bjTFJNMy^CUj^$Ii?sW}a|&yq^$O_XkN&+43F7 z9ck-&uW(oLi?T#`(Yn#a@wdymhBVM~MOBJk0Qf@u=>9!bQYXm@N4dkXEU(SJ!1c}C zc0FfXYx{%rg?#D)C(D;y4f7~E>^Hh7fEwrK+dmOtih-H0v(?X0c$cN}h!X5qLK0QE z$gMKx&oI9LS}`MOcd6s;Vf$8>YDDD|4aI#YBe@Rye8K}(%4^yB>&v^_p>x=K&yU^G z-PHZ7XcyI4U&Th=0ynXtgbPSUEFL}Azp^2)RubneuQQP|7Ll`x_!zNIBHp@Mv)om= z;Ufwh|0o`u|*A#(#b;2LUFV;YY7J_x@o@ptgJ2h zn}G|EAHXv-6C5v3$7`0h;ZfKK6)lLsE2bkeNmO_^7(CDcPTbX<%~+sE#~q8fLAGUG z%MEn*cllR(JX}P+0FqEjdm_lFWHGNk&(Dl}g8)V%lY*xsp~P;^mY;Z0y2D=x+{=8@ zloIuX*SDlUg!40#MZF@LVq{8dU zc9O8Qw5I>>$?*5_NxqIeG9KQf;P!(8dSj&8pP}hYacQS9@OPeOZ7+!_Ddm6*Uj6}s z1Za@D5)S_G_1_e}YE+<2(UWC~9z(=?frQxqyJOWv-3*UMR2WT5XxS?z8LjCO0@0U% zs)CkOAP0lcm5qY^KZ&NpnHoWS^i}VxJr0}RXT5M@j3-dnP9<*)C3*c#vm!VV3g9Jx zGt!V520=TUIZizBkCWkJd--emkeC>Kk^w`%>d+nBN9a*!E-^T}@I43rnUqCzVI&P4 zJ!TP-QgZFwCq_ipkrEFu2$6h3dgyzr{;6wjX(A*GE+TsbPo9oorXSGqmF3RJP8Wj* z#F3)exB7D^>PQhP`~E9jyx^c(=Z^{-054kT)m z%*6@wB7=t`2-3P+e{AF(z62y<-6+W4tv9KtK*;J*I^_uKGp~48n`MsTdib2bH$b%M zkY9HkcYKNNfx$>U_zV|QNYxrfl#&1I%DC`70!k+n|8FeLM_pMUm08F$o*8Ow7m?+U zoEiY1UH6Dg^U4*Sf7fz)f(ZJNoGGhZXaOaB4j_@~AjCwGR0_BX{$RpqH~cU{G=Zpm zN5ei7WGMN+E*XG5L6UN;^zMadm&qMmSOAX-gt`XX@B_Vym@^`X+tCxhz5(+e(ToD= z-wJ+Qf1~}rf(Q$I#6thEJ;;+V@_&tc0SLN;#$!vGPj6ISfB_j#Z&@Un<z<h!Gjy98Gd=f}i(ScD`95is8V27@@*5wkwxB zN4nlCJm31X1z$AqqZ>i{W+W;r99Ht#kP=6*4%jwEAIRg9BBJ1KvXE$iU?%uW`(o|y zr+@ad0PyRRD>yMP;Iu~!Mmo;K#^#|or2_w^uXx~V9S9$p&o#DueUTMZM3tc$1qLJ> zmQ1;{2nm73A@toJMgq=Be@H<}f;)F3;n0r^#@G@VHn6oaSs(0e2!1QfkTNVP&iwa= zM9wd?6@>8e5iEES-aXSjT_kB#OEI91M9Sr5pzCL%C*p9HIgimi_fe-l9x(Of`On-M z(3} zL~+6-U{8S789186~rU!R6Yf-UUD2-*04H5Az%}JZ-mgA_CCj)^qjLW{$+|JkSLZG} z{TCohS#%dSF{*(%(~-Z2YfB$wkWhq#WS&=AERZ?R6b8ssz#p&LSK;J;sa%CMl`N^U zm@Gp=GN(3HZQv`x=gTXq8&GWmci&*{EXr!WeI*<1|BfbY2s|3L&&~4t!oS zY!i~Z)veiWpqvPEOHr4OT?#7Tw*tr5Yq+HTk~M|6<0XZ?kv(O?RZ(t2W*&F?-`#>6 z!RCnZt+at;7llRAeZ~v18o(9@c$?stz9wvq`)@->N=K^W2R>d+k!@KCsvcrG^HWn% z!Kvo~&l(2&e8t_*D_N$@LvTe8&uVC${q-ng9R_;xfK$GJ_#qNfL2N{VS!V^D!6{up z8+u4V%{|%K0~EGT!xuq;LrvV&7QlQ3D~D4AD$g>xSU(4pM9+Yj(=$rBzLZxb1X2Q> zvQ#YV!Ww@Hs~SQP!pXrW{a0z_bN@*VE`eL z(CzObZ7>$>yu~%aXR7qm_yY*KHrIJ8BKC=4ReeO>l$kpG@kneaeiVMLU`Z%-XD8pb z;)(mhb8rDT^0^W3q-LNR`7@XN z5$*ReWJX>&@B_3%`a@tGH}KH>r_krx;O34Z4g33=vnBOzuo`B$IE;R3ZzlW-*f zMq&e3aAY}|idm@Sv9HnKf82tbzVY>RX%JO#$ym`t2Kcx3K}Kj}>YS`x{%%h)i4=Gm zxDfG(yxMF2>X>GFuLB4#))eA&T|F;WVA%Sb6S9X#XzZo&szCIQ(EU@<^&YHkv!_2LZ<4Dc8HW(wE)W?ipuYNKJzeS7zO-=% zo31h)O68|@>szv`wVD>;eT&o`89g^9o)_maAelidMp+?~#1uXLe=nXpLs2Z$sOW--!R<$1gY{s za&l5uee=$grW~E02W5@LcS;X@c38$(;FcJ)lp9Q!1B`IS{3|kWna@5jEk2f!i~55n z9L)mi_y}^*EkP_HPaeGIZg-teW~f(!UT6)^|B;cAgj<4Spj*nmViV8)N9o=S_*RRw z0{nfl=5OD=(a-@e*6n;xXXrE1md3^?tDGUA!+(GzuU0x2qO7d{@}*u^sPA z1i9oTAbb`s#313j=#8PxsRLn=-`}5(_CAug70G*T%5re~7^%A?^b)KxdLu2k;%o{e=`&5+Ap$g3N-_Vp)XEGL`{Zqa2D-I@ov$ zxH;h>0?pcMz!w0T1_f3*y|XvpSX7kt1{lLImrc~Ui*xuI=#Kd*JCKQlEFX6_?;3JPTSHtJ;S+-aj88jd9=PKQSl3#wJVL z%E`^0s4$dha77Y=&~w#njE#`zCUK zcN-HOZT9{llEx{=p|zt0V7IFL)Kd_pS!a$|p#Yf#dluOvWX#v|?M^QR9*P!1Q-xDtDP zvBRrH=WqhdyB>(3kfT$IY6P1lFrz0i)6WHdW7!ot`aZOd_QR*sXc+TN00-9WN8X1* zqH&3_g5J|LP*%?n^ur5y)nop9DlgBsKU{ygH)$PgvQSfl(0#ALix)e;-uW`Y(z>$J za{@Lr4{)PjhTdwFNHEdOnIT6KV72gF+24;93F?i3kO^SjOOKuRe(ij0Q=N;9&kPsQ z6=2pRe>ptY*NP^f{mvH~Im&z_#C#&M!0?a!Fy-SR;#mCe)~x{Lrg#bn286`OsJd57 zI}Vpqk8xnn7E)JR`1{JYJI>N19O=wWqpTGQ6bgfAfPLVj9Te7MH9hxHMdd445!8`t ziZ6a%jQ6!ggWr&#&t4XDo(YS0c1+I78f z?3KegQ7#Vyyn88Tzd9Lhp6^?s+@Dg55bmt$;N9dhjX9c|K8%n=$9UuiF`Q<&m9nv2 z|L}SlrcHlw6+3T8tRSC3EJJz8ZoNNQ%?~$Ao%}l69>pQuwU73L9w2jpG8>;Kf55|> zmt#V~df#r)7nU-<`L3hmVRY*DsjHS&<2>l*^ACzO=t@(s)$Ppl!fE0i8VEDRnCg-r z&q#s04nl>Sg;chC|0bpN5bhmxoUGM#Ip#o47W*Ba=|(&?#`M=-0wH<>4JZv3Y+$Sk z{CS<2NVL8a++3)HI*2RH-4WQwV6!&Urj;NfriV*oMOBo}>u~VCExe)cFPkz+WoS=D zCUF3^$ey4_gT*e#(spRlxpuQxoDGR;vSuN}b}zfu+t!Y;At)iw+NbZe zOl%lWDzIEXw@wU6K6t0lK`%QXla(UkA0yV<+j_!@Fx3J1_2^=d-p#ti1!LF?ah06( zadaolT`t(1H+F@^t}6Ul&RG`}fBah^I<2mHZQrp-Fz1`B(AhYR6jZcbe}cU~m9_kc;|ZuTZC7ugYzh&3vxrCr1{wte zqv(Qys((#SPZmXC=Z0wXZx|#w=$6UeSI-^Hi|on&9x50479@HmKPeK)4L7XXEVDkp zjZ--aQ#1QB#!SGV>wU1Xd2W=CpPP|lunt2ZzuE44;x~N?(M4j8#*0CNiUXCxWPC30 z!Cet0>+>xjf(A!rn3qDjz@cp!!AdUEK=Kr3ikT_-{(`pv0R*&$*&eN}Gz4mMD7E#7 zn`Nf^V{24v-Or2`Gc{G!L1=jqbHyP?D4jcGKRZ94Y>tE|&W>Tn!p$w$uCcQ61^LRa z4EYux!FTm_8_Q+7t%6=GbVgTP?CdIls>0-Kx}27o`7k&4gQpv0_^&(;Nv+8(tkgQW znvK0wyHQE8Err|A!&rgVYKeEKZ+NuXY5lXVZcBJvW0exCNcW!s_Yqc>GFW}9Pcelr zI?-I+&l+*#EL?mqegSfG{Z^732UW|tj{QPAyLZsynA0%qN_W_B{sx!GkFZ+RV-p#k z3%6%=YEy?6#-r;SPN)a-_2%KT4C}q$#(5xBNDEa_P4OtdQ!qj>9kzCxkYXy>&E^_a z7=dF+C8!D5+w=I8$M$abMJ19 zY)+&ERM?{m|Hi4^=Xp0n(ICjc%R4z;()VwbXk>)dX0B;}*8EoqFP2}IcB6fn!YIU& zC4IHQi>xOMiK>2GV|3ebR3|i^XQUN{W+2#%DEfwTt5wkB7_0%tNV5hOIo2 z(yMuqdMtZm4}pDMhP7OuZ1gxxLio=}`81XaIzvV_tKu}d*(WC^aEZ0&?QvR*ZWcd& z(V*Cw&l^%`ml#6XVHfEySED5&?|_xfgD>jg)x1!ay?BrFxzZ)v8TF|AZ=_flKhGWI z5+Kj}Qsf6U{J6de_9ixYsmVDW*E6{H3Cw+L=8hY4dOwk}d8gVs=C!dEUeSeH`Wsp) z_1c9`!bKMR>NQ5D>oaVpiA**JnV00g5!EN??h=Cd!3ns>zSst^HqLyx#eYx8GfWx4 z*r~U-EtecqlargWSITNbOB@`Ii+A`MA!mS7g*~e0oo|!pxg^(v!iw+C2R@Gm&{ENGI6(t0B;o*0ihYy)(#h z200hdYbH<6d2fg7qnd^nbkiJG`EV@_#{D`p& zQ@`EUCsaJ$oETtW!s0Zz-v^pr3zWTKV0Xx$boUAl^E(h&FoMLle<^cZODFu_kjSk3 z-jg%kHC||Y_Jh(}xbKxOGtDh-&1-Y-Ag(58Yl&zkkpA2JBWtUG_8Z@F;>KZ2kv)Ew z$i!Fy^BblmEq*{0@_@gW)WpO>Td{4vWn13Fgo9j6R8&TN6#8XXR@3dzj-EHJsvQcs z%q|gl(*+5} zTc?eBN+Tw>ED4KDJK=bPi=(yLM)XfTHbUH*r@HRK{6E#vTG z_zTJ_72f#1qx4#}a}<-9(4Xtrp%LVIp*un2?z}JDkz3;Ktyk%_yvDy}VKJoJR9fx_ zWHz$C@j~Rqizr$t6^W^^ufEt|A3pWa)rkHX_fsXpy1*39zAZ$rq-bzoLsKq8%M+gd zAOiKF$jm-3WD$?@<3pse7UZfmg1V2`q{8u5xiPf6RPPuB0(*>Nb$|7BOqJh!W+-`$ zwRd|wB-1GBr8Cztm@79l*p^cn8L5Oqj=x5^ngq`bCk(8OPk6b$x|)|~y0v8y{%WCB zX)ywe^zE({(e9jQy<+aUsy6(>7@3b;15pb5=Qk`Rb0|^tKf=l8-n6L}UOmEy&kb5z3VaIK zb>UuWzA=FC&vuJ}!xCYEF5=>G7aD&dJg^I|5{lr&FkXuzJAJ$4kl=Q1Co$ zh+x9NmnJEMHC^v~b~4QLU9)!WMx2g&xO4(@8ulByvLCTsH1k#ox&M}<#>SNWakywE9Ba!a|F9G;k`ZC#GB1aumKE;b4(+4qKUqkBs)??bGWiRk4c z(DgxpJvu?}+Z?V4ifGkH0@rClNm6iX=^&VG;=!WCd>)CNG}kcbq^$rU(aVi3i=uog z=iQyzg~r{yAwb)Q*^>I2e}0vgb9b&*Q62kvsm|)&%%`-hI{V{PcG|TUB1gw)kX`*j`x#(QP#}@hVExRgVD>^s# z>S`R#KRn@Z>+~rY&8R8k%U53%l}7ts$Ht%3xTh(U=x9!{RfYtG@jCHn*T+H|8fJbz zO1i>)y+5t6qS@bxApqI1>7F&-M+u33~g^Ki;1>Vqfeu^uv;m= z3y!t9a2VZ#w#q!0d8??V#%ph6*}53`URK9!I@4TMcA@#{bB4h%-PFhhQcYvD8ux|4 z6b}yD`5^=5@iFB9j6JPsD&U_&_Uj#nmO?`4h>1%QL$zW=HNW@K_{ZfHDMesinmJtZwpC7bdt(Jk^1yWv)0bed{up#YMQNb?s^E-$!VOUL~Fujt^>$N;_yTmLZCbPkI^Ln&|ZP{4R*> z6s^jf)8DIxlr14iFCseevu&txc{={VMN>Ogm|1~^d4bvR;F}^B`~7FO#LD}eaKsaS zNHY6c>h}fxwRBF|wGJuL{MO9(d)8qN2S;6om+DkgmEgA!4>8Xdx4~~JwrP4Q@@7;~ zuW65G=LB_|y}Z{tWNAzpc}|J;ckv);^dY%l$8W6+EUreK)7-Dz#>AP-%q~1yj=ymf zA>RyFBq)14e-r#kK%k$$Lfie1u>ZqUJp_PMnUSIPSf~YK2liHgoSTwkA@?W6E?xBI z=2o#@vk&mrdqHi_8?B1+Y{2#MGFN}Q@VE~Z?$3au@Ihx85ANZ~_@+Z#ukHTxsfrkf zyDbA0W&5bcPv`i_)dIDO%kz@Uf!fbMbBdtE#h}JYTc4Mb= zL{K;kDc`5b#yQuR!x`)c<9_hYiJk|t7Ndm#L+}8Qg+zu&c@>t2z-Bj&nOHA(w^BBW zt)%E>;I_uf;}*Y12th>Pms0v;Njyoi(9hvR^3g=}#6VJh#JOj^l*Nj;9lbF}V`w0G zQef*CV7JAvagW9T?S?pQ1@n#6$kT?@)YLi|xEI7x%-4rM=;)NR>3~{;f{h+%lY=)+ z-KH!eh==4OCVvx&A=yLSd=*+^r>3C5OfDu_@GYR@bKKm{8(*@%h12_`0n3jr`(i5zqD+W3prB#l3)JLr%LU=BGcVV8-d#GLE@Dw~Y z0}o3?qdxxj*VJ@o+U?62=zIFpJL;Aa{sra5x=c#0j!OfIpcw)a#c=#B@t_8fFdI{I zQyG2gl8IfEOkzr$nf?;25+Ausgc3jg_ zRMPpCSh)97{SZ<*lPGu&*nWZXw zW#uGPzIrk;Almr+&+Rp75?ju8|3jCl+YFd;p*%^Jg>VO#42$VGG2)vGZP8im3j_4h zC;1n=Arex4>bInOBkNaE|Ah^G#F&ny6bTq%P44$Szr6T&lBRxecwN1&xnJzD&w83b zcyB5h+*_;m(Zwzyls=IYDEZd=#m!ZAs)L2(v=x=@H z*!#mMz*x{i%x@qR!+#69K(q=%j&7PXloF&(HYY(7>VJ{T?}xm@LYC|tKcMf{d5q@@ zKXRLy<|qtM#`vAp1+MiHv~ckTyF?2?_>ffpCzc5o17?lts%|DP6UE_CH24$($4AgO z;vM_)x;Pp^nb!Gw*a(rJXP9Qai;jrMw1}edEUohN?`O|;plE734PT1-&*;7P^`It2 zKQq3@SD`rHa(ONc%wmZV?F;@;2Nxy0RV$f?+_lw=Xk}(DCvsnhr(E;}g#R37K9q{R zpYEU5Q%9iRoEoF-wt^*`fvJUN+(IaXGVw!Fn%{(xn%JCb>V|5fO3_l&`Li{S%ePcb5Z zY}`G1|J}`b{I7h`&i6MHs%uqirS+b>E|(60y0+7`uo|a6@cDvkLkN$RAdtOAf=RKw zi;K-*0EznLU9A5t2ni|9_}CCRTN;M$hW{D#_kH)fcip@G?_w<-n78&hXP^D-c((2fhbpj>C02j38C&B! z#C!1_85OGxoCTD2UocsNw9IsHY z9X}F2XH+j_p{ExS6BDl3onMLtIGuvB`rHKEn4Zb{H+^%yI{+Zg1%+nVKFFVJ^ zVCMNuz_J@PpK(1|jV>$G+fKLzOvL_Ru#*tsx?B#f(6Gra)YVqg(8{YhQ+V*Y?9Kn2 zlM-rAqR`)(ag~{4!64(Sw%TTi>@wcooJq6k8VCliB_0cSV`N5DAW4nduNIGJt`*b7(S?<8u;0?@zAz+oO5Wln33P;AP*hp^AeO zRn=&}y!1Etqj|L=@XetnulqQ7k;L2%DkZvLwt_N&d&%zk`lssmJUzXF z5(>@d98ckx&ahCz<;`@1U+{_QB<@^$iqhztjupC^<~qK$5MhorG8~ zCdt|W=cm~(*eE_7#mkp-Thkz3lmCmhbLvP*Wo?qwo>yb1fXtcu$aQy5eK9f$UH$8u zW0wb#L#@T<9fNqjzJB!URFPdI&vl9<+pZ*^YPbaYqmv#j^zexwlLM1-lLsB2gXtMR z`C3DYevg@Ya0jevk_@wk~kmQ6I4DzT`N+0ZWCg8L|N8fsbOu$)T z4&G8*3mXi#(J{lME%6H?+cyVgs*&ix%vFktJt;jNt36&lVR1(xkB%M(ew-^#E6cT| z75WR<>L&2)FsdLCb6awMcKcC0+!{doBR#v=wC&5Qru4-XJa(%B)M$RQ=02CDAg7%j zTJq-cwOMAHT!!xVv%*}CSDgd`%nrLR)J`JW7P=Gp#9xHmBB|xEBhxe0byTE=fSa%bFoMI=gcD8abNB_9?BGd&P-IW*+iZ5!vSvU%Kd zO*gm)w{i9Jk&cP_DU5VHUc5baF+OW{GzIifaFR=;+fj)1e!Ag;hh6#=yJ=iyz&Y^T zogJcW3}$zA^z95pn(UW3v+4Weq1iMKDy9~fTAH~WUt!O2e4W^1JxcweH!KM_Xup$> zSH2<5!xc9LiBR(Z2FES#&;KUffJj1@E!&nh$CegsV{OQU-0@jYRh$IvKid&aS3 zrib5B>G~Wa(d7jH9r8=3jSte&yWW~OLrHXlzZ%TImb~u*ZCbLVyq24tQE%+s>U!tA zfAA{GuXv%okUX|*i_uj{Ye4b7JD5VU4%)yw{6#p4Ucp?s;IpaqhpE_dP^c~DQ62R` z58$ZAQAR{3_OnBj$93}3(q*NEffra5M*8y=NsV|8Ros{ERl}bf`x_{d>iA7PDanPr zBh!u9kg5kl*Rs?KHg*cxY8`EH5#>D$xLt*ne1JB6TnrG@VIh8%^6eP-wjZF@YiM@K zw|-x2mu^CO-PQ~RQ3lM$mHp!_0e%xvC}*s??m1xHah)}59DV!kERE`0s#g`e60`)hiv#OmvBCZ1N9Z=4 z%Mq}|MUjDoF|lJm9iFMzACV?|%@Yu=ZUdWUD~C2U9qL@)Ig-0Qm|a{}w!G!s7IAg8 zzf~*3bK(#YZB3=u;F#pOug7j-!dxSpuL2+lfVX@+BQ?&~hU-UnLR%x_N#(E1I)N;$ zH(w^(Wa9!&%g!+z{g5iCt*fVFZgmYy=<(yR zLQOR_G_r17vP4igBPK9d0E0be-BVo?dG}6Qw%9k-H6%pFV|_L95nke=I{Zo&*H2d` zgN!IrO0#QTTNJ;-N1X!0E;8OR@Z`L-+ImUBM6EI7I{%8Q?s9+v^xrKWPflW5*zR`y zb?q!(K0|@(=R4t8-5bTNASXou%HV$3UXR})*O`V5-=s;o9T*wwIpJckAVE&}qfX^L z`OX7@rgC&B!8KhQ%-)a87$Yht9g>9T>ZX3Vbl5mwX`Zx81XduoWz=i2=}55j`OOYs zvynN>3}LHldeZ$CORAz0611*Ad|Q>L^-%WQ0RJkZ#j%R`@T16U9HTX!oKhUA9HxkJqn7;s4^Yy)eZp_T^3TrNC~ ztB;5cw>LEeSl*(qmoIH!rnGt*7#bdI5lFe?E?;o!j?Sb21^j*SH!a(;9mW9}4}8*9 zOLlO;90Vek;c8dyz&YUYJ-t`sp7p^avyNV7%o(!x2>z9s8dF!afd{5DWs()kioo~V zzpz3TNG4NkdmnAJRQq_2K(^I)Srcp^i;IizXBypLTd0vaj^|slvgfUf*Tya{IRO_@ z?m~zFXDjtHl>HerP^me{)URbae+L5@&Uu)A&((As+hKV=B0#LZ zICf$p#^d|OhFX6*h;ICz?g_xu8f>>b3u7U=n!v%1{W#bzQ*pdj3@R9S-|c~}k}s)f zeqldeVkwovM1o|fW<59wMT7iyoTJWs0U+cFF~PJzhHCWYtJ-QNXsO{s)tkn0-H156 zX(|Pm>UwB(XOH~yM^r1>eiBmxqZDR1@h=I|R4k#!JUkafjh8k=$fGFf3(GhXPgHQ#1hBZw9W zj6Zjtc{pcujF570C9wA?gq<~a#hgCc*p#|B-^OFmNKa0FroxijI&E!dH8L=O|H9fb zc7&0U@z-0l?Rve-qct{H^YxMU%F46{zbKg{6*27a<{Cg$@SRxiD(NcoY2Ph3;;xyO z;gN*dJj^#ax*!}+SAfd^`YQ@^)CBo*EUy}6WXYX}W|Ezn_p%-m6>etlrk{f_QW@un zFw!AYaZhk*cx6_WC55pSpE`-Ux+z+~H3OlprrAXML~_w4PC~{-gNjN_YGSg%4W!YP^KF#%r7aM`U3lRLO;wZ6Xh?!6I|!+gZx ztyK7guw_O|By>gG|B!`{!?zzlfRQl8NBueOMj@5&SMRTAKSUqheXU7UeeR-^h}O7O zG<2uy@cL9!KPuWPo-H<`T))TQ{M7b%|M0BD;#;|5Byfp!mOIz*t^A7n-8ZH11ao{` zSv-;3wrPTLNue}yaHN0YplR!#ReJl3z*v8a;n;6Tl2k@^S3EbZbx#gTYwI_cIt^lU zFH9{{U1i%~26V5@m33V$t%Ld}56gQ1V@HVtX5=S;=oWv(s^tZWK6^llgW_G4~^2@D`Pgnc{zQ91GaCHb)g0R)(p>ZAIBjRTQ z*;C>2ZNDvT!1YZ`80h&zFbB%S#bjkuP!`_WSJ=tzpW#%G=NjvKE!$S9ZB-ODfJXI- zja<+B?AAAk30Z%{rV|A*8>Dr`vytr=a0tGSHPYtS*2K zOD+`fvN4-+SQ+v!mvXz43C$%q-wEJedlz5++9iAD!Hoe(qURNj^IvLHL7@%AE+%iMmt zbcd{J)o1GvMg@7*DV}Pleb;@X-LFOiLqu})yww%Sd-CfZsf|dPg?UHu6)N(sVMInB z$NMN%7!a8g>?0il*w7z~=f@_>r%B)rki*+8`DgBgzA;nNYTyT6uRir8LqC5et!M1| z)aRuLF(Y6-HdG=0KmwfpeL9&0+r%3IbOPv*ta-+u#G}0S?g!gr_aGVQyhmg0&v;#` zv}`;O(aY^KQwy@Kdav8Ro#r>_kr~>V;2fRSijw6{TJ_ zGAp!B1?8`c66VCqSEmX`7+96uM6$#sOn(upDx6NghQMMX;}5&O+KrR>BK~9mT7A=P zuN5y&)s*WVHw(OHprfmQET;})11gmc#c*x4xJkxqy<4Hmmqdz%;W1EIXQb;F@=`ly z7h`jWeF}WCoc_AU*;amQG6G4_nH@h0zNgZ2jo3Ux(=*rNn$iZXlfgLjA%otT*L|~+ zu>tbNz#V+&`k2A|prV&LkgW9M*5lKJJbvN8%Q|f-DKg!3Aklgo>TeAn4>mUklbngh zC463EIq#k|olvXgNswKWGWBfgoRc+E#qqfwcD-TieFJsAnh!4xZ`slO0>06>kWMWT zPvOzNJk4HS9?whu+IDB&b5JslJ8_RL7n+z*RkeiIy1aX`lAI4bJe@rw4zG70rlyQS z?cI~dT3c~J#7CuMWfWYNp?(lAk*-U}vp zZJDmPp{S?O)5GT#c9=ZSFSRe0p;bcdPqa42vD4C}m`kFX!FH3*CdKz{Vq%|nSC9oF z$f3Ec7!Vc_5lG5atyus49D}s>g9HgSr()TI5Wy!0>s$_d2QB$*#n+X1Dwo&a^Fm zkI&~F^Rg$iezCGHhU^Hl7%Cf1ZH6`b&;?djMWtDMytsdWL}KNSo!6iRc1^4+^8BtV zLVG|AR-f-@zpV=zBd|YfyyVf3<0+x^0BshjeR@&IAF0~5@jG2S+X^vx8|2EIuWS|h zkYGrXGxr?>F0;yW^`q6<jgB-J99_7+3lUz)toUJww}&c}M{#$x)lu%!pY^09p= zi;fFX*h;7HLdsPs^TsSXShwF)yWo0#QDbRXQS=i`^~YsT6>AqK?MP3aI(@5|Mk@5p zHo2Y(p!BG)u~n#l=~*i~G6lp9d|J+zd(vd)l0xlceMwihl2Sy_Y>ifwES|Nwayngq z(e8?La(c2G2@O(Fj=@;n76FdmkBYWV5e&1KS4*x7+R52m%UMXSBL}-goR>95<4+kG z(aCkrd+r405}zHeDIdMYxs>VmdoLo~&71^}UEf-^Jl{S?T@lYMIfuaPKSv%FFsK^Y z!EYK7BkUl6Pbj>r~?W_QnByJ&#hm*kAX^0JkLUP0tXnlA4d*gu9~1&#GBjh5q^#XJkj_=3Aejkyzl!y7@T9 z&Cq~}wi8iy0uC4!kO!$(6D<={u(|K+RG}nMPWtp@koDqLSBG<~U(<86IWAt;p;ef} z&^^e;dOdo#dV@~dgj4kyoqU9ds%qCyLCJB+=nrW?MoxpR6RZ>zptKO4p|PhvIm!sE zd8wUeb%MWFCi$GM*zLPh8I%uSUoM9oN+?_9L-pCBe-$y)FYcanbdVWyFTE{NpH!Hc z<~!OF7$`6AZRz3yd1XsoiR$&Il6`$X>Qg+GHnyD4`?Oi3v#jYt=sV#RP_J&z5=-U}oXqZcpj&kX}4Fru0+8iY5`YinY z?q)9eCCfGC!wY&uA}oa6`h?Bco^vFEHh*9#HeY5iRVFi_G_}z^H|N*j02}>Qd2uNn z56N2wT>X{B2=yT~^81;4&?ZC!E{QxRHa7aUo*rM!#<@@L#ai|*g_68`@iGSAABF%Z zv3X)4zMSoNY!(lCRjo}69OzmawKSRJFs8~F&P?9sh?N}y3PxEarjXxxd>*V69L2!M zSYC^Rj`n@vNOe3W+uc1f0f9l2Yj~+D(!Ik<+ucvi-*o9Cza1YPGdV^S$-$*woD}PS zo33$Yp4%M+vheW7m$TK2^M||8uD_8N5mp8=;9_Q;otXFvVW(@YYUO-8B2<{MC;W;s zBAlYDh;s9BpBu8rJWLu%d!hJGamdMCU+B`|_KM@hP^DrfK~cB3z=oNbIfbj2_RACz zbbcJ1_^1P+GFn_eGRkLEUq7dY65&ailf{bg+bReBR@X+^wy0 z#1zu%%BhALT0L+~d-@mj*GK~3Z`ZQ(-It=E$vTA7=XR^I5RKq^$qG37ZDNvM0S zJ792n6@o>oxU!(iaPRiqQG9(kkF+M84Gpmq#&O_ubyauN<*@shhca6$HX`9eF(=Tw zl8l*0(54=2Wmzdn3_zU_5gm_Z$5zKodllJUm7f3H+=DV^kg2QMCn)2mb}Ov&^Y?r{R=|;M<0RMPGbN1lNc_}F*_GenXr0TWRj&i)e1{!l>(^Dq+>> z00jL8HI0(jWg;(S_V*X(fB>|_dQq_TSsPsA>J}az!~_uXe`TLaT8sP7gPBsmi#Q0byOy&t%rRAHl#wtvN|uf`~X;uh<&I zz63`^gZrWi6mpba@d)GaI)|H?>LurQ_fq<}vUaN$#?zhpar?DAAmU0+@e2ha z%ukpuf13lJpLsXlP$b{vczz5TGc7NtLBI7rT%8QXY}5mfOSU$Zqz*Wzk}5aPIG_Q@ z=pl)^2uzp+diRy*#e)G@v#eZbz0ZdKPy=Q5ry%r5q1hKnRVnK1)S)9HtFW|iqTG=p zGMfU+=d0JIRuDqvn;^21VoEW!J6148q*`nI$~F%sg9 zFi&ca64Swfp&^6D3TfT+*EZG`gq$w~X&%Gjmgy1?;@OP978WKY=Hq!aNe5?5{Hu#IK)+PAKsl)h~lEObDbdE4e);Z0%`bJ{~()T=@THZyb+SC3z za>rjbrRS@N!=S9$sJWdUaU{=I_~rcY$Q;3OGC}JCip~YKbqtfZY~@658sfOMYOzK8 zF{>Y26&P!4y$00ag4&H475D#z9806$$xDV&CD8J*gbvpQ9Tk+?JbF0v4A)Pc?@rT- zq^!P%>frA5w?tq8ox;Z%`D*n_iZkf9O+pJs4>smi)*8ObLVd8Ai@ml#mXIl} zHGoD5OKnuO#Aj=r#xb{0^FZE%p#15Ez+R!P(0=B=jjfW%SdOAHez7j{vfSE9hzJ6~aJe zocI%$Sn?jR|GZX($MCGF^ht_Go1|ji3FV+>{P?xwRd{38muMecv#nN9y!!~c%5hV?skK419i%hQ3) z6Fa@QndmQu6|vNijXh6$5X@7QXo5 zgM-E983}37_Q-fkeWc>J?ADB5wGDMziQLA@qqf9@rY`r^!+q#)E(SB{UeWhgnvssi`S#-CM)Vi&yR<%%QSv9^H)PFsz_n0jGl!S?X&sMYGPM zKRB$h$@updVQTPXbsA-P)!Tg-WWMr%KaG|Vhn_ckVw`>>6nN@P?U=Bp{F99fKtBmwjk82nwh>e?z|8 z=!+un&q>~#TU_i@*uTaW`8WZYBP=SM{quf7Tr%;*tC*7AnT4uS_Z5k9 zB&dK7eG>dWh}Zt;=}jXsx3_oL>fuwzk9a5~p%tzx{s3lsU=}J}JllOq{=?IK+SeSn z6GOGgN%$o4Iv~g=!qm5AKDfzUfl>7}vhvwsjV;p^(Nh<-z)3@%-99s4HUIXRL_lXl{YpB2q^-@xsx* zJEmHv9p+MW3hlHso3;P#w?nY^6GIDIhYaLpI-abqtw#o(eRjkWYW;?Oh=EMPXH+1| zBQib=3@R>1y{L`fyNPJCuD{3jD9Ok~FP27Az^;Ag>|EaQ*SgukjcE;}32cO}1OfGu zk5#qW#~A|5frKmtT0*)hj0^u2iAl*Dnh%zYselHv2wgiwC6I_KVcHFnm<_O^9=106 zxiYT8uRJ4>HW?t0fIE6F!<9{K5=adE*ZdD!f(+-B%3m4l!u?|&aYy$w6saYQF?@h?YQuLc3Lj60I5jx!OG+2 z_z%Bj`V=}z{)71rxc-ItvaBX1$6rG$uAXqdq6^0o0{%IjwhNbM1ND)SIU~ZzYvX{* z(5uXqI3NU?yP={TO6@Np?&!QUVJhVP`spc{?V1a33&zRTYtW4T$Ve{eerU%-0v6Gu z@y>y%kyh51l;WBQ0co3=g+zlkIX21R_Fc+XY&*XwAO=wqOcA$g5hNJ~biBE_SN5R7 z6i^1F06PBRhPh9^eqxKUPo*=ZXhOtyGHG~txM2C_EtjL_SJ>>qQ8+uEtJOGB@KMN?)!`U^PDxLO(m5nKu)iR- z9Z&5XGbt05%X*$v)E^Q2-ltKBdMK_KEW%u?r8dM)LsM9!XlME+I~d@0p(qC_lK+m) z=DnhF{$ev|t?fDt#y`qL8aP&9;;4T8>)?>kn4Du68ZT33;cc608pzvI3FPso6pG_L}>tDSGj6aW|)3 zo7*OfO=A^`F40U6OHmk#)H8q+-X@7*Rc?y~Av6ccOF?FA17 z)PZx@&JZx_Gcyc~js2K$d!Bj7Z8O+dZ!hZ^WRP*Yl{nZ$7&%b)PprRlbN_z{6Hj)tpTg6^Ew6@v)TH`xsS4|D(qxz3rue9&0O)lei~d^ zxfVIccIOOm-&+6gD8l}K35ux=>pv1QF$L8sGfKM*Lf)R9nTh$4COFidi8hr}z;pt< z()k|dA7RX{HYuK-J%$uw+2~n_2vEWSm~Rx zy^P6!dl#t#Lm`5VT}PBll8Y4D_aTzUP^djica9icmGfJJ@E!2Xi@W!T(SbD<1mZs2 zFUC6ZK$?NFtusq>nW+lM{TIjQ%GwCa`1afZgz~_11qA4(UdoL4Wd*+dgYe`(WSEqo zkpBaE^ox9XG$`kPbPd!z);oXoaKB8R?^qaxnJ52eW~#HP=dC9m&FKPFA=bGm@nTC} zUyV|e=La8E)$(gcPsqDGM~n#s&EHonoJ%KI(Y*TQOO;sp(^Ff+`RD;`Hs#H80}NGF zyauDuE$CHL@kiS0X+UZLn18F$1f0nV_lJvB9UQvlh^hX8L7|ckx08=nIcV(7_f_q7 zYCkW-^zlX~s?vTBDb6={ZOrlDZz3tU9HbZR?P-Tl;dCS9{&fEPN)?I8*&@OA z`&&u6c{~xb#UsKtRy!D|;Rc5w3-1x~`}q1#n~kYN0^9r*F5RQyBW6krBX#OTWc=@Q z5>3#c;cxR_0UpZP5*KAgg*ph~lRVr=>iK?&B+#v%q&8R#Z0l#}B+kuvVG^V(Z*Q{D z+-~T#Y|z>27tyD#x*LBc*NZ_mpNOk#c2t*>?IA*5NVobhiyN=m`$jd&i^xEdlX##K zoi5Ac8e3w}bGLDl^cDo(n~5adTSU~1-7Ov$oJURvg_LIOkjzfyu!vjT?|Y~j+%GEu zy`dF(B)FTMBnl!{EpTL?*Frp^IC4Duc0?||m1I!7V8TG4iyV(gBFrCnCJO|i<`>-Uu`gt!mI&uCBsWgTf8;zRH(%p zk6za~GWWE%KlyCnYQ-k&sqb8Auw1#C-3zTLDl5Y0XZYSVOztrSyp#aeeyx;UM9K&D z{ztdO>R43rXDn+irR#Q|dFxd5@qoLWPHVOn&u(4fgJI@aZ+Z1at&6Jbgg(&JN8`xj z%f%}lUg#n&xZFA7>k%H`!HAY`H3K4zx>{%M5_8$DuUYOWp2+~rQKtU@nE*i#(PgMV zgg5HzEp1F$8Nh!?@u(V~Y6_Um&K7xI{=8KyUy^K+flVsFX8|WBf6eKcRav{ah(Znz z+WA*ZO=rOtxR=QngDBF?ubl;8`T2omWku)NS9r_vMy+*sL{P|0a3>oY%FNBljOkH@ zyo(m;wqQ~;Sy3LCteR7z82MkAHR_Bu$C3wPZ`3r1LO$0_kQO%`KN8#i*+=c;t61Oy zW&$v9SMu%zCUVDyU+VQoULS7qz>9tMBl1r8xwbcfJ3zhqZe2I?lSF@_Sw%6!Ae^CgL07s)Iog_3&+(pVFWb#ab(h7i#UcB-F5QL9 zWE>n}_23waxPJxOIvtXdr4Q?$Tk`T>@AMB!#9uJ0S7zqC!LchSk;})%H5nyz#i7-`L#zok|9`84ES zVgLc?FE-oD_34vR7cSs9C#LWK;ZvSAv-&Grr@5L;oL&_GW;QAj-p@%M+n}@k`HV+* zTz zkqv)d=eetRHURlMi)iVOXbmkSE#IriT;Pm{rOMA<6`7rq2 z=a3V%mP`44)WODvJd-lYE-nw()7g_K1K^;*3C*r>&#E`vGGi*gu7mELE9*YJMgF>T zr1ggrq?_Wsqnwjo_P;YKq;fibT@0{1^APnzrQ?(G1c3k*5RaY8w;?Kbtg!je+fMvk z=W8Q@@CPcZ#hoCGvr1dIATj~Rg|_aOu3^K4F$C_JQzoal-@&h{95XqgM8})M;K&oZ ziaHA1GNP$6Lf#wpO};JySZlLgVhWz*9tRu!!4TJQ7;Do+EDqgBXV^&%5pRsn!Ik^4v;iCb~N(HWze_1I<4qd(IyKVPj{ z964C@85m|>lPP47HEKu?$0)s-fFP{j{!M}aCm`$Ela_&j`#@yzEPzKLClF*FB4kMO znASw1g+y-J`6i-9j6)(FTJqyNX5(+d;R_i^snFAKj|=wY<$cu>cZ1t{Y}#vHfc6ft zpF+ZnSlQ}7sA3EKFc0;S6T&}K*<1KDHZh@6)N8`&hnbu|`{7EKGnNu7Jd58C;e5s+ zRT#{zUEI)(T1fqvKz0x$KE!V^i3V%6VnVoY3$TEwcAJnUjNjy(q%spmV{khVQ0C%Ve%2yrt`c-%cB4MSTBtVCsx)1N!|`h zN9iBKoJ1EcI!guU!hPmZoFRun9Us#cYw0q^>%HClCCWeM1|paS#VIMDGDW)MASm!) z4Mub=%-`}@Sj@;7KT~!%G?qy7YNpG81RMFOj)mRJ+ixc)$K(7apk>}tA}@#~3^SGL zXdnA7uInq`M9{he$wq5FNK6-PM$TLcW0PrEm@G+cJ&1_V%aNR=eaUH^Av+l)@8dtJ zY=z4}^mu4R?V!}XJ~4#PNncktAtFI}^P_E}J z=Ikv9S}~r$Y;`t25>925{KJF#x)bGY<0g-*Y_M89PllAq)IxsU zMa?&9u|z-?^nCIlcg}{eT7&>4^youv!AVYK-OEh|!1d^*cLACWxqbT_syfw>nRYF6 z8!~K5&$quls_a+gh>%|2Cyvy4#kSy(YR6_2*Z0n8tkws{>qYx|lJL=VeXk=^qxG*@ zXb<2E^HU@Fv#XlIw>9*aL1?{o&Z)*H)@7`A$4?$WQXA_M;Kthk?w<1G+1q%GQ4u>Q zhSh;CKm;6|oK9CyDX*jlk}g$|$*-07rU&&q3hjCUGgW?Fob$TGuXYx;?HPZSnonn! zV|G4ZdV3 z%hVw0K>~G)jpZV!vj3R*n&Sh6PQ`TOVcUADBn%0232W|0m4b z+mluPUotAI8ymq32i0HoZUpv70NyEgmM1^+D=J<~)<=Ux%I}Zd9sV=qCu_@LuZPp{ zg1F~L0j4UESd!H0c#BO}S~$RkLFMTI0jWjLJMR|{EKHUe8X6g~YfjOC0J2d+s!7Iw z!dT$vSMGj9>9bTZ)9X||B#h^NO9Vrg^c#R@&AC*nNezGS+$Kk z8BaT^0w&Q84#9NE*|5zJw%(+E2Y1#JBTF02fveB`3wMfZvEK!KHXOLSohA-$I_5;! z+mxF36X&zvf_>}OGONYoDsm?3(yK!BA!3($XoI_A_Tp*&jIEVr38!qqk8-R9E`$MezdAoiT?{OH{b{nbq2YdT%Ymu&?G z&|1I0!8Q1{`X)YN&m;W65MD>eV9Cx2D6S!}IU^M|Z2~>hsI3L>A9DDI0di6wc+d?P zaQ#ZnM_XIvm6@n1DV+z;bU8Ae9%=eKhZ8+z(sl5VuSPUn2LZN1{D+9%D{{s{#x5Pt z9i7R=E6F>YX?bha9Ge{)4OEuuTeSu;s(tAgM9pFO={ugWXtH=g5+K0bFCpy=p4nLL zH01qV>8@uld-2l(Kg_n2Mj|42;D8y$sO|bCY5ydxt+$@V+}&SqES@#G=ki8L+zgYj z?ycP7?R(9sjr+zez4>g`;$tbt*d%u*zCd7ROZfyjOJi@$4=n$tzdkky*-!8%QKGQL zLN8~(D*4^+M7zzmDF}%X?sQ~+!CKFL#Xk2*8T?rrX~GBcn4W>wDLnE$kLS1Vdwwn3 zmIw?94yl}XfE-?veY=&^)qhnPw6a*(PNb2j6X$v4MukZ|y9_?L*aWRA7qyXTvu`V$ zzJ!Er)D~{9FUm9xgb+g7mE9DSj`7W{5t<8H&;y&O)ym$m%* zF+2l3_xfnwSwelU&fZ;IfX;53OO5EKo~x?;==Wd`6#cre_YBheFz;j6g9`EtpSp|2 z=BV{GvpQHtFNDZ%+#*6%- z6KDYr4Vam6FC@+51Z;$ggsvY#cBR12 zYo5n~DNTJN`qqRU8!SQnzx-_@zO5d+qH}Q-itJ{;S{rCg5ko}~yb;!3I3@V7M1mxP zCwQTQx6$L<(GoS&{H~wff^-`1wJ?L?dw)H>95?yqZGnNv(Ptg5@2s#yHLJp)uYX`o z^#4v_w0n5Zzy3M{jb_ z*x6dPdmsn)N~+J1D`TTchN=Kr0dNbU`$BaMIJ8U1+KmLh+oDT7(ffrjgsk7O4T2?d zZIYS-@b%T3djE5^3DrJ8qz-778i$oPmNfexwgB4ndkAXd46EELFl6k!_xC7oO5TB+{iY}#GUWY&`Es*pW_}~`KmNe} zhL?Q1txG@`S8o7486~RwAqsg&h~0ntj+W2oQK+NLY}z3B4!#4`x54s4hJR?iVUQWX zMgS2H&Wm6o|M40ue{ZUf1*O(^1VG4|#`|O~P>DgEcl0keusotu0t|iW@zTLG<_Yi0 zz0D_5q@f-DF|Li-Hg;gS5f)OvtMuGH0S4yJ`UfXpQKb9dneX2u4lCVALYUw*-)eS+ zkc$nJ<3IlN+~#}t^=&tJzj2x_B8}u8P{*) zWWz=*X(MR!gdp&@{KjUu-!$DhzczUr@oT~xmRYz|BrfTB+6Ew*29k~O-Pd-nG`V2J z_Gjr2F!&U23h!fOEb$4oz4@qg0zmoCgH>8BJ(RQ_6TxM zsg1SCuW|EOh=(J*p>&0J0;d~M3I$M5soxwQPU2T3*gkM;&B_q{n2`^Nz#%ltcE86O zJf8hIg>w_!m2lnWRa$N#;28rHhslwWsO3))EZnfD>hROc94`?gbOd<>Z zL&Ujok3>mSAaTLW%7l1Nt(!my+C7B)Y*MYP6mLk0VYCmdO%SvNf_J`h)FUK;IR2U1 zHy;RZD5@c#Bg6MdY`v!yuHXLfmALI8#P3G+p5c)|$A^ob*Mf*yXkbBEbBy(n3UMks z?_Z(fp|oz`<0b9_=4!O01=42L=YLZxV7xa}y*~3sYrxT@^$OHt5;mS>i{=K_8m7BB zgaj)eG#%C3^FBh6UjcPhjLQgG2gm_psY;#ykXbAJQU6(p6s!QB0@4MQ=yKrPgzefZHjj>Itr-*} z=DfTmf0&x61cLY4jsGGTP;nmBF5qwsj+C+#Avj`T5_eB{s%%QY?ICpi!z1twKSjg< z^dWjP2yU_saMbKAy}22H2a#QdX6B+`Oy#sJ?1EaR`4GDj3?qo|ud@o21PCFx-Txfy zxHpqq3iW-l2GA&fCLBbH^zUy^xX^1SIS?%o!SPr6Y3pZ$L`d5g5@6r^xVrjI%=hoU zM*~=CffKcgG_6gfB|a@)NZ6qIkSmJ#)t~t;Xpb10Ay$ymaA=zK`YCuZy0+o@2xLUs z2y$6%ap0)v1T8G#?%ivL)BMNaZ3G#8>`$+2dJwPeMuiwQBW0P9L2`kIy|f7KTspi7 z4xQOBJ|GHq*4s%hE^Qw9wID30p`t5^Um?cjH?NKYp2|%n;*u%0Lq`Q)35-+t;9x)7 zFdKqiKKRjtmOLhfWnf&ngKt$Ssq(iwP^6OFfw(=rSq3p_m4^Ghm-oT0N}Hu$G@5;t+%68^xt7F|rw#Gxu`&P{b;PVmx`Fj7XLC;5?;g((odeO?0M|7WBj17bfdNuKW`+~TBS-Y+ zJiiLWc*=EGO|mRd^dj0C2qGb#vUF|4k0%m4AH1o2f$=>0_J{^zT&T7MkPi+@fH~uq zHCGUY7czJ=D0dL^aVRaPk%34UXhxtp`n<_Wyu)mfAsNYeoC-(x9kxA%oEaGrG&g^k z;!6#?y{{vX5upi4hH%{sI-==9`03bW^9O<(#uJj8`9);T?sFh>LA=u$~;WqnW-D}Sx@0eq=%lkc7DlnR*KX1cod z(9`KsyEjf?CxUU4uG9rML?DV!1)Xmc&B%vIE-P*8yI>FCm?o+2-b)117EB3_zPt*; zMtK^H=!lUKIM^Gy5?2pWS^jmJPJI_=9}9SitTcD=^DlX?5V9w1p?oUj%@m0s{+9Eq z4u9j&e?El;G!ZCZLQvqlsSH-yuN-koAauzP`F7q>IrE35B$Kx^&(3lt^$fpUssQ{)w z*@K&MQHubi4$ka}=eB|G%r)(GyI!4oVGiV~a-Amhr-)z>arz6fW{PKKBpwJQpCG(mWD6>pE0def+gumPIZzzq+t0qdv zvf$md^C3Wt5*w?!K9Xyg3LY8fZsCg9AlW~wi}`Uq>=hB08L?jrUA0$>Rsa!KpaLnR zPn4Q0jd;>Xna~RQhqP@*^7*E zQr)SizAcyRLH*QYb@jKa9VF&wcV~^#GlvAIC}O6>H<2AAC846DNAzB3J;xXR_An_H z36_kd=@VTS?fC^5-oWhipJ z+=Mfh50IK;V`Bq=+qpi_xUh%U&rM8%u$$o#;hq|z1#EsD85dFzgPjuP9MU6BZqUR9 zaSwDb-gm)x13?3Cvw;B(0v6pIeNnJqP%__{9gU0l_~@u>{zT@JC&?t~yN`U(UNSHW zi8fHWJCEk|2M(SXfG&RG)+Q6NC0k~?9~)9hkp5f(b_F|;_j>O+9~H{HeR0LW$dAD+ zotcEI5|2VI$pq-p2P#f!Ih4GyJ1Bfu)Vy(E$!(pb2WxXWQRE-}{^8n*DJnjtUy$TEQk z8WY2nL42DA5SXE_Z7+6ebBv3l`(LXxNXk3Yd3*n}7w+u)3wn1f{az3PD z6QeZed?_JhuYggpVQ*0yiHZ;x)9ZzeNYCmt4YS!UvyEfEgYKOt&mcZxjs{b|+8c(x z*nV%76ceFa97O-KtuQluhISPt;=O$+5PG6`UlD5jsiN)T&Yh{-s<1tID`HNh@cfts zgF^6`;RXKVqQ>gzLfd&L!7K*<<=H#_O*P0tuD_Zy6MqcIGyZ9~l(#hHhcM|fZlgpP z+=7UE%`2KZ*zy?fdl#Rskr8u8GxM{KQ4jfav?2?;H+^K~{i^bfjBv59<3ioGW2A4t z*G!wG6pkJCAk<2>84DQDQWU^@78_lgaUtdFGOJo$k7}Ko;s{IO(t+4eyh<3-e9L>^azUo^n^&n?*hDsR%hN zakEWsh1(zP|IVc-p49~uXdJBFcJEz#EO=zFb$o!r8M=CC2(JrHhKpqb3&$N5<Ds%2P!6K{ zaM5R_AyOno8ahiur&Gx>cH){t=N2r+oGx8>L(5p4u`W|5zvu1oUDp>^3NK&yhnZ3~f>HU(M?Zf|!BiirEF zT6lo1AefSLBF}@)`2Prd?{GM~uWfizgb*dsf*>M6h!!n~a+8qgUG#_+onZ8mL`kA0 z(Yr)1gD4{mCP5;49Sp`GdKtYl^X_p!zvp|7_j!-wyZ&Ozb}yF3h2lrdtpGk&%vZTOFaaJh&D0sDdAiR)kT8eT~?-EJRjbCiH-n>jyyqV}w6 zb3C zo9CKRMsz^Jk;?Gb4_pp`A5mZIiU(c89cRP+forNY(`1PepVT}7a;djqp=17J-8(7-rkkftJ_oNJ!$FDCK6F8*NRK+>78W)=xS~M);7NJ z%amo*&$GKgqVO~1)9Wn3)RdGACR&!k9OTHpiMU>>MR!@d&LPPmo22h;2?@Kke6gSl zfi`^kMc>~X`2!&|dmaPv)j3x08D48wI5T@t%lb zXM*4f9~$qBsAY|nVhEghV`%8A@Z^cxlfJ@poZ(SU(3dwHkC<)S@jt6PU_skX?dbj3xq}mz)3aI~x$~D3Kis zyjZKnmKzA&^b-2BY*m@k*qlx+i1b>BwZkaa7UdW~-sB|ftl@UPf6C}(Gg#h$Lp^=uop?L#LL-vuMS?yN0FWi+0w+fs>)&g>N_H~t)smKsu8+&ocwCEnio%sP1&a%8QRBxmN7{R7n|oLbZ#O=Er0Z zlwRs#0{{R|wf~dTvlG{sH=J-Q^WKSJWAOUc(>Rga%hj2fL%z%?3SGW#$T)KD^bHwD z3Oa>YPj_VU4ZxRF(}8oYp|q~3W-bbds zb9p!Dov$iX*HrKB?v{*|ca@IF)bD?E1$)q|dUQs0T|ph9R+%|MTjt|W0j0o@@L{O# zO~4PEAiPam7$2i`mg{Mt$HBog4xGd+Pm>g==dmNc!RDOK8AGaR=;uwtgw@XU-O_AX7Lu1_ z2BY|Rf>2MiT`qI9j@BDB)?Amhb04V6^h&mcuu`8akT#F`$)5eKlMNS#5-0D ze|_#kPESTpS5Le%+rzCi`5)^G?AcPtR5RT#T!uW;o1UJsWiL2s$f0Z4ydI-}PTy#p z`rcn(Yl{d0;~UZ3vJ5P=`mXg zyeeEs$nGlbYI}Ow_y#{$P5{hfr3Xf+oslz>sb6~ONMH*5jWCIIF{{6-@DPJwUSv@_ zdDw+P<V|<{b|o(2B+7F`Z&3I@qIczT%xU%(xmqQ+3B2wk#nL#B@iQ2Ru{StkS6WPtdT zqxD^ZlDPAL6ZYqG^-SC8)nB^~Bd2q<7Nw=7AJAVDb~9l=)82x;k&%PNk5|~6PTbL& zShzC^_i29X#w>Xb!FJv*=nhnHEwgc~=kxpbOS-%X3@Sma=M>{r!jP^qjCPJ_4hXL~ z3w3Q(Tvo~YA72Edm@BL&SHl@|Bj7tsQ&H2<4$VPb>SK>ZJ9}rQjl=Yx%b@vV>tC&X z(6nMd9g!xI)fteCFcgTjaRy6+{Q9Xcs*^LwMDV+=n|g}yxZA{%*vuw5qo7eU6;)ZRO*x&X@X z*9Kq&^>X7~xoom9cM(Kx#3y7LP*;Udj0)g$kIfU!h`8(F58~%ILX!_W9ob!u9zh@L zXA4#Jfz$HJfF|s5nE{{lIS4OX3*fwgc&)kX7N@is_>9(Hgfv_c``PUE2ga)jemjqH zSIHr<{oEXF0ftT=!JX-2!L#D~Q!1)t7Irmyo+Prq`Opt{VPV%~N7KvCc}?|YNZ?}; zb?5Yr%={7C?wh{pCnVV&!f~u2*V_MdJ@DMo`Vx6xM5I~@7G1+1S-f$J1wo$8-o*D=2Fs~59%I(zz)O~5YS5T7V1)YkQZTuWn(vbZrFC;ZY#_l$r5uWd^si>WSvy z(zLYY*m?z81ukkK@O418>)emSPHgOD97tCxs%1WoE1Qp&?j#OZe@~iaiJ~C*JLE$v z7}t(loZNqZpg!)bUO{sd3c(ZM3h$~*kBQ&%LNYpM1!+P_cqeN+HJv7*kD(+XZ7%B> z??{w2+W-3oGkcBFBEwCo@tU!?y%JOIW2>21I?+C)GShNi8qE(rbxAKnfu*W}e!<>-9* z$a)?^AI^@|cRcmqU+;q}`VP}n^DTl5yf-?a>Fej>%+EJwx7dHzMK0`7td8_WcGg6- zwfqcpOZ$gt5ry~o^(tw>$f-n68|G#Azua5JdMtH3X0%HRYCJ;J)h}gfY9a|EJ=yR6 zxPfF3-$?p>#H}}2RXY;yG@kw`g=vbh!r8D7bAS+hDA(VO;^z>y+=i=zH4Xf!H5)sH zMlavuqZ|Ep#{8eVsyTTMa&;f=tmatIy}EsScHTxDCueM zm<*}m^(EOaNeW>!60X>n3)sC#SB5)WcU(?96#1};KRJFL)n0#AZF4*yD|cM65GSLN zB?s$&8A=0e%o*FbR_w(`dyQ7sbHxnw_1To*G~GMo}MJc7sEo&*~o$uY@(I6he=)W-*)$r;wPwY zW(Dy>@zKF9SB|_8!G^&cp&A9!!J7fvq_dyKuKo>g<8Ecgc$fyujx1ONh;L^Y_JpR_ z2-W%=zm*uTcB)!R;^$3JDM87~*e-^3GO`(&Xr~G62=(}E&wYjK3$4zk#DQQ4gMB}w z3sK<^oL4fRz2nvPvr>_0H5?DNRqH|b$QGMmD`~e za5xnD%6xxZ@T&Gz1+p-O{`$u&U;Wt1)YVl%1#BVLJ#M?)8cYRapGTwL;@a+4-KV}G zE9A1{bNY_~ZvvRs-=@Y?n(Qx(^X>@!{{5@|0fM215%Szxa>2VGK+K#NOduN&yP&5~ zkX~sNl$cfZaQ3$S{{6CMEMmP^f3PZ%<`%Eiz_0eY!pCdl)r<rX^T-@lI@Uh>Su zWghnW_?>L;a;`c#ZzBy-QZ946^6&_wQBCAeks%-({r5JDO~6h&N=15HceokqFI_;B zjH_JN%2agUJxTywjArjDvglPMoc9pf?p}ch!F^l`GFj7EGcNe=_*wl<^Ku;FuU?oQ z`;KrohV9MFMIK3e%$2WcjIND|IWBoh#WJ%U_WFPKe|P?@kpo$8_WxK8EqRj5#*h}0 zjVpSGDw+F~5LiG=N>2$B5L5=Im}ED+5@n{KXZJXl&HMb|PD)xy8rY;LD#mBlmzr8L zPlt(xF^-_7=2T7d)u4Oq5(B*{G6GQmK5{q`X+_@D1&LM?vHMxzA$R07ll=6^u9>rW zE5ahS%TxtrpfD#%w`N?+BI2+*%M=$%BdD4ACAd<(Q+y@KweO{FT+oTQ;_ zK|9xez1czP6bBPF3BUPVk3{$S*=I))-wr|l|6+Ld`ir{UtLv0bC4DGAKOggYzi*>v zKo+-{oBXkalqo17&Zb1Zjfu|&#O@B8ovd+s@?T>GNA1J_`NJmmv!v96OHgW4_{sRr z&he4mXWh>&oGqxtbLrZ>`otCKcZ8n+MAg zkpG-!I*ol#0nr3mLRj7{sWyhuD3qYe4(1l#I0{uPDO2UVcBUU2E($DQsdcfo&SjDP zTqvI+nNki52CI8aKv4hbgo2~fEA?D>YyFl5G&{@WNjf_^9LJVcK5|ZjS$+Mf4C(Q< z`##8Yk^xj0f1tl`r0>2E|Z-qr>)<^@1a1!3^i@5;t{KmXK3 zSQU3~rZF<$EnXG}jA7@nZTpyNh4sOMY)5V^CwB}0JBhrS&P8l;e$8nF-%}73q%v^5 zNW7az(I=#6h4MP^=MKM31pVv%kD$0=Os#+Wcu!bn2I6JU1_$TXx|4qVE4B}^GRICw zHrwyqTXc1F%`;>jyM`7XVq{E2o!#YRPHVf78d)cw@rjnd_5!Nh(C^$ey{T4b*T>C@ z^uo;_W~+CAPCAOZ#fCJma6MpQbr8 znd<_U$oH9X#F#4jodC{;434f1U_MSC3%1qm%es5_t}F5gI&QEQWPF+v)HI0nCQvy` z(;X@Kn;d&v_?JUrQVQ<`WlioEV&lFr_LiWQ*N|%sEW!I@(IrPoBnKp`6jE-p2h$)} z48V!F5Hm8_nI+0Z#zXkBcoe$6hxNwSSUD=ZX#RwZU6cMUxTEv3vEG2TO``+p(J;-% z5$aF5ANUXH9{X4@zFCrjBJ!U=QmKR zsM)PGy?eikn{5a&j~e_GQYLM?s;FFs`JOnP)IZUyVaP+bXFvt4?#GjOmB(0lS35gC z00*OTHQ)LLG7rTO@r&Y@!6j>n_~!Yk7Uw`_utR(&mGARks>eMpi0z397ufm3w_l7^ zpQ!aMc^(zzX%w&!X1=Q$3TBeY+Ej;ZysOZ7ok4|ru!zal_8s;J(i|Q0riL?V1)mJC z(Z?H@3va%+E1S4+txq5NC&yDNLt`!}$vPmY!Lv5A^55Be2iL-kO#U zE@;SI9d#c@h!~cc)XifZhaGBY^JB9_|AzT*?&GQO2$;pnTV;h0W*2{iJXAN=FppU! zAI$G;?~*zx5$6Y!0zCER#r>0Fmp4!nOuffS-KXA8s-oPZeH`|SbHuBrZ_U(|88A$* zs-gI{z4%TYhY=c0EjV_t@LP^>^mh^WS2j8@lxEOYJ!5aI+Jm&WM347EBrork!q1li zg{?go?AngDj;+ymyY7Y3+)84)1xapT?=^k7I7_32i~;b0hcVnDLBZU75*HY3(d367 z8}pOTdhO+ax~gzP+E;Ye?azwHq!tfbz*kehqtiQ`iC0)fOYP(GA2+I!eX|*#kLv0& zm+@PZsgU3jueXo04fNZ)s<1lRcxt+c&YjJbq_Csl2$1$(!HqZG_T9X^8C$ACcJ=?2 z=C_>lyZrugTCKB+ii$&jX;^`Bw+?IENdoBsiPJc}rvx5H(W~j{;Uz*-9vryug4t)E zV5eol)Z3(iz!PbV;#^n%-;hLbFPen9vL*r5^!9i%dD9kO{`d5FA9>=^UcsF;9Gmw6 zRcQH%ed;?HXN;70r$z6qdmPA>J;1zoF*~_(kGEaP@|l54;+QEv;(TlvY)qVAS{)i@ zuUm)OK2hXGoTpzk4>(%#5NFqT` z02ZiNWrik^Yq&r}7!B2440|wM`;TH$@#(kS*f0zJzS!p<{E}#106fATyl2_VeF1#_ zIuom8(9tN9YoqCW1K&v5b#r}%7bjoK8KH~)vN#vhZ|DAB=t0#>jm_9Mc5p${Q8e|% zajg^fqqYF-%|9_W7zU^38U*|Q-2R~jS+iKMNMVmU?JR~iT|zQ z8`Z7f%HQk12T2i-ho=hfc7scgXVQLUvSli~17_cA^Z?OEkTrQ&JK8AC;s>{>GB~78 zlW^t;ec(NvKK+;nX=xE_%2ufWC1Hy+?>^5`$0+H3sTj7+xZZSxqf*Z_0JfjwVALYE zBarm%f{<_e;T>$0ghh^G@|_}%RxIiq zPK#d$l1fTTviKy0)rHaAlI6fJW?E4;HiXgqe^_B}1r@v!1FOYN_^t2mt7aN57EhRB zPU;U1PuFkUf*FjjFEvp#rGi9(;tFzQjT-AToQoc&1pCscpmBG99TArcX1O#8razC`*^43I3SD7LSp9%u%#P>SlAN ztC}3^tKos>fgdasGJhKVckm$ZX}sXK!j7+AZkyJOcB}B_u|%GG|Mb0vhQ=W^z`Bln zD+jGUEsc<1(YMDa2DVvtq56pzW^-E>+ z3}QrrKj8$RnVc72cPtodibqGU!wil$_}d-)hOa3+daS%0 zVUg#sNZVK7vgQXeVSHAt>;bR`YU&1!ENQT{)1Cr0PmdRyvRgJSCM_+=&4u?Et*WfL ze_v!rQSm~gmIis)Oxzdt4#1b?Z0%HR?^F=OJw%J)3i7sxhnFr7U2FgZ%TnG@gw(79 zLp^owts%@pY!B_e5_D?QRrpOMuX5CzNlUxnyuE0uB!z6oalaklO9td<*{<$wY?NrR z;WEj?ZgB~45mJ&zlivvPZBNqQ;S$)xQd=2|^3Uh;{|jP{%ZFZaJc6axL}E;TzAe?_ z;fhW>nX44!ip{EADp!wO2+|(dnW?r%bL|YsaZi{v1pGtRpZ}PpC6XB6A%(KngPzVW zP8A~QhgxdiNdf5n){nZZkXgiG;>XofBz}4YKozS@Cf#Ol`Z`Jfi0bO0h^+VTK0E_) z9USJ>$PzzuskhFz4zQsPH3@i20F)D1O&k~{u2<@qfV}Ob!S;~o-Lcy%ZTfO_*Ni$E z`Jjw06ZK7mzMxZO6SjxfUhN*C!m1cqH1ti1{g3udn`{q7G-C%W4i8R0tS=9jjej+w zXmOjgFl{TjjQ#fQxGdcglqNM(CLusl&_BR-v*U;aJvsS%7#Oijb>l`~P2Bn? zTII^h`xJpjMSEqVW`%P`j$2Xh1O0bt6`W2y{(5j`jZimVG1*vZ#%u1c2>(DT*M@j7 z_GCWvcR1amJVIbt3^s03aNJZ06lV^$l@Ng5p;lGVINB?44JDFW124CB z4Bu*G2zCEL+syWT0%;ffgGxf7WsXZ2X3|^eV1ypIq?syGK?aHXr+{|iCQ&$%0BI3C zoN)ZUP9ar6=)-R__82{Tc4b+*aGW6fSepzafeZol8vx}TAp#R-&E6hUxBoe@E3|fX zB!Ef|s!U&*>?+_D1s8t+NCmLWjw*;;_EuKMk0N@);7rd@j9L6(bEWpa$OV+c?j9C8 z8IAN``;B^mof{lo7{ZIBy}_$Jed>FRsvU<=!p?@D}K#v+12`9=ld{R{Vo<}1i- zu=kANg4PylPCJ5fWu0=LNep-06cq*6ML6sTV@z~cnPg{*K6NIQxs^|wf0kf)_~)>< z+_?5WL81Tt_1&F9y{74JGx$xaLxfCHhbRzH#&G*qvz!li*mVVJifb2agPD*h-E3WsI|Kh%Ui zK{HK;Jryy3@xW6hS+kX{sIg$nOFv|ju;l(BTg%8c5|pKhx9|8eoX$tAnlm5`=* z{`+%UrO$41?pW06+wm*+4O2Q@ge|=bhH98Z2W>Z2i0l--Jolqa1IIGG4gmD;&vcb9 zofs3UGrp&M<=R~aC`-aUyru--1fM_^)-Ek%sw=W5vDz z#1ul>Tra}tbPbH=7XONDOZiqs)=t9eMZJpd@v@1_s+or`K1nb^wDj-N ze;9+p8F9Zl!SAiKItb%+*$CmNqhzrGl0@K5fsVU3PodrSC7nu;I z&$!+ro+w_a7}5cbgK>2Ejb(Z5u$)oGYT?vNe+8m;-7e_o#oJumO}o=3EQTk%(ig!2 z(j!Mb)wcJ~XQv)6X0V-+=^gK;8P$G7-7Ob&SqR+fdQatC*LP)0tQ=(uJ*%!{=ROEz z<@$m8RpZ?&i#=^nJF^f7L`e7w@;USQlk;#wqge?GjL(@P%?|~)Qye#N22-KT90{HZ z(P~KNi|{DB@%gMo2G9&eelzNqK9OnVJbQZw+4KZ^6b1@F0BVtiTL{qu^CQkY5Ks$` z3~rd#%&wPP8zzf~rG)j(5@U^C@@(m9U4%yKgk}=JNH#wUWST{9-{vCYc|nX1FcTxvbW5>?Jnm+bpCb;CWlvjv146jO%-*x zC4CWvL2r2I8fx^mcYb1h)Ak2Fj8j_CL`fyfEdG(^)EKIzpw4BUHj0aPTOSlL-> zxBbM;G+qRFSBv3fjxC?#!R_xB>= zoK_$v@>kO`+jtzm+6N2<+${Uvb>ev4=2{)A@@Qk11~nmt0@_R}(;$lMv8AChgPd?; zUF^?L7s?2XO#Iar!Q>D@q{+3>9K(V=P0;Ap5QEc8)yp9NheWOICe_8zLm@0TS0rJpPt=6;@sk(kGFulSDe>z3@rfM4DnX zF*qF%U#{&7O5+oGd`a{7(qSlvX!v7@ymqA~N#4B-p0kP@&6{aMl+de*4HAo<-mb2A z)-AyWh2Eay8FxygfN7Hus9!~7)p_pDfbgN_d7$s+4f&Ih{wY00w=PImjNjM2wo-!x z)W0Bl52H1>L7^1Xd6L>yHIYa=P{C#II-Odh=8j3ZE#3A6Bx*w5{pk@|_QSb{i1Nk) zz0}!S&!3ocHw~vwnvTnGNoJPKbhe4jqQT7PAVSYqc1@_Zo7(5ReIWVaER$()fE5Tw z3rZZVu4%zC(5;ux_kVCpc>8CXT55DeGLF!uT# z#hgZ%N&cRkHFA$#!Y_co*Z5E~Xn(u%$ZKVva@FoRJB9v6f{i&6e}I$<9Ofi#-N0p6 z)+IrEe|G$A?ot3AOVC6$?bvAF#xPlEMOL@;SnU%iF<1LzVfpH&j=p2SN!`>11>>EG ziIw;5-KH5fwGjEc$+PzNg>Fi7BM2KogBDo~tSrDUJjFJdF$73jAQu6I2Kd>VeX7>$ zIB|7#_02l!r6`~m01>wiY6C727`C0RkT(UKHnukSrny=u-uaE#Wd_`tV& zi{3G~$HG&3br_J2iouVqpYHW<^z&>V?Y1HHNG~SzeH4svmPVQZV28NM8X@84coT8H z@X_P}GK0JK5vbwbOo=VomUk_G*mH9JxdTuMn0DQZS9sTO!+xZ())CXw7=An=7a#^5 z8WqT>C+A=YY}}X#^WfgkC^oACvmaO;O=(Eelp9lg*+`TLJ?%x82dU&3kz-eHo zt2ALW&w`iYhm#htcfE@%F2KdJ83y zLA!n=R)nsLIF#n)9j#B99SZvFE%iTc+^!TwafNqfng`;}6FY#mU1rbE%_k;x z0JvvXxj`RUA0(_8zIx>mN`rJgTx-X_-EFyhMv>zNO$jwRMK{C`ein8%hWi78)w>x- zSHE<>bRy&%I51B+d|j^Eg6sC!A7T9ko@ic*O*j zIov!O6KhfMOM6RuJ3GT!f2$nuVhg);a!P_1_X(V4rmz2P%kL|WBlTu046rq)wRn|0 zrJSd#svhpp_u%;BD*xwS_(UZ{YO4?IqQ2^+5LxE{Bea2wd`@_D=3<}k?vXwyG60+z z9Tjuq7>RhvG}`u=J^Fq*GL-bu*U_|gg?G%9tkw~FIzXN0x)%%#81ke~u+M}TedU>i zPk593oF_tQYBhehQynU+_Zok57e1sGV^#;n`V-opS4yUh6^l+rc3n6lVumcrC4ieg z_20GFTvIvSc9bYH+8>uX9l^QaK52iNvlnRTpeGNT_KIN@+uPl@P<^Uy)EK0nq+!;` zB03=F`kbBJ@*rW(BDe_J_HqZ?b>!-F78Qyi;TCf`C3TU3lqI>NI~#reUM2<~e1HCs zy|54{xt`;lBKpQr7m%^qsrlX^tX6<>*8bpNC=F9eN+z4b zX&eAaK=8vsFw>-FlLa##xB+qdp+_g{aML?=4}>k43~-B6H$$JOs`4#Af)|j=oz9cG z1|eq<*%`t7hbNt%SFPG(mBLC1mcMW@?x7jTB)T-*l#5vj6Fc^-5MFredQd{70!QZc z$;EZo9(L1UFVDH_L5-qwa~b~L(Dii*>nYu*?eBw~PX7`n4`T5y`@d3!cM|~R4BvId zAon4FffjVz(sMgy@qtEgvBGk}SHi`if9 zpo!){ZbWGLfMNanpnAHP=Ifx_x{AjwW{7TnJH1MRmYcUW7=)Yb$r5&>|t_{=q_I0UVQ-Nw~(MAEqE(QJKAO; zIixFH&5?qS*ccYoG=`cqlVl^1;_;He4ERE|?jHJc0+pFtMYYpkT>k8Z=5xtZvTNVo zkPv*_SM0cJn9a7?yfV{KlkI~_(5qVSa+7ypk(y=`j9>KbW(E`}{>YuLjQpTiB)cXo zen)_x5B3RB3s`q>$v<^3b|9fh9%=|rI$buTHl1K}UwfjqFRXs5B%wc^+KD^Q_D8K# z@;j~rk4o~W+8%<>TQzOCvOQCV#{x$V2TC7tE@|BhX`@AHiPy({Be=yu&S7aU%A z=SOO%`l;iwC(Nj`4gD>==FVH8>t=hW6SD{=ZNqEjH)5KqBpAmtX1l=|Bybv*Ps_xCh^a(y*>x>Yx&S z>L5*FV%M1}t1+1&W4u$mVmfXBy&6(1xYDOob!n~ZVVyD?=%(A?o}-c@@LhInS8#v` zFyS?{oi{m0(=%d85t9ArGxEm5#*FuwR_!J$yAdTso}-Bp?=rbZQpu;5QWqu=8<%k| zyMy^?Wmp0l0px)p*QUFG#*O?_`lo=uICV5VSC{*|!}g^$qFRlO(O)%Eb^jW%8u=b% z?~wSR&@8SnQ|a4?^GZ5{-vD0KfQDVx^}bR1st6PX=>HxR73OC&X{dF?v!2hswxnGS zRkR}o06^Eqs$~>*H z1aUa;Gy{O3bxSgJA~hzHYWO6SR=(!%tTjroZ@k&`4w$q6zC75bfT*+%blrM6%m5yA z^B-E*q+cG##DpHg!wIr3qJ8~Gt4I7(pMj`@BwqiD`s9Bh2;-|e{1im24uKH+jz{6q z3+q=(AAqw-@K}3^TdM;81rn=mU_Pm7C#Y1AM}*lgh(f+>x86Vr+x=e{(7g%G%_@Zl zTK15_j(GB4)z1D@N{@&_ffpOKIuM>uJF8LgU9$jy+eG~ES%t0YRt*4f$y*>H-k~8M z_Wr}uM$b9(^^kDDKj;ZC@aijaN2qST2mfVXKkK_n8PB#qu1a9`Ys-urqKCbVK^teK z{cde##7a_JljktFf)lB8rXcqA70_-V!EEpRCL{tnGRF_T&4a#t*3Wt>M8un*y+wIp7_=?LG4eJBL3TdA=m5;%bgK^&Y*unE_ykjM~Z9!7XbP` zirDvO*ZUwxtT0y(*@ZmW^MN)wkW zR7F>ZKI>%+oTZjU;M9m)`U2z%@!Rs#*Vei56@-G^sM|nH*fh&-RX{LMBC}4a!UHJ@TtStJ&mU$|v87oYwhZFx1eoeIi1CTgfZw4|=mD}8cZ36)QkVJK;*%)AJGFQpvWupxW^xW$}n}zg& zVP!wUiyQ>j)EN`At&K5NGjso%|LY!91J;mUL@w{B8>AFp=ef$a@j{ z0-{*<%PdwSCeh6D^Q$tp_Q-l-H$A^C$*jJRHL~8sDgXw6?M$JqIC;8zs$Otd+FPkL zCUyBv@E{~)xmh8PT=S_kqqin-%?~STU3>qd1?W(N0*WNWRNcjN*^JuXTZA6zY#_a7 zuvcVcPwe^50#a-4>=)?|X`O9sh9?TbL6A%^8yU;=HO>Im;zK7FOA<1JsrUAun)#{S zu3f2k^XFnuj-S{HkcfY@Uy5y$!248JA-}uMXdktVx@JsJrfoMI9HsB1^;?)CR z`DcB;(V81lxfDv2$P%k3N<{%>ad=*ytTY}#ai+azB9OCJ4@p}ygUnQbc3%prPbq3MU!C-^)jH1^ENTt_uV zbxlcM1%ozaLA2H9PyC=q6WP6-*Enq=lG(!Q^8R!aW$r@7X0^>n_$@o4oc$sM4+uR7 zq=jxJ*7=GmSzLytUl)svCEC3LJSar_@cV-Whnm_rUBKo2kOQ}s-^8^>@KYNR1tAgg z=UG%8JraCXY>QWE26J$ttu8}tm3&&~7=i+QR$@xPZ%Gc%FYCcll6e}G09*SZ*JVu# z3Ay~8*?+eaV}YC^#@pG0lrV{&)NWzE)lJ&**NW0H^*LNm?vMH14TyeOyWf_tJ`=emHXp@clQ`{E|UR z;7Mo81wvlj_|80VIOxI*Q-Z!L`c`obc!m3CUSUn+)pF+e*@&DY-ioeetXWEgTSP3b zb6-VyPN(xQ2iZNr0un>WbrV{~f}!*qpyeB&q5Te%&Q@S9=6LV?UaSD4u5%iUVGc>!u{EIgU8F?fDX0eIyjs32q-%5a0b0YfBGidqe_-Tu4w zlfdnOUd@s~{Ffv6|49ZWwkZ;Z#%dfH1RaJ%2IFG|oa(YF2Rkq!JxVnYh zUBD0C1ipenz212D2GIvUck(q}n>%O)4w8X40n`GBE?G}U^WkRe;r0S0^2bYIh?_KC zBfvO7xg0cKO$`SVA!kwMLo-1je-SsbMwgGpzUa19yLo)VoX@WRTdAz4GdVd4GpRM; zp(9}go6-)$O#J=*S&-!NH8s1d78KBXpUo`&;;F>I{DsVJK%siPbR*Y316v1Up!cFz zj?hqC;gPG)i%J%@io(8Kz9%Ei$$J-Anf0scS8DA~K7p^N69oSRtv*E4^OQG|x&f;X?d{`ey zagikZMQGsHvVRRhXVFs%O_^6AdEjP}6`onv1LE~!q?hgLl)phUw{Q-2! z`s?Le|Ed1e|5wQ%`F78VLf-uB>=44+RYXMOR8d5vN;dFF=24@I0lyD~k*`803N{ii`)-0IPNyS@iHR33UHLeE0m36`<^mU&0j3W=MVy3% ztEDhlmf!MS58}05km=X)`!_&FknG(1Zw)8Y=I;QjzuDcpARuryF+-NY#8>-KsGS4k zz2H)gX1;?Uk>9QH?5$1faRP((g3f`(*`OXYKScD4H*HXzn?4Aw%RL~VsBlP%tqpWn zY$T5k9WSLAp({P2lymwEVWmJ*KciDtKE@;6=2JS9xCa;al95RjD_wZ$$}LS=h*QWB zXvM|`7q2}BfTFcjLuBR0WrYHI@}S8}5R|r+U7P-bAV@W}Fv2JI&(-<*l4@pP{a1%z z?_OpAzFavbby7WyhFj2JFpC-3>Lo9Sy@0QQwR^Cx?gOmB8E%yx?W^D2G!GHpQ8}-tt>J&FGDFLY37NfH;?LXS!l5SZxm+0tmy%uY8EXq%zoK z1E&CoHkqZpxy`K3Yr)oM zsC%Q3-=8{$X`tM!>UZT}aR!UGYtXlq&dnw(z(=hzJQ49eCV4KW2{eCye$yj8(8HR=M$(E$bQaJpb`yAba@W( zz@6u-SQ;nwJO7VzXPdx%+~i5t@T9659IivXJU!m1E3NO9aeOliDD$EC8CU7I>jicX zq(_mG?w*aQY?V1|h~$G-5knWM%Zt1ce}jfkH(JTqd%09_CTBZ%afJo{(pO?E$Kp3i z*w^oHNtEiY{7vHCU7dK{&KODqPNeWyVPMw?{$iP7{QfRj)3?3-Yo*pkS)UQ^Fm5ZB zcK_e`5Z59%%bT%?*t94e`S)!cyiNn{4ByL2-r^Cjk%2%mrdhuy2f z-ZqS9Fj&i1_@vlWXJA0?*izlk)}Sr1n~RFw$;DOxQCK-zlGdgF&4w6pRQ{aR#a3l2{t}MK%Gw&fnvvAm#d(F#fmOZiwArO z3l_Z`)VEZgUV z8^ATaCcXt8*INXAGSgnVm%Q(r)fC7g>Qop!Dk9W}>fSA24-)Db?(XW&k7jnT%9Hh; zJ6cjTjIPqoPVGd^&f9MR*q2;QU%p^U4juvd$R*1;7&IxtG2KsueijLi%{m!#_M(n( z+%<(OR67zqflc_adNC1^9RFB0X}B}ee;s$QNo$Ik*xK3xnw-EnP^Dl2!WPoSUi&f7 zr*$57adDsL1H}!=`twT4vyg;x7Kzc((JR*@ARuH-MVSpz~`?;OtwzVd5_n+YMv4$L*obdSsCtGqoVdD(=Ah($uyJW5Awt1zA z+WY1KrKD~Y8ln|gXKVs+S2;Hqi64p>EmJ{lzT?*HY~85;<(dgheT}PgIzPU~tFs_0 zV4~J=Dy6ERhB=z%mVkhGMFe4`%J#9cGOJ`jp+_5)|NiP-Aaiz^sNm<}Ay_)8tv2+^ zscNY3dUjK1E)A}1Oe<<@YsXoD8Wzfs+{_v5su6<3u9Wv&p`eiVooS7`Kx*3HHvMTN zK34>+4{B$Ote5Ry0_zil*IX?r!}sTq?7>3_yWW-vDom4yR-pb1u+1{xbR+&!9OSB6i7clY|s&VcuPv^C|2F%1mVr75OrPn)kgN~7Uihb`33Lg+4gYCMp$VnThO;y zO@g7F)i0F<#Zcz}$pj)5$=+j5DzS#Io+LeQX)XrS%*^5$5jgynM`u zckpTGg@GM%&%u#}tgf71U`IP*76x z>nr|4+1R)XM1YSBu`XcqFLa$1f@p-phryJGpq5h==i#KL_N@dazm_Hr4z5HpT}?<& zwe4Cn;PW-^&Rgtcl1u^N5^ZvdU0lY1Rh`fE&a??M35y;+zzM2^i6D8yIwe}bS|{3a zKc%ML#*z|8{D}A88Gy^@R2g?A_69^GB#<5pP<)-9jY(A|EW;T;Vry%w@NS}ELfM=) zc%8TqNxuO8T8sr}dIVV2g{~zO!m#nkTzq(#JWnTh_eDDk`PRn9!HA+}?BXI1ad8;m z4y|OQAAVCnHuB(H6dT=A&N@cs}hw zb+ZY7e}+<0EhefFFyG^=&J|_qfR!Og62hz&H;c#lVj&Zv2jsHS^0Iq)aGBkW@B(d@ zD*uoWoG-s?4%^$>wztj>n+pmHF&{2SPU7I-QY)5)s~Wwo5@>BXtxzuUss zUy1`c$NI21SNUxpy3E^JTQ|6#41dU}rnqkwW4R#fcC-hqS3&35=9|JS9*zh4pL%-pwr?_qXgX{DrhxNaA4Lw4gN|8@+bJ z+1kp$ps~KQFKy~2BMuw1-XS}>{kD(Orkp+FHIyjO}e~=J?z7W4_`dKJ*xMW z2u>O*bCZC+4;q#=y`OaJVY7S4$BSP+FOis6P~ft>>R>W>HYoY5v$tTrI@HU>{@iV@ zC6a{OCXpUCJUV}ZWYN6wgACF)P^uJhY_qaM<;j(_TYufODXb2jD z%k_TKaj)9>adrw4mrN=-H~tJOo>wL(&urYHhGCtXni@Q^t9kFC`=#d{<#2lH`Fytr z^~F^_us`dW4U;RfwCIy_5zqT36B{2Ble<|WjHyLJL9sSi zv_0X5PU7r>MFqP)=S<3ClU%}pPJyv>Dy#OX?#wrOb?%S6_FuzzPD>m9OT3{dLvF-m zw1wIYH}UXSS0h;hk#FQY>%d@2>MAb-hr2&4uT$<)#)opdW%r_;(X=#%)B3`~LjB3} ze@}i9qLQVa${n5dB@F{QD<+QO@yWMm=vJc@!3tskRK0ZUQXCo4L zC3!X|mgu~6e*qQBOh>yH-kxN?wWQiqc5t)TGqI;bSy!J4iF?!l;I@>-Kj&RRZ9Ke4 zE=VdpS9&7*WHU!Ba{kpSgSTWyT1?168r}DD;q|?Ke27#l#x&c51$l1YKD>b=Quf|x z;NT?UKA<&9iWlf=;*rV0L~Ct6)1BDNgyoW#H5R`IMC>vC6(Ei+E0`F6z53)W5@NJV znJ>;60fsHY-Jl-=2?m3w1p+dF*Gd{>bF5$3+dFTNZ-r#)1M#x5xg763)GXdJ$%37BwXw!fRA- z_bH8fex`OkM#=v&R$OCb&cZj*xVVM1U?TTeU+3LriKYo8=oV2Mb1Cy5FFhQnqJsnk zsu?fw!@yosQN@#+rt4~A_E?@vJ}w9(tN2g_wM$1T^a@?U=-zf2_c!hQlK!iR89Klvq=y>{^%!mr=Hb;R@bwzjtZ`eh8JcyV!2^xXsVk;?P4V?pPg+=2p)8uwEu zelhHbSIf~Bl#pn8({C(;YwBE;4t^H% zlZ}7)2!q#Y>s2(X7B<<#AM9=6p!7|pOhG|RT;{kroh%Uo-h;(NWvn0p>eJ^!j-Klt zdv?*X^Mzi>%=>Glgv9WlZeB)j^H@DNSt}bkHzFZb30qup3goVx|kHwx8sc<^wKVQo0i-7gs z*9ZRhKbIeMCJGMo>LFJIMqwQwfu3kMxVZH*n=7lUOzS4&<=n?qe0*^@db+xxVEm8_ zJERGwL7=}sm3KU^O=Ew*^0Q}w^;53f?L616U5o5g9G@yKE~b}_Kj`#0>jmT}meUaJ z>Q(Lu_6tjmioiB-=az$Ex=AU3frUkT{iXTKnSoI)9UX9(XUaVQ+nT+nXpF8TUn(ST z_~5|s)p$jGez z3a1|}v5cnBGcX_^BV)ep|BB3gd%hi?=|!c>e)jk8(#!+}hNeBWSNg>92%kHe(<5Ew zKjBc&)1ZqtAw6+fumW`2WyHk~hPtb-pkX_2tu!>YYrM$PwrS`*A55swnYwCaO(Zbn z(i3qnfArw^FyWzlrSX=hHLvrIksmfW+D!^GLqkF$qM;m}nig|xN};i8w__?XUm{Y{ z&Lm-vqn$-pp~=QZgWhj4xb(7p-Q8-1M%@73rL0CXt4%K~q-JM#WX~$kO(iBKIy*Z< z@7eCb!AUp=tX!C0aTY@?&vlIzo?0-j;$nzIBv5mL3!rdsU%tA6~W}jBJe#3=BNl-!BLE-1_-*7y8soSJ3h+I^u;=($jfuhphHm zBO+$&(QkGn9{W^R3%Nu{Bnj=Wk3)32_Gh}MB%|C@fIdCn)IQp9vifZB1g5|@xg_1b z3}w4yYVTKHQ+3L$dFkn!fH#z)nCf-B-x(*Ex|RG2nZwxFw=w>y8XFraaiH-YD_x_+ z+u@_Dg82KE@n@&5{{C@T64_c6EtamQM|Ov7MMXtCmJ^ju z+w+)BtlE`e7aAfvhbtV`H#V$>{W81K)sf5xJ0vh=c!lb z=lTddoF}3W4>CznBF_wSa$M+(1LkBdp-67JqnW?(7M;rS^rRB=OHWf`HqFoRV`Agx zZpgGuS|?zYe)`n)d&U)-eN`rV!E z=kM=dVA!F0unHp`+nbuLRmCXyfRQU)v(w z+(i>>YgOap!v?VOW^+G}mROAEzQ(PfrKa9KtCz6f+w%_9wx}{}KUg_lS0O1fp{=O+ z`t>WYpOKosaFRV=|WL|3d!$(UyH;~}ck>pxe9M7feYL|TMewZK3 z%4!I`Z26&H2{H}WjL_sb7_?J@Q1`tMIK5rN2nT}1qcNsrmjipNd% zCqKRI2~bAZX1liV1AX#6qppHwqgu?Id)3_9dVD+|L|kAXm9%^8x))zsTDs6Fbfzyv z$9ME6tbVlEVmRNJx}M##rQb+XQ*&qwm+GtHLdW&`pN)+JL&;TMS2Uo9W9hEF}H-ekg~9nI@^a^MLlY>8~qPU%lq&ZH^J8hfn_O*QvZi<2*_c<18;9 zbJ+hqCMIU%@a<4c42j0Kly6UIK5XR5+pjW4Wn`F0OWRsH>}%DWmg}A#UAls3+W8Ly0#pH$1*ZmHPO*EliXpFO1dh~pFclj3sNtd zwtA?^nsd_V6Ig9JSY4&ceCAXSH1I)60ax4IxFTpkQj(V!mg<0y-@kP_zpxNJ`SHVt ztsJ&+#kO`96PMe(zlajjWAFLZOUaxraGR%}W7G9_H_SEX&8)wi-lG&C!zC9qnQh`e zV3PhG-mQ`)ixrUb(R?rv>ufp`5wu|md{ce2cVi+e3uKRw4LOav?Zm_)%H#a>4qMK8 zG#k@-T@%(q=Vaw;x5328l=hvSoytly9MP5>E&Q$dprEWQNhLZw%&TuhJbnj-gw#0C z<@@;1rUPowo-kTM?5o=<2F?ak&HibH0~pwslR*c6ro5V)OGtSv(^sWtXsx#M7<7vJ%V5rOC->T4FPYy{Wae zkC;3(l|RqrRM^Xq31`b$@;KbQ$r??1dy7t3_`EKK$+i05rNYiAHmxlV_E6oJXM}8h zr7?ob+ru`pi4TRW4{}+xDyrRgIq2zAPqZQP1m@{FnZP?7>$SF6|8TkjpIr3>arge9 zV4SU9-y{iaQa;;_PiulM)sB1LKYjAVshc}7C3qE^W;Sn_6dM=I$LsN2Ro?0>$Hr#C z?N?M9>|7%SrVDkJgfX#kyVlFA-Kin(s~JOIt0U_G4x{VvsA3jX<4HBHZs!wK?>5+d zb*m4ynBX}C1qDT$f7ecAXKM`^G&a)lT(Ov}aafnJ3MEMrwjE+GnV_89DAga``&{qq zSLsA8PpDaG%`M0x$jJC%oZIzh^YrvxW1W$ak!Mk?021Bx9vU7McHcWGPx4TB-Tfh@ zb!BB0_PMmwoX%pi^*;y89a{Tq6Ed>0LbkK2HD{-p*V$%hILfngpY8pLkB?6haCv>W zl>+{dB_Yf7mLqOsux>@DHl?CsLB&mqi3%4UuGygSqTTng1z!UPT=rI7IDhYj(}zHM z&U7VHl$|*BFS!J?YJTVnRo6-IYF3`6*|@lHQbV^*k|8!fIpG`F9|bLxKn1t3fGdD) zzOAFBMZj&34N+XD;p7ZwfB!k`76_un3>O%9`}qjFZbjH-50!L&q=LM<`af+a zZwVwAn8{aXW=2v1KYyMApmlnB8k>Sonja6v5bK$%ao68ygWk&sU4i7od&gT7NY2I^ zN0duhStsSITXV;%o`Ez!7OD^fgbx%CPCKg#sZZ+L+DUv>ikdKx zkop!HrBG^B=AmaTgbWzS0C-Omo>1Qva0SO;I6&^O6aSy9RTe{cBjV}JHr$zx^^c1O zb98RS*834az<{B2wV_UL4CthN^2v>+s}Ufg0|aUl*stBCDwh(z8u~Q{v+@F)?*kyU9o|aX39RE`^I7~y1168yXhQk1`EQvK`jP(pU5J!i+wt)YuqyeoaZW968tqILs#{1@y9w7s2TuaNSh~ z5BGN<;pvg1*<^8~pm<~U7KNZI`>Tx~U#9hK#mvP;N7p!L`14zkaJ2BDr~7HPc3E5E_C~GO zsi5E$ol4;EkLI~87v2jubus@N#i2f3(w&bMl~-1v@_zU83*DbgyX67cy`tR@dq=pL zYII(&PbGs*WG3*~-933dLysd`eRQ-8lAiAF?n22=R)-6YWvsfAQ#)ChnK7s+DBK7< zO1fN{aU>+@i7URQ3c4-LI$+gk?f3e28nmS;*W{xsk1N!y595;JZqE*5iBVIFHqXm| zB8aL^S+DTkN;O#1*1;3!y_Lrp#GLluJKs%JCrgwV_eKdG?m!6YCiKy~(rAijn~+(x z-1X|QzLmUu7OPo8q<;$rl}Sd1Oz(dLLC^djZEQZDQqpBHez7r_#H|5!pff>mdz6j; z!D%IxkkHxcDAY8nW^!7UjVUC%4tIjhg+M;<{(WzpbJIazY|@UX5)7*FZ_-oShnILP zTP7MtcD8*}&edEun!A@6bvTY91sRBqB@Pa9BiTfo7YY`Xh8H2lI4&qK)Iv!0)sU?O zW>S){gY1YWOJ*K3GqdG5CI&X99+59jPj^GgNZ`;XOw2$GsyLD*4VqiD`r9;`R0B>$2Z?z&)dBm7*z9(PyRlH6vuS$LJ1+QH^@8yaHls`mg%D7gNSFb zTs+3a$OoLQJux%f9mqz`*G^18nVnXNdwtIwlfcoA@sDs&kNHZIDp`XU*kGKVzGB8k zT!B~yCW#IjYtQfT&c?5{VKYg0N0~?!}uCl3n5r;*?%vOsfF{i=Gk4Ih^ z0)|X4XR=1^y`NN`9uJUXVPQ>%QR{t4Hsy@q)2neJQ`g{nq=Wi#G=K2L>n3)u>}Rfr zB<0>X-`GKk3v3sj{ZV;0ZyBPH6zDk}Et-3ur@yzmqow^gG<0al4WAJId^@|or{~J? zdCn!dH9^}y{Y=r};o(DUa%93U)YX@`tv;=2ecxLp&pFcZI6d0!lfr%WG{CgqavY7@ zu{pGrkj=p0Rj$t3=&@mBJE*RFOb8cT&&-Kt*627hJZg(&WmW#(B!}U2@`viUwsBxD zkgbN1iRqc7WLm%K(r-6cy%!dV)xpI@PFmVy*HCtf^3Ovf!o~T0dVZTMnFJjs8urEg zeUR;P+xXcrkPAc^-OBx4CHmXyVd6NS*7Z`4l0cX3SjK%*`R~UIG@eK_{OzNAFTII#Id(|^A^10 zK8j*>O?*$F(+Ri7oU2vrPb>_!$4Co|=zAN)PrS@(GQ}lz^`>`n_BZ`C&emh%GFk>wwr|+Z zu@Ewb&A$Jxa%HG?UY~?P0|c=9{19xZ6D^;Q>&a7uWzlQ zKc-D76uTtzxPdm>Qdo6&w0dwVY{~WP%Ob9?^WGP7%ugv;!5-mip^ssyFu3f0-{^U9 zfoQ#)6QrWB;UdbLoA;Y4~yMfczyZB1?(k=&zVn6TBs-waG`a3%OZ zW+xSL_6#N`q@{#Q(j>c+7Pt<5(8d-tHoWAsp?_ZX!1qC+BEyaBC?S<+N%oj&MP2U- z@At}1J``?m5%oi$3kyfUmg^Bo);M9fu5Va%Vu{2}%Mc1cKMFN9S$TMQcr$T2&1)s< zwS2pSQC)wCd@ouXcplZBJcnuc=iftr5q#62R|mHol0yqX;>E6hU@HB^4hvNSLP7M&P|uOukq&SM{>9 zQd;I3XXm?Nt7|8|5PG!xTBj(uePU+zgc-m+u_8P4>^Hm@u&;S5z0VI7h2B|H1AGGz^5rUQJeTCZ+@~&U@hhD0 znw!fg#y>6lHqm~Kb zEg`<0jb{JU)DuE25Z%OkEUS>6U5@Qn55IiMtHhK|+&L^8Rr&Uj#I(Bu$*9N^KHVb} zXgIt|6i1|SQpbamPo?c@VfzJ&Z+Pz#eOY1nWiH`sBcIe(-3E140zNgn_+?&1X4LcB z%U*SlV>C-G^8ZB?Utb|9zd!jr#U)K|bx>U&{w!astRlNu)2KB5w*QKezz7-qm5sf4 zTSmq5$bWc#t7F#>lcRB3EVO~&^my^e?D^>~#tiwu+`krPMiyp>Tq>&XreFA`TT;)b znhTZ9hWvfy=ED+Dvif^sdF=7{Q9Bz82}E`A@wH+9@qwKHNf3d22Ycos=T$XiCVA@R z4fOlBw`tY**Z8uZ-LiQ82nzc*MWgFW>u#T-?~`dQ6JRs6VV29|y{O0@nRbHXIO~gJ}?y z7@QJJfJ{lV3%ObTK`{$~5O>gwWC&fwEwMLQ6@`%M<*zo@t(%VYx225!!+S1tDkU^N zCFp#RL!Jj0X21pcVac!lH$4dmb~Q6M-%i8iI&^IN+Z<8k8j>XY?`S6gCDXakh^W|z zC?uHtdoU2=)rjy4+;lq@*tw7mzWDQ}SO2{T>R+-Qr`yk@>^YE7@sp~(fD8BUAzma0 z;B=wj2;q0&b~f5EK31SHx&rolN!8gJiFgW$3x}3~n|0srDIfBv0vD@Ko^A1Pk*VX1 zhnG+>cDAnH_%TMSzBYQ5gk^VEA8Vw=9-*SyDtvluIrKs$1mwU&p@I{)pB9%30W#14LEC9FBjo zU^ni85x$Wv%TzZ7JIR*w22DraamQQH3&a2kfRXkaMakdlIvJYVm^zYS#axZ9UtJ#x zK_r*!*b9-a=P=mFD#<3LhEtD?Y;9-rdu@EVE*bRut9vZ3SS3$P-eYze6U z-RXq<3pu)^r$P{}(#7%jrT_O!`(Gtr_)SE|UTQI=`6gnl?x4EH{=PVwjGczah|MK& z%_kQF8kP3lEU7no+6GbG_MArpJx~zg3Xl$pv$4_+%Y{Li`_bK{+wzp=Fc!&1!qo2R zrt|)}fQwiCf``J%9VS!c#5pD@q0Wl``!KwG+7jm);1h_ImUexGC+G-gGmawouXY^8N1nPCKVn zdj_lUJtIfUx*k|Bgn_wdTre^WOfd0DwB6mS!@~jFPB3hX2}?@ySf8juX`Xf{xI91hae)jd2symjlA!`fJwtYSb=klWdb)1ya^=4g<7)bXA<@c9zX z!-V!21U=w+LCVwaJ|n}udrpU2w4>Tfn=?o@Y-ORRr-$ER?Vb3S7Oe=6?A(^_ynw*K zVOB^!CGb16w6ribrCB%k&*kL5o(saKaKZBzhbvD_O|7V!y#H%nQ1YB;BE*`dyBl>` ze*LRAu&``izs@Tzh75Z_Ufw3K{fK;dUG~10m6b`-=#2_E??`HC2?7*bzIVMIQW?-9 zGZjQR$II<-G5!HW;1!Vp5N_dqS4WDrcXr}=EE6SZwsv>9+1Vk1>6f0qh{&EQV-%PT za{%fHr3!Kv2c%{}o>H(T2jSnQR8+W#h=|zTZ-HD~Vpv#Ma`H<^_|nV7iDO8~$r%zg z*40hVw|_MIcyQn-DhaLW=UAP0{^U8VYZE8GB%1F?;73D419~Ui87`f4s6CbPcxYyu zj{eM2hrG}PAcq9A5kV|Kl+k7^1b$fm3d1Nv!rVl*MM;=RqiWojSleuY?NU>~IkI10R3ZouJ z(a&8S9TtaMb1Qq0^ycT|3uw?IhFB*ej$zJiv*6jqCRumymcOg4mh*>D#8z-IIj-D_ z@G8suT$ZOBSpl?)w_aW@dn-=+YvVAh{wyxy6B5=qZ9kEbG2fc~g^o>j#~Y83FbOUW zfiK5Mf#F9E{QzHI(1EJ2PX?CNmW@5gwO)SnyX&(U&=FjPl2{~vtrv6(^$rYV-$!Et zaxg2aMfaD--Z-q$t?r>Ufh~+7tUz-V5^_H~IW!}jbU!wqOU@v(wmZx;)0}zia=f<+ zS^g+itrqt(+r=J8^}|YA(rdLLN5!eemNIj*McQMgC>*s2J1ih7z);S);Z&({f77zZ zWYgUSiwx19^Ef4;O(sYKVbG;(Vf#>bQ4fY%JbLuT$EP7* zzZHWD%nM9aVs4X&_s)vsde4fCdtp-2aB=kw569wc!DuY93JO+z|IWN;0~Akl7q-dA z@C8T5Qn)PDEX=LQQ6=8lr7e|VRT&wXy~n1b#aZHauK~k!Ad8f07AzAZBO^98wjBkb zNH1p}#~triga#j%;<`G%{G&9w*QaA0eA>hTZ_26G=G%oEd;@mm9mrRn9Z#MIlkr+Z z!W|YFBy5lO*KcBCK37zv1_`_SFGq{bftmow=d zbHn^w5mo6Ie5sl=#Egp@4wf7gm(Q9gJ=!`ubxJG}Y=Px82yYwmT7WG=_FvNv#jL2< z3&RjZDeMm1$sSh56Fw3mB2}m6jEoHB`JDVsc=xY#xL&@Tfm$?ISPGdcIRyUV=cnr) z0BC;7%+y$T&HbjJvokWlJKRO)D|jA0Db;hc+PKQ40wa$iu5|v0AFPkI#|(WYFWFN2 zGN&YK|4G(u*hC`m22S42|J$FTTywJ3+M6opus)Fx8%vCXbBBdWCQ)FxrNsoeU$E}E zi`PerGW~xw-6Pdx9qjE@)Y3}8$#*|>W@5?&BfU0S(%IW<14dFVN$7MgTIZk3wZPU; zQdVY~g-4Ttu^aA$G?UxWjxONLH7i5UJx(^8fK3G>zBSztsF*4Xm2LUs=0mx)gM)Az zRczXo4{iU1rl!&#OaAM_s;Q*~Y-YxNZFgIE1s?^Rwt#7q28gJop0P z%p2NNf&=tQu{op!KY}o|&g2m)z*Dz5sEO_AQy-2Ii~|!dXS;^Z>0K2~O=cGQ)yWzU z*kO7i=O6i!^SHYmO%40A1tY$BSLw-_dx?>c$3a2P|FW!L(jWO$20BqD(Img|iYzPe zl2L3h?tsbVwfFOE;P8$YlaSg~eI7VOpH3QbyQF8W;Aj3y1Dm{N zRKM`hJ41>~s0giJGX-T8!Wa78cnUSthCD*fvWVAA$>9EGx~E5euz%otrIwt=GYzq- z#cdR-d5?AV^bNY7QK~%2hq1yBhJ+Up@Z&yp6@FG800K}(Lf}#P7#M3d%ml^kT}1^f zijDZ`Sgzqc`+0$QWM89Zq%PG2Fa4KlQ}LBmbtK|$M~4O5#VqswVZ4X=l+~-Ot7u(6 zH#%?_Iz?JV>LjfLtdS_Y~zcY!KmLewg(lRqU zRFWgnKUFH!xCa=HeG;IzX)4f3=usX_FT3ZtRl0Is>@{kE7)l_6t@CLTruQodG7!u;0KV6Cc4-1ng zVOj2e|9$Lax(5vMrva|Mt1IYsmxLjLw;+Pcc^aTBaV`ULnXHdrGtop(n_>tG$#(TP zqF-=7B;$TCrbjRhd1nOM5NYks576<(Q517ikw8bzrv12b!AdgKUeyK!M-KmOc^WhA znk}0d_wlkwy;MiDGyW#T&z>ZjE`$l{s$9ruf=iB_`&*C!9qXkSv)xTpR~uf^WK4wt z&PAa6?(&xzkDIPy$Q;3iIbzM;)63n{dy&#Z+oz^!YjZ{rQP@=C{~lu z&@D`s6CyWS`0xqI(gSBc@K;1QYc+~Y@K>+P(BEST*Ci@=fd=sq7p_LJ*)Ak==wk-Rk&N*I*yzc!P>qmhU6T znl(*M0^fA<=g+TGdY8EZJS)0QdB)FO)eS+3vK9{yAAq`&k|MBYU@-ju1*&!5I21cW zP(g}^*Z1=jB8wd0pF#PVxnQTF{@J9*xf>X<{q@P{h3iKoM`}K5TZNU7%Y*%?Gl9R! zeOO-1h-9w!f#env+o%^U4Hp>7=p5tvi-VzefxJsraE8_Kl85^nkzD)L5%}L{G#}Jy zjo&QUw<5D2^%a2t=4`;BOG`@wR$dpj=!;<0sktF|!?fWE301FWo`_-`*T}5E{;6GH zATy)HVd%zHU*I) zRJ`_&JPj;~ zHYI-G{Cvc}gk#%x%g1g9TKRY{K zZwjFtgy0V#@TOu+7-!Nz|L*Frpza z7=fSvhWSeG2LTt{O&SJi4AhOEU64Z0hxnFpAIP4?=A#}gzH`vkJT4CC22NWvAx$q! zmY0_DYe=DnL_M(zW(}Qpyr2tI-siX4t&Wu`Y8=n38-U*mq32e7YRie)V*}XqR-(~w zQh={O3)IfbqVHm3)s&R*Du8B|Dwo7MxeEhyjp}7naF&2Kc;orXC~|Ug(RYc76W|xM zIOLi1GXf|%v$^y-N67hbOaE{yzP$V>?`4w-nek!aoG_r_75r4MV9~8a_uuds_^#%S zLrF=w_@>Hv_pbMM?JD&~1<~036o|CVhyz>awj3*=Bj%E5OSN0SR%XjW^lRmrnVI2j zdOEs+L%o*9iRG(U1i8c*RN&9NdGlsvg3n{--aN|{)L{c%3PiG@dpE%dp=8iQ1TTxc zjOEaO3i3ZCB@VFOB_-b#6l}w7LrC!yBTSM82>m#L4KEwtOG!!|Y_v^mcsWc4_-X(7lZJ_Dxn$Bk{9FK9DrjoRIy;x!M$0p3mRjkmsSTf<9@|)3 z``#dpijS|f80T{;*Df}TRb@^TaDpAZ1)MS9`fAT9e~_dBSF63bd8pFK=E;-BhCo92 zo`jh%0g_r!rzx?=npO``Q!=O@$b_ngI(2SmWNIhMkGr2X+SOX=ym3K%l>cgM&jsF#&9P@UN5HkNo>) zNagNZLZ1iN=ztS-NhBHgw-CAUQoU-8Vj&E;yvNpJM?}<5QtB(3HFflQ2+@SRaH?O6+*{II@8f+tKHSTV@x}R6V9(;oE6$VEX zLt{Ve{t2?UU{(V?4c?nK4wxB#@tz`66@GqxCsy^y{l~KTmPsdr8I4hU2wN3m(h;3z z^%#B!3wR%^tE)A~Yy6_`l9DLXn|QRnCOH)Pdb=BazPguON1@_U5<0!cu=QR`ql{1p z3QuzN_<@MBaz9jbtt?OoIyVzloB#pESZ1j6CM zgUE!0)v2jl#Kgv?rlYXAL_|c4*t5_Q1nSSKC@YUcYm7q{a(?>=cY|f|T@~KQ2mxwy z5&UYw4AQfqyqB=WJ zre=IR^#`c#GV4oInDtORhvfw1)g{*(q$g47B#v$b7LB2=)T#z-FJAMOk@;)GB_agU z;QbK?l~FoWR8)iKEY#G=P-F#IBDFWORyh=VvIq#c*8AS@4uv>=+fe}40Wi%(n_D88 zfU^PkF9f_Si`VqmBXv$Y>xDi8fg>(1&KaIk`1~Xs=R<7ly#(~1$}{B0RvgUtDy;|2 zF6je03D7CfWOK4j0dy>8MLZ{nU5{5wOb5PqcXg$WIYPt?zFL;Xz0lP_xAXZ7 zA3!-yq$Tz7-mmHxOG`^BYAJNaSwvLzLZ$RG8Py)=i6@qa1&px+ z&m-v%XF`Ml3=R(s&2>8l@y(DBIk#+GFell?Qx$s3QoAWxm?hHo0!G(E5*yA-r&tlE z9~^E!NPzYY0(kl4g!GuN2JB$5aqm2g8K5extgPTZkPA4n9}^LVG-*^hbNkgJ_%5{K zIXT=O)`=NjsCjiUo}5suVs5?~5rGHICZIUQ43L4bF#&Gwe(1Si{v$$42v3}Tjz)QK z7cd_gY3b^dt!KrU@`ox8tkEuix~Kq`0S8x0Ma2PJByc%k{|^_6c`*U>s%6EKY3nkH z5DM-G4-C#7W}Cw_Ssh^eg8d^4JTjlA8N0_#3vKUg z=@eoDWQakPDx1K;!2!^DR{jC)#duOsP)y(6Y!}WRRUauYFK;o5{qW&7F0L4fg-prP zbrP;L@G!uh*4Ea-?ZD1|XSdY1&r;2e^=hAttLQ`m`u+d;wvc7>EI(eWSkKVJ9j~o@ zgQI6^dJMI)9vm;U^5gy5lgIVOe(fa}Gr^SPJ%f4Zrm)E^vMC>4P{ z7;$~Gi>GF1%O}!_z~lFrjQu+!l`!oM^n=R zcrcKeIff!G{hLWR(`#$hum$F+n!$$f>J`m6>-pnMD;)w>O_&tq`1tx3$Wi@o?ORHZ zle{{{74iAiaJQ_Mq{;DdttYKe6qbL5Svb3q-Fmj!vgULTY!ys*SRp;v^tN>BG5<{D zqg6dX=4;noEA_s+B%NXtPibx=k?O?XY(+S&k;%ScLYY;8T2mKLyE!sF+C zwm0Fs^jJ#&)vJ}^g4A*?K0ZFUMddZ97c{o3h~p509X%mI3-TP0ZAoFf`<0fRy=#0N zHoK=sXl>u9!X)|NJhyJWKG>MLhD*owoDI-Q2phorA?LMzMQwKp)xy9_y{!DxCCS|a z;R~UR2#`36FBp)-!-b?k@w*fu^aOzrSHc~59Ix{1#flHRkY*6l(%$w5xH5CJVP-Rf zG@-1_N$f@?s7P6im0HiWKvAX^l&C%0>Kld?1K#Zlh6 z&#?lLRQ23n62%oJMwaruMz&0bKqM>4U96C|+J?7q!4br4DvO-@9OhNjr-Z<47vB)6 zlBD_Y{_XX)%{N=`3xhDIh!2So90`B4!l3?Zz5HHO#k4D=3^GXwXfDq zS^bl78FmvAjO|V2F;P!3FHYJ$Ybw2Tzm`bO?2-s)|H#wSoQfO&oh4P29|oyMgX@pR z2#^Ixo>B5F3t0^O&j1+wk9_j~pOvEj;qCYQu8O|{joI2v;>b(}*4X?Si@S z$?AIl)f6TIE2Acu8NSoeAMV`?uaseJVPs%pj_m5V93&gw$=&zd-0)kiN&}6IPn1Ty z!~CHdu$+9=8Ek$?JW+pgB>^pM3*M^&HrWj=yLC3eXfhgp&i$mHbt*0T1`ndns#J~o zln87x?DVoaPPyJ}bVKw8f_Jp4kG|dQ1{|r3R%@P`;z&DA6x0OwC3LNxUg0h zfAYcA=W(tLP*d9m6>J%?N9ZPRA*4OK+RAPhqS3QT&(8}6=NSbq+(-ukM8VlwYEJL%QA3` z+bWGgWiynLt>q2-wcE-dv)jn=RKRRx=%qRnTm^Z>cuMa62bovGE>ThH;2P+E73ys@ zv08X>`TJ?#-N*>3?3$;OlsJ@03h^2=N1J9lRqx`pI7dvdAw&jh6p9N|!&DG{ z{=*%yBk>+b#8ZV_Ucxs+e3cf30t^v1sr>LQ2ifRXbQe?*%mwAA zaZ>}6!mk#Pm(v0ZvLXLZbH!lZRc{HEX%T_AmI>QJo@1KMdf0;wL_bAKF4!$*EDI&YDt(n^k;vR=X+kyl-lCP+9Y-wnZZie8HATi z_1#{ANdl!BXN8$jtnvH9j`Yv25Nd=omPk^%e789$pbx(OXR)VIyfw?KUXCd`e>L4E zzi)5R;wgr|EE}&CPpo}B0ZRq@=t4<1mH+2LFVD-}%7dqN(|Z?m5CxJn*L&YGdA``M zI6h%N^b-32Z$E*#Iki|(>HYn=XmhSbBj(nR znTnDrj|9HrgPP1LiT6O{*xMoDS|2?()2NBV=_&I2C^ov68bbC;1FgpS)~zFhlRo17 z5WOH0{?}s>i|QkM#e3#-oiV2eXX6=s(T^v8Y%H%wsi}<~>69^yKXfeZ>{GKTva{7U z)9q(*)s!v_$jBHB)xB(IXY(v`Sci>lbFp-U&XNXAJwvR51XuKS{?nxDdQz)2g{gE~ zi*c#QRGjm3U`mTzueaJz5`ATGmGkC%9F89@F}Bb4wX1Na z^{j33uTjl>ldiFv_s%T@Hu6^UB|rOMt@8bhO$O0-ptM49-p#`f1!EDMo!j&`=|i^G zUKx(4t28|IBgDTIMMTInzWiq_PxQD&7A?DWh?E7&p zU)!?-a~mcuKZ_3pYazxJf+M9!R;udgdU3DXP^7bd7AV8NkJ;DnU~yVjk=#Cc z7O*u$4F$GE!M-FRC+nmaJUqW}V=hb0Ix>xZ4@Y6rC#N}%_C~8U960=g z>bnZ-<`KgO9MJ>D0FKqbqSgKXkFKwPs%rb*J&GubU;#=CiYVP6Ehr$}ozmSPk}8VQ zDBTE1cQ+Cu4blzLE#2_u=HA~w#(VD!$GBWL`<%VknrqIv=J(BSq1C%K9nUX6jVoj$ zSQ?ldvI;Pq@I$iGS!e^=zJJSst>S}Dr29XxIN z@zraOOAX(jl()7_H$_sTe8AAC2#fDek2OK0s+J4ekLDKbFP)Q`B(WLntEo~Rmz$Jk zznre zRa|yH-DFDr+TAHf3`FeY!WEHyzX5#Dzy=MA!U7Os{$le*QB%2ScwSh{6%*1p!QDEk zeT!+DnS9*)r+_a<`*y2BsgAP1?CT6FT;E+Z~ ze-%gguoY6Wc?}b9AsZln>)kSqKYgUChJ;_ytC-_xD3YviT@OKZUdffo{g~7(; z2Y-WA1c^2hkzDoNq(vI$;g!mTWX=R_x&DH{%|sb#PYZMP08JY3Qu^>lY~%;z_1|<$ z*zlZ_Z^3Gw?{8QBZKp+YDgLR3xjEO(rl7yRG)UM!&~B%n4U7(Fa9k=)cch>QzWO1{ zd?hynf1TWOWz@Z}Tmu#V3kr*7ikW%Ec}Q;x-mJ9E(S6}o{wzUvBq`<3TljmBuo$u7 zbl@*^8K%zT%d-u!r$#2mSR`w5v)PrSL_s2Y+D4ul?XT~WJr^Ui9KI+ms(-t?bb`{H zq$1CXkn_}i^q9)X6vA^KweCD#_{@tpc+?DToDn$sAm9lBFi=fNM=l|tRSnI zu>}SC_^X%N58QXxxU$nS&d~N>3J8eQk?7n|`BTetYg9EY(E=y4pkLLTxR1_MttjBs zEUw=~Bdd?o>H?L0r+4WU`DmI8LAQ242F}dw2_HVsxUL^VxL>JtdaI*qZ?sb)%ah*l z5;OszIIo(*K8Ynsq3P6?>i~NdrU731H#y1F{T`ok|+6xch|(5fCasY!DS5ARWks3mA50R>%1A_3*Vs)3lZpqGfpO^_R35q| zyOaJ*PebvWHHU|r8!!=>GhTMHLFqHe$U8-AP#T4%r9?O&pL^5mtYBxnXPv$46Q@zBv_0}jM)F}g5bRRJhgaYjSKbLfsu@2e^H z0l8<_ytt(`F$|r1kJ#806Qo}|Ic*#qKYD|y*$E^yU0q!TDuw6IJ->fwodw?7Z2H#aW|gQ6~U_)~)Tt8f!lMPK$=NLUy`?74fx$=Nw7GV-=SuZcaB zoSiAfwEwUMQ z5CQdQbJHeInFtRLl&6zaGN>6C5QO#i=Z8<9KIL}wgJu7ZE&vNlq5IisF9aDd^dk7EtdRWWw)fPxDA5xKCKgZ-B1{ z|DlDN5LEBVVekP=yDfkR)G8>P0XAmpud1Q~Sl4ZV>is`HV56qqik>%NL`g|Ir>uZT zSExZjNhuY9>ZZxPKMA&0VyZKPHAyVudoC_GdX$o1Lj?*wcz6ev@LO9(Tnhy zU@%0JZ2)lh368%0uJz&!(n004^yg z8h`x~p$jABv`e)nMb7s@X%b$}gVIti$S9`J(9(Vo&;dpvSZztk9^7%SNzvQ_Flbrn zU0hrMCjC~m^!^5Kmwb_?9WWaZsis+FERdA5BtfB_UOVGTE0< z-dVWki*&bW`+(TO@v+OQJQwV^EXIIp&5~1e2Oy8_V0xD|c4lVhqKwK)ZcwYBTHiDQ zD|W2)xB%ceHYO&BwYlo+&+bjQPax7+JX6bQ`^z_+8tA4i>3UPX-X;Bd^PAIe7@)P` zB9N<;AP@Sb$7KF2_cA~eW!BR_;V&#=v9mKXRvgiQ%D!|KfXaG^Xfia(gL`}b{{4J= zR2badMiVJ}lre%dYqHt$srXPtTznL8a#`6getuYF zGf|e+Y4)~llarI+)L#e*K^fabRkg$d95Hz1$=TUt<0rJVxSyXx!~sNGER2rAbF{|2 z27Y)T?4OxW2PwF{0Rkdn7*)_A_Yn6h%X!;PkaN)Xaq2KNQm>1bEhclV#J2HK7oM z)u^m>c6NE!nwc3%E$ps)Ye|3TTV{hiD!yLcS2RHu;{b9!j~7Wl6^9y!iei7x+93Sc zqxBjuFR#{F8&c9Zz~Ju)fFT3uUs#{t*4D<-b3@An;4Kgj0Nf;U09@HHObR@@$iqXp z6lkFkMbcMN%0YK&7U3Ik+sueKIUUr#MFU$L_-iSlusvE4bv(bc91ZUByKEXu4i**` zz>};w6?TiS^mjUa@2!r2$elH~C13??DSRPNgaESxQ1HP`47m4xz<m-xbrB z1-&@7n5{v&ly2oNAyDasz&z)*UOis2wO9AfC8v1&&in7KWv^omVzsfnG^2y}x-*~T zw{2Tg9UkMqxzEhgULa8s!goBHC$<;Km193V9gtCTV!U%r;8V5q!ptAelM|&Gr6?w&rY1&XJP1a7%x-neE);X zHeb&$TgbWCSgGX9MEJ&sEA9Y96*kX_w z6FRfY$4MK?m2@sFbm>e@20)P$ubH;_>w?eD!6C5hD)S_2CW?bZg>G0%aAB~7`$ktT zG<{AyoMr}xUWhZen)h@tZzrsXI+RwW_>ZRO?niUyI>9~nvi&%%4$FfBFTP@nQvRd!d0L$r)@(x@Q?0;e$=O!eKk9MNz1_{# zqoIKb;?XVP!vc9w!LXmG;dAefFBuONxqfuR&2+6Uc{sy_WBazV@VweimTs6xc#fc z+PIvv>Hvwt^#Lg{iRMs!>^G*R#mTy1Yw9HH&)PJuP~H{z6y=qodD5@*65i0>yt_g8 zcPSwfxoa6>;oq>~=+btuboKf-x%%-d$Kc&ooxxxFtm)l#K~{AI^ZCA2?A=42N|XL1 zMwR?Fjf5r=?p85c*(!F+1c8Lq1OJ>dUgCNN&%j1oLlfcXr%~5}ue}gDWNyED@tLb3 ziSd`p{S{SKJ_JldUMx`Qw~Gxa@=J?2$XZq^q;<5=oVVg2$r=$cH}jJaKdW|?bAAkx zUhO^v*j3*Tw_$SMtXuRJ?#&ljjA%Z*eFqZr(p^qR7FOnfawm-un{}{&haaBl^*LFN*ZukPEqQCaXLO@yHly%Jwfgbo z7{0+Ao|@aK&X1Ke@QG}zpfRYSZEm`E7@(LDk6+;D>sxYsT<@smYND^t!+Ae9B|s}C z4ib3HZ*tL z>perQehz_QL$0qwZZah$Hby?t^m~&yHd5?z)c8lZbMxR`SdBujRqAPspze{`ULv#m z{7r%1Y>Ii1pydAW`axPIHimco5PCt0f27*H^S#bDn!U~()7r8e+AY zai}h$)IJmJRiM|QP&;o~Ya+8O`P8-{1{cb)Trpp1hY(P7fveJLPA{i8YX%n=YmhRx z{V(?ES>jZ~dkJd#QGNP0UzAVr>YbT`B4(0sZ)me);^Zht5$ z`JF-Asq5C87y1-PZS4HjP6S%AfwF1bm3*)F7dGhG#w!SS)&@(eR>XOdKKA?!5RrIE z?wQ0VX3sPg$BTD*toq^Gdmp>8$PiZb7Z^h&TaHR%GOrg-OAhTe3fVSS7x42P?~=`Q zcA=5h?9q`m{P;Al-9X6PkW(Jmx5JN7hKHX}Haa9fIlWrF*-D|WpG>b=kEc zf^}r~m*aLm{iDO(*Jl^jWMAIBakOJvlW`EF)dbP%q`c6Y@$Rn0da>pF`ta`3JB5Q@ zR&I1My}@7I2W3y)V|aEVp`3gEiU$tED|BqHn*szT)9v94Bd|RLAfUIH+s(>yC9s-2 zZ+~T{CTCoXfr;&^i($BILT-`c-$ky;+O^eT=FVsi)xbD*ULzAMCF73F;MP5}vz@Ss zz2|(*uO0iNrRF+(U0=J;lz!$rEB3khMKwv3R+gC4Htl1y!Y)6?;_Qf$t&@P_;#|xT zc}JW|k=de;67h{2C-zbz@&c-HZfJPbe5>_~Z%OGj9N1qLFL_~2~lI?w$bxDo8E{ACAyfccx9Xqefw@~_0v z(Rcok47@oorAm{&CGhZ&)}n|NHMYrc((OmdZk*CZ(UN4;I8A+yw^W2<>`(`{Wd626 zYOaRy`;FJ|KDq!Gxw`V%8)_<=$&J^SFO!>#ZD&Qf9%6Uhy~e8L{rryuG3WRhm-o%h z{!fk#x9huHE3T433UaqI2K%+6L6*`jf&Ghb-}h|IT1tqwZ*JL4JT|oFk#CtbRifEi z?j6>kvS#=L)Ah<)Cc$AJSL=SRqg{U`8yh2qXKA@J?|MT+A*9g#e_21d?#J7f%)g)G zbXe?|K9Q42e>x~;!ZQR!ztr3%)8+dG{E`@qU;h%O3xe8X(|XMD&TqEiCw5mme}8`B zR$vJcxohR=J$!6OM;!u_Ki5%(sK;)3?^3cp-P~lUs4OJA?2eBgl`5aUxyfXXnP?!e zx7tthEcw8e;!lq6wxQ?Ex7DXycODTBZe1aJsJBih_+UE0G9Yt@N&q8eTy7Z7ppzw)mI8&m zw4XaCQ9fI=osRPC$mbF&Q~ya`Aa08h%*~glYJPaHhJk2s>{Asqv(O;Z@kj`Qu}4Q& zA~6bsEGZ?bJ0hH$BC-0A!`a$* zStG?h<@Op!`rE67R3Yj8+Bv-TSyDlfUq%y4)}wxA{0O zP&@M1xbEj`IZ^uETxEY~ley_^v~tZ^Md-~7r-Q^JMrvLy7xLr4Iim{fnBg~$>cvKG zuUu9dp7dyKr7v-mm);bxQ2#7HU{92vq7;RhBK7cRQ)n=b*Xl%pc~2)i&)naR@9#pi z=+ZXpAnDSqaWU?ZGWEHJNy1mUckr$(=gvxBO7_7M5GK$i9p78zipLJvP3N;TxGlgz z#FSK}^4<;u>s{;AsI!AsBTJjATNn3W#Ne(`Ukr3~v2V?`V6v|#A<9sIb~qxo<&&Hn zR>4R%qpE&7@p4Dwil~&7r8xg&UOm|`9xPO^P9dSOa^6%!uicJN%z5z=TRQ@dUM=T3 zc%t<&Ka+_B+o)Y)&9ihW`-M^S-QyRe9pNi_b)*moun%g~i~0*BMy5{QI5-rI9W@mn z`0(WjQnGr6DakWj*VQprnEgOpVK=eebc$BtXlE598MoiDy*H0ffImR+&vQziIt})= zxzq;g*uO3eYe>S;@M)#=+;(7hD8}ip5j1*?ZGfE}n%($M0@&;0En{0YD2cSl+1*R& zsJFH2&N|AwUT?Q+lSrI&EsO+L{BV|xEGg^#R7U_;|CXSE?5pGWSmKU}Pu3QVKfRKd z4`)9;(VeK?U>ItvtY#KpHrv*oxFGnkU2F3N&yh~A-cqMKp9t+E&y}cwpPj8qWWQl3 zxgB}Qn_GM8`UxN>3i!_!b`Rk%A^ll1ch&ZtBChYSJ@Difp~bHHBGWmpu0EF1aX48s z;o5_0j*L+o$nn1sEtf!qqal58(PK_DD^t%#?i|Q)c=?2elPHQGcCQQ9acTzjZ7dg~-$G|c9n-8YmZRm* z0mlvJB?}(6NY$h_i=A0bQpWSY&D|++t4p4I&lP`(5yAY+!p8Cm&~8wE$$v&I(c^Z` z;m$z{atia!DLL@<9v%D}KK9i_tK5}epOPh|sy|&XalS%t$UtjkK-K$B=Ii?~W&_LW zFs*O*J+H6poz8Meg0NRDVd*_*nnGV+(QRg0twT&l}~G8`K|WN>hp9UPB@W zJ46mnAlESU*lvtqd)`bIt(vo{3y%ACCi(k-Ok3LhMjUSEpp|3$)TLxm35?}b2Royna;z4D_ zp%+y1zUZ^|(2s{@@0@}anQV2%>2LG|jb*u3iZ>o|4_`=l8PcMlL^6Bk#Jr`dUTyIH znk%nk-=({44th14Et_8W0mDPZee=sb9T&}XboI<%Y0JvXn2|Gmk9omv)xOg3Hsha3 z3G#lSt6E@3%8b$`TiN|(0tPbSNfG1U+*7<@{S-U>WoWS7f5v?OMhks1o^OBQ>&J zbk>%oEekAvmUF1ahkrwpwTbf|W6@b(86%N(MD*&Gz7=L}E}uPbi|B653c+8c>C(;} z0cT&x0w!qUk9RmSVd=Uk^W!74@xULQi?F9=pmc5~)vlVp9 zUu*OW$zpqbRSEwLEYgM4Yh_DqT2dE(7K0lGqefue-xu68AHl!oA>0(*O^b&(JfigN z)H0#+sYdfAoSVVajkioO$UeIA^*C-O5T`7Pcycp;jt$Ey^@{3NBW{bP@hrUaBdU9T z*`3Yob4Ca?lKt8@r1pXigkm4!^E5sh2gIYn32cuLiH{)=kcNH?<0j-!T{_{r(0@vc z*;)7TGWz==5p-yAwixKZr~M z@`@ii7mGsKT}u20X9J;>pJ&U4$WtK*D6z*m|9HV8|NR7x8#CN6>?VV5U8%bp>lcsA z0P1`OaH5^8cK3b}BR;^tL7l=GG_qjyKYe)nOi~4rTZ>0SCSy%D1=$YI)McDHI()_zXFx2lIy+^>QnPuGJ%=nB3gDt786e_RAo@wn9K4#C1MbDIB4niAR~VVEdUR)}P|5QFRWoySj{orX0*pbe!#ODY!SKMCay=$; zmg{}}6cj^feh>6?{v3q!5;W@e7GA>O!x}R*r3R)o{}pXWO8Mm=O)VBW4poYj;=;%k za}2Y1R`m#IT+&$u?mQ|Lr*LoyG6Fl$z7KECWiF!dOuCzdKsJ9b|GB-DJt6upA3&1< zwBF*MKqX)`rfQ^_$Q1X22c6D6)&QU8VfcXfk#kbYHPFluTtdVWYNI0fDn^cn#{Na_ z?;^J2L3}$*CXS#n~Cn<4cQ2q|3Bf&#B&zF{`Whx?<{Kl&)hd zN!@Zj7jx7`=b_sJ*wEnR6IiCTCdfFUq<0^39jqj7A#aTpREv#CDZj`!58uwn+U3Z= z1j*O=dj}EuIu9oLsD7n8jKPcc8&!wlndRc=i{)K-r~6^II2fwOD%3+z@r%9_L{{8$ zm!O8t`G5@wpG?>Hs_j)fMFLS;*ADE3(d);E^#P!vAmq@R_0iBFTvdz&{W?>1jtk zi}upFgNQfnU23T?3?G#remdE1x76DVCroc~Lg&V#uify*cEJSo*gz#DzsV&yzampw zSrdoSCox7q*ouRK?~20s(`Q`5J`Nx!1l{nan(J`VPgndiXyo<`1eqImclTu3ml#f< z5C9$0<^GoS_XPJGsXE|KX0bPl~B(D_BoV$=m4QLHhbhT941Gb@960KUOF z-d!w!+u1@FbE1&n;arp@oD21sn-Y~fo*gb+T_J$jmEt+C-vbwWl)H4lHU*jP?4l?t z=C=;scfvGO~p+>mpAm6 zwzY{1{DPQh4ic4q1OR#gPml5a&3t$Q=oF_&_EcogAAQBbXKLu{vjR0>gT zpSD6y^aw?wO#Dj0zQ zZFgsfnAt!)k^3@gp_C2JU}AUm#ebQW#L~jpbhp&mIIAre)HgX_xo*smTmUz4+}fVX zqAQq?;@tOs7#!Zr=6N?Cusb0@SsCP+b5@x?KeV5$J8P`z{Q5O8hJaqx z+S!={lLDP-|HvM|mq4G>?A8I;nA>{Q9todYrpl}9@RgH(NaoX(bXa;sL%KnM_>i0r zI`>FQh68*+`VQJ=+ge&cfP#`tZ?g6+^vUCMSWPZ(6WzR-3q}a{1nWPpX_^>*3w=${ zX9xrAU}Yup@+HU@gMbkT9QhO!6y)Trdt5-nqgBb z7P)M@IWjZLU{S7s3SCmt^ZPe%3JCcVIqj~f0Lf{!8*~kZM@CF*Mss!EgT%+&4(J$t z#3qJbc|C1yevAz`Hs#IE60j@um?8kzPDmglgQmAf&^8F`i$T4+w-xy;N_Y}!< z?!{5@COj2G11|4?3bkAGoVjB-z=R=@+KL=lZnUtL`_Q7pyNL;ZpNF4CIOk=?G0)uJg7^B@#cs%h1x2 z`gO@$cK9iH{ro`T4YGhg$dvD%=UW~x+8XDYpEiRjekXo@e&9A;wT^aXtQm6AQ0X7s@55uO zsy;hh(IEZhoe#9m&_kWNGjzK+#IwQ<&x(PmkQE2H`xQizmtXGA2G%#(Z*n$rNK;a3 zqjymldCsfXh-m);8!~*6k!gdyKL@{;ehY`d=%K1!8T}F0&B@>8|L5#2dH)g=kpyPTzGyGnR`IPBxm;TAkJgUx9MD4_= zmnG!WbRYnaCR*H1%~c7>23(&ep0GVyxb?e-1;)oC`QP_$1)L7M&E9}~64lu+7lMaq zjiS2rY6rxA(FcZvB3UraKib2D_O@$K;gm_M40gC#d}m*r<=!qCvKIL7cmxm*C`PO_M?rrt@msr9Ufp5D6t)z)w21j81lD}8Wc}EZ$BjAIp6-Zkf%t-!@~_? zCR@Wb4(dZ?OM@nmeO5IbzH+2y$MzBgUJ<-JERd+-fo+I6pA>yAtYh-qazFb-=f?j` zRpJw)#FT(~$Z$Q(XF?FU4sZuNWS|zT*c@%x9KXQ|iibl8qls4h{&V4fEPTRkJnSFv z^sr8y@SlsJ{P2%ruXfS9{EKDzz))3`Qwqj8xfd_)eO@X_4GIZ;VQ7Hl3;&Lib4ZJr z*Xj0dQNwcK`&P{GcHguW!rFtkRpvjI0b{ft7__g5zDxRK-;?3}G1eMSW zE)3_iFQ;_-gAqSe#&pm~o@V zrJVmVoZMQyztU)HB*;OezXWFh!EN}1i*l#nLlW>o=+@It18IVO7Xc9L?0I+rrHytM z)9^-`u)|9>eVsXcR>eL-@M|fu)Xesu(pTIxr68Ue74bT}y|cL0ck8R~s-6izSa zliU0yg?T$~0{uUDqde^0hV7;shW>RoOX%=`^gy76a9cBs2;Qjfy}Q&!i&k~Ha-O~5 zMZ4e?RE*WMgQ}U!zwP(PmL*p;yzB%q!lwH2)1!=nD( zUag6Wib_XEhiJ0wNZs@XBHtnVq){GOl;xO6cE&IEK1i$91ZYig425%EGO$>YdgJ-4 z))cXmwd9xnpk`J01v0s3Z3WH=B{#Yye`vONs=b&9pfCa9bL7q1m^d{at3m-J=Gxlv zPP91JK*i$)J8bVXK+lVi?)aPZ6Qe6S)U0w&N2#Kr&yj)%OHp_xQ3h$rcRXBV%Z04A z+?epz)q(GRbM|~vQr2Rs$=Ik#1zrmXH2QlzBwg5bvfNF(MAg#BrXHCnRvtR`ip-o6@;@+hg~d0lXrAt`q_@$FZmDFF)F@zyz-mnO#J%RYUoD4gEx;4?UugtU^F zN~`GHTfE2*`a~~@kFb7nZ}Ade^kE1IIY^N*TpN^$4U9MMEy=Sd+UW=vyG2COxtyhg ze`Pm>&sDT{sqWXWx?du$!onFIs8;LgQUS8Y85CBXh>;!N>NC}6?IXD;=$}=>LvYw{Bd}HeG>#yeKPdy*3PH1tuJU=bUz)!e>X*u!8 z^H&_NghmCM>z08}(1WZLiD|LqZIX-e)x*QZ)c5WPudS5%w5dYbs zOV=@c2nx!docy*tP-M>ixnYUcedOg=bVWt_nCz6j%?X9P3gHZjIL@}n7^i*dxdaA% zowurKZG5(m&f4&0qS$`d@-w@;V+RZ@+<;O+my5lTp@zIXh^fP~@K;&&ny`Wh+Pu+I>XaXwXN@+4w96XdG1+W>Bc=3Tnt+aLSdfok(XtRbnV3i_D?5mM$}ioI zdxYIoDt0%@`i{8s5zDXdevOQd%mRX&bT3jBs3b6@9x`q1g4m~?vNfRmto;CqzVXSxVKBNzAtRGt<&4=8H_)F{dhxB(*#(DZ z>jWHJ?2~@itGMpHaZD9)4#g*+;@YK@lS!bWZpFrG=e7Hl>g)(BBri_uz5EdP<|A60 zk^1eX3Ihw|%Wxb!aZXs8U4+@1Y6Iac2RIXPufVp9NRkkf8A*aPq>tYTB`H4Ml#FSC zbefw^a^x`sdkMjTfBT@dA3LFpk>UFB#zilcb^REQQ0u=Q+;E7Sc=yioi-8=>m>610 z@mwNye`*}I-(we0kwTUOnqF%}&D8D8ccvelwr;Ce++d2P%JUCcXROn z?!23DLec^4yErxRGLJ#;t**Y{-Fw`jq5n2}thvhkH?F#qpBvexDTjTDyrwGB+ z_8PvBlHEKynapA0crwkD9;cVYX#4MjirExYfOkW;yi+WIbwIW`?CbDkM7!c z^!4T%hmhlS_e-(LW^88Rb}cvwn3u)SSSfHRa9gfneny7@==x2}v8~;+Uh=?S3XlSV z+ej95u1}Hb^Ck81(0CR4d}ju-R>J5RNEvD!YywjisLO}OKP5PN^^X%%#U>kk{Lt)w z(kw5ZDk@eWC|GcVm}zNTgW#Ug%6!Tl1#TmQhXS8HMUX`Dz6-BZg7$yXS>NM#?D2|^ zubm!>6`Lx(6!$F-vNU)^%sOnaqRgXv$9rf=N9R`jA#saWqWzI(P+T{9jVI4Cqt`-rVlwi{rs<>OxGhEdYq39B(Y$a%GU|n zx=ncnG5V+!e(abUJ3HK+s7W!Ofdj963G`W=m?m1hU$LP)mLAJr%e;97mGj@@tSbMI z(vXxRkQnc$y!>%b!))a4iaxX3H|v3H`9#+2--Au~WLIoEV)`UkXZ{`-2zseXMHx&^ zJ!2=a&M|9WA-GqMGgcXa zOQdeK_}jgih`}q5>LS)LI|=@kp<(kOo2DDQ!5>JQuVc#K;ilnwkLotr1Q36< zTY3mKiO&&OKi%zr6~(Vkqb{)KnFd6v{>R7cP@vz~_hxz`+NFbm1hFohSlp1zN*7)I z2~EXUx8PT`#Y=Ta7azd2!B22&gvO3?O|O7IoqPc~edm+>0>o@~*A(#ZOwP^NH%@zQ;BI0x zMm>(u3w=+bUo{Rp2Syy98(#H3UJQP6QBAFUF<#|OQ zMMnoEt#Xw69Fz4=QQRP@a#KKLsNO4|$9YpSwl~|daTc@f%JtkB7L^(Al4X6|w6qAX zIz8cf{IcV?M|1-X0|QhHU8#mr>D}=vK%K4c$0D7u9~GZigqA@R|JGXwF}fxK*QjPb zUaTew69aFV3!*Nxk*aAlrB=_1ogJIUDu#us)6zoDM*628VbJ7qTS?%cAE-117?NDe zYJ0<*AksDcz3`mncca^{#9Uf=mXN?{)mSHA{wT0tKkV0|`V&d#xr{d){L0W=mMt37_d?+>IX?ZYMXTr|FEsrxCP zTUl3!S`Ch$PiJeS3H6vK=LIkeV9!N!9l0!}@@sSIecIVxyu7w%R{*JOuY`l-Vy%qx z=^#tK?G?gdmG~e3-oJyh8DsC#H$wLOckeOjG~QGzSBU5_8s)Y(yu9r1Z`Z?$_Nuer zqBWGOEt&$8kNk*PT}8c3UU80uE7W-&Lr)VD zRE~C^U|uWq`?y+V{!@x!YdPaiVqolXZt+UW}UH>aw)wn?sHG9_FW2itBWsur7$1vYTp&QPDJ$d4c1vn zVNkg%ewgWKQ3g0AxQ~3Wcd58nGd2n@Khtn17hA@C&dGrUTBbABj|2_sl4Y`P+;b1T zwdkj<#M~kb7%U=wyN4f<=j!~@uCUn8(!^kP-IB+lvi5iW56e_4 z`kdFHEwh-O*x2+~6mp@#^4zX1xYu6L(RtRV?R=pck#IgrrE1YyDQ4nQqidas3ddL_ zF7%siZZ-*#omoLt9vqaxVJT$Oo;lBr&R zs-WO%J)pE=Vlh$c+wWbjdiwC3mQ91JoSIp&Jm`y*HHY|#mSU!PFh z{0oGdm8tq9`Wlzr9;wjjCN+u3B*Ry~MI5haG^Ivtw%FuVL%B}72w>{~S36IKYizgu z)P%O7ffWo{PP=z$G~au;6U`&^QX_o~rIbYba0UBO7uok?cfp8Kb?8Gf|0%(+y1Mlz zFymw6ui2M;XETQfVWEN(FiM&vlgXbzF6kUwYEa)F1SX48`J+QWe`m7P4{OMyjn-H0W4ycA(5U z>UNpDKW<7xduF#h*OHkjc_esgZqB>1@@R|KD4ac&0QNYQXDGP9TX)UC^W%($w{(U) z?76nvqnO>##_WFGT#jJIQr944MO*mx;fODfrBIpe7!w+z`Z)Y{EvvJ8Y}cP5XeCRK zWWQpkw>OeYI!yh>M%gRf#ti`l%ROQLVDu}dR9f6(dMp@yE(oaqkZocZ88#G0`Dbi{A{-gyF_wF;W z4~!1eS&5EK1heZbjQ!AUO!s%*gEVgOUA5rNQnb=NmB49Ne18;y-`Qa_5yk<`i{i5|+y0rg*V3r7}y= zXTS4j6;|TC7s+pZe2N=ulX1zC{-~t?Y6N9JcIWC^KZD5mtpuySjJ6J0Y8-ltl|fV# zclA|R2h$+cvM$-m>BcfW`OL}SvP_0gwibQ4o5nA~P2kC@AEuzu0D zQ!8oDJwQpvzv|_t`-uzF=aDV2Ar|)7#wK4-Ab)pVX>Q(>urW5v{HI^ZJ?@!g6PY`? z1iW=N;qJ!j>N0lnEpvWDlmX5sj>Jk@A{fmzHf0=h*}LMfQGR;ynSEGqS9UTb<3mr# zQj2IK2UzLNw5Ven0&mtGTXqeJl^8K`2mOM87nL`?m7~#)!K3{8h>h&|>9+CGaM5BE zyP7YNF^@Tc7M1y-b}fnIoWIydI;2Re`Ynyrvt*<2*zTDnlH&ZMeKjV%yCCBrA_7$s zU)ZorL0;(UV*cpTy<$^girWvuY+rNx$Hq3aiv5|T$j$wvRrF3q{u&J}xKIN(S7L*< z4YP9 z4-Ad$#zR_n7IQUA)xns*^SX*oPwNR|8^&=q%PXdP`{@7pp>hQ~{QAB7Sl7PTt%%S9 z)=(%Skf7=G;T=+VKWDr9jNSXrz$A-Dq;7XoUhD^vt7_Jg%Q(LlGUP&7uflO|uUJ>i zgQ5uKG-IpX;~?Zj+9+fs$MHc|n2Nm7Xc^{|Rm<%=`BE_^CHfiZrAaMf5Q#IEmtN43 z(z+Dt-CA!V6?fjI@e6P+-nx-;gEw>j7c7vTQKvjDm!Drne7WrD%8wj77UgzUa!(u9 zNY0~zsl(iqAf#%+AJ9#bnaQjc&?Z1M69edDyAE2JjX@;Eb1u0?J7Q{*xk=_L{_X(O;X))%f< zplJN2m_2uL<-6JVLa|vHFV}bc|9{bgvC#}ws~R?)GZQi!u)+}SaC28CgV3J+9x5g< z=`ZuVmk;=a; z>K4Hl$0q_=vc{^f$%7(lYFHkN45s6b!I!Y9(Vf1bnQO=k@P~>ZT{0J+%xnrF?VuQV z9DSrt4mC|<=tF4#4;LVSM)o!?#YjcTuCfjU&)Bh%PBpUP7H-c~G+e*woS|I#U-K-8(>UA4yIzc6I!qNAtQCGkWJW%5T5g``8GIO$}jds50TE++7(P{NhF0h`W2ySdtn$*SxU=NebB_KEbdg zc45T5z`NFr4`%o`PL4bSH%m)ra%v>iYQ~XTz|}kZczA`n0*R$W?)H6oXP%vWNjY9S zDG93T*mpy6lorbzSXJMIBkR>jogB%D#S@U6SQ+AbItP)zw8$yXyZ17Wp$ho>i_i?~ z?YGJLBUpqW&GwuK+bbg{XH0LB)TF39|I4xE91RO!Ru&KNAhRhnm*=?+0^OAG97vUpWY7>yVj zJ?%Y=187Ix{c|>~*T)9x1CYX8*UNv&f8JU&@6gu?1$P(au4X81dsn8LH*>nRrRoYN z#PE>KG~X~SkcwWgo+2-Dv0P|GUq3VcW0N-tx>YQ(E7AFcj=ztuR9Kho)Afk|yTSO* zlm98n*6`(g$7XMDbZ+iS;7xsNMmd!T*F*W;h@PJs<%7Oa+QTDW?R|bNqodx2X+p%D zR6gERu{?K_Rl(zGamq)0eb6Z~P*U7Y1o2D1`K3v+=*(QpET2}bNS3TZ(s!m18#K!K zu%CL;f6Q-oc{MZLv{H!KALgM`y=44MVW^ohJ}PYNdchcZW9x&;L+s9vQp3gx-}Hb z6SBDY9E#+wM`uG7>$#7!Pp~E@B35&^vEQNRX=6E{tF2u2LvJK-_Dv&Toqc5DOQ1{h zIqgxNkeT-Sm?``2M|7ObZOu?~<{G|!(hY)&+6euLPTR9mX9tJ5G46*n>#??v=6jzM z)zml!#A=R>2hWukujmR}b{uq6xi+m#Hw9Z*eE57db_%GLC*d3&o58|Ol8_XeQ0*UW z``PUnh2-m;tfJSn6k=D38n<<1AI8yZM6yzTs}#GNBX#;^TL0SJ`EN%rt4|J(utu1J>R8s=Sc?tLYMgajBM&b#aMjyA8tfpTH?Hb&^#bIzEnvqqaMCsiD)}; z!s^eS$AL|C7<~=jPqNZb;gpWhluxNY%Kbtslnsb^?QA<7aVK0S*z-wmQ8Z?Lj^d=y zv-ceZ@nCvBE_M^5{l)p`5AR{6LB=3?8XTtF(Mhd9#<=`6f@U4$gLTIpEGK@XJrk^X zX4xneb+{h0?iUde#`juE;|HJ7Qepnlm2Glg6_w`Y0g4s@pMIq%d8%hfj8yx55@Eo+{63jx8dr2Zwkr1IHaU4ZgNx_vF?NwDwT1?!WY7~H>8v^)x%X+<$C2M4mo$u?jF5cQkpX3{PvU9v-ugD zkJFb2`(Qy8Ps6eKk%NK^ z&dy?m*8x`|7v4GV*h}Y_29Ry`D`|ATexb|?J;Oqe@q!FaM;nG@>A8xnyW`evI!$^< z8<#$DEpJVo^e*1TH7)h!0bk#IbykXE)l6wAY668PkDY{sT>k9S75gEQ3IST;@8|81 zbv?J{PcdH!wps%lh!O(D=Nwq2Pn60f~%X3{FhFcv5!L*dzrd2B1LL9-& zk&0K9@l#3M7^u^9Et_}E zsLFolamrB9Sho4E_zJ^Hd659=10MQ8^=Nz7@7A>*cO%hBna5|Mb2Ss;u}Zp|Kf4Jw zdCf1f&$~2k4ZOj+ZQ$VM<~U6_9WIdY*GEbIj5Z#yF`KT+G$NKNkDIkt2$3(gjL#H(0`ktR zT5~ODqRSn_beLuoOXRkikyfRoq&<6Ehf5IF#J}qw<&0j!XrH)CNP_@4wk4&+sWH3RM{Nm5jD)EPBl{5ll=veZYKqE!d}Z4*LVW zBLbk>&!;LPHq7OEDs;{=s0sjQ2<7Vw*G9J`=Uk=YWVLGQuOX7EEnK$Uh$99}Muzjj zY95}0rc*!PEcD#{TGW}OvXJ6;)9AahH{o=A=5p&poa%@Oe}ea>t=vRDX9O%H)ncB3 z;t@65*|t)YJ+$KQ75DkL(5(U$?fah$coE; zwsAl=uTA{@rD7@-H<#OjbGPesS&?RABo^K1TphoFGZw?DW>fmv>B;WoT%o#Sz0U_x z&7o{n+c=|mUTFaXdRmEvN=}nO>bYX|P9Gpx;FP#rPM4W+{ANG~5t!k`OVK+#6K9WH zCWeS87B%C?(g$6X%~My8nU}Hy+}0$_)YR9D?Vd)&Gc)zIW(Q-nY2;q*lLu>&JX;=p zT?kZ3EQ!a*L2%Wj&FjoMUMD-HaTn&C5U-7@t>5bh4nuQqE&au0g=+aCc)k&-4~Ru7 zw#o67u}=do7Kk~55%`r*Tk~JzV1IA-X2H(o6l>C;V4Z30O796`=$3Q*6L1*3mX%?k0V$C zy(H0~!Me}6OLp=h*3)M0DHN6t zlS*;Uj&|3KqDkiLx?juPUD4d%TrTtb1_y)K zYQFiJat_Q&h~m+AP}-g>?%mOQ2?%+79GFd={%oya5)2iVl|Ac|`rPvAXW9pH2ZDtv zF@5mVBERsY5?=Id%eP-DZS_)~q)X_|ypDElO>KE|ve~PCfMg6(jjTs+Tg`DET>9eZ zw+~?YR^Rbj!fb7@Q6(eIj@I~b7PHy!Up1$DQw#LSnoF5M`@coCYFP|Vg!oH6-~2ck z($!6ceagmS(f1B#n$k5UCAj%y-Bw-31BQ!tenfNZ^ur{W0hzvPEpYkt^$t3Oh?ug~ zE1-v-t?u|MHbz&dWN@IUX8HH%sMoI$fI?;M{a%vEEs+)=oQf?jQ|0_$N^rZ81EW?9 z+HIA6BQfhxW#}H*Iu4bC7BQd!S{PWlh>Fw|;7_RDhGB=4wz|6OH5OF;aaeOr zs$6+zg^SqpgN4^gHpQ{JEJ_0$npgXpK)>t*10Td5%*^EioJWX=yBW~uHNB#RUPMs$ zIfhT=L$(2T!~c_V_L*5%hyCp_R=KskK^DyfM!;re{yV&hSI~H0pnrD^usNy9r{G95v<|&~E_gle-xlNcG8JE!tGiCfWb0 zN{|k{rlan|-MWZ99z%WUc^r7&6S0NMl2xK%A|Xo5-^1ZTy0eLLZ93sja#dGrHr(4k zj1>8i#h8%S!Rk`mIgTC^iTd~N-@wA`E@&@p^}fM{@CCksH^L4JEIfRKS4B~f*S}RGlX0fzL zIj)b&%?-i}EtXbI?S&IBff`0f*NtC9hzpnEoyLVlA??uWFxzpg3><{DOtcahdBh+= z2c1G{o~~gveFfl;<_>zS?@Lv3E!{3WB&F>fJRkA<@@juhJUCP;IFNB|{e{qnUqkpnD%r;KcUX1O#ZNGmMzDbc_hc}2 z2Eike)%L-!`pT(v{_Vb)86#LH6P59&(!_DSuW`;s3oMQ%o5MP(6f$~sn%p1{Sqz`E zZ-Vw=!N8LzK*MrxPL*ZfzduUPkQ}WAQwBW~AwY5U0GY}W+(MwWkaZb-*jVllz$q2nUf$wW3i88qk`4J0) z@%x?JjXu}~f<6XHV()O|P-F!+rS7=gPC^JP5FngiU# zQ#1$dNUfTm%BH+vN;DfjF-gS26dGd=XnJl=Hu9IE(D|2xZcm8Zmt*i#SvQXs4({3h zD5c4GY6FAAhg!CaBK8cLwycd8C@xi-nG`A;1A1p*tWQp&^d?D*gRM<|4OlG_`E%G~ zKc%g6V5V}Byqf3E=&fQ9LD7`vzKO1Pub$NMfiv5wc==SO!k~$^!dja%8-IrgDtYF4 z223QQNdraT-n;_fbBunWFC=u;6_PJ2+XeW-_^-E_-CTtK%6FMP#+M>}VeqpcE;7Ux z`Lt%-T!I-mZZmOUb&I*HUb*`n`p7cB1Z|mp>?g$QVj4+77){k@MU@aQQlO)9q`AG7BqS^JIR1aX)}A0XY z3zlO3xr*bg)OnY+H|=p(%pW)JPN9F#BYu+o=kU;dBZY(0Q7QS|R>XR6z$(+_fY#d^ z&D+3Dk(&|1v%5cH2MCb1U+CDu^TAh(1I3j^K3?{p9OO3En^#Lsz zUoIm9jL%~rh%%{8O=-9|+bR9yHZNKCf2HAPIB(jj#j&KwU9bAB41W_eI0=-{#|7~0 zag{rEq%zz|K_EqnX$x1Z`JYY`HD0klzdUDAsQSyG~J~7b7%1K5@ec@tR;>J2q#-;TQZGj z@=`L$j@*VFS5^44Pkh>$zW1&TSRNl2D}6;s}-*d!HShF0m!y5+j&Bvsb?fnn<3Z^S2T(g#YP?$FAuuA6SGn|A*V z4*S~%7{VXxySS*?*=-jn<`fnE|Eh9u$ct9@n0N;ikm8xybEPoCdhzgnH`<>NFbOQJ zouVo)*jb*84~_-)Xc@MC+$8)=5LOcLxJ<55|9oKP@^&3*lE&Z#P<~SBH^!ld<-s>< zb4wPJvJf#WC}oRRF)*>HB(GkoaypVTXcYyAF%T$RUbxtMj?pyXQpDvR%%oJgWbdEt zd8Q&fJN)|f&*of`a-sIx=)yrl>&^5Fl4JWbO{QIGW!EWXc3dxktkoR9`-}D3W}~Y7 zkwkk;2n|uz-16LQU`J@4%n-=`)DLG`UY|Doer=`*jc-U{`U&{ogD{Ye>-Sy=t4%1r zct}tmyW4cS%qsfo2A!6Z)eI^L6BZ^9Tl7lu`w!f3Anlwi5@0dDTs%GBH=5`Ew6}P> zdySUCduzWaEmnjMyR)&jInyedC03$`|G16gkN`s!nxaLPb1uaa1pyb|_Gk@D1gV>y z*=m2h$yxUO_dCOWMBJB(sAxNyO&^^jr#=GMr1|Mf8RZfU@2ORG50|h~VR~1JGmqU% zPAqb(WRA>@DZDeTr#t7ejY!b^59BCjVhIvfER`U-k^6iMpCztYU!l1(S!EVy=JT|# z>fMOJaX`S~?v(WYt_Dt=Je7j&^$^a@M%j4N_*}W`BkqE)AK8oE(L?PKAfeg*sqSuY zL5>T#BkW@cugb_EA+fRenLY$Zh>SwPFqfv{SbW{oGxIvOrTFb8Cf-fQ@I4cvf_YYA9U?eFo?ApLsivd?UyejOt$t(wZ zKSI@_r~l1Dh+)e6AUAisRU0=u=mzZgNWUR6iA~VP3CY=I;4WY34xwQs$@uc;%kY%D z3FfEDS7k0PnW^@V!}DsG)fPmW12YyfKAo;MX$x0K5euU6e&ku{uYtl2AWVD{txaSi z5zDRCV|Z-kB3ZhL$tTcliI-Myp)_L*q2wQ{8HjH(q256!l9eocH^Xh&==1BdJ+i3G zq={LBvrx}45F+S<#GZnac;~lgMjS# z&M96uBW-KIX0_K&@`LlO<4w10tJ%Bnx6 z1#tq=j!2wVDVCsYwwyIyH%l+Bed9|L#`u62e|+_oLxy{X4U*uXi-x3Tl;pZL_Q61b z4FwRyZdI6HbUOS}E_a-58vCZ?N+LESO3-+3xU$ zXQ3zul=zyLF6fNTDCNDHi|>>< z`f~qYLmmvQ=_pxyf;J{y0n7d2>3Lw!M;4EYvr0}?M^%bPPB2@STbk>R!OevI9M41| zDpPF7dkl*UY7OuOP@Om_R`A;fFhwFJr4U)vRgIF}f=xfY*^%1g zNmyayM{m*KU32NPhe{3jm?t)-kY^Z$3(^1eIZ*kpj@A|!r@yf8M-=n*`;MgaReVs~ zFy$F!F=jL5>Q)))8HrMGTc(G$%X(k69dtjyTtf&{K53|d%I(Fz=A7CW5da6eq9pkf z+Yb6}O-<2F(a%THwCZdl?2*HhK`bVnCa(AQAfG&_PY`!&kTu@9;DzV5Qr-sv<)~80 zUl$lg65z7Zi%$r7yIRf*6SqY^WfWQD=(GglM!y+$VOW(Vg)mzdp=&quK87b1LlBfD1|=>-4mHq;_SKUjo(h2tjX+h~qi_Tk{thn3^L)^V$RCX zKu~fcPL3_GYJihN#gIE<_Eh$qq?(R$R$iNP1Wvq!bTbV#dvM-oeG>wYMx>B8`l{3PZ zbzL;)LdFe6_QD?n+b^r6>472}Hq~%$fzB_$-thZ8lc$e^SgIOy1#4@@vg^<9GQz@kJeJeh4s_<6r(KfsfgT(IP~V{}Vq{!)8|x zj1^}OwXl5tRK>u}-96g{^Xpi966lXWk`^A`e_FE&ZK$Rd)x?9d$*q769p}--e2m{Dm-mxsup4zB$6`o#j+3fFJfTkAP@fXY} zw^avmAcT1MCSynJS2cGV1mMkxtGlJ;6JKYo|g1Cssb_T5oIPzHBNbt`clYN&W7i&i2Qv*eZr;Tk;`C>RV|*V zfJ^4x%4Q%{eLmQgn=qgZ)e>|ccES)R_n8eOIXh7(R#qE=Vwj-dlop1ueXdmtjN zEzLrOqYMSQ)qSeKu61Q2<}vTW@CH7@3o%p5be63sus3zdjlZ{A1AGvJAO>k{)*jlt{82+Zg=cEXCEvT{DE3WlgfzzCaBB~PVV1bJTXog6%RBq;R#fCDY zuf&l>snv}pHS)+(UFOO8?GIpVVHJPV9N@MVR=65MpAcN@sO0FB1i-t$A%YgveNpyT z2!{xDaELs&t+7pcJ(urBL2>B z=|%}6lBk(?jO&%SCal2IKo>-*+@Or~($3ll*dJ0Du($}yAeZLUmAYd!pb_U+b5Gyx z2@5>A@&=)qF{T036d#(;__7zh24Cii)8?#ofBoz_;SmG{EQ`EZiy$89`db z($sQi@S2VD{oSo06E+HVNEaB#&~mw+w7- z@t=c*Rxn_{lR*Pe8vsgsK(p)Z;{)h=@n5}S12h@a)6<^X%Yam&2n=bTX~Ks%k%Q9~ z9R9rrrVPlUcj|YC`uh2yg7bO){CRBO*8n|zedSUuO~4ushF5HzUV*tEX>8VdfcF>7 z2{4Shznr1kTR%_ZycpKacg_c?p2F!%JOY+KTMSz>>D}t^{vaNOT4)juJV(3EKt&p% zTR{P9sv{|!+?EiMAfz+fGqMcesB$*4kt}&+3MaLiTur7UWzB?2DF*+Ap2ERlVPM$rP9K3m{43pI=jZ3V?pJ?st(q7;ZY}`T1?mW3 zwE$BVxJ^d0($muc={gt&K}SvwolpS=kqA_QVF~f^@p*Za{bY|GJyL1;0J+cx<|8O| zLn%x$@f|y$u?M^!DJgRuD;z17U^E1ncVIb|6JnU9)$9@sW+#A+EYs}}V>l7FooW~k zxv^Xw9pUiVuf4z9-&mf?cks`}Bixi-Yp&5Jw}`Je-diKD+}fcVJ1? zrUZ#FO*7thx9cdo19RdSo;;&0{by|=5_NMe?BxErk7pm-%r4IYbjN#I_;0PGHdd4Reb%>Mrx6qLvV_G4?TRHNQz?-z4_ z?fTNvlCG{UScus|i@S=7ih{y8m=VEyu?S1D{k#4Iun$`ter6De7tL1@jd`qjgWHmF()luP$_c3i;UtURI?uJYJSQ&A+hUa&K%J_XW0k^gfAZ%k z2CiNH*d-O*Y~k*%qC>YO0W19aJz+UR`KHYNyZql52Fp}YGe0< z=UWG8cTBlKtsW%|Uian2g@KU~>PQd<4Rkomp-Ti{YiX9v6pFpn0Hg_k_M>LtgoLDC zw4R{!#J zDC-*-u(Pp|qeMp{+*(@V7XbH$0b_A?cl|aJ+0z4h+!Qx`$cqMYjP$J~=X}7Y-Ohkg)fi*7WtR&{c9bAmO5EKQwlYkL zi7~XYk`@5W-ShRf#tsf=fO`cDZ403%(8MAXub{TI#8wx&IM!%NOTGQ$; zvW%OXn{xpXIUo(cxVYHd{8+CcB>-j70Fwtg`~hoHDw}nNU@&IqYjEA1PQ50X-PQ=` zVI1IBnvOc(nK}TJO@RG~CL5B6t5eu7CBd>tNYHF9(jN`TRbi)@|~P?@WJKF(ngE zJVIP}YPe?n-qz;PwlVYyE+m{5yF2OelIXA+OOw@nQ$1j}KU$2__NWIkLFnOhNX*5{ z>j@~j0bx6!G$+bXtuz8N0j7=>q@;$xAR;hi=+1pTBO?P);PjfaC>N`p?$s_R6;5C= z@Ra+&dR2Tj3?mYZJr>U#;TmoS)&~qna&sbOVzL2hb+SHa3y8R0z2rzK0gNt4o|>-> zrEt0l;oR;gzw3gxF1*u1Tg3U9D|@ivdHLGaqj|zjrb7&Y=>^k#{C$r9WXj6LkFP(Z zsyQ7BCd$z(V7(Af9`j!;FkY&CUk*n~O6uh5idCz>wY3F&4X{2) z(wKmFXP~Diyw@N#H8s{`Kxq|(^9MriI&ZL@Qq#~FX^PY~Tf^!T9OS$DX&P=T?Ugl5 z-7IzYJGvF@N;gaFUz23c#K&8UBR>Z1BEmJ#VIfYkAa6m^K0eDJZoO{2ssuF}23jia zlidm2xmhlcOiQp2$K8E6Fl8vQjodtj!=-?jjrRtyu+Poij?gvi?e3=99q4Yk(xu-S zYw}#0j!k(Jxs~gVekb+>uHS7n9#kC&u%92h>6I6TQ>7k*%ZBjziyEI_TRQH}>wf#7 zVhm%X)TPl!^X97y&6mGj55{fYPr@@c7ETKB;7g}Yi`PL*37 za(=gE7Hpjrr__VFvfSoTwN@QUlrA%2drlAC6z^=#a~mYW#*V*1UL{D`s9f$Exnr#k zs`1Bo>hMv>)<{D%Z>^7VP9fQJWUSSLyJzL+rDceZMwtuN0$M_@fs2g1ob>%Z5w+QA z)vs=O;bc;2dl>v2h^<8(6>Hkw#F5<6vlnqTn)5CJOB~KA19O-;&ZXuus?-KXnL{35i^l1{m&vne}vAlK*n&Zf1l9%BEHUplcszxmXM zANg^%T<^)nrCWNUay2%0?hzM5&@zDSr589lK>h_jURi_e9#_|`!_W$Oq?Zj0DI7?h zY2M{s!dWapMe0Iyz}T^3{~u&Rq$zwrj^CQ}1MI%YBd}L^yAJoHut}%jq$p4fvDUw; zGxL;EhW$%H1D69nl~O{=09F#|bG$><<@jnUOH7|cOho#|d=AT~eE_`0bVDhNr26eS z&O;VXfH8I*GQr&lh1ep!K*k{q+)ZC8MR@;erHd!prmSy3=mHy~{!T44EB;v{UWeiz z!j$A&_2>QHEIt*QbRb%uUf7*cUpq%sYW~B0Xrzmv>9@Js_2Lx!@*g4Y9io9}s-k+b zAk{QCpT%Dw)AJ25ghJUw7Qn39lxi`V24U{69>n-N;dh3*&+a?YxC z#UwiH8ky{}k;do%!OH~wf>*-_M)+S4w5{Np+mlme+dxDQ68JF845gPxc-OYO7T--T010v02H5#Nmizbh+_Q)*MigpCkxrjg_e4vNL zg#g`gkm|+s2~nVMwStB>KVL-RjQ1aw;ApyX*0KQ#vnC^%hBFme3i=<2OcF~7sZIUL zrP}?Hf{m8_2j?{QRG__05GPP~Bw~-hJiQUB#hJ)=fFltbmL{xq@g7RoPkGjt^jY$n z0k;J#5h5yIjhAQsYUn}TAY9O_3@=)HIBcbkp`$fV{u>L5rf35PfL8g@Rs6keI%QWr zR=To3_&&Z%==s5|O~K3d#++OYJ;eX+%IEhEi;n*wvT583lPTOnmcP;m{nx;XQyOz_ z99$2M6jTdTZ5~FR8Xs|jdn^D?!|#qD3W9>dP*kvYWXtYLf;K~5h3gtNcT4OM6Umjs zwPP--G=OR#EE^wh$`fXdAKE|;`Si69Fz;Ia=d0zkuHzry75S(nfCCJ%xF<$Q7|4;< z<7td?_6MR{Mn~RWb@t~f`nLkexFL{$fO!*{bKY+u&`=Tz{6+d0hB44pSc3~?E@-l$ z^yit1gd5v7&=eSVG)oK(ETFJgSrzUx6WO!nQg~_2;9;GIY<)2hK)+Q183D&TieC@j z&=;vuqRjQxar0cEWzGP@5Dn*&$D%M=3)0dv0Hg{W%X_80bccc zNdeyd+sn3UfTw=8H`6RORFRjQcQdIio74691mj01$rC8F{8D~ z@-zo)UU&GRMa<{jv$^PrSyKP278tIYgE96$IRBFellEc)@yVXp4$i490Re!6ttf>} z{RLOSi$wc&Zs=3op1%Tb`+(J{y*Vi~u*PGhy5U8j_Cp@2UfoG6zJ8DVc=8)0J-L5m z?XK>81M1Cy?6l<^;Zal!K_IBm`rMN>9Aextr6q&M6 znp)%iHq76zArxbARV%&)8_I_Yl^LBGeUncB+red@<=^8I=ntjWc6EVbJ2I*H7~4RM z@tZ%#kk<(QxOo8yk9W}`u%Nkw)&-$9G)oZJP|!f*-M1gpvc)dh)gQ3gm|}Y`#nub# zZ?tim9nQVx4~a>tSI8CeFLP@vq}tok`iBr-1zIVA4dBawzJN+Bw<#2#?E9AUS(4}A z>N!+rKsG-w(FmTRf(Fpbg%tj+Fp6Pb|qymg@WE5eba{gU;Z= znI$ChFt=>;1VWSJT+39CqkS@9JJazvJXU^esk78xb3z~@?OR#VKD7r>WB1@Qf9Sk< z=AAA>X~0BVObu^gR^h0NBq}5Cpc_i| zG{s$7D#|ZA1F4Mux?wcP>+t8G@!x^I05<4Z9|Pzh2|c+U2Cyi31_p(aV4500o<+t% zJ+I;BX9zH3`74@kKfasG-z*gQL|2Q!NCnnb`~!EQSrFZV@h;4XoWJqZa3)ApASClb6YEW(08Th>Km(+vfwir;ta znV$=R&B+>CO5vTb@GqB=oiv>|JUp@1`CH$Sg`Qa1ZbUs4{r>Gngo3dN-&KN>rrPGz z660i8cvP#j?ql1Vg@qaxf457ynfjPrj`MkZ9ha7AhuwDz9c|u!NaOS zPrZp|GX^x2mJGO4uwr@>NSxE1r2OY?F|K62sDJlb0xil`Ur^5hpXa+c^V`5|4i_E84uAfV&4+c z82kH2q5{r-?BAaJ%wTG)dR5z9mtK9jsKJCC5O9v5grt@AGVS|JeUF)=Vpx#uJ6!XG zC*<=SmTJ>8O=cA;(dtG=ki~5LR%gB6+s_BEHtcNK{+1tgSYPg zg&C;c+^wY9pnu}O(7kGKjNy0lN9-`^W=4af03e8naX(*>ms56w#cZ8By#G#2LZU@) zHLc7|t)|sTV;y$c5b6joBRHgdn%cqcf)Wv*W;%bCZz9TibXSks3k%8SFP8BfvsHsS zVPS4M`9uah+dyaNLaV2HPMJ*j3r2l98*?&MTu;*AulNX$ulF$75Gd9Bn& z=bE-&mm>!kKuD?I<@q*FhS&!&Dcb4eQ{9mQ#oq1-URn4W8kD=z6D%#hQ z(fJoo5`vysRPST)#6RRdUtMo#3nVvcnkL+k&+Ag^38c}#i0^!99{b__vfryn?zQ0c z^Cs79<(FX4$(VwvIam3BlQ~twOTA;Vu~7oIl+>FY?N4V6?5qf>KNbe>wI;bi^ikxc z873W2SU6LX|UsvU$zsMn$X#_+3KKAwbN%6k#0^@VX(z z`5LJHDeN})aQ=@h`1KU+fb$_W0-I2+Af-%g%bKYbDutk*5yxsN2=})$ZiWmI;OZ7l z*WOY`*D=BZ2?4J%nUPy}c`PTm88>#c5A!!GhQxAv8-Q^T-!0E0ZSIDAYcUb-9Zv)W zI&GU-QfF@lP6B*Y*EORggF6V{X}^deG0$4xt0tRq!+^8RPj@-NRcuY8t?d1gfp-FS zTTruemO|`CjfJL-xlJ?p((b{G>EJ^br!vWvaT6H|a;vY!Z$Vg+>M=b}a}9b`q}|ls zJojXHcaK92q&l;QHrKT1U2txEb*xJ0z@PNnQtd%n~W&e z$YbUOVHVlv1{>nEqoK76NVKiL-0qCZJ(;|ZbiWP0^*$L;2Y;e+s7wC%j+RkCr0s?;T zPulCd7G|Hbp2bsbvv?zDQMx% zBU!JoXdwviT?-+Z$jn%)Zd5tj!Ft$T6tKHdsrGD;SvgRsn#HkD0m=!z-uQ(H!}0aW zk9=2Xa#3uiSpFWCQ2KxGG*9Y=E6Zm2-P~qRm%BmJ?ow_|>TJ=%#W!|pIf+Iofvj=L z??MIsrICszUF17xpVS<|E}yn7I1Lk#kYw(+Q}@(07iEG-EarZvr-=}*Qc5<5<)Dsd zV`ByUB=~SaBmPJI1jW8SzjWQYt^0-PEo7*&oZe)<**MI$5D@s$YvwreRV()yz9>^5 zebM@@wmj0cI5tnh7#j+TAz9+oOU6=cv6)&`;Yu9PTpWB+O$hw%B>y_0dC>K-@b3D5 zy#PtTYGbI(kP$QX(+2zvB#;3fw*?wYcTiVV?c39}TTBSHPVetAW=MXWXibd!U{ZGE zemb+17~_Tujhosp@Ng||($!veswnclDXw;&GGIb4Lo|L;Won@(lmWm9{KsuC!2L>D zmM!96qpb{sxYxre^PdHvO~!wdG3x(moLIaxm}4r%9=*CqRn^&D2t z8|IjSUwjwZcScyap!WTGlAMGI*EcHoYil(oeOFm1xjiVc`zyH7Nn5GUzJh7ObI!i{ zg~DqshI{p7W62V0l8cYLV?zS`WcXt@N|=1GzCzvc=l<*1o}P0R(y@sj?NZ7@Ua#Ag zOqiPOqD(GnJw1^Bzv8vjT!6ZRp%H?QqM!l+-qFa zPMDyKfBK}KI>6dhg0nR%xiQwiNgBb>Kd{Nlf-qxij<+erInAOeuKVctm!{!ox)6U) z)|5cvc3M&bl)K#?|Ch_^l8Xvzlb4V_3R!epJNB?l`gZe1!BS6V&O|@#3+BCkasD;bX6&<2f?r@aTj< zP=J-U)0xS97YN-Cp4{K0{U7F8Rc1U$4sZup6!TZufG@8oD3<7sdv&kHZxrRUQ)i-U z+|sVoveupaE5e?~%O*omr!wGavxIjb6e*$f|7yfPq+bIE`Aa-^X(Qjm=DCr{D&$7~)uW3kfjj zO6MjV5=-@()V-)}S_;nbhDL$|e%vUW)JRK;Hw2y!mxn%uO#X1%Q)wSPDw2=R?_Ib# zuNBPwo0ULQPA?N}IpU!2ov%*3S-$rQlEw#!U?OJ_oW)h#b|?1%vlMHysJ zs*D`rbl+qm>If|PkM~LQBFmqCM|}AM?RhHliBHR)y~_+w>*NrbVNCM1#gc~}Ep$oX zM-W=G_#|2k)F#J(^v0(N2_*aEGPzZlwpld^6YYE)O_!m0FKp^p8vTUjHOWI9bz)Wg zr4=hu#|S?(#JSOP8ov>Wi0=>~nTuq6Y;lhOiMM=hO`Mn_;z2M}^p)Vm2l!CmoCMR! z#?j#=QY33#rT>WNT`N76t8(*~pD7O|XHPcsDi}suulwLPSJ|0NDjR1p&n;N@>h%s= zNa0T}`-Te4Ma)l}D=bhG_1W>vMl*iEOj8w(iqn1m<^GA0b1Od-lUIQS=?!SKibr{} zG|HiS@UEPwgNdkcTx7)K(ScT=32lDV6JHZ*W|mYHBd(fgiKmR0ktQZcEmG2VrwnYa zj+0w`Lx(@ViPd|91r_Sb4?^b;c-et;N3^X%nEd~WZ-B3;kThgQrxx54aV{S6yT3DU zsfZInr!T=+IXl$Vzx1<0u|m7IFWyrQwtq~?D`6C+VT5+S44w+%!|q50FUye<3V^1U zf&Y(q=3|Q%`i30;={jqH2e0aSU!WlS`kcH(a6?e7bXn+A9ZCAR#^2zQ(^t2o7N3V+ z$7odO`eO~la6BDH~j;u(v#mjf5f_XZLhrY(3aMA^(g!?K&YWe z%5w3_x~6tezA_yWJC>*6b(rDj!I>Ot3IiMGOcB+Pnl9MZczTQ1B*d0spLX(!wm!C8 zx{`KusX(MNmGZ9NZCivTnSIW=`TmPhZpDn7ZHJOCYS%kbl2hPOo;wa7!4UuG)!HP@ zLF@lg)VK}P+AJ0sDd(+gfPvfNM-L1+BY_&xHaz7?j`M^LV_r(p$~&85*V7YNFATJS zbysD>mI-s?_nSvij@;b4g$g#{!aKw~SdCtL48C#ZQ5$UhlNSK@DU5y=C@kUW@a`a0 z&!okv7NWR7sDNUtU498l)?d^q0#|(hJU-cbyFP0yz%TP9gd`z3;L9HYV&+f**?}gq z-|WIq@lhha$%wR&XHi7zR3r<4zg^Fb;yGx?t~lV`veA=G{d6B0?%*SE)Gi_w`RV-T z-iRs5Dh&mmDfPI(vjQdX(&YQCifr6@hHh${1ick{{)4si4R|oogpU7ZtqSQ^9+a_dSwpgnswiYE39f0W3u&*Z>A5GERx zD8bn1_+HbaCpp1(JxxQu=eI5I`CAi4XSjuZT9Seuqr-2)$`h=QDl_S7Zy z1hJ&VIJ`k>_0i6+R@Yjai1fr16ZK=EHP|X~cE3AM)TDC?l1PiQ)3KLfO=RR}uSuGV z_yz|_NEo+d>F&o~x8D9IB||W?v-O3f3tB{zeyIDczg|>y!Iyd~x8}(liVaHM((t$Und&8S zvLy{4lL;1tMN-6IMkem;q{s`8hvXaIX|AwWp~5P_bUTN*DHkmS*&}XXa~Ajx=KRIs zs&VEEy~N8@Xum8g+yAs>=}99i+{tC5)^<~QJvKdz0Gp$rzg9?Hm%bU)hlR354LZl0 zmgx_4%2gMrH3cJL(qaROpPtCl1qL{cgx@4PIHWloy|PZ8ZfdpBsn$oywyZB$zagr@ zaf+)92nawjTg`I=fJ?YUg(MA^Jl(=+%3;Q|X@H4b!?Y!-H5a=Qzej9QiR(rjPIhC^ zi?1(^p4XrCKazvg(a3L;GPc0(pbtg;d{ZY_`34$$LDH2zY+%(r?ye9YON@24{SJn!-qf=}GiH`X=D`&h>zwC!rlZAWx~58Umyy8SW3 z5~;BkB4oBYIL-9V!&p6Ddal?1`M8E*0*&*_h2{1)=H!paXf6w+6U0 zXjS}?aEm}y8Wb2dJ$3tm(=%K_b(UM4vq5b0l6-+{kR7`~GdOR(KW+FgED4&Tp=>2_ zUdvOk5p=)8K$O9IYZ%G#AX*+HYB1>e~yY`?V>R)-OR=JIm_H7E?>M8^@5mpwVj(gC-Pjv^7F(IQMy)C>Du zL#)xIW1#&nwt?q#rw|1tVp`A3Vol+6)nQMr=G#G%BG*pM{;Qls>!$dN0OTpndC(D( zB$ZgOW;xcf*_KJ<_sh2pDXil~NR3>0`f*@u5)SHWU&C%{qvFcUifq4S) z1D6=5JF2d)6`bTW59=y6MTOVEiDO?i>AASom?^dd{D};XWf1D0ZIuhNl1D04cJQS8 zK^{SgftQI#a@keBgASN!z_7_oqeuUj+57HLO1Q!y{bs44{JW4Fnq=Hfc0#-VW zkVM_JmIq*@g4>**JU>-i`1IB*%<@ArpMZu8?S{O|ZAtp8vCXYMY3x4fEz*P^KZJk8 z`rtVR4iZfEmlg=KMxG{yPfNdibx~-%w8O$0axXMcx75KD8s>x(`V5gs5&}Vwd z`g9esT=1Sc^|a8ORK(2=m+3-*Oafu415F}qPzJF$vh}`JOGzX>BGu{(<$k zkd!Exwro-gJ87xShk|zrn0X%y1{d3$TE-2V@cb!4{tFZohGPrD zjmFl#gc}uMSO_G{hPd@GHFxl>Gd_d{4W$paLZoZkU+zHcFKv0ViHv28hhm|y_Z`m z+I__U83v3GIUyCs#X2b+&Z(aIgUSoLP#0htA!Aj#B)Kem`3M5$b$fAlD}||?Il(oY z7BuYR8&1Al#I1p*x zHs#j1Vw$`_c|Kwx@&D2FmSI(OQQPQN6ckWIQY91wq!FY`1q4J&N^&D9-JOa^DF_Hi zDen#^-&{cg}Tv>+<=b53DuUTyu_bk9&-HkLgomDVGQ?*TSnf z+!Fq4MxL(ueJhO3U5LYj<2E%P_*e_GzS+rRKQrEp-shsKbzZp+D{fWXv`>+lQ8)gl z%W!GN(zL}tGi1t$Uxl-)fUclCo_gf4GIBV?(k$D>tNhgS3A~I2llAr1yAB>t&4&kT z{?hI=T>Z_xQg{7$|4Ge~jC-X`L!|%BZt&7CpGXbV+XKkN=#L z7e>Y9VJF6%*s-{YZ!A5j`1WFCGrz?6stNdx+krWL(qoB#-|N6|@nrK^opsu~XWt|> z(t9+N)UTaBz37ti;^6y}2+3vUlaweVcQ6`dMQx7U;$3OG-1{eb@7O-q2QQE(ct0(s zu(9Su?0E6w*z@e%#3V{7vcsBgiDJX}+{a&>CTFPR{SJJgkO+o@Kv?5}f}>k-7kdXf z^NZQ=4}6R1BUklCTk<<4)t@#6V23{#I9BLhR+3-4Ut1Qrh3j4?!zhR{l`xhK@l=h# z*?P32m3e>h$K{Q&j(q9OuJX-b{**sEK{yfoV*7Jq2jf;Y<9D)qL+kK}Dnnoq3H?e< zjvfiN^2$1;{#RRq*n`9KbqS4nckDgEGJ5_sp3Qo+xEVzm!49M1n53MZmmkaD{5G5T zTh5rU+3X;#ud2EtXVgZEy*xYqNS(c-^594L@GQk|hwAkrM!J4a$6C8{ zq2ejapTBAIKT47=)tYsG{5}L7z@_CSoZeh&N){4oYNz$|*)jt*{#}}CmI(o?>k(uh zb${W?-+DfAP4g-Zjmsdq%`l{G+@9Y~07Wg`uuyVcY~qw?O5py%Yh^q(jyAsiJku=g z%?g5|H@%ph>KVAZMRR9Io2>$C$sW<4ZKsuXd+p0~l-%3>?`zf&{p}U3&Mf%)71k~% zVh$LTT{zq79eKl*%Zf@x+5E$iCKWp|)84?Q}#YKsviJ4*$~X5)s0|a!9=;lF zw|Uq;^rd4y=VYHhgLC8+qW==6qkNfYLFUta$qNY2*In$od6A^GPuZAmjrSAerI(qk zhY5s4g*APgj6PLcq>GXcJ@|+nA-OMb#b1hDK+NIhHNrKoZdRE%r}dp%VbT6lh6eBJmG~Jv5^YEKHey|V*L>{!HTwlKZv?GRMq7R zdnz(f!nPC)@gFsN*RJYPHb`?uQb&-G zU|O0WtT`XNIqz0nwAIe=jC?;}eg1r|+2m(}WJ=2Af zjI8K=qO*vQ-?r$sj;le982F;e5wl<)e9 z>u|GrA}nFNu6f7aHcUIsv3q3WLwF)_9hUzG0j9LQr2)=?M{y}8(*l0MS}*^FK$P~L z=kx=U?gi3ZdUIDgyO5)<*>R2`H-o}Ck7Q38g{Y*7QdkSi3w3R}visQyv9o)4R_b&us4;-vgqe$-dnQ6Ny zrBD2Lu#0CnQQDRu5vS&D(=y?^Z%Gn@A2{p&)XMG#4Nd+~z3YJrn6d&LqU%Qi=dipy z0&j2hShP%viMuNZH*-E@yVvxxbGa_l{GTGS4Wp1av@S}7R(Oj#U$?$3QN`%INjujAI5M( zOkxI7rNsswO;$jGx=C*;G}x^^T+D(qJ!!~&b?q(5W3&kPX!d7|_tl?eORNP=c5NpW z?sg_-O7aL;+R}T~jI_H~GJKZbU@wl09DZ7VTtC!=kXO;tK_ART6IFa5*tlGClzeW| zl5K|U#D2TsOG5nFNp$P$kfm+KkDmgLK48O^b--z@U(uvli7M9E^yD{U545R9GO z%Hy*1teq^`GsE4+ee31VnP(y<=eHmlJoxOcaPTHZpT{{z;Ja&Y&slL7WTsi6yYl<5 z`#WY7-MsQd^oE-&&4L4~8ReBZg-w43y;4Tn)cvq{`r=q4qiJVYxuo-n2+0!eiEQL> ztP^z!zIAwjFy;t+*JTsG7dH;4vthOnWpum8=M~zA%z0=yZ+^)3DI@KoxSb+5tBJ2R zSd)|3Nu#1zK$_XiBi-7qOJb0dL^e0X>zJbS1~WCe z@4-#)9Zx>$xSyP3Pa0_}#*?H*3vkPnv}qb^)KF-HrFE`3;CQ)d1QW!BRKSA?;tSTt zY^u?BDvGi+8p4P#=RGMA`lLa={%4LgH*k7?&P2;SaJT+}MYq;(Vs5KE0kiBsMxXmU zIMt30Z!b?&(>_?Gbx3rtMMaJ9K2wr6N1=a$xqjOsUjLndKUuBVC>z_fi}a|%YkrW8 z-_kae)wgENE;Q#)>Ur;*DND++nQnne0W>0SE_&bWE7mb^S3tlDoMc)z#^HF^m6tjB z?BwyHvJLtvn*d+}rBB(u12^g;e3&zMEdD$dcNeEYQM*i}Ek&BSkCDzzjlsz?NkZw&VS%Xe`=y5flbH z#_Q;$#EU8q71;M`(?u2Ai7u(Jt8RSKq#_%+N~SkF<}40&AA^#Z%N8cfv0wqGWVpUe zaAX|0&ye8HcWRwK`>?s-QI}{~c$MXih|6OdG{$nJp8QXRcW5z@$4WC^IL}57HQm+P ztaC!q*QnAWNLv{kG2UWl@sPT;t8_%=tQzY}2@u=5`0>cSz@RnSM*D&Pf;eqKuRj7# zRezT6WOU2KMVpwF<_@VHtMeBm^NQX^eMNLGv!80~#Hl7bvpvP6p1{8VZfGvE!tf}P zePVAcYT5{D{wE{%>n@2^o=fSE)KkbJ{oAUo|MaQFk4J2!i_p^(Aq4%f>c|6;d-aoz zPHxdwJW|@c5`y^w_OkqCPlfYU7C9Bo1>^c3*zed!+FD1r*kYroABhk9CcB!5ki7`8 zAB#L;8e*N3mf@RFsIF?^Sz~l*HqSVk8Hu+Ykr|UxT4^7ja$o%1)On{hWj3*(Gj_hr zyz$t0?^d&CD~@D%>hN!5vDaz9LjKaX8!o6pz}iiZyyliltcOG9Ba4EXmzPBQx>obb zR*2}g4}}x?I;vAoXQGISBS@gObFvAogZwG*W=mY+&~sa47YVT>0`=qhO+s>MoF%GNY!v{X*o3EG%7fPNtvx+3$N9J)8ni%hykp({$PMCEU z3-I5O6FkTdxgwQZA$*=(b{f~!w?LXSa-?!mh3OL@MdKd~Xz90ylntt4*>(vtVvAdfISp?UAjYTpjcXg=Z?D}sqPd~am^#w7U4Vv9 zQ8~@~JFx3IA@%dx%}Z)&uPqq|a=ro9@aJ3mvJ?{etirt7a~0wZ?yrirJEz2%QiGqw zvSvS={%#MVz}f%9=034k_R-lWl&a%biP*amN~qW9!<|?`etY%w=x}BAL;+*A5i}6h zeiqxvx+!IZaZ*#)9FB=ujcG%3DYU*N{GoAhY0JpE%|HHY?}}JAs(%ZoNJ&(Ktooiq z!fgjC$)o`PnQUKPM=o%~QYB-%pGGKaH-_Geh^LIS^DRV?h2+Ft2<1}#TWqjBmpo$q zM%iNGsQMQhMRDFy^A5J~g!NZctozmj`j?1Nxy01!aqSHhr)G3%Pb`Qb!DUSVQK5eD z6j`LOs!!dEmkny}UD$?Wg357enopN+r845waHZ5VNfz7w+)^vjy3z62JnUL*issY4 zY0Z?b>9>DM?)pF9lm2;SOfwkR>9f%-?4y+^|Nc)cfPd;;f74x~{2hg6LT)!M>hVwe zm8TlhKKkD*<->K;2dL}D79z7Y2iQLe2T4Oc24 z)ka?@nM_a#_JH|*OK?&R^9tb#zvM={IS&}AJ7xPK&wZ$d6UrCo2wHSfwcAQgtimws zV#%dTunbD5J6n}^S&3qIX3sA!sh+(eF-WIpoGvxa9Un}-n4M%2HfBbV z=sM4zzHO>zS~V4n3wf1E@gig9xWNTy-9eMwwc6QFY1NuhgeG(=#NM6N!7YZsP_6Yg0C zq07Y)R*Uy=Q|3K!gXJfe0_;kMCkeWP!=BN)#^hnhSyGo#}>kMzUZHc!3pGjg%Fe@xW8$s zs#1yeGneRmzY*?x&fDMLm=ZD=v7JxI_f^7SlTI}hKW-y#c6QFW-CeRSF*2pLokgZD zxn-Z3w5+2We_xBgtPN1h^pO7zBsnQWZ*Rr zR4p>s{dfZ;;fI(2;jyT*kp8U8i=mft|9!#6mVUyWoKRAHaU%zV>T83uxL8rT(=I6u*vp6sXOR544$0K_ z#jnHjbWyV%r}uEwR7QE6FHFh28CZ3I&!>hVBL((E}sgLb|?m)8uP7Ww`g2U}(||+jaY)(uC0BXi*cqS0V}o0O+U`&DLss7^B$>pBhiI+ zj;efl5AQf+?$6-nTAI<&4AEOfn;f`*wzZ~PdS&^9UBFE9(5vL2+vK2JydfIx`-yRC zKSIkMXP_sJLExV2tJojeN)K~-lNAXhlu9Wly8Z*>0uVMtDxmd(f?nMb$yXNq{MEu8 z$W{2=Slj)|L)@&mbXx|E&VEvlHfDJq$n2?>D^ zHT|>k4hC6F)8@=@CNl}L7k<_W=r^0_^V>JE9y%0cWh#m%;vlr3dE@t)7rXvbQFwp( z02pwX5KVXrZO{;AxVS<5Gz{_6;3{iBCVIM2KMT=QXn=o^Ib*OUJwE#F7Oo!U6@-xN zLN=Mq$pMs!cX6GRli)>CU`8&~wzZ)c*zkOAo52+3{fP#^goK z!z{qm;tdCHagR^vgEhM(O3t1W{)a=FKVLHM&$IfiVoSoBJyg(Hxt%wI82i2NZ>OS| zr+>x->POA<-}=Pu^~H?rAFgjpXngmHcfTbyyO-a`l2yeM{q+Bz1mMs;s_?BOjTm8- zcl3AzwMyMDUk!-4&0H+dlz#BNYYHEWDp1sJ_2yYDJ=uzJCf}EPc5F60Qa*PLcXju# z^h)QOp$Ifl!DO+*cXwO@xNyG9sp;Em^A|lmIhk-(|2mBz>s6HU2*I=H;EBQ;cD7eC zx5i&0Rv0lvwgq1f=5~FW;ZKmW#=Qs?zj0~WOD&E$wEwD&Ib8HV!kP^?9$EK3GqZqYONd?i`Vx!6#WT}+5O<|* zxO8Dr{U3C-eHC$M=ZXkts6*M}SIwtjbU#%ukVptWni_dO>sHlu!{dddowiJ(W)fed z?|F{vQ$(W$IzdcD_{g7};Oo-zs9gk<1K((!(D#j(Q}CNOiVwX8k)1kOY-)5>YX1j)>Igb zu|SAiytNnJH=66%vt8^(!=l%AITQJmwNHa13qz&UuI4_MHxI24qAQ`4tEv;25bixg zZGMg?x{Vh9gWFQSA||QqUwv#4fB?GeT4mezVf;Ug^z73V)3sYZe$1{>3^7fkHvo4K?f4Z9`UXz*eFwJHIEC;A`CF^j zATut^2PJz03?+6WJ3(FJUg*v3U%MSDyj~A?IU#Gg;}wp1d!25(@gLc}V{imw`klOe zdw-C|FSP+>cG}bBvVb}3Y&%Rjk+qefHeUaZOvhJl((hm-gjzY-q zzd;@BEDfS&X1;eVQpu6cXfu{W2;tp4g+=ST&bRZM5kpI=Y^{G67$;+k__r~rE;X|2 zHuW4B^29=_(Gq|Vq6HU^GqmEa%sB3iNlMdI< zFJYDyA^`y}jm=dnL7OKv?S4sB5=)J<#T-cWw zJjZ!p$sTUKH0H$@EF&X>hmS90H`fuv{khVeAtqILY&v80@)+c%%A}tk?@mw;r7QqT zgL&M)MWukwBykRvkGU;W7-1!vz?VRgb-R|F(JEd#uzD^*wR6lcp1Y~$<;|h?0Dn9) zreImJCmr;){(_0~v$Nc$efJcJORXkq;7^Rq{Hk*T^{|mO#=71{@JgEuqe4juM$9$` zp=kkZY)Z^}VsXnB{=Y#L!(!1W9s7Zj?Njru#NJK20DrCnJVvF44d(Lst14BGm6er2 zRmlI;&Xu1a;ES?n%lP z72)Nv{;E71gO1st6B$^MykY<8gE^C*DbH$-ottkPb32tf43HlkhS+N!_-MW89MU_` zOR4&%$4&QtP@XdBav-o8qkaXa)i2eLZU9Ev8d?@+9;C!%-$!2@`G5aLi~YILE!OoMBH;>5 zs#xy>^+=b5sJrg;N8HM>rt+Bo`JR$u(32z)liJ^)R7Mu7M}08#*~8@sEK3=l?B2)Im$Jgm zE+I$$5GT0kJzZ@;-d^|sL2Wir-zxX<9jyTJ0tH=2Y>7Rjt&mugaSyx>sQ2qoi&da9Iw#}1g4fk%OpOOe(keN=40{yVkieD4l zUwGLb$toF4k+G0wXET^R2*xi6-yh^7C*}0S^sXj~x>wwWo>-U-pi2M?pgw=O2Saq6 z&uzvqlIn5aBl9Ly1{pQUpdPRInO8%NUM7^Sh|k<&yLu3^|3{ClD8Kh{V?)FC%81(F z4(J^blaTPQxM(ZbJ`Txi@`B_3b=pM%mSf*uqMn;E{tgX+abMw12kFE=x%EeSgn+en%gbFyVjux3H1vM7v{y49q5>JglWCo)Syn+)3 zvMrVVo!a#l27_}&5(V7S&-hlGYX6qoH>4kI=4&?um>ne4GWd{%b5Jy2p%i$)!LhzP zRA@GsYZ!(JHQ-t$!HgsjsX$U-%0SaP&mdAO<7|J9?0Pp($dI`s{^@Xy#}RzTHP5r^ z2EIYTSSR;_B?b(vFUG7__)q1f(z3V#@s&6@6wE>bT0<1|wV;J(da%xpu;$U$kFU$X z#cju^ahDcNkNS$K;bO4G;MvCom46bbmGGI@$Rol(J&!;YuDsCNuXO(H04~|!D3_}m zr<1wH)DUteqak%0B4HTelQL4w3)_1>QsEP*#ZNLjKCqo$&jWp`{9r6Z@f!sORc5|q zofad=f5z}$nfBjZt%VR7QI^=BjN=tI?1M2otiZ?Jx(B!TV{nV`hIaN=kR|y^G06E1 zbD^2_*M5(s6~HLdzcn1@;CH(H%Um`LHgmi*U;6S89gms2evGrMS496TkSya;j|gbF zee(rQxo>)UdS723+(u?_=Z2`e&Hhh9_)e>`Ixok=3mHhG$O^A+)?H{_%jwti;mNk+ z>$a0GwdxnbWGfJe^$VDB1y4l{nHy1F(29}G56vR2^-q_HVgt#$47&PSIW7KZWY`2_ zE~q{r_UQX~AE173bm)s>`~qAZn2(}6M5`Dqaqvp znqYZbTRjWQkW5}Z_;&EGE)T)=zcWIjHoCI$g!k&HfNev4)P*M(2WFx02-n+f7xi^b zZkY!oJ^>d7$LiJ_6%qy_t$9f*g)2-^QDU>}d6+#wR(Yy*2lGP+L^phBjxQ!LEbT(w zGGQ`g+}`|^`g2h;74gWc5%slm-HB@(^%zY8gjQtgQll!^NW`Qq7$NLz)vVm5C&`2| z>62Z{fzQOBs8Kp2TkoTpZ{MDTbqpd=#*{eldtV|2!jR0MeKG_`GSlqB8e{p<3zT)j5OVFPJ4zj6 zmq*Hs3W-8%d#;?gUO*TFtxR55|RotVS|tB zGP9mn8YQP*fYO95N%bk!>~xsVV~?>E`4Dxyk5iM!W&lQ2qtyS!>5BgAbFZdgy1b7d z?&t6}3{j8>9;2dj`h1`Q(qJJJ{J-y`m;T%@MP`P3FrwTy4pu*4M+cI#!~t8u~@d=D4jEigddXDE=4>NyXRQ71%x1TUe>?+ z_U#+!a{>JsYKKFs)NcO`oo0*+8c&P}0{O^n$~cUWh*{lD*j#gcm~D=Z|W``1@7{$Nm$96Q)T zsW<<#kLlkq>resxhN(bMpmx-_v>7QaB{l!+t54EB&=YfdAcWa;4?EQ(J@k%-@Gxtq z9T;bF$lRsVXf}4RJF$8a_S6%IQczLpym(P&+Rp?{8S3oj9fMpqE&${&w$<+XL92!_ zh-!PNoXSYbEbUsVb6=P+&xPqQDg>DsYX{8kvfGd$ZVaWBd>ZyCB4TH&TeJ|Y9aWNh zPoEieYQEfGR@vg)b+BbmHQXo2!V|9WJwCWc7LH?aTo~E$EDf%xkB-ZA%=t+TRxYeAIpmol-0V5 zxf!?%2^dk}YU#*yp8fKleCcp{(jdb#w2>cd=Y$ICPCIs*SyfU8)6(ZpEx$Y(RvqCG zh(kkfzwy*9);`|h8tMjr(a?LZT?`P@(oReFC-)M?IF(tjU-*21NH~GuM5jhvEA;mp zr}-ZaFRxQjLp3%sD(JFxTDoen&U;iGY}p9anjijH8%%ew7QRSxzFj5%MQvEK3VCVi zb{EmjDHYzI{{+FTWx&#Z=zXxVzcG#KiU*-L7G~zck(B}#I|^eCU2c(4Uu}&2F7rT< z5k_~;fy3Jps)gzZcqS}9vYf?Y_pcxje;c-g0&N(PD@D2W%+t%MX_$mxAFi`L7B@I$ zkhCQwAyJ|F%Lji65k2{1z!}|Xl-xsp?b@$Ar0BalKe$zvckek%#bcyRwJRNu|N2pr zvT5z3x4J7g69{sWG)n?40Wdt2mCl^-{F{=uv_F8U7Jw`6Ts(3T|HDo0ijCCVrOZrH zV&XVKr&V|#zpIqbRU%Y)tPKl*C5m@)Lq~l2^vQK+Q5!TSN33e0jo+7DPXBk<4mbZ3 zO_2kG%vYZmh^+l-qXoYnM~Xe_o4ZuNWJkf^(oi6YlYj!iWWpH@nv6xD!Z!fj8!(p; zbs&rZG%K$)j^yS;V~R(wUZrzwd24>pD#%^Jel!J6B65+KocvF%mlusjzMh1qr^pgU zN(e5htBvf|*gik5-MZyg=_UxBvl>_?d6t7;BdPNHr}K&|$0`ilBONO}U=_W97IW6} zUE25Zhlw$3f+R=4Gjjs{4YR$N!5YWi6%jd!Z1(W*0O7wl3hdE0viU@zkGA8uLwIir zIRm}14$_B!f$IeDpqjrLz1YuK{V6U!+lNnHF~4|X-O6*+BN$^$CCVEI3)r;IxK?mu zlXpwAtm)|JF29+a;g}>PRsmbBRN{&z@%h1_*Kq04wG#6oTlBuofDIF5fEk$%84;t{ zsM$Onp_ihcTLt{LE?|GY$&G(vv!{*$^dy&ssAo}_CIMxTL#vZs?8_h`hq`H>H@Azd zCK9BntUXBLkyIKWe+i%=LD+4vqQ-e+>i6&G12+EtB3efqOAEEILF!xr+X4%0_rA+* zJj7>JYSs8D;HxA{F;b!Q9Mc(MGLXL5q{eBA{A{iuThg^PB1|32Z8o^9v z|9w(3z=(VN{QPWexkW_}Xlca;9ZFudnH$Cydd-tgL|EV>j5R#0SImMYKB+`Id^|#J zbv(=KS%YXz*~6`QXa4#>!M`#hcoP>-P4v%nw=yjCP}nstwi`jyWpGn=_B_xuUKwq5 zHVw&cqa9A$G5H;Yx$$B@UwMb>+$z+k!DVfH&-3-xgIB*E5;wNRe*OCO{{8(KQp@(9 zgV`VLRFn{wzQe!qSR4X4=v|3hfA^fuIreSOuI}Y#4lM6*-y^?MmzK&8_4#WU6aw@w zEQn@Zj)tZt)$wJR;YyZC?B&3CAy8Tu0})Hm-K1^b1Yu8Q6+=p#FOJd{k=N&smqI^b zhB7G)b~Y_AB*e-6<%64=CFZR>_+@2E)JnqX-B4gKKVPY!K$muXvt|W`?oZJ5iUWb;}$AWyYd8?}D6+T=91bN8XnjZ?x zZ4V=u9Nn@n#sd=JAP3QFqprB<=;#|{WNNjZ9{&llA%reKHN+%rY}no%U0tfgz7C|N zY6_UEPQX`?P$C}`b14PvU;X)hXNg5l&k5>`DI3{o0)vBBK?8HHGd7AveRI^VJNg;@ zzk80h4w-#(sOo(32%}k{brn+3(w?3t7=6?31dsjom&!HXmn9UhQi}+IHY$59dJ`Hc zXHWC_XoqGv!rl8oh8or<0DDm8#E4j~iu0E@*AzPLC?$5VKD{Bd_B#R!`yhaA@DOlo z4W;@-s@BCM<{z4D@+ zZEdD~>57F$opI|ah9$NVO6dGnT5rL^HFd)=A>Qne;C7rg6)TfY>ca-aa{#_H7g}lFc7XjYdYmb`OtyAd2&944#6Ux%*YWwj*gO1jypV~CArjb%H`t>!mbO1D=c}w#9%Syi-AyfoVf@(#c&0rKk~r_ zS6r4zo%(k)1fnR5iJIfmX3*R&a9C1hC@OMhg2|Jl_9%iM6o<80bQWi;`(=7USSp?U zVQm&Pm~pP$6c-19^4uN|#fv)RV=oQrf0f0!;UY?J<4zT}hTrm=_F===6JTryS)t48 zK>qN378Y{=iebvPCfwkN@zTJRTRh99&86l;oFH5tl0C@x;jT1jfrGd$E#{NtYF9=& zBrO_e<$w*mPDG?xY-(6K0@N`x?@oYh1&jj7C+n11|8V&_mYA1k_4Fw&p-If{nA1dluu`Xaam~IVXEcc8 zH`$CfeYnN0Q`I7Xi5tLhYd+psqHhkN?rv?plLSKVppZQPKLqmtqS@Sf4gP96F5f_p z`4o*3^*Z_t4deGfNjlH#*zDoMIw)To%+cgEX!(draLWa+!(P4pJWDl4$8ClCJyuo) zJgd2(;aX1s5koMwXqSMT!=Yhm^ROnk+Oo2;l$5(FDqy_dNBle+3u5nFV_xj?XnF63 z1PIa((c7@ERc*=T=~VBojFj3;H~HWYxVpK)k!y^6H-JJdEv+X{p6E{Il~P9<9)K`3 z&Q*$iKy#|OTKu5W48}l!xsoB>y~kaOsE#qrDeuiR%s z<_`@GIabCy#F^@=t%%>k+j8vSqdKG`MOBKt|6glYiFl! zoWT=3rIs@WG(=BN4+xI;JYW?T9#b^*e7N8i`D}mDL_&oM{Tz`X*~`tV?a_U70oOtA zlm3W0j!ot|M`aZX)Wc`i%u{;ZkoWLAh+fG z<{Bu{hONCa;dN{wrlBzm-aGYK^yUv7>d{qPOz#BuuO`DFxE>Z3W-3tVcNrJg)?HCc ztAj_HyPy?boFPz8Ljwe{M@p@{>IS5O%Lb`k>2k)tFScP%N}sRBs{Sx8YGCz}az-Tj zNZ4wb=bZzt@z!SM3f>Hq`doj5mHbZ?jm$UXIImD6Cz$;ieNp>(EO5@dDUp6JDpsVRSM&&VPMJWPepMV^n+OatB@^s0^i+egwXg z_<`BF30U#SL6xiflP>5NtDW#MfjNi`4ZRPvDeQA#;stJo{`~n9oZF1^vnV!guz8N_ zlRq#+eft(Z@Hg8FpMU6L8h$`W3d|gT{P+r@#%ub*~Vb!z? z+U-C$`i@R!U@#Hn`-hV~B1m@3aStuBah3Dl%(mGs;v<8U_AA5v`TI7o165qmwLEgC zMyNM2au*S~4=WuTD>m?ca|3kCl+b&j>&4Qdgb%V zwuk4tJvIkxe5il$lp%^k^B$RMFhDv4VXX~Js5djzn`Nd0(gQC*At*X*ULq*OnJed$ zml!j`Q}Us=;9Qwt0*XCKYsh-v4K}tPc`v8)fT2i{2#^m06%x+gwHT|TJK2~rFmaU{ z(-6LljTqWclBlq_5z`Gk($WU53H&E)@U@El`**5B?P$(9zX#Gyo3Z*QpuxX<*To0! zVAg^bfEsw&nZT(i-~iQ{x7=Yb-wOn6U9mJJi6~=`x2F>H=)g4o!hAX$U-^sisF~Jq zm|Nf@UksO6Xol0v0-i zP(kuSh31WK6z}h#)d4*jf6p*=e59B>`7rtRcZiMH+Iq*2&UqVu&vK;U95*eMv`Tgg zdAq6}WM`FaBVK52t$z5XhX1C*-n#zZ$WbYVOAw_`X?#Z+$<>)bi82u!H4*_{H&@+raun&lu%D>tOkn8-#Yk_ zFj~E!e#4HTE7zRJjC}aJg?a2P>RMhatLU6%>iW|*J0Zdyli|t^Rn_{5bGLv3hwdww zb@k-QJ16Fet}BAv0k1j)h`mQ-y4%ukkqW**C-v& z68+=PAZCWBlg4FLrNQN##u7!8v7YUWAw$WHrIJeFn*LJ)TG3lvZcB07!ZJFGTkhu8 z9hAAM&1u0ZB}TKWK#z^vG>pt^SHISleEPHvSWz~esy}L0{FXD*K=(Sov0y0KYN*uS z2=cFbQdRG=npY`Ej+Q#V1daZLcF^u=yYs}aezN^VSZki`^+Us>B$k8VQ9w#A^51y-jlJD^1l;-nf`BLkN@7Kvp1qVhxpROjgPyp zRC*OdYsuIZ*8YV=#&l zkNk23%WC!{J*ZD@(H|E~sPj$-%{-8o_wce-`*OcQpB~7-9Dcmsk03cI>C&Cx z;9zWQY>P2B*zS&wC4PQ5A$tZ%>F?jafAnVD^W{y0N8=YxHP<}GmIfS;Ng8zB$A z4efZKHek5Yi9Mv*Y>AjZ3bG>cFvW*EOS3qd1qK0GSxc}9ii(SwnVEeb|AlBJZ4sUUVOZS9c?C$^|t zH*ek~CN8o=$vu{`wcUi4Uc6T0%YXm&EIL#inq8IO@I6oCR4mCD1stcj4fU@!r%#_s z-tBU){N;63ilH1z$!>{yq5-QyM91~&*KOI(gz`E%M3Ma6yVX`d zPvWX1^RoF4n%TLI)E9cd9U%}8{^moxV`8Vnovyn(%jq}B-eN?N6P@i z1F;7+R3~T>8d_Rt6&=gGAcBbX4m>=MZB7@d2Mx|61?TVuQ zCHpyMT-<5V8wYe&=C_5Cb2C=+_LKGfK3JAlC8wpK>Rw}+nVHr9{CUp^3lVse9j#E^ z74C?Od$`wY%z0xl+13Q-ocC(6h>$>j*?UJ^go4RE&x{IShxWmOKuE~S+tl1V0hxnv zd6CfIX>usU0@~Q~Xr&Y-PZl8l_T%ud#)2k%Vk8pzxCKx>>=sBezHhuu(0Qp7 z?AP7v(wb>S#noaz=DOlxJTjMF=D)ae=MGGEw{eZjmXWLLA&|63+b*2c2S0uBii?UW zW~MgR;;(T6=K&E*&EB{hEEOxgPAHCaGWL&x3)}+U2Bu|~1+{=|{ zhl5}Y72lkg-(Qvtf%!m0yqk*3yv1*8psPDchIH?-)pvB{xzo_qC0Eke)sYqzN=ggW7AI7S83>o>YAJAZu>E43(f?zWL6sEI4!i6~^<*xA%S>c@mSKRm5GC zIAp1(cb%O4UZ|8@yZ~K}9@aw?#e06V{=VffqriKvzK|sz#oxbfopNdwkJ>dERPKgA z*@sHcuX~YF&x$!pu@Ei2OGaJ_lGI-4jWU~Q2#M~FB<1DFU&_eIiRheE($sAKYn_nS z#}VBDuEFEv00jiZV6Jv7$jP{^Rqw%$mXRN=bh2uPc5G<$&0Dud1Yni3#wrPYrU29X z_9M_%qIRlLT5;ECP~+e7<)_6tOKuCA^c8X8b?M*)vb zmJ9(E3^%p=`VXK-e0+TNAdH1Jn5ubVm&(EV!egMX+t>ZE*KZQCcl|?= z+HX6JK*xP4kWd*@nlb08DTGcvRmvoIjtuHMtPaxFB5a3W=0FA#S zBqWaZ)@q$M^wQW@mzUik?ZD2?&dSOvDJjXnH{RD*1S_AA_DR)Nmmog2KG-vA&;74{ zetwmeM_YsUIXM2*cvRXyJ-Iq|``%QmehB$NzXSGFiutK2z*n}1+a~H4Zy*H3{nDoO zr)34tY98$I&42+f;<_iVsQyiyCV#&7@T1@M_I5!5=VPgd54~;eifLF`Eg=5{A08Hf+R2oZ1^_yTryygn{n+8k2Rf2|N35eBNP!@} z+{GUXx37NW?i%@m#j&*1!eI^QPnV-zi^nZ~)Sl_1S_tjQth^eUw|xBk#TxR;f?S@T zBaqtGQ=Q4j@7J?j)SgO7@!3qh&COkn;WjhqMZr1!yyseq5pf5)8ovtL9U;5Ft^8tz z5TQ(nyc@r+GO|pNxuZa%tMlm zZ+4#fd__L#70H*qPOl%B6@HigF?|ES3DQP?%pJ9~MgeD4a^FID2d3v(cutRPITbR! z0+WnD2mq&pP-%$D-Sxk`HhW#Bfgwz;b0^LsW$bnTE!k(!(8tGg*IQe|86;>F_ZqPf z{WOHU6em(2NyG$kE>=|BH6RCZEyjuDk z7#N5~y91iAZ2Q$C6t4=2Nli^NE31iFHB~(KJF0Hx)Zssb)`vx~7uHLW@PEN7foHI{ zFJfZZIQPZz0?m)bVj+#|klQ6nmHum_r`Xm>9SiXv?a zkP8cs1ur4eAG}8|LP2W^03T0?RUlETUhP_3U40DScX)JkbTwdhcJ}wq{-^MD2nkqu z!4Eq^`fX=tC%$GG>N0d(7rvFmEQ$NsKQ=I!fz0hUeU;(GZrBn!RnGZ>8eTPxkuDVg z*tDT|00!%%rPUZfr}tW_PM3qvc{yLWLP(o3LGGye_*QHuge#nPW`Ju1C$RcX3n4uE zjwsPmq}JCl@ai-^9x<9oUhpF2TF&M%I$046+{3|2q)Mle<1y+N;#d8b{eI~Q_pMHh zQG;~o>L>t?E|0x2rI>RH4`P5Q zrGy}=eg(cFND3%UVGM> znfHBX20~6nPWtG`NSnT2j6%qXx63`rsb(C9FRtA=TXh3y0H!}K?w!Ce-PE`n0v8T< z_X9ip%#Tib1Gl2=F^vI_X9s}oVAKtc-z1q*%B{T!^^(#e1 zVq#(g;su)k>8uM0v=L;?ZPEuPp*krYHd=3A-xiF$ZQm$ziZMU1&Y~Y38_Uxu4QkPE zUSy=|-*G3XRTuUGS9yuG}(9jYKp$-~w7R)X@jz!+e%W#&6V4D^wlc5mEA1rY)R&_X2X`ZYlV1A{ixHn1Vk#Z(ygBz1So z-@4@kJ_Sc;6Hc$i_6I`EfFUDwAj{npLd_5o0p(O2t_rb3$^J3?Vn-yC-oQ^~$S+PI zkiK{CUaH2V+nG7AjKyX{z_Gi)1k1Rf3-IP3udx9)2Cv`N%BsR{Bbu^OzqPfMN-q9< zKvm}fA7Zw0?=%AsEFTsKK8dc8+n3Kq>dkcXUvq_v1p&5w zdU_fi9Ss3=@{b>H;h}ps07!EHTSmHxl~8-|)oL{^j#gGy5M5So)j%dhL!U@3M2?Lu z1aCK0v7d~`L7p5NUKj8Zg|D+=FzfX6G(^%8YmdyIe6Q~4>%MB zbJ$M&#QPG>q?mthZq8fiZCmDMS1e~Cuq*&Z)|~IQd3^<{0KDi4FZsra%31kD-W#79 zfsI2f3a|PZpc90}#H9Axzze1_R;)abesa(Eh8H#_Mli1(H$Q*v{QNv%7 z$y5cYs2gv?+)fH3tkWp(F{CI++X2!G0=H80vBk|zhKU+*myrFA#3};EIWz=QNrL&g z2uwgT-$mDX3=9u+OcnA?PfrJC_FYs%32rM8x@skBrBiOiNFh~EGCBoBCJ<7_OG8D-^o0@H7{&>`W!f>=r!UQ+;dY?4NOf(SIecT z6e&ZRCnX<$3-8-3I$JhKUs+ol8XPPcf2E;88<#58$smO0Q$GT31E$47@UN2nx@WZk zZwng>D;SIvW{U&z_z=Qo*l?AOdubsdA?Fq$^{`bQ;|}!qH(y&@UgmK-FMG+`O)@{O zP&xH{U|@hgfzv#|rk~hk$2@!R`1MAm ziB@kS1LAMZ3L6P>Z1GzX4IuPVR)(0QW$Fo_J#<=H6QDSU)2Ip(=Pn)19n27w%y<7j z5NXa$Pk)V$2K*)EO)1Y*0*rR{`U-wQPEKwm9H!1g1`Rt7nWmSD>y$dj3EG&%8s590s=4_P7e2X88!)3=roz7{IdP?9kS`%p47PHtSsXD_ibkW zc*71G86D-@D`G?JKmYcb=&j&QBVYCn^83#T=hcN}6(s0^#X%sdZ!exZ`L``#lJZ1i zzXBzJre^lBADmxIEG(h2<28`#Kzj!`AIM;H!z+eE^a0GBhDp`v6c9<%;jh7q4G0XB zmXdnp1v;P4O>;S~^JhV`1tJ8ryLUHgdbH^QoyaXOcLbCO9^vHTXbN-(JRfF-SCTBP z>{c(A*PHKHRU85m8tA8q56+nzVfdoUE#fXJuU9s<}qb z=gx!Po)Xsi~I%TXH_y1fAOqsLDQhdZJUH-ooSo4G#Ps2)Dos3nSqh zpzv8(S;s+U20sVa_>ANTe$K+;Y`8zNr|}t!Y!V5o;^GQ{co;x|6jUx)E9;9>TLOXz zxFDFP3D9kjN=A@U8L74*Aaw&cTvAT%3UER02@2r7L1n<}c76=$wuPRa^}(t#Y^ak7 zU0vPTrKP7Nj}KhjafR?fQs_GV%8ncG2q%n3=p>|8;?#WJRLudWqS@3^h zEVx?#N=vMOLB`7_yz?X?(K!@oczqmsRmUkg;$Hd zY&?&eT2IBq)#CXd)8JP8hY#E5b|A_FKw5$uZp~l3vuie+6o;z-+&}(uT zrG{vO-!{XxBf% zFGw0S9qsIxm?Fj? z*_~QC2Y+C>T|*T(lRr0Y@It?L69j2!&*5srTz?!7+{O=J18)WKsgO8$Q6vPUsQ8lm{%=KF zTU!WzTS0T=MMy-{8N(jj@G8CBaC9JWfK&t9Ph?8_vL+=>iL(QcdC-F42>q$A-$};$ zcWEcY{aST6<^e6#)zi}x5?50j@j$)x92GOe7gS0YXGa7C1owmjzkC5L2D}OxZY6@b zfMYN0yX_|;XcY4{t0T3u!Q!gFl`tVQ;O4G`03e>p_22Yi#J&}^TX73im9VlZou2E# zxew|th^XmuI1uunb%A7j1_V*!OD9CE#`2&|4++89(A1KnhD|$6_hN&bhJt7B^iHYC z#hsk*Bg-ig&~nBOcAuc22lLnsgnV@Wes90cle<5WAWg+~X(|sOQNT37$q?Y@hZE2M zKBxBLFvi=v0mAIFgEb?4{l5^~Nxi&gb1VP#H~W{bTOa-#qDAl;^g1=Mb#JIS;nmoWxl@afV{eVV2(d#J zB`({+GkZ4ZLQWG%$TSP8Mqod@zRu3-23}qB2Qy#=WFNw|QNaov9covg&l!c#-ZDo; zYsxH?f?xU`9eoP;Aw<{Q+}yPM00)#tGd{KAp)$K!E5VIMq9=-ZzMn;0T-;Gn;m``} zoaj@Z@x&YOe>(M|Wk^FvUc4iWnOLLwtfHa`a?IAQ7pgQy#11Y>T%ieo*E%gPVCa%h+$8r){`$BR&YkIpkuMbnOgW7#9!Crc> zxA7J|V%1btXq7!*0*M4VE!*1061)X>Y-ZNBvOk|a&3T>KuKu8G8)}4nOU+ZVOWm6u@sW|H&gr6y^0l*R*9Lz{f?d$JP z#OuTgn~Nsr_(RLecNUClf{Y%$Kbl9_br%{%it@=>^(337f&kFjOs1~$@ZRmuLlK~$ zcC#gnXd__;ogu|b<68>f0Be8|alE{|;JZfE5=&u+(R`|VBOT3ZvNc%^!y7g?H-R%l z;++ic8nsuIwq-?W{hCv;cK9MYjSO>Nv_#<+0#B9M*|3c;-o)Kp6g1U_Eg-oWQ1_O8=!=4X^=U87k~Uf)IOiKfJ^|Kv5Tws51t0il)R{S4GYx4*R z;w`XZoOoeNljOW2yd(Pl{d0=Pl$1#|HSuu6W#*(L=euGrdSwOssIO4G8;aGAXpxKx z;^QV1*dQ_+jmgzo(9>^DhI5}QQJefX4G$s_O6=g9Y>NQmC8mszi~C2P8O~N(S|;IZiMH-f zNv8;k6JU3}84G&z-r-ZFLXoF@{hO~Md$DJc#(jVRlKeVW8jh{)LIP{1sL%^op0nDq zSPX9{U5*Tp+Ys^l`1qn=5B|IPJF;$(y}vCJNrV;d1bwb6(f{&00{KkKA7?9^q)7U+ zQ3OCmSqB-4IAz`T+eA6?``AJp*^|4&dWByZ!+lNC<@+J9EZ5wGumzZWVg(&bF0oqW<*$RfzT@BM!NtH3gfv42Mb)l!kcWT^f+}%=$GCnrv!*~pW2ToXJrpq5@$T@# zW(bhtMr*FuXMQRjDS%cE%&MZ|JviI|@NVp=>QTf@g5p#}_a4;J0ce`?@7Y&=MtHhm#y!Bg&S zcRPCjz#*?@Jt=QUgDMUR*_L_b*Oxa4?|d#Sw1$iVh#I&z`TUC45m2!nD5y7wM@Du| z&NDKo0k~7@%&KMJ{?Bzx58py#rZh=Ue0SiFGZ`Owbzfj0uHtCgNgD+jiOB+B{%668 zsf#xQv&L5rt!J4ni}zazX~oyqNzNb$&!+i-$Fy7AO=_qV{e;3&e?|SG=dO?D) zE!0X&l*V{WyOtpN4@pck0}Ol(%^ScrArFDyy7_QQkb8ZN^^c{s&l4FB2b6C-t@`Czi)8x@ZjKy7o=N$$lXGqtDCJnMP6q2$mc(6C5qh3 z8VXUV**`e=AM1i>N$d&P!?We6FK}31aqpC^Z-`N>8Db{<7}xB63lu2e*MLle?jblQ zhaR?3_k%yT&~0n8d#~1sJhLDdV7qfOiur@Dm)#xMmdi9i@l|f0oI?;M)cg?z6~4a1 zAL~RPOgXVm6dp{=s(Oyp1rOP|9S0N?6tAx!&W2@3q!HHb>AkoD8z9;s_t#xLz%hJ! z`^qn!#H(O{Rz=g;bwYD?|CTr1u#awP%(A)|_JOr^S7_XLa^UiBKN>z?Qe}Jv*cV#< zuV2$U4v^oS2Lyj9y(yNg)_s1?AcZP*gksSe+^S~&yRq>zc-m9#Lu~=bT?D$`rerd83nU;n7Yn?EfZ^d`2#{)_^-qx}f=4PKi|x;7 z;eb}3W_pJ0NHb(nnPE*iUz~gBoHZF#E7l*~bO%!xh^Q>r-=s8hM(+0xFvS4CSCI#- z&r5DJ0oqUNV!V}pb#Is>L$#8a>bYa*W z93LC>L&Ei{9^;Y`Te9#fnnooSmTBgemaAP!t;`|vqvC}TK1cGbDDVwPLCrz7HnXQe@B2wceeul)T-IajXQ_w-*0H& z4{i$WJhue|0**EWmtP$@(0*N?C(_|XBM{n9_KirSX&k;)96RRrO%W}kBQ^4t_E($j zA;`k^cApzx6S&w8?Zns=g$PDRe){8jtf^nh#Utbj89;(q@7JI^ii5a6AXXY&?H#wi zp)~aDetng1!lOg5rnIPQvUq_>58-nI> zYEe}|z8}&!_}`79BogD{;ejs!sT$S2+EUwULqY4_`uXf{&LYA7rZKCJag_)w1zfGG z_q|`!olXyn+0@&}O1edR$2XAWyI9-3?%ycYWLtE?;%yB7eZQ8lONd7o$Q4P;-c$Oh<))8bN_TIpKgANbKde^P>; zAP6L=xTq90pLQHNv?vXISGfrYJoq$FyMOzJ3ptWH6GEwOsgG}9s6RbUNJ07~hORL( zk@>CY5|WW!^CKaiVS^lz=mz^eAEedZLQr!1qo!u`JU-_XLZRB~qPfOuG$FLmx`(Em ze|uW%dK2?%(irM&$hGE2Un$3T(@>L7r%VK`ICE-E4e^QHMqFeF5Oq&(foixf?O z3yX1aZqMEOVak$^aRc~7fqbs4s;UA>7X*m_oWP6tWJuvYx6*YL$WIyW+r$-k;xZ`8 zIEJIHNk3ZdM5Raah{ctqf<^g&&~^Xx`sfXZ5r;*k`Ni-hZE>u=p?>>iZs`^#R#sNf zWd4`RP1kvbjdMZWd~)uO{FJ0o3vxcn8;FmS*Y*;R1YG!Pi;BM2y@B&90pt$T3iWeW z57DY4-6SH?&j!Y2w&c{zGRy_ImE;=VJeNONRewqM*`@OR8Banv2u9Wd#^C%K-Dcj;?f4Js?yRKih;|LQ-F2-4i`>BlO2*XgnB>0?2nVub+n($LW0OCTd7%bQO_ zK~xC$=lIl~$4md0BthpO-cUb3ba;t=GD|g*%`)rB(1EaR?38$Ji7g~8M;1+BC+OfGnEHeEo3)}7XuY1EYx-#2gS#%GosBHNWfBl|@^#pvBw zQE^}T)_4ialV`mrB z9L`vIehBc2a&t2+hKkA1Da<~pjzx}k2ccel3yIG+-+K{eI(w|+&hNJGFnB)FTPoTp zx`*E}wtEu3DRCsUc+!4AJgYc0zI}mbAa{v}jV*xY7Z?c1x}*h>fbHKUswzk0gXGU* zMV{1N<{OfcbZ-}BMg^DW-oM6QM9QXMDU5!Z+ydl_U+hv{O?6?oi=x@>@dlm0q^x*Q zfZshouNoA$+U5XHo5 z#+_fgNFmls)`M3Tk*CQ}xf_(jEgFnrWn~+#z43+3GM3wQ^X+DRNU~UkV_ETlO;(C3 znid|B+Y=sk?xz0nce_O`JTlrg`ZiWV-{NcBn)|W!?&)!|hed@rUiNbe`P%5KOu4x( zF{*z}h`1WM0>=Ms{)oy&&Na_#9qk?Z1UTC_mSp4F+ByoC&6o^M?~fdobgl~DJF~kw z?X7|i&{8D^oo&`lXJ6VJzp`{2CjQZR`NUCgea)}Dg`k(Q^L@hNpw8q_mKi4(7gCP{ zKn>7Ulatye8`mY1EN=g6Q@ON{f zIDO&3{@n!w{X)sQ>Ah=>3H+|{Q{!~CD=HFs&l`>Q%R`N%q$JthwpWUF`X(I?4(JoE zN(-uXw>@4aSAY7M^^^O9L1tQGqhgcnN#&`Cm)NksviD^<%3M<>QC*;(L3vXo^WN&`H8PTa@di1GvNGz|5t}6=HZ+<9a>iY;oXv;p7 zht0rja85hhGmxxqXw07TsGO;3M&oeY+F3;@Y(FOae5dVyV~*xmp}C zcJYk!XLk-um`H@V1B4DYN1a!PGeaX}9Z#HagbX{QIIU;fR|?ZcFds;#D5tRHb;a|? zVB=OS+8$9@yj^0Djp97`-BnwCG8nUE?x5ooGWN{GzX)=0d`6A)RsYo9QhwK~(Ac!G zia(WPIj$y~QeIyb^gI{kVuq$Ft}@%w(J5rU$mDuz1wG^{&>iqEv1ql3)M_r0SdvT7 zsl4PJVLQ9KJhZ!^O3dzFu^GBuw&wM~i2RN5_r+Dm&;!$o&Li zv=3GvoEBx{wBkU!r<$$)L%fM*M7nE5Z0<6sBZ$^b^W6{2A4PV62117iZRlzc5yAfE zHzKtdBk>g#*Nr}CPMc`BOE!cfbP5R>*qJFhq*%V6KYxa*c2I8gVD`QoFC!2{d$7eC z1R+fvht(g(ZaMYGlwJ-ej#$NHPP@wzD;hwmn=i7im?^R-T1)L!jq?ckriK|Dhi$|1 z^rAIPQG5BfZ_KOJ`s?cZ7huw889@xybjiIGHGLv&l^!NT(3qU?5*y})2y$kG3 zFd1jf+89}h`KbE#uW9W?UKBtq(76d-7&P7=N&cSaU6a=QpW%R$A|&GFMw=S`TUJyi zEUPM?Qr~y*V4XhP*HT}ErcevhXKrCZ1Wqp{(@Hp&5(gXatgD__WcY)ql=et=x z&0Sr2xw(rw4qRN3{s$s#7$>C|y=v0oF~!7iV$nRKF=T!~uln?zscCClOK6Ru^|0pM z+;`AY10T)H>+42k&B*D(5QdKWaDV?g!E&Xpaz=LV<6EkpSy^ZMEbJ#Tr9TZwU&P3u z^$fb6y0#e>dS4S1%X6WnF|2F9!LXSt%Mb(%4N&Vqfe#K6J%HE{|JE00uKXa6A0FAZ zoJO`8=)H~m8@QAT3r&V%!w%YAWg%ZhHSipPm0000r6%|8Me?Kqe*-IgM z6;q6lNKA$>1|85_NFbu54MFp2Vzh#8MQbIZ+k*&2QP(U!(a#JvNeEZW0rIRf>e*7= z%Mmpl_u7NCt(5biy2ty+i)CnqI>Qq3s9h@; z#y;F@+Ti@9dU}|5b+)%mCYG8~N zDW}m>HK?+AcDzHUz-lcF8_$J;j+ht?P#yxAY}6k4V}1|?p)GHs=4xkA+=WK_FFQv9 zdYl4HcD!IoCO$itnw{vc(Vf`YNS5a5dRC@Q;L=cVBc{f}9vFRFRoZ0COOGzD_ zU~HtOVQgS{*tpY~`2${U)YVv5ZA&f-pZ*^?ZnyL4KCDzZzRj^}xe}>Pu*N_2ZJyXx z+y{2u!-?Ug@3{{SSBuTGQ|?tLlkqAFi7UIN?#5u=xg#wuE-oPfqS$N&b6O$TR141>{pF1)GrB%N;eF;m`-@teC6}C=blNY^-%q zwYevQ8H^2ht&&?G94d#0hd}6;L#v77ou6YO(0PxTfYrEZv+Vm=YQ0uisXB7HRTbJG zWNaoz^6^Opl74_mq=${T^s9ny@8wHRuyH>>i8C?JYX!7cx%!&LFCJhU69{kzBt=Ra zHurxG(Gz83d-0(x_M?JF!o`tw)}@LU_Du@I#YMhLK9K)yu2>AzPVJAdjPp*!5XZ0< z7cJ69UtNAa8hQAF!mB~ILxUqPI4bis-QnThiGE-DLx!QTuD15^^^>d?lM3Z79gq6A zXE%?FW9cVb8b%C%eTk(tGd1mu<`1ZQ!}{XI%IXSNImZb1@GZHhW=niy6O)=M{h408 zya$BK@Mj-59%A~iT!o!1;^Vv2{5CIJOEZsQV{_E5(S~KV>Rgq-=Y^g7xiLPj62hBK zeZB{1+x6_+fH+_6E$%X$;M(5;<)C#?L} z*{v+7CH>n&>9aqD4iO>|qAPWPalX72Q^pbfp?vkUFzbJU{Wtvow$pbn3KPBfMbc+{ zyi#=dm1ASQn7szTZ2)kFP61>Q5N1Vl``D_R+Gmi1df1^5r@0GrV`SV75oaBxrM9tM zJ{Q42qks-ylR?^IousxTo08noJabpvA=uxxcj#$ywnhq<06T|PN5o9J*TcZtU7a1p z-rCNTaO(77CVh?Gu=W+sEWutpg!DBVD<)xcz% z^*%43axDI_-6((6nv6YUOaQ8){hz^a5&Coo^tij<{^~Mqkl&seKJoM4Lc%}Q-{tA> z=SpuN98iF`ss<4)s1m2Q8YlIRjw;to%@Rg3lCy{_xV}r0a`sc3s($!jZ~MXh)rJ+x zrhltyyV*l?CkF97LLF!0N5Tt4WM%T3;GA#8d~C! zsDd7Z`v?RZ3C{E@fAg`<}g2bsK zkllN{K!m8bp^lJ$#22sf4u7t(gXe#K`Spgv1pq4`HiMcvEFxB4pd2K7LVBP$(A`N> zLHliQ)AdTH!`vTsFV7Cw##VDlyLx(dW*Y)P^9u0iam&rb*1yGJ0DWo>p@VGwIz7zK zumqd`r$Rs=Mm=UDqCq(bf?qG}d!d6@ZZ{7OI*Ba_@bHT(0;bxROp9t7dF&1%wRBuA z7G@0sG$sb-08R#38nn8E4!MxHReuquJ3ZVD+QFQQ&51QOGD&zoC)#1pNW4Y+)_A3_ zGYNOG%PQp``!VVRw*!d-9@=%VPWTiR3J_G<5@$^aZh_bv4<_4!N7m9ZH#QarW7+)` znZ4|8Ve+B4Kk2xEbXDvxW!(iwZW{*@90TCVo3pmxPnhx<4GpE&Yjt%bFx?#ntt!Fp z8gxHsYCZ&jsdbUF`%&^S!^ZvFZ;2vTa?ig^kk!W_1RQ4rB!efaLDh}OV26qv2}eiH zgs!39Ug&b01l(m}06=)SLbG#oCoX(&9m!(D_13t(+GIduh)^&hKjTBbCctR5zgc}H z+JxLJtI%uO_CI{Ipdbl}%&r}5j19H6{>;y3qNo1?c9q&YYsy4;2Wc`&N}b8k9ycS6 zu>Zk&rpYBGC7GELFJIOV69(Ky5$Kwqn|p}{SaCRzvH#3g@>utKSGva}l0a~R@*4By z)zymfa*(IZ*1tt8XF|;fkfQ*5Kz@%*ca{+z0$xeH0_^!LFRa!*gRfAgp&NCotOHMc z4WH=wHGyC_7kGGi(JAutU!UJc^ouG;Y-BvURk*3z4RI|3kpo@W;ERGv^=W8JJE+#P zvXWtC1Ss$gE7YUc%|gomL74(;NXQg{mjr}@els>efw8gDut7cw5#A|y6P}zO0+=;i zt{Zx&Bb+iJz@4%xv?;I~MiryChmm zRcJY6>;um(sOf`S4+Z4d;M=*nUVt_&HufQy(D$W9&q!tWs)1(96cS;IJLaf@Dy;u5 ziMWkKXYU&%x{ksy$Xm z*wZcO5>BV56pAkcWz^MZPwOt+Wgl`fS@pq>0Ai3Yg*f%Su<)q+bppt!zdwTP@9Mj(X2&!Vg zf#zi>&ugmO)u*ZN4%+Qs#D+u6tF5J~+SN8}XM!bB>L+ew z%qW6dq{hZZsH_9d+Vm0q!eNPwM$>U1pZ)GT6N!~ZEWWrGZllC`H8l%+S1RGEqi0nwdx9Xx!qS~^P*@Zs4QzVh&+)%_tSH2TpzATHb}UBOP0fJ-a*9V0i!%HfT{!eCodT1vZz27jYaoH2Vzqa>Gd^}CBACGWcTI> zW@}qVC`pxh-(c|M<@>1_ozyT!A@SkzU(Z<5nn}O7(C@Qxns=x_uguX3R|%g{{R4oP z1i`vB;8qs=ALhMu5)+DcMbLJ3_ef3o_vd>;tz=EioTc6_{h^YLr_OP~5n5!7&a3My zvs?L@Etl32OXX^AYG`UA5lfVQgj4-LgXP*B4yvZV5JzrxWDD|;0KxG|(pn^^LobPgP9<`Xgh`~KfVn$8gjPyl?1sYse1H;R&R}Q}=%_9Fdrlj=} zVqs)-@bko z_;$b$0F?xwDB7q15;_B0Eg#S+vT;${|yyt)xRzKoyIMLz9fHh>M9H-y~sG=Rq z(ddS|(n|(N={NEGbbD;%M8|m=d3bVqmXnFq`-ifgF6XrKw&OE)ZqQv5#|!{$B-kgnGHmBp;!LAHQnIoSMyukJt92E>Un|mv&t1vchAdX6mx*MZ zIgi?F5NYTwb-$R>>5%D2ZVFxz-pyS_arl6I#r>Vb3aD$u+ac%>0-Dx&9npZeKdYo< zu)RId4tx3JRO5)>b)h}Br4aB+>+P*8jmyQ|!lzw9M`Q%dY$+Lu)GUt*b9^r6$EvN5 zn%4Msws)sZj5T@ed)m6j`r1MP^Ey3f=Z)7PVf)iOgo{C5N zGS5rvE@tF&lhb)I<$?6z1h=a>+uo5)?w?sshzc+0#gJC*qb*JulF`6kHQi~eu)|-K z-v-&g90Fm=E^P1JD(~90K@iKH}jkjEW&}Y>3{>aAC;$3fl zZ*-~gI@Mkz76q-s;?a#WLoBMfpISKEXw0N6`xx%j}DyzaV=Nc|7L4zS4jKY=ee`8 zYEmuyzcr;mnk$WlRSxlS94aJg{f6N^ph)YkZoIOmqt*~hyBM8f2V?t9ajT!`gVJNMek+>*nnFI*KB zKeAqC&U=(Vu?$piasVR5$vH9w^wPtR7VJIG9Fi2DBO}}Qtgjad<*^VGl;tV!`s?%> zEH9cgL9v1ly;C4F5n%MDj3CWA_F^3niHMnoVA) znA~N})={`d&_ligh{@dc`fR&_JSYWcdH;3-|HaV6S(1ftwZokod5^AsF_fce`F-%? z-#pIOh>>3yQ`Ld`0Z6mx;cHS;C;n3aey_{QJIVDEH2t+rkH|m;nG#w;7XjM!B1MS& z6KuEUj@XOnY+Vm$8qH%$pENveEm@yBTWd*vs-ZP*J+-NmoC{>~)$UvuL`ZP~J-b}D zNe^AD!S+^WXNAxtWM$L-g{ieyQTU`$Qrs}Nx{#g8 zX`sOalDTCH&^S?m>KB9<+9}2CR)V0Ox>fjG>_307`BVf{f_-M?2>S$R(gs>Rev z9-)Jn=G&`)E5101f1DcjC(c?W9|7`=>}()|xVX3=?@`?)oT(d_78Pr7I6K1@N_vz` zq7~bCBe>dbh3I5kOQ_lN3`{jSEa@DfACNaiZSDB=>?cpyOTdHt!Q}{P0DJKB{NC7mvUX{aqgH82)^EGXX*N zlpx(G$Rvw1s`hfL>%7WE$hXGBBhFLnqwWH!NneFi1-#SZ;$mc6`Q9ocJL3*Ffr^&$ z!tCZM|L#hlY|f;5R^7bM$+v)*gH}maATGDM!w7*LG>KFAoe% z4Qa-dmE>(sW*5W;g0pX_-;%=|oHi+1Pg1GnDoxS_Q_6ANqQ{I#7GL8HgvbKwrJ$nJ z&@e4I`4Lk3wm}F@FE4yFgnmSJH2QRaFZn)0rl+i+q5{3?@7}os%q+-Rb5rX2-tWB+ zKAGak(_q(gxp1wzaKW9$z3zfS@tBI{GxqGg>6d6Dh1N%BSyLK^yJj~|PH_FaijM9~ zUwaS&zKpTrr_|0(3uFeTd?_6}Ps#yrylO82CodjKM8R>jEB7?t+1zv2o{RVf* z=JIk*3zqfna*INIvaaPM4Gp!+#=;Qh#i6@@?7$DIc#5@Dz#*9Ul559y&6N#orS;p} zr=#-OEhU0E-A}7Z3sr|l0>bd{blgvD6U78RDCB1cjGnIk9j_{eJcln~%CxfDBPNEp zE;JZHBcZ7!%>Ahqoz%?wWWEhhAUKb%1)jgcgF0|8Y)BDD1ryg!ZX93kU&w*lwti;Z zzoOWnX{ghp6GUvBOpab%zLCww5H%X;eF8ws;;)#oi5ahTNa~NgjfvtR#^3fEr$;Fo zM8rf9^qPyCGj8BA_3~fq<~v*#ImYmv>^5ES7ZXd+;p_O-v<^(;3hm#$3v8L*V3pc# zjC13-_nv;kS({`rdNOYtbTj~DwBLSuU_Hk~uwsqCv=Q6Fz zpB9WWQq|O>)XMSjo^Iy&O5=<)Ye#%&+6vZSuenViJpKG%OQ)_SXy%l+H*?13yvMop z64q4;-&;0;MNj#dhVpbfH2Cu|7Ur38!(c*53uE?HdS6qm{c+BmuVci5(I;4qu91==g?RHk(l$F zF?rMrgm!S2D=RBQefywV;>iK}_B~}^i>a~;>JFUF(X-940cjUDxJoG5eB zTPh(N%G0XVYqOJ~@3?iOOJqH;9a4{%b*NccZfCnpljnjHl2xez$lzPSxA)Rij3S9u zE$`10w8yebO^V9tSgw10kcs~j&^a{zM_TjIrNPoBNbD%#m|WGJ^7ggRu8c~E;6M7} ze(9-__$-pc9NKL>#UmIz>RXv8m0NC-;#!Ip4o>k zjfESqP=Q8kEi+kzk2U`rtB`1M9HtbL=&&A8U)Scsofu!ktE{BVAg1$zmD%Qlbx+U0 zlcY)4GtHX!Chf;eY7e4z@7B)Wfe{EJIW9jm=X>rETx$78#)Z-22e9-q$B!heIjaA; zD!Dngb21xEFea!;8PXodyfnIC=IMjQ#KfkctUU9c)7x9*OZj2c4>PjXDSI_V#XTWK zMO-S{M*(dMgOet0{p~5}ipHZZycNzCBjvVd;becpKLh9;jE1gV=I}#6@oQL!gs|bF zp?|m`{vzH2o`|;y9K>ByNdy-wHt%5W6|fr6TJkp9Z;cy?o_htm)7VRHqSE|L0)uKq zzZDdQ2=`EiGCbT5;EY840$+chpT-+qMra2a!^ zT%7|)%gCO?cY>S@o{EZ%m!TA9~Q*X~EnO{<~M+}7ESYkYe?j8VR`r$>SMK9mKerKfACs}}^J zc7H1BFTQj$ODGRgtCtx=)MX)OO?|{%@EK!@GFV8sep~>d9SOA6U*B=yadvh-DG-BQ zkh;GzW;Dh=W@BTk>b4Vg9%wH|mjAkHW6ivn{rr`zhFE%0kL_ z`L+D<(PS;OLs&pQsj$ub?~wkcObh}>7eo9VtT`EJ8Jh!}0k-~IcZt^trW1Cly?tGr zP6!E!09Ux^>*9Yzso=d_ns9Unov3%(d}ZF!`8((^0oMkdOsVCR=ne)K4~CXCvd`Wy zN7Sw`U04C&izK(;X+M-}LY2|rvqXcF8>g19OMfI)3GK{BfbhXSVH1=fIa*T+7Smr* zxNE0c=60_~e^Pxa_bb0}WM?cmPcF`R|2Gc1eJPZp!Y*~NIodzinxKnHAd}ruwyd3; z;Hmh6cE-^HdD8_b7@KhjJ7 zbpGjPdiODf@A9(8qouA`_nPCd&^Q+Jb0s-TMh)(w(eDHy~oS{Vx_$iiNnEgFkBRO6IM6On24cFk`^;-AhqwS5iCI?e{bPtm@d8>2GbNrh5yQfA5)czGxmz7rnA*HUa z))~pIC?!=`@Uu79EaD_!Q7(!zwG&Z%=ID0+k=~x#W8Cc z`N{AjuhBmuTMR@zF1}Hzj$MNrdQ_P`ClzS+t^ydp)6*eOjPrX6~{x1?d56ZnXH5TgVnPsfsKTq z)Z$e4ME8vwKNw9^_Zfxz8ML3KC#I(2!L$l_`8S4!p9f|U-G>u35piK!5WMM=%<~)I zC9PKp8FAA>ch6O}wm$QZIe1val&AtMGtK(U@FuzrA{{c7RyTCJxX_AB(n;e1&FK|b z`e>jRUeI}MBT$;ky4cRqedMfgvCA+nRpGN6sjx76cxj=15%d6GX%2Y=_1i#nA^R^T zqHN`HC@X0eo4BS`}wASdncHMivcHcZGJk8V|OOcd7g8=UO+;f(I1)>7@KsV4LWK)&1 z!}T%3nw`ThW7&lQ8cX2Q?%#$`38pwuc zM1(4|mx9}g1rpZH?Lg~K<7at?59K!IC&r^gRqx4pLmy=0qgMe^*+t%(nD`i|0)=&< zI`8xi3~-=10nVl8T>)7o3Q9^6-tV42@}W)?>O(=54rx5hComTD)VhgjNAj0TWDbT= zAQ5WvzC;}qOypgetmgKq z_xtiCCpXvd-&?0tkWqI+hlxApaq*u=$9Su=ZN2{A?*Mf|!uqtPZKHkhe*`3{GGlJzdUVC_O@B(wKtKJlWFjj$@ z&k~5(PE?Md!^*!e#{3OhH!QEL=#D(9qCVj!`xo6nr3mWjVM&EEe`Q(9H{=k@kFvKK z@&?nOm&?pdPqCTmJ6kOBp^jvY;ZZqu^Re?jEdJET>A!+dHv%gwxr3Xeq^0Q?8I6z` z@Pk_I@PNgmKY5O@QtB}2=?>8A4~U4sn{=1hWV(?KurQ8M`A`MWq=B@+?u z6Hc4XgU^UkXMb1hCQKry=0TfSq@YqDhFs?+WoXOmTONl^0|OAXLUdA`k>P8L|1td4 zD>bXxItlng@2O&+;~x5N(-9BgFS}KcThROyRBHLuw{)}^Anyi$YGh;-C2fZ^05ycV zf2ByNzo~+O4EHdt)_`@!;M!Dk3hqDCKwNr2$zBmU(X}spu4mb5`HO|A36nJ*9lFyE z({aJwGY7WY{D++swsV;DF-q_4RdNl8|5Hx;73PBCc+7*h{Ykxz#>m`gU;%7*XK*LGvFd zTUn@dLjAo5?)byK#(Y_n4cy=+q_P>B-au_Sx6QIVvR6A1c}S~+=6zO__^{XVtizrD zu*H@?ZqKXIwm|DfX=!K<0WF`^r!w2J!I)gYMo!x538T!3{*t`hLGE-}V{|Cqvi> zfO+1Gl7@z0a>5`xf#Yc{>V?~C!RuQOqO7>RKl3(z&j5zbAPz4{7D^S|9=>J>$s}d z?OS*$Dk=g}B2o$x(nvSbDN+KGN;e2BI!sDHL{hp#Ktei2x}~JMyBqFY?tRX=_x$#~ z@5^WZv-f5#zVSTsnRCoB$FMS8UiffZ;73iDm(MSy9*^-#ZyzVOD#)%TyoB+T@xUn} zfX`*(Do!)GZT`3X2zK{}IN7@8V`f=Z0NdnKeE*(C9`C@C_ z_59BM5Iul*ySvJ1b1gkmz)14OCV4C?&sM-f%wg1vJ?>5piF41etaRrtm5Rr??n7hm z`Nc(Nuvmi01rQJEAJJ31dy|9@`4zC!&H+(SWb!=S9q>3k3LxcsDlSe14sS4I52{3< ztzq%q3DMOb5ozX5D){G+^Ll(Kh_R3x*lsXl1T)%JZ~^+>LGH%2d>WC1#a1IEBgS0~ z8v$FnYon#)dAx4wHC;*QK~L3GA9UPUV%umstK%8uc}|{lmFP~sO+T@&+n)1T&xx+* zkzxG0*N@jfhECP|#L)Lh7nWx|&)S@+SgW+k&qgu|96V+x4614EgHH<78DhEI$0DBV zuZ>n6b5l9gemJZ?Ju%leV&%8_t?PQ;(&}91A^&ru<~dxPLm(9h=(a@*8L3Ob0yUFa zI>5=LC9BV0Hrwwwsc*z0MdkS>d&wGb@kPsK0})@eTpzr!n>B4yhYFAK2t8XP@5pqm z2Tzg${TLHVm(*jvUwc-7URr(pRPC4MD!Hz)5eyMoSZL|!oPoAbKgq!GaCv4XNcd}Z zMu#^WzzD!fcTywFe8R982%W)vo@Brsl%^(Vwe-tfC6&<8I18Q0`l`$>)0a|NPwx$} z2O_KRTbk-;k32l8ROtGk^io!a-0PWdT5))u?`D6yCXIaD%<{af7{nC6QrGhz?Iw1z zb`)FKE624{`;c;l2=Tz38@0u-nx9!5&gQY^0oAw?aG{F5>o~jQ{CY}FV&r2e*`oA7bgs=^C@RsvJ2`uQcVX|uN3r*6o?ZsJT zVT#lt2EcdVLXY`BNdqKG& zc8-ogpqA+CYinatNes{VAy~VESCO-mQ#xp2bqKj16{e>*wJv*-b!~5K94zNnLlfKu zOjFFRCDfHf*t4D-gwKx!P1z0~wI=bHy^caRPMHBIgz5$%9x}LaXnx9m?Dg(WQ)0IJE=50}p@Q5Jni0C-qqaX{KpPKtM z!BC=Q)l_ox&=`s*Wjkf@CgYRJed}{!Pv^_tK5nP3e5Ks0=lazr8>h46P&wY_VL7OY zL$4a&eN&OR!=IsYCy!U_Od*Du*CK}>lh@&71}YnT9^>{egH5r^vaq5(o1-CcD zX}I*4FCoLZId>wrGvS&;9MoOL~E^Aqi3!&g3D&% z?t1K)e5^R^?eGAYZId=pBiVVrwh}H!+w)&I{pUk&6A=p(5FM6Wo5nZ4 zQSk7gkjsAEy+@*t0qc>P@ zT4w{dZlHW=;|~qP!UiqJY@at=(#1GQ!$YtO0fXpS-M5M7#Qm1)QIUp5RuW>>>t~gj z`I&puBJz~DzH)u-GjUm2nT{US%A28qft)y@VPX9qsb7PwU2hPPt0}>nC>0!%`Xwd zX7-w}rRO$ae}|L9>){?pc{#C6IHwh-#`S9Q%cWJv;|F6p3*Tc&gS@>ZL1Gg$%YeCT zUbP+U^ZNB`m{?2yz2{#y32J;xAc_tJ0L*4U&jTEYxgiaNiCqVWJPceI5cR~x@H0zR zB8~|^GA9FlAIQ5+Ft^8_+0Z>SbE^3^!Aj|W{W|uU18PGy?fZHX70k8k>>O!=TurJ` zs$#I>cP^f-#XeC@P1m!X!%_DNhHOTN>~dndIod+&?ar9}Vq@wR8*8hsbr;_ULQayD zX16&~KQQh#THl^xTHqwu{JMDD$Mxp?`XZP8&nKkXqn~FaA=rCxlhVL)s(xj}H!|UZuu&5OLIE%$k0j}M2N4|IB(d!#XXKwSb9S|ej)FrEVH;`g~OsFQ$l2_k1I(Y8orEa<`w z78nDe^lqpOG=xF5y0Y?1RV*Qb_tW@!AR}$MlRlP?=LO+AZf99cSk%v=P-R@>PYetU z{g{MZgSoj@gNJNM;X_#0cq{%lzz8jB48t2#eooO&zdIEA`ZUg0a?WxXtI-5Y8JHS= zciW|*Z2WLid@nL0YHx8ktv{tRR#9>C`0~NP*wN@{Pg0hs8X;HsWD<<;m|eOU@PI9? zBUVUKO|6l+Mi+FbMMd>bk~c}PB=2Y9n_-L!jLs77UE3&FeUZh_2P!lIR`%l_7oZw~ zkyh)f<1jajOv0$kIEOnsMTJE!g4f_zSY5=bADz;Rhtg%zT{uM(Iz3^NHE#t%dPF&^ ze>g+f`g+Ht%@s^i6&;;~j1*HVQ=Rb-X5)6El%mzbo><;J49>BO1y!B!X=t)MWM#|9 z$l2W5(<*v7IIzs65W!#DT`w)&DTCYZcpf_Yb+&n$X1Hps%;4~t6Uo`)*(Fv;e?&+T zHDGP^hH*F?jy@141I!f)-!L*L=urk{exjhK`smG-!QUs2+n^(ZGH?JPd60hCS?X(T zYx|l)c|q9Kc5^922#yeWR+^)fnOaOPX>y?ueh z$QKq&9P`$rK7VxL zTw3wtc>a|ROkZD^0ql3@X;LxH4K=}w2=>^JHIY9mEZ3|CgE8q>AJ${?DAXb@^&1Z(=*b zjCK61tp@tSH#jsvJXiT?|8K$u(6wfJ>F7w42xImA9yphT8#h?!nGCi|ezhn;IZN#x z^{mL@)%|%Kz(wFXGGO|f0<;}~Ljf_Tu<)4!I=WYpUSrs5_k5ye&Uu{2!Q$NaFMgtV z>TXjDzCIi{;Y?ae9?w+``(C-DbBbG>xUP>UURT6>CdkHKXb2@DaLXxzX<1o=p@ugy zy3gK1+w!6Fu^wsibAC;1EM3)TH*f@pKfTZkj{pZ|Ps9vNOinB@1da$Zj{RpBm^U#(te)Ui& zKyWyU@W9~C+S{JA*0c^Ot7L!m8JDn8>3v5|_QaOF4gL(^#%55|UUlAVt*Jph`73h_ z5u?SP!pk2F^^J+0@4eiQD|bG*GPY1`cGve z`_M8mJ!ZHCuvk}{M?@Y+O&;?yen8@qpifqSF8W2Uhn|fzF>X6=QPp}A+^dKB_EpP4 zs1}BbjdfSqZ1Ze!%qi$v=x4m4CjJWnw1t}<7%Q}DO=Sek-u+-=vM9IMy?m0GA~Ppb zu;P3Jj-1NgCAisjCK{U9LS6i}NCCvI zs;c8Z=1VNq}Xu=pGn^}hh`1m*b`9(BUwbXachGkn?TL_G+4!4$@ zD1$G`UqGc!E6e@n%X8W9E?+K3t}G2uvQRRLj#(_vF|Jov8mxWhSu_Q^@vnu2_D|wo z5mz0+OWgoo!u0!~a+giN3d2>yAW3Yp)zwL2=L07Xov||2<%_PD3=EAP@Sf;x9v9HG zKmMRlVz-TaGGQaGy0%qM504R+?{f5yol-XFr&M%(RsN(57dARFif^nnI!Y%VD(%~O z#v$w6N__*<;`uBkq7WlIH$_rc8n7s@$dVHgLQ!`xGLEO5F2L%#&^*Auv^*VTZQ|b` z??z=|`Wv2?Tr6v(4-mt!$+;_D>|Uq9RrP^k!R669*8x~9{IM!@G58N{cWJV!PB-}u zzXN@6J|`|byg86u@Qi!bR_SSeRM{OINNZ+|gpN1VOidR*i6`{TL&aC+=OcJBlXUOw zO`YJgyxla*tt$W`^rq0Na;Q@L>h2lEud+S)xhdBB?=~@S8jJqg2f`SKM>>Ky(3YU< z0I(28(L?79N)psH&C_g?a36Gu5q%&uH#v9hvN0}6TU1CWwhz8rSbBsFq5slM0 zIR9=BtE`0Mli)HO?5|VJ-7=cGv&qcoh*JFv4hwrqc+AxK!C`x-{iNcg)VeK{{5tz( zyfk@!=auBdM_uW6ooB(Yt3p7TJgr4&e{Gm%XPOGmqIM4RNI3~H609^LO_6d?YcjU7 z3JeWGbTu3vKN~HLQ-1bzpRyA{8ta{R4DQWl zo3%;H&i1x*Ym?qU73?Ebb(eK(!58D4=~-Jx3z*dqnG(T4CT5^_FwRH9|Ihu`3D5KX zPygz`vi-XQyCs=b`1X9&zj1oIo`dl_ed(*0r z&j0DUp8XDw&WJPxf&k_#iI~&3AFz3xmY#@6Of|;2R~QdilY4ud$f3bFAVo_@%hTxQ zKh0A!W;zQ}r1mN_>BvVsFot&GK5QB??DgxCN>6KTGU+N;L zHiT2nX>E`m7HXl-BPTb?^FC3n7Lfcnl8P@{?#qf|MWEVel%3CD*95Q2fCGSY91OB z5QKhI69I5b^6Xc`Qs&aQ#~7Q-ipe28De-vzpr{Bv3ls;PLU$jd`BCZ31DUj}Q0 zM_pC9&qldF`JKk)TumRm+`K<@(ir?O;HpW$5_VV0)FqXt<$A8qyEZj<0Hm1-Fh_Qb05r-L`nh-Uuh(%&GDPqQ zu>yO%S&(k4P+beJi27@-(^j!SRi4xHH^UyI)ppEVQulGBe}3{OWa?hBc@;MIqaMTe z@1|$CCv~DBeRvSj9bA6BpI-OSI%5QBLS@2o&&1ADr!@u1UrzE_b54&Lbcui;L1&!M z`NpIuh&MvXA0=-J{+y!bWw(*G#VZZGvS=k`srNH*(njX^c3uE{3NkR1I_m1Tmv3a# zuyN^9heQ%hX1shdr>N7C@tc-d^o#I3qF>{gUtmrkXo5*P24xha_K!KW{%V2tb|iR8 zhN^}lwaeRd**#m@9{5?i9_)Q9%>V3JlvfbRukRNXWoDStRNrpc9&TP)Q8}Y)>r=MB zQ&jYwngX51dmvSA#)gLki_6J=BXgtA<;cYWDJ2G~2ObwZw#cBOfUMa(xAv>D74q@R z7Y}iE7l#{%8vJ}zR8(E})*hVq*A6OfYKX?OIyd0EqrGX7>5hN?=4p(qu!RFprklCKVR;c6MT0vw2~OrZbJWo?>f?YI51B z0psDvq|{dIhFtlU<%ovl1&YM{>xxL7gaT3>CSdo*T$VgDD|kHRB3Ge8w~NgC(;`;J zR`4vbHjTHd$!C?-Fn(3kTCAD-?R(snfa@koe_sMwOkCka$NYD_s0RkVqPfe{;?NJGy zT&Rr6DJ(0C9!CI_?Q6pjh#Lg>ez9|*1<0lrHqI>_HkhZgo;LC~1(g-Bw6Cx#s@D;S4HpxP>Kq&$IR)Lfzw~#4$5CDhA;3{iM>HcHSB} zzWZP-gL0xBDhjS6p{|v zMaDXB9W*EYpa32NRIphYS|*X%pQvsY1l~?eRsI~sEg%j#rJRV zdIN#lr!JR_k_~A~#iZ4~tF4j>I29IqThB~RA38fPKh4Hi!TA^(Np)@pX&yO)hv#1M zpzr22N2@Wc>m*gyoq|-8=8om(L8qs#d(|$RGDa>9(GToA220C>9rfTNK#=Q*U=g^- zG}#ckjOLEMayq+jJe15Y<9xg;uG}CWd|Ga0@PA~GTOqrnIn-@g?~JZ9UZ5vWnD*^_ ze0#6Yry}1C)wG+;db)C$JXg!}S2MT=TF~vnFfj2>1OyzQ;X7UKv^F*Uxlvl9d8;uO zdT}oc?0ltE?nUuA^J1;IO0Lfk7!1e%^h)Ybq%C}{gBsVY-JdwW!VlDJWUWPE}F(#G(r{qDs5Tkadp z-eNmz-s^|1hnr3n5@T;iqDTB4nTT%Rxv2=9tXbJGY*JP^HHH1}8F&PiBH{1%*5+Jy zCb}m+>K#Txjcqs3iNSuk#X9_xbGr@;iqdp~b|NCA^Q$SHnMc_K3B#)VWb5FZ0W?BD zO~4+N9SzSii;Ln8kdftKkNo*lq-OE4-MI0Ls`v$UwJ5FH81f(H14zEg*Z}OfJDzxQZE^&0m;pBq-8`O3q>52Q@)>q~ zZymUTP5$DASz>19kI9$UG5qlv33eY+D7`G78Fu2Z)ai6>juer#ad42Ak#X6WK(%a8 z^aipoG}d~g33*O)PDED`C!!P~mer(qQ@wpNp66%R5M8(^^v_tN!5i|z4184`e)3ZQ zBn*-b-F8RS;5ZgjaTSR9clziaPRo<4XY~BB*r3LsU(9F$TfwEMi_WuI&A`4(Rx-7E zoa4JF6dJ$sHM&7JHY7CrAbOu&0S1LMBF4)+mVYPccNZtEl7b}f>R@GB71`%;CMs@{ z$J2JdWIOSnz4rHS1tUl3Y5=GKfeE-Fu(*#+ZtaIf`UgU!MQOM4b%afPopJ@jAyJ7y=a)iNG$0fB3 z7u-M@85rO`09t|ffJpx$M&WLFL>{bopnsh=-}~^g*o=Xfd&q@&j)`Vwuf6*;e8xiu z8L?wJMaUvkg;)|kd%3FpivMTkdBl{l?q(^Hz~W~2^L6Al-gF2_^hy$if`2{7bMqfM zFK>w?*r@(oD%RD-CnPpDwIp)B|EuYD`rT^bv(;IDHHv;Q2Df>6g1)l27FJGHtR*ft z^^I>I3O_(4zFe)5o0SF*N{(DXR?}~EiCE3V!0BKS&v+)tu}`{rRVmi(zsP`3_-_t~ zu)VuA1>A+$STaJw`IVJ6pnM3EI`QW`k=>o@D}4T@447M8N+%5MK?--Wl2RK0PO-oK z|HZsRQ#W=F3y5i-AyNj_bb5MmCMzcMDy`+&RjTurf6hi_m=u2zc&EE6Set8_Q@pf! z>15d=h812nY4b)BJ@>k9cG~$k^McEtj8%mMBwm29-bYx4EY2C#k_;dPG6+@gEhZPo z?ukj!HimXcIi$Vw1PTIl#S)x_v`in9FU-vcy3;IgiR(a#xH0+RVXb% z-Jq)4*O9}NHIQ5MEguG&)K;d><$8~-!nd3c(U17bdHux_qoVErXYwe_le1M$voU8u z*T)1H+Bet=1u-!LpwkUhs-4y0eev-8i-dl-zj%Zx zuc;jD9Wj3oxq=X$wgoa1r1SIt*96sxk^rr0)a70FDZ7cvlbCU&<3?1a-d^JVnANNb zz?oY-ExA*5x2jBLLLgUgqHgX{xU%Nflw5*86TW?TQZIXp-joHTP}T&>xCC^! zO&23Y{9huGRWD~{K+`t<(Hm6wzA{L~6OPLquuas;D^+KZ`0Mp$&L55*imM%4rD~{S zN(HjhGEhOJ_|;c0Z^u71@5AatfWeSz~G9pTkzNQC`nU$3SfF#-DYk#otrKMVDohAuL z8ndQT7=I0^G+eG2Ty7#X4MB+D=2b8YfZAe@j+2`6g#&k1E0?52mEE${a?o(0N0j*! zD%|N1PDu-^?t5nbf7mlqhG3pTQZj98YkMyd2Hqi!iFy?r);*xi$rHu>4eJ-}>ub-= zPE-Ht+sA2QExYKydvDNAi zGVS+Y?ql!JB$oUxflB&j@X0G`40?a*9-6e2)YB?gY@E#lH)uiBTzEyDO1(w4HeTuo zO{vMLcam6SkTLuEW^4kBKdw}3Z0o;xCw@0L`Zy%9NTl7P&5WLNnzhl+zFL-5GF}Ob z^@s_`)hTn??;mxxZdd-0&+0Z^a}RCi*hWAoapdUxvb)RS4tcMx^Mvslvij923JD~B zJa&+M?n=KT)|)gV3D*J`5YVm(PJ0jgw(I%^zLsSkZM>>8%`n{}ANeZOaI zhz||~UEGY8T(#J^cGWUTPD*vPOtZC-et^~0(!z=3ghir&KGJg9me5H)S#KhNi zlP2coD28NB4rw_IcvLx@KDBzhmbwv8K;2=n@ku6lp{5GWz4D|pj)z&uZoT8wr*9G( zY-Er~m&Ky1-p6f*GobMXhHrqcyu382&=f&^j}l5M$#IwNr_juO7b)F zStsKZwi2TZk2=edhf77)Mg4*WtZsFceEXq62eU)FFsPbcAc{_NES}&$6Bk!KEb~5u zi;RqW1$zIpv;5lC)GwSSzAa^%&Fc2)?4>7bh&$K&oINss`qd-qc;{zuQ?19FIyLXs zfvkS48}i^nCx?QI3{cV)R&;J-}te^%NFOwV2s;P>}+a zbU(lAWI>I*7=>s;?$z7vj$>N+EAEGrr+oW9O@n>TVp1F3ZzM&9bP`QW4fR!zZ7hFB z5sMCKK7F{7F zEpjgay8UK7UpS0v_?Vmy?ZU{%gJvz=PrUlYJ3G4eUA&T?UH6mr0T}Le4y{b8OWZ#j zW}1&ICv{(Y{Rs!GHGwHo!MmtR@$B0Hrgh_5uw-D+9j<4GY5|MSTjv;w7Ky^wbozS+ zC=)T4Io-|{hj`IM@woZ;Bqb!kLRvOOiQ&;@FV3c>CtdXt`)j8p)jCfBRbwZ9b^Uy4 z#TV6!pMO22h6eFc<4!U^nV*jx7kkE6qq5|xv&tB)=)LniAplGv*1~y51=BX&(Ua3cs8^?Wj$djRMN5JYNbYzXWIdXbac3RVz%na+RCaLDQ-W*6AVgj0plR*OH2|s z1C!YVIy!R;SoeNgB^1sIQT?oPQYsM@hf0;;yuA+aYGDb~*0bam<-a?i!ws|!370E4 ziwh=rimNn`W(Jp)y+5%7sf&(vN4mwm!`8-1&YbjbCTGJKQ0P&d8y}4jK_%m3vf%UF z`%Lh2TsX6Jse3DOHZt_SvxgSNvufn&V0r-~*Xca*@b96SxfvtFvjX&u$y0AoSKPu0 zomY9>Y{O`_v2o9PpPUJ9ko>ITbpGfWr?Xj1G&rAu3^Ta-f($e2h%g^6B^Nx|)&~}@ zq*X01T+4-^A_^RX52 z+-k_qOwEk$5D=wQRBWBhVvKoEu04vbP8;vS5p}S4Q2s;?r_}p=L6}jlM=BV2z1-yQRALZ&TmD*d-1-6X^V6q<8rg;YKjNFj44(pOJ2!4LGi)A>XClS|NvE@~(N09e8Q0$>*lur68-B~^S@ z&Qs)k&-tq3Li?}D2(?C+{hb_KRkN#?@X{1qVC2D#KoAGI%^%{}W9ue;#6m?Z6Ux)d z{lBzsC_d^_<+%8&;d7+2ac3O(&7p=v5)*&id&tVM+EW~qI6Th`3@=KFpargU&y;i} zaaF2#&xy1+Pa{)HX)(BCR5PE04NQO+*QUSoz6f~#zAQH`*EBnz#!UIs%%N=@zeoP+ za<*((wY9!+k4TSa6>CuA7jB2dVBb6yy4BV3`H(((6i$1592F7O%ay1VhY%WODr)gG z=p47CsuLKGfT<-H&1aeq4*j?dObiwX7dj_xKC>$;sz$O~e)5f!mUjpUFP_g2ZLQL& zcK$JQEs*K)cVhZ;9NN6UDFbU5+I_V?^;5rptN#&{tmnn3k}d=G7-gr3EQk*!>U zVz>Aq0LchmLIzhiR+#00ld`wJf2}{881|3lJKv1vrCoFNw1sbiPV;D_q^nGO+99~O zof0wHdDJVBErgSj8!y>8IH24Fm(-Au5OC`NU>T7v>hVb2>{(uM8WHrfna%6^hEw|b zymc^8(~P`?_|-Ze+^Q`To8z0sqEmnm9~P|Gm**H#f0otA&`W%-?@I)SVei< z5zC8r&H^fXn+42I`%8`RgkFb(f$3)$EQ^TnL2=>b(F3VhhV0gN5*C>cS`587Y35AN zq|o_LJ<*;=o6Gf}HFgsWe_mBQ3C4(kUGnBVCKlR-)C@?Azq{RMCjfIM zb&417EO6zHo*<`-vw0{A-EZBx1=K%4r4`}?{|w|{F$KPl^XTntx=Dp*vVSzJ&PyEs z9s`jL&^IAy%29{P0Bz>bjh_|0%U+Yqx)fO&I5n`x$d}luW3t$7ty6wD`rca8PR!(( znI9;PoZ0gD|=fdXjs1@!4-kkq@ z^nLfV1RpogO+_P@IUv+P=geZ&!aIm0CpCw<+5jHJsH;6d5mh#Guhq2*He$HU_nAYQ zk>@3vfK68FAy>DzvToei&DE-Srl`|R6CVU&V`})odoxWTmO8QO)mdL3hZ?i4Hq4HG z(tzqEmfu5Wtg4E$#ZJU~eqy2qv}}}=fYSgeE^2hAZ2KBv*&WC4T^ukF^!yVI>pSwj zU&mWyoxQPty8jDJ8#4nKT`+#w(*vSkyrD4FXDBO}llheb_$6c>kPQK32{{l&nfo;I zAkzT`!o}`?QPE>3H`W>Hns#iv`50)ZvmRqmIyaGlF;Pzq^AiM-a2NNk@`77o`M2>&A ze>5KoHF($@a{Dic_zm!DnQLGk2_}-DkMWd%`|dX=6P9MPUZGv=6pvZPn;^8CKdT(x zuW+mAh!Gs9ukwdh=>M~k{}{q?hqe%N*GZhE3kJq@<0?*=>Rb9s zN?Xmxt>^1?jxfrAs|bBxPiD`@r_3JAjEvexW0L-3nme^Lwi9{m-o;;y(oE1;dF`nrV~8EfAsTly92Vg{I2__c1AJ@k(=BmseE4(9wtVP-ZDuc2?? z;4r!?qpA4xN9=yrSS8OyK;9VYsAb3=s8(I%^!lrkok1&+~3G?AbrLSjy&}26pzw~Q2VTgPjIUl8}kNc?Be!J9v)PC*4|A0 zH%)rEa>Aa-ZbmlF`wXa>R57b>%lDVBG1ozD5HER696?D6IZTF$3GyYWB~sX9&wCsHEq?Sns_a z#FMCUp*q^ac*n}Y6)KaWU>8T%F=IfVr5vFVA)WGTB>H^Fz<9Qz%cl#~N(49QA9X;4 zc+cpzzL1(d0Oh-hpLyh9A1-QotxFm;ri8gLJuWG(I_n>*dkO2tj19Lo=?bt5`g46Z zcJ@H&=N?6zjvxqy^A%Zz7Za-bcpN)-evH2-a|FK{=brZxa!=~O$lCZhWAK4WlO)a?tBt%sLDc#Gfp(hG%eA*#SXeex?)kY1IkDL( zE3@_3<_7d|9TWfY19;frhzW#QUaG{8zh(U_AAx&RrHQ1}!W=1DdM6lZwA60lo!Q zRIypZSv0p}Y!cpu?OZ|Qm@Mr(N6t5KM%6vuIeg@t87Z{``u74z+eWai&bh--BJ+Lv z+zF)C%O-@-pOE$JT9^Q*3{)lJ;_s>i$%xSOn5hoCKV0iMJ>CUHGnzn&rKP2+ zFDq>JL_mCykhp3=$O#eGS?xKmGZWl2PmGO0Hn%q0eRMD3^x>aa0Q6lD3PO#;L4U3O z-OmMqfjtj4L%ij?0Thf)Uk~(CjwS|5%TiJ78lW1#ol>iVlK{Bv!gnWLZoZWB;;bF& zcLCPL_f7yYfDzz|N45Dp)2rMJpFqEo&2yL(|)xWyCnXJ!I*B z!Iq3@ebMhj!^2^0A(a|-7^!kwWdy(zsJE?Wp zX+rLq{_=akPXD-~ZLO>kTwQz$m?C}4&wmKrnRu$u&@jszK+`^9~)KFxR27lyFlaeaJ3%g)LQln9TlnQQQ!2nVTFT8+FtE!FQpa`2Mi`4sW+ zRQP^)-Jdj<8Nd3@-H>K@cvtJ0y>6vurAdki+a&i;=1~g6-F*d#jf#sb91u;s6VR>F=ec#tN_Ds;Z6x+GK zD-8^{uLbtE`Z)T;l2a2Kc%?KA%+0eB6F-H90?v_|l2Xr$g{Ubw`+evaSi}q88Zc#K zP=g91NT)4~35}tpAu$yOIwR6#yS!yHuIF2CyNbs!KpJM1xLBic5#LX&UhKXKUOv{Z zTbqY&0Byq{W_0vlU706`KqEFmK_0P&`g)>b84AiN4;gCBRb8&Q;O1STC)aGBP7CsF z>SzkH4J^upegulDku9w>5wf2CFD^hGFKh{fy&Rlb{IY8C`YFa5ij01pa(Xc-c+DLx zV`a|f2Xh;pRqBJ4l8*hhyzhoH9DUNiydz$|Yxx zl>pVe{hmYuw7+_jv7mnoLa*E@M- zi483*z9uCp12yT3KVwS5X~r!zg)z?6$3xoC(Dl!hlO6LHHcVSeb9gjsR@Y;9b z=V^L=CUTo^d+#wr*iD>pf1%IMn(KecmQpEX?`8`yKpWMxe1@JJ4|n4xZK2Se%sVbo zE=1yyFgkQ=yed3%o<&3TGOQk8NnDt$X1lO7VX*YOHOE-PaB*!xSKWA#VTQgH#KxEJ z#)t%z7#$Ciim|8ci;dV({cjsA)hTJ5e}AtaC(?TPf!jP`U>RyxqP`OJBITYv8yYQl z#JGMPCZ(^0-S7-=oFy%Brk!2X@7Lgc2SYeO^Xz+0nyh>FKE2En7Qh4+dxv-`-D! zKZM>t{J{SrM!rW*yEjNDf8szF%uR2g`)~{2j@f87KQxXBb9-y^SI>YxY1*`Glgz>D z78%8no)c|QEBqIEysMW$b>&4K*seDIp$OiC@nGia${%ooSLPTShO4NVXQqDx+FcB( zpKePNz3v|pyWVub*|sI7h0?ZCH8(y}s5C6%CeX0x3JO25H6Vv-QTMTJN50Tgl~W;C zN3xrSF$cCM$NbwYH8w5oabvWxAACrp!;EMnL%&B7bSh;&03lR#|k0)A;Qkx}gY;pr>q4^HuD<2-`7)tp8V&aGiB-t%3i>!IUp z4-6<)N!VCmhDM|bETm1mLHG}bTdPm&F)O@?FMIh;sUx2{U0uD7K>X;&V$tUBH2?lA z%n%f9O^XqvfyltDbywF-V{H0XWOc~#8XH^O%>4s}hJyyNKq5Sz_sDmuCKl!=!_X*< zHI3n9pDWc2`_;jU4PLc;$Q4><<}^|epZ0!hTKg~(Gneqb5=k>g>cYDP=|VgN;%aTM zu3CJb*|mEx8(ngzkOSlPRGjVpOFrWAiZ{-SJh@0SUK7F#T4|rkC>64`pY>?5jkq3s zaXiD|>aUQvckdq1Bh9|wF|I}Py0*1z8|^x5^B@eog1zW}a0!K{bemkgx3{-fDC(7e z?a{Q*vz=GoNsVWjXsEApO7ubE2%j(PlS~=Ut+VQq3mv?A!?>1)%;pY+)ru>Q z6Ml*s)km->->zoLDlh+X^M$doB;Tb4;#IDt*4|EuqYvrkifQu|M?($gSr(azq?c_R zUf-n+q$4}r$?J4<>rNUNrLUfkxt#UQZC4G*iuW!V3tqf&aWyB`!P_%Q8x?)Rt`M@6 zeI28$wy9-an4O*36>mx75hoVvIJe*56etf`_q}?Xl#So0a6BEsrMH04_Mmia$&b_BtJv7*hx2h@5%!qxQvA4J^SMR( ze%BX?pFLQmPlv_@jYrWe8{|;02Z6YCd3wO`9q4Rcx+HbK^qXHF}SP$!9+WhrrGXp=ZkCp?wYO__b^)Pf1F<+gff9IWz5eWx3ma-g_m7 ztTNG_2R;{9*%2aF^JbGltm}E~bCHy@ZTUDJvhU=cjob{nT(1oWKYsj3DH#~eZTn(M zj6?u^?q_TBw!!g(A%asqp?&8c+lBP-w`zXrom?y-dzfL-kp7b>3D?vcp#`(n^|98D z=bMe>tgNgc=EF7a#Kaw8(__1%q=WLgoG4W3_g5x z6Ob?%?;3HX$6jDoP*5;7o(C-$<+QfN8xIlRaH|9ZX}*+Uk(kAkUbGo|^*fglAk_>hR#o)&d$(IDq6 zOg`o^9hMwfXQGCPCgl7nzBVuV_vhX5E}bmgKrqM{7ytzm>`9(v^+B=$Pa7VO-1>p4 zqGIjzQ+s$t2!zq)X|-{fzS&zD>=_)C=DUQbF@ebvU}}alXe4%}3%-uT6|;*feK%J&Cwa0%v-b-Nwf9C6oBJW;ZTwL@gWbQX%FHDkyDTv$mW`6qO!PCs?i@{r$3Q$PUzVK$Iu_C_` zeaTeK>-+IiS8y=-R|2tMSOqoCsBd+h2}fDULI?dqBMTh%&ydI>IqKGqj#wT$BT-Sb zRob3DK99+KU4&lL+5U9idhygtQ(=wZvhMo+u=>jeh?>uEn`oWeH|i#um=WK|w&y$H z2OA6PDP1T)Z%}O%`pcT@dilc_ ziR$T1^kyi#ySu}dN8E^QYLZG(0zJX_r&)M-cm?_SCWMg`po|7Cf0a7A+S>B4oNBrR zwk13ZkB~zIdaGw-^yjW$qml5R#UWnZYMt^&L-g0z)lqVBIW~Wyx)VSRX`g_A_RUK} ziqvWQZH-Vi!>&fW=NB*#91Hvte&n$BND&C`pnqPGsZ{LjpKmJZ=s;+Ow}U|BTtmeG zme0Uh3=f~5oec%KN<2JB1!c;c-oAbRKA!>lk;AU$dWhRs-Bxk3w}}4=sQ2J~!e)dT zl;FBJEHc<-fJB4WyD4Ghb@+&okWlQr?I1G?pUS1=fJr#? zXs3D*HBkbW5~nHJ2x}Kpjjk$^DQV|*ZUKiv)>s~+}YLHgMt9IO$~>wosIdT zS%P-A5NBN~_qjWsa!zDd8VEUEk`yqgI^`>3lFF$e>#N~3cUR^SN5r|3g*te^10QW6JC6iKeqnr~~ z?LRFrlTR`!V2}LzE>KmvVM~_Tz6zd_AV4l+kWrABSCBh{%aZ`_MXS}0nxgr7+~;~|JzC`VqK ztvBJ_d$n$EY&5mEYv&vIN+iK?BCVi6cf@HU0xxC1pST^x*zs2gqJP}-hr2gAoCQt?Mmp4@EB2YiP&CJ>1M zi`ydQlUmQziF=HRw^!dad*pR{Fj_+B`N54X3HV)r@2Vk4PEDPgorQonJ2%(x^XKQV zuwP7fEPyKo(u@3^1O5HKtWfI+Qm)zq!>efm7ZF0T5v)m)>xx|cu z#l_vuOwGPR(IfdT`;9(tIIrMh2kQ9KD<0P=f-bpWIh1nWD>6Nv-Qd=2xp(gn`$}MEt=fejT zx=^?ev+ulc{Ls_;BfGuo4lWx#q7I#{-pS%;_d{O2kqK)_=d5})Agv5uo~rtZ=os3# zH7cRB(YRd=C&xb=qm0Kc>hn3y%zhNBAjsv<%_FnzA)x410+C$(oxsxjZn8Dhiey49 zBE)UHMq4oR?r3Y9;bx+w)E}#GhLQlDN6W{1qR}xiJ!>w;P-VR!#2mmKCzx^IgL9cgux2b{K!p8^hg)nN;8O>7w6GzC;-7Gio@bSg2 z!jMHG1S}00ayNGA=*lS}JJN62BWOFG&K{6#tKaSYEJwt^Zl zd929Wq@3@N^}Bi&D=VqYMlmC%-Vu3QeqqY;2cy@nw9r?twdCgfS(yZ=m8tgxAbgN4 zF!)cF#&1`xQXxih?Zyp!@jO^pNDSd|DS zpKD)6DF4}Sv{FF6Y;A?Xo|g7@@V zuQpphYB7bk&Z2hBSCN0n&g^4A+5*ljkP}o0($G;RK`^M>s|f!n)Pt|f<2Tqt6~Q@J zsQuP8^FPx6uiYjllDl7ERBLya;8H?r>U)UVs2{CMs82j;_{VcH-J=ff9Q7lI_a~>g z_D`qXQJUikpyY|97xiB83b|>Oo1^{76Is;$L=P1)2?@H;7Vz}?{wxMWtU^P@%hSo> zW^TU+=yJ|E7K!1Na8z`(zIUnsS#=227$0HKuN&)>cGKUdJ))@m7q)3mg- z$7#x0eTABc8>H3@o_4KUWMf*^O?Nj*nW9bqs*2~XqwX={R)$KMQF~Ndn_S>D91e5s zUk3V($i{cBprhl70M!vvJoP(`G=j*ZWn*{^6a1BTPi&V8@A{!a2r8)(b*a>W92+9^ zH{?HM_Bl+nv_5dAgs^k!wH@zQ(}zmIcXC))RoZEH+=JJ|v&R*EXM0ku@o{k%)C?um zutQ*Lh02JdZdM8)JCOt*A0Ju>)ImXDiOIK`n058Wjr%2Y0ulGsB9}k2@U%`bd-P{z z%a@mb3q)R44-{~~%t01Wj(Gp|g$I1F^&)b*x}Llf3672)85xNNxh20$BCcbpME9J8Yx+Sq#D)#lI`S z%a7to9by4pfTg38tM+H<(@W*q?(!_F=NDF~2X5{Y#hwR+G0A@_xH)u4MN3h;+Efi9v+CdJkBbYyf&WT> zc(Y*dK(z(Mw@zzhzW|Mj%d0ffm#6nHBpEtZ%cx)bE0hZT*-2XU4Gnboey~D7T=?MN zV0E~-hlygQb2BS56AtnkXHHyVV^`xL0WA((|1*b}Pe6s&Fq^ z@6y+lpTgEcc$xo+d2QJk5435t!3j*^m)fQQ1+@GwAk(Nx$0N4xLhNT8Mk04%6~ z?Rdfef6?`paaBcMx9~xbmJ$V|q*GF*1e68^L|UX0f{g4#o&pUuwVtl7Oc!u89p&=+df?)+purV<+^s-lAKpH_Py-O#1l*SerE(0KDC8Y-I)3#$Sw>Fu&_V8Xtw_XIsaiQ80$6KAhM*48P=4l zmNJ+|K}YWD72Iln*&>1OMG-t$d(r=_-H>+kSY3aJU+Qe=2j{x{wDrU;OdxCSlK6*% z^&T)46&T+m`+u`f9>?|Ij7^~50|T@W^}ijxA_>IRWfi zDa$PAcf0|?P7lyz;y->^UGx7JqSi}V_^lb`?hX+U0~G+!Eq?gWbalEN$*ivS#p?99f2=lJ8Dgu}aLHtX`J2ErTH+Ow-kP>JEFL*y| z+7Dofk#T3qn-s8G`I(s)SK9?H&d!L-b$~nhnwOuKx68Y}J!95TcQ8aI=!M=I`{>(L zuaAl$jXMgq@E5iD4>gZ^KZR5u21t?O{gsC0bH@iuG-7qTyU}d%>PzHT&yo`n6*Zf! zv^ZMr5^=r-lQ$(}-@bYK7WJoj)duW;Z;4=7F>rro@Pld^WVm1Y99Z8U&aWn$=0Btk zBq^uYtstCeK1F~Oe)=D#M{w8%2nOYdy5=K*_<*uVqty-pQi)+P@`%LE86krCFP^^2 z=B}V1ER1}k0k#DuxP1eZ5wI>6pQ5yLkt|lIgjrpN*@Sg?H(=@IepJ8fk@GFn3{m1PjfBNjv_} z*p=w?x2S`JfsxS}46p=R>Fd)Nw&;{P#Cj4QjtMqrkw^;@l30MHzd2L9}Dj_ZkzaD0J4mr zlaB6G^|okU%uWOmlJp3qmO8bC1t%v^6X{m2MX21|+%VnBCe_wDk7di>x|FGy)s1y^ zZO-z;qWI+GtO5D^d%%>tmHzd>3dWiy)A-7F2kBGB_}%o|4n9^ z{}H}CB(b1KB=(Dd%5&kX)@t(u$;Y)WDL#JAQ?Z`kt)D`Q7Mf0~yA_|nS7buQc`FR^0+Oui@|3pUj?~b5D!ti% zSb_zHe$w8th!umd#9XDX--`BxWvmp`0MPXcWWWbB$IHtLR#c_JRMpfpUm>UNfGlVQ zOg4=gN@c>Ywe^d6+Y+h4HSUy2Db#-ztnEQf!ub{N#q##nvd+b8fzCuheDy3GdjHnF zkLnW5m7cd;(6(hC7RZuZxb6P)Yvqpy-cbw>Da_=*e{cg}N8{N_Kw5mvl1sRL%C7h4 zd;qih7at-s$~N!L&f+u9A4NQFwmSP8Z0J^FcC}Yn>%1{2K3ec=l&>R-TCfnuGcztS z&N#wm`T5&A4-y+sAKv6R;=~PGtHnhOfMm)bAvmn=MPo`w5HIXDxE`Ako|XOPIDRZj z*f2eJ+i343(2t>(d(SD}X#du_+tXvhGhg?N`}&ijo9WFv@JEg+Ae;7Cu~#u0+8yFL z+Wp^J0D+>Kcq{<~wOoG6aZ(&q{u+B^f9;*Pz+)ps|Knwjg4QR&@$7rH(_|tPhv?MM zgN*FTMKKt~579t0UjlJxa2;?dORap1JvQbq8D1 z`IbxoS(B^XNpAmf^Q1eimNti2h(_p1?R?w(*hHJRtq&_}+$c5q4_i-9`<#O@rjDX`a7>?FJc*q}qWeRA|P>a$(XU+<9zhH8Svp9`}c2bd9zNPdl z;&)R^{*4vOQoufN}f`DbxUQ0d%L5TB4G8YO@nE^I2vfV?PK6%+P#^VEOP7>X6t0wbE< z`49*GDTm$Gv&%na>%%lkD~mQ@8d4u-Q0xnv)?2GAJp#lmhmTCpC>Sw3|$jsqI zcVQ3D8GRV*P6iIx0QEjDHHjd7xE~hIQxE@_0N64W9aCn};nL%31xgsx*PNgPq#_Y= zO5u=4LZx)SIU_avrYAL?w8r;HrfAbCz}C8tLfOo`g_l0i@6Hi?@N1bjw+ zoF@8^p?~tu+&BD~NUc&S!2LGlfdh%+eh54yt^KlpL~Kkv6ko3_^IUl9^|t4qJKjUV z{%KzhrYajKsaT<&?W}y*P|d9L7Wvg|gq0$Y{0G1U zZav3WZXf%*oR&$ll3Ns33lDB0X|2F&Kn{Pn*hh*o4kFlVmn`~x@4bX|Hq$_$BHC{D z$crT`ZOjnQ^=9#?CW0y`PO7HuqEb`#pn$0HeWu~Q!QXdJ*YxM`05t1)__a^|lVd`o zNUhTX$pS;?i))Mhh=IT}l*e8ws1)g!|79YHC#kydhLTwUpPu8UT$FN z2_kQDwd7zDqHCs<%kDTK6AI$%y?2u_f0eEB9YF@!0yCYM?PZ+$73nSlTJp%@^((7CLFUq8XN@)@Xv{WhY z(Y;uZ?7)Jc_%vgQMEchqKjq+E=cjbHMUHwcLpe}eYcfVy(O-Qzt!Gha&6E8-0|^O6 zp0iNHUgvx7%w62EYwWlWWJho>YN1}*)iU(xI8BlQonH-kY+H^Z%Cgx z4j=r|!f8MG>ElxSe1GK4=y3}_GMWC}D;g;Hg&mTMi{Yq`iF!^Q#e2Ox#$gM;0&b4k z<{eef-Sn-F8YWxcjb7UhE4z*46hk9kw0EhzIFHgfd8K%frh4P*=yHe|5X&n4Q`?vs zzqwk)b6QY9l@%oGt>9CVCK}r}ArvYX6e`GM0jV@7zqOI!SpaQIHs3K50%|fpg5(b{ z+A#nfz|o+V2@vfv9jl?$E`KaDKFiXM@6!C7U$khS4?iVkPx6@HYVKNzu?ZGy*4`me zljh9Yn;45JNGzA0YvgqLD3Ef3#F0qYa8c|mGtw{IU)8LSjUtLn<`}=%NWD4Bp`>qi z`(xj+{Ko&3fR4Z=M{c#ikxx5OIt)E{V*mbZ_9Bh{s$_DcE$}1Xb)j0u!g08De*-=q zsmtN{H0hn`#!eezK#c??8Fa#kqmHqBZ01fkkhLKlPh&@ws%4q7W!V@Rd!Q8A#`}qP zVZSUMx~3W>i{Fz#?MEs2155C~5g-#<*+d(a0EAJs3~GxpMUF@TV{_xxhgR3=BQc-C zHE*Mn=o{5G#ehR2hd{Kd!FeM!AmJ$m!asu0zS<=-TFSBFdX<<$;6kpjGO*)IL`M z$PgPPY7? zuXJ*BZC-*xi%&@Ocj6}-eM6JPjRz^m8Jq_Z3(!!uT0$2y=N){o1pb`mP9P^Q(Gob- z=v-L0+j`y&D#ZTv)Y5!>!x~If=njVtZHqW9Pd9l=SmS0n&g`+8fAJt#;#i`Z(5oW>b` z1L_szyVnoN2;oyB-caD}76+dUmQ)1VnA7D}oj@O7 zQBBJMN-p$}pa)T!>VxdmORf;^!Au0J;mf6!Zx=e=ZDu16GMF&0hpkKRaF%*)s(Nkl z6YV;|D5X@Op%-uKFA;?vIwtQWeYX3B>nx=dbV@=GJmqd>GRZe!SA&uGZBf>=P4Hh^ zx3<9Own=WZS7TR#DwKC2b&8StE+U2VElx)Y$Qe0lUHA3v1Jy+BV~JSJ6GXodBx{?8 zG+p>5>B9o*>NY0su_D3(qD>Cyc=_{gj(?u>AIJ;ap1aw<3Yoi?3`GwN?{}=aS1%_d zFCPbqvHlB{+;iW#NFw}B3H%Bc>d*aN?IFLE+UIqD9WzeepWP46&(+iFk?sD1Ypp~& zkbDEGSw`=devEr9XpjhG7*0e-S7^Qn(sk}AKJsQJX$A!t4F1=Bc9YBGmq6y?hkE`i z!FJyZJ3J{-z3?^N5RI8L60VD|L0fO97WZmTaC(HtRk5)lpF7|)&(N*DqJMg;=9+4f zKD%)2Qf;5^c^X{mw7BBR8yIUJTu_48WBK=m?@>?=2ftc5EJ6SjF zyIjqwila2afxQ$+KmfLIh;7Rv-8*NX!thP?f{C08wdyiN6llc&o~hetmZcb|Hb+Lo zce_K~QxM6VDo{R;niEtn;-lzy`TQ?^=^ED1da3ryBQgv47!6Kcb0K!H6q9+77})Gx zn`tWY_GdmUYmu$(5vL?{ zC`27zom6m7`&FSm%f8e33B*Q}$wPQd>eOPO9yY>6euH%R^s$zcHt7H-zrCccjw!go zv0{?jFBuac)0b$PnOUt)W>r_8CB2VxF$Vo_Og{KO)_{r%=YNCMr&eS7k06bKT2*{r zh222i?Dw|}2E9?s+5}8kWn9ILca-+A$627KH%H~J`y9FF=9{x_!={@pmrXeWbmebO z4$&uG{s+_X0TWuHf!F7+7F105lG0-GTW ziy79ZTu{}{cBy63F2o>h_;&F}G&sHlH;ftA4dRgr=$)JnQ~Z|{;R&wTJkluOi6x$? z7pWNM?5_~u*Ft(l6Jc@-h!P9?1x$mH+h0Y|tQ8?<{i0|o>9ed5y&dWsr+&5BuNj+l zKVFhS#dfJ&wI$t<+5JPd1+?_TKFfj<_@bLvE2lbGzY?+Nhs-ApTtdEh&g&cdBAbiy^Cw&0K3*Q_VV!OMHJ5Z)y)4PX2VxH zhZL3l0JNopQ^kRMM(qjsMMU)?5wxs|gNY&VyQ;{HuNXjaAh!>SmHyI$4!ffc zyRXAo)ZYh?PrW^X4Q1iHkZ^KK!{g?$e=NlM!?ImJ;POsl$x>oebl=QA# zIyEP~&Pv1p>p@4@>XWiWfb~50;DGf57In}ISWyo7o6<|*JQkjwA9>H9-y zof;+K);3)>ENo9eiJ$m z^~bn2Cnu9uL>*sygjwJkQI~-55K{O(z=Mb2tq1svzw-knTJ|~e8~UR1LObLchUxkl zF!!_*|md3;c4Jee95deQWljm+&-a#~Q4@Z8^ z&FQB2l+9Liid!I1L6pF_6F^N4dbfK~n3mF&(YqrIrs53Z=;aqsWO?lU9V;)rP@i&7;n(FEk1@!?4gPRl?_CR z^5N3v*lLSbs2urIhnkUR0r7!zDN&yO9ewMg*MOS>IX$-9F_GH#?V)J-ah)i5gl2(M z0z7pJp}()4=RSBeZ421sCD$61>|b2GFgZ!Nr$!W6-Wq*yJeL-jv;?w2oXMn?Py+^l zS_+8G9!y4>emu4~t3N=|5~av`#fIO^WZi`IHr(QHv%_iowZMu@{d&^ptYxF~r*-`Y zC|?M+`F)|S#XrKpYSH9WH#lFNPxHqp2i2W+bw*1EYAeNMAV3to!BL`+#%Umo`7;5Y zo5)*x8AP~`Dt6Z$mx-&mrno|68a{5*xf>Zz>bmW`HoRDp$rDS*zg;1;kE!FZ1U(_5 zLGjmQA{pu*HuP+#P$aI6YNW+siGJcojT4JTx_a6?uut0SRH201y2M(Kw%}`bR=ht^ z@S>5;XPP}AFTmDw>c5yrAQ$>a=c3=eg^{a5GP91fcBjnyW!7cpIHsB>>Lk9>WouUs zrwilXlO^aB=sdes|D-MrcPIyAy)`JNG$04i*dXsIfWG0v0=G-`NCoe?Q2g`&>a7of z)^!hP2kpw~^EZ_2t`dma)m$rl@~`A7bX$YyNgeml=!0`iU8co&T8;nhaCxl6f`!Qr ze;bk4*+-ktC59YL#J0IM#q3pyq&|RFg;~nfh)aDxtmWT; z$VkgsJ1n@n+P^e|%2Yk0>u`NMeQ(deP5WCm4y3Vk$*di$ zQd+fBHE0~TRP1I{TjY&}tq3gM~# zH5J9T<%z!wL!H*n-&u@kW0YgSABqGx;jfUiOMMeV#*Pg-=C7MMzI_p!EU1gA!{+)_ z%uPDKwwaKXaw&OeNoL+CaenCY_?7KZusE}%guOv&ks9eI^^A0@=|OzaZJsOf<)?e4 ztFqJ2A_Qkz_>aHrX=6&pVEMxTWSkwK$<~J=!ek2g=nph$^=SEM-fVgHVr3{6TesaR zLy0=kE{7Nz_6qCoCm&zxJXv9lLy2L-GQ(zRzirF2;wYGm1gnwmmL0TjT50DH(1KO- z!=9Pt%`wd!m)meW*yG=slAuDuctgZB4rCF_y1hQfHblQjZ$SF}r^|R%dX-T2SUrF4 zG)-Y)#d!ZlY_bgZPVNS!V+~IQJ?1 z=X>Mh`9MAZkKyeC=l+kOS4b{QF%UKtS=*%d($ovC+nrKLAX(Pvifnzs!N5s7tUXt9 zxt862ejkcgVIXIDrGuhx_>mNX4lUqoC4&NskpbM~GN-d7Pz6ZH>W|bk)Ha-cW+Kyx zni!1KZ{TEN3AG*7z+c`tn8=OhuX8)dIQKhlpv{_gvmB~H+4~?>3U)rg2l3f|q(UU- z11?X(iJgngk2AXZ+7+~VOM)XLrBy#->0^i^wDoz}U3F^jBL{Xe=}o)Erk&3lQfR2W zhxR}k1uy5_!^>d{&kSZ9P*qOh6F~MQB)J|oG34u?FHQZ69K9G_u4^h)ZF#@$R}isI zIwfNVE?`2OYk&aTLxmVU6jh9pPIlL#{}r>E7RH!O#?gvevzN}sU5)`uwW!tN!48QTt^2#HR6WxHIRI4CTGA@MhN1zy+W$!zt?C& zl*i~P_Ro0L?Vtr8QDBv_hwirI%>{>T+V>`YpJ}pummf*!!yn?u9NDrXm+KL0lJSzI zf(Fa6->b*@m`mRR^$`nvE$w%p<^uUV=^>v#PuW>L94!mJUAcBEw=VmH5e>S1Y^14~ zKtE1t%_o1w%AVnU)5OCIB^j)WJiddbl*Acn+mWE3ghx(>cbIMb5>yJe1=X!{pvX(i z2l8$W#G{<=bBcL}+#U-zaDW#t1rlHuCm@AX-|fG0-uOyfaBO~LPjAt+8&YB@8qFj{ zFYahKT!_E0gJ&DD_oX22_SS_VU3ivAtOhNAq(1w0NK-a$H{Q^Du(kTC`evcvTcg1= zSww1T$;N6{|G{StuubahK$HC_j+hq+>|pQ+^8wVE0R=omx!&tij$(ADjaHt7=)>P0 zd7wLiorS!A-}9B#ctd5*YQ?lP$rRt|{L-;n*v#Y-GvfM28P_Ip494`cQgO~$nW9n( zMv4CPmhF1Ji?}K!)3>YW zpC>uTDtsL*Mf4HuoN5$mF0+E(8e}q7)=F+Ri2LU7VRi1@HfR|W%GtLlw{xZ3TY7v{ zql}1Gyu;x|hJqQ05er(Q*?C@ce_g28{y6Oa^eIWR7qZ4K(38J%(V`D_(gJ{0_#x%# zrDt01ALTJHNGr0UvpemWd^B_D?t@cIt0McMJ*Pg)ZFlVFa;g5?_$p)TV$aJ-@spK# zS=!uV$moSV7hknK&V!I}<=?eZvr;$bcK6MAe}6MEf5DbhDLu9ipn!OrS4Nm=%pQ<}4`? zK{183*rMd82RU#3*BG~y!o!C1wYFC;!sGaqo0puwz%Bt(vw~zf`u}y|Ts-G*=0d~o z2|zf}IqOZF=f42Ek}5$Y`7I_c+h+6PJvWpY|qGGi*MS-V=q8$pKcP(qbZe{ zp1P5fcDbD(Yfxidn!1>aA=%;0!f*}vmt;C%o_C~~6YD4i)b{tAV!Kej3)AMmv5)E<7d0xUA-9t+9Kbc$C-V^<7gu#)AjV2L-n@l_7pt$}s*w(oj?FMu!U7YzA6gfvD7nn!tbIkFr92Wh2X{zF~ z=poEsk+_pith);f95n8p+RE#Z3(`CMlR%^%pq=I1+>f*m)5E<-3W8N`SO4j?e+GPj z*Wxbm$JpY2gN8|js>Qsv&XztytC6tFQtZFGs}CO`$ALGrgKLDKVpwNo836&SNDCXM z0Ujh57Z!Pv#0Rz~cKh!*@1N$?cXah{4qc2sma!{g#Q5}9hGOM*q`Y4_u{>w>d|LWT zMF%gZ;~qm8XBN~J4}$K~D__CGJ^j#NP$>hmX7`ws?m7lbcKR540uPRq z^Smul$Uc~UU>=YP^A;Hj`f1e00>e0(VRiM++zrXOr@K7mly#h}OJs3b589&if9x6k zf0r3Dk>x%8?WQul&EDy}1{6ifbB}MIbB?cE_F1{wmlSHaYyzaxeg2wJiLbBeS%)vo zvD^)tgyqpepsZ7q1~S@4HsUP)tHF)n+S3sp)#?1or6R(_$pZst`UvJ@-32;Vm)o&KBYPH)i?iP3$9-Y6X?Uld|zNV ztMK*i+-}a%yz9ZpZyX!nhMa{hrv+F2CVEml(rHxh+~vEL3Vw>r-2LuC^;NMt))v{_P+8`)+}OAjco6r8 zjVzWzP$XEIZ{J`(H~zd<$mmpXlkg;1w++J|tWEpt)`g|6o#>K?AR6dR@%mtm-9|$G z<{x5R!&1jxP$k=y!vsau_|a(E8!tKF)*3|9B?QDktqnCs-0j$&=PR{n| z0>o*5BMck?>c`T~4z^!2MQL|w@v#^?`W^Ld2I=_J0n2E!DA&HrKYJ^3@~29(w1%-G zbTfEFiUq#-dVaB)dN{xEwW_`&kq*$;o5z=jD>`=Wq~4fkzJVycfdycem#?||BD-x8 z_rK+=*pLM6NzdI(Olh0JS|9MxbCZYonD4Dc`xj8p?v*ab*e^w03u>;_hsrT3a|zLL zu9e-=;x!Bva_6h=HCns|_JH7gVlylAu%ua#^5PhH2;qY(ugL!1t!1!k66N7rdVJUK zYiI1dygfsquYFmJb0#&6v{18oSF!wuEg!%n6)TPj5DR7ieUL9lGzi%5Sq?JvHR z%_H$J6|pYo5eV4TcRqn5oq(7M1JFY{5Shrnx^-$n}p503LiIxQf5u$vXcaWPNBG zc?iny8+P+%E8f}Z3d>Tpu#|Mnm!CvrfP8ry ziVRUtDc}YQ_AV0}AAx5N?Lm^v>{RO_HefrpQ3!EoVC&^}WPa{W=8gum%Rl~bV0q-I zIbH(3Iui7#1pEIl0*yu3M$$PtHPI6nq^fF~QpT;HGgFbRR2BM`%0djj?~S+S-BLTv zo7e@v5CNT`?hlPa=6Mfg|2codO+{5sbeQ>h=l)l=TZ?F1j(v~2BCFD>jlQU*B3Jc> zFXk)-)$4~L_cvKAE{>N>wKesvhaTEWZzp?T>i zx_Roi`Ok$I`K1hu-J216_qX<|2|VO+apu3$r=phkkC%2iYNnU&0oyL{AZMwh50p9v zt99;b-;kX$*fMl`x;iob?trgtZCj_K3!r}C27(&PnQWt*-vDN;x(O%laB?MSjvAs_ zeoY{iu1O*Fy5Mnd59!&X zC@fNDQD11D(O(}TkC8CYlFA4;z5kN~k_z(W>#SR>22Aaflk+q|Rv#d}T1~XOS+VSy zh)!S+yMLy-ps-L-QMsibzr`6|$TqYXv(WKEg2r2_{YY2bOY+p^G6M`e@U*r&alY&g zvKgQ&RTZfjyaw?o=Pe1xcn+KrnJ;wiU`o|O*5Z^FgighaegI|BHyv&{gctPg>eFj7 zX8t4ndnQKGO4v!E#A{I$RULT5$4G6qk;0*A>@&I?)WwQOGvBZ8cc)0MjkRSwuXB=p z4<+2q{~)gxlh4?^Q$l#JTH+K}|YjymVNU3#ow*Z`S~U4$yV&#`IlFa=Ja zV;dA9r!z&wj%uXDZ>dbitpHnnJm27t#kMi$0R7cA@|-uilG3#8WG}%~s`+uv<5%L& z?=etef>Ptr}7sRozxt%Z80)7$HX zcpPf}Y4e@<#5=3frA+_2?b$E4j7A3{gd{!O=cqP$_XG3s9fD=|Zjk%levKWY zvp3|FegaP9rOc)|XTxe=O)GB8vr6{~cj^5?OH*;^!w0i>uIu}4UEMzMPeiiP_OY(q zI?wX=UOMw_9LIPtnI#@`P5CpuA{aI~AlguNTYhv$ZR+|}w-NO$1J6e&`SgYO`LsyV zP?daI+dTa+JI1&W$;xwQnr-EtUVcfrAwlFKzBYw;wbrg{iShEJsPh({yZvHf-K05H zI*p-`o!?sb*cC|E)}+;gq3PKyCS7>`LTcHD{xaFhVIb~iBh6_gCCey)!HH4c6%qxOG zF0u-X|2BFE+J%v`ppPgFs=YB5W_GDbpKG3eOxVE;240VRUFM+-oGhS2vc1)AaA6oWFo)W{sAZGY1&4-P;ZQ1%lug6gt+8PkCATsLa3?> zns}!i$zgtNWkk^lTSZEymbW)_L!zt6YI5Nz!&v}Dr|(S)nY`ds8kwmkkD4$NrRdJb zPaiwar$-bOJm;4iA&D7s+*2I0VLeSuOu_Y)jE-l~A7nAl7;doFIon1}12kO*E(q1r zi8l*O8P8Wwy#0H$-*yDjU=4ce4iQn?Ern}Zb8Xdm>`M(eRK6RHSG02?IMKZtas_Ww z=u1wwdBeKE4iy24m-M}Zo9P1-cJD_yd)Vr!#OJs;?Hdwp_iSkRNHLO6@o1qN zPryeceYo>AcQ})9D(2s5x6(dZIQ{g{tp0YX^6K(|hT2U2O7q5_OqMTRrTblznElbB zWu{_Ik{->VrHeTs%1|E08J??-lH6s#T#p@Gr*`~xW6<_yK{8>RM{f;{tTmuPI7woV z#*|8e0qa?{*lk%J)72LjhPiF^l+d>_U)56XU-zF2L9y8Re!t8RIsYb}#7?Uxg(JAJ z99hRJWAI0YaA!S^u=jJiTR_+R?(>KnPT7NBDFNNg%vK%7dwrine#>SAPfs#jTIeae zzFFv(8tJoU49^T*tq-eFz#ad+p%}TQ&=CA7v9KigXGAF!eN4MdQqxg)ZzFM_e4D3D zXh38wSfL(E01b(elY29XQvN8of7rp?pAE}9&<+)1{<-gGfioE7g{}Zh`n`T+%(aEn zML(u;7c!aXN_{<3&t-l~Hb-xB8ZbDAU(9$bXM^Plqcb^%E~qVqVKN!}wP*tcw2LN+ zW=SdP3)9`N0#o=zcwU@7o298>l$NbW`*Bc0pG;K{tr#*fD+D(HzkBM$p*XsY%z0@T z7dPO!lJx{r>kWTo9=7hi+W@g2f`Xz4*79@RP`Ue>!as<3%IMZMTg68~*J7g9h9`B_5t{bg@}7@^aC$lZF(jEjCud~R zj?F&c`ZGLnZ3)oDAw6mXDB*7{{da~SeqMs#=J7pi*`1k;q}4h}o9@p=u~AwZ9Hnn^ z&Rc=Q)*~T}&&`@&6u=8L-!oFV{=T|ckNtd)Qe*SX#sGKvD5su?DWm@M{-b>6P^K3P zy8qqH&cPq}pDmeP*?M(7%`5?m_uaHza^W&2+}OeQ7re0o6+4wRM&UgYkCq1VmoMK? z>Jk^1d&Vu~h;$TXf2qIq^^1v{+&*RIx-@iSAtKTFO{JemjBCThW$Yv{TD5A1;vkF3 z$*|2DbM|}U*Lrak)s+0vi!aE@&7{we$+&E|1v1|x8ai~~MVhjo1h4LUwt=q-D-XrwMW zH{q2p$$xM*na-YGDt?u{6hMB=*MN1jt{|h!8r!q3rSzuc1sUaskY6d{F1@!5ir*Hk_r$4CDmqxUzI`rruY1rhSrXmwILsPLnF7IIcjgPlNQ1 zXWwvl{+m7(LEBT=U@H9#)5@~wp0)DzK2(CT45W(e(yJ{*Q$rF3)plpAiX)vBZ^(_b zn+m3>g{|bIT5kH!a2#1ehffAFo?h?Y_mA{FUoe*+4(a+tKfU(i>crS`#MJNWFrw}E ziHVMgHO0tvIV3Y@!*S`biXH!C^62=l&AMn;0X;@y(U`;4rANvizH*g##oy&0oWzM5 zQ;RlY4JKnFhmtUesa7w?!$UN~Qiq;Tf2ET+%2|O2=hh&$6|{r%VRm-7_lQ}+39Q${ z{v$3-ujb8-tSsb<0;PgKmON5KR~5-9uTAD0F#kC5J5H`3EbQC4lTL)r9lP_Z{fm?z zXtuMbCD#*6gQ*mPHBZWi%TKsj4Ko{NRz_(s5YPJJ^OiEbI<)KGS-rJ2W(^=xJ^M9r zcd?I>f6c3)dhY}+>-aOT_UNidf-Ojj`?pF$%~t!@`P(RB)F1u7W-i?0Z?mk!O}YeD zrmtxzy;131v2}3?a?HlszA+`_$htVhw=PZz_|xlreJ;UZ>U2V6*qE*BZ5+hIzHecp zteVOvi^(OksnejDTr(%AD^FE-c2lcwyGZ1}N)yfSiTNV9mO{g?;fyo;MJGw@i>myM za6&@0vlrT;)=SniZCoz={pT4T#<#`qthw6r5YEk2xkR{QC&H6v z9x)#6_IcX#M6q4o7?9=Wm4&`&U7Y6_B~1KgUwiY1`jUrW()S>b7c`)XLHPwA5v}4r zZxFxTnrbjh@Dr z?Bx@e9LXywN6Cb0rq00czf5W=vK%{oaz479^(9o*W|Dzi%Z)seBGj$@`s;zoP7w-0 z8-YC%TvC~%Qr5?hvMPH>;3ur#6;^?EO`nF`VdDlLUe?4!GU%t#fQia{w*BEJ`=5W( ziZk$@xGUw8IHOAE>x(H~Q2y`{A5+JeIc+TMV?plcFnP}o zo=4cldWJm}De&MIh@XN9j*$0pMO-^ZC>%k2Txxx}5h1^#cVAo8?kZJ|p!#r=NB=FJ z>~54gZ65x+Z-#m^E6`zDw!f6@ZI?fuBD?9)hbUEk?=O(D2%;zWyubMXQ?s>>1L$H0 zy-s_UP6kDc#!%WU7LfT0xBnSZN=V^!8oorLsKEQt@fUXGh2c?HuZ7BPmNoXpl$S(0 z6Hz5(A9gSxI5E`|`Nka-nn`)64E`AJIITJ89<{K%dYmWUqHs3uy)pTSl``)o>+x#i z#bUw4c%2yXWz1c^dAF;6pXuk--9MF7Q#M19RCAHZ7*(+kmG;3SyZYDddL>iFZ|4D; zTg0hW}IOyw=TP+dE2h}b2x*=Q;{$5*7Z zYeH&(*Jfw9p&94n^BYhTW^$&Z+){((>Ly+-S0)8kv-n9w z*|NW?NoFIorJP16{-cyrIEQXSNihk0BnzGvGhy}%V}c^=$SF7jb+||z_Tuh-5|STw zFzr*4NfN9djXWztp73J1c`6F>+&hgnuh1YVIH!%}(Yr--2oy*UA6X`trt7ETRQ@$= zzfMujPi}E>;*{oi>Kb~w=O!yIM~*!{4R4W@%@}?_P55A-?_(cKT}b+5BP!m`ZX;q1 z2SrHHU$e)HF(kETnHbd_L$s!5*l&hp;@%;|{8*)Py|Tc<;i)a>psrza?@Kt2WjI#0 z%7!1w^^aiI2yuVw0ggj}_=Mj0-SD2D@qTiEVzJ4vtMT?u2#gScRj~esGyGfpPHNqw ztRUavj%iu6y{5VAI_|_o{;>bCE1rU^%=tSptwr=&FebL$%Mbk7XTUsZ8r@GlFr>>I zZ156e$F|f*n6LZ|TN&&9PJj|UCB@z`6XfZX1u=NSps2dLC$SMJlvdZxziMOVBYjTB z7a{b;X`VVjQ_0Z+@!hZtXW?}AQG5b`Z=(r&Ldwr-S75)8lNeKv0SM5S$fcx z94gmk%SD6b9)IQq9N;X`>0#t7v4uX&{zA*dx{N`tA^J@?j1l@=aNE-<0 z)gd>J9%9z_`Af3m?2~^nYXO>8))T!lj8ln!-YDdj>5PKZR$6d#rxQwzAyD7=Ez37#2wiqA0cx_z%r0m!vKpj zg5{~`rHr`nc)Wd5uMSBaI&`zf8mHC~Qj!+P7W8Um!{lXk8(lhpuajBVic*Dng8Bf0 z1$W>r0ap7x$)9&GtgQbJz6-omOg?(tn3$?ZS#h#%o?)m*^nBy2U$G;7j+r@geTKc_ zomuzhCVPKheIzd3>M!?j91lB$gG5moLqfZEO+1e;e8pa}7|7Mi0&78bhnc-K@@Cs6 zA0A#_eSLXmaiw?AX`1p61}~;m*-iV6NAG+81+v=UC%-}?FYx1cH(o^CP?i{S=o(V7 zKN%Srk@{p2MS1fp{&{T=vq}8eJ`rT# z4Z48-`qGpA#MxqLw&Xo^EFD9a5{t&2n343Oodq~|EM@ee@gjxl(q-lEa^vFrNI|lF z@5aw4W$&&D$$Z7W^7i6&K;xfYZ!;(?^R{oP9B6a|2};Vxw5`j@v#0$nTm zS{t0BhfD@0<-^`Sw-NCouhyn=28CMQ> zr+(v}Weup>l*a6V(|M+Ifp`D6wpgM>l;njVl`KtOjKW{$u)}(TiNe99dfvE;lTc1QhJ69BaskQ$Kw9bjEeXXW8xuRH920w@XQncvpjsHW!s!xg-qQDG^+(Uw#s`uc_uiuUT{flozs9S)7 zwlvsp+HXZ#8jDdqmnza@#s4FTl@YnoiO zhTfOA8+TPxY0oJ25{OQgyE9@{mT?5?(;FD#92=|rqni_BWsEh-!r$0ojMi0(Y;(o& zX`;f2VdE@A?%6nNFTb+4R`N`v)B2 z6OdiKm69!B@_090Qs@y~&g+_*bWe;11+te|zgmQ}ZxiT$_$TOPMC=gS=wHwig20F{ ziJ;EHR>ri>)>g|83e4SSjQ-k`WU{C#@&bwdXg&c)Nx>P{&l6Di8(`#JE-KIkyZ zdVlS6M^v)Cmk?J>^ymjDo{Xn{wOLwEhQhnwhs0bTYVEAe7SBcp&DWh=?y$3@Z)9SR zlT7T1DK3&_DEmRUDZ%Lu^9uBCk20-D-9oQle6sQE{@=u8dSKLg1rO?!b93G z-O=95upuLi3yi-bE~{FycsQrXweM3{Zkrae9Fj#2+dBHVW!N-#0n`tlJT5 zc5S-xcIPWg>#20&<>6&k^e{8MDeVd-y}K2=`=tN@sthT0^C_yWZ<% zF_E7CdWJ#hB~G}_MZeTAOT;M4U0(&r)r@cd7gcWo6i4%Yfo_6^;1V2yySo$I-8F;& z!QDMs+=9CWx8SY;g1fuBE$;G$eE;98_olXrs#JDodb<0{Ip_AJlax%zW@HF>jeAiA zUY&y92TV;YruL?)1a(h{Xl_AmbNb4tGg7&4%e?(8ME4ID_-Bs&D#!0OT2|TyN|-E@ z(KddjBE~#b3OJ|Z)tW2aKlSd|UbL2UW<0}bGiEZA$hD<9K>SQu5{TM!^VmyCY_r=< zNaXLAR*<@Xt@KXsl6}*Ao#=)+sl z#NB7((`m+^+CMBS`jvLW;Wi`F;_#CS8@ZH>(XUzQ|7ig*$ZuZ^hP6C*XD6XR3td~f zHxem0M|gX|{~M!4_^>G%xbJHNz_fu;zu0TF&CYHm?4B8%v>dv+Uk6y24oCM&imohm zGRw&tOuEh?j5le%Un>ceD(&K)&|_Q`{|;e`El!>W@Fs}@$;p|CgQ~1sOF87~pt{;0 z+1@~n*61i4zmVZ@X&e8;_ly{uN#qA&f&toob`7>2-A9$5DwijG`Vt~dB`NP#Pl+^6 zfY0~U&%3$CMK$Mj54FBu443ae)Lh^7?vDwrZjF9%yqm6*dR zNU$DW$dZb_tF*Yw_++E`mNX{ShI3SO;-E*%RZ|!g8UnRSVGIOk8_qV*i5nA@`4!#h zAdnACoEsj{El?Dmhr46c_w@~&ht0(%J=Z;NNBz1~pPi*NZ7C}(1AOX=cfP!Rk{F4y zo!s2~R3&i8eSGba4i>ISo945;#}{RFmUPnodQLSBRig8IN|8R5lIGgFSDjO4rlfbM z2>h_q`A&13?P5BicHTTK>i|Cgv-v`bdWyhH3yR3MwBw|94^NI`JI>?3(rk2U@ji{G zsnMZElgNu*u08_~rDa)!EguWbEs;ui&%3;(i*o}@Jtj54Kg(%S9(ylz}EIv_dr0F;HWC%z9 zB&d$GJ(G2~Mekpig--MDQ+ocp1Oh2%F;U^~@zfLq(!PfD!sP$rniOXaM(W!ud9iPH zKd|5Y^>Pn1(lX2u1fXt?E%wu)S!MMp4KNdnKH_U#khy?C(iSzd_vsjBMgp^;PD1_r|OnL`L zQACS%6c1_>XI8ei=0`m@?^FM(ihO*=j0t5VjR9xkg2vAJrN=0BJA@zr_810_)8jje zT#1=^89lgt&Afe)c8al;-Q=JF9awGP8lAlx|B*HH75c z^>p+tvPwr?&8Hj9{DX)HKf%L{a2w|v&D3;-eq0@OH@sB8ytDB#(AIT-QfKxTt{C4p zTFKL$MCLK!(WaPJVW$zG(0>;yHi^tJgeP76HFY(qg4x(M?m;p4nrK+d<27(c*{Eua z4q9F2JN>ZvC9rjx@_{efhM~;cDIwR0w3#CXlCKYfmsc=4OPwmuc=CPfT~1pH<%`ZN zP^igO%F+X(PGRVd0RX#SBP*ac+pe9aM-DS2BjMNuA~NMCxim1LEcFSM&~4H~QKWvo zSKmZ_8OP9qK3cO01r9*1oig|!vEz@ax6-B477f~V0VLsxeKYhBBLm5>Yvz^5LDj** z@X}fDWHg;&*2Tw|5XP{wOV46Gtq)HWoUXlNsTeOA7Cv5V%E&g_Z#O=cXIYG9@7jol zPfdS49eG6%Yk;I2h_|)W^{-+E2W3lSQ_Xu(MViU3FDI(8{_@JI>rWT7jN(!x*EMl^ zl}L?eW_b6%EQn{k$h(J5AdHs~z2|OEXvt4#F@5+7BMknGbMYj)Gx+&Cxv0ei@(RnQ zAYR*gMxv&`!zuITP_d$bG0$clt;+uCBsQu$tqec`Ja*FlqcTz7oxYZ2KB6%8EZbRb z&VIN3-n^Z#n;t4yZMXJzJ=a3=Y!yQTy6jhU(M#mQK>cm4dpGQQ!CT=iG_bq~b?FzlU^qpY4t-)#6z0Kh$1CY`UcA%m2&i%FfYhO~^yo>69AeJwBE zzlipQ8_oHkzqc^ZbLoPem-JJ#)QI$c(xNO(ds}i^x*XZ0Miag5f<=KDejB-(wobC} zM|dH8&=)zIUfJ*Dnd-~{aFg_{bXAq&^ZI036vZBc%8@q zxE(3fKL{lKEX9t+M#J32McM_cI&?8P!yhC}24Rh5Y;OrqQ3JTLU|}V*Lg!g_NVc(c zwz*A~mGD6!iiv03ebTVe%~<8mqD;ZWzFN~yvNs<&8`Sf(#7U$hM!OtuHQEk}aQhjW z_dnEKI0MYf&tZES#VP>GGotR|A_HZ?^auPkm8sAJuuUIXGx|$-Q!}$5SLk)4s^ln@ zOny0c%)}3d>Y4$r1R!2^#4aEy0zNBd-h0O1AT!JHkZSmVoXBCX*o?xG!ZON|nVPGg zvp(yRZ-pQ2=ddKrSdD+sEW@#SiTbQVW4=2tL~@b1ws-|uBL>bL-(Q>`8Xq8fZoL7e zTrswfop%RtLqh8CDyEQury;~_=cQpx^t>1@Ggegmpoz5!fSPEr`YEqbPc0b#L(0xz z5IvU9J9-{IcbBzC9gX7yqc&rYNc8g~peGqQtFnajfG6>=&k-c8=fC*tjzZaR(?LAs8>v?#VDLcjf^G(Dy_D5q)= zOVaOW?I*k&ry3K1suHhGhJN>gFtAY}Q!F!iKDqKJMPEuS2H!d=m*V4+pZd2V0LmLP zFThpkdt24>dA2Me;*mNotw<^+$PYCprKwqegsec}rjehW_9KOp?kh1?qj{%_%uRF1 zy0E(g*5HVO=GxRy`bPvLVM`;N zYeBMoou#Wp!wqJ{<|jt}Yu&UL@N)iv{-S+C=RjxD=;$)Ta>@xk<)>&I^W*tQ$2TCn z^@JVt?b{{QrATRqNfdG z-Hyix>B~WK+G(19u@k#obGyeILl1v*ZB7r%mAX7Q=;%?i+$_hkWXyGso~F5MVd~vs463PIU*f)n?hS=4LqwxbW+MPSmt+kCjS%z%dl))>(r$K{B5h z?+XhKiCVAeGe*^!{Xwh?k0UXe=gXNV(eGe(r5W2qjJF`2kSm&mTuYj2X3#rJ3=ojo zZ+R>D9^2cS->5VhE3nz6O& zS7Ft5P+>;IJDdXu@8(e{u(yau;XvPHs9ibgLP7yE0s(|x{e%ulZH=+mrOxVkBASux z3Rv~63nsuQoItdmdHn4ERoq;k5Y;}0TM|0t7#3u0rk z+b$mfJAIqE>ah3rwEV~0fxh8lws)`YC$R-!1;A%lw)Sx2%x@A(y15XZzV}8AbPc^$ z*3`YBKF=-*qGPPCe~5p)zrzm^JJ=oz`&i203^x9=cDE3!1E0+Yfl!)wuMu{qXzR1) zF0M&m8vw4ja}W+_CChzMq0HSwSlU!7)ajr$^e}6a4A|n z$36)3XW%f&$_DO<3xGMr(12&t(=fl@PSivb37rTvKqlNXt<ph!2ry?$6TSlt_!c$!XeEevZIT8>}lZa<@uc~2hH?@E98ArpX>O5?3+XbF(J)Z z74=w^2DR`X4?5yoEAB)s@eB`ljNMR^tJAv=4S|c06J?= zo=fx}bUbDUM~#y^Kv&KcU7rWu%D;{?hQFt_Ugi}_8Vcu(e?BmqC3b!nX`7Yr19nf# zCr309oWSFd%cw^?-#hiyM(hu3>F+_OLgYbA@j{mYf-VA|RA3?W!!a6hN$wVFeOE4D zX=zBd4vC^Fj^Yv^1+bvth%y$Y2UzHTBu+OR@D`V9!H4w7?@6|nZBxkA(IMPI_S|XG zIWJW}{fwftTf*&-aa?bnUsy{%FkDl`WC1Vm;vy5oW*H^I6RqB&pZ1L?bXsxtq@<$t zYK`@@P>Cw5YE+s49y(@~$Ns_njG6MNjO?I|#EQq$Swuo)U40@~*k22i9eudRmVA$S zKHe>j?QM*)N{uq8eo`R;DmKzf#Ycna;YyAAuUj*p(s?ypa z5N8ZQ{8pk?;Pf>SAbtF9xVrV(s{Z7*bQTK49wcmr`pv0DwI=+Zz(8ZkMUyLf^g(4u z=zL_dx}VUtfEB=7x=@=E&fR|!EvW!2@EA7Ka3eg-o@`}R6rM(g?wad3$TjUnElx8I zGZB%1S4zP^K|{gjHh8^crd$Hv2&c|?(uGU0UYzd3AYC86E60j+2V@~H>k_g*j0CJk zGS525S;n!zmm_$fuL7K8P;Kgr0go>aA6x2dab8aCv~5XfacIl;$BpabfY%T)nEiep!5CSl7B(;OeI5Xb!bO ze_ci_WIHs%eSKzi+N5Ey|9t^DIp0i%w()V#so13wo*xnUzx`(|N+Zctwz`(eJmF$%_n`L#_ zlv|I6j>M}!=-}&G4!9`CstCAlSebg5dY5EZk_3pDFXxHCXU~~c0_PErK&7Q}hHS)J z9rC0a{6>KYg*y`;Ru7qNUdvxiIum@**#RsGe72dP0lDTJn9=XduO9t?fCrn0}~ z%$52nXKm7negpXk*mptRB}haTA)s_Q z72M07gjyw+KNf0x*?H3K(T@=M(dD6ix$sm@ED}7pO$tsJ((hbEl989GeJ}ds@0T+K z7Ox<9?iH!7)@l6XPb&j&W$36x;N=O0IE0v9RQmE1=QABk&UYA77Ee!v@FHeX_77fn z1P<#@%0Iqwzyx!qSMP66OwAnGObgsv*nRT(Q!alai3SfQYMO!1KAJe1I8Xs7z%krt zb~$p`;W(k&5DTui5c=c%2c_fq^$b8sg9XDul`jOpg4t{O$8_%1vA)8cC&WWukQjTN%zmgTI2msA#8 zQ%6x~;$3BR)p*UHQJ!d;zT_l~{=y%fIIJ(eIJ99XQ)4m)sje0P9kjhS_#lmJa?QyT zd3*5Lw{vc9cCFZ3ikgkqzh_=hhiaa?j?mE2;bXeUD@%_%R!C|{%rGfF?N0gjdNV!x z+oA(<&$kf@#LXGhOg4(D@u~$(4eU+;uuB?(%nU%mIByp8fsdCc~`e}dScr6nc+^W zx={jWBxiLF^|pVW0QbVwfqUsVwT>yNQdn8qzIzVMlC#vhe8^Wm^OAHYpgKZTTYDaT zm7;{Jl*e&@D8x zqOgL*5&aF8zD=1u_4l%2tKs93h2*r5A599^mOP-&ZW(V4jHXoT9C85&`HD7JzE{S5 zn=s1q@QY!9Pjdx5@BXKr+hgPyMB0@`VY9D=<#sPDYM%ir!^sJ{ludx0PjH_saq!s4 z0st#Xw7oYWaQ!G~BGDxfKxz2+t8K>Hj3J4`c}K0~haYFKOvH+ZBfiMD-X!ZEa&T*e zaBJbQ$$Hq%XYGme#D^QA(s-2Yx>5H($n|AYy14l#Lg*O_zBW=Q8~hOTV93)IYMET4 z6udpWx~g?|)YC5Kuo=fEE+|A4Edv^P&cX*!@L!KOXQ=L%<21P{3B?ex=Tw zzOmSTIgJEl%?!{ywJCfL_{-_N{m)w7hwWxEPMx)~?O{?e%joiP3B7!9BUX~Qds;Mb zj2!-ojKD1+0y|p_fDtplL(OG#X4Up%3zYYi`TT`_DApp z0_NbKx4fv-=xVx(+1qINN_QK|<7V`&JWD1aSUrD9uPKPq3A7V5BLGsXqr7m_t_CFy z`RNkrpDhghr{w@WYS##2K-Z{vAd<;Am-fau5#W?W-tiJZFbN4m;o6ktnnhwt~;)ATue)Bl3g@h^a=I{mUB2E^lgsQNK(99EDF;M zJZ^_p!ekj4_`9ar3l|rQcR=V2D%-XwbnVL%dewyp^M5)kscd+?xL?Um5Gq}b;N~4s z!GZ^RVT=ee8Es+0kG%YozyZxvRQNvkrulPbS7+nKrO~`+G8-X*)TQK%BP8H^pbj8H z1OE64MOtuxsdMHo-5kYPKt4fDl}lB+UFrGBl?U7ai3>=uwbWI@fcO7;Edkwbfj_qw zQkWLy$`O%hxC3ezZyLJy0U^l1fv!*K7In*yVEj;M_bFIDh%r>|);H-JHW$R!c)a)k zSL%;-k(u(ho`a(Q9vw9N{gvwneMFSUb{{9`Aw|bcWF~~JZ>jjIJe%^9Fs;QFc;|}C zK^El=n?|1tbd;4Gy%wI<<^gd z)*gf}O+nTu-_RlXcVW9I#QP)l??B38EXT5Hdz}o=wpU2g+10BTQeUaZTc7h55O+Nl zslQxp!J{hCr1WE&!Tk0NA@TE^^^5% z0A-ioh>hjtpeD~9SMMJS*Vl~)B#Ai5h`@o9patMW@AC<6m{nzGp3cvbB%gvqQVBMw z9kRX(I0A*0-CVPr@2-p>-dZ|hLF9?ao`1WZhx(HJKa>j?3KFnIaj{jf@rPtQ!0L%W z?$@oBar2k&dqq6t;y&I;41GR}sHi-%{>LHIv2Lkq*`lk#e2!2iq)V+}c~ z5g{pvyYMqB64n-_cG5pGzMFvm7@&=X7wvg!Q4|vBnG3m@18`k2Xbk}v*->~*tz%#KJ>Ln6fMCA^8iIJ}pD%C_6<*t`lh2Iw%>JVM*yGLeP?g6^I zCZwrOzSj)`BnbbwNI%ZPcS1_eK3E$LfJiMRcPh*L(mz&8M*nn#LMFIsKnAMbypD8? zd|zQR&Xxc3V{OJqnh4Y{Z9tL9O0w=L6y)26u!OY3%>E~`*+pQ0;GgB50=8xa3G4@| zw>h1*THn^A5cJUBDl6-$IPP?&@>0URT6K`H@jp{MhJd4C|5ZZ18x1&lQ6x6iSIKDJ zJSK*6rBc{Tgj5#kN@K+#sMIJJb>piS_3~JzZp;r?dVArIA9wdnWo;U04_O?967QoL zo-VCe1D~u+svCfmKW*8DP(ZgP>le{UC-CuC9X2AtVb+&ID<{n%`iZJgCD_Sd5TOy$v%wb-6fFrKWjNM zRXG?6_^y_Fmc$XVn&UPfmQTtbFM?6X&GFK{Eg{|}xd;3EWvLCO9j!1thWJwCp7FG#YTaPR3KW<*ow;_$a&t7jj$?VI{NBv} z#%rY)1tPF#ZlS8FJ8Sbv9071zSGB|NByZ(qjJDlF{cBIzhV)zNAZsk0nVJ>duKm!s z%TtPmsfTuVI)!ybt;}RktY}T0V!Wb0^XA3TNFu>c9NFi4^l1|zB>yaV^S zGQ9!youa?d+%N6-y^44@t$V#)bCSnci0qv=Y*)vF^?s^v=w|QE4UmESR$cz;HrrT4 zF-WL1|JV5uI@l;!I4-q5>X&t>E2%O%x{GaY^ZON=+oZg`6GX9{PB@R%u&6RKa; z^}$NZ7aw;H?OHHGuw=2*vFewvtkeeH7ej7ad+?U_`%LYju!T&fJ2T(C@dYH26Dol0 zEZFZ?icT!qn-F)He+t);x1ok>qj)SXVm9hT$%vy^PgpQ_FhC>o)+5i5ZJ0+#$`70^XCc*-x5=_0N5AxT*?7g8g5r7U+r#3z1iP7B!?7oFm1e{_)-#J-4sQeD`s3acW@+5ceZ zZa8pq~X+tnp-6JkpRoJFfXVTd{RPJw_R_s^wLjnBp z#}V8?$=ykygTxl8jx65y+}vK^V4FPdND z2Eql9wAd%Lou*|(btDNyLNxpfky8pR=G?~3h&E2>_UIX3cXs|VzsjrSTc7+ntLv-5 z*=0%KpQ=j=bnTVTy843NnqmtrJ=QFo{(vWmX(_&h&)jMH+ta?!Wz|v|*jU^)d|M>A zI>~mJ`u)4@jgv#76062UWk$P`zPx1Wj4lRxg%So-*@yx$juI}EM;8_SfYm;G{cV@HO@qR~%qOk$`SEqNZO^2M2 z594%lj6^kzJ}gTDUra|Z)e z$D9RTaaC0_1@DV}B$2(Dr?I8t79c|8YHfk6wq^2r#9V-O>kU@|gj!QGQ@KXG^|};Q zEq|jMmV9{F*~MD&#yb;a*oVmbW(qmB{bdUOmyTzDSd~g`CTBV9(-0mF_}N($s8JPlN*> z;c0cB8}I1>umE!ef=s+UaGjaWH^A4dA(d>!?k%{{N22r&e~x zW{G0$AOO5_VMi!N8m%MLOfR}~ACR*i9rc8gE&*@7RL8_fa<*_s788U1_AN1=_gOiv zEM@qalx(Q`8MBy7=ri|$_@wk9;bOaWPu$svx2F--YGo)yceWgLoGu(S2DdrpBS`>i zaR_%f^Y68htSbk>gr)f_Jd!D=ZR|kQz-+pb49$3#32W3hx88%Ei$}x@D6jrwECfg~ zPIucU4HXnlPK&xy7E%Ui2YldMv9Ue`LBq_t&iPukM~9&4hYGrm>*2zZU29u;Po9W+ z0)RzucaNd|GvD>W{^1?*)$I6WbbKs6i%a(-#d{q`k>__&CzEVrvC+}V^=^Wx!x@5$ ziWtEjYZEx<*C^DQg zGeX`)k-Mu)dyejS#K&u5VkI^p@0WjMqGF=rTX399@J%2CGb8HOyWdcwBytSy($V&% zI&<&>&IUO1vxXS=Kkzrzl|YNxa{$b8!aAYyMBr(=xaWD@SsOk?U{LbAZs%Dae@ZPL z3u|lkx7N?(_>1jDSFn%3YLIs?{wpw&Fb)Mk1D zWU8Z+u4p2!6L(Dh=DdLYY=KnGveh={*+0Hd$mxPrgMGq^9jJ_n%|3@2JSzsW-lm1c z)Xw8dy3Jqw2S4v>c!#Evplc=t^(n<2u^|9q)$Jddkh^qOqyv_cc{6N&BNm>w_i@|m zt8-(4zM-!n6UYwwFH^_r;jL!m6M;E8`-*H6=5pu6qyEMyT$*YjrnUa@{m40j1I1s8 zmMCfRn2@4(tB#ay3Ql$hlQqjLQIDA%z$@1?mXb1*_EHXOVV2O%%!EnAivN| z2^}ALtdSG0n`C$`REn!9M`@XucFRs>s5KAOuyAr$70jKR ze{q$JkIaZnY0^0en&Q-_XfqwjbiV8u2hz|?elJ!Yn#Sh_KiP$)pF5FUQyci^lZld| z?VNR`HECj`(i0T;go)A70On}9J@w_axV(Rs5(zx&NRYv{! z(%-{mZ6R55A=WB~3xq%ve67{Vk)9YaQpz@28yhLdUi^XnVJ2F}{mF-R+y1s|0T#rE zpXVVr6MahM&#SoNFg#!-5)81`|AB-?(E}u4@urJstspwK?Wj>xh zeZm0_LjH=rdj3HKzN=yf7J=Ky^5KH-$C~SSUtPqDLA!(ZO|}4}t#!0$2&u(|h@{)J z(!D=5RllQxcAVLQt{mOaSN?(SdU+546+GIHxW zQkkRdpz-UPvsYA?Ry2Ke|16A7>mtTMKrR9O7{Q2n@d9%#kn@^Ix>tFV9 z)Aww}ftSlG$l?WFvPB>4J$QO+iEkOyhTPKnbKxv)G$+HpacQU6_*kK%IqN44JP9!9 z_P|4NxzYzISGeBH5~>a3mj{Z0n$-Q02Jn4i`KF;GciIO@U|ky;FATGvi0eHK0{o_X zqq}~y^V9I;`L}Nta@Rn|EYI_TDMba&$jVV;!UrCN=gu`gu@3w7mgo;0Pja|;_$1&7 z-&`)8o}_1iR#!vM_1pt^?s;N&;-9s0x<^*i%R|M@^8VTG{LU2rmC{qPv2|OKaw`j$}aS&Kf?pnFB&RtmzVC7 zy)v|YgIL%vHxFh9y-Zics?=YRgInuah>}NhL}(de@XTlG2qoea(iaau=;-MF z`7-^kN$AXV%%lh?nkfz3|C*QZl@iN@5^GxH{MqA^F!bBbiUow7eq0pT2d(EGVj5w~ z@!Y-%gcyq+2TZ)obZEY~_nIq2LW!t^EI+0~b$Ece`v|SHXFfDCf((Ht>^!ffNLAUU(KsJuZkigHZwEfSh_A* ze&>b_p#1+hDC9`w78qp8e99Y$VA7F*wz~eY&D=6ZP}FQ@ui3oFtWOv6u>iMwPu$Uv z)v7q%VJh^i8*4YMgrH;hW;fRzrPY3Rk+$!zf*HI-LgJU?YUWZs1Tu>hPD`Cp0|9gP zg`7S~paHI~B>uaW+*jAqV7DS=$^IngTz@k1nR&x_6aPayEghX|tg7Z?Yt=kP2%(J$ z3j~T(R9d+HhFHb*NZ^3Y%)<5JcYORb3)6;kP1EUs`XX1EPODEr8ojY!HB_{e*Ms2S zm$4#IPfqN_xN}0%H8rF%!`5%ZJ^BKkT8Q`)FT;x{mRxu8nd};}s`{skA?|1p?ypvJ zwUb@?u;?M(J5_*#!LW;&9^A2>ch3rncNda;C^Tbwx;}ehjP$+Y6F#4Pf~Fh4O}2Yu}VdXzjJF{0|m2>0XFep#!r z;ZV@lP;wOJC{di(lx?RqMxggi7|)mcuS+|?zg@|Pecbvc zT z^XP-mVI;seXJ!8Y#}<>V3GAYgh-E3kI31c=@GqIHh1R|lA6(V!aR5DkIr(o1%FO}m zP=E}%6mrs;%&j-5Z^M6H=ChudW5lx1$n#caW^DHNbc%?b7 z4D!3t>boR^F1O>E7bN+;2F<>f_3iA-D$-+EHejk@x%v87zb^24K9#^gVBI`GF3mJ&m?Z;GclA4BJu2jx*)G^oYL0PiRoXO=`#DceEm7iA&`2caE z7+n5_-rd{Vb%zR|GSLR&(b_nAl~p@R7iMv$&>fWB_I;F|k4O96e*z>SG#_hUBs8r5 z6Xt zk0v6cne1kEM@EZa(dp6_it?=TqMBODx;&<#J}hOR^C?E|@5Kl!XISb(V@-a`NTKU{ zOQ=7#Uo}{yVc&cXe70mX3UC_h4ns;10FdLU7zlLp zy+tL)g@h@LcqwJPT%Zx?Ke*Uud@VLBTkx-&clg66Ox0Ct(jNABwzm}YYbZ3u!4xRF zjT)aZ4~d~looXXe=c_e*RsOwGBH8 zbs~f3teoK<5wSv-?lv+b!zQNndrU|l%&KJO3a4hf6{3ONB9+lj;W7*{PB6THYi)ru zke{6feeW+9TK<+ngEL%-#Do{=bVTWXB!LV9#km+3bi8_KfzeEi^8_7Z~? z7mdSYlW&YiVAry__|1JzLqzZU$5c>Ds<+Xun1U4NhF&*(5W8NF(~>jXjdz-ln={C$Y9cj5*sb*>DZ z{5H^$1j^aR?O_y7X3Ys-%R@o2hMx;bN5t*y>>7US&D`XseFrL=zP|IDMooPbohy+f(ElNLf`JScyt@_TYfgvDhCU*xACA6@6&4o4rox4} zjn0GRB@?4a%19Y$=RBIQ{N3v9&2yt9_tI9a{dLVelx09rIu+xYY_P0WwH1em)K7Wg zpYk0e10VSO7E%`CN9feZ<4vG*%@kA9pUES*q0to9ms4G%<={#D<_b$bcU!7TN?A&s$=F$@nj16_C~%jX z6rWu$r$YHZgRf&%W8duxdEaf-xg@70ga>~g`(<)nn`!ZGx4F3)g^;h%G(o4d)%P(M#1h@MeyBsoBWC#(y6J3{hbEFqm!e80BT;4P0DU`O?I1M6;g#q7 z5t#O8C+0htKx!^JNeP3%__7y_fGPHAyaW7|R&OeLTB|QM=oq;2El!Y3&j_T5YvgPA z?3iEZ%``5hR;B&8QLLe?jSbw#W(-FM2c&UFM|&-9JDmY^*mU?S8IY(rK7uQ(UBlhu*HIf<${H+U`qgD2W5FgriIX|bffNR zo!#L{Sz;%Xa#HL__woxuJ;G&u4bxnckKk~*aCm*qsa8G=cgj1X^Nh0Q zhnWNX>#XDu#3+7emeNz}=nDsITUW@$hDr<+ftrB}(1xR4T;UoJmtvPor181eH8v*4 zgpyx~vce9)`CP0s6t9q3{Gh__A5#J5yj?+jWH&Tz6rLnNn$!VSglzsQ-O^RJctNLl z;XD&dp*rn4u`6xh22yBY6ae@uNtE9P!DZB?dd(Aqt|f{?wK!m<>rFkHkdRdGdent_ z=E{$8Lf#}pLv#Fe6uW2XQ<}B|TqkqF-0cId+aZ&G9_k_G^!Ij;pHH9typ`>Rp8L=~ z_zYOZXiJ-Fi+|eg!0DTIu5zWNX6$3QJ*$Wt)MOm4P3;{R;QSUvzDdAc`1s4q6@rC7 zW8$7eCX=2V@rEQ0Pg%rGf!Z4PAk?A|!KcWw;Q!V@#r-=( zWmVPcEwO(8T^MK>RFPqMdH8H`g|JzA!zVzC^zIP@RYa3fpQV-=3k?G(R_nIXbCb+$~m^<=G5l)Q_GovpVkGE6p<47@bk1V@M<curEU?S0d;<9@R3HxxEDBh9m9(gttgvrECVU~E(5(3(*H#30x7-FrIU-lZl_%i2Xe z1WT;M535a%7dl^CBJ&wV`rIpJb$Y6SEg!bSK&ol-=LiP*Jt3M10Re$*Vgqa%_jgoU zI;LiH-|fB?kgg>k_-A}$d{j{R%lMP*4im{#3eU1j@}@%!(wC{}S(cx%(am00F@eRf zBGi0L&4o48x2Nx9Jjii(g|Q$jtgOsBy4q33xKy;EeiZs0NsTN77dl5F8eEp?X~4ziVk} zfhLlsrw31h&xgF3}0DQSzKJQwfg}z z-)(Py|6wE~Njv3uzN)!2x3n-zO5u~u$}e|5&g0wLbz>P71S+b6!0VeA!>f`2Br?Bk zBAZn2Cz((gxgq(8;qZ91IBF}5pf2-$3k;OntD1Ku9DIDdQAF?!&QCMF#ZjwmK4f~< zHa0t3TLd_qE~YriIPcgDq4`^ukgkw017{V@?TaFo5jV2)BPoHl+7wtcqbTZ7#PDQT zQ?OBl?{JJ_HojC_7eu$@{vu~0V|bV71CcG=)RM}8gBI@x3gz`MwDQ;`@3jf`lg;6N zAa7yqOi$0QpSgj@9%yN=<(X(1#NcuF@X$wb4sgW{!)#s_MtFa}cyB;gO*nMVw(xHr z;vb-iFgdWIiOguscrUOlIop{TtCDeHbBRcaD+lNy&N&le^TGrYEw^`NCWqWj#7ntr zy9-!*|2LZn`LQN>CRg;%X7fXwQ*7*+U;q61^NDfFP|`8w>q2cJV0k6g*)t!3#dx|z zs&C|014I{NIC4JzBr3BL4UQMrv)ARDTD?~SnVGsBU4vvK6#l4RzL?%yt{bvMvklN?7?K>VWr zV5{HmykQj_+JpcH*ZYGHC2fb##nm|$5ucBZo4}^e=u-4H3JGnSK{bQ8_}?}xL?Yrt zXYQO*!<rYTkSSU3zu)P8HlNf z)_?yI9wtn0+0;rXenB3!0*<(2L85HG{{gqI+-IJwYBe1w9@;*;JIB+4 zmci}&j4lRV>rQTfW;9+_bC)4yw0lU5yS%8(oV`D|VtFFVjyo-+QCdbtM)}kD_)ie{ zXL6qQ#E&hiD3vFdTjhzjWKd)xg#`sc+^T_ueielkIVCwcC7Xj2iTMkZ`=b-`L-Mf4 zFj2i`W~R6)IB3Y#tW}tCm}nyAiWAnmb9hg#f@}g9IcUYKqU?5lKUCB-h6da|@ehp* zo$T*tS1|TJB8K}H`>S3NDdY1?kc&zYz8Zwg6?QZO_<{3qyIFUbMj*=Y5!9WVpGOlx zia=sAY$ad95hpQ$!2&DYhh3T{tlA!XWnAg0=vfd9a)VLH$e;pV2ELhpBLf3&Qc7Ab z*9CLV`Ht#Tu`@^rg~xQlTI|(m&guOz2Kr zG7978hKJ$h_62@u-8pnSCKa1%Ojl;xDG=jIK+T=D2?2W?xO600V80!jmoHX5cPPA6 ztX14M-2*@w#qx_Q5Sym(rW|sXlYLNC*Hl+lJ-ayb)PJ^!o{Z8Lnz7dQ z){80u3frY`^L_B~*7w#0+DAN*!@|Pahd}6%STe4q)^;~F)s&{DrkrSRr()x%EN9(G z!CP3{#7pkCO^@o9mX>;QOUYxCI1EauxIjEQg=aWgLuF3lPnD9A0vJWk-^*h+v^`S& z+h(5;)sWJFMrVAt{>-E#$xWYDfx@p_tc6tGcT98cy+(-yE>#m%mzS4jWFs~8^{pPN zCshMQPjt?yadb4)^E!*xOKl`{H{!CggWDyEzk3YlkD3GQ)MfN&sf1Ev3W#axs24|T z4G-4OAH_X9J#~)@7VuxlxqsVbkq3S{Cc6ac@Ue3(KL++Xf|fr*8Y z%Ib~K*e1s?+|=BBg?I^HLhpR(oSc*l77xfX$)kCvE~;xhy`X+FLKn~xoCQ>l{-*`t z0UwoGRYGaiyX!lNO_9qRBjH~8+K@~1h@NpDL#ruhQtXUNsAA8!k~ejM(@FSw>azLT)QLsSn4*o}%C`a!`YT%EoW{ ztSqO#J~1jY>Z`cJ9WD-(I#j`dKqq_#dAJnpb(jEfc!RTvRk3N?-Q z{oH(T61=i_H1379TKsekhf|^T)=*`2LVm(~y&c)YV3>47{wATH4U1285qt*+hq+Va zK*|xL8e6&e?maJ?*^Xh!tYZ}6nCxiIHBbLq9 z-CtX8tw$!2y|z^;A@c_mOlKC0>T*L90W43bC>`^n(GSDgary~ed>M%|m17;FC@=Qr z2W`;4;ITjM&l;f#U3kmE7J_vRY{z&aQq)!7XDUH{c_dE5^}8YPByA<>HIdr|TPwdC z8t&0VzV-V{Tg1}bH@^o#iCeqJyqpq>?9J(7$G{Y~PwmFFWtbST|1x@g(i$jN;2@Iw zL8;Li*NPW5v$io}A>jRjKF>WlLbmT@=W8MX*rOx!J*O)i=yJFAPuL8}*aWfQfB&cT zWsU$V6>^Zp(HX_^n)br4jWB@%d(jgqa?FNv@=F6hrV6(+$!jC&^j-}7MO$QJ#GKBO5Z3xK9pm0fw;?+;; zU*w$)I`|?3fT08E75vE~ULla_H8-cuDEkR%PW`2}H>mXA#n?cHo`;rL>!P6|$G2zv zLhcFeNBe-BiJCCoWiRDnyAb=+jkuR&eqn}lYi6mnPA-MjcI|Lg!p4UsQnc!F`*7X5 zuD)Kgcj{WN8>@4@#~SWPe+JPO8|1h8j*#$VG#NNzRlkoezaZyFGN5F`5%_#w(jNYL zA?ip1@6->x^tf^C8Py{Zc+J@^;PMTwtP7W9P}7#R-hjKfDLDMD`Trs8t;4eFws&C+ z1ZhONq`SKX1f-?A8>G8c9zeRgq#LBWOS-$eyZf8I``hRI&e{9A&bppI)F;+*tvN^B z_dUiaE1Nayy{>DQZa#WmkoLOb-JkvhZjAu~{HsSCe8+!&W(5Xpb=|M=eBMsd8g#EZ z{?I8A+!DONQrzvI2DT{*!O@lzPssFYApa&7&WXKR&y4q=_Bje>+AlkQc`3pmH?Cm@ z&6_`XdozK@-L3VMr7{GNg`xpbQ?WFaivOS#-w1Wj;J>BsAM8YLMEwj3Ai+DDE!PN_ zURe^jhV@TsWFJapPdWjL`^c(U2U~3>SG~GTr2fJs71SX#46g33PV9W#K)V2lf6DQ^ zm#i$JO#ZwEiL{2G<2x&nYcQ6y6VAl0C!F`t%se* zyF>#1`DU+2Kh%m2J8S!WUu|6H{(_{iqz|Rm{4^A$l-yT-lOFRM1-xiby{9;?BsdeO{@|$M-MU_I(oV^fu5Y> z&zJ)VuIE=BcYfW1OMlrzaERhbdA(qCkQ$Hz+J&%ZX(GHF((K@E+_cDx^^t)w1R}+7 zl@-qEwt+F)W2L9VXr454bIcj~9RLBm2ao1|LjVo+3?%GJQ*&Fa%e!WMQ9M-6Y>uq= zj*GLS*w_TFd-|%Y^TgYm^h-xe*KxdArlt}s%M0Gr6P$b3;E)N(SeSlw^I)hh-$=-U%q)-{X=yFOrfX?5 zzTIqT>_1(u((9OdEc2$&cL14y>_JAu>1D84?7KB$IJ+^}^z#T6OzzSIp8op1&GVjX z{j{8xlapCLe5bys?TZTsGjZ>@ZT@x=R@bey@NrbzI2kY3I0FjC0pbs<%Pv ziWIR4ow&F_B;e8o ziMn&T3A71diRi74NGM)@9Vlj6L;iOXEl%mpdGqsdBVhv$IT-DmoQS;U#m#DpgM$NX zI^DjC1(sTi8yNb;AWYlZ-DhsX(q%iUGg`)h@gQ=QxioFQd?-7v!|RDP%#n&2)?+=7 zb`rOEF}Tl*BDC)6+8%l@3rt&&F$2}xcfyCpzoBjEoGTB_iaDxLm-dqNG0hTdKE$L~Uak^6f-? ze4Z`X*{Meaxc0b8h?D1|tHHrpgdv@OIzPwX60fXoTIE@PgpI+78;ZYNZz$CzGpf%J|0EO#V7+MimQfA)johJWXj9HA@tKmVe%e%a{lTKX*O?R{-cy? zZ((}QCvhK`(9}j7uA`@ren?$`^KqfMxxjE`sub<7++rD7*|;Q~U?veV8WQn%-~>)> z?1>;7MifuZe*#bntWC43jqFGYN^TWZmUVv>iqM*6mGYU=MKZ#1u(R3Q{YEZo@9kZh z`RQ0lg+;GGn^Rd?8Qz$c^^25_3h{699JwY>IvnQZ!rM1=Pf6NJMB6F2uL>6KgW6v! zotBZ6!TR01eLbtk_ttkyc}sI)!93BNN<2(HQa*SvH~>w&^ZD-G%Bjnm1)!wXyr%<9 za^`?mOY%?u(D>*y(X4gL8z%b8LyKQtDoly^SQJp1i1_%s$R`IPRvzoFRy{iLlw?EQ zef3uT&F;vA$aCrr2O*a3FX_{GjM>H0Y;tO9Fo`zm&3*O@5IrTm@(Q|5O;&0qTUjQm zrK~>9EFUXwzQ|~{OFHwYyV~xd;Bhz>#F6URpC^Pel;v-@O zi_V@F@8=TLp^cz}jgj#M270@yTAiM{3Q-|dQSary$p3MTkmeoeAKKsDZKEs&Uy3>X z;Svw9IxT{4Ou5BPd^|NL#s^%J&&|83*(Q1_g0OrN(mM6#k54JM7=tw=snPE-Q(Al6 zb+2=P(edZ_d=Lv53pY2n0Dml!cNp)mhWn#Z6Zi)A?uQZA{H|wQe>K8G!hbY6tSu7W zU!bwFva_+(pg4(w5-&T}$=4OpI?Zn9r!7gvzr{AT8>mk@>olARsw=A> z?HP9el#NGE0DIAE+^w^>*RRuZ$OEa|o&|QTvjKGe_(mGnmDrzB`G$exjS?$6JRy(9 zO@#5klSjYf@A%Zyk@9d;y`9*p`i5u0E-C2jBBX-p;`S=a_ zN!L;!Sxth9j)eywfJIxzTt&V*(E7IR?Cd8a2%x+23#n=L>K(ny-5eUA9T*sp+UT>` zGffTPMMJ~Rq%GNCUACPq*aXw!%-=p(tugp3c^09nuquv}d#I>w?$tsyJe&_Kbmwe= zFoP3Gd~G_aQVKG{oa?(SgbeMQj2XibE}vRy@BJ&N!vj^XEe-iyrV&S+h}#@aU%i42 zUgZ4MYu&Iv)An_7{`+T>NjIddPDjXdE$2PK?4oo9^&_M53d+$z4NuzDw4Z*__CC-o|?6FX>7*8iikJ7 z*Qo{}#xp32ICl02A@Uq00}aP$qQm+VqNl+t^`0{rSIxwFhBiVX2bK=w#0bn}uQV-S>scKVHV&C67&4&<2aL z7A0u9upmn$cz9jBFoG& zTW>-(Chy5Hq;a4Z>)lrqrZohy4b17scOAMxb%lL&DTy$TtsSiMvU~2@^5Y5 z0`9J5=he9+E{yKP-4~_9qbd;z*Rk5SXJ?5R7E^~Vk5~A`K6iZh@Q9evQ`iaWD=K*< z#TarZ)ZSV$`yc%jc4kq`5UCO!=t}8uvFxJBwG`St{AO<@w}D{+SHh^=_CE;MHRQ2{ z1&{kFORpDCG;#W-`28PBwCc$Jkbm5#G)0Jn^2!elm5ItfKZlc8%WTJ4+Fq_BNG~Y* z-S2%8Lf{H}ke)YMM_B)r%pilC_O1Kf+B+Lg&5wUZ0Tat0sWZlnw>OX~(2!Fc`~5{M z@+(H(ayxixYJr2fwao1F_V#vOIeCxl{WVDwA5(lxs7x70%gf1ql{hXsK(y#Wq}Y>y zw#%05>K(`s3HbP$M6%ON@w-k;kAEaxfSIuf-+CE78mQ2B&CJY6m8B9BliQJO zeuO3KBr8&@26Hz4kbn3?u4`fx^rlFv(+W^Hjx-&;Xt&u2lL-2mCGY6@Bt1neYGoCzWAB*V(beP=)E9AGMF^|ZznWCU%LMgEz4z%j2V zuM;WW@ZD#ex$w7D^r=mz`PM{if@2?*o{wi*&dcq$rP4@xDbneSF&uV!NMY+%+TzJ+ zNxyZh9`Sp8vTL(;cD`N`ZUYZfs*zc~FY1S^)`w&jVB#LH7LQ)_05ipj)a&0Xiy{;; zdRlNdu6m13UJ(Cv!Rc4=<9*N9VsAFIfI%-_fLst5b6fz#N-%BYQ%Kx<$P7IEV)F+REIcymJ( zBEIJ#-&l_^$29HraCExcPZ9aH(-e>7(DBldzA!mJc)s3*#a4u(?tloAQ7W=8JGB|N zrNE@PRBdhHet%7<4B-5$;Mus+C-NvA>c9uhWLlt?z?$%UBzHI%=%_i71m-{32?W)q z`He-qJS^@@Yq#J#NA0e*OtziRr&~tbB{mKk8-_ZnaxSOlopn(rNl8gCO_jYC>$!8o z&hkeXjdXx&+t0QcYazkdK<6BCWUOHAcaQPr*&NDEoP(~02f`~@6~Gn=`v?I}d8=v2 z*~ZbqSuG(VmdX9;05Hd}>50{I;FW}IEjMp$=(3R?q~~iLlpNRK(%>G45l8$Fn~bRZ zKiTAbX%bNqHEgxQ*m|B?ZVcu3qTO0>$UL$GN+9lEe9xoIKD7}nhAonyshNCLfuRq> zYx?dEEOu}mXr;^Cg!rk?Ijx-whQ&#_4M7d1Y1XF=@19#<0Y!($#c`&f4~#)vR_)IB zMO@j`CQ?Q@lP%uqM=>D@on~@vt$K6el>mFOE9?Bi0eGIH7JKh6pA>n8@>qGq)g|<| zjjcT-p_{YY`}F0lyvl;^?}~A!CYt)C>u_l(8HrA1#(p(L6|(*Igp6eJsJ!(rJyZCa zqo(@2sVR5+T~p889q)aeA_^oqw33yDy7!Lb{B$s`bji)~;fZc*V=F01C)rKl$Wtvb zAYy5Br6QX3r(95$Uhe=QynlzMw=ZGV#<~fWr%5xcj1DXd3;VD{ud4^ed`CTWjd{^g^MQN|(EQ6BE+y3q7`FxRK zNx(fRyOol@*Vt@0>)c&=oWEAV@Z|Jjbn$L&&a0*TA3S=cVpWx5m0G;&2gs3TgCysG zw=(CT-JA}RJ@vBpa{sX9;n_pR!~Ha2bd!r&mNlLScRbeHI`s*s(XgcLGZswQ`{NVu zr01it-Mp+GU)U1E#^*1koD~Z)7Hn@Slk*1SE z6*|Wpety`sAA3B0K862xX5HI0Se%vNzg zyN44dbVsF@lq6Rd*DRxK*um$3}KT2j8s56BG=9Y6O|bi z5>lv=HUWr%B~@w@)R4ipxoZouMP4b3Hv{Gg_p& z4}*MwNc3rIHQRX(voCX1k8{q<=BOoDUDz&f%DRbcBn3){iuxr?#jbak{S1J+b)(ne zbS7UNs}4#12Sj8qFxLY)PK9fVe>6n3z4(3t$;p%tDKW4M-k8oYez>;{bV;ew-^~!q zH-k<8kulcU@a*^IX!47~+SZz8&6H(ecJD91v)^SW+!`>IjiG5fR3n#%?``he*)pAa zQD6>eulyc~@bM8=moVOaH$73=1Dg&SH)}Xsy*WS}8J*bNSaHxkD7P7E2Xz02x;Cdt z`lF^hm~cVoSiGw|zPqy%iqA>k%E0*D`bScK;J`t!HU4s6Uw=ub&TO?_Lva;84^P8C z^gjbxlFjMaNy)h;0};LL{t+E0%P<>V^ml%F4UvMj|gCeH3F9>p1I_8;TS3nS8$x zkhuS+YT!__!L>6KxbjmMkK6sW>z_AMQvoRY#wIwGq&MRF$$0b97hLflCP9!k2V&7* z38|^67EHGG7z63Kxni)refS^N47{dL>Lb#H@i@}v7k6tOa46M!dcmF#}C;28ZKf ztmm}#qJ@=Nc9u?oIiIvQlVvqYOEd<4?t1{s*H%6(-Xkj_IsCLmN`!Nr4d|2v5ZB%w zE~=1k7XxT_)*SlgG%}+3>hJO+Hc@3h?^(kV2tCP2_q*uR%*e?RU5iGHD5}IeWn&n2 zX{Qqs$@YaMdZi`2MkdUc8Q52Is3Trlb~q2qff<%n`~H*=$%>wUmtc8f;)0k0jmXf_ zXfap11BjDwl5oVU6H*h{-OEy<6JO_2^7zAQ?DmgcD;=W>b!Cfi;>n2Z_q3$maliQo zG4rxJD@PSF?%whVO^I(6#HCOxtgXZXvJA6_8!w`zeE$eO$?;wgO1s6@YdBdqJ8m1d z93FDba-j%?43c{7T#l>G`=RKs>k<52Jm=^}99T$a3P4iXY6>)l-;5)VC_D=u9qu~K z+L6A1$LTs-hkV4FcQ5ac(!Ty|-3wDP+;oo>7h6j!KJ3lk(B%P}RGvnf3eUwF>bu!G8np)J7vTJiU&+&Fp)~E0$lfn5EyBdIIaR~J z0CFpJ9BQri-rHAe?%w1>f(n9SVrzuX!D)6_i1POprxYx&UK`f#?AXGlBX>E@kk!@J z1_WLH{M>x`3Ux`@P9Xa}g+eX(Bteczk^BJCMbyrISeg%;Uck@eggWU_kWl3k8<-){ zcR0ady$_UVtcq-~@RLmZI#^X+IgD3giH3i7e?cY5z(Lu+bPc2{r10?lKvw{*RoCDd z%g0_*{Q*+TRri}`&-C!_tQnn%lyq2H{BJJUng#{r3G#7cUK~=NgG*w;x#D-7KZwry}bb)tIXpp zW&H~CKYv6D4F!E&)6;e$VDgf-9CW=pzuRibDZcVxoz)6|`#b6+YE<6Jw9RLffueNh zuGrmk7=_(pTi0ZKQeGIgsZW;Z088XSUP<{QI2rTBy(%*!qpF(JT#bQecP6d^MG^rV zLMADcUDaJxT8hfd)KYWDu%wVCBp{%yIlb(7$?%oW>gH-m>9ehvl-X=pyYNpm9`ubo z>i+dpmv(9G*TbnMh;tuA=^_C)yyG9?E2tTQOmsnhudvNgBrfcVUFRH=bzQk9rX~nY z6#cZ;)8aQ=kt!J|8DfCVvBCM4gLPAY=EDI5T%z(9(N{}5jXxHyuGj_A=+-jUq=KdX zky?1_)aDlD1^2A$7(UI0YxJ~BeUD^ciHm&&@4fef0Amq505H29lM2PO`! zI|2d%1~~>0U3pv#ulE`&13^V6#*&iqiVbH%K>3VTT(Mf9yj5|bna}ZQYNB$S3#D;`E=--lw3e;$_@~NO+1pGowOtj_M z+~>whtNy!&0A~>Yn-^F#dp;^_sy2>WQ@E;N{96kkrY}V7)H);n>-DB^_cwfA(UMlm z>CsuPVZE5JIgL z2_S)gvBZrHG{P7c{PF=FpsyM+&|)>oAOQeIU( zU+XEXd=wNL8{4nKpcT?mKI_~s3!VS#tH88ZzJLEY<}Oh40L`)WL)1!b`}cpVKyKoN z)Xdb}-0mt+P3Gq3wVSA%)iytA+U6Ji;eYS`~U}vFQ6V0 z0HZJ>`Veyih?OKYmb(;SFH|&DlhdMd^D|vR?;0t?;PTqYagQFO!dQDdujPf;>tpqU z`xzt|fJ~pZhfV#~w9(mEtl45k&}R4ySOc#LiipYJkYl#7I&pY2)BxIX|z6anZ28Ai8f8 zKCX$~MIqsjAkOIMG#9oP^_d3*Tu#RVnM{95f?9k+LIR4A1hqs>U$$Pn@oqV|&%7;_m!_!UH^R&$r7 zc=@6V3Bov2()8^n%=VhaFMGzX?H)0khFMx3CgU9pNM+R=w0(y5`&04VoEolM*NMm1A9H1g^GT2#kKRn(tUmyTtFe^x8QOnReTH|KAoxxFuGWnU?{-7v3fAeMB z?K^6HL5f#lN64D2)}ylB*ccARLjx_!rPnA5@7StR-+QxoWnPoFXItVr12wF8zPR1b z-(Oh{#QvPZ@Gq&YBFT0njkkhM)mM zN$X-*^kg<0sbs&VG)@uS+0OYlV*;%w)g6Q<{oely{b*`Cr&~yTg(-72V}* z23Jsdznx3Z`53idPj>$Oy9ZPunC)8)sz?{RS=CXGueK(0Y>@CThS0?Zx9h4iGyCTG zgiAFEQ{RIT5z{T2`D8!Ao@yOtIns7~aO$rxVPXKn)Izp_l$c(0`)kmh_K?r>;Q-d} zjo;AhVt&b!r2fHSy3#Yprq1*vJ+zq!mV)DrwnyH6({-04Y`Ri}!lpE&H>T)GK271y zE!KB*jBgtD9|8prABg`nJB3(0vZ!Pn{YJUWprNoE;7Q+-5Zn%2+IXYkIymsioj z#PFhCP1`RC?e|-lYbJ58v0nJ@8Kti7!KJq)=~%$oJupp)>Rn;j^F#`yfuCZe4O>7< zd8lBSzpSpcRp4dxrNtDLI3>MSrJ{@=|52L7d;U1{;Ip|E$CDW%fc>`0>gnp5-h?v{ zBP1z3r_c0MNL^2TgmtWT_Pyu5n-jWoVkZKO&X_qDc3ngW(iijk$qN(g;ow}H0xaq- z&7fu%>NSS>I$ z_-?C97J;dM7mjZ9w;r6AC*C0XRa+~EOvxco{0sKinW)Vv620u%^P=#D_}cZ^i^sx1 zJrE3uXxeJ5bDTWPhWqrV9E$O$E{6p~>8tJatZg8JnvYEOTyB^|7Ut1$Zpx4N1Xigd z-=avyRSuJK{vd`mG`IsS;%Y}Wyt7{LYcwM}N*ZHo2smd~U9ylBhOxc4+&?vB-{8Q# zgTmsD-*~w)T)8kyKwjrX#qE}?@LTQVVV+PDw~xhqs8+y%U%#6_)pyGF`)D5VwZcYD z&*5MSEKxr?^&9w}?!j+xY^OGWb{en~Do5QW78NFix^TP}gbNjpJn5p!Dzf5y+?bWDL^6jg+-!gU z5lcoA7VHoL^Ex*%1OGq{bo~j277Tx%@)3l7(xx-0-vZDMcn+ttO?KYwML*~%>LYf9H2o0@@$~2K zThf8(FWbVfY>HKWwF^!4`)U@89O^yLqQ1yvjueXo3!ITaLllI<>?mi)ujiN9G0II3 zEtH&~WIWtPWtr&rEfFqhQ)Lf!RcXzvY&BBM z6W@>Dzr1&?1^~&QH&wMaYSWqtC1y0fAia{iI;`>EUi{3Nd`o|9Z;hNfHTnW)$Mmqz z`-XmjhO2Ya%Bal*2zXhV9tAU7oc7uV{&t!Bi1YwDJ=K8%DInK>Df2p++iUMIsivK{ zJ*oPBFp&eE=z{igR%d+s0|e9n0F=n`t0nu_`9FQ#5=D-ztc*Llx<(?Kslx8>qtScO zyT61ddFx)c4O9jnrCJ$`i$94yc9C^a1@jWoubwmuA1^myzC#83vB~|sq}aWNi@})y zE2;3lJPSr#>4_@&h(YWN2kJSsF{44?m%Xljtl{Z{d}U#;DTNm)kZ zM|0&o+am0km~s7q+5AZ!ekjN{j@;bdyiN2xH8%50-*U|u>fPOFr4VHC7U{@{{7~GY z6Rq?N!ca1DbK_9Z5)3#juaybem6ai190w@~Tljjz#)0xHC%>f8`QA;zfG_wQt0_6C zw%m9zw1NWZh|gi|u;KcS8wW^fK0sivrLb{#cwKD}Gu6OA^W({q7xy(+xVkg9c}hz_ zJD)R-@c|NgFkil8(X|Le#d8g_g&rGhpjTEN?=az=R2zTNiuD7@%0y33yTVFrqzzwh zo1w++T;}sP?_qWwF6{hEjcXIbOY_Pky>TfS_VY_+Go`kEi%56Oq zXATk+-kJay-q+}ocQM8J##Ju0^_S25_E0%_LJ9Z=9gxUPo&=ttA@Ja0%0T1sV<8|#&8;8t548~4iglK1uAHvl$ri|vYY4Q-6bd|>Qu)Z)~vPJ%qVK4 z#mC1Ng3V+UCleuaQaB)&t&kXU=^SWp?6=N+Eb^sdAYfr;M#8ZN;{Jl{qxtJ&)wRaj zJA*-Um9VX?t!9!vTn$0(@9UZ{!;Yz=(*}F{d!EX!48OHbD9=ZK;Yaij{94`ohyIu^ zcMr-eG??@cdu+$89B*zjFwAFc8JX&Hnp&8>PUBzMT9xoR**Pve1$7)$cwH!G%l}r< z#sAFvym9;4+S!^-+7X(}S5SaDVA?t*3~76P8%UV0)j4FD-j;Q=iB&pQMG=xSXdD#e zXPWWPKA7+$dvo&=top6`{m9vhWx>o?R#ZG%Y!0=_`IR?eIOma+k8!(ut*RP7Z8^(f z8LJ?-^-5IqjXl~cKt2fN6&CW8{&LwZKm>`C?3+Vj*y6LLxtWQFhfzeY=F>XpE{b7o zVyV(_p0H7Pp}fq@b6~Bf4PK>%h5Y$KFg5&DCs{&yhGhn-=DDIrFPHKO=)Qj13BueX`P~jmb&Q%1bSM zB4x_}udF9w8lk+3rhU)RxQN{*_~nRsyOylSU7;uZ0SBLl*|)(^cu2iiuxiEfF&wBl zj0U55R9sxr*2bpj>}==gNV~p$ zvU33v6XMuiglz|BH%uUaYsc%&%pH4N^KOM_&bypSi-iZzpS0%ZUd|zmEa(&F(su3s z>KY$ub#<%Wf&H_P=BICI#}2=r9z0n|{Vydov;`B9IsN z=4^7l@U(_epVRy7_rND{8KkRAZ7aZ96smAavvU|57(If41Cc)tGACFMXyy7RZQD{{ z!psFc)1>NbsD{AM9vcn}rMI1*F*j#xQ80c{GIVtJ?d{hk2St%ws*yXL+?3M65-o6s zriXYI>FQ=xsFpPH8673Y??x>u86o;|k_Q_YK23%tcf?iYicMM#eyy9F8ox=;+`x2( z`J=CAg2&KZ!mZ>nrMzevwp9|E`iA9i(`YDPpi^fAT7=}-qp%)ivwgFku1+Ed_y1KN zx7=1!SCiCL(llOS=1*cL`g}DOrYl5??@yKGuz!@ zHI@K>AVT!4DcHr-_?Mn>EgcdK`4z5fCb#>mDZC$nY<2eE;zWgqKZjnxHc@f#INwQG z*s;9y3Dt+aH8IpbXh4eak84P8et~#(#KO!3s4G+%yK@^7h~Y+7K#0w`4N!?8(4`9C z;bRJ{iVVjgBV@#1FCvh$Z03Ze$^4b~6-4pNb!(@zXt@!$!kWRB>E@8gZV)` z5iT+QNrlbns6>zmGINq-1D+6{6gp;dFQ4hYy+m1O!kkb3gcOkfYEwbs}RY$RqYx5yeT zAFq99LU>S&dN^wR^R5b@B^V6xj;r!`LX^bZsXTNkMT`qUbBqMW@i>QSWV*@iL6+ zFG}$r6*R_8Bjo_bP1ITRD=Yk*ILReGE@gUrT)5$k#;)KWs6ca;`{*A{Sn= zIw&gkL^3fBIyx&dj*MBM9T zapo_@KS8`?{MrUgswSYQ!vKBZ|A(BHR^~%qncx05K-g8}7RH&NncjPHZVm?%&6)gy zRTN$kom{oX=y9>L0SMLECfPtyFbzHJ(ryh26H!FuH@-#{0dd!N7+P<>z0*ejm+pz|@WTM@?agho*QFa!@x`FWNJ~otfgD9x zL@F0CS72JNw}7zAbv_PN2D6zrZ2f5lLL?4sdgy|G6WwLUWKnJd%d1x%Wg|9_k)gpQ zj(5j|{1{hd^;i4T*0;Xd%}LkY%e6iz^2*VV+g9>ww@I;6)sjr!ggn?XU)zjJ`ipsx zTP7xJs;d?~!`lJgPDbTtOOP4&om?W22tpt*_+csNQwf-Y^Qz|JuK1n``*I4=qTC+d z`2fDC(3;Zwamv-VG&y*py{=kVhUA54>>DJ*k#B61F>Djj%J)_bG~VlbwclJ)3tsDI z1(~{3jHZIluwXStT@AGL{SY)XF-b~H1R=B6-9_)f04)m(3nL?nadT^_&FRM1Ql&RQ zTPUyXmPk=dr`JUSfEO(Q9*DjKJc55skGTqRRX{<+HnC8L>>e)e2Z+<%v7(}KycM&S zlEmhjZ@)HfBNI+~0ps_`z_H@2&Z1yido31drrRp3)C_%ng&f&*Qe%A2l&IBQ;$bn$ zAR4X#t+mR9gaqFN7s5{h1$zZ?YYY?uQp$01Nmk4u)-QDqidEY!F`4bkdxl@@G~1}D z$(#9RCN+%{D_0W^_Y%h?2%7z;uD0_z*}-Ff=kRcIJ=ftFH<&g*FMq+qrlP)JPJX%l zqsa5qp}YN|_`;L0)q8=cXD`2#BLy~j^QfzB-7*Ie*wqGZ4K!IKl_a22*TTnyq_iwd zEM(+loLuO6xQT`qJXM~)!x^ISBa;mu};RIt+yZZ zNdev3G+Px2jGdpmjoLd9z2E$O#2fQ9p`f(y>Fqibj)S9Sc#1||c6vt1-8#Ku!Mo4m z^?ppaDW&B+a0Da}teAlv=xi7|_7It(lMC2(V6V%9Ui(@RQ1BO+`!`(hfL zkGEEC1_@Jc{R{sMaiSK#0+<|>C@k>7P-^^z9&qRIE!Ez1e+IAB>y!n>1*dHgXaffS zDMchqNGM%?LmGmI2alW7AqYt5U90+9#7iVw3ob?+UTN>ua>J!#mUG`P_bqXtZ-G?3 z6XQ7>Ykqz{*h?iPC611cQ53R6eSL5U2#~*JdVuvX*0pzr`jhxy#KKq2$C;4nHw^0j zj8`AW7#VRH9PHa$+(I8ugxh}4Q~d@OMF_8Oh~0|q$nt5->G>sJ3+MbqHfZzo zuv=f)hZ|bl>g-Genb8azhkpudx(~M4JGh7PB7-#f(?YkkeF-P}@zTl`1xB%$xHix6 z7w1QF{8}3l&fgQ&7zH)DT0d3ai=e;+e)}LS@?Inm!ALls$W=QF+1dJ&-%E<`%h&5c zHbXJ?k9GxQx7#>PMuI*vqa!0WXB)j*4NgjmilDWH^+N4vM~5&7*7h|2{y(*#yBKy3 zZ+@?|`$urAgn57GL)KE$n0wUkO3h#Js}HPbz!BK^!|C=e5efkUA;{-vNxztZLn;hL zA?EK0siAvSIbN($19VZ$EG%z{uCA^?QF~${{!;7T1@rOuN~Wa!KO-R(QeL`Y(ijxJ zYPbS_1ZAgg%JPL?Bti&6u=~ooy8&#CW3N8etl1S4>oTOu5^MZsd3&?nxcMD=EM{ z&bphwhf9G1ltX%iABO+68#wdpu)Il+1j3G;NIOXQ9Aux6Bh+XS;X}xcBA6t-YH40J zoqWbJ@9MqZnOhv8MhHRuc_^o?-E1~aZeXz9AIH$&*GItX!bnDDv^SBjxcx(W&)8wA zcGr7i`urY=+MB;$6W=zsyg7C61L#Tdmhlkvn_HQzL4GLI2t9EJdGArP#_FTAfgpyz zk~V5(!`&5jz$tvEs1*91&nd|WSuLBAV?NX5HN#Z)B8etF5rmwUeAnZB1^&EG$Lebs z80)1*V1L48askUqz-jXlG-=(_94X|JxS5~%sPyU6&%FjDrtIGq=92&53YraN@NB?H7?(>TBbXi{QxJN=0qJMC-9k^iv zpO4`k;dy&G9(OKNP`9OFKbfSVGDtsAa$~R4m39x=P=Y8{?aH5F1-we})zFw!y-3xH ze>{HSM@(WYL3frzW1)a0^`*0?r=hOyw7UZ6W$*9q5|fe?@Zr7%T0v2S^PxPKyn@$fnWfHo1NNT-bcOmrh6N~}i;D+(pk9?ud zifS7$tI^d>SJGUWOMfM6rNu^+RaW`CtTKGhbi{ttv|YG6aQ^WF^VfHia<5zOua9di z=P~f`1~%>PuMYRY+=ZQ;&zYlnL(m^#iJYYP3P>v9yFr=71t}OB?NMyTl0&Cm9e;f@ z*{>4!guj{~_HQjfW99XU_IyG$B>Xh0yVObJuxa{UqsNsYwW-!^cQ3ypH-|A7MJVes zOZMSOAqcY)&$7;~14rm*QS!p~Oc>CgMM~U_nuzMQj;6*X0!THPAlU5VUpqUyChqe~ zH5<CKmv&rpggD)%=xc>ErkJYv(jGJ3CwB zpd@CXk)|ddri)=EUHng=x)+W4E#0KxYbcZPoNi39tduL7x(0<5Xtxjaak%f^m79&{ zBq!tHgs{6`9e{X2p9S1^C@3(}sdX9+9o@`rVATeeXiHd()gtPeKdpb$OPT>}h_1D` z=xD`_j(IR6(Zhw|3KX^Os}$W+wJw8=Hm!pV)hwl?gif?!Z)EzdG$J~BV{7Z`WK~$` zCvc%*VPP>b=#%Mx&vOGEs58ifRZDTQ8SI~gBD6L}V1YPdUe@N*fSfZgZT(0ryM~rT zKtVlZ88^J{PdUPrQ$}Vf!2*1RQfNwYD@WR&pmmBF%GcWNbJ!J!#V9mU6qc`AzVZ zYwn%JwXC>AzOhnG0x&QsuG3I%{(XHC;MO~&-rczg2nYxZcPQk_FkuCQG%YJTn@*z| zA?9ze@y+<;3iekN{{7|6fVFXb-Pe)BT$V1kGq80yzRtDsY+ld5rP%h>;IP8Z$bW7c zFK0sQ@v5IBAu>$pzwVVy1(PtP(^~Pecy2a!b>lgPgrA3O;3+q!1hT=esd|s-BSD3-WBSXuqrJEXbR3P?&4CLo}Lc4Nf8m~s9q^a z$@9xg%Ts4KsI)x&Nd^3L%eSt+^ZEqrHoxuRp+3qA-}gEGd@U(-CyC^5P#^$2!Qw_w zzlOCy7%^nw?)1&1+OH<5H@G~d4o;3bl8)itCmICbZ5Y;{Qb#-?;jiqkq{q@eI^wNh zDl03$eft)ffVcHV{{{!lLk0CvOiWA=6mZKr{E@>51yc9Ee9%1$l89s}Hx8*e7?O#r zhwLFJFEpkfrg&4bGHl%KN0w9cV|>8}niXzrQP8IX$^mAnQjFFGS%+3YV7aTSYhi(x zoLp2;u&t+O`*gi0&*S??mnf~f8}X7DXdP<-^$z3Ze%F?zcE~@D^!9fx5AbEqtv{|$ zx(W&kLh-oP_V@es%RYVjq+F`qgrlx|DqBzMJ9>GBJc8ZGrd;;3zqd1t| zFVweGSTMZkDe_^@%zqB%5p|<^?r?maU*MLT-uB>$7wUwok*$T4j4U7N&&B{mc^A5qWISWU0FBv7|@aCIeL0x>gdFJ`1Yp=OBLnT5FwPTKT z3ylv}Z57!1An_LZnUFBs<^v-ZwzYp5`FA(mp!r?0_kfvqU)d+A+%ox6-4)4{T)h2E z_qY=es@q4%wrfxYsN084zd5lX)@HYi?nIi-Yq?L`3A% zr@Wz;FIT#PFoDW?JV#nmT6%J11Qr(dXGn<1=HDT7EB#=MnWo3zgBP5Q>aBRdOJ%(m zg^bkn^Vm&*9UT-?i>F>JHZZ!<5LBfWHPU`c!DOn}MMJGwF@P$(cxh?mUx%cCK~^ zLXh|S7PCk4rTh>LK9?vmoee`U;oR{$R!c9g^qmk6E^dl34-O7CY2)W$PaK}}qy(UT zQ|DT80}Y;M+{?N|L^uc+`U(e-8$2!B)}S**HO}gvfcH?QpAXcLd3Ia7PJ=)oF4IiR zY)_Bd3ir;3^BcG8K??}at!bs2wP)*ogc<|CI6j4;ob5ab6A`)Hr0m<~+iKD~haM(> zi)u-OyL%Lo>3%=oOM_8LNk?V5NsrHcw0PiKN#Jr+<-KJ)esbB(x0Mw{t1CFD&~Q#+-*jjeUSrVhF<;Xgg=;E_`aqDi?!h64fvahUWW z6&3ct9{ofm$;iws)vWvRh?frYS!$>O<1}*bz2&^u_2|})D##|FK28gr7E(l^M6B@T zndN1(i}NV`e|)_KSkzneHaZr9NGM7vAR;9xDXpj=Asqt35Yi>xp`a*8N{1jJ4bmOb zozmUi4FlXYocsOnz0dugZyuj>jt6Gux7Xf#t#`fa-D~HiIn4NfzfLk%VnaLIaChzF zuqRyX;iNg>I?p&i?7K31ch+Xt8kg*#lGvG&mTzG~IxHYKye67W|LL_ z4p$E>G}cYH2c*QsTP*YELe3b-dDGc&d0S{D{6&pVclGVTNod9p;Dki9)uENR{PKXpgt*DEMcj6lQa4yV^-b z`Zqr@p`psOpvP_~((tGs5}1KM!lD*9&iSq{>@f_)3Z3Ymowz-wiRHUkvCnxuJU@RH zA_7~k1=M`10khvqXp8a-_s^ZQEFocG6AaU;uDW~xp&*T zENNCQbmt4m=ue543&h;r{=8)bB!a3cFXtam+vheLoy;^kM;%#Z7~u&t_x}47J-Y3i zrKE7(@P)0)=fdb!OM({{soce~yO)TPzV(P*=*RFQGO)vY1OC;fPEm8wmm1huRGx5~ zy>QcU$cn>E4Fs0smK1Idj?Kq3J_}4|GKZ9h;ve+J(=RJcwG=Q!%~z70%)K?3RV1tU zt3^4$c#{ctW6x~Pex(9m7~+eX^jXO|@A3qNYvdc1Q;yo?*kD!E>Ob^yAz&w{pmbd5 zxJn@05yQhhu6Nm-Raw+rlh0h4!7d?nyWX4)TLZ54vn~zQc1z1cR8{ATPHN@61!@2q z!zD|_#P=?>hB8S=OCM}*8tf?Fbk`&?%OJF|$qD^^zwi05W=ckIzRAZ=#l(Hj0n!_9 zEs2WWctU&=Bf-n$lVQAJ8^eA64)Hi%2`?4@0&+uv<;7nKp7_3Jq~7A*m1m;%D{`Et zM`nGwMoKory$TB<6H9n~u-zVbKB_zI^x-7do6L2!k$K&zeZ3w=0oS=dNajf1HMY*B>+s#Vu^z7{OrQ}#^ z8=E4tu@>!|`Hq;A)ggBD#D{+>f7*v`xPA6Lgt8x)%XK$?Ngg2N`&CYyeW@%4(5jm%;3&6tykDMu{>X8r&QdllNR<8=udmkTf zA3?&k@!S&$!E{|ElJt3N6DRnyq2++x;C~US6K_ z32kL);%>KE?ZPpcv$fe9TQqt?Vz)xNj7h0uEdt5WA*P7yp5A@j1>o9XHQeJeIozD` zfEzDPPYygjeS+R9DSqhl`dthFUTTLT+8%mx{JD4bz3iDyC~nkK-JmlW7oiCP&wy(_ zM2E)|M|*WF4IaLti~djZ7rOY9kBpX$JOkV(-BIPv^6CV@I8~i@*u35CeD+A)MIEw1 zJJTVVe-0Ix??DUW!ljQi~+(9Q>8P4FGHJXQCqZeS>b z((})~p++jH&Co~J4b*EA?89uB6_WA!9g>dz;+;S8eC;EaO{-HU0qi$>HuWfX42d{R-K$lv$Py-M@%iN-W68mR8k(9ndjAVUKJHa9n$nwsFB z_yn~YmR+^f$@3KZPJ@GV#1nah1OMd60Hv1R^+s0I>_?2uKAOd({Pj)w1wpnP+4Z>O zRDJGM+@T-pyMFlE0)yLXc|2g%N)OH|$8tz|9PRBFS5{(qZM;PiGF1y6Q&H(`j9295 z<|>F@S+ooZu_6B%7?JI>XnpDMgRBZt=rFl@a`)zi-#)nIJ|VricifUn@zY7hlM)&b zRk`$>?~CCovsQ*(nRL6$84|@}@}@tJbiNzk;f2sZJv< zH1E=B^aB*!87m~j#I!b;qx1OjWAwMvm`{X=iQk|YG<=aDOO`}-`KMsIu}L(WjL${# z=i4GKUBQqc!--SF zVVA+ev6KlQO6GlCM*Nt8ESgnS_WqB+O9;nX7=4!xr63KVtn10WZU(uIW^T0S=zOah zgE7N~{-|_^YiU=D#r)<{xi>Mw`n9fUpBs5Jjznq0h^VmWtA&(WEnP!hNWfxiJ{<^1 zy11N1uZuPJv$`*Zst7{J71fcod`}%x z+WkmIUVeU++Kz#`Nmb?e{mYjxKtgW}<Jnr6etq;uWVfK@W`+gwG+aIH2&)IXP8pHPo5m`I^tNsH?B;#{$bRQHU( ziPDR{GVzdZBXOz_Lu*pFG??-sHBC}xqJVpYt^DoPDdEn59iR~fw zpis`jO%H`BApl=*)Hb?exD6;SSo$Pz^(tamx5g7o`X~R^)>dFZ0OpMwY#bcBJ3GcE zCg{&bXl!8{yKaRfCO#q}A~H1v9pnMG`M80h;o4Z)0o0Z%D=V*H+>GNTLs;id8MSO{ z$15bmDsMqwbgT+>c&o3(eFFAp_USR%*8vv80OXB8I5U;^T|pe)mZV{)rmpYpl~+*U zprdQ5u14fNn6k3R9#1&zJB6dqCMFqCQ6uh`u7E=)ASE3h9DHgqT?am=!u8Z~AWL0U zRaHU%>ZH6QuQ<7JX2;pFZ#9!S9^6htziNLOvH7{Kz8;!T6EVL1qgDIm>sL%Lah`tX z@zIf1<6DE@rKORY?b&8^bC$3Tm^I4n&rnAP8xuRYq$DIfPtmWG)KuAfc+VaXlcbQ6 zq{zj9mx;3i1b9EHoyL>(&n-4YerNT^E49#DsJ0gFI|z%8=GSW@z791pb8~8HY9OGh zCVf#gkx2E-oSY}j%2FDgpO#fqbea`ZKQ_27KcUEG(6B`<&9!FB3{V5=f?Bxv2C zT&}09dvtspzkO|!ha}rut_M3ss++q1U%$3@bnJ)~a)alA z!V@ecXjlLXUQbUC!npUZ!@j%T7ZuuDuwriA0$R-eI-Dnrkepu~%7c8`kb|@U>(b%< zFp1H^m!scZ1zfz%I-{n-FFy_QHLx% zCME`q&ceVTVZ#x3(;FGH2;||^)Rf!lp7OhQ_su_0$4C|B=SM%$`4ST|2G&l+#eBeO zz|oVP-3IQ8pmD$YhV1HuLv5b|4c@A>4d}-vv7y3*uok5G!DBZ16p5UGeE%n}&2o0t z*>I70Y(fInm-t;NI#(BJuBcP6-O50=*XPd_&PPFZGLn*QEiEnm{k9#^Ja22sCtHiN za}s%ll`WpItC|^oMV5l;JkVo-+$|XT?nT3%Ewx#RkB#|!Mh3rb%N=+)hwb;Ha_;+wG76`H*){LqN=FS2(qNFK z-@AgS7Lq|-Ml1@0mU zwwtHtdtKcvTv#G%s;b}#;CSl6%7Fi{C*rbEMo1``d}oia2ihkh6ymok<=3ch_aH5w z-j_dpo|*s6-=EeqJSxggnGUh|N={C$KTG{&v71V`31B1`GAlb<+JCWdNP ziW_IGULF+{)eB+av*VTQ>1plpzm+a09pO)EVaiqqbAWdHM{^Y)69>mvF$2SaC&#w1 zljX5kM^hwcWg|0qPDB^1F$7}FyLArZ+BMVR{H2*jf7rhaN*RL{PTZl)%YT7dgj&Fo zwd0#NIJW!-L15SY)gd1u7D7V8Z9fBJWA=!)p*(#U@3hFJeEBzTYVr8uZwKv|G~jFw z^Jc|#q5})U@g6z`(8;K(F3-*FfjzmoxYE+o0j6Egd*GA?zE{xY81jNUckjx^e0Ee( zQAw7L1wBDWbMq7#3ETT7nDEuLwY}Zlly-~zE|skCq z4$Q0C#m>e9(KA|Y_Xl|!fzXwdlw2PxBf`gzOH8~&Mke5V_<@_7dwhDaOGiOTDM+Kd zZwBH6m-#rqW;Npab+42ZIxMVju**e7MXMZk8U_Z4LRj3nUQM)~b?gn#8Ix@6JWlDT z8SqXsmZC{wzW*hJ;}Rn78u8tmh-cKiG3&Fl?~RSi^gGGj+|EHFbSgR!m% z3h?!py3O9Dy{l^y){VjITi7xBK52>dBF7Y}X@VNuGCdvL;qfsn{K$xi3YU}qj*gD; zaX~)5D9}1!IjU{>w9b9;@&Y&9T~qUrjt=~)!BS5WRB0r|#I`m!pUq)U${TZ!Sx*o; z2+peb=qDw;lsPiOyJnFiFvCdgxzz{Ps^uf9$e|olzd2P)!EcX`kN?MEXC4wqNWCGV zLbCVuTY=qyKb$=x%>>6Hii#5DqIjya2uLfPwyA)Zs)6qFtRNN&**Xg45ajtG_PfyQ%GBUXT z0H7O8EWivX;3NH@t{S{Lb%h)J93vwmA@Bl$fxl8yOTbq^158*|3ES5M$ipNw${D>K zHrFktPYCY?EC1772u^)0frV9oYEV;GBt;i9-I+fl^V_!y)${UK4M!#r?g&{$MUV$u z+uCZB*{(r+Uf2z2{9jrCKoM|}r#~6r@6=Q=8;-?4Ot^vC z0QSvIjB(9powD-1o4-;@ixV4~WL|xhGPVsBp^_Nzgyk%GKiyQT|DZQn&HvvY^3-l7 zF$ha>x=^dh_aHqz9c}G5Z{XX3lqTz<5_Js;4u)eTDr#yI zWp>g~0qE^zhvvn7X^Jo-5SI=9_N}nEoe6BM9_15u>QymBmCg3F;0&0Ly22M;v%+D% z+TmAP3O$hH>oHvV66;^eqI+FVBGHj?lkb0*FPw~yzJuYG0TJBe(T_4RG2wUEo(-UU zAr<`;+K}W!2m?L?y4UVE{W7hlHCh?8z$&p@uW~y5omh{deAW`4w>Uj({%O3N!8qr6 z-C9OexB1WCck}I)%Bn^SgcgLpzRlHc-Xy$dup83dE4!TVXlp52G)_tE&03a|1yJu7 zK*80EB^80VS_=_?fPetda|xIlwm^6|F*kP+Q21IIII$~YR8_YL2+)WtAmAA$iI6KQ zkV^E+O%h=nx=AWu-)O=C>&^~(2`MH6lUcul9yl)|Olf~o86KAHLrwkivQ*pQu8Ejo z`}W?HX8<+!_faK(RQ^X1WW-iNK~kcpuI@{3E4*LTe#e{^! zZ0;F~UtkP7v?Vcb0z0d$JOG~494ITmu&u2tsH2@mKeDK&77zQNKO2y0SdLri85wQ0 zwKHuI?C+S1V8eRhQT*gIChYqa*Q=n^SJj!W$!&RJ+$1hhAR{egM}OKEbsNiK$~P-P zP~apdW!Tp2gSyL1%~37Cs?p|y^$mh5YF5w1<5F=Z!m2Ne`?7MuGG~);j~BM#Ft}ts8}_X8MmfxVnqoS{EI`yy8UQ#WVqsyC_Tuk39jfUu zb81$mZWL*%i(_GKn(M&Fvb&0VI*gn#m7J*jzsOq=C;oM}g~8|sIo`X=Z^X;cmz2YD?O&isaa(Q#CqPhjrg?5=|kYgucGexYc3QmkmT>qgM8%!oaP#ag9e^mH?!SKh`oJ?h zJpAzJ2qZr8WNFI4t1!{iH+Oa_D<~xLN{m2ZpWAd8(p7yE6X*R^mEekD`qTQxYpud? zt=c=rP+n4b;9haU_koY7z(GqzcImEM$GwS-T?QHP@85csmfPV^bRZ*ERZw_olQk|O zBjO5D)~CF@S;(r&tgMdi?k6-f7$Mni#Gh`={9tPZbuHZI)NiFUYiCy*hFv*`}5L34j?{ zZZ9h$LPJMK$I2=rEc|I%2Bq7(KVn6M9G=;U%c}f5RQK?qun5LuxuAz*6gT6P9m1os zEmjpoEU?hUt7p|090I%8MeavKO+7R?7!2{ItPJ2EH4TkiOuAiaM#dwQz$%~`avsa~ zZQ)Nq<9I=@3{=e&g# zIhb!q5Y?_x<$4Nv4!ZV&`zoR*cNqIuXErLNds=1euQ!-da4h8(q7=ug)rL6D$-c(` z4c6QzpZ~ulwg_t)njaCNq4P^ia3watU0nkMd%*G<1yfjxhYo+Uf&2p3re5i+qNK$2 z=+P`NZVw+;*!7cp)t)vied_#H%ss?pK7fe`PUtn5h$0S8Plxgd#3wwo|E%}~7S1Hd#Nv70rjiF#4XKwT_I8z=Ztzr8ShROG!y-X=$lIyG)a@eB53Z z-za_Fne*fADEe{Z>_7{Kh~p0W@dM;vzCJ$pIE@s5Qv^E0*S8%KrIe1o-c8`;HA^}w4VhQa|L;jZqx0$w-S_YBK;7hjjmY*k2#$MY1u(SXL%0>z|fY|R!tqq%ls1<1At1H(C<~zyLQXV`< zhi3$0Q3)NOca6$b0+yDRjQcaDK0KwBie_bHt!8ZMsG+UT2Bjdq{BKAf80hK8N^M#p zgBa#le@tD$x~D=3o6FHQbzjL`IfQ^{Y*EkwWhqg0*pyu z;O-qcI~wm^_Vdx-(z;l|nlHA}d92`fQGdbGccF@Ous(*3i76u|=k4c54jR*_sC(JY zSCC(d=7~O2Ro%F8gGMrZbGDfPYBAtHp{b=zNaDS(-`Mmz{|OzOaPzs{mw-Hf@u~?f z?Yhg^xJ4*i{KE^A|NR06N1#BRW*&L1SuYP3g_e<#jW=_de2m&MN-tjlCcP6yMj*I*P7~$Ka?f%RPo(mYvoSYmW zlFTP63t({+6?JxW{N@dt{Pm$dyXySR2?7w*jUX}h^YdF53(1Crg}mu3fCq_SGwSM=~F4X*hSm5F1?eFh*1a3Jz z9MpRHP+_ygiB=O4((32h6V$0wa2@JEEg)tk3UU@Rnx_}CL|R(l?Jmci_#iq1mN1AJ%Sx$m zz4G2S2f@|`J_HD3d3E)Qbf;C`+tW2ZWM9+;*_B^oZpa}VV|+p(s*0bVpBY)nNJV9}x2(v-l$o`j zCDDGOx42#Z+cH-h@(lO&{Z*Z3(s{}NXi|~;WVuo+3hms4eJg{%1 zgR~NXs(+n?hn8f-UB952c>j805&YzL$hF(hkd^I@i+cb?86lx6PzR=2$)?^TM0tPv z23UQ{vP9IM9CqPKsUPpa*r1);)#SGDcq*Fy0-b5JzeHeOtU47~{$M^J<4jCV;ath+ z*qEr_{Uc!I;NyNnoeKXU6VuqM0k@s`c1RWAbT1d=1KRc8%*#m(ZQ*HF40RUm+qd2h z!gheN_N9vtjmR%3fX9L&P<&ESNKgz>6;KBX(`!x^D%r7k+ z0ri_;toPY(eb+|T&#)^W^A zL6octdIeR6s>lsD)sJVx&L}_!ba!Ts50lk@{`_H3&N47EqM@brCt=qER_N8MSAgws z)j8IlJa{m9FyRJiY%w6q$Vk-%jq<#v)^GO~8O|4o%0fD7Q_+*2UY=z(8X<8)z8k;s z3WECW3m+S%!xjPhdgu)aYxYgv1D^Z1eI=zz%92jbPyzdba}SdelojA!*XtPUm`Qz2 zRLu?F#|cAxoHXX!XyE+tlvz*YVu_MpFcOQnQ0atE1Cp1EiwmX%5&-}(-@bi=rxgYR z#}tp~SXgX99;F7?Q9JG}zw#lp>DRr4NXhLOeKcqm8UK{a70$(Hp(8oMIu=yMUS3|v z63ZlHl`G`(IfaF`78dj@EXlmeVNk;FQ!%#WFokz9UUDkO7P5ruy_G2rsD3+;Zg{e z>$Vb(>i`#k;n6*aX81FH|E2*p2W&`BUjl{#B$w|R12tMQK3mlOh`Ic4$tf}{Z0smL zJ7$l+kg*VhY+<1CyRFj?^~Vou7L&&fcX%(wIn5GFp1U}cq_k`l)|K%~tU@x~u?*+xc2kVQaFNpSl% z@ON1n6^;PHpL-0SU7m-k1Q4QmdhNqt9oV7}>+dXhnK2{6#*DV^Nw-92v zxw#n%Sq=5|zNDOwL8cEOs-a;X*yHv{sAoRq<70XI$KBj(5weLwOWULEIa7@(Sa*=d zz7c{Qr?0CETjX@Rl_e%1duIB!c((v#N~Lm#OWXlO2UA*%!lmB&CNGp_e15`bhJ3ICOR{m%XD}_iiDID(${>4&-b{^ zoE=$(gxmm+#%6t*=*zWgQ7W0}>Iop@c=ju*48xtgnPn=qJ6qrQXb<})3^4U#fPytq z*Pvy0rCvKJRI;b*u%L)E&e)WZ!3Z@(4R+wT0aeOI=Ia6v77}XaK$3BnK`DRX1~5M$ z6#DfG;1vMGlkE>=$w~BfGw~ipVQ<`UhSpb!5RQqX-f3iZGoi#dw{%$1(c?mSf@bb# z=jLE`Hpa^Ijf^70!WLFn`2iv;rYrUJo!aHLK}8F)@s!p`BeOOS*k`b2RX|lZspQk;R8yg}+>}q=7){e>)F)1|CX;cHdN_nAO!DcFK z0Dk8~R#>TGVoR{<+QrpzaBu)tcDA&{(~apD6t9MX9P9gc$*4|rb(cZkkRuX`gir;k z(?T@jj(32z|hI-!?d`00^Zf^zmI0QC<*LBgu3>bus`}SJ$+6QG<#;*IMdA3 zWQ(wN+(Bl8u+zBHit6D*K|AqRuc)C84|^9zhz!{v_)PJ3WPkLiVM+MK3!McG67=G8 zr$FN-kH4CeCv*se>-LCwm5W*C0bI)Y8JmcUYg@KYL`7u?x_M8Cf>hy+q~x&kL!bIm zw{usYWGLDIoif~Fbc~!i$ZHm(Kgw!t|LnP$h5lfK2Hy zkNvAuvW+ad5gY<>=K>KNg4v8=a#u`o$$0PFzdtJAFznI%o=YG!Bn0wlGpC<>OP`QX z%YvP}7R`24pZMq%Xpc+tFCsSL#xHc048;HnHbKEk0Vd^)x7{6~W7WWWtEcJi?f@gdSZ{}O`+rm<_*#NjV8@w<2!=eRw%=d_WQ55rI`czll zRVgil_c391AMxYOpU(BiaGMso{n$fm?8+NYIWSB{X9Wy4yHcDscp0Rn%p4Bem4O?e z_3K^FFy^9q{O}PqJ=-%04UMcHVYAl}m+l6J2&~i;7#fFp4R;*9AMbmA1ey98|RmDM%EkYG-!)jl&q>MnK7-XGchE82~kI$1O}X+ zJtX+?uj`+hbh3}NSu!#%jgj-9&-`}J70$i>qGT6~vrPYz0nA^`^dKr5+^Us0)CM*_ zQ`E2{I!))PLIfI7fBGM`t}LHO=|ye84}Hdy)Y!a@pmts`;4mCC0SoqWSQb-iv7n@> z3B&rWWr;XQU%V5Scqi_2K$V>H`%8#?tD`dfsclKsJyqZ2dhIfKTbNFxOkG&SUxX-h zMQ5yIUs1P{xTYsf)lbgyMH$CiZhK(Z1ZRhi0`zOYq?xGdf4fcmY~v9)U+_oJ z=77UMvj+(4pv2%$r=sNL&Wdd(fg)5M*B|5DON;MTRuWMS?q}k|3Jt!aS0TQUos^!@ zlYOt$cucxcJG3l=fRNBMPgha#NV<_jsrYJB^TE;=P4z_R-<_X7-#*fl7<@qCla581 z+Ib^J>0QJVMSTyS&+)<|*s+(M;my2H5xrPJ!mMjs@(}XyYc%5+F%eyt^gEM}qV4O{ zq}3IIx7xqM;Zm2oy7Xwcn*nV@E7e;^|Mm5Gd+$fv@MMi5D+_ngF)c)Dd@I18b=u0dTwuk#&pX;mGH6&y& zv_4*7Q@{O6eQfDdiO2*C7nSF~{#&xVq+;1OPj>F+7SccawGUqT&#eof> z+pTlAd1DG~W{RH=-%z0aG(XB!JUH^k&~|hBbDa0~w!==0y-;bEO%)kQU;zF=pB7;o zXXKMNVffoQDaT*WXR_9D5v9lvjt#}^L_cl_UYyK}<3X3rCnZqFqT7uR2`S%?bARcl z;!O3svbNVNElL&>%3*56$dX+hZFaCDEn4<##fCv-ZyDo;9kamGkZ4X$Ye>!wugIPiluO{v$?(xy9iC?BmZ&oy%?MV`*?*_@mn)|L(rNB-7t zKhqoj<)INu(t^ujozM3w0sg|Zk+O=t!PphuV{1N0AAE>DosY?>IZZan_QU7{ ziY6{MQYSEq?yUFtN7-$vf`Hi2@U*k?s-7O0%?7i? zxpFBEbUT3wLU3##H7)Ikd`my?UdK-ygE{n!{c$7u!DGC}i|62QjZFRYh1V&w24+ih z^Spq>i-hx^6<#4BinDWf`!mleg*IIFM;L{hwsgiBluD%{T7rXue!ge7*&{7diZAT( z2@fxhIUN=1jF~DhNy)~;;@SA4DZA2XBruW;%y!bRp{k+hDm*+SBoSt6iEckDC^!BV zL`97CQla<%uH{97*I3@f`1o-ajpz5gemz#Y6M>)uLA$lcjW^$~AIOKvDuy0XZ4LmC z_?-tLFgdxN^2VSbIY-AA>_3H!=M>D$I=t{cbNxu>RR3F7C;9qyilN-B`z4RXT{n%4 zPvw^>6BF|j|NM!|&wpPW@v1jZ0Ec~0# z6Aa6&N8Fv$?U7@PB@YV|pr777`vRF+OCJ09mtU{- zJ&_~U*_t*Na;Cc}NECU*TQ&J&uSL<=VF$nJrdKVx)j?5Ek#J~Q?n@-+5)`OV$ z*1T)I`WBZ2iU5E;K#0A3u23>6wOU{IPg2^vsbsR(Gr;O^a-;MgP!F6;n=l0hhNNet z9q!sI>V5`N%}b+|D51OQLqerzz`;>Sl5W9RFQkuPS-t-(`@V`{Mu0elT3YeTvXPSN zvi!n^(((#kNI<|NIFWPSDZayktV~Hun-$Q@Nn>OCxwM35I2R13&Hz46P@R?E&5b;B zE;3PMc%q=#2TS7TBSACXpswXl2d4XM6I!wci}gk3dF$i88k5C|F`dWvAvNqBJlufT zxiVYcYSy1oo{FYb z$q#S;JY7QWu}Gvp0RqI9-E@0r=L-(IpxcycZ+>NGjOt|Z%jdGq=XJLR`dVMUeDwvF ztkAihloJq^PR6^E!nE8T)7rFcZ%Y?Ao=~)UY|(qHG+Z?96Cd9*+gvy`rL3H#%D~7t z3WM=W__329ir3)B#l*sbtkUWQheJ#f1!G2HW2+RMdHvSY(xUu9JJQn1kndU`_2}Vt z=R|a=qq7MH{_A(bl_w0_hEt7u^EC0o3TGg@LKxtwiViT`GQe75;koaZdiDU#;bXGm zbvA+e0h98{)P!tIl5VZrz{8^ZvLFy93JIY=sD6|G!SPpKrVEnTxk(N+X}1`>q+hc}(O6_{D%$ z(#hna&}M@6ehBMtB@?_YEzPG6>q6xerzmF{smPufklrj_!f0yM%T)1h0Z4~=1KtG) z|0lk-;WvMX>|Iy74f53jbKVF!noYdWB1Yi9o4)Ccu1|jah*X7~v1+`som5xraA|AE zYW{qdVzWfwWhhl@S2qXV4bc^jMxhf22{k9pzg|XZ^48(*4S=U0(GC1F|6hUvf7yMD zUfJ+_6ix?ZNE@4T3)Jj*R7F!U$)f-6Y?to@Q$J0Al{u5Fm>%DkR!~@w zS*-j@_w~!62NFuve?%{9UB&bac)nk`a?n^niG$C!Q8KgVe0cq6eB*Tdpd#MWPH@5b zQhs85<#Th1gRj>SZ%JA%sKkLJc4C_3%;+-PywwLFxFVQCKbiZAqm^hw$IemJoAL%1 zez?>X)5Lxv+Ixfxq6^}jlQT;>-(OkVJ@&u%yppy8Rw9=Q;a(r*(iuD*A8#y}?{@yP zt}e=h>E%J(9f|X3&!D{s5m%PvPCCP2>eet8yDt9Xx7sKhC#nH3;z2r)UvhVQLQmo zpFw^uthz44!5wr8=Z-I|z-d6kq@J3e_XCQR?j3cr%2ukGO6ha7>hSYFJPsj>9gq9G z%V>)Sci1fv?t7Ec1@mldY@YZ~t3-bk0zq?kZDz0awD&!5BXK{TfJo}%mHz7g^IwaW zJUq#lQSXlTeE%(3=jNf7fA}xZ)_Ju^Q8rcwN1bi=$1<+8z&oFnp$AqvI{gZn-sc*| zJZFCD@MD#co9jWz!Nj=33tR7ddBM@}i|+4&k-#4&4XlK@9;~hM;El6sPR75&e&6_U zFv4~7h)5$a=CZr9qsNp-g%@d?9t{z&tite6i>gBB<@7@5)8@Y=qj+r^j&0HbGTozC z9^l?iB8qib{Hx;P==IqvjpA%=wWlZOo?v31(fQUv5yqo~^;@$JR_BAAf~Rpy*A^;J zUXAmDALL`drZl;q%#W(SeXHr5Ql7EeU2-7mdGyNjXpHY93xz5-{!JEc**lcS`P^$e;i8z}P=={7W?8lsC}2zbkL$g;$ZZ6hYy(tMR_r z?adpTlksj&E7yauqN0h=JHx%SJoM`YLKOz(hny2SGt+e|0!g2XMr*uoR_F4US)BCV zDYXXJzWqq+}>_d>*z;by4j&Ar^u5q0HT_<|>JbmAp+wm7k);j;5~|8v#ZT7})&@v)smrJ-{_QLGz> z!Dhf3A6~|ZVdGM?JWIvl_pL)6e}NCXO~2+CxYvd3w?i*o5kgHO2PDhbPc;n;4%s^^ z?Nk5E%W1Wn7U2*Gqt0@?3Qfj0`vxS~{bSC@Hh$Vq9npp{tJ}9HBUwgvN%Gj){qOTQ z|5<7b;@#qAX3ko35>;N{cii11@IT*gPX5W~I$h)6>IU&(VzYNR^t>;BGdOf&drxpy z$p{srGw?h4(xSrWK29IDysBu{G`G0eRfsj#OfA{-P@9IAE|_L#ZhBf1^~zMe7Dt+y zg+Z;zw(nn=9wsGJIYj(PMoi{(TB=9LT~-Y{&Bmsu9na^o&xcEGdVhJGsM#;hew#5g z^f}ucE$7>ao}8ZtZTDAE3a8_kDvhCIqwU$U+7J6cjy#2NZuHw@qB8_XjLn1 ze7?Oe1m)NnC@hqfNZ%x3D-YQ?INZwMG*&9#nx7ybFy9AN8_&vkb5+Ftf!%odaT{Uo znDdT%lSa4i#%b5z(?&mCsn{pUbNU6Fep$Bbqa+~}r%keUPkDIk@NT%y+Eq!%JWZM_ zvaLuS-DE0a>)HF)e|F5*SYKcHM*3>kH`F`z+=Y$^atfx4<>I%Ejp*VU*XU?K-npaU zq^K?rq}UVUU0ukTaR<7S9mnq*|=Ak z-)>#f)bvdryIKdA%dr4_si8p%kuam`p<;GQcw(ZO*?MM63b2^%9@{6N58vFyri zR3s677kGd2e%RQqh$Bri$YAggZ6}`y$m%Yhd!%6 zUUBm~bjM#K^`+tB9W3VT%ZT{#8Q+KR&sv2>Hj(fn+IkWe;>m>|Uads@>1nrvO*y)( zEzzi7Arc&FjrN>;W%EA!svWiiV|i(h83wXcRFKGnTD*xju}{jVHWrP{%+~L5tsOTC z34O4%JUgfwUz%W9{?baWb{?!}UJ??RwQ$({kkV65i-@!*lWG9%wN*VXjDC88LCP1P z?!=t$JfEWz;e|)`cE6T)rc$B7?WfyRNPdzJ2dVE?w95$_Y3GESX0}GQ|F>`EQ@^5) zsj(<+_3xWHwo82G%*okedi2eA#gvtJe`BQA{=Ia=`btbjZqWc|$$^T=J9EmqaRKFy ziLwKzCb7~c&&x|N>C2~|e!-zAum?7deBc`?JC$L#5 z!Ygs9LmixrZ{G!r_gBr?rlj}Y=XVyv?B?s}Yz}@R+{JIEiK;Q`kZ467tep5&Tt}==1h9^+lESQc3?aNrdDdOI`~gdV)o%f zM<|}Ns2+xFwO*%)begQLd`|DuIL5<~tGp{3>)dBQzej#N;1nwv&U&mLdyd+bk5S+LCHjHkhK%bZa$@?^`5HBD*C_7vha&_otmplb6?Hs@Ef;R7(8{ zF2X(O&&sH&Oxx(sgdxWY!6#gDw)luYCItnNSiNC)?kJ`!c(cq)FApWe@Nw_0+;cd; z;?I9}qCdQg&r8QcZ#JLd6l=eY_uFmhvjm>Yc5H?4SNhbPowE;7OIHwFD_gOJ%ug-( zT{`~RBR5dfL01~3lX2e!l0jLPKnnsKpq4%(v=`5tUo|=3O}OHTubO!_hG)C9%e8BD zN5T$eujJ~gVPaz5TV<``T0bCxi$ys)Mn>VZIDhXaUR>V0lnm8S7stPzfm@a1xp4UG z!KFE6D>(lKFK$6RgvkgQ71fVp8zSNRPo1|sq}>9^u4itC6`gTBv6=l&VkP2NT3g4W zuHL)ZvvSYam{a&`3Eu9({<3Gq&ZT_0KV>6ZUiwMtdSVMpuPZq&7?VQ*7g>ER&!^)J1^`RP7!QjL@?UA1k_ z>Mew(G2DxR$d~_McVIVhe{C}Ej&S+G*7||qc&7d-RhFEr%6Xf_%J+6<`;-Bs28k3} z*Nu>mN52QDJ>foZW?v?kiZAS3^>9bp+#Ga#VPrS-9-X}3s+DFGa^4NXubJrFtF4+? zTAzQw2e=er;v;Sg$V<1(>V0BZaxeQ1my%My`Iv>?#NTo!{YO%yM8+m{nt6{IR?hP_ ztNqh+zaPB#x<1E#9>a&~%gRL`_N|`Z(`g;CJx397}$K<2f}aNLb~w>&SSIs#t>~IhfAXr7ZC^! zZS-!#s(DdSiDcbN|Li4rKCh`BvtLuc?JwAQxVUo@Nf9>rKw8>Pl#j2_A=eUzRNYWz zZD^EjhKbDA5yRYJLm1XdvN%|G-fEO*~XstIsBdTq{1cSHf1fG}oDc6zFUGYz7P zT*@!aYhy*o!lca$xvHKwrJx?8gemJ>^83)zchx{WtCU|Nd!V#f^sypyZeF-g+_Qrv zc}MByzA^3k#4uHk zdEBQm-phLQRmHQ_TfM0-o%g}&!*7eCON_#x4FGNGbIJ{=FP;5Qf?bQI_n{`++CEVd5ePGMODNDQiYKu_k2PCD1Xo?(_}K_nLeS;Y z=%cK=2={xi;Y*;z28UUOfU60mU z9kg2x=Rs$7!~U>b;09zX^ceCd;52|IJ~WK`FPSOky7-mOx2}-L#7VdmpEuE7_iKUE z#qLSyeG?Z0QMDPxbo?$^Qi_nY-M;S?hyDd;fn}6O9ZnlD_cqrq_ z`QIg5lzebhCIfmsK)(s`RE37Rx~2{^TNOurVRRK++d`3qZ{NSeNuJP)5j>N)7#TYk z>T=gD3IAAd#HzO7*-g;v3t=h(lQDLdYrK&$w{kE~gx)CbnUfa}7GY6z;(67q9V4zi z*w)+4uYAq!8ww9xEWyQq+l%|C+-;p~pT)0&;RgvrLH*su1v)-xSOQ1hps*bBp9yi` z^3-VYdi~1?gKrkK+0c0R^QTx!^lG2?i%%|rlVn36rPA{qTfdYa)S)ReJal2!%o)*s zFb~cgk$Zm=eR}bn&_re@4=s9@3(+{*y-=&j3Bj%K_Wz>mt;3?~+Vp@xWm~s%ebo{dWLJN7dF!3T_27Gv5ft3RbP^<(A*$rzb zy8?Sj3}Ty7D4351&`859U@Cg#wDitbRLvkO2^(%qG3W#cS}YoX;DTf{j+Pz;<1XVv zy=mHU5`RCFUcY982lH`-)T_@B#Hawk#45QVA3lID@X>mr_L5?#(_t)sss~WD8kQeP z+yg&r>*^XZ=LTod0OJZ|o8va#UT8JSE-8796fFOBIcR{|V1Uz>+(7*PNTl{hv_uv? zL2r(jZ)Y;kpMRpf=5sC9Y8CyJ>tY~me`-Z3;_(uY(2smAoy(pTIW|3Rr5F_h8G}S+ zFP?0bT($9hOxT-f09*#RVo;(F(!*^)7kpKSjp^2}d}V2k_?#{bW*OQ~?fts;_QlYa zaCoh|OG-_RP}<6%tt*#&=St=J=9zzNHk7|f6Fxeig!yQIC9I3-g}$;9y-kVG8KSzo zXsKh0GVlrQS=omK!>3CUjI=J43_B3CTA-2i@TdXHRn?Z6w=(5{T2K^x3{5mF`2#ei zXiyJR>wp4n{~a-(Wx+1SrVA84FH)%>R5+ zD|=lZ_mZPo8xxeofbI0|aDy6p7I1G}NEE>B&(Bx>UGlWD$85wxHO?hSmH4-tdXR~M zwL+d!8eJ1lI6yewy6$a$m3Z#lGYDf`H&%{<78=#3a7c@3Hv}5^(4D;LP%?9mMsM0W z3ba(+wcW>h`GCZ|wjBr;%IG>K48{s+7@+a*LDM#D!a)i+!~^gFRsy{7d!X>~_4Z=L zcA$G<9e;iiotUVjtb7Mx_JP$kyV5i6pwoxxeSTgcU4ouipj_}1`Yp>qycMi?16G$H zU6&u=TIDU`d=zqI4sCTGt&CXAS~v1YpKV+o`U= zzOw;Y2A8Zfv{sOLFcr@jZijNTEJWzxYW&|-HmtU9W1{y&o#cj&p$8KaEDWA-qz)WB zu5O`z0Ko-hCjS1{k`=Oh&HvP}n@D3=M@<^W6**?gq`!NRi-1xpbt;flY{93er$GrG z06_H~Ws0YRM5CtW<#D$+DF1Zh(WnMqv6i&ZJAWS_I$mu#msPTe)*%}2_dQ`S-8I-w{LL^@7GNl0 zMcOO?T`+wM)RFr5_?Ti6-D(6VB33#)Fm@kY$nBW+)HQS49bFEogta{nC)j#>;f-CE_72A zSVbv7;Zb96(i=gCb9@|%=@cC;WnlsSu)Te|@|l)A90kht0jm13(N&H2z=eZ7udlcd zgC!dFEHjncvCGIZPgVA(_4810IgQcnC>I3Jge&hf(hy5uWSmS{4^~ArF29xJ=oM-;rw| zzrxa->iqi5=I}!LE&;cIFeH~81kh%&>Q7KctiIja$4TI~GPkjbsHhmO$7m8Ox*WX| zBE~U&vOrJYu|he~4o`&a6ijo34Ex3?nVea7uQgIXm6Uw6fgixqeXE79`p{YS=V*Rh zSy@e{pbWqV&+w&=9W}>pR&Ky^iYA3G4MsCrg5>($(KY$f+ zQrNvh5_Ekf(6_`*vCQF4E=(i_el-+etbx3I|&@U$yw}| zCJd?Ck$XVL`^+!zDI>~zR}*o4d8kbBv3Vcx*bG+nFH$MU9UZoey*3kbhnB}0xKFS; z`#6sQxCypzJuhpUz@6oJSBEsz+I@2d=s^XLs(lG-&Cq8x#>e)Ng8usF6=Yl`%7_?F ztQ(N~`S(#2@%uTN?WEWI%0^-mN#^F}7gvC`6d;3MGX(vt3cn1q^7+gI)n;ed$RNzS_B;l;1O!TiNtf%m{bFtL9w1_w+1a;&KXqgawtGYHGo*IYeNq?~4~Pa@SjbGJZD!Nh2XMP zx4E7eSZanCL>|7 zU)=x{B>u@dIPyM2{t6Z2i2Ia`&kbg)ju?3V*(%%dAX?#E8PpoNgPjc5&vpRf0@>?N zekS2SnHdkjKk|@Y<5H=r=E4dj7cfxfu^Zc{$y-Uy$^_1uLp|_{|15SXb%s8DW0;|N zwIE98ZEej;XL?0gICf<6^#!!#SwWv|)0`8lhV7fa&jyb6tDclpkR(9ra-;>bkLWKJ z0NRL8$vIX`o`JpF!}gz*y$&e=(2ya zz`Z#ZwC}N0p|^h(+jq3+cCM}ze$2Yet7dhGCCT|F!o%p^sCQ*^yc4+`>o^_U_5CYMmWc z(2gV&&jOw&?ex;tK_-tw%GPzvhxHy!KzzRm)VDSf|Zt7#hKdv5znoS};O zt*wlsRhg%I@l890(ZkCk#tS?I`bR6Wh=2UFz zp|47#?(_`93n}fVrea6bDThn_npnzjmkbZ6Q(dsJ_Lhbb+#qYYnA(K8{G5S8fsA^D z6cZmGQe&0peq;TxrjC~D#*ag!9r>3tyIzO4GkiQ|UDu`#pC%SMAV0Ypc+M{^x@4XS z*gy1MzH59u*v9NgbEDq6b*qO8^0{Gg>|o7`oEErN2Gx!)Je^!!TUU7>QBe5fS0&t& zZ#ALu2kC^L?d+9}O^r3@VaY0tdnfs3DQy6irN67sBciOSygA$6IItHJl?2$Asx*4r{JWdY;6a;fCLfKJ519xcN_QJZ6MM%J4N!p#b~gyL8M z4-992wcq7t;O#N~z(`sL#;>n9Nr(X3i%kxQde}vaE<2{Ca@ilfe|HhyWV5-RV7+Fu z3CFG7ypq{p)_$-1>%(RrpN2u^L6?w%j*hkMo*yU?c<68?yKo-p&Q!-w4fmeOg|QQf?)^Rzi5iwosAbFcO5c=dqb-t zjx;+h?d0q%VtvdFd6IxHzPv_p-jq1Xj(X=h)?N4+>Bz$qEgfDZ)l3Q!eDYq#%|J}s zWv8;QPr0WSm2gp6H#-#)bFZeTdV9%h>e+10sithp&NZ^)`5A)AEz)ajqw=)t(@@ti zF}*Pea|z&!92(8@~g84VOG{KALTVGp^p1;Hwgy^sF)s6-5HW_#(!DzKMDK4 zxfy07V9q%tfT9eE+StJMb^45VKaWk>lgXrq5;?Tr#n0z}PkQ5tpO1%>G9>T!Sj z!6bgwT0RLKt$9HY$@9#!6W^q&a9d*%ys4(Cl_C5H#wlpKS zn7aLNogj3I{}CZoYwHT5Y84K(ZMK>WjyY$k+qoGgm%&t}nYQl0R1jVSB_?k$h{Ame zUZIEBH=!qN671F%1&UvRkJJv=SYBP(O9*V&;Wd~n9<4M}+)ti6YYtU)b&gCPaFi)O zUn3?Uxagn`F>tP)CtmDP%KhMv-=Oe{WPh1DN1&hKIe6G)KzEm)W-aE48}a0 zK)b)1l%K3Ko zEzF<@8y&^klVEA1FAm+GzBpMqh+aJMy1>M>Ec;{nU0nS1r&y1P&g4;Q6tw!XOS z#lhM258B!M6zs-#;pP*+`n_HInN8A+pH6>pWoM>X<1sO5+F{;=BPh<#3Zo39!+x{t z8L^<)*tEXdJM>$X>0_vb2x~W{`;B^gOmg1u$uL0m?d|QRdf&UekPf@J5Pv@_Pp*i( zV3?DAjoSOtmwPPChjXv9Ra0N1>if0MxY2-Ai)!%QgXXnhk>#KR-29m9IKIo4R*D_& zt*b*(Euys#32)Izu8)>9C@kf{9VUBlCWHfb_oJUCDP;i|LPF ze>ma&W?@ewD8G7n)s9F(K^zMZuziR%u>TnP(e;#4FjHk|U#nXv`gA)8xq!@r7mDm| zi29m#ZfsA37E06nhg5O=6AIg+)H|)i`UN6Rk2j_^1&@xMnihv|lJ2iK-k|w?nGL0f zX$Xr!Bv%#l7N13gmDP6JXg`V(<;;f`E;Hf%Q@@g|MbA_Dellvtw!@9ym{`ot+Tjt8 zn>0xh5<~~M(ed#K#eF`Esv($QlwK}j%<@yCN0OWM5+R+j_zkS|Sr@a7F$Ou0cXP_W zG>AGyY|8@mwz+ku0DD>Z_51C9g8zC#i^DR{)3M^79Pcd11Lp&}rKZEX@3(d722di4}nMOBT#b zYE+=PWY(DV%>dwKl%0v=G&YK-7ai_c3K?zA^|yUGm?#wbUvCLj8!-F8PeIe*O)l`E z9ueYBPHH~p8?}|gQg)f~#c#;eRAV-%_y~5DQ+X=tU2_CchiQJG`r2`kJ`KX1R`6lUg zH5osJsiVxos;c=q=U`@xfrHwW=~F5t0e-=pL2-oLBgVH!b_GL9y5oD5T{P+Shr&JI zZBWbK;F_A`;~A%g{HmvzaqS5jU=-w#dE#x$zfms~X{+Jt+6(dceR#XF`B2049bvvMmC&LHTF1QW4{VaAtj1KQ z6kXu6t-)_d>y5IW8WJ}=wbc*1xN@9+7*#qy-$>5K zJ+a%KHVAqyKlwVeOuGM=E&)2z*o9(e-cGq2^-*12$_S*_Y^EsHu}zr!R4tB_l+$AO z;l&a`Cfw?%#QVwd3NujWUBd1$=fz`bg8?EZ?@kR`I$8I&85Az(J69qZD9_Ji`(5&c zghAG+N!rhJ!eONwv785A_w;Dv^0G)jQWX%CMs1rOw6p6^9+X(UX4jLKpYP4E?d7EM zJYmw)`{8x@JD2ZLH`3u3=l!DB&CZy1?DC`0WbhRN1~!jl*SeoCWXu+wQJ;BV4S?Jg zth}SE=cvShylBz9Tpytr5^6n@1P(1}B*E!JuJ{!nvR-u!UP=%Tj|j$@;>!Udg(_or ziMQWW!>J}2G1k}CLz~HO-3DW}WM)qC^+n#mRe2(CFMN?*YmJzEbut^V-JZ~&EmLlH zyY|qFMshi9{Z}5-ew<(kUi5i!b!}RmxA+ReEQMdS+#N_|iT5Q4Z-C>sRz0mVCo!0< zpg}Q$c=Kj&$vqNaqnWt4wl*v@Q8AwZFA=w=nVxF{pypNH5*9LJ4xm|>|3lnGF# z8iqbL_#Ox{9-){f>sUjTD{M(F*lV_Hp1?y5S{R?>F?>4G-`&zR7!OweA9g(I({n|g zAJwkbNt`d%jlR%`q^bU!;hC=bjSC#czKQBCsjt)=)->f0}O!S zpBzKe{W!-Ew|KeGXYS=S54wi$5jS0Z_TMxD!;N~maAkG^9s9N4yE@K!db*D{kh0Fi zY5o6>HZ6nn8rPL)$gf8eRjf|h69$1zwRui=K1|2#(10c7;V-$xPFlEZwQjqvkTfi=-Ab#|)Hi~hB<)8rT8c4g_we?HI> zI(rnj?q|6EBPW){%}=a;^To&w^nbp3OASkteKavKsG60NEoT7&|6y+3$>QUkm`-e8 zy-;O#Erpnv^Qk6E3AY>PQ>^D`b@g;H10+@)S^t0Bog4L}`w{SG8OZh3P4{=-v#()- zYz~yog2b2O`i=U+rkq&*H{Uc1Qe*BR4wQdco`cg}!~Kz6IR627FhS8g$Sv+)y-(tf zPU1o7#hca+_#w)W5~$k)i4xV^BRN=|V__xjNVrUMj?~8o`6kjF&yXGeOd1}|Dh(a! zzq%*{unXw-Umv+8$SNqrfKx4Ng}M7LTR+n(7XB)FIYX+Ue=`4TlhqS?GS_DvWqzm8 zUl~%d!pRibO{Jx$kYdiqgIs>y-x_KPqMwk`GfQ99CdqsIxgIo#+u^k4#8z&*IK9}~ zJ?=jG{7ppv&kO$~#)vgi1a|9IHuhf&4nv8eS)JA5N?L{aw!#bjsex8<7)-d4}S&U}gg?{;l*OfR-<+S#w( zWy>WD7R9NZAHDK{HOV^A&k$_QM9a{o!AX7RTXp&9bQF|MeVQ{ry{{g6@3zx0mwdnk6{1 z@L~Rg4uJNvr5J39i3FZ!#%6%p6|V)yL^O2EjZqJ!Fip$kxWJ6WO0^W^tS!&530^nc z_)p>(vC!Aw9{>>M9((}2JiF*XVv6|nE;mo0Wnv$oKvaD(1XtViN@>A&!1A&G6QA)w zhD`70{hw3Lo8GQtw#a%8?uYN{k3NG@i~n%G2fqeK}W57TQ);P$F(;+h1$Zz>vDfkQ7#pAMBEt6}(I}P|pCBf0pAd zcU}q0ZG8bp7c{#I*G2c$z+O`T!LXE6XEU|_(OC%`6YT0@EYbPjU@0QS-VfxwDL({) z@ze_ayia29kKOTvQFMA4!&5_CORL+o7!$hkWNB~l*Hqk2@Zg$)=4CF0IxZ&oEZhU$ z;(6{K;=PKiABPcx8tObEy^~W0!mh<`JFh{Ur+VXA`_&0O25IRUfg@se25E383q*_z z%9HBN+uKZd!g&kZ`OO%98lRt@IgLDx7N=pB`xX?0|KK50o|(8f2ut-8!tlQU*0Yk! z3(fxiwJ4cxF+Xq?@(%mn&zx8?8Ku)RtKT-os*s39pg-W}FpudgWJJJNfP^ST(Ro)V~0wmpRLI#Rr#@ z&BY%K#@$%Fdx_TW2ScIG{-DKg!fG`l4fG6uy{J4bF`Q(n!pli zgc0ho73NajyNd?7!&s>PMbG$Lhv(QGt^eu-2e9O^0=2@{X~>$)u+UQNb-)Gz0LZ?+ zz6n&Cu5KsY3G<>>G5Lny6TsSJ!iVOQ$jR@>fSm-0?a>M^0pq$aOB(pD?w z4|-|o7KJ@H=(yjPwPrdC|xdXS%ujuVS+02ATUwLMzjk(ybO2}c8Zd7 zq_=~&`|*bJ6evX+6?-EU`YcghHv&3X1Qr#R58(sXZ*3^y`x-Fo6C7?*ZE56&HcB|AhQ6TRSp47 zdbFLi*QvcHdAz4y(fkBZCurypm|_5jo16Rh;vzHQE!%x_qkZj(Pbp%zPxrGRB;22B z6AgZKZISb4r=VLOlhyM00>emf#V<#=JeLc2|+`I#FMP;%^oPMhN^-Lq`1UD;und(Jjkf~JjWNU#$HG-vL-|zwc;j~6L<+PC<_3w@Hjg5iy z^m??VhOI*g9ei=D52*^CSQ{J*f5t^&U0I(J*B4-2su? zs?z9lHh|89tSZQAc4?Kpnv36+5v-2Iq|@00lWW$MbSK2Ktm|8QrttX0IK|o@n4|zy z#x+u9Q|Wq`KmN%;eSL9dC-oa`zNu9<=&MX4`SNAl+I>^jlJCC(wt3@;_xA3$ADhdR zw0}PF7|LTilljM?4toGlq|EKyM%b^GO7wA0r@C{Ff^p5DF`zU959n-e?VW0L-PfB7 z3etYD3{Ki%+!Ej;dGo$!9b6110;N_$Fbn(z#02kCi(^?zasUzpxDG%P4rt2Tx{QXd zj_Z=h0~8FjU7_>D|2dT68A~*H;(1)w>HI~(RCl)}&>&PHD#}$r z;N^)tbk^?Utki;Q=nTrkzy)@)PoWY1ED{+M=&^fVxzm=2aqiNYV(Hl#d$ehLXnjQI z4@^HrGYEkG);Q25qluAQj$l%lnoQ2WiMW3Axuz znls%bU@K!4$@rLR{-|7^YhYIxG9MT)CDeLM#24RElx|kspx|X}v;3G2&>W!JiudfX zy-F@XP%)xE_CDk(jre!tnu=7ub@x+8)N$iR>mxpatgd@tqYX@3gm%GWNm8=FU&UJ`^>$ zgTq*06QJFyv6`4M8h*a#5c+IvxZ7p>C+8jglwyK--?u;5U0htoMz`7(-XCWKwm?`T zSR5n3{i!jD5Wt8L8gNhhALSsFA`tHg3HS2eTW32c-w~|<{BgILk==9g#lcLW^kVC1 z02Ivdh4uWVc)@>QRgTY{UqGWZA&z|lSG%Ne9rN@wGGTZOh|d&m(mbFou>8l&Pl3;M zG$GWiOEE0$Wt@OE+Pa`!10QuQpr(8GMK!IsdnffjGK79O+>c3a`MT$J4hlH}@BxKQ zafu^6W@fRs&(x1|x2Zc_g^*+LbPPBaKG8Y-mX}Ang~zA3w`ok9q`Rqw0R~v#`H^b% zn;CJyE~8y=uvc1+({;gpM2xnfu#eDG4Na?A9G6lLQ?ju*tK?3SKAwg=ID*z!y1V9; z#s-x{(IiZHD!v$h1T-HLEdR@z|LSITge~yeH|ETkUHEGf-d4EZp4eL5pdMlqbv0EA z-yqLcj6$PDiy-}DSij;_MNe6 zS~{L5YZ!38=z*dAtv5Px0w*yWSHNe+Mn=+hcy-R@_U)`i^Z~d1&l}5qgR=o#8l)X$ zWP$-;n%cK+}S5O`~FkRtIf3vc(DykB(J< z=L^DjNTtL)L=?L%1n)1C?5N*r{D@)aWij39TudAP0W?zp72BAYK~%zSEnW6{#ds&S}>l>~Q9yYY9QqZ*6;VgVLv`nope#ah|39x|@2F|CkC)anXVc&9Sh z)waIV7ITuHCHXi-#%un}BkFWYByV^*LI3N*=oARKaLnw%IR!&W&d*LU9wwIGjsNfk z0R+Z7#pDh{jwBIJ?YMf|Lp;R9+5C(#r-(jq0LGXJ?SFvb!0@5HvQR$1Fi~PJ;iX=d z3UAk(dxnj7?j*sCCmn=n3a>J5-2rCE^V}lX@CY8G#2{N-K}UFQEi-&)hIPVb+<#` z8ob{p9snCP#n;ziN6P(IRph;Gy98r3@f2YhjIT1 z4gqQ>n%^!4yY3m`@PNY0s+Goq>b)C3N-*vY%gfpfd5|H2ako_nJIp^?2LE-zW$T}v zVSIa7ZclUAq6}esIe#>-f~@Z`8KryTy7LwP0TWXjH+uyGYPw(#ndQm~y@yirU+k{+ zM9P^jaCK7uL?8BRTfH+h!-A?7W)+5KIg_bgr|(o!#e}Q)Jk8sRc|uWPyZfMQY!8dQ zyOWCnnfUh2?=RHwd)yKdzWS6NvecqeY#t2s%9@(7z?)Ng1g2Ad%l@*$qS@UYukqBa zdp)(sehhNE(TGqVGEOW`@6GhZimz6CC*UpKT(8s)t#CYeh*p+2HVjkKY$spoAs1uu zXBVDcg77;4|5%*|VLK&k-y7acUEAE=T1=h<6!EHKRZ$TK0MQcEjIa5}<#K+;@VzRx z1?uQQ^Z77+CRsc@?HXFg_b~BRy z?W{lk7tq!%%eAuBtCkyNQD8pTp~JL}h6`D#{#XRS1kEfj9knL^pqFyGxK&H7@Y}i* z$-zLw`)drIUwZ*28u~)c9F)`XqyzH22Xy9 z37vU+q*8Wx*v}n+%stTLUp^QEG^e0fXO=s#(F!7uPs6rSuB#6^3!`%32NFgeD;F29V_zH4qrJ{9*-l z0e8iP-l?96N@F`KF^#!>KARHlIV_og?@Lh*;5_6CUQdgIbnjUJdV6bk{ybV8_gu+uD$gwTY9Bm?#o zbQ1?ARN)U*mz9Cgx5#UXqLXT;^DtYs-EK$o^6?^D0s@pk!U39F{So2JjLp~sc{`4L zK~LL-o&9JW9K9$U@DNA{Ezu}!S_x3tFq98W^SkwhQ%$@4UURc1=}RF8dkA%|M7#{h zMFo=C9zOgzI$9~OcxHI{d7xDNI#1d4!Lq;4G90Ca#i{*kpTF~ucypW_SiDWH)bAc5 z-P|34Ya+@;-agYEXepus=2s6NWZM9gAM!%_k9oOHzwPV5c@oU+5RH*dKTqA-6<*ha zs-SOYfH&H9)d88DT$7w!bssAEf|dLLm@JL}fr5kO(6LROvTxcM@nqD<)5%m?CdT`BbZhG%$+(TY86Yvwn6bfkSTbw}32i5^qj`Ylfl%o9Q+w++QBZlY|pvR~b zSC|Dq^R#qz5d+$(Mxayl&X@2;v&|6W91rrPqn{b?n4@opyl%&Wc?Jh6?UKs;!rEBP z3NYq}Ii9Z>ithpzfARN#zu!tkAYBtw${zZ^t4iekGi=CS>1FC?yT6h>Ir9t(z|TcC zh>{C-^!F+|KVnwa*Vk840w85zb(}j1lGK>c!7a>J7*&`BY6+MG#9)+8wO=fMHc&5a z3a;g-U3ea)WkznM9j{1&*J{(Wx%-D+dUY1o$QI8*BjqqC6@pO40AyV^TOiV0H-Vvse$kY=m+mH z)ec{!YA3HC_x1I>d zy4F$~jIVcfhzS1t{ezvW8jPi<5F+*KF%lt+l{?>^DG8CgLzBMVv+asQ!>t3T z-kqGv%FB6~Amsv@FtQVZ*ik#sTf3>F+S@EP>L4PfW@&k*M>b$Xl2ZSL`r!OgRAleA zzH`hRj+1LM;A?*|vFVDYtbpa*g!&mQY;WFkdDU$0H13;3-? z6i3&JrJVe#+9|H_0~AmE{PAe=5b$OkbaS;54<^QB*WqDyR=v3Tk?~>M$c#{Yj6_PE z!15%yrsB~)Inz!*!0QP*9|Gt()YX9*RHA^(@jgT^!mU?#ipRBamVBJ~wfgJN_!*3G ztrbUxm7EcZu=k&OhMTR_0ktWhx%J1VrOhaR4~0m;2vG+clmT*8aZvtXdINTC=I-qI z*?dgh;-Idrcc{LZG`3oF#8*MJW>pn+CnoxO1_7^x+f(1xaH5z6|&VE3@; zQhos_{7o7_AngdarVp4aNx#L``eA~mP^ zLyo3?tyuKn;1JWqCFy*9L^QZx`oV*Tgd*-nAF=mW2ARd*=jK{`1jTpIrFShD>|-aU zyqvQIMDy@n0|M~{t%No5>5iWX83Jk=nv1cTd!MWeg3^cx2|WM{b?a-RZd&xM+_%6c z`0(CP0pd~lQtUuK<#j}lQpzIV%?Vn4A~B$Q1ZI*KQ%LlZsWmsYZN67RdzlHa-0QLp z_w?Xj#-In_^Q<0$Uk21)FF31MauH#(Sk7R`RJU%YYV&@FJM=j=Q&9Poj_Ki^0Lm~u zvvti>bWj$y_D6htvY_S))1tL%8mwMNzg0XQ)4b06P=5!H_5S?xpU zBWLX^K|>Tk)aq!0ey2~^ZRox}TRK#-_Y|t=i@2ixMxQwzmx)vrK`&!P>6(*Qx+gnP zmERfWfe;jLfKCKhy_9JauSy`+@T$RO2Jhbu+GJ zr|q`kh#uZ3yZa(;ZqkVAqQ%&J{9f2%X@m1#NUHfk`rQ} zi`bgig}qMCZP3gu-t<|G-{!~Q>~SyB6VB?yqAfO(AQN6l)NLmV%|L6ad2dW@xFess#zX&c&t%@i6gw~1fWVMF zsqT7bVfP-&61|s}HVQ7+M80HX+@x7pSmz{1kI)fo1eBO16DR(Ncj-nHS0&)9Xf&oc zt|HEMcI2;)D29a zbU-vP_7<+FcVwUUKOFM#BkIn6QjgMQ%DtMQ)}x5|^^(IJTRI4AoiJ%+UsN3QVAwxi) zh|_|Of1vF0!^e-SE9D5YEwmnc+U#rQb>%6;-s;ELSMj4Bis~Agir*jU>=v6=&s}>9K1eBWs*(qa) z?_3}nnf{qw#Pp_l+Cv(Vm$Jr5pEsVyxFu#i^31%|~8h zI&*I-bFWKT1V~9mt5eu!d#v5<@oS&Az3rxaF@+N@ocYkk{a~qIRZ3PN5I;g)#f|IO z=A(i3`}$9>f-M0z*6U22>f!^vy4{IxTDfSVSgk~t*eLTstKNCguM2e71l>W9Zu?)L zDkg9_f}SB_yzm(KS#HC;mPl;QHSs-~zop zw1@jc|nhw|ZJ)mVpDJj$>CdHAmYA)JW9%q{5 zUJrOhMm<;T@ZBG{GkQB)tzhXrF;007X!a=BhWU8T?Zw;f;KgcaiwvdE(a}XmM+27z zP;m94(@`K$#2`dj8kdavgS=XY-0dg$RLIFo3!Yd|=R`sjKRD)*kZHkAW>MvErSwZk z!|d(ex7oDDZFwWTsrHz?>yRYaVhz@hkAZ@uUP)^poV?g}^RPMlbpX@ zm47GDEtcMm>BVz=@r(D0ll$Bu0{Y;zMtHfi1@7V?({7G4vQY#2{^A>%m`MGd4vvstp_XS`iR1n3hM%SyJmAZ|y6809hxq0k@J z!VThT=)LG;q+VGKCr9ZCcv|X6Srty^F)cQQetHeCpU&5UCgr?jvG~aopR6B9-0&k* zQ|qBDqHG0u!H$k7z}myXk@i<4sDMbwG8N|Uod|xCeUI<=&2H&w#>P7>o!D}(-i8l; zH@Ll%$Vs|Lh=@ZHMf^@qIum%pFWvCBg}xrsR^Vi8$OHx95u0*+_h<1YRC=k*+53{+ zq&H-2E^xKAy*Ig#5_FVd@P7$<*hc?xe0qGrXUCMTYQ0;Cy(``#J~oNrRJIg`fm6IX zJ!5sDxTHYSvgz)f%l=w!~?<_YLX3BtQ6w?N`EWYj*+;)8uj%9AT~8&kDGUUZQPd z+E0vsZw>A)?%W7>C9A({mW6bsJ<^t6ZPYBVzC&}#mY7$$&iQz+@uwJuockj!s~py3 zUb?vn!AU*EdqP{;^5mz9r1x6dL!8#BsR`the;uAH#5{?l>*D?tOZM8vb^GVr$)Z@r zRJS{X&y)8j%cDug`bS%p#D>HaPh$&om@ZM9h`i#6&HQHp0a*_pVpDPzF05ly3w9k& zPWYY)U8xwKWGSlvUo3{jPf8W3tt9D^WLuya31IG z>}~npwqhyXB48%Ha#Naec)mY7Mj`R>>%AosyZ*wXlb|4>Q`^SJlcS$}7y_;zYkHig zX4WVV51g6yU2|3^qWS&vA5R9{jVY(4=W5TghFua}>?X#~tjg37fv@3(g(+NaQ6B+v^-Cp_XUg?>Q{T?rG-mDEnoo#pHPpKdpYyLKjU+Bf)5|NNbJrT%WjU79P3 z*SamA*AZN&Gm*DhPf#vcTj!_f+O4Z|W5_!Pl2Pd3{LmkG<(E`s($LI2c;Jg~WZXZq zx`4J0J(JL^BtsYF1fu{IZmcYF=37vdf3|Y77m_x%9W2S<4~K!-vekJa!u^mCXG$Rt z&@6MWlsoUAgscUPP2o0SwckX9vH4@4j%P5+?ya_LOzg%WNS}Co|5{o)_9=ZTUwh&| zQ^U;0)X{yqwlYJ*fVj`hAo_Y>X;7zPyGuq!c2mSHKPb-z(PiNLq#6p8;a-$$8E$q2l{7ccG*6Z7)%W&hO)pbw5% z`}>Zr))N(REHcwHh6e-RE-O#AE<6>SV@`Ws)zA|2mV*XHHKAVGRc_*!C~1BvDe>oC zlZ%R4@yD*I1#2f;Zdzl4+?U#{eei!qfBzzt=SNFNs-jC`-r^c@K&bN+l=iOsA^Y4lW z-@5hn_3K(&b~;);HKi7p9A{a{=jL($;L6E^S|eBTL~qfJE^Eh6b_c^hjwaw{8ri65DizHs6iet8sJ`(!h!M-NJ+vsP|=n1 zWCJf|yoj#-@WSH73thF}9d^Xz2?;XKWrpr)NvcJu>UEyVG?GXi3p;p5%m5mN3{l0q~0+@3gh& z;>kqJ?$KL_(9ops3!*NMtL5=*CsX;R|J ziBqQ^d#WhO-McGuYb@XG1i!K{ig~tNUK)_4#dz*-Oz7nJZN~j^j}LAlc>H6Owa&Z4 zgtCe_kT0}<{?sZVB8>K$I$h1HEQ#;1eYUXR5X+{yJgWKz;o6R@B_u)^losU_)%E;z zTtA>pM8>FQ(|06AADryB@t3r>$;h*?kRY_0-T5$j(6@%=aL^9AaOJni7Ew>RPh;ZEmK$lI=iE;3F zA|hfLr+6VVTk|(tb(6$W0oP@Ry{k>fApIiS-gZ&DI84pw2_MgBUTRf6eR4=31Ygh? z0&U6tY@LAa5cN`&JTl(Xm88O=0r+m1?s9^t?ZzatJ>6)i!aPH-g? z_>DzRJ|QNK{WWc4f%>~`^f>Njx>Yz4mUyjDF@B#r1T9C zy*iqu8>p!bfTlk@+}y-$y3c_s@F{%2#mD}5J2V>(1=WBz0_z}dpb50Dv*w*(1c?pf zEQQGENR-r8<0=g-e zxfNilqXw7*;2v^vrvEhse+c4r+_z`1LuyJ}@>+NbI{oT16fh-V`NPf#1}gxCXe_+E zG4+Nczkc=o4Jt$l-7G;f#tgx$rEwj2)Wq^BEr)7DK_P8zOgOBpNh?3Iv1l;6lHjX^ zJ@fPJvEWlc3MM!>*b!ae05XGkjqFPu4>KQPhEud2sws=nBz9^j&F)t7DL5sl0uEs^ zi`wRYo`KVYYvEN8Knu_%`OcC!nm#VJ|2UMN0Wcb8tDu`AAPfPim7(F`f6d#?chi6n zt27y%S}7+h{>*BTMf zM#^2}#DG1$eG3;C5W5NpJSN5dyPhQAo4{bJ0A1PMp5x7%A10CR{r{QcDq<)#mNp1- z^LND8*4EL9*6$s4Jv^I2+4R_6Mc`1yCm08u8c3YP`U-zGmw`i&1362lm37Biv zE;qptzF7Sy@*i6%SJ&HNqpgI5gg={`L6krD_d^bV$BsL_Kuw}GOKDh!HIo3KK8S~Hq<5PK`1xmrx0sCue3c8a?{I$RKAnRlvb7zhL z>~_#oZ(wlxcm26%(y4`|RfS33!PBjd0YN*;_5s&jPh85py!@|%&)wAk=M5E=0@m9% zZ~hHgq=0*pSmoFzZJ=-hbOBYlM&PaDLenM}gkGk?`2upR^=XBvu`%7TY_cBfQRN!GllVBUg4$#l5PfRW8trj>VpM8??GNyfz_%o>Ux5&t=zmGNMy zE49XS4bZ`sr2x&wo)+sf?y9XpUDEB8_=GVk z_d}ITh3yN9GmF^iYI=X6?@s-l4QiUt`bM8$g81;tp}J;!)y79V!z+l9)17fyocwRF`Mv+idR7#W(kPzt>R0O2ELAsF&-=cd2wrH(TlM&Tnkg=Y9Y0 zf4+TrUB`3I-fOKn*O(*jagQ-_VuI8x=Z@-mkpdOW@AO`G42IqytFM=JTC!`uIXTf# zQ2~9vIIlb03;Ig>h?+yQPTX21I3pq=FmojMS*k6~X|+ws10Iv3t?={qS4$UPwc~5| zY$US{4VAdXd`wM7Aoq{!11ZubKbX|yu;Fn&V|wY_lq8xQER!>mCl%CeIk)<7FGo}L z)st{`yQ44RH&&nds+Bn(G{sMR=c{HRi_=!wt!K&oCHOVKzl-Im-9cT=xZsKbAY89s zqm$G%H-G-8wO_{n@1UYA`Vi}Gcw}o+3(cD1^xTB~ROlEDYw2ztE_58b84$1;;vm@C z^pOh_I`bdQ3*ch3GL00sQa?7BpI>IPqhcbP?kLK1$I-RfRd;dWYnqJ``<$28S~GTc zYE~FsP)yiicgI+bWjDgj`;%9Mk^&uaZ)~|W^#08mV{-MYl;+G2X&~br^+U(2BftHqL{D|;l(=}5S zP39!+MCU9kCfNb4DnTKGEiM~t=$p8|zYiM!^5x6_(TCUS>GTX?dTjR&a^tN@1@~vO zJQ}9b$ARe`Z`Z3^D4S+yoygrutGx=$ET;$ues(X!XG9z=+$O0TGOkU{YMa{IgN@;O zl-MPeQt7Zs{_N4CrcOCU+5XYtk2sPF66>w~G@vO!Upz6J2}lq0#=uxqG?13kc>W&d zXO_BOTz#!2pB9*@#Pam%LZ*9C(&uDtWoc3pt+m%;f|T=%cpbQW+}hfgIqg}^`j_k- zK(rbnifrfCkD)g^{<6iK`rD-%o?G8akdksPH*S^MpNtlb*w~6jy&$|{Iv}`?upc=- z9OuQrSArpq)jzK34W$tqR{11rYe7^KVLBPDWNJ!(CO_ZQfBw_*k8jn)9Z#6D`Ybl2^Ds93Ou;a*Q6k0(%{~Q+#b>6LV+NYHlEwDrgC+azOVua~>(l zFC6xEd*KeeyUCX^D6>7|9~=mgIW09!ww=@fT@+&9F;iEJNLNP-hc9fb+)gyYa(n3> zU(@#HY?8Lt6-;6Y6U4zv`3>^+7+jptU(8zaORb;QFO2Ef`^LrmqTSn3np&W|dUdnW z51&VKCV^?u_R6KP?Nb-WZQZmA)N9{nrlq9{@DDWHqp`UJJ_f`KRi&l2&=M4&(lcYJ zf=Bf3lCe+gG(a0WW-9_tKG&Tz)ZYrB`v=QCe)9O2d6~4`gr>c{ox;7oSJKi!IFc$V zDgz5K_V*&fUiI4M%Qrx0u>AZjkvHfhAU(}}OoK=|67qw_A2m1lqQIa;>L+dg@IWw^GEkzwo7s-d*Jo|P37QW!&z@>g{=mhviTQjPFp&p^1zM_TH~ zk3ZqO)zxj(V)&n3k##CaKfG)OVf6W)fwHWmsljTlWHK@U za}DpbO%}-wbU$==zkJ2)w8AU(cgVXvW?CxqPTyq+$)(h4RGCbCLt@51nN6k_bgW!B zf9f0*8OR?z6*V?Sd}3GefX8pQmX1qP^R#BAMnsgBlD67x{X=K`1xLh&m1xhnY z69$=TBr{LB!|WW<>QYrMLHiRr{z9?P_HMS%t}R(SNPoSww3y~KygXssH278L~lb)-4tBtaOvge zhj-^raY+fHhUrYGcr(EX8om$j?2>9`R5`*_0vAI#7Qf{DiF2<&BvU@ZEg*km zzXBU(#H1HEja|tdG6L~xqDJ}x&d6MQ+(q-ptU@eSCZzxED}Eu+o=_HwGQ3e(^9^Y(B(A z+Lp8TBY~?ECso^m7#@V2YkLaEB}*d3^70-$#{!#K>vA_3rfb_&VAi7>x6zj$!+Au# zIO(}hE!$0)Lf~Tg$KEflx+1$>sFquh{}#H=UkRpiZa$NsNF4;hojr;*~r*>{%h` z=xFV?VREaaWCC=h%gz@0>uI57fk!>JAIVq_ptuV-iSs?c2bYtpJiK`(xx<&Tj?V9S zMtY?07H4PMUv(htHyN)`+P-PE&SqKrN~+4({<++p8#g3?kpkpd1VZfJh51lEcGd~` z$HQu*pv^VcowV|Dc9dqBn3-u%rw0-N@Q+N8)zhY|m5)FbLraOQp^xo4E=PM$A;}M6 zdN4$E@ZlABZ|sM5y5{E#5gc#h9YVtB*jNONywcL@wU^spMASg%*H^v-L#blK3r&!1 zYj10dijGc4KnGzMYdbM9@rHa8=B~m3P?#2sbNjY&)$6kh|BTU?#;fHqc;`?!ps_4p zp)(z&;8e)eE**sT=5AZ*_1WP)fJ8Jlef3CmI@!Bw5z~mf4%oF17i8RVPUl!fjExZ@kv%O` z@aM3+43`h|0Pfn{@6UzVzpL6RJT z=)}%p1mQqqybM~0qCIAkO@HHrc){^;m{ZLOz~YanDNOWqiY-pRJ>Wrxh2HQXOd5~+ zY-Z-XyShATQ#&}y_e%ENiB~WfuCyHlOf@+%GwTb|W3TO7 zs~iR{r=Lk^93c$2b>&&UznT#!C;epa^rTKPKovkNBLYG@0VBfb@zj)%;E)Yt4PL5T4|KND8 z%0S`86TbeO7xB?g zZQ%ALHAPv`>X-KCRGn@mI4WpS^pt-Nji|5bZ<3LH(BWmha4tdZK z%F0jZ{9Mk6#AxM@K^^H4+>q#6STGouyMQaj_xiGT7TYe;%XMGSK0y8s{$N(2r2 zbzy#WeO=www&8%-8IBd_4cJYb8Dn7~gl$0~LE>tdZ{A$?+ZwIbk+HNL3{6PL)a@KS znw;Yf!a~4F+BkndJ$7! z&tQRBYfc9-ef8;607n~lS1~s>r=#z4*|luk>vk^ zCFSzwsyME=n4RgVDN-t`;f7EcOAk%*+gn;D2=8%N8v)ta&reKRTH4X^$OoSVDobHx zH3d0&f5XrpNsK;QldQ>DNNl8Gc9%C<$90rSTw?p(GvHJ^ny2}sPug!~eLTlSe zae>>RxjSsll*OXpY0k0b7A98A@ocuo`O8Ba-X+!k>)?yvJqrZ1LzhOe`)ibg=)v8H z2p_9O6GY&&kvlKv`!FG{*TwYe*XML2z(~Ra?AAMVrv-FuBVq47B-l#-Fh7p zbA#W05>DJiL{it8`(hPL27A!iJ(tvk+=<3%(a*Vbvt z)@tA@qQE(DU{Ig4uKwG2qx?c42XOY>zk=o{cSEyu#uFpL zcG&4}hx_Jm86YPokm34fP|@lP3~WV z_yNyuYXf%Xj>8=3^sABhAoA`)%j+GcUJk209E90_aR68}E|`=hmD&~znB$9BsoWE^ z5iWpZkN#RlN?AH7I%MW!JrdmdbNZLC`3#I43cI9hY$x_0_)?g71Hd9e>Dt~rI{MGT zaHEqW8$$3t?S}_k&s~7|=JURPEWbE57)IRNx9e$%6oJlx27FYQBz3v zJas#)EJ(#7W+*7$@$sr&XI-;;`yF&i`eZ2aeoC+m{JC65QEG47wngB-zCs8Hhg0og zZ|`n;y8G9!wP*@<9`1u-m7@fFufN8|mb$waRb62EK9ndxprQ&ahdev5pZc5wpv>okLJjUhZ zU=EZ|K&&spZK%%sDqH)Y$h}55mesHr&=f@lZO3=qNM@_{Y*#dq$mW?&mw_8MZ%WF` zr@?Ge4UOl2-B;HG6k3*_pP!vg<6WP?@j7&qn@Q${bgyxf_){}8UDnBItR!dBGvUm?)ijaev?5)_wtO ztJ6^!&dsG+!^Pgvp=|uVuK(h*IKDJ3wiieX_F>SgYf9h5d)?Y{lTVd`d>rgY2944c zzpbF4kQElwpDdYjtH;h)NJyX3cC4OMq2RqprKYBqcD20jAtyB0xF#A3prEaFj*K{u z8R{ES&`@*e?+|nf2JW8b2AWXCNO@w@#Ih~VCN|#5R-j-e7mrCt>`k7t_u171KI~Tzm zNW*Zd@tY}=hFL3_pFiV~A(WtHf$F}EYfz{yD% z33yn3qI7igX2z+>`(H+m0yt4VINi&q!ky?O1X!Lp6Glm5T#vqxbwttEqG0;<_pQ_Y z_@Jsu4CINxA?FZ%9kDEFVmj~3^va+3#>Of-6^1A{cT zmP_~YC4k#y`;GOtBbhO(@o2cJ7EjK>*6RA)SJ;^Lb}cmKU$bP=AXhRt;V6MDX_ezX zs43fDweSD4-ixU9-sOH*nG`e?pdSd4Ybw@e?&^R`<}T6r(2#IQgS%%%c%+Zna%!T9 z>Dm$-WS<0P2XMLNL}MA`mbr&C8bG)qBWpF56MVGDC?AA< zLEnVa(bUg8%>g<^y{>{rbb-SPImDBZTz~eW*(AUC^db3@lO1-&crmwGggm7>yivQ( ztFhH97iN43HPchPG+1{pW>x^aZO?<#3#yeb0@_@HTCqH?n z2KNv`c@Q}tAD@JThyOWp@4J#?^l<-siavsjhP$*1%Wx*4zBlvoId=AtT@Ah_R{k;X z7{Zxm1(WegNOj)8#Z@XZPYw#Yh4Omh6#oCP4c!ThUc|t_n1{-9ULGt@i`8*1RG5wN zw>aqM@3_7CE1o|-L-g$DhseoEK_#WzA#}+vC;)5-+GYI9tpC(|Xn94?&)wafl#~=Q ztl$`dg9@g2>JP?ZDFIyz{D^tT-LDg}OTV~y+I*%&U45@m*X#ub1(CWt?r(UY{69)&*Q}1370~wuhurOMe8pS9A&1DV3pZk} z=+`X|OMk4!>YTN&K^wi%6*^gilb`&qAUUBJ{oL+|6*LI>qY^ZJe0&Ny-pRAaKx4e* zrFJAyLFnz}HHUS6`BG@B3X@AmseTXcrZ-U~dMXDNV^=#5ZGK(2W$GOL3bLkCrvMnp zeZ9T^*?FX!*R3Mg~AI zMoBL7LD(iNqX0=oU$-a&0Pi-NVeji6BB57a<`xZKgv5jseOa>QMDTox z3$*od_{guDYJPs^w>>X4*ZhCw zgv;zHYI@Rga;hD6X-Vq(`eaZf;J>C<#B)L}`qu5+!9hV`ZepwIP+A)U>OTC4PW{X*x$fq=% zQwrJs_$O|9I@0It7RtRLKfkoiCW0Q{p}Oh9hyK~`Gtul!LR^w1%hXGCzKPo3kKU=2 zH{qXt|2zrw4Gfpir^esD7h%kTms4*u%n_R^7CSRF^_Yr^ot5<;ZXBloftJ+n%Gmby zHo&LA_?ag7FKI%4d%^?#(5$FYNH2pO2rAzl1Xii)%IrueUC}GVop?=k-eC2;lRPWS ziK1IjdudI)wzwX6W0k?0kUJnUnoGOsmvh5qlfb|lqT=@jp)nB#lfTkZ(kW?4G>lhs zS9`-1F<-oR*`A#hYI2m*Z?pu+Qq!n1AWQEDs08o^9zm<2^ zUS2d3t-)N4K}S>tEmZyy0s&}+w7zBm<)Za{Z;+LjFCAC)*N7L*c{f&9mxh28FnLIb znS?*Y`mdlB&6@D;eO8BpJ9OZMuU48R0x{yv7oTZDL{{3K_TnA6XPW$%6hc@nntPk; zJv=HeDg5!m21-j*V(Ur=6(6xU3Ps+N;U)TJBO%<@ihk&P?BTw5)G8j-EUlYot2TXW z3Xs!H!lXdEwO`Ne?8>0T4Dj3k=shTd(sMbfh!-=>_WbdCja#|Kw0frF+n;P1Lsr~oG_Ep6^+JpaEu+0XO2v6qGkFW~k-rmhkpp%D)ponBpV&c1&* zuUhmsacI@@eYjz~jClJ+s$xXHF#S1AW}KpB3DZdM2^_3fN*$IBoX2%p{78W6S&Ds+ zifWC`^1Ke>4n!T47PBJZ9CTzP8gaod=X%sBU4xNSVmA+dtS< zO8r0cas|y*7jfxzFj|^Bd_SY_4sWUKRcs;Y)V9|M$VxX}UhGg6fo$bgl?~mh#k=NE zx^pf(w;;2itAB%U>x<9vY56HL8-&VxK!oA;#Ohrr9Wu1zd-Fy@;~ONsW4Y`q_1cFO zG4FFHw|}8};OAN){x=D^K7KdXaWbVhD99xA377(Eswbru+by7fZnHK<4?**Sg8Y0S z8$r_GKktzN{?=9C6RV=y4W->Y#?j7>_^t9;0|07{1dM_eeWf%LCP|P#ynSRE7;Yr)!TrSaQ zrQO6ZCeYIOno@{e80eYr%`fTwkgS=qFmEp3W^#C1VWsq|sKv13jZ#Phu%>pR*)?Z- zOZuDs=MDegSwnP^hM7Bn#p^on{nF4KLk>0pOTQ~HmC>}ABOHLfMnCAQ^AVd^l*a!L zU@&*_?&vAEb*jaGATi4;^X@65&bBn`OeCbnn5Wwu?HVZwl^V0yQnPe=>;CbRK!Vb3 zZMofisowI6KI8wmVQ%vs8^p66(SR)%=H`acYn(@&=(yY3GczyAtJf{9l29$+c=5lr zAPxY>tA^5)cAXxWEgM%<*U&&tP7Xz~cDAg4CRjrXVd<;tTU@e{ryCas~dLr(enp&ocepNVy`+rJt6iwg!DZ%O3 zmChU&_WYq!U@}_z?d;?VWSjq~?Vi&TKQh1p6UWyCcCfs+_33Xz;JovIc5P7M@kmZa zV%j~`S=dr5G0DtId*BXbU}c&Dr!&h{MkCs+dRyHIwR3Q7jTh9Eq>_}h} zmDxkb|JOo-m{2syt5LVbGrXaV(2R=wIC zrcC8GKG&zTIisUhUkZ#>JL<;;dsIgiLc$erIcec@n^G2;53IKTzhyz55~&aQ)!q;= z))smO6nz}-)|X-!ubPaEZJk~@bWWua<`XQRaOpLo>|AKohNqF8<3mmP5&=dF}=+Eh*jp) zGeGf`j#kdt$uTxQORqh-Tou%>95IvCha^AMh&#l_@2^3>mgEZrD^W4wXN$%%nN`rJ z=Y2XQg89YMMPnwdUcJ?2C1AMqtVHA7ytzgS6#9;WSrg$F$g|MKau-<+2azNS)YwK^ z*AMV;P7T>mhpgX+Yu>tfv-$?k7Afs}(=sW}%dz{*P5v0651%nyxlUMZ)KGX-*_rfo z6Zhs?QtpFOFT`m<5X(YD1oBNpZB9nUe=i^^IsAO#P?TV_X7Q(g8Wc>fGOv!8m+9Nk zu&!;^x^5NrQdj$3m<*Ke>rKHVlvI|NH{|`c*?-^G<++|q?$KnUACL3VV>-Ikm6d-b z(XO%p+w=b>)B7O!^kq7Ba&WM*Mg4^e=de7}u21W@06r}rZmX4O&h{1PGCX5oCFnqK z6pMwkxUA&g78-L%+gd8q8vA(Sc6nflnuLD!Gi9@-JM z?POWDc0!H_6&V?6ahRMVJHKufxLT zcO2T#MPS%@&ZgBH4geVtFwA9k+r0*l&3S!&X-%s;ixsgp)Q_pscNUoRJ4U~MI9kOf z=zYcz5EO8rv%L^Nr#7KloyBHbwV9ZbUe@Q}XO4Z_?ovJ3BD0qB-q)QO5i>xeU7HHX+*mmzj zx>Wc+9DJ47s^=AqFQVI}q<+S;S^#+ADu9N#p{*jmF7-MEo8}e(XVPM4#w*(5>tuTfb>&JqP$TH1z$y-(@y zKC>Dgj~)^Df{z?TtGw~z#VIALv+XH21xKsX9R0Wgu<=MVe(#0pS>5r*`QF_(DPy8N zJ$;pA*#4kb?jD;R-|Oej-1==tkkY<-^;n8MR7#rEeQMUJpNWxx#i@ZMkOGU4D@9CA zmx9HnPqnIgMfi9r3re7T<)H-Xcg`YamWkFAN*WQTke~qYEd;&1GuafYKpq*qywb5- zZcb!dezrGbjWQg_$s1bYb~>1woBMhDk3EeuR-eWzye>8Ea!oZ)A$E8v;mducMq9dx zBCRdboJUR-bt%hFGQF0)3V; z92*<;7MI=PO^g!$)IBXVPb#Vi2@3%iO4qqy@Mo_y9~7|NT<3IW?2aKEF?6P(qlQ|# zq!2t2rCd}Nfc;^mj$7tzhjU9y6tl~>0sd`ixmftiw^-*VbjB;V{pm_4`z6TqE9&bf zZHkpizugL(j&S(Cw9~-!CZ~m&<#wJ^^R-kJ88u_K<@gLLMBE;VyZ5>sqq(^iZ)SGA zx>{7o!2H*g`(D6=ONc@+I8V1ug^+bgI&OEuOByyD0)@~ua3-=kbQP5G_tt*%Lm24x z?JlHyOHS|L{z)malL3aPohB%(up>_HzE>^SY8bdXO@l0*Us|mht8&gxDrIG4oeQNw z`ouonbXgv=k-jyX*syMcAD!$i16N@zxW&LiC! ze=GcEX)Nw7|1I&aR39we$D$7#XUwZEpSuyRz3=QhYh$gegS69;KPHT6tCafDBb6>) zz4Og8(^;W%>2Ot2>K#Qxqs!^^tmnzmkB0vKA0rMuElBv!$g=38`4N-oDufGV^2^QY z`@2Rpo2OA_p`m!UZ#;E6l6U(?uhk|`Qdbw6YBM)%yz%w9Ly1Xid$V9oWU;||XMvi- zc3G(E{LgF$|3ndo&FrPDw#36z=QgQ$X)5H=+$5b&RfWT1$X11Z`22jTFF_2arRiHo z$N4LEN1M3L>l4(I4el|V{(;fa0a2C*gA&*#CL$7>f+BXu+iG{53ruD^fRb2avwEOE zUin?dnB9uI&;;3a>@qtu6~%78w>U%`#Aa%(GlNg}M)ZrHn9yt6#d^G6s_nI_ontl6 z%c4pI0wN+0<$6U(Ui2)yBibnz)1#|@{P?kajdPVM0!UL;v9W6Pe@acf1omZ64Hsd^ z?8>baZN5o+zE6%-C!VPW|aIS0}g` z`edZg{N>`Xvs<}kTYIx{Uwk6Y+pgj5&+F^P3wu{s4DRAtSj-KYB@g+lBIGip8wMh= z2{Kd*X12^U@AsuK=i7)?J+GNxz2Fnc1H<7m`&x^QA{m_;j{IgB*VD#Rijg5qnKjB= zn+|FnPJ>Of@A}B!IPAaI<(|>f#T)m~J+fHyt0IGWvMeXw#4d{YYmxmY)ys>Q+Ya?Q zzIJJ54rD1rTzDc~yeaiKPPHnhDt3P=ngNU0c; z2?fm)0Snbwu2j>$pLvrFHLS)B?&~zi2JLV`Z$y>EOl>xY^~T0J;c&LFXPj$kSQye7 znQmq3sP1mgW|F*n{Q0LNOzVAGEm1{L=sf{bawy2ik`;>##>%Y%$63 zES^G)pz;>24UY6X|8#w>P(+pv0D0~X5OlD5J%#IJXp$aKeI)hRwMH*Vde1PGt z^n_O_({+D5I<(PO+DL(ha+h+Bs4!qwFUbo&zVmo4W1X^z`<22RB<>yRVMVK7t2cHt zF1wLD*@~^PUS1g8)GsTDGw%`Z&T{g!yzGWEu}Qm3RlN_*$;T?~3P=T2Dy)-H?V-`c zlf|8bJrWZWWix3Y2J-d}H@zAe{aMlcSpK_hZU;Q@)sh(~)6eCKY+C?ilk(oEiRei08+vB+ABF zpKRP0U%H~esvncvXbxygrlPDIV>c7-h5UQ%qS15E8A(hG`n*GvcN-k3-u8jT zUun-Tuq=OhBP>>9W72W*s3y9CKEdob)$q_kZZBGmxBgREWZta()WT-yyQF0N&^-<| zBciQ0U%jvI;;TZC-kUCEP-G8)BIHMJ6QdS^_U1ibhS28I=xWurSRHSmL zkv1Dkqk-{km&(6;tXMNwLph>sh|tUW&ST6V9yikD=`n9nVd0h*N@cx7iJI|@q0H+al=O$%E9dexKe6DW;qtlvSt`Nw0XTO4djkXynS}QCGBy&|os8!ip z!R28_ccyH%)}KraIgDk!{jF#GU007v^<1~LiF8|RSKe%()LRCI)tRx$=U>G}EB!oh zCKC6}XX!13Jid3e620^b9{m;64qlH~-L2M*RrW*|8(72acEuxxMj+&uK z--Zp~uw9FjOuv5hDpbsU{rhzsc;1=0IeFN4=#+coM*P6ywC{!5BVZ93kCn>=B!SPl zcX-%(*5@AW4aT(G{^t66UQrQH)qH$?Lm=<=EHpg4>}|alAXm)B!-WQYLVxx`-TZM) zORQvimQ<>*WcnL;ufoECaNC05*w`9KszLedaFOA&W+=EsL%StNV}rJ-rKvf&xEL82 z_+yF#Ee1z0pdXV8g}*uUdA2SOOB3>O+!n>sO9mh!q+G{aJt7f||9;Aj`Y9u*CAn-lmu_vSB*YLlNN$w(;7kpZ9I+Pc*0wQ{Y9-f_`E#esBk21s+v-^=qHS`<6>PG240<;uS!~jC2f|;FNF|&_*chq8MXUCiZ zWt?1vK5k?t0L#wK&Q34@pkaS-=uy8A4oCvd;zv(U;Gl_y(SPgel300xx`p^Yz1f%R zm6esCd4U)X8l%=yFrd(Cu^%dJ!FZTWHo)bY|1O!Vh0bnoZ?88^;s>zSAP4)#pHy(9 z#DvFU=F6+Zd(U*h*IXyXqj^d2>+vmCx4f`_4 zY#yTSpH_!zweJ2ppwMEr16YD-eG9*Tc;XZLpUKr@)cgv15|^X(#`VcY8LGau-#=jc z{=G1w=}>(zW99;A4^nI z0hVVtK>Mc)=wq88wG_V8p0R2t4i1h(;Dv9g@diH>>@GGQ@g?HQkj>ObjR{1HbChrn zzgDC;7We!D>CWiZK`^Zt7x+?L@DqIe zNKiq-p|o8t=X5&N>5Ya9DH$1izkh$bHP>ae(Cg1}19g`${1&<%C`tpFGqN6#OmMlO&oJCG^YIX->@1;?OOVeM-#Ab*XJ z&zpcH6&DwGa_vTyl$87tt6I+VX)M==cMlPRgYwSAm)j&oMLWE1Qv*X1?o9qB?AOW) z?cd8Q!R3XLCHMFCnxfD1?gOZ(Td_Y7*1A{7+U4|gXEOG!y( z%49M-AK7NhQvbb@1$5*Ue;yDJ5JICA5)M(rJeyA2T_q)@KgYv$Kk+C-Yh!a0y6;Lh z2VQd(BB!D<04)om45$Psivc~xzfw;1ej}5iYu+-HPE9sl8f0~vMK|tdndN-LRBILr|#<44IW zZy(>jOtT(i1Uv?a6TZp&H?LoR<+$ORFmDNNO+O*GqkOh3HX%DBE35q9^LHC=#ofSG z!^y=(CJ0@5eZ9N_;1^ebhWtdScnO{ro&y$S*qi46S1WkE{eIZeGBPsK-w&N87O}9f z%yrMLosO1S=+=APE-^v&8x(0a`ev(Ep&l4MaSI7Y8Fj#GEmWlObGrBjdNI_&^MI;? zgupAG`^kLK${RMoMcTfHZ zL~YIEnl^FhY5|+<=;Sm8)}!NmSPc+#Z&S-AB_|J!jQHJWYU$~b`m0);X~bXc+-!I~F<=!x@oCe6_xH)zTQF524K0@Ykv zQE_;1Kou-hW^qmjw1x3VF*HY$ju*FtufVB(V}f$7(NaEdv>GYM%fpVH_Gc@>K@=1e z1SlBTfaad(+n&qH_JivIr|ij-Cm*p0@87yb`gbe%LA$Vl2Pz=YSXx?opUI#p`V##W z$Vx+dXP`CY$Yz31aVwhP>8A{7-CqY7v}R?{uP@a|@&r{OfAv@RIlzjx*Y ze?5bmjjb#$?g2DkU}EY+B9SmQVC97?N@2U4?9ayYd%EMm&z*OMboUKW#tSVNYg(>v z8b&Qavu2=dfKlC9QZO+wi9x@5tEH()zCcF=(#eY1D==4Lq}cec$UeqsK~S}Wdo(`I z&CY%RURA^C_U>*8%JIN^PyqNGoID_48x#%Scyuk3W$zys;FT>5kpE-Y#9_>zOtgo` zOLg_Qyd$_*sokayL?Y8zmzrJ$BmoEw^{*r9^n3gJ9`5dgLqi}zs3#V;4pM^=GkAD- zFc1N30CdG@iN5qz#M*jiracnc^xwYrav(>g!g4-A{PEvCw|x?%wigOxEp~T9IW9ej zgajK%AV~D!;NbOp45SYp@ctEebC@U;m+|cGb$A8(d`#R21 z+&NxLUtj;e&&O~-^^leEstT}uVPSWZCGQaspfp0VB&E$6gPyl6{)q1?Oy$^K9Kg7C zZFF=LToA_lKBJ#q%`Mg^>VZx)GcyB35MXBYX2=Ntdx%&29sx3$vNYV>Cp*g{a4!hq zS5{Wq&il5&?Ho|nA2pCE!TI>$!sY9^sBQoAY)2B#@fWFrGi0+B;rr101bz#R`ru3e zGf^>Hc14f(9=x_}@MM^nWD>i;6ehyS`X@q^L28e0gRO;;2faX^nwtaL1V;Dr#fzoo zeP#+3AL3QbY6v5B?3{Ei5T$X2zbk4SnLdo5r@qheqqnL;{M;R6H1t4UGX=0Z# z@880~dGP1Z@`BULr|{D;{w7q3jOA%ILLV3p95CkhIBj#GFWG23>Os(MyKi7jLw!s$ z^o=T8n})GAGo7&}^mmEmxgm=FJ|L8A-tgs~Olozd_3|(X%`*lD#`_|srly`)gtoGj zs7pwrwt@xf?_m!wyMgc4)!5kB(C}*Ig$(%dqZKx*?=M^-l0R9gSiMudGFrCT7XFNy zu|JShu=__#7DNF&CwnMk9Y6}U6qATEOyI1QGVg6^nVb{eOXBG;50{84cwuF%0(y=5 zefiSX*%`_q9gKVP=0+I4^uqwsY_%G0Hn#m5l=7-R-WdVwLK)lwf-M@u89sAXm6<`_ zLKlP|ECgh~zAS|T&?FcnVCclB!9 zd;x}$75eEe_Gbr>-lpxHw{!sNNTuz1G=~jD6{&B+ZxRqFTfN&ndrO?IYUmOjAi03> z^`wY^3j!7a>af+ zXcaIX7g~*tjbUeKgp)Rs2NprGDD6$(-~&gGPOw!!kLX(`1yC`Vf?1 zD?w3X1%v`#ZD%nVy;G3d*Kgq4L%>c{%uGh+akBVSpD_Xie!NBt+!82RHJ_%$1HlGU z+0ofarxOXyA=cK`u6dsc%h?6quao%Ims-qX9S>;Q{~~V$+tU)9qzplaeoqSUL~oXi z78@%87xU7KvsWU0El4d*4~P-eA|B6Ax5I`@OjehdjUAWg=ZA7sIP5k#QyvNUf+MUD zFV1On!Gli%b_!m1WFs!k*|tx6=qAJ`fN~4Y?=FYcfQJGyfI*GzM*3EA%#P)`o^%McPa=+~^AA|K-Cf%=5a zIXD;?vf?(L9SVB%dp_Lmz^hYPa6Uist{Op;f#XzY=Eg_LXZYHxY85~FTU=_0?BmO` zEnat5kltZM_H)d4OFtAskH?*OWw+clF4R|@!ylWHQx(aolvc)h2X#=WSX$_$8M9>% zksbl0;O>5>eZs?2vt}iT*!>TsLhmH#l;biFbPH5vd#ebLEM4(yfmj%<%>u zB%-q+Nfx5rWuyIUcVpI$hv5OoW+iQ6g{_JPD*GE9UW^z}&9-@Vj?wU{CXNyxm zcwD2NaOafpv@0aCA-w9=wdq_eCeOlbi66~EE6Txdmi2MnajH*p%&$;BvkRa|nl@$) z$=xw^RDJ)uJA3IH25l8fTz}H9h7#uG_lpTfzlF0!98Zzl z(B8p-KL=m3^pEC+Xdjh-fe zROiUrcys<1iMz)uHV)D_T`86_{&=s98TI|HPqjPGJBYKqo9O7XxI=>E;?!7~d7mGj zxqrb|ddR;OJ{iO{G^&nTrnw`g|9bP%(6-S+v8@olt^)>1-AoT9#!g+!A1`SQ9d?1w zI=W(WyF;GD-N$3Wvw0i8KjWg*7vjN^0pZMR91b%l9<44XyYg; z8Wqn@u4c>+CK~r3@0`ldRNXQ;Y_L*Q3>HnL)`=W4sXExG>k@m+dv7CX2!dNrBPk%56eE@f=; zOR?P;6^cArNojEZNB*9&Vjj`~aeuVN#(ysi}{ukfM;K14y$RNx;EXYB4rxAl>l;8=u^)9VB z{$#XkWPi@mU||lTV0t6A29Hmfm6%=U=dZZRNbR-AFMVTqYi99C;3ux z1#78G0)73sl5V(nx5A~ic43&QhL+M?YcjwXe}H?e+D_fd*pvJ{zU-;&Od?0Fi3yU{ z_-M>%!J({@UPo^-7{?VCy~!+Ipsnl{sW=8Lmb`gCi*9+p&^a$Ammt=_IuzHeJ08cEMUNm9M{ z!*S4#*4%Fwxg+0(owoPLesCW!+Xa>f%c3nOJiE8-0(@ZE))tU-crrvx9B7UR`=eA* zxHI|h0sgD|?1Jd)k|t`CZ9*?wAct5|&vTM*FQp~4Qrax_gHGjcZ(^WN_Hrym2VsS& z%Hl89jUmqoo^XJcx4tcVn`HQnm{L)g^Rgz;rLiSwE({=K8 zrSTf7XOEn^Sk&rAKiy|MLMoIHS;JPDblR?4OLqGnH}XH4L>{aK%Cz1IJ;CwfjMdQX zgc50Hlc93c0%48W%RAuVE)*ZG%_nLM*l(?rXdf@!#4c#sRE~&Mzvs+bA4N>!9$m$p ztLpaX$_bUuMSP4t;VLH>HpMD8vQvLpw6Q$vGwcj3Jq zMNg?lU(Th1PD=wBR_v-!+3j&dI=q~NolLPs7K4KZ2Vyq1ioHH8`L)fBw8a}EEC@R1 zU)2#3#z+iK)NFvFSG%*za}1JYwKYwC+5$&1}rIR?QA zVKg#SGQ8r)-%E7GVhxa#gWWAHd;JX!#m^_n@j5+1NPb*+gh9f1=Zz) zd+VM{!@W6-Q^&2o@84y9htd}7jTNtDm-xjx_(U`q26-uvx&K_WJT5QZUfWVE()R2B zwq8@gVa8T&Q4)i6I#$rgeJk4Jj;DGsKVpZ=cR;sq_B+^H!_V5dRz8-&Q%bOf(=BP2%^%FCLlxs;UGtf zQltjq3L+)+0D%Oh2r5MdlrAFDgn;yxC`geiC4?S2gaDxg2qYnIlXKr%_sd)Bt^4`T zr$0$ZX1CeD`OWOv)4VMccB!v3?C2MO_6Si65gl*cebA;p9hL!a176OCI%<<}H0x35 z{dMbtfhAhq*|2{ORXa5^-q{FhR6|7e&9Cmb#{a>^Z^@oze8!?l;|*Kn8?k)FLenRH zJ9Z(4Lh9c8%gGm?1MTgo9WTCgcGd`EVK(35M4l02i7UWgnGa_dc@h*9BLH!krRw7wW!b9S0yc(TZ>NVD1X}GQG+o*L z!6D)R)8Vy~#{->O;{+7X{lPU5bxFwS^?qIJJ&F0K7Z8Y6)KIF5RmF<&w9L`~btkB* z?b8b?2WvwYVzU72&P7#ihSNg5OEko@#hT14^`XUa&Wm6Au`oApS94BzVI{e)(w#>u zfVRgWVko3x6Y$!k&|lEo=PSyJ3c_su16xta_r()Pw{8p=pc{PFgBL9_gX5EeE~{;f zP!?KgxD$&io{!fHIU2U6a?$mwu4BJ22!A(eZ~A(V(fz^!EPXBJ%69lGK1ye19m=TT z?VI#;KYM~*h1JT+jOd+^gQoH;yLh1euKR2ROev%5xG^Uasc%4Ft_9)_4p?IaPHwJK#t!xq7JX(q#gAN-8Xv1{5k4f21_HnUVQ6q=_ z7No5zgLY-_1{WIfsk<%att%_X`Da-UD?T3c-HjAv+hMGme!wfFTh-Lo6pd8s74@FM zE+J*R101(`Iqd`>!80iro$}%SUdQ<~kj-y0uPOAsR2Atb1i@Bd2DLZLnE8j$wxi0j zwpCrDtwsrZ<@BB40^HKmCf$9^Bkd{WEq^YwITM%NdM0 zUOnrhb6|IWtgcw6rP)41P$ax~BcKC_BRRFVStQ2=(dKMBGn4#(i|KOHA+l06wW5?* z?u!)C8}juqVpMGXV3FSp)-ZCHn%qRlKRm7uFvnIOiJagxRV@a`@Jl%cd z&`ni?KlL^Eg@&;Pqi9Qr2ZIma7%ZDR|q;6I&!hU^-zUH~N+GZEmHWpON}0EDy- zWbV~5^5KMWT4sneJba@!ht}UJd;4cP%bzjcuLevYOPmgF#{N&A3_wV5^4OiIx-I%* z)@}3)tXX^}d1avJV# zc%B;8$qD1z#>nq!E`kENn7z+qETerW)D8IC|FMGqN8_#xI}6vZ*$d$;!F*_wxV!r2m8mOh1B$05qYzh3Z$UINzOv5!3@I@#`zGUHn0CHzL`ozb$t}9c|dv(WNAV3Y=by z*R;j%&4$I^B^|9E-C60IAA^7@QZS>;uiI5QmtzGKCoFg8^vDc&uB?%O1|@mYh=3{# znF$@ixv}|@J+Cg0F`AI_wDI}F85IIb7P8O;F_-lnPBq126u;6SiC?bW>ge%~4oQJ0 zt@Fo2>dNzHJn#h>J@0&+<_L8b!OOq;FGo^NoY?SuvIL!J_GuLM^Kp>Nagd2P)+mO4JZL7qj&Re}HMPstf=9-ZHhNDOJ5n^_r-(s%jg?F= z*fMI)*SYjORk$46u(>qQC=CEnd`40wc_SSc2PNaaclNM<^-9dp; z%D1O7LCb4n2tk77ww)-SHP~V^u;xwuK03^dWIkd<(}aFa18Fip70&q^N$J6MKOEYf zytVg5mDgipfBRkHsB&=#d|q)TNivB}+4y0?IQm=w%U$D6FmdG{b$rfs=Cm~$AIIN^ zzLhQBDyu6*UGUC4tc|BvmcO5C&V1TT=z`M6pUGk@&-jb(;^3Op;O)A(-7wbZPNG1o zb3ibe@hyA@FWOl2rHICL!m`S{#w+z1onFL082(B~HauR8*bz5D0%xDglVJb`4dh#s z%Z@+SF9yEKlPB$dsxiwITLQx(?6 z@tH;$%Gn4q2Jq9sCTCn@Y;El6vzqM*X_x(A>gMJaW8rvqKVQ(;g8k&RAUY0I4SJrz zqqV#nV(p~67k|<*oZG8Z1$Oz8Kcd!Xiv4a%m1%+LyT)#Q0^k?SC72A(#o6VH;eQ%5 z+;5jVd}|A^rZH%D_m!nVS8gQn*}D5m=*(&ST8ygQ5K|vbAzK?35f>A}vN|YwF); zaX7L}z}hD;OX4K|IZzG!sqv^ z7^?flVjB=cQN)0fP8`@^c>v^@9_B?s$1gj->%Sb!BeT0Oa4bUWq;XY-{6udU3bOY4 zlp`KCFdJcENAsH@3kUCQHOfM+w)LQfHXI_o(I)*rhc8hEq8k|*s)1jq+D8vG``~s3 z8``SmIh2={w#?gl0`Bck+@>hBMBK^QDB^-Jmcy#x?xSf)6=?-g#%!5dSqaO~)_0UoLdR?{5-h3hPZL8G- zt3lVH$I~zS3-OdINIlV(yEg(U#-1IKd_*`Wd_7cIP%RL*AxQCE_z_+m8IxKxQfp0` zd@%cXCNuLho`g+PAkFD#+uDrp9p?z#WW>c3>fU|-1*awjzTap9QD#-K^m}BC8uRq?oi}Bf;HVgayODeB&?A98yzGQYO_LsU=)GxGpTYAo^0I-t`s9%+= zT24~`GjY&u{-KBt!Aa(224}*-dHXo=|4se6;ePaxv6<(nC~LMJ>f`~JtFok%#|L>h zv9l3s-UjX=1QL2DOcE3(KM?y$Fn2CeI6X)?W`QndV5PY84dqFEoSMdc-ltx zj*#;jO)r4nEAb$QlSRekO@sgX=(jSguB?q>_;=H98^B?NYkqY0n$tf&fGsRAvnvS{ zct4Owt!dDkUIS130PM{~5pi+O4PKJ-k-1epPf;@OW~g)OR!8!DpRyD)69D_|rOow1 z>F}tRF(;W!43@{Q0TST2mryDKHmrY`<1yf9z|{C_we;0gSxpbZ^>6s*g1f&nb6#Sk zy=U2UQyGJW=)cZyntrg*Fj|NfJvw1{C-@U6!4C{T1Qgj<>SBvhNu5kOu2N*{VskL{ zRy$qpy5hl(y0l@+0G>K8a`qu@WvqUpYq4!NvrB&Ba8Ljfn!~kBb}D;_Lr2t6U8eBT zOF{1fr1%g-&q=qI+o5H1<^;V4P8^Yb z*sK2*8ssBd#f=|HNxdJbHii}FfF6Jk3wSF#Ks6Dw1@I!?Dz z7RPs<&$+%F`(pWWFan*b2m`kV1G?!3Vm^WU<7j`+nc^qIpT~>d^Aq9yF9`Y2^ly!L z!)}?D)GG!MtD#|3I5+5I-I+)J$}o}y768JFJAA)PUKV`FI!+t%mf_P#sB=4gAW zFx8%pTPde(cDn-auB*NC%A?2^@7AzTQ(i<&y*_J7U7G%SqzzsCJZ8Ol&f0Qc$!+fV z{XEy6i4K+JE2GZGK?d_j_ofjpDWj;mxyeP-PPWAMi+hWGapH-4EhaNb99dVKusJ5} zT<5uNok2+XkyOS)sGaLgY;nS>2RH$%_NWoqh%xBfpZ(iciIi1vFvwVKOwoX2pZMW(wZ0YK{vaX)Zr~#ko|UZynLXs z3Scm@5w*n8q!1@q>$?J6e139>;v=^T731p^l$FG3g1_uA}q3EeT#n3;W{CtB_5AMw~#+B!(dTK|YBcHt5mb zY$?E9Pq)tB7~dJ@ns|>~&Ae}!%tx}2A=G=|UR4ofz3>y7n1@-;?P~+gm4a$$tIF$3 zK|1E<^DRn}%4ln|>C!I@cOt;*ww%~B6xnXJqVVLD1^o$L9=S9Zoejv}-8{aG`0_8m zIqu?qbreTtM}Wk^1G)5p{!IT|Z?`SG$p-}~n!5R_RGd>Ir))Zx#&~{UgL7R4T9BJM z-iK?M+vJfZDcG-(`o&e&{8z^F=VH4^c1XtfHF6FmJ7lvTE!uiFh`D8Po>q&M^MCMs za&_B^P2>kXGYQVVs;oIX9I1&z+Q{w9pfQ4qZl=++kd+42eE6#3deLf*ncxJ|g7`aX zZMQ!3Lr{oX)#_0B>Ql(hD-_Zyy0s7f%b4G~j<@AR;lkXFkEkB7?RM>Z-y-fjc$maE zYyCliT_m!qNc`{0VmE)D$;lLJ`y=gNdD20i7?C!ag$&G0TG=u9CQhQc7N4?fUMO(? zYDFGN!((G0AC0*RP7A~@&ZfnqwfuteBeR>cc2Y;^>hb*@0g#W^i7XFtKT3KR$HuMnq|n77%_1n1VgMflszWmbbKv~75fama}a8n z9?rEH9q{7TO2cGm!mJah5x`&YI@9|+I7xDe6l zDz%kX`P^DxR8KJnUq}*F)j%9*=}u2?L(O!%5yDYSKQHmcuH#ZUC&)Ku5g3yv0Z90( zJ2cnE)(s~s74v6L?}~b+x5V`7Y(_<7W#L1&AE7TE#{Vcry;&ef-RY3v)*7@zSF)!6duQ|b zPZ~|D{qsz;{MDM4OPU_$9d_&-c^=X*xq~md$#+F8pW|+U@4tZ{V~M~ck-|I8Axu3R z4@{P4R%+O7X%$yC{^R(kS;2f_uQTp@Zu+mTQ0R>jgFNl|8aF=sZkF_UzP*0v+h1az zK4lz_TPEZb9k3*M7r?;xKgu!bUYtAIHxja6JS6Sx!7o`dO5ELnpZ<2*!7=~*S^|k; zXQz}dHT!qD`zz`oCR3YY$m658hgB&V-0y&M+0`J3=KeNI4HN-Eu4g*C_awr@Vn+Ih zzh>mR=U!-)*%GK2q;noSXi}mOb|lODmsKH61-?QUGXpuZ2lCW$@MjC!6QOX0vhK)D=FZJ)mt^e0NU~p+`n&_NAl4gJKasAtdI>lP{&;AE^ dict[str, Any]: # noqa: ARG001 +async def mount(coordinator: Any, config: dict[str, Any]) -> dict[str, Any]: + """Mount the blob_read tool. + + Passes ``config`` into BlobReadTool so it can resolve server_url and + api_key directly when hook-context-intelligence is not mounted + (analytics-only mode). When the hook IS mounted its + ``context_intelligence.hook_config_resolver`` capability takes priority. + """ from amplifier_module_tool_blob_read.blob_read_tool import BlobReadTool - tool = BlobReadTool(coordinator) + tool = BlobReadTool(coordinator=coordinator, config=config) await coordinator.mount("tools", tool, name=tool.name) return {"tool": tool.name, "status": "mounted"} diff --git a/modules/tool-blob-read/amplifier_module_tool_blob_read/blob_read_tool.py b/modules/tool-blob-read/amplifier_module_tool_blob_read/blob_read_tool.py index d6fb9d1f..b4e5fd62 100644 --- a/modules/tool-blob-read/amplifier_module_tool_blob_read/blob_read_tool.py +++ b/modules/tool-blob-read/amplifier_module_tool_blob_read/blob_read_tool.py @@ -9,6 +9,7 @@ from amplifier_core import ToolResult from context_intelligence.client import AsyncCIClient +from context_intelligence.tool_resolver import ToolConfigResolver _URI_SCHEME = "ci-blob://" _BLOB_DIR = Path("/tmp/ci-blobs") @@ -20,11 +21,21 @@ def _sanitize_path_component(s: str) -> str: class BlobReadTool: - """Tool that fetches a ci-blob:// URI from the server and writes it to disk.""" + """Tool that fetches a ci-blob:// URI from the server and writes it to disk. - def __init__(self, coordinator: Any) -> None: + Configuration priority at execute() time: + + 1. ``context_intelligence.hook_config_resolver`` coordinator capability + (registered by hook-context-intelligence when the full behavior is used). + 2. ``config`` dict passed to mount() — used when the analytics-only behavior + is composed without the hook. + """ + + def __init__(self, coordinator: Any, config: dict[str, Any] | None = None) -> None: self._coordinator = coordinator - self._resolver: Any = None + self._config: dict[str, Any] = config or {} + self._hook_resolver: Any | None = None + self._tool_resolver = ToolConfigResolver(self._config, coordinator) @property def name(self) -> str: @@ -52,21 +63,26 @@ def input_schema(self) -> dict[str, Any]: async def execute(self, input: dict[str, Any]) -> ToolResult: # noqa: A002 # (1) Lazy capability resolution - if self._resolver is None: - self._resolver = self._coordinator.get_capability( - "context_intelligence.config_resolver" - ) - if self._resolver is None: - return ToolResult( - success=False, - error={ - "message": "context-intelligence hook not configured", - "type": "configuration_error", - }, + if self._hook_resolver is None: + self._hook_resolver = self._coordinator.get_capability( + "context_intelligence.hook_config_resolver" ) - # (2) Get server_url from resolver - server_url: str | None = self._resolver.context_intelligence_server_url + # (2) Resolve server_url and api_key — from hook capability when + # available, otherwise from ToolConfigResolver (full env/settings + # fallback chain). + if self._hook_resolver is not None: + server_url: str | None = self._hook_resolver.context_intelligence_server_url + api_key: str | None = self._hook_resolver.context_intelligence_api_key + else: + # Analytics-only mode: hook not mounted. Delegate to + # ToolConfigResolver which applies the full four-level priority + # chain: config dict → coordinator.config → + # AMPLIFIER_CONTEXT_INTELLIGENCE_* env vars → + # ~/.amplifier/settings.yaml. + server_url = self._tool_resolver.context_intelligence_server_url + api_key = self._tool_resolver.context_intelligence_api_key + if not server_url: return ToolResult( success=False, @@ -105,7 +121,6 @@ async def execute(self, input: dict[str, Any]) -> ToolResult: # noqa: A002 safe_key = _sanitize_path_component(key) # (5) Construct AsyncCIClient - api_key: str | None = self._resolver.context_intelligence_api_key async_client = AsyncCIClient(server_url=server_url, api_key=api_key or "") # (6) Fetch blob using original unsanitized values for the server request diff --git a/modules/tool-blob-read/pyproject.toml b/modules/tool-blob-read/pyproject.toml index d5c92195..1ef7d5c3 100644 --- a/modules/tool-blob-read/pyproject.toml +++ b/modules/tool-blob-read/pyproject.toml @@ -6,7 +6,7 @@ requires-python = ">=3.11" license = "MIT" dependencies = [ - "amplifier-bundle-context-intelligence", + "amplifier-bundle-context-intelligence @ git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main", "httpx>=0.28.1", "idna>=3.15", ] @@ -24,19 +24,18 @@ package = true [tool.hatch.build.targets.wheel] packages = ["amplifier_module_tool_blob_read"] +[tool.hatch.metadata] +allow-direct-references = true + [dependency-groups] dev = [ - "amplifier-core", + "amplifier-core>=1.6.0", "pytest>=9.0.3", "pytest-asyncio>=0.24", "pyright>=1.1", "ruff>=0.4", ] -[tool.uv.sources] -amplifier-bundle-context-intelligence = { path = "../.." } -amplifier-core = { git = "https://github.com/microsoft/amplifier-core", branch = "main" } - [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" diff --git a/modules/tool-blob-read/tests/test_blob_read_tool.py b/modules/tool-blob-read/tests/test_blob_read_tool.py index 856ecd7d..9ff1faeb 100644 --- a/modules/tool-blob-read/tests/test_blob_read_tool.py +++ b/modules/tool-blob-read/tests/test_blob_read_tool.py @@ -136,11 +136,20 @@ async def test_execute_returns_tool_result(self) -> None: class TestLazyCapabilityResolution: """execute() must resolve the config capability lazily and cache it.""" - async def test_capability_not_found_returns_configuration_error(self) -> None: + async def test_capability_not_found_returns_configuration_error(self, monkeypatch) -> None: from amplifier_module_tool_blob_read.blob_read_tool import BlobReadTool + # Isolate from live AMPLIFIER_CONTEXT_INTELLIGENCE_* env vars so that + # ToolConfigResolver cannot find a server URL anywhere and the guard + # in execute() returns configuration_error. + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + + coordinator = _make_coordinator(None) + coordinator.config = {} # get_capability returns None → capability not registered - tool = BlobReadTool(_make_coordinator(None)) + tool = BlobReadTool(coordinator) result = await tool.execute({"uri": "ci-blob://session/key"}) assert result.success is False @@ -405,3 +414,100 @@ async def test_none_api_key_passes_empty_string(self) -> None: await tool.execute({"uri": "ci-blob://my-session/my-key"}) mock_cls.assert_called_once_with(server_url="http://localhost:8080", api_key="") + + +# --------------------------------------------------------------------------- +# (8) Analytics-only mode +# --------------------------------------------------------------------------- + + +class TestAnalyticsOnlyMode: + """Analytics-only mode: config dict is used when the hook capability is absent.""" + + async def test_analytics_only_success(self) -> None: + """Tool succeeds using config values when no hook capability is registered.""" + from amplifier_module_tool_blob_read.blob_read_tool import BlobReadTool + + coordinator = _make_coordinator(None) + config = { + "context_intelligence_server_url": "http://ci:4200", + "context_intelligence_api_key": "key123", + } + tool = BlobReadTool(coordinator, config=config) + + with _patch_async_client(fetch_blob_return={"data": "test"}) as (mock_cls, _): + result = await tool.execute({"uri": "ci-blob://session-123/some-key"}) + + assert result.success is True + mock_cls.assert_called_once_with(server_url="http://ci:4200", api_key="key123") + + async def test_analytics_only_no_server_url_returns_error(self, monkeypatch) -> None: + """Missing server URL in config returns a configuration_error — not 'hook not configured'.""" + from amplifier_module_tool_blob_read.blob_read_tool import BlobReadTool + + # Isolate from live AMPLIFIER_CONTEXT_INTELLIGENCE_* env vars so + # ToolConfigResolver has nowhere to find a server URL. + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_API_KEY", raising=False) + monkeypatch.delenv("AMPLIFIER_CONTEXT_INTELLIGENCE_WORKSPACE", raising=False) + + coordinator = _make_coordinator(None) + coordinator.config = {} + config = { + "context_intelligence_api_key": "key123", + # no "context_intelligence_server_url" + } + tool = BlobReadTool(coordinator, config=config) + + result = await tool.execute({"uri": "ci-blob://session-123/some-key"}) + + assert result.success is False + assert result.error is not None + assert result.error["type"] == "configuration_error" + assert "server URL not configured" in result.error["message"] + + async def test_analytics_only_env_var_fallback_resolves_server_url(self, monkeypatch) -> None: + """ToolConfigResolver env-var fallback must be used when config has no server_url. + + Regression: commits 584efb9/be6451e removed ToolConfigResolver, dropping the + AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL env-var fallback path in analytics-only + mode. This test ensures the fallback is restored. + """ + from amplifier_module_tool_blob_read.blob_read_tool import BlobReadTool + + # Stamp a specific URL into the env var (overrides whatever live value exists) + monkeypatch.setenv("AMPLIFIER_CONTEXT_INTELLIGENCE_SERVER_URL", "http://env-server:8000") + + coordinator = _make_coordinator(None) + coordinator.config = {} # prevent coordinator.config from providing a URL + config = { + "context_intelligence_api_key": "key123", + # deliberately NO "context_intelligence_server_url" in config + } + tool = BlobReadTool(coordinator, config=config) + + with _patch_async_client(fetch_blob_return={"data": "test"}) as (mock_cls, _): + result = await tool.execute({"uri": "ci-blob://session-123/some-key"}) + + # ToolConfigResolver must have resolved the URL from the env var + assert result.success is True, f"Expected success=True (env-var fallback), got: {result}" + mock_cls.assert_called_once() + call_kwargs = mock_cls.call_args.kwargs + assert call_kwargs.get("server_url") == "http://env-server:8000" + + +# --------------------------------------------------------------------------- +# (9) Attribute naming +# --------------------------------------------------------------------------- + + +class TestResolverAttributeName: + """BlobReadTool must use _hook_resolver (not _resolver) for the cached capability.""" + + def test_init_has_hook_resolver_attribute(self) -> None: + from amplifier_module_tool_blob_read.blob_read_tool import BlobReadTool + + tool = BlobReadTool(coordinator=_make_coordinator(resolver=None)) + assert hasattr(tool, "_hook_resolver"), "Expected _hook_resolver attribute" + assert tool._hook_resolver is None + assert not hasattr(tool, "_resolver"), "Found old _resolver attribute — rename incomplete" diff --git a/modules/tool-blob-read/tests/test_mount.py b/modules/tool-blob-read/tests/test_mount.py index 738be388..3d862e7b 100644 --- a/modules/tool-blob-read/tests/test_mount.py +++ b/modules/tool-blob-read/tests/test_mount.py @@ -71,3 +71,16 @@ async def test_mount_returns_metadata_dict(self) -> None: assert isinstance(result, dict) assert "tool" in result assert "status" in result + + async def test_config_dict_passed_to_tool_constructor(self) -> None: + """Config dict is forwarded to the tool so it can resolve server_url without the hook.""" + from amplifier_module_tool_blob_read import mount + + coordinator = MagicMock() + coordinator.mount = AsyncMock() + await mount( + coordinator, + config={"context_intelligence_server_url": "http://test"}, + ) + tool = coordinator.mount.call_args.args[1] + assert tool._config["context_intelligence_server_url"] == "http://test" diff --git a/modules/tool-blob-read/uv.lock b/modules/tool-blob-read/uv.lock index b385fab4..18eeb03f 100644 --- a/modules/tool-blob-read/uv.lock +++ b/modules/tool-blob-read/uv.lock @@ -5,25 +5,12 @@ requires-python = ">=3.11" [[package]] name = "amplifier-bundle-context-intelligence" version = "0.1.1" -source = { editable = "../../" } - -[package.metadata] - -[package.metadata.requires-dev] -dev = [ - { name = "httpx", specifier = ">=0.25" }, - { name = "idna", specifier = ">=3.15" }, - { name = "pyright", specifier = ">=1.1" }, - { name = "pytest", specifier = ">=9.0.3" }, - { name = "pytest-asyncio", specifier = ">=0.24" }, - { name = "pyyaml", specifier = ">=6.0" }, - { name = "ruff", specifier = ">=0.4" }, -] +source = { git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main#5509b397eb61054039ba2e62a1e898be4b1d5519" } [[package]] name = "amplifier-core" -version = "1.2.5" -source = { git = "https://github.com/microsoft/amplifier-core?branch=main#308b2455728378be896266cf620c00da2a408b65" } +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "pydantic" }, @@ -31,6 +18,14 @@ dependencies = [ { name = "tomli" }, { name = "typing-extensions" }, ] +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/90/d520390cd91aae3d02db53653f828046089c79203dbb142e9bda346fa1d6/amplifier_core-1.6.0-cp311-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d35130e4262cf0db2d6c5f7e65e244a9ef2c7397bfe2a9853bc9b0d9fd05be64", size = 8113151, upload-time = "2026-05-18T16:13:46.825Z" }, + { url = "https://files.pythonhosted.org/packages/94/75/3ab3126ba5a6f2fc6051a4d08e42364899e4c9ac4daa9d0a60947bf8acd1/amplifier_core-1.6.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:387a2c58fcf4caefdb45c52ec228307bc225e73606897f242154782bc3e123da", size = 7268223, upload-time = "2026-05-18T16:13:48.749Z" }, + { url = "https://files.pythonhosted.org/packages/21/22/5a36160b3487170bcba0cbc61535101ff624e8314ed38fd35e561cb711a1/amplifier_core-1.6.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8344fccdedd725a51c018de17867cdf1c35abb571dabc0bbccdb5c1242324a47", size = 7532259, upload-time = "2026-05-18T16:13:50.614Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d7/3874c2308523209411367cf3b8b690e14e869f5f6bfb64cb1b1971e06a96/amplifier_core-1.6.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a8e0103242a2e2a975c880b1de0e5a02501e0421c1e5386dadae3f111e1d2b5", size = 8507642, upload-time = "2026-05-18T16:13:52.977Z" }, + { url = "https://files.pythonhosted.org/packages/86/59/3646a89537b4556274183519f6db9c354fb3d183f52ef4a2179af12dd386/amplifier_core-1.6.0-cp311-abi3-win_amd64.whl", hash = "sha256:5113aa2d88038776eb257af9e7d9de7af13b3cd9097d2ac67aef5730fa0678e3", size = 8910313, upload-time = "2026-05-18T16:13:55.249Z" }, + { url = "https://files.pythonhosted.org/packages/9f/9e/58b141115e5eea65703f0b01459eefed36b561e9642ba96d48542345cd8f/amplifier_core-1.6.0-cp311-abi3-win_arm64.whl", hash = "sha256:e1b2731dc09d1cbc668b411007e7f9a2c7edbd75b2525407cae1e6b4a4de0b83", size = 7661416, upload-time = "2026-05-18T16:13:57.513Z" }, +] [[package]] name = "amplifier-module-tool-blob-read" @@ -53,14 +48,14 @@ dev = [ [package.metadata] requires-dist = [ - { name = "amplifier-bundle-context-intelligence", editable = "../../" }, + { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "idna", specifier = ">=3.15" }, ] [package.metadata.requires-dev] dev = [ - { name = "amplifier-core", git = "https://github.com/microsoft/amplifier-core?branch=main" }, + { name = "amplifier-core", specifier = ">=1.6.0" }, { name = "pyright", specifier = ">=1.1" }, { name = "pytest", specifier = ">=9.0.3" }, { name = "pytest-asyncio", specifier = ">=0.24" }, diff --git a/modules/tool-context-intelligence-upload/amplifier_module_tool_context_intelligence_upload/uploader.py b/modules/tool-context-intelligence-upload/amplifier_module_tool_context_intelligence_upload/uploader.py index b037df55..43e3fa74 100644 --- a/modules/tool-context-intelligence-upload/amplifier_module_tool_context_intelligence_upload/uploader.py +++ b/modules/tool-context-intelligence-upload/amplifier_module_tool_context_intelligence_upload/uploader.py @@ -71,7 +71,7 @@ def _workspace_from_path(session_dir: Path) -> str: Used as a fallback when an ``events.jsonl`` record does not carry a ``workspace`` field. Sessions captured before workspace was added to the on-disk format lack the field entirely; the project slug is the value - ``ConfigResolver`` would have resolved at live-capture time. + ``HookConfigResolver`` would have resolved at live-capture time. Path structure: .../.amplifier/projects/{project_slug}/sessions/{id}/context-intelligence/ diff --git a/modules/tool-context-intelligence-upload/pyproject.toml b/modules/tool-context-intelligence-upload/pyproject.toml index 6e3cf3a7..baf3ece7 100644 --- a/modules/tool-context-intelligence-upload/pyproject.toml +++ b/modules/tool-context-intelligence-upload/pyproject.toml @@ -5,7 +5,7 @@ requires-python = ">=3.11" license = "MIT" dependencies = [ - "amplifier-bundle-context-intelligence @ git+https://github.com/microsoft/amplifier-bundle-context-intelligence@v0.1.1", + "amplifier-bundle-context-intelligence @ git+https://github.com/microsoft/amplifier-bundle-context-intelligence@main", "httpx>=0.28.1", "idna>=3.15", "amplifier-module-hook-context-intelligence", diff --git a/modules/tool-context-intelligence-upload/uv.lock b/modules/tool-context-intelligence-upload/uv.lock index 60978200..f1563e93 100644 --- a/modules/tool-context-intelligence-upload/uv.lock +++ b/modules/tool-context-intelligence-upload/uv.lock @@ -5,7 +5,7 @@ requires-python = ">=3.11" [[package]] name = "amplifier-bundle-context-intelligence" version = "0.1.1" -source = { git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=v0.1.1#b722074f17a354816ebf5adcf0881b1562a2cbc5" } +source = { git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main#5509b397eb61054039ba2e62a1e898be4b1d5519" } [[package]] name = "amplifier-module-hook-context-intelligence" @@ -19,14 +19,14 @@ dependencies = [ [package.metadata] requires-dist = [ - { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=v0.1.1" }, + { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "idna", specifier = ">=3.15" }, ] [package.metadata.requires-dev] dev = [ - { name = "amplifier-core", git = "https://github.com/microsoft/amplifier-core?rev=v1.4.1" }, + { name = "amplifier-core", specifier = ">=1.6.0" }, { name = "pyright", specifier = ">=1.1" }, { name = "pytest", specifier = ">=9.0.3" }, { name = "pytest-asyncio", specifier = ">=0.24" }, @@ -55,7 +55,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=v0.1.1" }, + { name = "amplifier-bundle-context-intelligence", git = "https://github.com/microsoft/amplifier-bundle-context-intelligence?rev=main" }, { name = "amplifier-module-hook-context-intelligence", editable = "../hook-context-intelligence" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "idna", specifier = ">=3.15" }, diff --git a/skills/context-intelligence-session-navigation/SKILL.md b/skills/context-intelligence-session-navigation/SKILL.md index 15ebe2af..e240e48a 100644 --- a/skills/context-intelligence-session-navigation/SKILL.md +++ b/skills/context-intelligence-session-navigation/SKILL.md @@ -53,7 +53,7 @@ Each line in `events.jsonl` is a single JSON object with exactly **four** fields | `timestamp` | string | ISO 8601 timestamp of when the event was recorded | | `data` | object | Raw event payload, exactly as the kernel emitted it | -**Key principle:** No field promotion, no level classification, no payload mutation. What the kernel emits is exactly what gets stored in `data`. The `workspace` field is the only addition the hook makes — it is injected at write time from `ConfigResolver.workspace`. +**Key principle:** No field promotion, no level classification, no payload mutation. What the kernel emits is exactly what gets stored in `data`. The `workspace` field is the only addition the hook makes — it is injected at write time from `HookConfigResolver.workspace`. ---

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%0Dm~!YO6w;hO%>Tm}=jk{L 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≦8|F*lCK(>F>yT-f$x9BczEwI@!8sg%ss9a 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%0Ar>br2qTcQj7 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�RU2Tc0o1m?fv^OdfFROwC*b@y6?j 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