From 3361a5e1b13fa74a693fae9c6452f8d08d5a2049 Mon Sep 17 00:00:00 2001 From: lix-2026 Date: Mon, 25 May 2026 03:05:57 +0800 Subject: [PATCH] refactor: extract editor dnd helpers --- ...0-browser-runtime-followup-checklist-v1.md | 12 ++- ...29-editor-runtime-followup-checklist-v1.md | 11 ++- .../document-conflict-panel-runtime.js | 18 +++- rust/crates/mnote-web/src/routes/web_shell.rs | 41 +++++--- .../mnote-leptos-tiptap-spike-island_bg.wasm | Bin 2121439 -> 2121435 bytes .../src/editor_runtime/block_dnd.rs | 92 ++++++++++++++++++ .../src/editor_runtime/mod.rs | 1 + rust/spikes/leptos-tiptap-spike/src/lib.rs | 36 ++++--- 8 files changed, 173 insertions(+), 38 deletions(-) create mode 100644 rust/spikes/leptos-tiptap-spike/src/editor_runtime/block_dnd.rs diff --git a/design/03-rust-web/process/3-20-browser-runtime-followup-checklist-v1.md b/design/03-rust-web/process/3-20-browser-runtime-followup-checklist-v1.md index 80c54121..72d95eff 100644 --- a/design/03-rust-web/process/3-20-browser-runtime-followup-checklist-v1.md +++ b/design/03-rust-web/process/3-20-browser-runtime-followup-checklist-v1.md @@ -6,7 +6,7 @@ ## 1. 目标 -在 `3-19` 已归档的基础上,继续把仍留在 Rust inline / 主壳大 runtime 中的浏览器行为切成可审计模块。Codex 维护本文件作为事实源,Reasonix 只承接短批次审计、窄范围实现或浏览器 smoke;每批最多 4 个 worker。 +在 `3-19` 已归档的基础上,继续把仍留在 Rust inline / 主壳大 runtime 中的浏览器行为切成可审计模块。Codex 维护本文件作为事实源,Reasonix 只承接短批次审计、窄范围实现或浏览器 smoke;每批最多 2 个 worker。 ## 2. 本轮边界 @@ -63,7 +63,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据 ## 6. 本轮执行记录 - 2026-05-25:Codex 创建本续跑事实源。 -- 2026-05-25:修正执行约束:本文件遵循当前 goal 的“每批最多 4 个 worker”;实现 worker 必须在独立 worktree 产出候选 patch,Codex 复核后再选择性合入。 +- 2026-05-25:修正执行约束:本文件遵循当前 goal 的“每批最多 2 个 worker”;实现 worker 必须在独立 worktree 产出候选 patch,Codex 复核后再选择性合入。 - 2026-05-25:下一批只派发 Worker B(local upload / filetree 下一刀只读审计);Worker A/C/D 暂缓。 - 2026-05-25:Reasonix local upload / filetree 只读审计尝试未产生 `result.json` / `process-handoff`,且运行期间出现额外 Batch A2 runner,主控已终止进程;该结果不作为正式 handoff 采纳。 - 可参考的 transcript 结论:`fetchWithTimeout` 是低风险纯工具函数,可先迁入 `local-upload-runtime.js`;`uploadFileToMediaAsset` / `uploadFilesWithResolvedTarget` / `insertUploadedAssetIntoEditor` 仍与 API、editor 插入和 snapshot refresh 耦合,暂不迁。 @@ -92,7 +92,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据 - 修改:`rust/crates/mnote-web/browser/document-conflict-panel-runtime.js`、`rust/crates/mnote-web/src/routes/web_shell.rs`。 - 已验证:`node --check rust/crates/mnote-web/browser/document-conflict-panel-runtime.js`、`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/Cargo.toml -p mnote-web`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web document_conflict_panel_runtime_contains_dom_helpers -- --test-threads=1`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web mnote_browser_runtime_assets_are_explicitly_mounted -- --test-threads=1`。 - 未完成:conflict merge / accept / keep 业务逻辑、document session lifecycle、secondary pane conflict smoke 仍未迁出;本轮未声称真实冲突 UI 全链路完成。 -- 2026-05-25:根据用户纠正,后续实现 worker 不能在主工作区直接修改;每批最多 4 个 worker,且必须采用独立 worktree 候选 patch 或明确只读任务。Codex 读取 Hindsight recall、`process-handoff.md/json`、`result.json`、diff 与验证证据后再选择性合入。 +- 2026-05-25:根据用户纠正,后续实现 worker 不能在主工作区直接修改;每批最多 2 个 worker,且必须采用独立 worktree 候选 patch 或明确只读任务。Codex 读取 Hindsight recall、`process-handoff.md/json`、`result.json`、diff 与验证证据后再选择性合入。 - 2026-05-25:Codex 主控完成非本地 media upload API 小切片:`local-upload-runtime.js` 新增并导出 `uploadMediaAsset(file, plan, context)`,承接 `/api/media/upload` 的 FormData 构造、fetch 和响应解析;`layout.rs` 的 `uploadFileToMediaAsset` 仍负责 appendUploadedAssetRow、editor 插入和 `wolai:assets-changed` 事件分发,并保留完整 inline fallback。 - 修改:`rust/crates/mnote-web/browser/local-upload-runtime.js`、`rust/crates/mnote-web/src/ssr/pages/layout.rs`。 - 已验证:`node --check rust/crates/mnote-web/browser/local-upload-runtime.js`、`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/Cargo.toml -p mnote-web`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web local_upload_runtime_contains_editor_upload_context_helpers -- --test-threads=1`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web sidebar_upload_runtime_routes_local_markdown_assets_to_local_folder -- --test-threads=1`、`node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js`。 @@ -124,8 +124,12 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据 - 2026-05-25:Batch E 派发异常并终止:Worker B 任务被重复启动为两个 runner / ACP 进程(`reasonix-2026-05-24T18-25-26-844Z-33ea4d58`、`reasonix-2026-05-24T18-26-04-453Z-5ff62e40`),同一 worktree `/mnt/Data1T/mnote-worktrees/0525-e-worker-b-3-20-conflict-diff-dom` 出现并发写入风险;Codex 已终止相关 Reasonix 进程,未读取到 `final.md`、`result.json`、`process-handoff.md/json`。原始未验证 diff 不直接采纳;后续采纳必须经过 Codex 独立复核、修正和验证。 - 2026-05-25:Batch F 计划继续采用独立 worktree 候选 patch:Worker B 负责把 file tree 上传目标解析的纯 fallback / plan 归一化 helper 外置到 `filetree-runtime.js`;`layout.rs` 仍保留 async preflight 和完整 inline fallback,避免和当前 conflict panel 写集冲突。 - 2026-05-25:Batch F Worker B 异常终止:run `reasonix-2026-05-24T18-39-34-442Z-d9e7ada1` 只产出 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,未产出 `final.md`、`result.json`、`process-handoff.md/json`,worktree 无 diff;transcript 停在 `ask_choice`,原因是 worker 误判任务书拼接了 Worker A / Worker B 两个任务并要求人工选择。Codex 已终止 runner / ACP,不采纳该 run。 -- 2026-05-25:Batch G 超限派发并终止:Worker B/C/D 三个 Reasonix runner 同时启动,超过当前 goal 的“每批最多 2 个 worker”;run `reasonix-2026-05-24T18-51-00-477Z-1307a1b4`、`reasonix-2026-05-24T18-51-00-504Z-2304f570`、`reasonix-2026-05-24T18-51-00-541Z-17d61f43` 均只有 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,无 handoff,worktree 无 diff;Codex 已终止 runner / ACP,不采纳该批。 +- 2026-05-25:Batch G 按用户纠正把 Worker B/C/D 分别派到独立 worktree,但三个 worker 同时启动,超过当前 goal 的“每批最多 2 个 worker”;三个 Reasonix run `reasonix-2026-05-24T18-51-00-477Z-1307a1b4`、`reasonix-2026-05-24T18-51-00-504Z-2304f570`、`reasonix-2026-05-24T18-51-00-541Z-17d61f43` 均只有 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,无 handoff/result/final,worktree 初始 diff 为空;Codex 不采纳这些 Reasonix run,只把独立 worktree 保留为 Codex 候选 patch 沙盒。 - 2026-05-25:Codex 主控完成 filetree upload target fallback 小切片:`filetree-runtime.js` 新增并导出 `fileTreeUploadTargetFallback(detail, deps)`,承接同步 fallback / plan 归一化;`layout.rs` 的 `fallbackFileTreeUploadTarget` 优先委托 runtime,仍保留完整 inline fallback;async preflight、后端归属判定、`uploadFileToMediaAsset`、`uploadFilesWithResolvedTarget` 不迁。 - 修改:`rust/crates/mnote-web/browser/filetree-runtime.js`、`rust/crates/mnote-web/src/ssr/pages/layout.rs`。 - 已验证:`node --check rust/crates/mnote-web/browser/filetree-runtime.js`、`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/Cargo.toml -p mnote-web`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web filetree -- --test-threads=1`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web local_upload_runtime_contains_editor_upload_context_helpers -- --test-threads=1`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js`。 - 未完成:async preflight、`refreshLocalFolderSidebarSnapshot` / `appendUploadedAssetRow`、conflict action helpers、secondary pane conflict smoke 仍未迁出或覆盖。 +- 2026-05-25:Batch G Worker C 使用独立 worktree `/mnt/Data1T/mnote-worktrees/0525-g-worker-c-3-20-conflict-actions`;Reasonix run `reasonix-2026-05-24T18-51-00-504Z-2304f570` 无 handoff/result/final,且 transcript 停在 `ask_choice`,不采纳。Codex 随后在该 worktree 产出候选 patch,经复核后选择性移植到主工作区。 + - 修改:`document-conflict-panel-runtime.js` 新增并导出 `runSessionConflictAction(action, deps)`,只负责 promise/catch 动作包装;`web_shell.rs` 仍持有 `acceptDiskVersion`、`keepCurrentEditorVersion`、`writeMergedConflictResult`、status 和重新渲染业务逻辑。 + - 已验证:`node --check rust/crates/mnote-web/browser/document-conflict-panel-runtime.js`、`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/Cargo.toml -p mnote-web`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web document_conflict_panel_runtime_contains_dom_helpers -- --test-threads=1`、`cargo test --manifest-path rust/Cargo.toml -p mnote-web mnote_browser_runtime_assets_are_explicitly_mounted -- --test-threads=1`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task451-local-markdown-conflict-resolution-ui-smoke.js`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js`。 + - 未完成:`acceptDiskVersion` / `keepCurrentEditorVersion` / `writeMergedConflictResult` 业务逻辑、document session lifecycle、secondary pane conflict smoke 仍未迁出或覆盖。 diff --git a/design/05-editor-mainline/process/5-29-editor-runtime-followup-checklist-v1.md b/design/05-editor-mainline/process/5-29-editor-runtime-followup-checklist-v1.md index 7f3a85cb..83cce27c 100644 --- a/design/05-editor-mainline/process/5-29-editor-runtime-followup-checklist-v1.md +++ b/design/05-editor-mainline/process/5-29-editor-runtime-followup-checklist-v1.md @@ -67,7 +67,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据 - 已迁函数:`node_is_within_root`、`active_editor_text_selection`、`has_active_text_selection`、`selection_summary`、`selection_has_rich_marks`。 - 未迁:`SelectionPayload`、`selection_payload`、`send_selection_state*`、`selection_event_payload`,原因是仍依赖 bridge event、`HoveredBlockState` 和 runtime block id 边界。 - 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen`、`task488`、`task489`、CodeGraph pending 0。 -- 2026-05-25:执行口径修正:继续遵循当前 goal 的“每批最多 4 个 worker”;Reasonix 后续必须使用独立 worktree 或明确只读任务,完成后由 Codex 读取 handoff 并复核。 +- 2026-05-25:执行口径修正:继续遵循当前 goal 的“每批最多 2 个 worker”;Reasonix 后续必须使用独立 worktree 或明确只读任务,完成后由 Codex 读取 handoff 并复核。 - 2026-05-25:Batch D 额外 runner 曾自动启动 Worker A / Worker B,未经过本轮主控计划确认;主控已终止相关 runner / ACP 进程,不采纳这些未受控 run。遗留 task 草稿暂不删除,后续如继续使用必须重新生成受控任务书。 - 2026-05-25:Reasonix runner 异常:后续实现 run 未写 `result.json`、`process-handoff.md/json`,部分 transcript 停在工具调用阶段;Codex 不采纳其文字结论,只复核实际 diff。 - 2026-05-25:Reasonix overlay / block menu 只读审计尝试未产生 `result.json` / `process-handoff`,且运行期间出现额外 Batch A2 runner,主控已终止进程;该结果不作为正式 handoff 采纳。 @@ -120,3 +120,12 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据 - 修改:`rust/spikes/leptos-tiptap-spike/src/editor_runtime/block_menu_overlay.rs`、`rust/spikes/leptos-tiptap-spike/src/editor_runtime/mod.rs`、`rust/spikes/leptos-tiptap-spike/src/lib.rs`、generated island wasm/js/d.ts。 - 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js`。 - 未完成:`pointer_in_handle_corridor`、`drop_indicator_from_target` / `drop_indicator_from_point`、`sync_editor_overlay_state` / `try_sync_editor_overlay_state` 仍在 `lib.rs`。 +- 2026-05-25:Batch G Worker D 先按用户纠正使用独立 worktree `/mnt/Data1T/mnote-worktrees/0525-g-worker-d-5-29-block-dnd-helpers`;Reasonix run `reasonix-2026-05-24T18-51-00-541Z-17d61f43` 仅产出 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,无 handoff/result/final,worktree 初始 diff 为空,拒绝作为 Reasonix handoff 采纳。Codex 随后在该独立 worktree 产出候选 patch,经复核后选择性移植到主工作区。 + - 修改:新增 `rust/spikes/leptos-tiptap-spike/src/editor_runtime/block_dnd.rs`,迁出 `pointer_in_handle_corridor` / `drop_indicator_from_target` 使用的纯几何 helper;`lib.rs` 仍保留 DOM 查询、signal 编排、拖拽事件和 HTML reorder 行为。 + - 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js`、`NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js`。 + - 未覆盖:`cargo test --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml block_dnd -- --test-threads=1` 仍被既有 `STYLE` 测试编译错误阻断,未进入本次新增 helper 测试。 + - 未完成:`drop_indicator_from_point` 的 DOM target lookup、拖拽 listener 编排、`sync_editor_overlay_state` / `try_sync_editor_overlay_state` 仍在 `lib.rs`。 +- 2026-05-25:Batch H 只派发 1 个只读 Reasonix worker 复核 block DnD helper 边界,使用独立 worktree `/mnt/Data1T/mnote-worktrees/0525-h-5-29-block-dnd-readonly`,run id `reasonix-2026-05-24T18-59-12-393Z-b5d95a7b`,并显式使用 `--no-memory-recall` 降低任务串线风险。 + - Codex 已读取 Hindsight recall、`process-handoff.md/json`、`result.json`,并核对 worktree `git status --short` / `git diff --stat` 为空。 + - 审计结论:只迁纯几何 helper 是合理边界;DOM 查询、`document.element_from_point`、event listener、Leptos signal 和拖拽重排行为继续留在 `lib.rs`。 + - 主控裁决:采纳审计方向,但保留当前 `editor_runtime/block_dnd.rs` 的 `HandleCorridorGeometry` 参数结构,避免 Reasonix 建议的长参数列表降低可读性。 diff --git a/rust/crates/mnote-web/browser/document-conflict-panel-runtime.js b/rust/crates/mnote-web/browser/document-conflict-panel-runtime.js index 112553d6..c7a35ff5 100644 --- a/rust/crates/mnote-web/browser/document-conflict-panel-runtime.js +++ b/rust/crates/mnote-web/browser/document-conflict-panel-runtime.js @@ -167,8 +167,24 @@ function populateSessionConflictDiffPanel(panel, context, deps) { }); } +function runSessionConflictAction(action, deps) { + deps = deps || {}; + if (typeof action !== 'function') return; + try { + var result = action(); + if (result && typeof result.then === 'function') { + result.catch(function(error) { + if (typeof deps.onError === 'function') deps.onError(error); + }); + } + } catch (error) { + if (typeof deps.onError === 'function') deps.onError(error); + } +} + window.__mnoteDocumentConflictPanelRuntime = { clearSessionConflictSurface: clearSessionConflictSurface, createSessionConflictPanel: createSessionConflictPanel, - populateSessionConflictDiffPanel: populateSessionConflictDiffPanel + populateSessionConflictDiffPanel: populateSessionConflictDiffPanel, + runSessionConflictAction: runSessionConflictAction }; diff --git a/rust/crates/mnote-web/src/routes/web_shell.rs b/rust/crates/mnote-web/src/routes/web_shell.rs index 4e2cf922..4aa4501a 100644 --- a/rust/crates/mnote-web/src/routes/web_shell.rs +++ b/rust/crates/mnote-web/src/routes/web_shell.rs @@ -2122,28 +2122,40 @@ pub(crate) fn render_editor_island_adapter_script() -> &'static str { await persistSession(session); }; + const runSessionConflictAction = (action, onError) => { + const runtime = window.__mnoteDocumentConflictPanelRuntime; + if (runtime && typeof runtime.runSessionConflictAction === 'function') { + runtime.runSessionConflictAction(action, { onError }); + return; + } + try { + const result = action(); + if (result && typeof result.then === 'function') result.catch(onError); + } catch (error) { + onError(error); + } + }; + const renderSessionConflictSurface = (session, message) => { clearSessionConflictSurface(session); sessionViews(session).forEach((view) => { const host = view.runtimeDescriptor.root.closest('.document-pane') || view.runtimeDescriptor.root; if (!(host instanceof HTMLElement)) return; const runtime = window.__mnoteDocumentConflictPanelRuntime; + const handleConflictActionError = (error) => { + setSessionStatus(session, 'external-change-conflict', error instanceof Error ? error.message : String(error)); + renderSessionConflictSurface(session, error instanceof Error ? error.message : String(error)); + }; let panel = null; if (runtime && typeof runtime.createSessionConflictPanel === 'function') { panel = runtime.createSessionConflictPanel(session, message, { externalConflictMessage, conflictSourceLabel, onAcceptDisk: () => { - acceptDiskVersion(session).catch((error) => { - setSessionStatus(session, 'external-change-conflict', error instanceof Error ? error.message : String(error)); - renderSessionConflictSurface(session, error instanceof Error ? error.message : String(error)); - }); + runSessionConflictAction(() => acceptDiskVersion(session), handleConflictActionError); }, onKeepCurrent: () => { - keepCurrentEditorVersion(session).catch((error) => { - setSessionStatus(session, 'external-change-conflict', error instanceof Error ? error.message : String(error)); - renderSessionConflictSurface(session, error instanceof Error ? error.message : String(error)); - }); + runSessionConflictAction(() => keepCurrentEditorVersion(session), handleConflictActionError); }, onOpenDiff: (_session, createdPanel) => { openConflictDiffPanel(session, createdPanel); @@ -2189,16 +2201,10 @@ pub(crate) fn render_editor_island_adapter_script() -> &'static str { panel.append(heading, text, meta, actions, diffPanel); acceptDisk.addEventListener('click', () => { - acceptDiskVersion(session).catch((error) => { - setSessionStatus(session, 'external-change-conflict', error instanceof Error ? error.message : String(error)); - renderSessionConflictSurface(session, error instanceof Error ? error.message : String(error)); - }); + runSessionConflictAction(() => acceptDiskVersion(session), handleConflictActionError); }); keepCurrent.addEventListener('click', () => { - keepCurrentEditorVersion(session).catch((error) => { - setSessionStatus(session, 'external-change-conflict', error instanceof Error ? error.message : String(error)); - renderSessionConflictSurface(session, error instanceof Error ? error.message : String(error)); - }); + runSessionConflictAction(() => keepCurrentEditorVersion(session), handleConflictActionError); }); openDiff.addEventListener('click', () => { openConflictDiffPanel(session, panel); @@ -5659,6 +5665,9 @@ mod tests { assert!(DOCUMENT_CONFLICT_PANEL_RUNTIME_JS.contains("onUseCurrent")); assert!(DOCUMENT_CONFLICT_PANEL_RUNTIME_JS.contains("onUseDisk")); assert!(DOCUMENT_CONFLICT_PANEL_RUNTIME_JS.contains("onSaveMerge")); + assert!(DOCUMENT_CONFLICT_PANEL_RUNTIME_JS.contains("function runSessionConflictAction")); + assert!(DOCUMENT_CONFLICT_PANEL_RUNTIME_JS + .contains("runSessionConflictAction: runSessionConflictAction")); } #[tokio::test] diff --git a/rust/spikes/leptos-tiptap-spike/generated/island/mnote-leptos-tiptap-spike-island_bg.wasm b/rust/spikes/leptos-tiptap-spike/generated/island/mnote-leptos-tiptap-spike-island_bg.wasm index d6a818591343f72952b75b5266a0b8830da1d7fa..ad61ffa82005ad61317880c3b4834bff06bbcf50 100644 GIT binary patch delta 89893 zcmeFad0>r4*8rZGXTM8wv)!8wH`dt2uGYs+t*u(xD%~r(Z`9j1K@gP?f)fOxc0mZ9 zAV^zF5Tw>1h&_mkR!gnFGtYBx?xp&^@ArP+_xt|%{nE0%2`25IU%=88LCJrH>7b0TOho1C0j}prFP1v^3bfIO5XD{KuM|f(wB__InFA} z3TII`S>}`={3YYRKr03oS@x4{R>H}a08S3@vv2_&Ej755!!Pyaq7*KrM*pgu#lofZ z>c2D=X)TvQT6Oau!)pES#bsMkhhM@q>`vVrL-6Sg9Nrg@K=9asROFESaTq zwjQivetzsX7Q|V3?n+@Oa{+QsBNc0{ zSC7#l9s{fkMp;*I*rym*EQ%HXxqmRp!ejlB4!g#N4Kz4&fehit5kF+&XQ|IAei$Go zinCg<)vTkjkbr;y8UJBf2q{5WfS#XAnLVgF^|Ph?IH(^R3al1y)P}>tSnb$93l^eS z^$dy}fJ5`d57OB<8zaUay)-?>YKpC5RemZ1CSx(O#cIW>;XhZ?n<$*0)vLQ$Z|MI& ziQ_E>5pq|s*Ha>gI0%<={^hzVQd=xG9BV(hGL9;if^AR&c$`&w=jhd9JoO*FX$*x3 ztTwB8N}pGvqMoiS7NciJZaAboR$Lz8<_z*rH$@kf|S+ zQt{RL4lIoIq{S+8Y>@V+L8~zb&--f^pb!*sVFJ)--t+Q zFhs(&!Xb#ivsS;pP>MYnz9(XjV>F)=kffZgbTROjZLj0IuvzjYAuT|&W}EZ4jRAXo zchVyNUB08`LjSw+NqIxS8s%2#HF=TmeeRThqP*TeUC9Za=eJAVX(Zd9{#$~w zgBRI1n#Vg9+Y9Y099OIp982sc>?<9!f)gA|?WgP+j#Ji&j%D^D`zlAS<2%Q4`)T`X zM^?(~??=bZ<9Apu1zrl;6nsIP;#h6JU|;W;EF?SD*e}{QIF1BNb!6Hv**7|l1x$0S zwO_Vtj&*#BW1anqJ=<}|Hr{r86?Pp`d!G1CPUiegdY54b{N5e0LPqIG@ z|1*4={YLnefWzU*_H*I4!b`#zg&qkn3;#9zLHG>&@8RFsuY_L@zZw20JkfqPyg2-J z_#ffFg#R3VDs*w^G@4TJ4=yS2M(885De$QO4&TDS!@h-bqOdt&w%=__cEB7zjXUDM z+c%j%?VpnTfp3%RwqyQ}#km2Qeh;L}wx4{D`!BN|@;xr^wwHx23m6x6HF%17MTI#P z4~6WG*iOjIg9^is1g{C)8j={aIAB}I&%sLq*M+POTpw~Qcy)kgUlq6^URfYC}y;Pk-wl(`>Pi%kvvDJVJU$DpY}rvuLf?hZW@`oJ+U z?4V%*WG%52LW(@fve5Y0AOyccrQTtX|Mg>1AXi6tSELoUkKL$Yk&i4#M{n3F={&41Xo1sw959q>y?wrz^IC3vl}!Me^i zQM?hd-Zn|xp-i;i4B22y6n`~e_x&zpqiJ*SI%TINF=V=&ZJ+EnRh$$u)?8-3;k(6_ zBA&247Pgs|S2!465Pl$hSLm*Y3t>N1N(o8H{fM{y5;`VgY{V|}+JJL>LBM31HSpsb zlq}2Y{8==ic_*^I`uq)q2t<>O)r1~n&q#)7#C2Pi4YdVkVX z20cprhy@=`-a}Z97Rdu-vM+0D>MIO;W7b!MEXsO!PPj}aWR3lP5FuByPA__sAc?x< zT|$zxmM=xheObbCGb_n|)kgv%N3YAG7&O_iLqO!c&3d^X=DbIc%ki!66LKx9m!ko~117 zi2ZM~;B-NOzm&dmmyfz>Rm%GFi=;#rU$rV_$c5TuX3C@sWl|Bt6s*b`bFqYw%&g&; zr_x$^47Y9-{*r7LOimg_o3mf7Y(L9Rsy2vGiF$VhrY>8RQvGVAw4RZlSe4c5>Q!D$ z{sSwzJgfCD?-C=vENjJ0vn#$dYfIT|KXPD0f6|MRE81degtvJzmXLMYNRf2l$zCnT zM5ag)c_)z7onRlc>S{g4h$ zia$1J3M!Fm{*x(kiX=`>O|ZmZlMFW2Bx?3TA-8BZ)7^Ft(?7l9wH+S(V254_Rsc-# z#I56>;L4J%Mg$IOq_)YYRZ}E!X@QPOobV-UUgq!5EE76~d$^78iZAzypYn=ZBRr+F^~9~e z{H3DS8&9AzBg%)$di{wMeM+>bKrHfaD|Y*+R#kvc9Hb%)M-=%DyS^IC^+XTqQPAhe zhYP8<-GlmKC?YAF4DtT^NL@M^b`_a*%R+s*+U;|#FHy~O4oNyrCND1wDgL9 z;1!==t-NsSw!g6O-}=mgtvTM5`rLcBx~HsJUh#ci@rPdV`ZaX=b~QX*yWyE-!A^rx z7ms(m;x(hnYYwk?#gp{7Ua9R-dLac-<%L*RdDk2o)FjbQuBV`t-ULsqv`sZVO}t+7 zFAK3kEl+)V*CG*e+)7-hyjlRC)grICp(Ajj7O6}2gH)RgP+TPEX2Z|VlRy|%o3wHh zmcq8$q>mdK4fZ;iEgm|uU?O~4hrHrWi-)6iNMAPuP_HhjM^a#LT{6&(TnJkkG9F63 zkgK6bJx{)Eu-FUw2_AVt`7oe9X@EQv>XSxfKIGIVFS}WvhKda^Z8`L2!5WBbKnA z6-naYeHP4zbk)PS-UdU_LD9=t;W*LMJ_~X(zqVm`vp3;AUH@fO+DJ)2Z9bG+X2Oz4Ohs!A#-3>|R!@6!{ zkb8bzOgCgwjqaXqxe4!gCw<)%cU%-FyeP&%#pgYY6JdlGG#v`Op!ra8u+9tja3T1NITlT=TmvrP$h;)zg$?uK2wd?Q6eGTUHN5U15&w|zPus_c4 zbr3y(40Sj453hpP4)A212$q3lxVswjAr>Kbo;8a+l{F3WG~!2wcMZrlhCF1k-+l3oKX;K|_(`4s^wU-phb*hLR!f;(mvVLv_;N*LBj)uj{0vFkqx>UMEA` zy&Ja#yT-)2CJ5@k;n_L9gNbio-V)gS2Ik!bzaT^(XMpof(hxO<7vCg9-E-j{ZvAiK zoV=!$zDZJKG6v$_C!u7FHv4_@wM2f=9G{amBAKuCA4Ogw7-sx~v=%VD7Dv92aVig; zNH)^>z7R8+XmId5($579hB1@Khe&X15;=|Z2NTIGg8YU}CXYCT-g8DQ^NJW~P1-B5S1zAwNgg8UfUCp!jnhiF{ z5xXyUw}!*fgpCB?NL19;UnQ+cRKadn?Wsze(jBbL$;jZZ-4J@6#M3%y>&wYm1v3y- zgP&RV9eUj(;L;6Jl@x*L7jmWM5k{`q?gn?VN;m^9xDvUuPamP3t_*$|>(9cpNE*oKGpo?r z9EL^JsZ+%8VI4Xoj1~D>7aF7&`FU45SK{Ilc0*7fT9qrou4~zcMsmrB8PbPtwdRf8 z?PDtlK~q{fqH6Y~v3^Bky0Ep)sXkFYg=4ya)|WQ&JMV=&gUCPo(og)ZkLl9XpseY0 z5s|fDqT$-~7ib3Y`)y2@=iE$gVp8vZbidzyFZ$aCeS@&a29m1Wb3U2O2FKypMEQ&v z+XcROiN5VOajd(LD4+3&y!sL?A!FfCfBFJ}zh5@uk;8bjnidV7W zP3bZYyK62c1P!G9TBVP3u`xtc>bNdUVsW@knE*?6gNBGoaD$i>H?9jT8c09nRw1k4 zLA3jSkJX$(^rO0)-TaNx*SkTZ^b9wMr7yzLo4rgcSl6?L1vojI7H(SzufI%7xZ-iU zp~ow9ZmWdxuFf{v7B~Khw%v8JGq{(zLF8V7+^fAxKWMf5Ne&C11(IDo)ddP;oH*jVl}{etwO9MOqb3a7`+siUkv%sA8TQGz!Rd zgIGZJgf80np){3n({ZpP-=HBhPJ)(i&}gy+K6r!H2+o|a8zmi19bMq(FyS{^g5__} z;jtG-Q^0B9ohEywNl&E-|0KK*^I46XS@Q z9OtQ9)h804gerQa9eIQ;_=B0ii5lsJe-bLEl98-3BZIKF=!(Ea@i>JI|btj={EZI42i@?|3=`gGJ+M90t`U&}Jyl2T!2&5lWgsdzrIOA+KEg zW&0j3PeAdz2zn&YVsE_GY$AO{R*DZJWt5t51m@tKh#O2jq8*q@8&UZZVk!O4U{XRVX>Ft)E2)5R$D~=Fol=!`J81UpX;1 zC^FLG54R3+kuYijO*0TS1JQaR-C-d77$O8JeUBZQt9|r6twcyJOj$&48|fAxo%kw% z8S25w#dMy5HG5$XE}`=<%ZE#883sd^(YFj5*^4G@xjUz1RN(A#x{_yAgqw%BDy)Ll z;MfW}0_)IgrBR0uGu(CHyf|%I<>o{UPT#Jk2QXL9HMF0Zq{G6^w0)PGR@4I0neOx3 zP9K{NEkh`$9Lhu}zZ}X&sHhxbI#a0*X|=b|85EiRu$4CGd(#@pAzPMQbW3L&DZ7d( zb-^OSte^)jSV5Q-mH4YcZ$g+AmZrm6`)xEf1kZ#&9;4|Pym?#?_(DBcTu8siOR{b! z=xsudXl+hWPQtMLc{;QS9z?!(a2?QKamB&atF-Kw-99+&GDwUqUhHHg7QAp0RiaBx zQB8%$AzVGOOnWngo6eI&xEsNJOVVIO1+EIc`wOI1;1(jMwiUVR|B_QY5+SFR6}k0H zg&JC!>qAJowzdjajgWhAyefB@+|#yI$3~kMYMtfs0(Y6A$J*2=r6L%p-dmC%uB8tPgmjf$W zbK$OXYI>Ek9W&pyV~IKCvHbE_ktVd^`Vx|=4QR_9M=1mK+hg}+L)Z2=1qxwSd#)qd z3}+0eeh02A$$^m_^t3$)nYV4gHd9+(P-G>j^eG<y*pCqXa|1ZKbG@$; zv5?taPbAMHG#R=-uS0VXvd-R!%oT&V8rBo@ zZ({k)Mty=x4ZWK+Sq1bQI!xbG@*p2YYj$#AdHYZqc?g z6>yaQ58|=^R|UJuwLZ~$=+%-B)86jO4Q&xzybmY;#31!Z(q5lP0i~x?P>bQ@cevz# zgr1YRBseySYee!PF$v?4$TboRcCwLysYzS{3{1krQ!Fu;oMrU6 znBzXnp%^(Lr*e&G{4VG;%tt#lk;x*{&GL zlts2(mAGIDVYXe}b-~R4gKbv{_Y8WMtwK$8!3u0&$~oZ2#oRPUD1mkeHz~cstRlsDGHlN`!y^=yT8!t-j1p7;nJ`5d(+eqvxI5;v@PCd)V0kfK z8f%4B+;YP0xV8&E*v2KXi1u(BmrZOK^ReBHz&a7ttnRp`MXu$pDyEBwR-344*LOko zUhZ*F&Q*jPsHGU_yQcb}WEbq)$1TwEa&X(mU1Rt*-16eJ``ft9#4r9B&f{{f@!F1D z?wTSmLM$>Z(l+kJ-7+xoD1r^t91L7Mk7#@Mp(tT`TZqNX^s1^*y?_gaR}OLun3@&> zpDd+;(C!fG^_Z{}h4p~~?iUQU{>;5^8)-#{EUnokZoQ4{*Ghlq#t9gHdY}73 zM5Vc}jkm)i!dG?2TToB@bFcUsulO~ucs0&LKh!He$18q}pSv`6FxEtS6 z;2XN*@dDq~9ls#(c6Zz+^1a;gFGPO77>`@Knx}P@c!EAyT6dYhO2`GRu?fq->)kWnu8J4Y$IG@9e&{ASph100IPA6YPWoUql-l@TXzpq#^5^F}3s<{rzs7;D zV71HkiwC|u76)?AR!Q3&z;`Be`f8v-{7HIy6`Tp;he^4tg!N$%7tBXMY&c(8OAO}k zQChT`8Dwi|>q7VigqE&`m%?~8^zItAT0b@p_Fv;#q^sIH$E)dUv^8P;M}#J1f-{1@ zUg#53*`%f&GBkF^v=}iKHN%Br zM~f1~_^LTBj2~jKVwG)bz6;}zn7fDxP>Xa71lQm zzpJ6PqdtG1qG0iFh9couLw>nCKC=;@=Z=5Tm`5RG(0tp3&vM7RHg(fncB6co^9Ans z@6BXw!A3@1Jxcd_JUlwHa=jS6)j{$m6 zI)ERG(8mM$rI;mT5RX?)H?&GG^J{H1?yL18kVff8ff zRQ^pSF|JPIb*0MS=~k)?j&7yO;OADV3~p|vs+OAQQK}B6@L4pZT$ggo47bYT4%E0g{8cIN84ZKS3;D(lqn7U(at`+$CdX0CY2Cl)7tx?> zU&JKf27a2$PNY)dt|gnz)3TiW9lY`0zlB!f>Si(z&KpGFpF%~tWhQnFL4mB}wu zXj!RtU=z9zv50vKe^n%f+V4N`H__KyyYv%}?%kPMzn%P7Xi?G*>}G2u7mnufgHSxw z--DtA_vt=+`B*vmEN<`qY9<`t%QqpnHS0dU2YL7Yd6$VD%?r2}|91Wfo9=Zt=+sj$ zxIx3Fd&&(OHr>N+(AeVlxj|(66XfRe0|u|UpkFyq{d%^h&*BSuVU*c9kZ7(OG`P=j zg9i5`9aQB=cHA&Z80V(I%n#4Q=ll8Uen*a@_Tn<$N2^D)<@@=s&E$8eegc(|^kZN@ z$+uu(-;>xwi(utRelJZu3L{SO?;v>Q6lztcp>7d>0F4k2iui8icdhej9#!IO?dloK zQohBvJIV*a;9`EBBj-F$^~n||QFHV=+~zTr1vURX;ERHX^zKpcKhMVwEn-Bto|$d0 z0QYc3EoB%yE-~vJ(+}9sxBm^a*$f2(`e}z_%<}4)RjosjV7K*A6$U4OMG`R@gl1tw7blY z>z2mis7j!r$Q84yIj)$Wn(vDFt3|F@kXmZQm?|N9sS@COg%61}mWb0y*gB5Fp286? zU$tH$08L9x@uCh1Py`gQ(8yVcQI-{LctmCAxbn;hW0nR+j;iGuo-E2sLi`s>fRk7F z2LZP)F?EvhL&tzRSilY_DZ#2dxCD_``4+M3FLh>jmXtkdzB@kBRhOz(I%h-@ERbm_}2nzH_Lq8*bpwnbAoah3O#v$2x4OV%*xTPz1_ z{58G-dEuY-Ip+P>-B#Yocq7z8O+TiMzs@HqRJRe#U6u)zCtLZTZB^IWyf7ZhBwBGj%%~6LVenSo?xL5O*;rk)hYEKv zXcH#f!=OdDaF1zfHVX%B!i9d26d^D@vwj6Pp6G@?t$jsdCnw%!2ORy>76R2O3;r~I zEi|tzWYg(uwO=b^RU0l^ixghoH0wPuo9gNg58Rx=N7m}6G5D~Wki>j`9##{gDZRZG z8bsj$AmY0yObDKizAVg$jN^n0DiK5GX;Y`RfUli$p?Q5F8-rW*h0PdbG!Rx}@Jh6> z3U@Q5p>T?#%53rDNa)FSxDIHA68 z2HOda3bY+NbdHj-ZqKPRGKOE?F25`~I` zcDqZB()s3|bCqfolkEnLVlv&JQOq(oXcUv~2C#q_!nV z@Fn(VcPgBnEQBIoUy2qCTJ6rlwl@gq~K*hQrtDRW2GqszjN@NJ4v z5pP50rU*Ugk1{+OE7`%8B8VVO7e)szX118SLX2&(8RxD~6wMZaBnv^>n(2ZjaOr5; z88%xe&?Bwp2*YTc088fxr>os}nRRS>1P$Cq1XX<_QjC#2Se_7Ng+Gg~3Zu0_4tI%0#-h zaH;SX6NJ(VT>?g}5F%{bf+GDa_=@MwY&@9?crxv`Lih%0P#}hC*H;KHn%G5QyA47( zWs$)eZdEKYEgLsKym|a_lQ0Z}I-B)i=4K%VA+kl7$A}he5$X`U?KzMmRK_d5TRB2t zd#@`#*S#aV)zi&J1m(ywc4??@d-|$sj(3JcZS1--Br5J0IdEXB;4tfVi2rj4t!%4c z4ASSF&E#i9ygZEBtsfRnIDjImwyg(1HQ5iqZlzaR8|*Cc_( zDgJ4sub1`osmUfg_$A}~ZO}BB*BV5MCPHRG%gW+PIx7GU7MUV6zKXbxh{%=Lu0l># zaiuaVz?j|3;FCXvU>H|T>_TQ~`>TmBTlAf-RzvXz{YFIlrLlO3g#EoDrk!jm-csnH zeck;S`zFYcJNW`2>~f7b#ie5Of zGF;6NG^MjxOd4hEWgC_c&P!GSeC#N6)OQP7rv2Vs%tHxu6SnsdN1>C)b3MgTF0dh#^c1_I z$47K8(H}Wz9eRsH61I0{AE^6&w5y#^FmA2zm5#83O z!~MZxoIE-uk6leIg0ZiOtMFnwdWaZS?e?rZAKUhDHb0ykx{Yw^k#daalu=;uxJiFJ zL`=n-ec!iHI8+@feunYXp< ztg-HPJAX1Z$aUks>brj#*PUXPvE1wuPt7jpQ#b|lHp8Z$#i7h&Kr&0q3B+Czosyd8 z&V$0+M?3L>xL4xX!}%p&h|@?&Y7(~lfgjE;Cz`jSP!+{rbLR1>mP6#A;}i zN*y8EIW=CK~h|Z<}H7ABUD&xq|np{XTT8Kv} z?dB+P3sKYm!pDX4;={b?qv+FoYz7~={vOi25NRaV>fjktrd0~CJm z2u5!dBVbXS__=}bH4szAihl&eOtjfOs=RM87<;-3G`DND<&Gm3ixM=)uDI< z?||0vVl-~TAH|DxF_;@Kj={h=PGlDHk>kY1Qoyk#%ny}W4aKJPeGCd4*uu|!9p}2RgBwXW<(f_w8~Xi-TvcB+aVZ8={Sih?7HjNWc?5ftEY+^u)S|h6RU+j)n2pbK62qS zan7^K>YXC4eP;DC$RXG|UEJ6PZr}!Gvh8P2FjCRBjB*kW>Ue>vCh{@rA(ko_sceoj z?K~=`GV^f2WZNWd?F{h>rEmjgr-~6F-sCu!8QE>rEGKCPQpL%Hrrp(En=K9{)=abl zU|O6Iqpm-u?VBTZbIm-FO*DM^Hcy;xOeUcmQ6H4~;@ddWKAJDGyQFsMVg~AhH`2v( zRs;{O7H6_)=?iW4iqSB8jX1~v`!*D6K=LvnBt$)vimfr*7?njbt4A5A*m9v)rdTH$ z6-ZwkJ=7A=0r(TEk2~3eR}8$1%Qje<6s| z$x-YUNr8qN#F0k2{B(M&1)>6J17!s)8^w>XRbOuu&suF$n72m(zP-SkLu-ufm^OTe z*jz9=#s=;7;u_t#2lcgFXt`IMZQy+wzP@JKC$?hCl3m!q;CykWk&17y%GYMo{bIC; zt;0`;L1w0C4>jVf2T*5YJy71#wEe85kiB304jbIzfJo)%;xchxtWSKLLR}vpm3*$o ztv3*#{-DaAGb}B~)+0WjG7P6cW(BVt)@5d|v$A z18q7lzV_PR>wd>31gSs1z^ODwl|3 z9Q46`Sn^n$g5iv2(k8ucV*^woi0Z;5QECzU_s#pC=%Rngqe|(&Bq@b=B&ji7Z-rI&<0CBCND*Wiw5cLhV#m-SRV0UgXdPKqnom6bu9d1wy;%B3)uqo#>=AT? zVWumNaUSaAbk(=~w2CmMzJ~#BZm(kS?~o5fWsp(m5#AP~g{7{~qPQ-wy@NEBnRQ?2C~ZdTv9*(A=ecZrWL3SJ zGy~fKcuIFbG4O(Rq8omzf;CNiUeb^0O?yb}n4WF~rk)Zzrhm~>TEK`xdP({*y;E<= zX`HKN(yWodD(#xSm2-%j|n9gUb%rWC9)8?_&1MF{DH>)q(+7Z9D}rp|YxzeTjOaJgP8 z>aAETmdAY_Q&~5~GBauklCFP2YVRz21{E=?h&t_xU0{Dvs@rhV3f=IAbF-#Tyb-6W zAG>zKvk5as>QD$8DbbqXr+>TZix;JziQkMB`h^5)=kU*Jy2@Nuv*eUi5eT!v_aDJ za_<~{A>)Msr*8{6C6N4rTw5FVvQ&@$4NZOtta%khieXP2X^4Vy4!5tc)X=KyLv5!k zVbgVqFj8OQ%$BSxXGU4;kIl@LLbcZhOPN-f@rm?>$bqd1q)_JXyLTFnuu;;Tzg9t)JO$GwVo07N zGo)$d>|L@3P}bPA?3q&We^wJ+h`c&W`jQ%kgR)*6x|Gd91q_cmwdYDFIU2VYqy^F{ zn!6W@amCDIU@ zSqiqL(r7jeDN7|Ar3E@72sSO3-e=evE2O*R#d04|H4**ERi~PPf#Cu!t9hJZsq+xY zc+NI(fAKXp+}5rLWvxc`$07WOAvPFngWU z+^uewtdkC*3bhw<)?@!>?_>S@`cqw-yU#FbKGn4z^uO%d#C`v=Yvs+-9m9Jl&KK4W zkisEyi?I^E+amSTr{TFR?rC@_N19gdSf+1)ALBk%!qiTE|7)r3*(xQHXOrM6d4Idq z?%9dBWH9lm-S0hp_hWv9uHBE7wEoz}TxqRe3ivBd7F(!m*nZrJbampc11 zj9SRy2~AHbQ1mM-DBLgk$_Ap+lb*x^j)od76C}qpn zSRTo?+sM=Agj7Yo%uu`wrG0xsn#R!uHz44&R3*wVC*i^^KwDFuzmr|l8}=&16&W~D z#VM(Vq8bf_vmS)V9heH`B^LYCC zos;uLazgvjB+sSzzHg{i{sZ6n!2mz`A{w?^+2lkK-<|HU%lK)7v!{0ZL}KflTomQI zSY@@~G$Iscq*5X!^{He@EjE(T&x|GCeloYHmKn)-1;moa7CpgSP~%`~s2oO;;Z~>| zEGz7^fTn2J6DrrhK0;&!$pPOmxm&s!k-4cp24u0zS2`E$9!`sF&ww=(fx*Xbgj>Rke>{v{fFx?ho`^DEQ;a8TC#{|5lvF+57 zs>{Dp+zw%MO*t2BN9}9L(HMMQORkH-LL(?Jf=9LFnuv_5t*7-jf_NiXS6i-!Y3B^c zua5jKLL=(P-6PA4Ymi9vpNJID2@qQ-Kj+g91FQj_Aj;r;9eEg1_oypx$4d=MJvj}X zkhSIYVQaaby9S?VquR(Vo-DW-gteEu{WnV2wzQYyIedZLuCu($r5OEYXeCj7 zWL+_u+DGnVY!ts)Vf8L_)er0||E$;QN?+N%Ep#{ao7uE6H^zqA$sB=~ipAg)g_~>aYLJD0Or* zw#NYMHt>#Q3XmDf($TWdQZ+OWpW*3_61nu8EMZLFC+xxyeP$Yk9RX&p)966)4 z{8EnK%b#f8W=}M6&awqlti3-C`92%lDtYz&~O99 zLp+?d;v(5N8RcrKwrYwzQpW4g%!Tqo9`e%Uh2?-1Q3fzypm|%N?=oye&LJpRE?0x+ zm&+aLjzchYx!l@?oJx-zf;U&lW2EImWEFLVpp~wWtC7eeUH^O)7c$=Y4n@NR`h&fN zL0#i+9hJ$38S>k7++moNAxG0c4ncl~99iSaA*Ng9vPV65vy;QZRQxDLQ<}}9C_?eC zpr}g@YeB2z!-V{ym8_PXqOK|Ye9$}!?rZXkI<%m`JOZ}-CimB&l^bQlCFfhsh-iJY z<+%i3WZ&E*J29|rmfIOR|3k=qQQIRT!~DC zV?U$p9uG4QVUPm-56hd$B=A2XZza>TgGb~Yh9IALN`4p|SBS@ei9t>qJG$F+`gR|TZv*V@^1vN6lm=a^{+>^dWNqRUQz^{iYw zpa@wS>F7mgq<23nH=?D5TI^X_Chh;SEtH=-kQrtji2?4u?_*#Xhgex?;rbX6Oy|XC z8+(f74Lr>hw75(1O`fh1v`?@5Olq#KvN%kPm$=W ztc-QNr*Ly$Y`lkXb9cR`aC3LPr*LyO-cuNdMdUcnofqQ|jh7pEtA*!A!{+#$`qaY; z_RK=t=%+ZTz8+8bEBboWG6Ix5L(xC=wO=J|W{~11qI`#?VM=p$u09v0u!q&!-7p0> zG8K|5DmCch8?dRO5{~z%+Odj?gQNFL;bx?=8$&I-vT_m~u#alft0~V>y6mJ@P(#7* zu4SKuH)<+x(A1N#tESSC=AG0mwUj`S8PFpeD2b?~u5O_8Wp;5Atq^8K2fm?>pW09f z!c)zXhDsG8=3Pg<3?IfeQbO%Jt}#0g+BMmf=!0^J?RWX`sF4zFd?LfZQOxZ>AufvcR z0z$yIx$=*40|YMO|AM{a1*M_(P75Vcw5?$eM#^}!m@ysFwn>Aw*m-1$c1TqY7!Tj8 zcT(y?K}Y39CRQ|rW^w;)>pIa@d586-+D&Pu-$;z=uB@Z|E~a4bg{jHRUqiPeb8MAG z>3YKv>^#?f3C{lV>k{m!e@+6U$NL6CN>9a6?_XqRnu!+)6!ug$!mo{$p}MHN)l1Qh z%xGvbx?jf@^j7|ay3LfAp-Nxn6f868e@gt;Y^Qwdan!DN>Th5>Vbo~E( za{SM*@gD@eHkf6o*I&8uA68|W6r!COpac?fK>Kx|GM@ykVh;}Rc&!%e>UV(>W4os< zep$hn-}|&9uP8Hli%Za>y$J1PnM0L&|92S68%h>Fz0&*gv{zr={hPkj2a~*|{E3V2TYl;O1a0emz}$)U-2 zpl%GN-@XG&VwBJ5q6b>|aOE8n3Z2ohI2npyL9BZ+Jc4cU%2>9EzyGDu&zK;OVD32O z4?HGs9icRE>+Glq8CRBuw_bk9%(05wi1Sq1?JJnZ%$}c&b(=knOgM~a_6&i{uaIv7 zocl^SXDHJSPDO3{^eBaWR;S)S(1wcI^vC~DItDCT&4gY9)O+#btPTcouuko)O{JYwB(6`F_1O~<{LyaD||BPO_uVJrLr7nHu zsV4uox+7z(l7U}R(Z}YLJ~sOF*%EI^2sSV}V)i(kPp1G!Wf0!)C`bP1tD?mxDD5ox zAaUn(Wgk8+oH|1(6quEI_#6d&9cRHeX-W$Wv^1p=2G@j$PQv3`| z!=v3xwd?r4iM|dfov-`@hyJ~Ew;FWS&8!YS|B;fKnvcBznrIhfgiaj$WyM8=)}vYjsDKFj{~FC zJdHv6^AWtf$S{CUb=Nm1ZdE!A*Y+y0`mA_=pYow2pCNDaVa%}M!)`;1460lEl!%6< zEM8y^W6ILgDkw9WMzLRY*slicS7X~eXq&G@(9+B3oTNnSrA*CN;@rgzhEMh@Z$I~d zvE8QE*^uG5k0xF*aL+2rQ#RNRC?R4RqrD0B4k!ubhXh^5c)e2Ie*iZEYq^>{ULg|v z;IveLq{I04A(?KFeptDnUyf+wk1EH=UwmDR4Lw5N^Ra7PdrAb`Q?Pi?hr|9|3cTL< zXFTw8rtAj9n*?qgSN75!2Vqm8(yQf}gY1xyPH?K=HAxx^^L11zi{jyRIt%mk<7_gE zRyE$EsU-&?{j~BU{!J<2r1B}DB?q;yPAO@GE-LsR=M2dC1Y{N~wQ1ZP?V}r}K18c~ zURg%n&VkIu1f}^$e&$f^{zWAzL|<2v9xD2}(#RvlO2`l3_gKk+KD?nl;x;thG2E#fAGUUOwFL}uUzBUNGo$#lNUrvv>ld?mfx-_>4IiYYTM+M zTSng!r?sPx{?oKwdL+IqaIuc`El-HbO?OJRjbV{iBQd*Tq#v65@dGxloDJKhJ7rfq zs$IHmL-R0Ju+v9#`Yxy}JFV}amkAo!rMFo~G^gK!%92xYnijYj8KiEP{{!yHz($wG^^HSEhffHTwiyu8!sr)VV9xFg0L?(%w;~DC$12d{fI* z-*EELeKT@Et7WPbT!i}g({39j+VxtdnkKya4sK%F?&lKI+TuYR2Hzwuqs2D zqz&j|ilprDHL9EGEDK-hZaU8nVQrr`;UD%aErFCCrc|17U8~#EG*V=);IQmPQz=b7 z2s8VcItLkxDxNJWH1>RsLHa=`>xVP1L>v8*3D;CQ`keJQ?c`;*Gq3jJE2eNl_eqes zQLd)(gH4@{PU`uZ(Qn`!Vj75_2>EJ=X(mo<+fY+|{8nVUp{CYWyt(-H1JfK*tc87O zI;x;sK-mb>Na_IJ$~X~y@FIvk>cee=sup}Zqs5LgwNh;N*v(L&{%vvQzH<+xx@WU?CZT=B&k>T`nes$o|ZtRms&@9ii3127Q%ELx#!9SUj zh~$zk@bw#fH8`-tw8(AOtEtV~X{tiBc6&|V^EB=dTsmNC8kL}%3gehv5T*13kCeX4 zqCxtX0VsY$N$YUXgfC0>!8Zk_;WX_KTq`gwHq^@RptuC@u!;q9MJ?}VQ)^@2k`E)j z*A2i>*=%>8bZ|>WF*|ybInWQcEZ445j{GaxQ zLXMg$8s)b*X8MAVhp^_jX?XL$=m+}HkHq}CVaom8r1zXp@6<08nx;vf-JUrl?Enp?+YBM4-)pn`p&T9I z#MmN;x@%g5N0$9}aT?`Ag+EQY>t~xkO*4p6%xpDb>VxZ0bk9`HZn$nXH!eaLA6ya- zwt(ZlslKN=sSiw>%d3ORp1YeyKf=v2a5fsSRQz}${>G1dp_R_IU)%cFB#Xv$nxs!B z4X0B}VQ-Ra~zvF*kgAL3gfd?kJ%Mm{i+*mjJ}qF;5Bdx=+C!Qbs|l z7D0`==6CSqIJvI5JqAD5#SX~^Ydv#EOA))lHnEo@k{P1c;?2&d^~|4;b8xYqIg+lw z1Vb8_+d!xKW;-o*0do+*_d%~UFt^30{us|N;$0eG{344FLGRyf4a^^5A@!ooZ`0x{ zj7@7e6m52y^~bWI>8-un&`ey;JtqKb&;6P0>Ul6GJhOcFp){Jswk@QKB55%5&SCy zIbWGyuf7Zu^npSgiuEWA642-6Y1$5>%=0YEnAf82m3!ooc4L(JdJrvH$KD!;!R;yL zdEC|YyP@8TCMRr2Hou4)v@+GaN#+Y?@AiQ{HB1$ucoxq3K1X>Tn$I?mk3E73k({NG z86B*tdd`3vn(;v?ZY>5BZB{viM$geH8<^EVgyIdTzL5_MsGeE1VA?_hs%utl2(31t zI%ZWsXqy4mX5JQ5{VCP}YnfGl1oI83ra^kzfTGOmc|E53Mp8=+gR;y>t8P{$%r`ns zuUa*OX@UV&HLF%kn`%H+jH=Bupvq=70Mk~a#p)R&4W>CpBDw=PFmb;DRWhq~gf1FT zMT7F50aY-oljiCiB8;|9F`#fWzAC2bd;4A5a#gAgh- zAiL4kr3Msi)cLUi1sRl6=jp`<8kJmZKmle|MlM?n$lri|G9a4)?K2?1ScBieDDyUXSRSl-|Nec^N2`94#3cFHr)JoC(F28yyhp}+lZ140Fd zw}NjC1jBj!+nzR%#rS>~3L$MqJ zoH#aeldZSNmC?7_E(`3-&(R(X^m-BT5N<1+S0q8y8*nlg=+fmqHdzcvaVcf50l4Uvwcl&2VqwD%+OQG0mVNTA?JbM=dnEafO5JH% zM~)<*k{`kT&3;N9ZxJ>wlrm)vrUHD1S@gg z=8*NbyYr6Rp1pj_)-2L-E=p|7|8u!lN1Fdvq>ud~+OI+@iMISEm8B>LY^+Y8eMwR+ zI^?i(eb4riy)|SKZ%OuUK+~gSO}NHlo%YT+v`;-<_Fj5p-0ZSP8_S1XZo6b|mbt1u zu%3iT1D#{vU)1jDs4v6QvE zDf|Cdk@Nyg@u7B%_VO+5cH2ABZ*lewCJz4pqe@~mu48m`wHr+b8Ktca^Vg)w4q&?4yov87t_7hm~5d_4kEVHbAqZdN1c7A(`K$TkB z*Rt}>?VGGLyoo&-@}*f#>{DUrsMG`YaS-x+_<+5<@D4llfc-sz{o2}oo9`}RjHnVC z9_qBS>th9mhhj7k00CZ^EG4oz?d(Ma=?z#eO%;p51T7vu>f@Ih(S`Q*XQA-(cn5oq zFoQDg$QrBN(Y{Hn8ZtcZpZpv2PE-A>@X!wdfcdif4|1d%p9p!g)CcV&#I%rYdH?Q1 z`c!@ykNk);zXj4G2EA#|!}c~}_H9=55qlLuoP3+LeH3>!vj@7{KNJ;wzQBDWIC}u& zQ^jd)7yGN?sa<60YVR!G*u@_0YF{bvvktcI_S)=DPrDtr;1T9LA1l?*{&+OBB*qW1 zKPl8a80C+E9um0!)_$%tE@r|Z46ezaTs8U3cgV_+)pC=6SNNq;Fi2ANDSH|F+K?Rg z$WhkgDf=z1hhn)nDHUj z$T!6p5+AY1QTDueA%k6=X^)Y_CAXYC5!sULBwdB?9SkRxW9!O&y(ZWYisNo7IEW#ie7JTUwhkr zy!KQykBSki1=xOo-o5Bwge76D|6sn?8tw(_YC*44`)SI0dz^TAKV_}AR|_7+pdZ)U z8)B$U+F&ooPpGupU{4Xp9iR~#?5XYz2l$o_UtmEnSOE`c8!q2q?}pFFY#Z&T1n6_- zeP(~pf>TG+w%8Bz!zoXEZm$|NH+xkTd*hTT@u_qml7W#RB)v}|iCv+YFdoBDt06*ml(-XI3$3QIO zx5P*f(K^L32(3B2h%|t`;c^@mF(38S9Id%Z?J|#}IdodDcpSw=VGOzB94`oC*yK1z z^}z6Zf~F=oI+7>evB_vOy6PC3QEt2=Fiiz19ZUW_MM`pvr#;0Sj~WB#k4EY*7XKfn zo|fP+Og2tRa43PcA1va3F7yxjv~)4)f0W|zl8$f0{fDVVDaSmn_;{w2<5e;DFg=mt zs3ztergu{uey#wJo8nkx6DHDYX^x6`e46HHfbsZJnj;mWvZ7TTiLvi2#sKNS3E-vF zv?>e-2QV%Nqi3puzMoc9b(9ts(GmX0pgUC^RfV6ZYBfh!VL6*z&2cJHn8t?HaeSF5 zp1Z~xbaR{#_!fML9*zw7q!K@-!*{zg3=+XbDE zis|Lh*+q7wm*cNUDEWWg-%$f)h#BChiK7;c1^~^ck^GTOAM-~Jo#c=Gu_jCbK~Wh!?;BD^IChKc_tJ?G4sV;Cp#V#b00%>a zED-o{I(`=Vb$$0312QL6$HO>W$A=@?7>=&)CI3ittDRr6-Xk3k^MfyIUP9G~*Vj@` zx?`O3+gf8inuJY7zx6r)Z}f16Ba3Z#)nU0$AcjDTVsJj>`UJ;J3wFDvO?I>c^Zxy0 z$Kpu71bJKf;&A`#5NgL!zcRl(@ZDmt*{ z_Wyv?^TWwJoW{eg=egST!byO8X*4;!vT^NEi25C6ks}3{B<+P~+|RoZ#lf@WB~y7) z3QuYq-6kxG4lGHS;}D^qpZK<8Sw($!%s7+ECox_9Ad>UWJ}4+ea?Jr#2zKLb#|okL zxfuxgzKU%)89|PRP%O~K5VBx@xCm@;!&;cLO+1>@Zgy&}qmEd`*sH^6%$FQ?c;Lw8 zDL%vMW-AL#soAXEJV%D1g}Hx$W3nehKWpzZ;`3b)Y*S2lmmhP78L35%mo1lZZ%?le z9BI_@eMg^=1x-D>KyXZHo8Nal!j)XTiyTwD#y)VtB#+G8LDM@!>7S>GRe#S995cO! z%4@-Z9DAaT=i(ln% z`uO-;VYeg0s?Xue_dAa2qZ*s^wPPipIvXBz{OmCAsm^0n4mp~M(ShYZJATaZi$HUZ zIjZXmh<(Q#WsIc+Tz?33?u4VdoX?tC{q;F#`to7NgW{^|?7(5iM4@81&E zDwu_KO{G#a_o%}czrrd;rboV95?ad;%xlNDC%+6@kKf}8-d1&AscEC zTvX4UdrBnn(K1md#^(ETZ3^zczC@B8-vkzEF-Y)+9?*NpZM1NHqR0k7P9{8CH-d+; zCE63kc&J9yu|$ZCx#mV zof46XaiX8Qpl>)Xrj-L%QOmiU14Red$+!p?WC2zKkPur0Zc zAwuQAt|j=oe0?J^xLAhB8_R!l5Z3)i$B!}W$@2~o7k>Z6hF)@p^^3cAT+X`6NEOaUt(+)S;7o2k`XjJ}~9XjIG*ClwQEbVKPu#NvBFmzQ2#yoR+6Z&ubrWJ9K=? z!v=Le<6p0|)E`GE7L=AgqgRVa9*S=)J;ZjFk=_=-EA%akZ1>ZaveIO*PwmS|NvPMM z<eNRH~#DBJ@$zPg0_Nj|2@HKZ}ZEXwQUNT9t> z*lNr^U&K!xnk&yy5xc8CHLND>V^U42oLKlZ$JIuK=|Z!6)enoQE5+)I9JPVevGf=G zRUy-qH@Fk|eTkt(&wh+j`R_ilffVFI$=Oiar0wDHAUH2nMaAh(L#d@Ojn~sdG`Ep7 zC{$USw9s+t{EGehJY8svihUzL0@&SNWuyW0LKDd^p8AV0V7Fq{2c!x@@r=8U+B!Aw zD#NJlH|CV-Ev2G5v;9dcX>57prMO+e2!1;ce^K<1d|g+at>sHV@Y~&6gHM{oUT!TN z6FIluwVmW|kj>vVAP`2SKyl4~3pT)X5;#p>Q3WawXE98bceq`s@>q}dk`y&C?}$DO z1&=MA2|{CN$PGecXgCst#?Y`o2#uj(XAl}gLrxH4Xjn@J9+KMnf}@goXb}9@a2Bkz z?4`C3OIl2DfS@X~mH56+K1=cOvU0?tBZ2#BjFQbYQV$MVGlS45+2kNJN;WPCjgs9w ztiQ8`k9L>o^uzZYw6dtxBT@>6`)3}Jt_bxqra(qg)4vuE!^*|>$snZq^YAbT1vmwh zsn)eLuM0*XNC*5~r5d8=vp`$-?}qhowD(vn4n8=~CU=)0&pP~=G)1ty3l+N|Bb{-S z(Oa@v#x34XQ+rD#lV>i(*rs2ry9h>^a2=(89H;2U_^kfwoV(cCLux2y{KYIi(U*(Q zziT_ysRnmZlsL6@m zD+fsNF?{LA_CGBhx9~Gw%Z6i{VeNC$PlDUb>+sS<*#4x()18U*%W!G5FJmdnxF**h?`E6$$=Qfw5UX^9JLY%SK4+h4`F;ZwG$C z;@4@0n58tuej_=>OeYsf>$p@p!mp(-yIk5C)D{18xfIeB$AGetrDaR+TjDdWVCo1H zPU|#qE)Y&93BoU=td`n!IlM(3o_ygAkK$ z7Ohz=wSau#_G)QvB--hcxf`Uwf~hV2x=|Wth_W>{^fPINARJ@Ko2BOZfnzpgi&Rep zd%I+-^oD$7l3pMyA0EIXLcWVJ5qhxwnK_XaKY;2O<;x9$yxptveU%! z_l|a^uwlET?gB)hd%l#~LLgf7D``7qvnRij2I0|WxBghYTY3W92_^POoA`@=zZV6X zM7Q=zO<2hT(qbV#_bxM=PBYJJtkFIRdmyK9xr3xB=`?b3wlnVPcMU4nm`q=NK5f)zq_Khgp{lJD3__(Rp}_cjlNM> z>rWI|p9VTylg7J^9Xm|me464CmyNoSE?wWiO76d;V{wIo1a|an?E4$iTS9zhp>G0> zWKP33nSM*E!HQg$z7=Rjq?4~d^>$eFw&eH+?U3eKf^k~?yWsU_i_U+ULw%{HaRn5P zouj({zL%IvS6^!Qui}O})Bo`$p7;KnY-mW_zY5+f{@(<59{P_j(IVmBWJC3m{#EeG zCI3xu=lB2dCA?++O*UjJ`>%rEDfe%JJ5T<{mpEPN-(*9_s{E7SDeR@H&M|`UJB)ic zU<%Yt@|<@%Xg5vq5a&_6)wSdcC?c6z{&q5HJu5V^>@^CRu|6EO#>CH<*YB>+(g}KIZMEER4r#c?7*z9r3XD!%Q;KD z^&vf38$~)o7i%L7got&V4TLOe%OC6bqav|7P8oXqJL@=O4XM(h2F}VBXbeXBofSlE zvsQh;SuN2leK21RlM6`%*GXsHn>oJ}A`e;wA)Q_sY^y{!AGFyi@hiney}L5O9yTR4Y-6JXgbo$I;zA1E2LrS#5D$lln+&Q6;^^Gi$Z49aT;1tW1NlsH9V zy*oH#1z}=75mD10aZa%a3&_#UxliA6InmA8+A3bYN#%PvZ;8AAq;kETC%Lri>AB7Z zaRo$KP=U-B1NQC1i(+g>pXuYYiQ+d=?6dyP?E>4--?_$8gA|VydyY#C{#0wYfb$Sou6&cyYOdwsbC1lxahp3DIGqe*bVM&b2Q#L^P!= z=ic8=yPkEH)b1*sVZsRKK*6#u7<$zQ_YM8!NM{KVRrTxh&Q76C4oE*jYcwnl(4$I0 zVlDbNLYFzP6wrgPL8F|Lxv=J=NzRU}`Ag1r##vO@W6=rb z(1o#156)#qj&ov% z+S8qfp@A#UaB7yxhj&oMvr;@gFvIz7@D4hCX>@jm(`G?S&mG{7BN-RL36o|IbZb;$ zwzH*_#o0%$fzAcZXK2i9=Lj@+u#45HJUO`pX%Xqmfs2HmeVIAuID1+H&3IX$ol*~* z+=<4%>nzR}kncK+VMBk@yUv`DH5L@(ZXzGHbfNRtsHnUwe55!kao$ylc75nfjy=E$ z@z78^M^`>{K7yjR{m9t`FZ#hp&K@{5EPm|V7Oi)(T`QeKEOF-H!R%hk+O2VB3$${b z^Fu8BdaQT0>GuAZ0t>&nV+t(%W(HwE+8TrbX=@M~3%{GA197>ub#x2dE$H-DT`~q` z58PuV_^bJYA{(6B#g-f2xq>pgv2(@Mj%}Y>=u$67WmajebDTiKH#ifGHZS|1JEr9m_o23pE(y>^h#Qp<2)wluFTJ!y#(P8mbcZ( zpfXKa+nvL;oG~qNOaY7Ljc^EJWA4OG&kkpqcqc5(ri%9rP#NRSf*sDIyg9tQ)7edg zZ2!nkXL5nffa74Bjq8U@n*qG7fsTV#EM=FoArw8R-&fA3VXBTD{K`2tDky>n+^ZuDXcmjP^~ZpWPsEf*b0lyKbbr{l++)$|d;^}X}E z{1Jg&`5twle`|Kaxx;XcKIwcc_WzBHpA|jld{B@V2kvY)Rsr(slyuSAifupdY$M34 z3i`dq;CEXPms@D_t4bXE=6B~U3rIuS2-psmH_y-+lpQ9>Rd>etxaNR%gW z-Oi!Oh#Y#b6f`Z^a!!$#;W56n+#Ivq-qP}i;LTnrlTSRuo=%k;N3y1s)@CZ#rVt8T`=qOmcFeMDHmh`}6eY%Lm8>?GoFC%@Xv zyos56w{gqR&EsDDjOdCsa%J{-J9(NQPq+YCrM`P*^{afZ>W4P+GRr~O2b$Ja{)SmP z$gp>jLDf6TWze2`bd*=#b+3B*gK|4dH0qXXU$ARk<%a~?+*Piszv$(z@8VK;_M>a9_a290kUBc&phFu7n+Ffpg zqJGz1J{`Sn8%lECO}X7=m5%q2+o6?~>nUINPME|Gmln)0bJ9*dLz?iI?AEgH5@IdO zeoX$vVDx+Ul|=|_KhX=03C!yE4)*`~We#_t^bJ zD3{UE(=kdiWet?u*mGXr$>%@V!?n-{@m3crHzrUlZ7kX>tbv8r^NC%Y!V!Dz3tYfp}Q$`p4oa9%8`!Gmd z-jZXB81JUbnlalxy-=PR*y0P4q(y~D%RVSXYQLlq=|WZ^($tR%kt!`MMB4jFA=1;! z3z4K1g-FX*79zD@Rfu$9bs^GJR)|z-T_Mum^@T`JZ!AQTHWeZ*+gym$eoG>A<~6?g-BBm6e3mnCY(fj56YQ(|Jbq) zlk%8Da#u^n^d0oW0(qRl-RMnhBYWyw`IP7m9pd1& zH7o$om|x_ETz9$hS@}t0- z@-9mJP2Lt{Nin8@B`tDB9>dvWxvtC07M+oyD;!3{vUjRFSy^G^#>*VF8fNH`Mt1T9%%YrcotpoDy8Xex+HF3Y}0&vOz#ox@3R%adTOfop1-<6Yx{a2%{) zAb!`iDe>1&nNp&8NL-rEN&IS6J#jkeQ@kl_In5ckpF@xC&*CKG7LQ=rge$TyWye1X z+7Lk<-}0cr*I<3G$UTJu%lfab${tJbf*^gNw4Lt6D5;d~vc|H+>vA{2*i6+I5CI_z z4ZAHrPQ7o*F`Pded`nKs=W9!am@yo|sd!UWR!aw86D=jL0oe-pMgGho;-KZDJL-;zJR{NQOXdNj;y<&loBXbP&%>w zqH<2a?&8I0B^k#pa;-{NJf4hE3a*ZB#V8Ylp>m8+Irk5hYlO?mF7LvO(}laJ$8<%}Ai$WVDA)#Ns}*I9Xj{e2iA3@mBKDlBlo!O6pV0f7 zlB3N5JEWgt6Zj!teFU7llD*(jmI`Haq4|1`PB3l;_c9vV<>{1mS@t?+aay4HT&7_@ z#aC@UCk5L4Wu#_wjIcJp%p7kz&F5*YoX|HDmP zqJLbb;&F&wAXv-CLS;d>0a?AM}75$M$#g3_2`%9(J@iM5M$ zRg{;LmFmVy;--y+dC-+iEUCDI3NIDuY?9LSKKi%RDp?6va{1q+%(j$Neif9=Z<}*N zE4pTGL|Jjpw`@a-@_5*4m&#R8_Sxo#+RZj*t*CSoUCVWgwk=WJ5G^&uBZCH3RtAME z-G+|ye9L~UtfUL_`zKJpk@~3=F7V5uVQES~h^@a(Q`Ta=IIXJkezEym`6QQ^Xyub! zD%kNvm;yKSlg?24YDyd=s83W=&WCC>_gA$TN$;x;>^Ufpnigq4S67<4!Q+-|soWGX z?XlE0$}3hV_%80C^i2t=02?DoBoyaEgNv~w7cuV~?W|M}vE#l8yn}!Nw)wZ+!f2A} zKZgfY6xp~=7#P@V?Ubg11QotuF9I9E8a|}d6L1^viw`R!1=ggC(%le6%-=ZMYUK1OQB?UcrGEOsH=!u$!^{MQPQibU zqxc{iKNF~E5G~*+E{N81WDlb49Jzz&XaRJNBPr;2y#Sh!KFgfUOpZc97ZyO-9EGyj z%2B9j-*eP3n8iD@fz%*c&QbLs`iY|oK{O2(@*@1Dg78xU3T3~AqfmwiIVu(mnaAe$ zQf67iW6`v>4<`AZeU;@9kn}F;nqIg+(3WIZb2jr?WoN;~Z!y03eXPGy+Bl2}`N05X zIA!%y)Vpdg?CYnjHbNdULf-6u?~s+L^8n>_eULadKzZX{309`X0|UV-KXJcc*Pl>c zH!?qNWPWYXJu*)i94zKRBV^kl_Xvp>s!Tj#y_n^nykGuTp9};`f9ih0T0b2u=1C*- zme1TH^Jkt37IU8wa_-Q3gyh9!zYkT`3H0hQ9jVl9l269& z4@QDB-vop4-5@(;$T+CZPf0<;CCXnQG#APs0uG@oPejYvToMV(cZkK+#y@2zUQsF= zCzq5ArH|gt39h1S+GwSP(d&RSXHvC)1VE0u|3J0AHA%54#xUF~U`vsZ=c>?%^$-{XS87T}=C12|@S(NkeBU zzL?b?V)*y@vFFfNRcX;orBc)$PO?#_I!+H=n2AC32(_H0Bndy$;91It*nx#0XaTLB zje&J1U7xK~#=ciMQrcPbPa0sY6WG55Cph^XCCE53X|6IyZ14&HB3$&QGd1%1d{HqB z!N{vQ=iycpQI*W%LH<64wlxg#AQT*R@n8wnibl8hC}YI6ztfn#N=f$kF6B21ySPvJ!eTjsPjqPrwi)+-qZF|m z!S3<#Z-K_tDdWL;&&~*ep30C7XPGNvK$P&iv1vLPw55Q zy>L5iK6S5xv1_Mb?LPE6cAUR9qUGUzl73N2{Y^t%#rX{C_9K=#8`&#ADrE&W_!s54 zzCplR{iL=m675JPqI7Hf7*nGuCW%aPkC%p|&TTY)J=io2t9UA@?qCa`DjAVcQ3rNCy( zP0{rdwtHW&xV!=TGUMq|Gk1B)iF9qxX9a0mlClu{UzDLX08|`Wy z8QKTMg;qYQ=5X!P4E+WuHW*v!`kv=G=9OIO7F?W6iVHS$FVO*)>pWkWq2u<%nhV`f z6ok!`q`49-M_|c6uc+%P)$zdUdgkl^>g)yDd0s~)X^z*m2wQLse0a5;Y@N>qc}CU* zx>(fpC+#WfN)&IdX8@Kc>Q&M;qi|zn;8?2Mg|p|JjGKNP>x!o;rCdYl_e9qKT=d*E z$@K&tpC`F`u=%B2t)r-8MOS&|ui*O3Dt;u=$r7HDl=-O|y~I=ACD83Et}ifXY)f;! z8oO-_6kz^@nU;;T4o+ejD-Yyq_-7(n*0iGy8{F;IRlFvYDY zIK?r_eb#l3-hS3qh8Dl4IOPut`mbd0cMCLaxXUSL74-X%$E`-qM!Jms-lfmE9;Ce^ zT@&-a5A}J@)l&a%@ccfX&SpIC+7m4tV!hK{WdvNNYCQL|?9nbwEZl7M=E=}J9rtLv zHCcn#Tz&acYQgKSTb9@(*SNNQViEZ}mNn6}#>$pVN1YdDgQ&+eS1DX4GADl#d5JPcCYCe9bYB$p_`a>KS{2O=qyAkQ zhA}5YnxfCi)wa1ltN zgo@va-L9w5%@g*Z_vW(Udt8rM>^TR~?D>G<$N9J8`(0MSmcwtl(n%R~_JFGdx5arkSGtnXp(PzqurLze})XV#Cddka1|>kgT6*XPqAlTeh;EW z+t3$Js^#h6Y1g}+@Y70jAURLR6`|AIDfIhquI~$Q?fi?e^fRuOB8lf+o~TpHP@xJ} zcdA1*&tdR6Ng3yHP1^J4Ts|1AUUA;#r6uQF9`VXD$~_O>lgAQoE~BF7UHy%~U|)H- zio#Snao#lyR>eDAa6Qb=j$Ck!bzYv1A+{EVtW(^vl-0TD`pXJc9o@c7%ge4- z?&Xft+c787Cb5Md>PAAeYccIj6kYP@cB*Tx)GEz-RLliJUb?uyouJGsp=-n5}~B^tU{7Os0G zK%@oTE7*^-(#h$XN_Bf`rRizbwz){21c7?lzt1>7DnvZ`>2i@ zD_ZboF!15t66rOBjE15|_26(0xqMy`RfQmu>qMg8D6^gMBn@y^fGG5S6)>ip`>%Ty z_=EE9tM~HzqJsO%z5Gs9ymy+>mG9=qlq&9*4M{;}nj6YEm>}5vszFzFwV*4fdeF7M zM$na8Gw8~z6>zPo6C}xXgRaDSa21$&WPLQ9DhgscWo&h5)L~%k%hb9ojG0`eN6WgO zVv`%WqXgEdzI%mOBqW}thF#R+!3GF*3QB9_?#^a3c3-kW$!T0O_duO>xzNmQHmSS1 zIfhbuXP2FRY3{CxI}KTh7Vc%CZ?3OZ*^xGGux^byxkEg-m0K1xr08oqxUHdvXQJ=v zcvm|8*vUP7b~|*eqbc$X@+nd6-O0jDD%;+jEpCu#xz&@Zz$%Np zLE>Xq9=3&H8-_jD+1<@u!LZ^`r~!g=iVZOt{1_s5iD|q!_My51+%HzhXG0)<4Yu2S zhDGO10?~BMUhFQd8R%|>Np^@kE4T_xvMd7Mp^S3hW1&TTo^of$M%UC2B40KZyh)a| ze;bG8XK?v%17}mmVeV+la%hP|G>~MOfO-FKibRf=5MyRA#@v4pqhKD{e;dQ}3K@_j z-M>Jlz%&0%;EjJ9I8^)RgSEf^AH;#tHn5=n)4@2W{x**34JKpl{dceXeK6(Y{~+*> z!N7CixPQvo#+T(LAoRAd^dH11_+@hfG5*G0gsy|v;tBWf!bGa@y{iGeFxZ`T|3S$! zdx*O^)fwdeT^egivT}n9TnQ!7N=jdMNzPrDqQoxlN9fpBV74E6#r-@u<=wBiM+kqA z|5bFoKiQ;L-9rPH&IC5yS@an9X2G`cFWo?aiXC4%FxK6Ul3sJqyvu~J{WbSf!e|oO zxr@V8F2$Z)r@LQGow10W>jx_KDxu_8zZ?!Z|0NtkbkBbJuu6Rn$0$&7Gy@P=9p2Nw*n~R zEw?GF4)2%)b((8N558+g55H$dkIplruJg^P`vP~>0!s-ydvc;XTA+Cg-0#H%ZUWAr zW((c*Dj4?Xz(;b~6IUVKIg{_8$Dy)=0Xc!&E6Ly=P^FxO?#*QkYjg;2XbkDo$V^=N zW5mq2_ptbVcaotP`Q;LK9Yc99>O*&3!}Y*NZd}*Hb#6z0?5=OPa+U^NcRmS*tH0b` z%kX_JI~Zft3U@<;c4cKC993QAew{Ca*ROJ?U~Nq&SGnEs$GComT@EgCaX|_gRv-rG2D6{m|<(VipjI7_bK>z#eny~2_)ey1K(*$MN*`9b%O+e!P5xV@Gf!(R`~ zHh=6)`}=#+5Y-GE;D&231p z3VO0CXEEH}Bi7Kn(3x_k(ym``z+TW>Fs^RJss-k zx1ZCBT5E%SrNrxQVw3-Lr$>h_q&aulZD-Z)xa%2*Wrm4rn$cT6u&9*{*I}y)djY&L zJEE{^2y4uhqSe@NTC*7SDSh+k!&o)No6ojI@ctCsHZs;AljwS^TA8ZHs?YKs$s-hC z{z4J*QwcDCfv$<@i2@D^tmvX@bWm2mrPGpn#C|4ZuY2tw`pT*1Do4Vtdy~(uCQ?0@ zY^SDn^+#-jlyRsz0!?+R{q9!#nJ)G5yL~P;LRE9Z`@P?%PUi*%zll>HjkM(jjBeYY zp;9A3{Tc$Pm_&6L*M4L#C8^jr32=J}kyd}!{n?rClGQ7?XnKE1bz6*lzyXe%@3;y4 zulzMzR6*SkSSRS}nGi?~NmFHucEav{Oi@&*Oym1tZ;)N~;8M;iq_hf;;cLH9w!TTiDFTi--|mREMArs}#F{SwRH+N!-` zSMh^%E_C+o^k6$RDToFCSM;h0<7yxFVLKHT-FMQG4(hMaB%j_!2yj5sD_gojXuDDmA1IrXQE$gU0MN&646&okDx~XmWiOsRy)hRePp!85{;S67^ z9%=_{7`@d)eI`oW{xzNLt5VbnCji;91p);+N8G`635vd9rWioP3{ zWTi{j-L=@F{_3M5)cvYFrPd(lAT>+eeUs9jQmY$a=3geT^Ljp@qfe+mKzk`a-a%Lr zdP-d>*lu#eQ&BjZ2@Y-kU^R|555*4o#X;&~ap?`7LNceg=+9@=MYcR{14<9PEfn~W zItOP!xZSdAm(aj;yJZu8XIaD44rqJdvA;&BZ;JHwi)stKYZZG*9hj2A@5#aq%$SdK zb-%>OCD3^elPeHi_GR^uTfBLN zPEJ$j!W{amnd;LJ6rRsipNv|_clq6vHUp#ECYnB7eOvgFD$G!8V!7LQhWfEyCgn}_ zB_%9(8}uY!*5cTjH`TaEFueQcs1qSn4ji=__Lk~5i1q2>TWb4&kK@`Dyx3f>7Z_DH zf=0ik##`Wu= zqOy&P)hSkINPS#CJDW*eK32a7C$b7l)f+IVeT9`>rdAXwafMo`%qiHL$S7;ycr5eya z2vYoCsh<@L6T4fjYe>;w(+_i%r{{L79ZjEa-){ZJ^u3LVudNxuQ@5LR&4o$G7RHZ6M)Ykba(w4(&-GZKl8umU~@QmhW?;TN7 z#RBDJUw@}Qr^^tj&G+i>*a&aCx#wq(LiI<(EBaGG3zWOZTuO--u{EM;U6^k#^*(_tc@_fe>8Ja9%m60D4Bl<>YPQLkUs8u>+` zcYn>VuDga{U4K)D20ndYX-kLBs!KzI-W;yCuMc`zzq48A)bDWZcLARN<%{ZbR{A4P zT@`(buOC(wWqE(7<@tTlN3W{WEoxyk6x$lwB5Jj0^>y{B0(DB2Zm3xWDD1}@Dy(}g zCF?Cbce2vA)C1PLC5glIfh3#IUO_8cAQf6CYKsd{*bs~63uA34GfLZ0@a?Eyw6-mb zR3k>)9!82OQiyb{NTIZr#}*1T##SiQBX;eJu;f!6g-F*Og(B{i3MIe5sVyq-+SEzb z=7UH3UDj$B6uMGPOs)KKG}@JrQ8XFOWRf>E1# zwNcOz*yPn#Vtg9r)A+Z0)2D5+fK%vPOnZ|LKc|anUIC6ZCA3RnoZYQtt&>o~utb$= zsD*G<>QvM9GBD!VQ-iV5N>JIIR7!gTmxXI7S`%RfEl<@((SZ~#O;}Ia<=}p~G~C+_ zdYLj>T9k3m0QIS;ji9eV5DpohucX5L19yKEb$Ywby69oPDXXQ4=eASNirNeGYB>bD z%2WPG9J7P6Q$age9;r^^Mk!*9RMRUU(3`ZPg7y)n>K+yGSim2nP++9>aUfp#$^f`D zQ%~eufT+)SB9TTSqpKj1&v_!Fs6rat+v%}16zu>H6V1c)XU|sE7F(%k9c>YNyrw3I zw5g6(SD4HGs-ty{LS~Cdu_4j9h8^v6v{)A ztyt#^{4~PM_ZX(hB^J8zkT#!oJg7AVH)4NCYa2-$x@lE}eRQsyHi)`()#h3-LeZaH zwQZ=Fdi^w**6FUr3Y6SaYc5W>MT2{44@Bx&(6G-XZxn`Xd80zYB=<0wcktJywvTD= z(I-7|?)Iic*)_EObm24AL#-dv=Cd)qw5dX?YvTj9Bd~h~^AW!XpU)s-$*|m?h)H46q7W8U=trTX+ijQkf-dm_)U+og_K56~55s{Jl!7b|9 zM=MW<25G+tnQY@=ZGJTUK3wZ>nSgY1pVNvPYh@p0KC2a>9>cZS*kJD6M=QbBKC3}< zXea&foc0Xe8L8F6PAlAt(P{ChOPin9o`hX+-96w1?MZRM8+771tqyaH(z0Vhr^fVS z$Xo-BtJ4I{yBIU+iP74Se-Ms6IYz?@TsL%~%hF&9gK|e}gK6+s&10O8GU&`VPOBe9 z$7g62-IM1U$D=K{{0ev5TKp%iRP0Ty3OhDQ6Qb$lL~WvV64*4_G&R;s&rH<(xNU63 zM6HS*9r}2&Z)ztXPo1SrrC(=ia zyn+JiQMN4Y*YG|gEY)6%3HCU;vs5cxa_Kw4V{s@gS3@~z{iI3a>xq_6#?`W5l=J^+ zrRmGHc=3ir3E5g&$=&}jf^dWN`$UTs#p8SF-RG!kkr-Ykg0igwCI;|=6PQ?s>~ zc}udd(9Vg%D>Q7Pr#uy1t#uYgQKJXdrVf7Eac8X9I1$!DdXq3CR;2`s-A02}X|K_f ztF?p?C!OwrHhl&*9AVO^<72uH120(teD>aD^f+Y0YC_?9sj#q63YA zF74Oq(2x7ju_jQ5{n`+8zYY7fXJ9y@`~j`2!Jm%*MjIwPPJNDOrNndZP~x{*B|3XZ zs}=;p4eIc%R#nWNYw`;K#|_v+MNh24C7}XM{zmH?ox_jUtSU;C4r!^BcTlsUhPxj! zD!dHR4ZtFy3a35?F=i$o*7}A%F-Ih?XMen#c^~ zBpa^~`tB!fxbEn1N^7b+W}njL(A3jfaaQsdZI4jo87!i37squM<^FE>D%ca1-^Z;S z{6BAXiTdr9wBaFJ5z6>kd!6N-){;e3y8Ab6swh9E$Hv%u)@&Qd8?-^Jr?Qds{aul2`wzk z)B9G>u(NgYx>mFQ|oPh}mY zmh$w{9TQ7=9@8CXgO0W-o*p{oVi_dTu8b#^=2!4U(RV3 z6+NZMR^L;lK-4odx`HQ#w$~4fFh`_eB@v-y`M_JC%#|s)2OA1JuDLZDEnLZiHg zgN|Ai17YR_9e-8y45#&#Jnd*mB~J&T9r@j!;w+`Ir-FsvtLo`YdEGr$dbp~m70avY zF_c#5R&`Hzz52S>@O0H3tVV#M)%0|8=D((Z7tN*2dY(jjucoJx9(G?%PZ!-$u9l~p z?igPykjzg(O5@rAuXlrv>p=%%#nbRQo`!lspDy+BWK+}F`f!KzN#BYx=g)5 zisR}9D7p0lfg9Ejc)e3U;Pq#af^wA4ui_OA0s*ClfqkQRY}j<)bW(ZbU}51r7`(_43pX&LZGd?PdD zno7M|1)A0LR)MU~w+i^TXdQ^LuyufPvvnX$mo@>)$~O7A8Xx-oR_pE_bwqXZPX~*Ut14hvzQX@99VI4dp1^o?v?HEXB$itq}G^kUc z;O}$_kgs$K)KL4*0mqWgo`>|Pw}X^NAM`w|Q_=wYE1oiUWgb`894{jQ#e3xwDoVT9PwHPA56Aw+>PR-m*;k;LF`fik|^Es)#Q zZk~R;#1L)Dm(Kl)e?2%!f zD61_CmMn1C2J51=Y~V=G9v3Vf)|lXF8c7SMcphZCr+B7XC}E)|l1-TIIR-04GdyKk z-#0yVt&~d`bM!w+b37$x&+#M)$@)H{ehyrJ0ctqMGhe{v(r>|2(jT+m@;E8&EzeF$ zc*kR-9&dY8`s*!E7aIDuryMj`-+9~9Mwq}(zwH?((u8+C-eScfjJZ9cnSKq|1l*7p z0Xeym!LWIr2E2Sp?B=_k-l!qgbDrnxC~@Z>l(rb}oXOfO_Ix7>GE4Z-^P?r|y)#$~ zzfIAfcy0&|vMlrDp^7dq^OS|ap~P}e6ALX_=W)?h=7|@<9~@wqC#tRXJj!~n^dyUH z?rKk>NI$Rjbc~t<4bhq+t!Ef_9$4ooQC*JE850yPQ7@ZK;e@MEAmkdQH7N7>Wrd*V z%3u^!0O@hB4y37lgHjV3|X~KbP-prv!Wje+E}QP7T5A#elB6!Ad;xc)oii zhrAbX$Pe`DMe@JQtwtKT!pSoo#FU|qtju}(&=VwAi zIaqwbe-l>|hG2w0gP#-8Ye9dTFZtOKelpp};0LyGo9Bk5__9b_5u=jUi9y#y(Prnh zl|=`4dM1lF)b#i+mvk{lPj328f=5#Z7zB9c<%2pgU|fvcGCF5q$|jJ*=k`w}eT zW{KW`Nmt;TVDh~RoMOU%QWcB$&&c|6L_{~ruzHJA`JrAr@(E^Fi+WqV$AlEBAL;ES zMA6(x?;XYIj)=ek*H9oQTN>pZZ%u#56A_`A=nseCuE6HfbO%l{h3^4e!i0N;;of24 z9|w-l51$?}AuPacU~hhah&#aM4C3I4s}VylQU%ytz%Ib13?g~~$C|=FS-?L%BI22_ z1cn1Anj(w@PB!5efXxMZ7r3;^pX1^t{2s8mfb-1$$UkBM2I13iIDgrySmTSePbCczi`YByVMI(oFI`FGPOgi->TNy}vKM z(-H18rCTztV3RHdj7AiCozlSQ4Ix|>*k!`yXoT#oCe)@Z{%FXK%igh8A%S{p-sM6$ zl0DwaN_)JRxl4DZjvxyUQijLdBCP{_%@xub*xZCB0-Kw}B)aDDzT;nuO17H{vK-jl zH#dd(?*qoWhhF4ccF^lhx5mVwHex}i3&p%X_G~e4rX}f_04?}UJB8u?tW=^mUFg&S z!%CVd&5mKXD{u{yf44CI?qU8t=yH1twrUcT${Hp?2G5J>mZfL^Qfoq#^jRF`0K}`_qn*!7ZHkY_=7_Ju5U^AnK2)T8iQbd13$3&jhlq|KLBhVn3@9DHN8MH;F>1f9N3&*3*g`jr}KfQ zB?wJS5n2IPGvU_2wM@7Tu(?gN1r8?2(`yH8u95b@<`?V`@IU>@8}wUEZ}IewAee{N zPQWcq8FmIXzrjPm<|^$5Y_9U&z~&751Dgvt1h_HM=l^=6!@ge2s|mN*+*;muwg^pG z?Z3PULd;eSk~~owHpQ1n>DRsclP+QOFjvg)z~)~02MxX9t)^TB+57?O(W)EXl1d{a z*bE5<$AT7g<_3CVFDBpg_KNhsj-kq2XpYU(0mnT}(K&v}gx{cS!M86hrewinI5sE4 zu{oI-$`*ag)5e4BH>EZaxJ(#sY{o3p;)7}a=`_>oE0gX)pEoxNFR+>K@rC&(0Gn&B z7%<)^R5!(e&2^OwY;FM@cg_!=98nU4%K3zdQo!aWmBM;N`o>DaaLRT2N_LtC*3Mkn znZV}g(}B%Reg?4l{oVvNkJq#4A=Otoaxut_C@0RBkZx`#AA?-pRJbL;=G@i+w=nr{ z0ydX!GqAab=Y+-I2VBn-e}4-4pZRMZK!9eZ0AB+)G2w53Tbb}d)=%>dwECBVZXP^8 z0XA35GT=t0c*}v!wf+X#i~1f&zX?9bT%23L=Im|*KWs|o4scf!-j1GQ&SnR2CzJn9 zU~~LSz^2xc9&rT(bA|s2Z2lnEfz6+n0pAdys&I`qOY>D9G;vp3I=|g8YlXu zrG1HVnTC~!-C=kSu(_e_o1Nrq(dng`kFOZ|WpGE{WCm#uHZbfmx=G1U+WD0uZ10b8fa8Jrf@m1^d6v*b(p9VIkJ`C8L`YXU@ zRxcgcJoJqP?qe$LIC`kGFTLgWc*QOz@(;irOgIp8`J(JUi8g0}17P z(X3G!U%x2PQieXL=u1wEDiaa$tSNj9@QWrK3;di3m!@kKeI=91g8Yn$Tn>1M30I{0 zm3%FPCNz#e8q)4c_%1z3uIy_g45A*DePx6ZG_JC*o|2B3157c;(teOTWr1vdj}L*( z<#-2}zgMu2aNOU7=K>Ej;diM=6_g~0Evn)>Euut|tNHG9I*m}{O`*;KPYlDOP53HsaQ}924 z9}C0z{WT)uGW;Jk`CkDx`(FnhZ1TSW{A4~(kGKPZ`6F|&mAO#}z@`Wh7T_oH6Ns<^ z4>IA%F#nh^Tm*PrC_EU4SP;x5l!49sp8{+iklfs#>~+Crn>(!+iV3bcw3?sy?h>;SKk+tq&N#oLW5$W zV3#V(cGmYjADt9VFQP<5G%&qQEcI^cn3d0qFE1UeQ0h`C}>cCA+ z{xyJWnsCjq@O6M&=KH5d)CHkoJ|UtWaAOm00Bj!R8v>i_s!^D~71+!^M*^D}+9Cz~ zd5Z+WJZ;#*BG?N=h=_0iSEJ*t&?3!zuMD#JGbq3{Oz+_e^LGRDihX8i|KWW`40`5i z%o)LU@?O9%i06gj`36o8MOXlW`K8wYgY6CZb6htJo0(q*e{&`60!}oA|1vDSuXKN` zLxUyU146PX0>|cNvKJVll2G`4>~d@0qjsSsYx}6LWfZk#zWCVbQxx>Fh=_SpXc+T( zVmAV#M{zuz~8v^%}_&tT+&;adexSzq#oZe92VPUl4 zz|Z0r$Rl0PIGD-ZG9H1ze3;_}90~Vx_&tx`wgBw~xJTjlB7S@k%EP?`_sjU*Ej@Dq zUlG$IB3?znbo}gr$Qf{t#?KsZ4DeX|#^D#Nt=Hh@HS@ZOHaBldT+oz5kGT! zlYl4VH-%^XavG;jS&ld>yCfqaeyIaPyKwlLIHydukZw`LE8}gcY z3+}h^dj~)MB2_tYE&zX%zpJiy5#~LS`oHNL6FU#?`S>jmX~B433Fe&Xt1UP@vlP7^ zlks$sTp_L&D%kiZ;IRS`R^rG1HO7x;{weS({8r=F5rH^u4crXB;6EOBE%3Sktz{tG z|5Mp_fJaqrZD(eZKuDVjA)J|W&P+mw08TH7NJ3E%1cC*SmZ_F25FiLDmw@yO3ehV| z1u=j?=mfH5Zd(Igc=6?TopO5ExS?gVU?Rs{f$(aq{|59v` zj<^wg6YvF~WxKxGh`br3cbYc5(ddZC?AdIAjfJrcw?f}0M+o!n&||~@S58xWTtjv7 zEL!2?URK>C&X4;DymZPBYa^mTey%}ILyY$5Tfrva(MR;AwA#<{>gh!L{M-O_B~hyY z=S*k=H#?aFxQ3k);L^+5GmbJx=9xFZqnE4E;A|j7!Y6>Yj^givH;dx`1aB0@--`*K z1&*aZu4{cQi$_^OPSIai&rgxe6S5!vG^rnW zbm0boM=u!zX>5?IkMF3zALRPxtVL*a3w;jmiF;7B^^_Una&_}yj$W<~Q;!h#{zqt3 z2uCYj&ch2qhO{ok<;R!(^Fz6>RzM~p(It=?$OvB!j)dd(Dt4%G2cWY)6Y)8!gq?s) zh5dU-HcbD5OoT*Ni%XcTV;%8+oO_3?_u|?@XN8Jn)JX~J z0?FbOL9!2=Us3F=;6tF-ii-29680J-i&F;43Nj;XFOz%zJ0L8h*^q2uSqjMtupE*_ zTBF#vLb6N}fF01;sENect%Q9I$!5``ko6$1K{9`4y9J%K(ET{9G%UeCAz4q-&e4UJ z!$%-lEtsn$@vb0!%`zT?NjC|lMPC&5_f@E>ZUW39SvCKv* zfssfP!C9oqihU*|i!=w4#bJHmVcNiPQ^{b-H1So%NRy(4z}CS_vzIWHp`w$@~bC^%>Ry zXG2dx|BG9!1bz<5O1GW`K<ewY2fHp@h?^$9_WlO1L~#OR7B-N3_LcAIiDZ)`c`^ zDAx{C{OX~cO}%&_T^!0e)n^xyIE=faKDLPJ4d+&>r!S_R!?_mfm5b@ta4e}Ql~h#9 zWfiuply}vU8g*;@@KLur_$w$;B)kWB^u<#VRhDw&)n_WH)d((6XI`QUf8{FTewId! z;QZz<7wO`D1+o^)9g1}n*4fywU|>D62H~j)&jqOH2-l2kuX3H9-HGu%3c;+e?1KKK zg58jniv26-dlY;fW#0>ZpMou%yyqE)IC^UKE!U9FBYk!4Wz=dU*G;vbMvugnBe0A< z7|9vc6PD5Xk!Y{g%jn`r?n8CKavC>^%TteDPMbz?#R+(+Iy3!@mb_{vf4(?2T>UpF-Z_93_1mbT_N11tb2eSGmGTrADe?1C$?Mz@ zRoNRTW^|t)4Q`FfcuY+ASa5q(_&9KL6n`@&d^~vcn49o$xH@hk6_3Wn$U9UsnrlG& zM{_xNzbW*#Wv5o_9=d**g{aZfNe}QYQCZIiZx_WEfOm-Ei@_g{;+5cCqxh1C{mbH( z!B7z8upGQFim!+XUme4%!23n{uK|xP;5zW=wqFnapzZxQBE&ds0*`L|FTkT4e{)Ru z7VzlC-x?FXjb@HP+wY}QWAO3g?lroHzMgRa-qG!S1U$O9$H1d=KOPf)A}0JIc=T=0 zzrk^56B$I#xXUm^XL#dbhq#;I(YxxO!R^%JZLYm~`KMI0lgnyy2t7X=X|nm}F!Uq9 zQQ#PG95?}-R8!H1oK<>a05?{JxB5RgL7#?xMmjc-tE);_hw)uU+A)FitJR&>Q}fA~ zrpK-)FJ#$y_yv?)EIN^MT<6?|}RgOyxbiDp8t2V?>49K$lI&vZZ!uyM|82IxE>0F4xz2;B%o z$2Eax13AEI)PTip0KFlg_{ldwjbLaDGyw|W$XcQ)^kzVFAVtZf1@v5?B`{O5wSwLn zh^qDdNQQfwNmO{(0c>Xk^6u@5A+3!6~BJa`vcJh z8~{ELh^|O6xEJsNk;3>j*art<9E0E?;00idlF5tEUjm{Nd>Q<2Ky=2hfDelC8w@@K zi0-T<;6s65)ydkpfykr*AduF}JtA+z%BFMK9f!fAlTw1=&`W_4z^lMWU=;8gz?zWZ zb?9#Zqk+EzV}LTcFr90w32fHUiRSvo>dMXZ)LYzh^ko_MqVY{Qu!qGWkB2@1Xr^@k zi5lstvDo>l%rs>j*S^lNt-A2Kk+h8tkK>+K7i}ZUn_Q^&wr%qEoXW@JLzlI0ay@Ie z*sco?OJ=G^jmBe(*Lyn^j^~=xo{1n4xv?ODrj6(9InUuXEE}fCo~AcAdq5HX44oU# znbhVTq?*7zp7R`nP{jMeots8~o`nXZ7bn1d-42>Mfpc=lcF23J-*A1zK2GWmBmvac z%bBHK?{UXeZQ^&~S_Mb}>H$1p0-6D>fl)u`;zk2wfvLa@;9X!2FrQu_u3_h8P}c&R zf!)B@z#-rya2dD(+yPXVaV`aPKo(#ES^!ocA81R*h&zzfoZPC#G-@?By!o}WC@E6PgV_Wb zfW)(i3*h0ELXX&|Q)U%M>eBCM(6iiQs!F<6#cfX-{cpL4%#+rw!FLq!cUt#8#j(Ln zuYAV6Tej|koYn?KZdBwKirk{eZHj#SynMH^7pbz2kPFUkGnOg#?h4bnPMkM z#t*{IE{XEMv9Ma>1}F|YkO6bp56M>C6OhdDA|#G>aoga>GOVW6YcVR8(}lI1q@Hkz z@L5t8efl}~SyJKm^3l3Gl}KFuq*p-MiLpD)WOTYhXA^#Aqkhuz`=JN%VOP>#P(0tb z+4Pgd*&5d5%xn)bnku$)4U^`8 zvSay5+PfWbchj})+`FpoG-ZAU`CZ&hG)n20+(^|2`B3Cp~^w?(JP^!fsT5j`Z1X)TC@R%xvtm(sjqznohD)$WvZ-kPvB_&eh*5IsZ z9gwd_$;dNZ1v^VH!Xxqi8`s4;IOyO$uD-5H$!{GbYoK*>cORFlPWhAO6>v?c%YLp# zCD5Y>xPhvGH0J zOsbud5uQ49)G>U_%wWaYlxI-bm8M{vQ?=N6?lzxaxp4HprT1u7A>hlw3_0vDAPVGRgr<(AK z)6~4LzN0FgM)%emsHC6XqSDfkzWSNcyngy#8)=B%V8Ji^jU8wRQGdNbD^=(Xy&uO< zAQ<}4oMM9(uj$cR4K3+-u^}D5D*`>2GQ9?^<_}FLylu%KP`zS9OZA`l-PUwNAF0f1 zIF+gzNL8Qk9;zNb zDblJ;m`XK|^8=*|%M4f4q`k`zpx0IzwCa@!H14uKpOQc{s}k&#bAhi<<~M~}($ZCi zrv}Tei;TQhy*E)NStgKu3Yi3=*`L^r=Jn_8H20FB7TJt^UCn_+v|nF6Pcw#!nY1*A z*Q*aEQqFDt6Lc0)RMk{t;$PN$llU~1pXT%F;BcWfRb(UNTdKFhQ#8<-wZc-$-p*g3AwTP9%xcTW(;F>Nqw9&UQBJAY zPdcB=Z&0fW??1{!O11C?&7H&@EP)s4+%|p-OW+cf+%+`K2wFl`w>w~WoBbB2+vE8q zk;=V>p3)l@9&dHNby#RdCO6WbRx7&2{*9ki!q0>iy7;H1@owHyhuXcw52)*Mcx+au zBjoeAeSv_}Hmg?tgU3UA7xSrft{qy8=vF)4r+L5DNUAR7pQQn7_*znf4tz}_IlJ+t zs)drS3*S&9E$znl(Wqk5NYgo;4y5k%ID!G6(`&D)MTLVz6E*0`XG>#y^2^g`n3wme zch-{oSh1Ja#_y`N7E?n7Z>F)A#oe=>F!UsCXTA@OO%oQ=!P>l==Dxt&XnKHun{Kz` zi)he`=rntjBCasvrx0gCi2ZJNnKo#yim zRNJIKKj!bLG}~);XMLuTR6d{A)RDXVvn!C>`Pwqs$;gG;WVvoAqKnHxE+V5pLAozC zBucGU@?Gjv)fmx5*}Hgc(v+k@k2V=JqBNWJArpPPlkX&%ckve!RIk#3r^W8n;|q+q z4SUfmW+z2W0@_f>XEvK{fndOD4p`hFY0qAMFMdARC=8^$1AIFBsfO@CUUC5STR>wD zVg!D*AL)FOG@7b&(Cy8a^c^MBL0+GRw+|ch=<_q^{5zA-ozqMrotwaC(#vNMVOP=! z7NMSW`V3!*Z$z=_A@maheoy*~^>Yh*%**gzGEpaWKP8Sx=GZT-Kh^X|A{HdWRW+Q_9@lqG2K(M9@QejwouC0f-!S)au8{jz=s zy81vJ`N235L36N9SE_0!>Zt)Id{09M2t183BEn&sVHAeob6G7f45iofFddck-=R}F zFASr<8=#dl?JsDm6D)ijejA2G(YfpvuiG68cmjT_+360Pl4DO4;CWisYl+a$$of>K zpOy7w6hM7WuCz8_w}pZZyUP}|*lixCRr=E?WTnVezMhLnx8MO>pJcsF zE9gJV`UiJwCY0b6J!3>Sz339s@n@xH zokI8ccakUI9rUGqSL)^#lBI84!oCFTMRbR-_*A$>fev*LjGFn$zWbfQMXz@dbeaXp zf6>s_MV`*C6_!x(c79=a0#0o!)WxsX=Cl=FQfU?@zfVPdcndnK;VJ4G!VJE;tuThV zUl0;0J=2g(%g+i&rLpaVMJn~8&cR$Gs@t?PRLzFXmBWA3}aq%6hjLAwMNk!AiclG|(sX&cHmP zyJg^L=QyE&YHAE=b^Uf{&>RRkf>w*iY`0rxrzj(S%O0^FT`5I!b5f}ARldJeJwkXP zRn_nQ)5@Z@69hrMBZbDM@GcrM9(`&jjU6wH#=C8`lZ5ut#}kApDRLuDD@R#wrN~p# zy>cXbTj{%hdj}yuD&!<1Kc$4*T8HH<==Qk04wuX0Ll69!swWFp$@s3&IZaNr*L>tT zk;ZMpJohEjC&{{N0rbgKzD4lTk_AEX52m4g2nkS4_|09)(j){$=(+h+= z6}`Dh7(mI3Fpi5C3i;GyAsowDq$f4+r2d1(6^ebO*A@x4392R%W}c1b%lHZpC=IXyF4~WFyti53ZXay-N_yBd3{!|*X3}#?2A+7&iLLkv{t1| zkc-V?b-HXJzc(0kg>2HemBQau9?yl0(>Bb2iR;wbA2cr7QXwn7}Ip-h~h z?;zACQ^V7k&Sv$RodF+KQky^M_nbP17+9tHY96e*3Fi?Fql~kRuRA^@! zJ#?_A7*B5>7V1-fc-A?W`oyEStj+cgr)s?^lZ-nAy>xxMa4SJ>g|a+k>j#RNA#3BQ@d2nya&hf<8;o>JEDC{(#MOE0qrB7@n8+4^MtA1d`;DaP}}t zIf-fx3m$ZQh~_%0-GLpU)oS%xJr0W{FePlJw~nBb-#jd|pf91}r`N*HcCXcG_Soz$ zZ@`5f?3gAy=O2a3bXgz4^tWisQAAyR6eZU&?J~2@kQ4FP{cbZxE5?M!=??nweGL?Z z`X7T!xvUe@@tqD5H+KthXh_d z3$H5skH&ARp|t3&N)t4P`u#L2A0$|$DaVDEHFE3sI*rz^pj)SePI!m6DoqSZdru3A z*rZ?|lVJ|}oLB&`g9-*h0dH_onrye&gASX|>F@-h_71$Sgbya-)Hw&gAOxQT@rjc zx6A8AfZ63Rdpv$G_SPulKpiF)tJ#ecgCmI3gKb6FT&xXRERKNP6Z8kHAzNUjlA+7u zbeb);V1RXLtH-=5Vt1PD7Khc!#=H;vlhqNs+l#S=2sW!dV0JpH6uSp=usdY4Swr@q z)93Q7QS3fHwgeV4&M+>w-|cpMdf#sIc-;PgJ>c=V{Wkw+vOV1w3R;3bpWAKrx}0`D z>8=Xi48Jwt@Y`K3UjVsy0>00cMEo|C!4~xR9afLUZ1GBp9Zl}@ge-2S$Lhqq8eFH? zgI2%YkG|)^5d|aJw?1M=fG^~>S%Nl~+huibknOsV*KN1BeNMk87-9|jFRA*BP?dlS zW^@m?)c1x^)mZA0DcaTQD`_-tyzsXScgX5<`CV?C&F^!2?V+o(od(wz@w(dj;vl*T zO?^FVeuZA*#B|M#hdSnCnW9#6Gi@k+w@?3!bbu58)UY?o?$g(!so7!*RSee0)Bbj1 z4n1y!=e@L*QTv{QZ;O5Dx`-V9NTVXFDVJtmHPog-_)mJ*D880RJsXRi)ictm>Yiw) zg2wQinJy24{f))y1bIfYw-UAZW5t|iA_j6x=!eB^=+IO~vBuson5M#MtE#t{D}{QCLOmL~76+u8gOJa~S%bw9s!KF(keILj9>)iq{pqX0VuqY) zw;^cn%UYQbBUco14g?>GB3>>fK$mKUh)p!qbGYcl_P%_8h_7!tLe7xGf`u$-c4OAM zL*AFgd`d4B(^bF7F$;zxrm<8!qa)K~^p&*92&*LHWU&K@lSK#7WYl`8?gVaDaIZ9T z9qb3&3pq4;lGsnZOh>CX2+QcD1$>S)Vv2YqfzG@oHchbh->ADG#|U4SXlIDInoYX* zXH{TZ&W`_7Fa%o3TjDF~z7|PUF5YVr9$7SPJ!&cpwk>$ciM*x0U?UCuC3{jMA}4KC8z=Emf@n0<1Z8yirM_l=E7OU5=d_9J5< zooI{v-^%-nYj)}whpEo+T6xS@#WEUa@~N#?Z!UGV@6p6*jv7n`8ZV-@vWsF3ydG8 zP)#?Z8$bAUvzxKG&Vd7ulP&EQPsr`Dnm5lXLZiLi9TndaR`)>FY|VUziVvYS2c9z4 z#rrZ@DRu0?;PGMCXE6sHmVj$}*i2`-p)q%4(szf^r8{>srmJ_NIp^}vN!A|5A5+5} zIK%Ap`WyMbt)cU%-7t&5A@;IC`U^58XLw_&lj+9E_eaqzq3Lc-XT}VqvxzEZ81vO%)T86IOueLm?-(yMmuHQZo6r#J zaB*1IG@mYR1X-U&-_196k*01k-cz$Hw$AFESxT9{JY!td zNxeivTZfpM(u@wKx~y+@m!55A%Es4!^zzKLuBl0@{!k{;$>t_pn(nom`eV>mJ4}7z zt^GgMQ+azaPm4hw#7z(mnP%+0%%6qB)wcf9L5Hb4<-vH!z~H(#=jLt*T~LXOmrhOHcD=7;`i1eyiJqix02gZ}(aKxAimcFLYVbjn1Zo zTB^bFXE!eunH)GJRrkVnODr;JrMX3>$2(EM$EGLHJjZzXfp`4`?RZ=!84j!2f&Hc< z;CG?DLhchhsXCh)(uM^n$4P4YvFS9@HsotE|1A45OGf;(yK{m;tA#1COS zC+m4k|4!BiGyUITU1tuuZP@kV#AS8)v9mufyBuLI7i7K8Z0Hwd{V}FrlB3$qA)D3e z3|fPs5H{b|?`4-o%;g6voM&o8Cuf_|RhMNweGc?1VO<;WnVn9b-Rg1Kte%kPsvPsx zIf!|Ubn_8&8S}m_+s`mN_6Ddl4t{prW*|e%;Q?H2+>~AJvijFBy%DvlK-61IZ=CMK zcHe3BTO4+W)#krVLn}-++;E25Z+8Xa{3Pr5nEta|IGa1jqBy{k4eMIF*Y8E|wc)shdmYbj%xc3F6|T%n^Wk_;PGHV_B=Co5X&f;*o&A7I4S?oAu`8{LFwA5svk3NF`II3QRsqIVXnm2Jr>Ft{B zr`H#lc=dQ8+_f~0{u5~HO0>ii@KH|`!c#>C4oVi6+l~hDVxMfWPLl1^7TriaS)ii1 V7&udergW=&b^~emC#L!v{vWUzsCobZ delta 89811 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 bool { + let x = f64::from(client_x) - geometry.stage_left; + let y = f64::from(client_y) - geometry.stage_top; + let corridor_left = (geometry.handle_left - 12.0).min(geometry.block_left); + let corridor_right = (geometry.block_left + 18.0).max(geometry.handle_right + 12.0); + + x >= corridor_left + && x <= corridor_right + && y >= geometry.block_top - 18.0 + && y <= geometry.block_bottom + 18.0 +} + +pub(crate) fn drop_placement_from_block_point( + client_y: i32, + block_top: f64, + block_height: f64, +) -> DropPlacement { + let midpoint = block_top + (block_height / 2.0); + if f64::from(client_y) <= midpoint { + DropPlacement::Before + } else { + DropPlacement::After + } +} + +pub(crate) fn drop_indicator_top( + stage_top: f64, + block_top: f64, + block_bottom: f64, + placement: DropPlacement, +) -> f64 { + match placement { + DropPlacement::Before => block_top - stage_top, + DropPlacement::After => block_bottom - stage_top, + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn pointer_corridor_accepts_handle_lane_and_block_edge() { + let geometry = HandleCorridorGeometry { + stage_left: 100.0, + stage_top: 20.0, + block_left: 140.0, + block_top: 40.0, + block_bottom: 80.0, + handle_left: 108.0, + handle_right: 130.0, + }; + + assert!(pointer_in_handle_corridor_geometry(118, 80, &geometry)); + assert!(pointer_in_handle_corridor_geometry(250, 80, &geometry)); + assert!(!pointer_in_handle_corridor_geometry(90, 80, &geometry)); + assert!(!pointer_in_handle_corridor_geometry(118, 28, &geometry)); + } + + #[test] + fn drop_placement_splits_block_at_midpoint() { + assert_eq!( + drop_placement_from_block_point(50, 40.0, 20.0), + DropPlacement::Before + ); + assert_eq!( + drop_placement_from_block_point(51, 40.0, 20.0), + DropPlacement::After + ); + } +} diff --git a/rust/spikes/leptos-tiptap-spike/src/editor_runtime/mod.rs b/rust/spikes/leptos-tiptap-spike/src/editor_runtime/mod.rs index cdafb949..0ff56a26 100644 --- a/rust/spikes/leptos-tiptap-spike/src/editor_runtime/mod.rs +++ b/rust/spikes/leptos-tiptap-spike/src/editor_runtime/mod.rs @@ -1,5 +1,6 @@ pub(crate) mod attachment_links; pub(crate) mod attachment_upload; +pub(crate) mod block_dnd; pub(crate) mod block_hover_state; pub(crate) mod block_menu_document; pub(crate) mod block_menu_overlay; diff --git a/rust/spikes/leptos-tiptap-spike/src/lib.rs b/rust/spikes/leptos-tiptap-spike/src/lib.rs index 0a9a05c6..adbde8d9 100644 --- a/rust/spikes/leptos-tiptap-spike/src/lib.rs +++ b/rust/spikes/leptos-tiptap-spike/src/lib.rs @@ -21,12 +21,16 @@ use web_sys::{ }; use editor_runtime::attachment_upload::dispatch_editor_upload_request; +use editor_runtime::block_dnd::{ + drop_indicator_top, drop_placement_from_block_point, pointer_in_handle_corridor_geometry, + HandleCorridorGeometry, +}; use editor_runtime::block_menu_overlay; use editor_runtime::block_menu_legacy_html::{ duplicate_top_level_block_html, reorder_top_level_block_html, }; use editor_runtime::block_hover_state::{ - BlockMenuLayout, DropIndicatorState, DropPlacement, HoveredBlockState, PendingDragState, + BlockMenuLayout, DropIndicatorState, HoveredBlockState, PendingDragState, }; use editor_runtime::command_sync::{ read_editor_snapshot, sync_editor_outputs, sync_persisted_editor_command, @@ -5416,8 +5420,6 @@ fn pointer_in_handle_corridor(client_x: i32, client_y: i32, block: &HoveredBlock let block_left = block_rect.left() - stage_rect.left(); let block_top = block_rect.top() - stage_rect.top(); let block_bottom = block_rect.bottom() - stage_rect.top(); - let x = f64::from(client_x) - stage_rect.left(); - let y = f64::from(client_y) - stage_rect.top(); let handle_left = handle_rect .as_ref() .map(|rect| rect.left() - stage_rect.left()) @@ -5426,10 +5428,20 @@ fn pointer_in_handle_corridor(client_x: i32, client_y: i32, block: &HoveredBlock .as_ref() .map(|rect| rect.right() - stage_rect.left()) .unwrap_or_else(|| handle_left + HANDLE_TRIGGER_WIDTH); - let corridor_left = (handle_left - 12.0).min(block_left); - let corridor_right = (block_left + 18.0).max(handle_right + 12.0); - x >= corridor_left && x <= corridor_right && y >= block_top - 18.0 && y <= block_bottom + 18.0 + pointer_in_handle_corridor_geometry( + client_x, + client_y, + &HandleCorridorGeometry { + stage_left: stage_rect.left(), + stage_top: stage_rect.top(), + block_left, + block_top, + block_bottom, + handle_left, + handle_right, + }, + ) } fn drop_indicator_from_target( @@ -5442,16 +5454,8 @@ fn drop_indicator_from_target( let stage = editor_stage_element()?; let block_rect = block.get_bounding_client_rect(); let stage_rect = stage.get_bounding_client_rect(); - let midpoint = block_rect.top() + (block_rect.height() / 2.0); - let placement = if f64::from(client_y) <= midpoint { - DropPlacement::Before - } else { - DropPlacement::After - }; - let top = match placement { - DropPlacement::Before => block_rect.top() - stage_rect.top(), - DropPlacement::After => block_rect.bottom() - stage_rect.top(), - }; + let placement = drop_placement_from_block_point(client_y, block_rect.top(), block_rect.height()); + let top = drop_indicator_top(stage_rect.top(), block_rect.top(), block_rect.bottom(), placement); Some(DropIndicatorState { index: hovered.index,