From 405b0b4b33344be2e5f50d06d9d0f34cc9586ea1 Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:57 -0700 Subject: [PATCH 01/13] Use the draft pseudocode prompt from #73 The prompt picks a shape per body: plain-word steps, a call tree, or a component tree. The text is a placeholder until it is reworded. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- crates/diffr-core/src/plugin/config.rs | 8 ++--- plugins/shape/summarize/plugin.toml | 45 ++++++++++++++++++++++---- src/plugin/tests/summarize.rs | 4 --- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/crates/diffr-core/src/plugin/config.rs b/crates/diffr-core/src/plugin/config.rs index 47cb30dd6..9fab93734 100644 --- a/crates/diffr-core/src/plugin/config.rs +++ b/crates/diffr-core/src/plugin/config.rs @@ -983,10 +983,10 @@ mod tests { let summarize = &plugins["bundled"]["properties"]["summarize"]["properties"]; // A text setting, so settings screens let users edit the prompt. assert!(summarize["system_prompt"].get("x-settings").is_none()); - assert!(summarize["system_prompt"]["default"] - .as_str() - .unwrap() - .starts_with("For each listed fold, rewrite that function body")); + assert_eq!( + summarize["system_prompt"]["default"], + super::builtin::manifest("summarize").unwrap().options["system_prompt"]["default"] + ); let keys: Vec<&String> = plugins.as_object().unwrap().keys().collect(); assert_eq!(keys, ["order", "bundled", "external"]); } diff --git a/plugins/shape/summarize/plugin.toml b/plugins/shape/summarize/plugin.toml index f4bbf20fe..6e1a27ca8 100644 --- a/plugins/shape/summarize/plugin.toml +++ b/plugins/shape/summarize/plugin.toml @@ -62,14 +62,45 @@ default = 3 [options.system_prompt] type = "string" title = "System prompt" -description = "The system instruction sent with every request; diffr builds each request's message from one body's numbered lines and its documentation. Unset uses the default: https://github.com/devdotfast/diffr/blob/main/plugins/shape/summarize/plugin.toml#L66-L72" +description = "The system instruction sent with every request; diffr builds each request's message from one body's numbered lines and its documentation. Unset uses the default: https://github.com/devdotfast/diffr/blob/main/plugins/shape/summarize/plugin.toml#L67-L103" +# TODO: workshop this prompt; the draft text from #73 is a placeholder. default = """\ -For each listed fold, rewrite that function body as short \ -pseudocode. Keep the names. No prose, no comments, no code fences. Use as few lines as \ -possible: about one pseudocode line per five source lines, and never more than a third \ -of the body's lines. When a fold lists a doc, also set "summary" to one sentence copied \ -verbatim from that doc; otherwise leave it empty. Answer with a JSON object whose \ -"summaries" array holds one {"id", "summary", "pseudocode"} object per fold.""" +For each listed fold, rewrite that function or test body as pseudocode a reviewer can \ +read instead of the code. First decide what the body mostly does, then use its shape. + +Logic or an algorithm (branches, loops, computation): plain-word steps, nested two \ +spaces per level: + if content is unchanged + return cached result + write new content + return fresh result + +Control flow (mostly calls to other functions, in order): a call tree of the callees, \ +each call's own calls indented under it: + createSession + persistPrompt + launchAgent + navigateToSession + +UI (renders components or markup): a component tree, with the hooks and state that \ +matter under their component, and a component's module in parentheses when it comes \ +from elsewhere: + + useSessionEvents() + (packages/ui) + +A test: the setup, the action under test, then what it asserts. + +If uncertain, pick the option with the shortest output / explanation. You do not need to be 1:1 \ +with the underlying code in any of this pseudocode. You can use notional function names, etc. \ +as long as it helps the reader get a quick understanding of what the underlying code is doing. + +Pseudocode is best read when it's short and sweet - you are not trying to write an algorithms textbook, \ +just a quick summary that the user can expand to the underlying code. Strive to compress the code. + +When a fold lists a doc, also set "summary" to one sentence copied verbatim from that \ +doc; otherwise leave it empty. Answer with a JSON object whose "summaries" array holds \ +one {"id", "summary", "pseudocode"} object per fold.""" [options.tests] type = "boolean" diff --git a/src/plugin/tests/summarize.rs b/src/plugin/tests/summarize.rs index 74a111689..b8aea50fe 100644 --- a/src/plugin/tests/summarize.rs +++ b/src/plugin/tests/summarize.rs @@ -454,10 +454,6 @@ fn the_system_prompt_is_the_configured_one() { let defaults = builtin::manifest("summarize").unwrap().defaults(); let prompt = defaults["system_prompt"].as_str().unwrap(); assert_eq!(system, prompt); - assert!(prompt.starts_with( - "For each listed fold, rewrite that function body as short pseudocode. Keep the names." - )); - assert!(!prompt.contains('\n')); } #[test] From 66e84a08ac717250cbc1e0fcbb4da86081e775aa Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:57 -0700 Subject: [PATCH 02/13] Summarize only new tests Modified and unchanged tests keep their ordinary fold labels. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- plugins/shape/summarize/plugin.toml | 4 ++-- plugins/shape/summarize/plugin.wasm | Bin 651993 -> 652399 bytes plugins/shape/summarize/rust/src/lib.rs | 10 ++++++---- src/plugin/tests/summarize.rs | 7 ++++--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins/shape/summarize/plugin.toml b/plugins/shape/summarize/plugin.toml index 6e1a27ca8..d75fb2f23 100644 --- a/plugins/shape/summarize/plugin.toml +++ b/plugins/shape/summarize/plugin.toml @@ -6,7 +6,7 @@ description = "Pseudocode summaries for large new function bodies and tests." # startup when a plugin that is on cannot be made. [enabled] title = "Summarize functions and tests" -description = "Summarize large new function bodies and right-side tests as pseudocode. Needs an API key: `api_key`, or the provider's variable in the environment: `GEMINI_API_KEY` or `GOOGLE_API_KEY`, `OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`." +description = "Summarize large new function bodies and new tests as pseudocode. Needs an API key: `api_key`, or the provider's variable in the environment: `GEMINI_API_KEY` or `GOOGLE_API_KEY`, `OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`." default = false [options.provider] @@ -105,7 +105,7 @@ one {"id", "summary", "pseudocode"} object per fold.""" [options.tests] type = "boolean" title = "Summarize tests" -description = "Summarize right-side test bodies, including modified and unchanged tests in diffed files." +description = "Summarize new test bodies." default = true [options.test_min_lines] diff --git a/plugins/shape/summarize/plugin.wasm b/plugins/shape/summarize/plugin.wasm index 03f5ea5dfc3e43d84bda00e8aff079a9c2efd72f..bdf04f79a81588c6524703e794d5b92dcc4ba178 100644 GIT binary patch delta 222 zcmcclRQ>%6^$lCanYJz4yj^_0EL-EOOJeq)emsdef{Dptx_mOTk2({#0;eNSmLjJDmt#qm5*IH64>LEn0<$iI z0xzQiy8@#IQ-~)o8ftX|a_B75Ny#QsQF)#oC diff --git a/plugins/shape/summarize/rust/src/lib.rs b/plugins/shape/summarize/rust/src/lib.rs index b27b692d7..8df3e25c6 100644 --- a/plugins/shape/summarize/rust/src/lib.rs +++ b/plugins/shape/summarize/rust/src/lib.rs @@ -1,5 +1,5 @@ -//! The summarizer: large new function bodies become short pseudocode, shown -//! in place of the collapsed body. +//! The summarizer: large new function bodies and new tests become short +//! pseudocode, shown in place of the collapsed body. //! //! It needs an API key for most providers: `new` fails without one, naming //! how to set it or turn the plugin off, which is why the bundled @@ -14,7 +14,7 @@ mod provider; pub use provider::{Details, Provider}; /// The plugin's name, and the tags its queries set: a function body, and a -/// test body, which can be summarized independently of whether it is new. +/// test body. const FUNCTION: &str = "summarize:function"; const TEST: &str = "summarize:test"; @@ -323,7 +323,9 @@ impl Summarize { } let count = (data.range.end.line - data.range.start.line) as usize; Ok(if data.tags.iter().any(|tag| tag == TEST) { - self.options.tests && count >= self.options.test_min_lines + self.options.tests + && count >= self.options.test_min_lines + && cursor.is_one_sided(data.id)? } else { data.tags.iter().any(|tag| tag == FUNCTION) && !data.visibility.collapsed diff --git a/src/plugin/tests/summarize.rs b/src/plugin/tests/summarize.rs index b8aea50fe..f46b64566 100644 --- a/src/plugin/tests/summarize.rs +++ b/src/plugin/tests/summarize.rs @@ -523,7 +523,7 @@ fn external_component_summarizes_over_http() { } #[test] -fn tests_are_selected_when_added_modified_unchanged_or_already_collapsed() { +fn tests_are_selected_only_when_added_even_if_already_collapsed() { for (path, before, after) in [ ( "a.py", @@ -552,11 +552,12 @@ fn tests_are_selected_when_added_modified_unchanged_or_already_collapsed() { let comment = if path.ends_with(".py") { "#" } else { "//" }; let after = format!("{after}\n{comment} changed elsewhere\n"); let (file, mut sides) = project(path, old, &after); - assert_eq!(select(&sides, 3, Some(3)).len(), 1, "{path}: {old}"); + let added = usize::from(old.is_empty()); + assert_eq!(select(&sides, 3, Some(3)).len(), added, "{path}: {old}"); assert!(select(&sides, 3, None).is_empty()); assert!(select(&sides, 3, Some(30)).is_empty()); run("test-bodies", json!({"min_lines": 3}), &file, &mut sides); - assert_eq!(select(&sides, 3, Some(3)).len(), 1); + assert_eq!(select(&sides, 3, Some(3)).len(), added); } } } From 59c466a5716f09c0905e31572b58aa27d8e8638c Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:57 -0700 Subject: [PATCH 03/13] Share the test queries between summarize and test-bodies No behavior change. Each shared pattern sets both plugins' test tags, so the two plugins agree on what a test is. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- crates/diffr-core/src/plugin/queries.rs | 1 + plugins/shape/shared/queries/go-tests.scm | 9 +++++++++ plugins/shape/shared/queries/javascript-tests.scm | 10 ++++++++++ plugins/shape/shared/queries/python-tests.scm | 5 +++++ plugins/shape/shared/queries/rust-tests.scm | 5 +++++ plugins/shape/summarize/queries/go.scm | 9 +-------- plugins/shape/summarize/queries/javascript.scm | 10 +--------- plugins/shape/summarize/queries/python.scm | 5 +---- plugins/shape/summarize/queries/rust.scm | 5 +---- plugins/shape/test-bodies/queries/go.scm | 9 +-------- plugins/shape/test-bodies/queries/javascript.scm | 4 ++-- plugins/shape/test-bodies/queries/python.scm | 5 +---- plugins/shape/test-bodies/queries/rust.scm | 5 +---- 13 files changed, 39 insertions(+), 43 deletions(-) create mode 100644 plugins/shape/shared/queries/go-tests.scm create mode 100644 plugins/shape/shared/queries/javascript-tests.scm create mode 100644 plugins/shape/shared/queries/python-tests.scm create mode 100644 plugins/shape/shared/queries/rust-tests.scm diff --git a/crates/diffr-core/src/plugin/queries.rs b/crates/diffr-core/src/plugin/queries.rs index cf5869f3b..d6907d9c9 100644 --- a/crates/diffr-core/src/plugin/queries.rs +++ b/crates/diffr-core/src/plugin/queries.rs @@ -276,6 +276,7 @@ mod tests { "builtin:shared/queries/rust.scm", "builtin:shared/queries/rust-docstrings.scm", "builtin:deleted-bodies/queries/rust.scm", + "builtin:shared/queries/rust-tests.scm", "builtin:test-bodies/queries/rust.scm", "builtin:removed-runs/queries/rust.scm", "builtin:context/queries/rust.scm", diff --git a/plugins/shape/shared/queries/go-tests.scm b/plugins/shape/shared/queries/go-tests.scm new file mode 100644 index 000000000..5b231c998 --- /dev/null +++ b/plugins/shape/shared/queries/go-tests.scm @@ -0,0 +1,9 @@ +; Test bodies, tagged for every plugin that treats tests specially. +((function_declaration name: (identifier) @_name body: (block "{" @fold.open (statement_list . [ + (labeled_statement (label_name) . (_) @fold.indent) + (_) @fold.indent + ]) "}" @fold.close) @fold) + (#not-match? @fold.indent "^[A-Za-z_][A-Za-z0-9_]*:\\s*\n") + (#match? @_name "^Test") + (#set! tag "summarize:test") + (#set! tag "test-bodies:test")) diff --git a/plugins/shape/shared/queries/javascript-tests.scm b/plugins/shape/shared/queries/javascript-tests.scm new file mode 100644 index 000000000..371fc393b --- /dev/null +++ b/plugins/shape/shared/queries/javascript-tests.scm @@ -0,0 +1,10 @@ +; Test bodies, tagged for every plugin that treats tests specially. +((call_expression + function: (identifier) @_name + arguments: (arguments [ + (arrow_function body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) + (function_expression body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) + ])) + (#match? @_name "^(it|test)$") + (#set! tag "summarize:test") + (#set! tag "test-bodies:test")) diff --git a/plugins/shape/shared/queries/python-tests.scm b/plugins/shape/shared/queries/python-tests.scm new file mode 100644 index 000000000..faf2dba60 --- /dev/null +++ b/plugins/shape/shared/queries/python-tests.scm @@ -0,0 +1,5 @@ +; Test bodies, tagged for every plugin that treats tests specially. +((function_definition name: (identifier) @_name ":" @fold.open body: (block . (_) @fold.indent) @fold) + (#match? @_name "^test_") + (#set! tag "summarize:test") + (#set! tag "test-bodies:test")) diff --git a/plugins/shape/shared/queries/rust-tests.scm b/plugins/shape/shared/queries/rust-tests.scm new file mode 100644 index 000000000..2b2b9e991 --- /dev/null +++ b/plugins/shape/shared/queries/rust-tests.scm @@ -0,0 +1,5 @@ +; Test bodies, tagged for every plugin that treats tests specially. +((function_item attributes: (attributes (attribute_item) @_attribute) body: (block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) + (#match? @_attribute "test") + (#set! tag "summarize:test") + (#set! tag "test-bodies:test")) diff --git a/plugins/shape/summarize/queries/go.scm b/plugins/shape/summarize/queries/go.scm index 09118c205..957c399b5 100644 --- a/plugins/shape/summarize/queries/go.scm +++ b/plugins/shape/summarize/queries/go.scm @@ -1,4 +1,4 @@ -; inherits: builtin:shared/queries/go.scm, builtin:shared/queries/go-docstrings.scm +; inherits: builtin:shared/queries/go.scm, builtin:shared/queries/go-docstrings.scm, builtin:shared/queries/go-tests.scm ((function_declaration body: (block "{" @fold.open (statement_list . [ (labeled_statement (label_name) . (_) @fold.indent) (_) @fold.indent @@ -11,10 +11,3 @@ ]) "}" @fold.close) @fold) (#not-match? @fold.indent "^[A-Za-z_][A-Za-z0-9_]*:\\s*\n") (#set! tag "summarize:function")) -((function_declaration name: (identifier) @_name body: (block "{" @fold.open (statement_list . [ - (labeled_statement (label_name) . (_) @fold.indent) - (_) @fold.indent - ]) "}" @fold.close) @fold) - (#not-match? @fold.indent "^[A-Za-z_][A-Za-z0-9_]*:\\s*\n") - (#match? @_name "^Test") - (#set! tag "summarize:test")) diff --git a/plugins/shape/summarize/queries/javascript.scm b/plugins/shape/summarize/queries/javascript.scm index 2d6bb18c0..fae80e401 100644 --- a/plugins/shape/summarize/queries/javascript.scm +++ b/plugins/shape/summarize/queries/javascript.scm @@ -1,4 +1,4 @@ -; inherits: builtin:shared/queries/javascript.scm, builtin:shared/queries/javascript-docstrings.scm +; inherits: builtin:shared/queries/javascript.scm, builtin:shared/queries/javascript-docstrings.scm, builtin:shared/queries/javascript-tests.scm ((function_declaration body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) (#set! tag "summarize:function")) ((generator_function_declaration body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) @@ -12,11 +12,3 @@ (function_expression body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) ]) (#set! tag "summarize:function")) -((call_expression - function: (identifier) @_name - arguments: (arguments [ - (arrow_function body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) - (function_expression body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) - ])) - (#match? @_name "^(it|test)$") - (#set! tag "summarize:test")) diff --git a/plugins/shape/summarize/queries/python.scm b/plugins/shape/summarize/queries/python.scm index 701c1bda7..6f01ea23a 100644 --- a/plugins/shape/summarize/queries/python.scm +++ b/plugins/shape/summarize/queries/python.scm @@ -1,6 +1,3 @@ -; inherits: builtin:shared/queries/python.scm, builtin:shared/queries/python-docstrings.scm +; inherits: builtin:shared/queries/python.scm, builtin:shared/queries/python-docstrings.scm, builtin:shared/queries/python-tests.scm ((function_definition ":" @fold.open body: (block . (_) @fold.indent) @fold) (#set! tag "summarize:function")) -((function_definition name: (identifier) @_name ":" @fold.open body: (block . (_) @fold.indent) @fold) - (#match? @_name "^test_") - (#set! tag "summarize:test")) diff --git a/plugins/shape/summarize/queries/rust.scm b/plugins/shape/summarize/queries/rust.scm index c24b2baaa..5960834f1 100644 --- a/plugins/shape/summarize/queries/rust.scm +++ b/plugins/shape/summarize/queries/rust.scm @@ -1,6 +1,3 @@ -; inherits: builtin:shared/queries/rust.scm, builtin:shared/queries/rust-docstrings.scm +; inherits: builtin:shared/queries/rust.scm, builtin:shared/queries/rust-docstrings.scm, builtin:shared/queries/rust-tests.scm ((function_item body: (block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) (#set! tag "summarize:function")) -((function_item attributes: (attributes (attribute_item) @_attribute) body: (block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) - (#match? @_attribute "test") - (#set! tag "summarize:test")) diff --git a/plugins/shape/test-bodies/queries/go.scm b/plugins/shape/test-bodies/queries/go.scm index 3bbca57f8..a9e73701e 100644 --- a/plugins/shape/test-bodies/queries/go.scm +++ b/plugins/shape/test-bodies/queries/go.scm @@ -1,8 +1 @@ -; inherits: builtin:shared/queries/go.scm, builtin:shared/queries/go-docstrings.scm -((function_declaration name: (identifier) @_name body: (block "{" @fold.open (statement_list . [ - (labeled_statement (label_name) . (_) @fold.indent) - (_) @fold.indent - ]) "}" @fold.close) @fold) - (#not-match? @fold.indent "^[A-Za-z_][A-Za-z0-9_]*:\\s*\n") - (#match? @_name "^Test") - (#set! tag "test-bodies:test")) +; inherits: builtin:shared/queries/go.scm, builtin:shared/queries/go-docstrings.scm, builtin:shared/queries/go-tests.scm diff --git a/plugins/shape/test-bodies/queries/javascript.scm b/plugins/shape/test-bodies/queries/javascript.scm index cc44e7acd..dfe14795b 100644 --- a/plugins/shape/test-bodies/queries/javascript.scm +++ b/plugins/shape/test-bodies/queries/javascript.scm @@ -1,9 +1,9 @@ -; inherits: builtin:shared/queries/javascript.scm, builtin:shared/queries/javascript-docstrings.scm +; inherits: builtin:shared/queries/javascript.scm, builtin:shared/queries/javascript-docstrings.scm, builtin:shared/queries/javascript-tests.scm ((call_expression function: (identifier) @_name arguments: (arguments [ (arrow_function body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) (function_expression body: (statement_block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) ])) - (#match? @_name "^(it|test|describe)$") + (#match? @_name "^describe$") (#set! tag "test-bodies:test")) diff --git a/plugins/shape/test-bodies/queries/python.scm b/plugins/shape/test-bodies/queries/python.scm index 68dbd31cd..6720d6e23 100644 --- a/plugins/shape/test-bodies/queries/python.scm +++ b/plugins/shape/test-bodies/queries/python.scm @@ -1,4 +1 @@ -; inherits: builtin:shared/queries/python.scm, builtin:shared/queries/python-docstrings.scm -((function_definition name: (identifier) @_name ":" @fold.open body: (block . (_) @fold.indent) @fold) - (#match? @_name "^test_") - (#set! tag "test-bodies:test")) +; inherits: builtin:shared/queries/python.scm, builtin:shared/queries/python-docstrings.scm, builtin:shared/queries/python-tests.scm diff --git a/plugins/shape/test-bodies/queries/rust.scm b/plugins/shape/test-bodies/queries/rust.scm index c1a0f6538..08598152b 100644 --- a/plugins/shape/test-bodies/queries/rust.scm +++ b/plugins/shape/test-bodies/queries/rust.scm @@ -1,7 +1,4 @@ -; inherits: builtin:shared/queries/rust.scm, builtin:shared/queries/rust-docstrings.scm -((function_item attributes: (attributes (attribute_item) @_attribute) body: (block "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) - (#match? @_attribute "test") - (#set! tag "test-bodies:test")) +; inherits: builtin:shared/queries/rust.scm, builtin:shared/queries/rust-docstrings.scm, builtin:shared/queries/rust-tests.scm ((mod_item attributes: (attributes (attribute_item) @_attribute) body: (declaration_list "{" @fold.open . (_) @fold.indent "}" @fold.close) @fold) (#match? @_attribute "cfg\\(test\\)") (#set! tag "test-bodies:module")) From 535bc07015c502d9029b455d36ae8ab5fa0e6daa Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:58 -0700 Subject: [PATCH 04/13] Tag integration and end-to-end test files Classify adds `integration` or `e2e` to a test file when its path or its first lines say so. Other test files count as unit tests. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- plugins/classify/plugin.toml | 2 +- plugins/classify/plugin.wasm | Bin 1462764 -> 1471122 bytes plugins/classify/rust/src/lib.rs | 63 ++++++++++++++++++++++++++++++- tests/tags.rs | 42 +++++++++++++++++++++ 4 files changed, 104 insertions(+), 3 deletions(-) diff --git a/plugins/classify/plugin.toml b/plugins/classify/plugin.toml index 7020cd1dd..53369a749 100644 --- a/plugins/classify/plugin.toml +++ b/plugins/classify/plugin.toml @@ -1,6 +1,6 @@ name = "classify" title = "Classify" -description = "Tag each changed file as generated, vendored, docs or test from GitHub Linguist's rules, diffr's test-path rules and git attributes." +description = "Tag each changed file as generated, vendored, docs, test, integration or e2e from GitHub Linguist's rules, diffr's test-path rules and git attributes." [options.hide] type = "array" diff --git a/plugins/classify/plugin.wasm b/plugins/classify/plugin.wasm index 91a8d2db0cea77afe8a6e49b2741d9accabf3b15..b1543a204ef14da08f2ef255e21bdd38265135a3 100644 GIT binary patch delta 244994 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 = LazyLock::new(|| { }); /// Directory names, anywhere in the path, that hold tests. -const TEST_DIRS: &[&str] = &["tests", "test", "__tests__", "spec"]; +const TEST_DIRS: &[&str] = &[ + "tests", + "test", + "__tests__", + "spec", + "e2e", + "cypress", + "playwright", +]; fn is_test(path: &str) -> bool { let mut parts = path.split('/').filter(|part| !part.is_empty()); @@ -69,6 +79,49 @@ fn is_test(path: &str) -> bool { || name.contains(".test.") || name.contains(".spec.") || name.contains(".integration.") + || name.contains(".e2e.") +} + +/// `integration` or `e2e` for a test file whose path says which. +fn kind_by_path(path: &str) -> Option<&'static str> { + let segments: Vec<&str> = path.split('/').filter(|part| !part.is_empty()).collect(); + let parts = || { + segments + .iter() + .flat_map(|segment| segment.split(['.', '_', '-'])) + }; + if parts().any(|part| part == "e2e") + || segments + .iter() + .any(|segment| ["cypress", "playwright"].contains(segment)) + { + return Some(E2E); + } + if parts().any(|part| part == "integration") { + return Some(INTEGRATION); + } + let crate_tests = path.ends_with(".rs") + && segments[..segments.len().saturating_sub(1)] + .iter() + .take_while(|segment| **segment != "src") + .any(|segment| *segment == "tests"); + crate_tests.then_some(INTEGRATION) +} + +/// `integration` or `e2e` for a test file whose first lines say which. +fn kind_by_content(text: &str) -> Option<&'static str> { + if text.contains("@playwright/test") { + return Some(E2E); + } + text.lines() + .map(str::trim) + .filter(|line| line.starts_with("//go:build") || line.starts_with("pytestmark")) + .flat_map(|line| line.split(|c: char| !c.is_ascii_alphanumeric())) + .find_map(|word| match word { + "e2e" => Some(E2E), + "integration" => Some(INTEGRATION), + _ => None, + }) } /// Every bundled rule that looks at the repository-relative path alone. @@ -85,6 +138,7 @@ fn from_path(path: &str) -> BTreeSet<&'static str> { } if is_test(path) { tags.insert(TEST); + tags.extend(kind_by_path(path)); } tags } @@ -317,6 +371,11 @@ impl GuestClassifier for Classify { } } } + if bundled.contains(TEST) && !bundled.contains(INTEGRATION) && !bundled.contains(E2E) { + if let Some((bytes, _)) = prefix(side)? { + bundled.extend(kind_by_content(&String::from_utf8_lossy(&bytes))); + } + } let tags: BTreeSet = attributes.resolve(bundled).into_iter().collect(); Ok(Classification { hidden: self.hidden(&file, &tags), diff --git a/tests/tags.rs b/tests/tags.rs index 1c61d2c78..b0b5fb76c 100644 --- a/tests/tags.rs +++ b/tests/tags.rs @@ -184,12 +184,19 @@ fn bundled_path_rules_tag_vendored_docs_test_and_generated_files() { ("vendored", &["src/vendors.rs", "distribution/a.py"]), ("docs", &["src/docs/mod.rs", "src/readme_parser.rs"]), ("test", &["testing/helpers.rs", "src/testament.py"]), + ( + "integration", + &["src/plugin/tests/a.rs", "tests/integrations_test.py"], + ), ]; let exactly: &[(&str, &[&str])] = &[ ("tests/streaming/check.py", &["test"]), ("src/App.test.tsx", &["test"]), ("src/review/tests.rs", &["test"]), ("tests/snapshots/Cargo.lock", &["generated", "test"]), + ("crates/core/tests/login.rs", &["integration", "test"]), + ("pkg/db/store_integration_test.go", &["integration", "test"]), + ("web/e2e/checkout.spec.ts", &["e2e", "test"]), ( "node_modules/x/package-lock.json", &["generated", "vendored"], @@ -229,6 +236,41 @@ fn bundled_path_rules_tag_vendored_docs_test_and_generated_files() { } } +#[test] +fn test_content_tags_integration_and_end_to_end_files() { + let files: &[(&str, &str, &[&str])] = &[ + ( + "store_test.go", + "//go:build integration\n\npackage store\n", + &["integration", "test"], + ), + ( + "tests/test_api.py", + "import pytest\n\npytestmark = pytest.mark.e2e\n", + &["e2e", "test"], + ), + ( + "src/checkout.spec.ts", + "import { test } from '@playwright/test';\n", + &["e2e", "test"], + ), + ("tests/test_unit.py", "import pytest\n", &["test"]), + ]; + let fixture = Fixture::new(); + for (path, text, _) in files { + fixture.write(path, text); + } + let base = fixture.commit(); + for (path, text, _) in files { + fixture.write(path, &format!("{text}// changed\n")); + } + let head = fixture.commit(); + let records = records(&fixture.run(&base, &head)); + for (path, _, expected) in files { + assert_eq!(tags_of(&records, path), expected.to_vec(), "{path}"); + } +} + /// Git attributes decide a tag outright, whatever the path rules said. #[test] fn linguist_attributes_set_or_clear_their_tags() { From 0c0d1567f7ae89496772ae746a76db901d265c01 Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:58 -0700 Subject: [PATCH 05/13] Keep integration tests open Test-bodies skips files tagged `integration` or `e2e`, and single tests marked with `@pytest.mark.integration` or a leading `testing.Short()` check. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- plugins/shape/test-bodies/plugin.wasm | Bin 205206 -> 207854 bytes plugins/shape/test-bodies/queries/go.scm | 5 +++ plugins/shape/test-bodies/queries/python.scm | 6 ++++ plugins/shape/test-bodies/rust/src/lib.rs | 18 ++++++++-- src/plugin/tests/test_bodies.rs | 35 +++++++++++++++++++ 5 files changed, 62 insertions(+), 2 deletions(-) diff --git a/plugins/shape/test-bodies/plugin.wasm b/plugins/shape/test-bodies/plugin.wasm index 9325264706ead7c8ed75a7d0d2a472780df0ebcb..b0b9a07cc60f7da688b260378fe8efb9a593e6ec 100644 GIT binary patch delta 22369 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 N@*3Br#>>Om{{#J_Vx|B9 delta 20241 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 Result { if phase == Visit::Pre { + if cursor + .file() + .tags + .iter() + .any(|tag| FILE_INTEGRATION.contains(&tag.as_str())) + { + return Ok(false); + } let data = cursor.get(cursor.id())?.data; if !matches!(data.kind, Kind::Fold) || ((data.range.end.line - data.range.start.line) as usize) < self.options.min_lines + || data.tags.iter().any(|tag| tag == INTEGRATION) { return Ok(true); } diff --git a/src/plugin/tests/test_bodies.rs b/src/plugin/tests/test_bodies.rs index 5c049be4e..39f9c55dd 100644 --- a/src/plugin/tests/test_bodies.rs +++ b/src/plugin/tests/test_bodies.rs @@ -111,3 +111,38 @@ fn javascript_test_callbacks_collapse() { assert_eq!(collapsed, [1], "{path}"); } } + +/// Whether each test body starts collapsed. +fn collapsed_tests(sides: &Pairing) -> Vec { + let mut collapsed = Vec::new(); + walk(rhs(sides).root.children(), &mut |region| { + if has_tag(region, TEST) { + collapsed.push(region.visibility.collapsed); + } + }); + collapsed +} + +#[test] +fn integration_and_end_to_end_tests_stay_open() { + let after = "#[test]\nfn t() {\n a();\n b();\n c();\n}\n"; + let (mut file, mut sides) = project("tests/a.rs", "", after); + file.tags = vec!["integration".to_owned(), "test".to_owned()]; + run("test-bodies", json!({"min_lines": 3}), &file, &mut sides); + assert_eq!(collapsed_tests(&sides), [false]); + // A marked test stays open beside a unit test that collapses. + for (path, after) in [ + ( + "test_a.py", + "@pytest.mark.integration\ndef test_slow():\n a()\n b()\n c()\n\ndef test_fast():\n a()\n b()\n c()\n", + ), + ( + "a_test.go", + "package a\n\nfunc TestSlow(t *testing.T) {\n\tif testing.Short() {\n\t\tt.Skip()\n\t}\n\ta()\n\tb()\n}\n\nfunc TestFast(t *testing.T) {\n\ta()\n\tb()\n\tc()\n}\n", + ), + ] { + let (file, mut sides) = project(path, "", after); + run("test-bodies", json!({"min_lines": 3}), &file, &mut sides); + assert_eq!(collapsed_tests(&sides), [false, true], "{path}"); + } +} From b1674badc317730850080452b2ff3c39afd88c5e Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:58 -0700 Subject: [PATCH 06/13] Show test files by default Test-bodies now decides which tests collapse, so classify no longer hides test files. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- crates/diffr-core/src/plugin/config.rs | 2 +- plugins/classify/plugin.toml | 2 +- tests/tags.rs | 7 ++----- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/crates/diffr-core/src/plugin/config.rs b/crates/diffr-core/src/plugin/config.rs index 9fab93734..7fc7defea 100644 --- a/crates/diffr-core/src/plugin/config.rs +++ b/crates/diffr-core/src/plugin/config.rs @@ -1084,7 +1084,7 @@ mod tests { assert_eq!(classifier["hide_deleted"], false); assert_eq!( classifier["hide"], - serde_json::json!(["generated", "vendored", "test"]) + serde_json::json!(["generated", "vendored"]) ); let summarize = &config.plugins.entries["bundled.summarize"]; assert_eq!( diff --git a/plugins/classify/plugin.toml b/plugins/classify/plugin.toml index 53369a749..cd3727d14 100644 --- a/plugins/classify/plugin.toml +++ b/plugins/classify/plugin.toml @@ -7,7 +7,7 @@ type = "array" items = { type = "string" } title = "Tags that hide a file" description = "A file carrying any of these tags starts hidden: it is diffed by line, no shape plugin runs on it, and it is shown collapsed. The first listed tag a file carries names the reason." -default = ["generated", "vendored", "test"] +default = ["generated", "vendored"] [options.hide_deleted] type = "boolean" diff --git a/tests/tags.rs b/tests/tags.rs index b0b5fb76c..362ffb51c 100644 --- a/tests/tags.rs +++ b/tests/tags.rs @@ -376,7 +376,7 @@ fn visibility_of<'a>(records: &'a [Value], path: &str) -> Option<&'a Value> { .and_then(|root| root.get("visibility")) } -/// By default the classifier hides generated, vendored and test files, and +/// By default the classifier hides generated and vendored files, and /// deleted ones: each is diffed by line and shown behind its reason. #[test] fn hidden_files_are_diffed_by_line_and_shown_behind_their_reason() { @@ -399,10 +399,7 @@ fn hidden_files_are_diffed_by_line_and_shown_behind_their_reason() { hidden("Vendored file · hidden by default") ); assert_eq!(fallback_of(&defaults, "vendor/lib/a.rs"), Some("hidden")); - assert_eq!( - visibility_of(&defaults, "tests/a.rs").cloned(), - hidden("Test file · hidden by default") - ); + assert_eq!(visibility_of(&defaults, "tests/a.rs"), None); assert_eq!( visibility_of(&defaults, "src/gone.rs").cloned(), hidden("Deleted file · hidden by default") From 53b56bce8a950912e649ff4d37e908d5dee70be9 Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 01:41:59 -0700 Subject: [PATCH 07/13] Tint collapsed folds that hide changes A collapsed paired fold that hides a change takes the theme's `diff.delta` tint, and its row counts the changed lines. AI-assisted implementation with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b --- tui/packages/hunk/src/diffr/regions.test.ts | 12 +++++++-- tui/packages/hunk/src/diffr/regions.ts | 2 +- tui/packages/hunk/src/diffr/rows.ts | 29 ++++++++++++++++----- tui/packages/hunk/src/diffr/theme.ts | 6 ++++- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/tui/packages/hunk/src/diffr/regions.test.ts b/tui/packages/hunk/src/diffr/regions.test.ts index 4b1222772..623049802 100644 --- a/tui/packages/hunk/src/diffr/regions.test.ts +++ b/tui/packages/hunk/src/diffr/regions.test.ts @@ -98,8 +98,9 @@ test("rows carry fold headers on both layouts and drop hidden lines", () => { const file = createFoldedDiffFile(); const split = rowsForFile(file, 0, "split", dark, new Set([11])).filter((r) => r.right); expect(split.map((r) => r.right!.lineNumber)).toEqual([1, 2, undefined, 5, 6, 7, 8]); - expect(split[2].right!.fold).toEqual({ id: 11, label: "Body", collapsed: true, tint: "neutral" }); - expect(split[2].left!.fold).toEqual({ id: 11, label: "Body", collapsed: true, tint: "neutral" }); + // The body hides the right side's changed line, so both sides take the modification tint. + expect(split[2].right!.fold).toEqual({ id: 11, label: "Body", collapsed: true, tint: "modified" }); + expect(split[2].left!.fold).toEqual({ id: 11, label: "Body", collapsed: true, tint: "modified" }); // The open outer fold marks the first line it covers, so it can be collapsed from there. expect(split[1].right!.fold).toEqual({ id: 10, label: "Body", collapsed: false, tint: "neutral" }); const unified = rowsForFile(file, 0, "unified", dark, new Set([10])).filter((r) => r.cell); @@ -248,6 +249,13 @@ test("a collapsed fold takes its side's change tint when one-sided and stays neu const both = paired.find((r) => r.left?.fold && r.right?.fold)!; expect([both.left!.fold!.tint, both.right!.fold!.tint]).toEqual(["neutral", "neutral"]); expect(foldBackground(dark, "neutral")).toBe(dark.foldBackground); + // Modified: the same pair hiding a changed line takes the modification tint and counts it. + const changedBody = (id: number) => ({ ...body(id, "Body"), children: [leaf(107, 1, 2, [line(1, 4, 5)])] }); + const modified = rowsFor([changedBody(7)], [{ ...changedBody(8), fold_state_id: 7 }]); + const changedRow = modified.find((r) => r.left?.fold && r.right?.fold)!; + expect([changedRow.left!.fold!.tint, changedRow.right!.fold!.tint]).toEqual(["modified", "modified"]); + expect(changedRow.right!.spans.map((s) => s.text).join("")).toContain("⋯ Body · 1 line changed"); + expect(foldBackground(dark, "modified")).toBe(dark.modification); // A fold state shared only on its own side does not pair a fold. const linked = rowsFor([{ ...body(7, "Body"), children: [{ ...leaf(107, 1, 2), fold_state_id: 7 }] }], [body(8, "Body")]); expect(linked.find((r) => r.left?.fold)!.left!.fold!.tint).toBe("removed"); diff --git a/tui/packages/hunk/src/diffr/regions.ts b/tui/packages/hunk/src/diffr/regions.ts index 1c39f238f..8e541c675 100644 --- a/tui/packages/hunk/src/diffr/regions.ts +++ b/tui/packages/hunk/src/diffr/regions.ts @@ -41,7 +41,7 @@ export interface Fold { parentColumn: number; } /** The change tint of a fold: a one-sided region takes its side's change colour, a paired one stays neutral. */ -export type FoldTint = "inserted" | "removed" | "neutral"; +export type FoldTint = "inserted" | "removed" | "modified" | "neutral"; export interface RowFold { /** The fold-state id: what toggling this header toggles. */ id: number; diff --git a/tui/packages/hunk/src/diffr/rows.ts b/tui/packages/hunk/src/diffr/rows.ts index e35eab5e7..a32a5a1af 100644 --- a/tui/packages/hunk/src/diffr/rows.ts +++ b/tui/packages/hunk/src/diffr/rows.ts @@ -133,6 +133,24 @@ export function rowsForFile( return lines; }); const tintOf = (region: Leaf | Fold) => foldTint(region.id, region.side, paired[region.side]); + const alignments = leaves.map(side => new Set(side.map(leaf => leaf.alignmentId))); + const isChanged = (leaf: Leaf, line: number) => + leaf.changed.has(line) || !alignments[leaf.side ? 0 : 1].has(leaf.alignmentId); + // A paired leaf is changed when its counterpart has change spans. + const spanned = new Set(leaves.flat().filter(leaf => leaf.changed.size).map(leaf => leaf.alignmentId)); + // A collapsed paired region that hides a change is modified, and counts its side's changed lines. + const collapsedTint = (region: Leaf | Fold): { tint: FoldTint; note: string } => { + const tint = tintOf(region); + if (tint !== "neutral") return { tint, note: "" }; + const last = "lastHidden" in region ? region.lastHidden : region.endLine - 1; + const inside = leaves[region.side].filter(leaf => leaf.endLine > region.startLine && leaf.startLine <= last); + let count = 0; + for (const leaf of inside) + for (let line = Math.max(leaf.startLine, region.startLine); line <= Math.min(leaf.endLine - 1, last); line++) + if (isChanged(leaf, line)) count++; + if (!count && !inside.some(leaf => spanned.has(leaf.alignmentId))) return { tint, note: "" }; + return { tint: "modified", note: count ? ` · ${count} line${count === 1 ? "" : "s"} changed` : "" }; + }; const placeholder = (text: string, tint: FoldTint): RenderSpan => ({ text, fg: theme.foldPlaceholder, bg: foldBackground(theme, tint) }); const caches = [new Map(), new Map()]; @@ -145,7 +163,6 @@ export function rowsForFile( } return spans; }; - const alignments = leaves.map(side => new Set(side.map(leaf => leaf.alignmentId))); const cell = (leaf: Leaf | null, line: number | null, side: Side): SplitLineCell => { if (line === null || leaf === null) return empty; let spans = spansOf(side, line, leaf); @@ -156,13 +173,13 @@ export function rowsForFile( const closer = texts[side][end.line]!; const suffix = lineSpans(closer, syntax[side].get(end.line) ?? [], [], side ? "right" : "left", theme); const label = folded.label.replace(/\n/g, " · "); - const tint = tintOf(folded); + const { tint, note } = collapsedTint(folded); spans = [...sliceSpansWindow(spans, 0, byteColumn(texts[side][line]!, start.column)).spans, - placeholder(` ⋯${label ? " " + label : ""} `, tint), + placeholder(` ⋯${label ? " " + label : ""}${note} `, tint), ...sliceSpansWindow(suffix, byteColumn(closer, end.column), Infinity).spans]; fold = { id: folded.foldStateId, label: folded.label, collapsed: true, tint }; } - const changed = leaf.changed.has(line) || !alignments[side ? 0 : 1].has(leaf.alignmentId); + const changed = isChanged(leaf, line); return { kind: changed ? (side ? "addition" : "deletion") : "context", sign: changed ? (side ? "+" : "-") : " ", @@ -181,12 +198,12 @@ export function rowsForFile( // fold or a leaf the context plugin cut out. It starts at its parent's indent; a multi-line // label (pseudocode) hangs under it at that indent, one row per line. const band = (region: Leaf | Fold) => { - const tint = tintOf(region); + const { tint, note } = collapsedTint(region); const lead = (text: string) => withGuides([{ text: " ".repeat(region.parentColumn) }, placeholder(text, tint)], guides[region.side].get(region.startLine) ?? [], theme); const multiline = region.label.includes("\n"); const header = { kind: "context" as const, sign: " ", band: tint, - spans: lead(`⋯${region.label && !multiline ? " " + region.label : ""}`), + spans: lead(`⋯${region.label && !multiline ? " " + region.label : ""}${note}`), fold: { id: region.foldStateId, label: region.label, collapsed: true, tint } }; const labels = multiline ? region.label.split("\n").map(text => ({ ...header, foldLabel: true, spans: lead(text), fold: undefined })) diff --git a/tui/packages/hunk/src/diffr/theme.ts b/tui/packages/hunk/src/diffr/theme.ts index 58f2a3f72..41cc5365a 100644 --- a/tui/packages/hunk/src/diffr/theme.ts +++ b/tui/packages/hunk/src/diffr/theme.ts @@ -28,6 +28,7 @@ export interface Palette { highlight: string; addition: string; deletion: string; + modification: string; addWord: string; deleteWord: string; addedText: string; @@ -121,6 +122,7 @@ export function paletteFromHelix(theme: HelixTheme): Palette { const muted = scopeFg(theme, "ui.linenr") ?? scopeFg(theme, "comment") ?? mix(fg, bg, 0.4); const plus = scopeFg(theme, "diff.plus") ?? (isLight ? "#1a7f37" : "#7ee787"); const minus = scopeFg(theme, "diff.minus") ?? (isLight ? "#cf222e" : "#ffa198"); + const delta = scopeFg(theme, "diff.delta") ?? (isLight ? "#9a6700" : "#e3b341"); const selection = scopeBg(theme, "ui.selection") ?? mix(bg, fg, 0.15); return { name: theme.name, @@ -132,6 +134,7 @@ export function paletteFromHelix(theme: HelixTheme): Palette { highlight: selection, addition: mix(bg, plus, 0.12), deletion: mix(bg, minus, 0.12), + modification: mix(bg, delta, 0.12), addWord: mix(bg, plus, 0.28), deleteWord: mix(bg, minus, 0.28), addedText: plus, @@ -181,5 +184,6 @@ export function themeConfig(show: unknown): { name: string; path: string | null /** Paired folds are neutral; only one-sided folds carry a change tint. */ export function foldBackground(theme: Palette, tint: FoldTint) { - return tint === "inserted" ? theme.addition : tint === "removed" ? theme.deletion : theme.foldBackground; + return tint === "inserted" ? theme.addition : tint === "removed" ? theme.deletion + : tint === "modified" ? theme.modification : theme.foldBackground; } From 7e2e6a8136e1ea9d053648bd9ff09e261c5bae1e Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 11:36:59 -0700 Subject: [PATCH 08/13] Rework the summarize prompt Pick a shape per body (steps, call tree, component tree, test phases), with a fenced example for each. Tests compare against the manifest's default prompt instead of its first words. AI-assisted with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 --- crates/diffr-core/src/config/store.rs | 10 ++-- crates/diffr-core/src/plugin/config.rs | 33 ----------- plugins/shape/summarize/plugin.toml | 79 +++++++++++++++++--------- 3 files changed, 57 insertions(+), 65 deletions(-) diff --git a/crates/diffr-core/src/config/store.rs b/crates/diffr-core/src/config/store.rs index 9961f1866..575beb81d 100644 --- a/crates/diffr-core/src/config/store.rs +++ b/crates/diffr-core/src/config/store.rs @@ -348,10 +348,12 @@ mod tests { shown["plugins"]["bundled"]["deleted-bodies"], serde_json::json!({"enabled": true, "min_lines": 30}) ); - assert!(shown["plugins"]["bundled"]["summarize"]["system_prompt"] - .as_str() - .unwrap() - .starts_with("For each listed fold")); + assert_eq!( + shown["plugins"]["bundled"]["summarize"]["system_prompt"], + crate::plugin::builtin::manifest("summarize") + .unwrap() + .options["system_prompt"]["default"] + ); let text = toml::to_string_pretty(&redacted(&config, false)).unwrap(); assert!(text.contains("[plugins.bundled.summarize]"), "{text}"); assert!(text.contains("system_prompt = "), "{text}"); diff --git a/crates/diffr-core/src/plugin/config.rs b/crates/diffr-core/src/plugin/config.rs index 7fc7defea..a3fb21ec3 100644 --- a/crates/diffr-core/src/plugin/config.rs +++ b/crates/diffr-core/src/plugin/config.rs @@ -762,39 +762,6 @@ impl PluginsConfig { mod tests { use crate::config::Config; - #[test] - fn the_prompt_description_links_to_its_default_in_the_source() { - let source = include_str!("../../../../plugins/shape/summarize/plugin.toml"); - let lines: Vec<&str> = source.lines().collect(); - let table = lines - .iter() - .position(|line| *line == "[options.system_prompt]") - .unwrap(); - let start = table - + lines[table..] - .iter() - .position(|line| line.starts_with("default = \"\"\"")) - .unwrap(); - let end = start - + lines[start..] - .iter() - .position(|line| line.ends_with("\"\"\"")) - .unwrap(); - let manifest = super::builtin::manifest("summarize").unwrap(); - let description = manifest.options["system_prompt"]["description"] - .as_str() - .unwrap(); - let link = format!( - "https://github.com/devdotfast/diffr/blob/main/plugins/shape/summarize/plugin.toml#L{}-L{}", - start + 1, - end + 1 - ); - assert!( - description.contains(&link), - "{description}\nexpected {link}" - ); - } - #[test] fn defaults_can_follow_another_option() { let summarize = |toml: &str| { diff --git a/plugins/shape/summarize/plugin.toml b/plugins/shape/summarize/plugin.toml index d75fb2f23..6f7d99d67 100644 --- a/plugins/shape/summarize/plugin.toml +++ b/plugins/shape/summarize/plugin.toml @@ -62,41 +62,64 @@ default = 3 [options.system_prompt] type = "string" title = "System prompt" -description = "The system instruction sent with every request; diffr builds each request's message from one body's numbered lines and its documentation. Unset uses the default: https://github.com/devdotfast/diffr/blob/main/plugins/shape/summarize/plugin.toml#L67-L103" -# TODO: workshop this prompt; the draft text from #73 is a placeholder. +description = "The system instruction sent with every request; diffr builds each request's message from one body's numbered lines and its documentation." default = """\ -For each listed fold, rewrite that function or test body as pseudocode a reviewer can \ -read instead of the code. First decide what the body mostly does, then use its shape. +For each block of code, rewrite it as pseudocode a reviewer can \ +read instead of the code. First decide what the code does. If uncertain, \ +pick the option with the shortest output / explanation. -Logic or an algorithm (branches, loops, computation): plain-word steps, nested two \ -spaces per level: - if content is unchanged - return cached result - write new content - return fresh result +Examples below are delimited with code fences, you should not add those to your output. + +A pure algorithm: plain-word steps, nested two spaces per level, for example: +```pseudo +if content is unchanged + return cached result +write new content +return fresh result +``` Control flow (mostly calls to other functions, in order): a call tree of the callees, \ -each call's own calls indented under it: - createSession - persistPrompt - launchAgent - navigateToSession +each call's own calls indented under it, for example: +```pseudo +createSession + persistPrompt + launchAgent +navigateToSession +``` + +You can also create notional functions to make the pseudocode read easier in control-flow; +just add a note that you've done so, e.g.: \ +```pseudo +loadSettings +reconcileSessions # summarization; not literal code + resumeRunningSessions + dropExpiredSessions +saveSettings +``` UI (renders components or markup): a component tree, with the hooks and state that \ matter under their component, and a component's module in parentheses when it comes \ -from elsewhere: - - useSessionEvents() - (packages/ui) - -A test: the setup, the action under test, then what it asserts. - -If uncertain, pick the option with the shortest output / explanation. You do not need to be 1:1 \ -with the underlying code in any of this pseudocode. You can use notional function names, etc. \ -as long as it helps the reader get a quick understanding of what the underlying code is doing. - -Pseudocode is best read when it's short and sweet - you are not trying to write an algorithms textbook, \ -just a quick summary that the user can expand to the underlying code. Strive to compress the code. +from elsewhere, for example: +```pseudo + + useSessionEvents() + (packages/ui) +``` + +Break a test into setup, action being tested, and assertion phases; summarize setup with the \ +methods above, e.g. control-flow psuedocode. For example: +```pseudo +Setup: + createSession + persistPrompt + stopAgent(session) +Action: + resumed := resumeSession(session.id) +Assertions: + assertEq(resumed.id, session.id) + assertEq(resumed.prompt, session.prompt) + assert agent is running +``` When a fold lists a doc, also set "summary" to one sentence copied verbatim from that \ doc; otherwise leave it empty. Answer with a JSON object whose "summaries" array holds \ From 20ebf564dd76a8dd4066b37a06dd01962286bc95 Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 11:36:59 -0700 Subject: [PATCH 09/13] Summarize in plain text and head with the docstring The model replies with only the pseudocode: one body per request left the JSON schema with nothing to do. The docstring's first line heads the label, and a summary must have at most half the body's non-whitespace characters. Drop the tests for plumbing a reader never sees. AI-assisted with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 --- plugins/shape/summarize/plugin.toml | 6 +- plugins/shape/summarize/plugin.wasm | Bin 652399 -> 608550 bytes plugins/shape/summarize/rust/src/lib.rs | 181 ++----- plugins/shape/summarize/rust/src/provider.rs | 51 -- src/plugin/tests/mod.rs | 18 - src/plugin/tests/summarize.rs | 497 ++----------------- 6 files changed, 73 insertions(+), 680 deletions(-) diff --git a/plugins/shape/summarize/plugin.toml b/plugins/shape/summarize/plugin.toml index 6f7d99d67..cbbc468b5 100644 --- a/plugins/shape/summarize/plugin.toml +++ b/plugins/shape/summarize/plugin.toml @@ -62,7 +62,7 @@ default = 3 [options.system_prompt] type = "string" title = "System prompt" -description = "The system instruction sent with every request; diffr builds each request's message from one body's numbered lines and its documentation." +description = "The system instruction sent with every request; diffr builds each request's message from one body's numbered lines." default = """\ For each block of code, rewrite it as pseudocode a reviewer can \ read instead of the code. First decide what the code does. If uncertain, \ @@ -121,9 +121,7 @@ Assertions: assert agent is running ``` -When a fold lists a doc, also set "summary" to one sentence copied verbatim from that \ -doc; otherwise leave it empty. Answer with a JSON object whose "summaries" array holds \ -one {"id", "summary", "pseudocode"} object per fold.""" +Reply with only psuedocode in the format above (code within the 'pseudo' blocks), nothing else.""" [options.tests] type = "boolean" diff --git a/plugins/shape/summarize/plugin.wasm b/plugins/shape/summarize/plugin.wasm index bdf04f79a81588c6524703e794d5b92dcc4ba178..ad41e5c9253d44dbd559497cf5a61e140afdf8b0 100644 GIT binary patch delta 106608 zcmdpf31C&l)&HHj%S-aIypWKE1i0^oB~c={B^D96xS=4T)wW{?Q7QCRI^ycz z4ZGp$!KRVLhTg)4X2-5hFJ$R;W7B&xmKl3KV<2lAOAX!HzKxOB@4^cQm5v%R@}?m- zjxN1!$kl^~j4GuvSWfJrP^S)UjQkc5qeoqRJ@8T>*|EQePBj5?cV>=Fd9q`DGTWi- zUuJe@ZDQjx+au<|%-7oGT81OhyU}Epk)#W`(KPa7x3%fW@?*2xOvZ0f*75kgIO{iA zd29$fj$O~$&=c78j8zycukQ7%t){tqZBgCg+;8kyUWc)<5$!w1c6P{>;T!Fbi7n{h z#@^_db9aY4F|IK=Tvya_WvV$na96D9=;xy;4F62jpPOgp;a_gDW!gr6zHM$DYsbiamJj>AcnyrGHO8ksI^G+IdOcEMvY| zBwnAFl-G6e=o?1;YQ(UcesleB<54s9+N-a*{>o89t{yh*hHH&kPVyR?86FGnirsnK zsOZDyAI!OCjeWm4$9$VVU_NL*WWL3h@XyV6osZcBR_8qK+-E<{|HA9}YQBnpW3J>o z*j@I$W}W$WzKz$L+xa5%6aKWhnQ!IKn2mf3|A;?pe#|%V{rpot-mEgmnG?*f_-A~g z`J(j=pKRV?PBN>_5BM^3Y1C{mzvTz`tL8!eAwR@7@=EhF^M3n}<|F2d=40k6^EGp& zx!PP~t}xe`Z@_b9P{# z`LH#|nrHpddfIx%ddjM^9<}CMi>yCck6TY#3#_Hq6IO#2eau>Dt+4)T)myJxk63f9 z#nvCJXRW_jORPUzuUPx6FRibwO8bB{-X3S~wAV!RCp(jz=}x8dt$n~gXfLO6>kDRT}-<=PgEzSn#Z_WqK`_3k3qqEuh z#M$e7>NGi@JD)jUI7^&woT|Wtz>GjFaChLIz@33R0yTljfx80J1GRyvfw_TK11kfo z0;>bB1=a*o-mb~JE5MClp27RLMlmup7?IzM-&%k zsVoR+GYuSy7anxY(8kHJ%ChVDmdUXlWt}Jpl@H|`C)eFxeyo`*ivq0esm!kJvd~A9 zV=wpY-}C-84V6ZPSK=C>b>mRF5d;DZZy!vQZ=D&779pY1h!|dt0xoh5uX0=6IVVRL z>JZ^9o*$dstK&(v+m@j$&#ORFkZVY#=I~ZB!1Sxxij{p_ZHtiS&S&QOEP4uQmvrN(SEe% zstPY>I}s?2yG}7r4JUz4k~AWvuYFqV;?rjFgLlL}Ic)&1SsOd`^auH@wc^;P?EKhQ zr=Jj9;iChPlg_xqtlhp$-14E_KG|@&x8A4-O^oe0;~0MLS`j{)6~s7 ztV=skkbikm?EOn;hiWFvJf;^S+RSZ?O}gwhzVRcG={bd>vd9VXm6Kw}{<4p`deTyn z*^M1d?+^X*W>rQR1?OM>aOm-bVz{@cF=qbimrCZq`wC~*6rY^uWEVX6x+KogigOKb zy+jo_&-plZ|F3?*mp8_~_*F3#-0_MFsk?8w;v6t=Z0Qx3Q_%6sYZVb7bVz*dhDhv* zE7O`wwMZUJzf_Y-edo#*lylBiB~;w1t13^B7|8-ED~&{Mi6bYAVSX`;iiuv`4aJD1 zJ?*^Mh-(6|)mK+gu_s+~B?b3hb7T5)*_1MFxDMgg?%E=1&8gS^mg;@t+T5fTl;|I? zOv-QzO32=ONAX2mU;IP(#>QB;!Ix7dQwA6Q8!Jg0aw|1x@{r$Buy4pcXn5V!U-u$5 zjjj64N9M}c8^oZ2W`5o3>n>yetZJ$Iy5c5T;>cljK}|6m^sMXt+Y;9OZN)yBV3>s; zCo*}QObHMTAIBySKhrOSI5D<$O!z@TTUQ=n{GM8cTA4meCyBof(fxzx4xV{l^&ekM^0Bc^&+Z1eB(_^e&AZ+`a~pT8^C^glEC;$5-o+fLytcGdm$wmpo` z-4Uz5eJxc`J$5MG>b@AeD#+LGi7lIQZeo4=cgy3d|%7tJ`$(lO&DmSqI9 zSHirYV#*0i2~#|7yTq~pF>`mw{(e#`dczHQ#YK3jG>{bAd}nTZ4Y4#1!CFC3D~_qj z_W`x$^$a(X2>4J<+v59Fz3q-vZ>Jvv+`8nn7A4<3HJ@-ojVEB3@5t$l$Q>H6vY`D;zFXQ!V* z!NKYM)8b5Gdy9!}vNCLMfnuDFuI;Vx5hudD1pZ&Yt2IA1s+a_R+^=Jr`LR)PaRNWCS25F-AeR!)>KK)aVrK1*t(x75 z&)5h}KmAcnP%>h>(T4gLE?-Ov}1cK1f4mGSxe zV(-29C7=G0d|SUSma_CqzKGts#7dS83VtfN4wAHYTdZo?FZk!%VjGs7&-ZPMb$_V` zU$i53^-HHwy>{Z-kAvtF%akHqpqiiQ6JTnyas}Px-E9)nqK_Sw%Gk^BxTmFxrj*8 zW$l3gKe#>C>D_(^>W05t#skl)8e-x1+Qu5*%jSEwiSDcH{JOpGJ#6yTJ7Td9=2LLW zhqtgdW6ylpgCE#YxBbIko4jUc?7S_x1sl|Wq*beHyO!3@yLQCJZMmReSIhL&c>0DN zb$hm4Zu0wf#s+LVhs}+>x2<#R_HAjgSGQ%b&3Nn0*4E{1AHevsm9bwp&IVwe`SHb! z&sY_^e8=Sgd2Yv*eB$0%yPef36ZaCGP`fQ246%-}RXaOT(kDA_XB+Bn*wvGn8$W7@ zh4*wP)BS_p9$!5v=I-gC-U?&G_p~)Xt6D00FM?hB;yX@k?w()h9B!=r-k=Y6=H5;! zXE-tT*}d)f+C8y1_FhQSrsAfVe8U~FhNc62ZByL~pPX*CU;C--#p9c2#07d9>otB_ z*YS%}7@yx1yJDZqS2V>c_eJ>Prr6wl(_v@Sm4A5}qj1cASeVc*N0eD7fsF`)7$NZW zaK_)75WD4@FyAmC_WN%lym3P81q25s#I_)qTNQH-9Hq;op#On0Kr>Q;BquR5padJ5t#>Nq*y~ zZ3SXqD)4AEzZ6Tavpb3>Ggz8a}kC^n_D-2CcE($MS@T1l2+hV~A4PfQY_40f)@r@bgW)oBBE z7v8B(2defOYDAlm>?koK#HioI$02qh-!Ms>n#ppLHmiay5zb(}ARZ!gszaR}FCxAE zt4uhRc=adsfoul0ob^flEp6Fg2Bls9K@RIlGaZqi$9~Q36_t5FX3OOIwRvoujK83r zjDN13icczFJ5%_!@#2fl>?D5Z4$-{}yOwWyS}tNIN%SaTzkn7N)g`PPZ52yP*jdoS z!ZodYQFIi$Nk?`TFCGOP{S@bDmJc0HZlQ~L<#zHYwG$)0vO;3+(G2tL@AXWSiub#* zwuH&2-M~XzCeJ*E6^cHkERd(>lFBpKNqYv1F((vPma_JgV=Ths6QO!&s1pDM(gcGe znHg0DB)S&Gno_^2qErp}5>|bpqR%lbCkpd6FtOLq;Zr znJPLp!l_<{Tw&Af!}TBJaZE+2VWitwD`N0+k~hvT)RdhDn-ZDusLE9yyQ3Bm5TMb; zVH19^Xhnplp)nd0)a0WfQoFN#x$`Fy8<^g5a1oVDKUQdl$nU|98KG)hE@uN<=dF}^t0?dBC$UQQtXOmso8z{sA&H7e4b70=c34&C$ke;r_Pe8_fduCp3IJJojhMAFQDYN?>rf^Mks|g)CknHQ?e?*k4+A&LxD;SyzNvrn25F+Koq9;Ih-T=5%2&2U(kpBo}+X3^kG*K z6MMwO^+P-sV(|)Qs7{u2B+;ztD;1D8Xu*~~Dmm_8E zc#=;RdVjn)bQ%`j)`$tGv)^J2`s8#roy`&x&R}_ql^@gN1W z#oK4GzU)4c*AL_7{o?2SSf3+cF}EK(3UpiBkF`yfvVx_Hka%(uhJoa>*;-a7-aDIh zVX>L#uq(RHm4l_16q+hA2&6{HUlBbst*ytxMcRy5pnyW5sbcCmtf0#h^=`*AxnMQW zxueIAd1rw0ns(_kXR1kFA_hsj&nJyvKeE>U`Js@r$fbzeMmnYsHz#=IV ztEHKghWY@sI~s526h$1=l9Zb2TTk(p>D1I@KPBEqKPAaeiMPm43HT|y6fSK-eu^FR z?Y%gfev;*9iX-f&n2D5#cbiTn^znajYJMVAykegNz^JP02Z3?DID`0Av?aCDk!GN` z_lF`&^GC4GI*Pe^P{Zg;H3nTd*kzFJ>2)4!m-PUNUL=6Liq(@sv&8l1vD2~-Pgp!b zG@QqJ9yuj_5G#up=F3e|NQjFEv2O8%#9AQRS>n+_thnH?s@x>?7m^wvNAUBR7cV0z zj_Dfli}Trl=#j;@Luy9QOZpxe?~s}v^a9@l)Q*7kQds10ZE;?WRu_QMrv4G26i|SW ziiVRtfARG2;%dZ*3s`wHZun(UPmZC^EuxXb?_qR%ME3F7Zqi6f@QoKFq*B7zv)y8u zKz)rqCPslSIm_)zvGhW@+B7Ey={+-?L_?q}y8N7lXmB{`=d42qRRAF#beYRajXaN4 z^fdBZ2TJ?F`q4jUN9)BvH;Xvy(F@hc^3H{q zQ2s0`LJc%k7qj(w%1FS#<#m!~99D3Pc_EM+eF=LMYP-XwEC&X~iI=j|4ucI5Y&KwP zFJ&hkmg<{FV$-E;c|z(5vYukfO9tPP%h+<%GwzqNp0QW3Qx1cT539R>$&NWJ)uob% zocUL>zK5m8v6y=K5%R`c``ncnj`m*8W*=6-e;=Yd*dt=@Rp7#T;^nJYpB&YNrsvA( zK@wT{uu8>4H?X#%$JMNJD}WFIP_IdV%B$I(>`{?=4I9`BE|1`d6C~WkYuIV1_tk4y zA)8mf?HbmLVdO3v%&yegI4uvLC*lO3H5f+8E@i1Cm^W(%!{ab#s&I#}GX6&y=87AJ zun1o;Rm6s{Q?qKmBxA%gL(@pDNM5b~Xb8K&H@8f$NzH`f7!Ldmd$6NV2AxpHuFm6NPgu(l~` z+96SzQ^9`Lr8&1k0b55*&o1MH0eZ%QrV51Si$lnJf-=MGR5Jkv+@oRibW_vOCF+oP z^&83xwJMAEKo3eh0g1N_WpBh8Ax|WEDw^4@x_CrnqVpJ2~k-#TE~Wyx+3p zo8LYh#mX~vS^~?={w*8YTtNEp!~)JAo>)N5aCR(5C%rhF&1DaZ!8fq3t++Z-JbJcD z3sGxGGCsM1%|`aABUt-ZAaRx>p$O3q91=UQh?^Yx{X~&=4GRlrlnzy@tfP(l{C_=xE)Fb zVY{)cN17fr3YINCQvU5V28xF%;c4p@Z(BtsToIQbU(1<$J2pBvtS{2bxu44W37POxB z62GLTrmK13pR3pj zM|7V89;=+hQVKL%q=aFmM#CvEhXQ0zrINY!$RxH9jsL}D7GZ0}?zMLX^JHwtWLA{&f_l%zyE5j|my~&H0I7QrF z%?eJI2x92KEG498x^X1@*$!AN81iQe0a*tkg!rtQm9+8WX^sJ+2Sbu}*`n_qti$1n zv&5)7*cCqM5-7U)4mLoOt^2+GR^O?t*R@mF8I+uJCp%in zUaB3GtrY|BWJk4P16a&Te5TzA4?VIa6q7H4HLP2rcgw3$X7unH*1fHyj~fW5%Kmdx zm123ih84G}BSdwO9&f5)6Zzr^^|wrAI~f@2+Pm0S8kTw4Ep-9py}h`rmbGgI5LXB< z*0QBq-XShCr?cbYkge1Tit>jRU**KLM%Q_49ZFd`os-a|&1YS7DVz|3u*ZkZv*)uL zvy?!C;LV0r{o481?yvQVg*9Lp)bPgT(GTgRU5~O;*dN4Ee`4bg1A;nM+HLutSR{8g zDF!kEEPoI)JtOo7aqv%U=V4hxlodpsxgc)qH&>oSiO{I^gBE~Cbc<|Kw>GIS{7`rF zc>)&ctjF1C__flWh>xv4Tpq!p1@(aAegh5HPfns_(%P3jnPAELsen^0oAV?)QH)>A zjye+UMD9~;UK~9T9GT)d-+GFbW&e@90mQ)QciMXkDVirbJk3V3KZ@F?;rg2|{`jd7C;BWyW#cT*t}}OO4mqV-ef(kFeSN42X5gGi(I=lX&78P<6i0 zH6mpMu({w__PZ>JF0EH+Y%O5>;j?Tk<_5p2XQf9-e?;70&!!%RQyk;Ii&@1HN%!Jn z_JT&1Nq$KfNMp~jXIiDjIsS@2v)s#S67@Y9t)%a1t0zWG7^yA-8f;)KB!x83>pDU- z-hzANAckd=gb~&V-oRMw+bucR@eNfjHhyEbJ(0?^imGYl;_<%jB-ebrs@zO+{YCE2 z#y3>LsJFZ%y}m}=AF9uMp5<^-M-Hkb4e)21OKGra zWJ7VwX`?2R$$Nm;Dmx;b?|7_awzy&%myUxDwLC}MRbV>N16T=@87o_6to946@#Cqu zS#|`gSA?uwAVbW3esXZREz#wD)E}We*1NqToioFd*pwQxxF$fUQL7#=Bd{7j+G}7H zp?j<1v}wfP?131Sx55{M2Kh~C((7fAf@1zTfT#^Dbf=`7YWO-PuKs}M9KC^s89}XQ zVNQ%8% zz!Zexo)zZQrrXoxNe08KMU$RU9Y%S>Xb?~VSIbgdj;j2_5rkY%<95}6VQLK$MPKKo zR)m?^hX@eG0*zdUL3LOX|1tr$JphOKIGl^EA;%$)%!e3Bgw4RjMEVnDF z2Og4RH5!r$2I#m!x=mum3U=GkPZ8baiZ7<-6`?2Pt7HOtU8s7+Ta4!?#PCqGDyx}sjQc~R`p0*Vriq_tHC9p9Ts&9pdDSMj4`T4Qt=;Gi5!O0%El)LhlusJ1jXp z%Ey{fHa0bCjfKh^Ye$Pn>LEPV&VR;W3yoCqkJY1jAD3WS7 zV)xxV<(@U$7ms@~wVbD7yKB6Ra&Eyife#Dy!T3ocf~KPw$n4uTFhJd_DFk&lV1(PM zpEubNyQlGveDj8GwJRbHG!S0Bx9y5>Kq)2p$onW=k5;87Q7zCT@7Q6079&I0p>VaW zCfO+REh-XaHCZHVKJQr-w5LGdV;s>B2{?(A^<4F{uor3_?s~ zXHgg`H)|fb#p4@%{9Oe)(KRm7s0q<{X0K zC1_i@IbT1o!}CJ@ydKYs@$7vLy=HSPGmv!o>k*pND6bfu;MyS}=YD9#avV;hY8#>~ z;>dA<=vZv5U}Z)Xv;aN7jOTImjIOMt5crQt%_W`cP%Y_U+m!t()g(|)RFgrxVpOm( z@55TVqu1IqWWHv>51tW4K`G4w3Q7%t4Il*4!wb<8)j0(f5ok*Z4L+}-#GvZ% z2=O=GTecX8Q?2(=0x2NM00x>vAqp5q`OElqM1LIYVijeOXOI%cPooS^W?PBMz;%<3 z-#{U{eLaPcEto|z9SxKDs4ED51%+tQa*79B15+adalF^Sr7}TREs?T-lgx9`UMb_t zdBh?PSivI>*!P|(OJSE|Q^gKaJ6vkqv?rcshfO)x`&^P;?R~NpoPIO!&^xq2q+1FhD!ouc&l_Y(Sbi_-WH^(=xq zE>yJ;Jr-FQGC7X8BMn258E)@!WXKGn|GkBP?Ev-w+(Lp2TF{mR*915UcbVaio|)Lb z1z$+RK(|kK=z$iErpl?vCXOO)uB&chVb=?wsC1}t0zms43BpnkC1y2;I!%%glzl4_ zSrSc)38xYhqhluFw26nqUNXRfKF#kt5>7Qoid>Qq=^B3i4K2{uZK@e3#$DiKd8-q$ z#B;Qa#KeY{k385Tu&6x;0k&79gl*YUv1vVnva!>H2IHn>I~k$OHf^Y@mdoiAbu9@3 z$reqq;Bufxbg;KbJr+Pxz-nY=^o3+qhRPw$ajSEeL{KT6zH^Z5lq)%uA}56pvuIkt zQu6lPM6hNWil@t!A4!RBF#!)bFd{in!SrHy8zgp- zT`~-XS)S%J2J$BMbpr7Ln=EOh$#ciK^nU7Iw~xpkMg9bL-rfl zqM#n(C+#-q?d9}NdJ3U55hdwD&sC9rfX%WL!zHT3Qv)fMLk#9227W9NhQ1`V5Kd1` zlcr&Jwu42ilNs8HzY?~EMPQO`(r?kfu}DN&g_QUPixkD}MYfVfI>jwXwv0tOOB)kI zS5IR)(G#{%Erp%S+1(U&Drdi^u&A6pOkt#){fWX*IeVHypz&vuM9u$mqjowjae>Q$ z#At>Yfn(T;fSg$Tptg|RJ_b$+&P**CXzOe_6d~F6W~xUrtcbv1aVWXUTcNb=VgudU z`1*vvjexUgBe3_GapR~n(#Wyk0ZM{JtvDQP8(;cfRfAo}(0WbERNzOwvBV73%1*Vx z9T$o{rG3J1>9_4`^lhj*rLTVg4~<%3df4kpwhGpDO3ah`8W$8quwo9n4T;tu5V+@a2 z6bu^*`}EKubELNwQK=pqUD4ezPBt)4@y1rbhQUk%NyCPUGdHr(KpRD(YR5aYV2cIk z9c={$5|)=tySglSLxhh2@<;5J2*4|BHP_|{ZzI;L7jI-4QA~}X?lkH&_epM*6LLEm zvI$W#ydZRz9Hi2rV=bs)NU=2hQb;u2bk`mlaWp~U2X)oN3r4D>OfqKCQti4KB&ppH zSeW({tJh9$h6iKN#aq`hUg&1@B{|;2%6T@Tx|CrNB%^N)qAGbgRtGZNv@-Y)GQ3nd z@^~14-Xc-QBy}A^dS6Z9YO})4$6ub8J**=1lA2ITvl^1WPC0|#GDCAGX(=b0mo}gp zq>I(SChb!_>@_gem{5ae?i3J@tj(|!T191qL!mci7(wMA+9nfZg0RzgC<_YpmX>~z z)KXOy+a~Sdh9=eN@e`G!?CGESyEaM9#0+>XV-f`GB^C3|Ks5O8R>*X`1jTpF_xLe$}a_od~v0Ku&GFmxiLb${Y^>wS~g^zN9 z2g0K{EG@VkOb=*7nav=?JQ}|=SHE$GoN5H)+80_38J3t}ed?iGZ^S5!0UG6`dqzJH z6RFEh8nJ;8OhcHH4mcS0oUDeSHMEp|PwR?4P!(k-R7B*YoZcLhOrD6G+Z*0}@=aP# z3U`bt##y9WVV~Otp_xZ6I_f2sEoBN;WUUForf&0Vi4Qz7Zh@=|6?`Jm1Jpu|OM#S8 zG{0& z!DJUfw=zDMh*-w2LQq_8UV`ALGJc_JYYygvkQt0V00~Ez@zaqY8MzF2+HOg?c@lhn zRyoF2oO~}gixB|1$_6~Ut{v?Qmc+6pC4nqzj_9o>^f5#1$NLn?(Jw;&L1<6}2C<=x z4DBHq)D}V5(vaz}Pe6ZjG*lUs-hJaYa|t&^dz)Yt4S=8D|Kas-XkT2@~9>jjfDF03zW8{b)tw} zV#4^9{!lz7Y2y};V2}pXMXI|+sZfj3nvy!5)9RAGD~0X56qEcgT9 zAVY8+d?E-2hchU+3bKgc@^Gq~HK>?h0{<;uhlP_t6g*r=0*}yNdO@tzajCv1$8)9P zlM9X7(}Mo)M3L~yH}!Dx@@*{i$XBcht1w$9zkZh4_BZ6Ik(w&O*9qfFZRH`ELY=g= zTdS{Rd6ENeH8v7BCwpT@>cKxqD537cmX-LGi_Ooow%6F?3s*=;PZ8jI>38Wb!uEzt zutcSS|0~e~Zw35M7!4qwSlw~J#?q+@`+|-HbQ%U8!I~A#E3@eb%46ooaLh|zZLrxj zn@;UX4}DDx=N{2mBNToE zF*D4bMW*jTF2M+2uH1HH^S~N`<4lTmXjxPXIvoe4;eseYayJK|x4@zrQLm?K1ZVX$ z$U^b;V=aL}KknChk(4ayM@c~Vaj4ygX^(+Sez+2PyP^xfT==oPrz)2+0UT@D)l3}8TeUxp;N9y z5RD|Qlw%(0abh7`GqI}SK!_9TB}FT=a1M^qK0$AwS}6#k7rDDb7tuP7H1H%84wFiq zCiS1D`TNw{WTx;wybo<`pe}|_SXo@uLma0>7}kxTDxkKt4Uv+DnJ5WZ7`Cg8)r?If zcfdd@loX7Uma-~PwlX7?$$$!A$Gim(07(`e*TIl8Q8f|Fh*D(BB^64+q6!jKnp8zv zK#_u_XtK@{R1nHs?XRb&qA&dn#=e+Qbrtiu;5_)T?K zB@LjO2i~P;Fo*725Coc$?67Xlb{I@95-li7k|^vYqX2a1OP&~rDCnpLV`-#G6$Rx7 zvyC3f!k~VHy!L~+7HTA>)0k~Cr49d&nc`pN2_jz$j)=y$;*?@`r1@|~0^w#Q5RP0w z-@!5e48wG-G*AJk@9)x~8orBTB2jYr5xrncNq;C5!C+S|wqAt*ZfgN3Io ze}9X&9?JlbZmMLxze{F=zdeCsFNd__K$7hyLCRoOaOzqbp867+F=Ohc%5*AcHZv35}moQCVdbxR>FMPMT_bR;RoO!(OpngPW0Q2aCBe&;dEw(@1{F}oYM$C&v({EB5mB|WWbb2G0%0tzDF7Fb zSS2^2{^-%5p%)`0R-aEHC^1Ke*e8_&|GF%E7K);=^6n~<94zr;z~E=5VUCozQ>uYv zm}sbXO8J^*1y4{FH>?Jf;J35E9ILT=nXzt-qG2TeCr6vwzs8~5%^_2a)<^Y;I zVG&6#rA{So-O5o2aB9VQ7-+TBU+(KGXxz6krod8*YvilqWFpP+Hp7xOEeT;#VX8?5 z1+-X~1k)Qmuy|~R@1Ht5jVgwxi=1PRo8*eoFQ1v`rg1rAaZYB7V67L$h(hFwS1e8v z01k$s0rQ2Pz{|*7HMs$EKzha8VFzUaHKCQUdw}$yWNfH8QfsuHj@cK&`(PPdejdh6 zsjZ1PL{T!dnalyI?d((HIyWaUPeG04m=>#IT{>x6}$aoQFjqCru28 z##Mokb65^1vxNu=FRJpY2-f`QeEn95BgcdY(oBFr77Lnk!bOIL!k(j*%bA)oOW9Y3 z9m#JKX=$pU#bRrmTwCRqemXnP;Mo}{#wC8uc(G`De&obhYlSKtcOsy)j)5<3Z=~w zsw&b#$@(@ConF`?y^xS`rGt;ocTT6Slm!F2Q^dj!6bva@2bP&$t^Y}DudL-_gzAD8GbL&?(ZX5g-iUwuYrY{Pc@@-brS|27Wt#1q!c=B zgzg2}hmIwA>I8(hHunL%0obDTiWC$DQJ4sUUhpXZ1|>-%$$-*{aS(9$g%L7baweSGA9pNnx(cSk-z@H&y!+3I^`B#6-i6;*KB$370s8~uh6ywWx6;Jhq^zFYiV@Y-BjE)V1 zS#B(Vqm=dwU^Sf9`lDD5rxks0IIY<0dwqyH#7?2VHY*XRWX(B>*?!E3L}bDqj?iC~ zd{N(PHiJ(ZeAa9p9*NDovAES-N)2fUFq?maQ6lZRmVwb}{xwNH|3P*V_)j5EP!x|n zei}??pX+n~d><>fjq=SUh2++C$@922g9c!^m8bzsS0ugmas$5{U}#~X0W|bB8U6~- zcbLpmH02grXWr(;e*SugN+`cq-lR0FqR&{>kz<-9ju6g7U9kT zxr%};*n$DKnA~**!>}AW5j;T4N7TSfEICBl4g%_#^H6Wwc@^?*gK!q<38dTI3^EX+ z0{{VAN~s5!ZEDF28PUYsTl31kAgykF@{`(X*$Ir3rChw z;dGSlcq7gOa5}(KM=M}6tp&7bT4H5iNTtx0MPMv*-9oE;xv0l`uoCWp^qXPjLCuj$ zMnw{2B16gGa*9AaYV-e4Ytqe;V65@^qHc~?S$Zax)i7G%ag#yM@Sz0LSW%U<0$}^F zkywC331awOGbie?n{faSZHeAU4mqjdvuL}J?IufSSr%68!t$;lx$6$S=r58ix0UJW zIu&6o%!Kt-ML&?nS(3)+9oaldV>uO9@Y8VI`D?DLPPn zy1lMh!VOIVoFT^^Wx`5PA(~LTTsCY~S8JkE4K>IujgfDCa`?ojN|E$KiI34HDvz@v z&j?5vg3;)C1h>Lc;p8LRs@t)NFvfJ`NA3L7^j14Rk)Mv1%l59IagLsO6j9{p#t%$I zve842t3-4zO)8N9Umxi+JfWS~04sGb5x0tvgJ!Oz5Ib4N$WLO>SurfvE9;U7Ld!1j zzUtY8t+*FzmAWo!!74^i#myYWFbO+0n>iEs!BqCAEoAj;KBCEq?R|aNd_uO6Hatjw z>|*$Gs1ex4BRftu35(>|&FQxZsYmQPw6TFYK<~c?ktDxTX*5}ZuxjH^o}SXN7*q5} zub7mGNg}bB)`Fx2!|03BI=r;p5TYF(4;}cIg_=50bpniRbcYKIof+Hms@r|EdSHd2AAUO(XoG5DxbOPq+J zM?y%QpChW#={ZS0|MVQ`SFF}x&QFG35ZAuzXI!ZvJpvdfE!2(XB72n`pEFcqd!!ld zgLqOj(%16++xAh!k3NRyyI%ENC4LN#Y@TQ(_Uu!u$6)6It+T3K{b&jeQdnjnv#r$` zM7cUZ_Gt}`;z1ZUWH17p?hhiXfQDZW3w;>FvBlzEf+9nKQs4rVX3;zq?R5pH@~qI! zNU}JT+|$?vX7y^VicZK}37&}!>X(yqO8kR7UcK5qk%8S4;x&tR?C8&Rg9$*NDxlDJ z0==SuQhgvgS5;y2va~5mp6NtW=vDE!&5xp__iXOvKAD(A{6`1*LeGg~9VC7=xq+r0 zDqpL_;>p!VOe8Sm2>I>hA`sx6=qzbzfLE}UVpf26>#@PtFrm0j3yulBBP%h`1+CAE zeIDSYu0E(mUE}5Yv*ozwbj}^ZOX8=rSN;n+l+}zxa0>1&#aSyB8{RKROi1Q=eAgG^ z{$zeE?)6)n%+F6zepk%Wr;4Lecz5=)xGaTtCOVBv;qvyxCsKG}al-uRRHBTYoiWVL z5~oi)MRz#1>(AY6;@XA^H-O{5ZxT;HX`p3=VVr~{1y<0X4hz%P9q~2 zP;Nv;M1nYB8N}W>g2YWMZm=Ru&bKramL~UlQ2bbJ3T} z#KgaXtc$*+?+T=g8aanO5rkZ{Z<$!zoK&(}B^4uSt0Hal2ROKws>U*JIdYw_f}cVB zb=wMlNm0#RvPAl<(sFsfQb=dh8Ri0meJk*Rwze)yzWd{#_uB zD&&Q1l^BPh!`I8DoH*b{HGQM*b@Uz@1;g)oMLY=D%!kj#$;Tq8C@_=_jUE+-DaK#g_ZegMv-%|0^EttuGd z`3D}66$k${UDiw$hl+UNHC0UI#pshvC)UTv(~jU=Iv8w19l|^z3>Hv2!nrud+KdX_ zg8KQ&&3_1#890#R!D@n&PvQbgPrg?(vG^RY7y4^-2Y$>MaNEiBbrhmL7%j;(*1*b5 zCL0RBI7)+G*em#50fS+$?`z{U;w0mMgIIbTT<$6Zyo1d?v1IZ&(P>*eEY^cEkzc+_ zA;QxV?A)ON1)iCI<>F&(L8h?*wZaJrit!Qf8c^2b7l08pe+w(jJ8;#$(Wxdr~8gs$#BGF~&V#70bugsu)Jp|B5R9Z=u|+ z&12Yze|89C?y;?huaL`b_I8+F)3@f;h> zDTGCZUvkIz_SU8&Y2p=eIwM1C8*8<1W36jxW8nmqrt@3c#`=#4Hlfpefv}g+Osn)b zt@cb+nz+OWlp7fB{If%#0uHCNpdj9T3ihrf^B1Js57N0w*hf%J5r@-o|9>wHe;BW} zqM?5P3%r^Ur{Te=BG`==_N2K0G3$KdC(J45QV2G!)nPUB67u8rQ9T;oIZfto$*;)o zQ+pO@OME*=6CK-(d|E4`LCp_pv0vn{Il=#3eg!Qt4}j5+sS7=me;g+!iI%W!i8d|x zO%2K9Z9bd^Oe{MNw>POA|EGjj5n)U-4XTbz135e>JMtfpAYzK;$MMYnlSF_GkNxwQ z?z?y@;kcT|!iOSY2d1D)Az(1>DL6fDY(nw5F4N+5?=-36lBBU2!47QfKTNPTNjhCn zRnE*|ZC2xJ7rX;a%sZXnPt1|Lj=&(?N3h@3yh@28RN&zZ_|Hzvlj7E()Z|J39%~R+ zm*HNjmJ@UTf|$ga6%D@O}3jpWBfvx&1%vhWg+4 zBPeaFT~96ML8M-qtyPl7zDYcXk#S79u?oYRnyJG<>d(~WqnfG9#5`BVtbiLeUp)?5i)R=55%YJcK%vV? z3DEm$3R`+q)sUwQj-Qkv{|l%pt&IV3YvXjXHo|0Wz+X;!;IIV*X!;JVt&NmsYa=B- zI67AqlLHdr?fU`Ee-sHWq|*+p(~|%=xWvlk4+OD&gO+zwU~^i zG*6Ef>S@t@gy8*3SN`-bz^oKUEc{tQ+&D(e{GW2Bq>VJp?EiB{nwpiyjkE+K2_LM` zX76_!NiFOE7)h9$8ex<75tGV!0U5tP)ExM?vExrWH2oO;8XuYxmKE}kZ2Xcg%k!~c!-)}NMgXIK94 zmFl?7C9MN2vT9!hR$i@CS7ctoi^a}Mc@L3s6HgHxFX6wS*Hp3P5`LlBIT}wJFXjEj zg3EZac=R%!gH3{B>1DjFD7~4F`k%aX8tyRahiDW7WumHR(`rjy#+9k{X2dp=Y<*ZM7W+kL_RZ~cg2>G561Iw z&W7;~wC~EowVZm#zv;a{O=M5tqj=MJQ9Xg5-!{JR%i=2FlWAhl1Z;o#NC>s7p+c>P^okg;_lkaMxcfHsA_J6?SAE-$3DhX=nA5sThL$1#*1v>y2ty~xHr_Ehzw-m!g8nj_5A^G#~PG0!c;kgT% z3*VKPjFQE3n|Z1^|LbL9!DgOsZpFja&0L5Duky#zcd7kNC*t0*Io~W3xv%5)fF#-v zN+zVZYbC!L8?x#@UCA#u(;uppG|d8REnw%Y;o1K!ap$b%OMWOWc`e(~%o^g94$fr0 zYkce}?+w0vvKUcpmt;r=ky~~lfgeqdT~*=bY?oW_uw|HTFiujNbU>|?zV>ONd^`5^ z<7LElD3ZIypbxDuE@d~xv3FQmv4)@Jg|Lg*UvVP@{ljfoB+tHTlW$=}9{A*tpm;>mY-BNhJqiO#W(5?%3ns@a_% ztQFJKtz*S)ui7d6z&3FzZmP`pYidyqqiSwVGrRDE+r*qSv%KI)VA$g;0Y6PMOZivZ zL^$2d7dm@C2|vm3Pbz>t}n{`IR;YfDABd%P%VW1f$1q1@KSEC9r2K)BVD zBm_RhQW4rMHK9q&XvH@J5>)!!R}!JbDVgRK?0s=xrr9oizAAvebch1P@=WtozxHV> zzpwUf6BEm=ti-(M@Y87{wP)^d7|~TqS6#jm@|O47=?s4ezn1 zNPD9X{fp?rR_Ft@^;xIMV{x=w1-sm_I~x1;%lIY=;Q%;x13h5Uu%1THKT9HEmm)r> z5Z_Q7Oqb&pHqpt?FVtu6F*ozv_vxb%ybtlI{5}Li`N^|SyU7nt(1#;LpHdcR@fC|s zdLwx;4NzB>vi8KRV-ZFav#RoXXs8qPuD#%^7UV=+J=^M7f6{s8L6*`WWdy78cM5C- z%?jePn&?+~U|MXPhHcNY#5s5I6Y)K$%Deb|R0+OC(Sg9nn@cT!v>I14hlkc-uY(FL4Q(xj_uGlW6!q)q8_E~c)Bxu2yI4CioeO4;Nlyk zjo@9$EJ=h0*g5rATw~6rJ-gzYUz_dtu2)3vZ_J}}cPXyK#pTqO_{asr=GaY@u{BK* z@po>H2;KVzjdH%?TlZM~wK#2Qrq#`qgHUg1lA21vrkJGhK2ec$PUgONg`Jprg?@85QWr{Rd^^46pjzWnw_ktWI4aV?uAz5fhR5 zwUuMOHDjsh@s5=z{#?a#0#hi1mn_czrIkf7ZTYk*V)NT}zIyrN6tVXmOTDlU#hfbM zo!>o0bbMFG@p}?p%vn>G3GZbj{iO=Ku~*z9&Kqd9i=E%E?b$A|1u16DqdxEZM^l0m z)2skCzT5b~h!)yfY%J!739VpV%yv;FyjnmxdHwKx3zAEWf+UqRAmHYC$le{qZ?xT$ zj$DjTH=H1q-ma5(jqsw`#3}l0YbCFsv#peW9rL+!_8kqxGF@+Z+K3u{%ZD z0(7p5kCqq5MJ4`YpnVt}wz`f^RN<^wBtJqDN^$r9Fs zV%a`%`sp)KxGXLrKV^-&2awMR-&|8xd@7x2z}u$wL@}I00T^?!DaZ{{WoRwh5DbdU z^>%i&SG>5>v8@>5j^grEiwYy46Ar$>5tup*p9gRQO2q@BPZ;wIT^%lwBcG@AUtsr; zYf~lI1}M)G@IEHGlzcmzKm%_pwg;Ke8e|KYuxW7a*$90^a|hM)Tjd9!bjR;Pv#~Qq z5_BtzWXKElG{ey6R3afdJWSV^(o=fqz2@^-*Af51CPH-?^ML6+QswyM=l(UKEHTjVh2AAI9|)E{&@cm}(5u8Jz9cGGu&2){qH-)k6Drs~Kp*oV zX_hL(R4T)yGo+{=J>u&WTz3jjD&WwIw<5r@$!G-F!8ZZ{u23GP-mX(El|F|1sm&zY zWK7|lBnd9fSa3`cGz7y(Lk|#$rVb!+7>)b3)bXYq$Q_@hac2Y?(nuMM;AGxx=vA_z z5vIlrMNg>A7WCwbo-Bc$cs>$6c}sfomh|L`o-V_nTgjxV)r>-X14XYS4mU$-xj@`# zOiH928po0ZBgVg)fu5z*AdCwQeTz;LAo!fv+<@;auYHeCB8$iW++qFS_+g(rjOH0Y zfu=!vsErS?carHzDOQ*%kfezGB+I{eE&{zkY_1QKB$368>-bEuaTUvH<2&nv4^cP4 z#WExDD~vOe4>A>vZ{~i$Pw${*6-eTCV&z?>Tyzfsy%3QdPfj&`MdRRuHDO2GzuPQ0RksJ?M~a_5>ZR^d&^hDOxdoQG z>J$B~LNwarXN!hSyzqxOgvjaC#V4LdT=#k-o!6H*}{viiI}QL6GiHq&RD6Dhp(@|vhqLEfNwZ9SHxO--=u%=DPjst7!(2G zZn60=hAaQh3!+a;34oBf%5P9e<7#{lmAnW5N{KWR6f-mvu?WNkK9zWj{}uGw{R8~A z0>9o{f!|yy3}|{G9s0s`4{==$tH#BC-k%zymI$TBDK_WOGO-63S?`;eZiSO+Qu+zE zMEbF~)@N)je;qT$LDTt&=1(WTGo2UdPtG3p>Ew*Nc|@$=&MzX})xD8lz-q+!M&8+6 zjcWeX$RqfY>uZht#Pm&SIzxvkHy|nWF(1IH#IHW)e@KsCBZQ>!FNyRWIKcS0IBAFS z3SGW~|4s}%$9!DRmN351Y$=)a5>c@}v%lGw6;`YHoSrT*Z`UC?U1Ht=)ON!FGnai< zzbFr`60~x2zM0((3mV`7jFp%pgJr-K^hq?S8t8g++(HmgMrk0-MPWNLPfy!j7>Q(e zW27T)f{G9W+L`%z3zW-v8QD|*W#b;r^lnGq=mB}Xcu1#Kn=JmR#Z5+hE`)&*A2nv7 z=heU>5hQy?vS@sFpB~QsWy0pbgUNMI%0 zRi7oq6KMUx}Xt?+Ro`|3i44?d0QSvZ@{{M%h! zi_Z3PayudxzRJ|lPMV@2&#%eOrMyXW$tBz@bagpiFDDf7RKhQmEr1b$BoG$gBBo2g z*kLGW1f;g5u7FjodIM!7iQ(JL_63^^J+{KKut2s=%9wc8W*K7oaw|6jQrKCI((ttM zK6FNUGAl|u!XfE&S09p2bJJTNlBQ2wkPe9-l1|r$qzMu!lva$rvUJM@*dD{4yd49U z74-@%E$PkYt~?7$u6^{G?}j6ceWToxwli+^C<0qxHd{vDTE_Wf8IA8WYHRvUDPTxQ zJmd?jglt2^y5g(@{QkCoBGv+xRJ%Ebc2pBHnQ$6YkN(b#*?ek$8e{3wOcL z6ZX05I9gUvakw20(+j9TnsJcmf&geV+6==<(m{Snm;-mn{Lv_vBpT>p*d+quLL^L3 z;`r!Ktdiam52c!I`9UGwOk&wivm3Eb(@rxtIy!FqBa?MV;e<4V)7O^|A z2}0WaA?DrQDazIZ9l4n1n!or#`0dtp62sC*CPVLvF`dnG zk{%D+HoU0;(eG#GXUAjFDO6phx(W`!L6Jb;==ta_2-#?Ie9&D~xQ7j-2n<3u;yOZG z4DV?k<=}E1r~>goPqRlZz8Z2?8g5#oPYlMtHMwM*_^78Dfw`1)vUwBTW;+XGVdyQ* z7t+6ldSqw3Ns+))eq1tzLVR2@$?FPtp5uRsZMCw1HngyhHXJE(L5oP(7`T&995~r5 z7F~Lo1yOv#ErnDFUG#%WaH|-(9!L$r^@u+8s!h_shu5D zdk^p^i|v1W-!kup)CH0NNq|jgp%>{2vJ?eDiUqua2m;bOVkaPJAVMhS(1d^>B|s7g zES=C4kS0YDsa8}}ym}QC<^MS|?`}3BdcEK8{XPHx|9O7;gxQ&Q>N#i5oH=vm4Ez-; z&Y-v9CYe@c(`pj%0*ur?cIrSomDB2A$${usM=ARfLGxi!aR&u7Hg;iv8&tg!tg!_^ zo9I~r89^tohbf%X5|2sUfls`AZb1H&h)dUyfS*9zWcw!&_nb-u-o~h3K-&=Y3s~!? zenEJC3>sWDyf+xWZ5{EF!$7D4637bX|9-eVkTzcCdhcyNog z_+T~k`C3Ad{oGiho~6Zyc@iW z2RQ!J+aTE%I;3(OjmZZFcnV)eon?a?98n2!JZWe;E5D5ypsd-cJM6ubPp2#Nh z3jQZA<&=U@2B-Gwr5rxr!FxGKD(R&h8Wm?m(~XWsD6e5p-e*(=_U~M2_}LhKkd~!Y zUT`oK{REvk#*fW%?1`vvG8DYTz1xCbUs_^4Sm}UI!!>v{G`;A)vKO_~t^iZ5s_(cvssr;KKmHwNg z;*zBDXOAisC6zxq8s(evCV&r5zzlI@5Q)H6OknQ|R5O#}Eim?x*m3ZQ15{uTZ@P3c znyFO)1O@VutGsjy4jn-N`N;L3g(<9Ok_oU-ALId><=0-YKV{A@X$hHR=*!3S=2F6n zoNpkKetcjF#t$;&e}V?`zeC(X6#Re@+Y(X|JnCU69=Id);Pe)R#qrgkbUrDpiZ&;M z+lH*xpwZ!?4p6bf_1!Dfcdfp_+i;HluBKm@>iuJ`9;)+P3eChJ7{Yp)`f?6WW$Is* zR;(=K)2e2$JSf-b(ieKgBo?|u6HH7Ymcr2i&;;g;4sj0P;WV6OvS1Fyw#?(es*mNZ zQ*1)1;R(SW6K~tWg)n@wF&_lvc`ZhO*Ad)0AcIwjpU6c2QI%9?*}4SvLNcoka7wAt zFh?zTUd7}DoARg(j5zpsW6g~QlqX3YMu^H4!gbr9S;fOmxcMal6M5kmk$VQA3t!OP z;Y<($$+E}XSs=w|B(3FCNfZy_$4dg4HM1S`op+|PcJz=oEYvF`$uZ09AVJiPOabkK zS|svKv>uGtRfnThbj5UsbWR9~mEKYD!HxY)NG#xqCri1X$Qj`=z^_r($HyZ)Cchqp zw~@Hx;8YQwm&V2iCvo+h&1eH!RBxFD+3QV^y}ShRK{j`682$t24`P;%8iD~_2ydaR z-;!tWSRXiPf&vcg;mrxdhoNwM5ZA7%kmX%m90#Mr5~$O|@WmPKF(-m9d|d{?grg1F zU-SuioluS5hD&VFj_N8`7Nm|o5cZS(3-WX?v7gR6`zd=Ve0@v$lg{A;Tpp9a6cP#- zMOz?+UCNa_yb*d9D_8Pwr(k9|7~E3rf%(SD4v&VOLos>TNtG zq{5!xNl5VBA_ciHlqkcSQ&{h%a1TiAq-StPKb}NaS{qj`cF_7!IS9@ykY$R*~~8i4lao@#a-NG zB;HD%_Jsgp?6ANYp2S!S^3z)Y)`9}j9j`u1?lXynBqF`5sc4WyE0*`SzG*_ec-K*u&%QsXXJx*q0`Ax6cM9Khs2vIjW;a4rm>lw|5K zO$4VdE)@i0=r&`3RDe!!?-79g`df~4r&2))tF0{+uspyg zbS3k2Frh-RKtT`01TDcGvO)0w5!v8gEJ5~0lM($FEL{pNs)tO;m~fWs!c=mq!jpQ~X@X&%6{@ zlFX|V*iIQ#;IE}aSP;4=ncW>+td!(pY>|wv*t`n@usl747{`J+w3!k9C9{z7gFyLO zF<9WM86V_dT_ow_C=bhkI{gbIedcTYP6^f+cakD~o-Y6#Y*W!+mMHy{9k6sdFJ zCzP5+mQI`#GMUR&FT`FtgYQ^6rDcV5NUl~+mINU?pwxf1bn4I^Ik8ki{$+0OUpkS_ z$^vN>$xA2nlSP+KfCF>A$hz2tdn;{vWwCoyvF2EDo8P(O{`rCn4Lt@zwO8x)utAlt z04Y{wdBns7YZz-GBu+p{+-L9^Pz6ke<-VFlK|GuY5&+HipX z@h_;Mfij7AiCkD6gOCguP=`WdQC)yj63B^6w>v#tRYCXt2m;4(#WAU{q|s$f%z z%M$Oe(c^o7B7sEPzF`rIMbhE|F7Fw$Y_Hq^VB}a;8B6qUR!^iAATvH-p|U(Pd{3Xz zlX?0O{qkp2+GEAhPQYskiOsL1E3HbFy|B#VAMmw?S`EvpoA|%huF-idc1>wdYpKu6md*am_H1QM|P;` zjd*4*m`N6MAxL?iAjl}lqtSa|B90o|gaufedLoQ<7rGMBptY;7%`y1dD_A6;RR>yR z&d4>U>k0A<9a%CA{;Eh23|ATfIMANc?cnlwrc+KHJBLjuXOu&I+pa^7O`sv?Q(PYE zIQ!*OFcE#iFwbHGh65@Sj}PLUTc}Bb03Grf8!$Lc&wS2}A!4}58NyIv>jeLZ$KEBt z)a`7R=Q$fHZZt0qHkkGBZ(LwVz))vM@M@kJ{DP`)&T(gChpf5|N8zh(yqR%b@|_^_ z9OZo}!a@xsDo6a0P==qJ#?pU-X4nBAKu6B7^} zuW7)qTpQ%VXOIKP7&+q|AQa@ZJH}akAPf2LQ+;zLO$-3Y{u^YETz(q(zf}K!soo}= z|Cs6%|1Q-N-{psr-|IQ5C2F?8ct|an5@9NV?KtFt0gRtnbIxQ8LoG<+m_46JgNl$# zy0oB&fal6grb%wA1yvqxgjH#5A6Yc#vamV?`_1BoOQx(}P2`3_2E+jQt2tklljYjrj0yq+pP{4s{B|1tDNlRT z;i%$Dx*p%YBlAi5Fr=n121B@xXv>h+4IXLs#i|zDw9&0gQvk{LSkKG-l?x3*-21SPzig5K zGuN0No}HmrEbF5zR0)$JiCC(irYAbTk_3lSt2Dh4O`8q}984Ljr|b7?uhNa_`bb>? zGP_ZUqbs6!(mX|bPWQ~vTj;6_2~2{EX6RKq6dSUF64w*rfF3|j5FGV$+!s@Q{H9c) z?Q{lJYGA}Zh@k)%Sb1Ob-3XOynt=ybmHi2RjaA|^u5oi_UdX@Y%K7IQ2HE}mz!4%7 zXnF&q!95eO>>>6X)-r<$8oCA!pljeORQ;HAo9cZKV8`;98`W_0S*m&JS6_>!(hZF& z!RKVp%EK`&wQh(*bmT+(><8H|BygL&baHEj%eiWsX$-H4DG^cHIO;|lHH{?li^&N% z65%m17r@cEloOyC;%%Z`aU)*YeMXLatyIo3Eb5wE)KyooyS1eT^!6N8Ze*0J^%!tq zfU%%92@y32$f5Rl)UFp`{s;AIWW+b%akGgsTH6Sb8-@8OUk>sy4~|y=Ox6}CG$rc& zC=ac$Io**)M(rd8wL*ZpQSoDV-jqq*t_TwnyE}VW5M;2wsc8&p2D@?js~?|h%3qK1 zDWudHjZp$Uv`5b|%aCc4@$h#W{>d-Z@pDCtPQ*W-tpoCOkQknSLWDUh*L=TPn`<zqGnyD}w2gGCiP4L3SGy@}NfAEY)aXO;-|F*V zU%KU6J)2jb0pIDLL>-g20U$0$s@=ZQNJ9$dC>G^Ai+~3p0qW%sOQbmx0m;? zw&1u`<9UVRH5x2#TCN_?Fj$wXOS90>JiTTBBZfMbb9KnmU-?@-snE{q%p_7-1$Q>9ANi!KeJhaD9a^?y#K__u}65IT}x^%hpoA9LRpQEUmFaaKr6X!lmViT?FM>a|r> zBCV;B?@z6%?LOL~N%1}wT31)!u1_uW+rW10?6+atcD+rlC4L2f+vL5!eQg>`!)c$> z5}7|anX2s2pRHw23AT`z%cvtH(4UfAuCe~>uA@_^&nROG&w%g@Y8-uMC4p6#~5Ao!VlygYjooD;bV;$pYN&TRM6Fm%1kjWT8-pCHP((FXULnA z-;Fh5|1wj6S+=tFfeJzzOm`V)+{LX=8D|XQ@Y*6%1 zHPt*nDoTU^=$V&HUye5h*!Q-ukU~0W+BE zIHmnc_f9kx@aOXrjn&#pn)<9Us>DW8NSkj&h56eRo)syS_?+<@3N2fSRR#W%E)#P6 zu6i90Rlu2KRp@|9YJsHuWSa84QKi&@WGRWfk*5$noS6O51TK{Yt_X^?EZ%&5;vHXbRl`4sY86+H`a4l+!k7gLOB+DdP|j|DFI zt)$+chzf-`*CfuTgADvQ$Agc_^g>z@oWGT3{3CqHVoBZ~FnNEPLSgB~qb2nsKZTx6 zH-@6AtLa8v1QFAW#u!`sX+~~f!#{%9iZ%Qxn81vpAHkx6y4lDwAy*$HsGU|4T z$o+nXAGuO->|zsq=wx}hp7k2ISpY`c%rq`(*;IL!QPGD^!5M_8L7f&p53uqDrqDT{(5s>+0+D*NqkEUj0mCV2Rb1$cBz& z8o$M?WTy-Ca^SkF|btQPez2x z1Ad~ETv#&Ze>*s^-RNj+Euho2<%mKaTx$vV#E*CncBx_?4=gp_0T#++84pIiA_t4- zt$iyF?ncPDQ8vOXOf;D_WM&z^l~KL+8#HhQtwP7jM}X*YDY~i0VjV(EG_8L3S%ECk_(rw zgMWiSiY;BW-ZJ_H5C|@)B-8x2jKL+sESVx#0jrD1v&xXKGLKwkbks6v%PM0?Kqb7? zV^Jta?N%F}5=WIx3s&P26nMnp)kYP}uy0lykJ`{FPkq*a^UtP5YmBtw9Jaw)qmR9| z7eOaD?6S2+f54;tPRU^#W*e=gj4(FGhz#TsKix|b57dVXX!aIxl-*uqF`PN}-iixdQ|Q^P zn1qVm7wO2n6gsxmI9O3Kc&x!kaT*IbCQ&}w<=K%>o6trVTW^Ggg*B0OYN$_}gtSOIEe>gPeY-KDIGH@X!+4@3E|m{fu-m9k zf9x{JB|7=8B8Y74vl5SQUI0s*yrD(lG{7M-~C{x+PjSEwHESL%@t5R^iQ^u zw+PHZA205L;;67eKWHU=?b%gioKmQ4vD56n_?D&zNPTh_g)wCnt zXO4o$X^XsX95Z4N($?d~571w&J7F}|e@vl|PeAedO{%x*Nn?zz=cm$?(?;3Y1F3R> zuurkw5$o80v{b09`Sbmg{ zcKOB?T-aPXJ$lZV_vffdo<`<}M&h4mIFnBIe`ws~zIe_XZAZ0s zWaLdV*2N8W14ARNFNKQPtbT3``K)LFS(l0KhW187bzp=E43jt^}e>co3C3+C3u$##}%%0PK zuJamhm`#FyT`IS<5%dJB)@%m_+OEH-eb?Ws{X5evqfg6Ht_t$Al&gXRGPGS4_&%Po zKYnV5KiXmPGTX_q49ihx%gl1ESjPQT(;bdfXV7n!+0M1HcxqRtdAGKYraR3}Ix?Mg zngg_>)FQ}yKwC!1LFR|dL!K;U4%OGK@E$2;hHLt*8FW6_?7-RML(D}?47)?jBou2M zY7XaUcBr|FKMxBtyOmKLNx;b_a~^}c@@|+pnZG|6Zno7wUCv&lrK*!1Nb56RqZ{F7 zRM5N?JOH;zlQ=cN14J-&jWEl{&Uj67AhWK6EmmOT0x2gRS1djAR?w6Pvxo<2IEJV| z3)@&B^lgM08D|$|+aWIPuuFrtp)9;%*VT8vM*YK#vZn6IT0sL{(DfEcdBbInV1R^_ zHh*pqwC*kLsp}wok(*C4yoR@Bc)dmMw>8@^Jj%B->x9@mm|wc1ZtcvEIAfjmW{pa= z#h2+nab>aYvi;-O-vqE-ct{oXElB6JX-Upd8)$R9N9I^b%d7-9F_2S9*hFsquKq<`XQ_3XSeXo&!H2; z&C2vmPxBG&6y5uj*?`9NGOKD=iF%nQ^}RVX^f9xuzB-4tJO*4M|INqDi5!mkhgmM> zl$_!bZVfh)(k2XA8;9oyhwD5o`-j=6NJE$Yfx)4|dXJkGw2!FcA91h~9>-_A|>x<>Up{2!94W_bW`Xg{-(o}Wk4`k5^%6f0rcfOlP?kNV-X2ibn@XHNQ`(c2lO zw_!{Y*-wFi0fpZ_W$s{F%N}6X;rNFG%*5CaigX$;iH1hAaOQMF?#zsDWmT{%tZX8Dusn9YEwfYB17ePnwZ*d7xQA|0bD!9SEL_Hku6rCeG#269_9_ zRBf4R-h@Sf(g1PzICZ%GO|?G^Qq_h(ZQiSWN?o5eBQ#4;yU8>IHd}Hdxi+#rIfD3JeDJ>2hX=VbVEV zAIMnGVkVY5Rr`tdy4KE$l9pUtI)!*E#n z^AIy8_G-}*(nAF7Wzps-sxuVO0>&O1iqaV0w4r844o?p?Yc;;JDPP}U$jOGturPt$ zGR$y%$9<~Z8WlcPO&a#7oJ?kD()A&Y9R|35mPa#&nX%d#T0IQ2`&up?9cH%FK>$I+ z%?aF}NyE)(?LB&Zcrm5|?lubSxb+Bgi@rIJej1?&t;I-?Jc{)jiM8&#WSTY7OlQKY zFv@JiD0py``Ivqnk5-KWVI9n)(;P0!quZm<%=;8Q8pYquqgJCaW6n^|(U>uS`^3>^ zt>W+ok~IwEB6&wEcz-+EtX}SHk*N(jW5+M9&#Cqpvr>f<3K%{j3}avje7;6cjWOFX zv{#KWYm_-Fu^x=qdhGA-)0Hu1Z1m}(#U+K@NT$+b%^0xtI%5mjG7MOAsQWlGhNg}M zbU&u0V=<@q z!p%{V~)?eS(BN4rfhD_s&c-6m7X4W-o@d_4Ul)l8(XCYmF(tKMGE0@r$02F-llT&m}0Q2iIoUV1@> zH~j^(lc7(ZJ!r$-e7t%TEMx-r>&TF=R&$EIMe0wR;9fE{3*Ia5HqAJN;0`c@4C6p;Cf`Hwic zMzQN7o~CTl>(=ev;}?1K%qwQ6@H2|ZNE;Az;^-^rFWA2|)m(symo?R_>#J0f)w!u= zU+pqaycp_{Y&NJYMTJ;tR|ndG-5b-62UZ3);igvlWfl6!3;?; z+hGQ-OTo;$%Giyjk5bIIKjZdssetpxbWbXij2Ae1P}9Fkqt$8VD*bvM^+*Q^e2_=u z)4@&<=A@eqc!FI`H=nH|dkj!0KtM{~r=+S@pm_P7Lhei{fjc|}GbwqRxkUTSTV=W# zj%{Kx-8I9!H~wo0GiW+>whYAWa*yL~4Y!PJ(5B^j=gu&jXn#tk?wPO@yPZQ_=V1k4 zOwPk{_c3jlX;!Z@wFqtS{Z5{gt}nPrK$&U5Zf0*z<}6I_FDP!7`LVtyH#0-hLAeaG zp$}zD2lQ};*_#KSn_=Fo7v$3S8DM(v>_K>Jf%&k0a+Wt? zA;e7m$}H-!2<)g}Hhs6qe7f?<*-Q$qW43k%W*Z)C+H3?|neCmhm?!>?4BE34i~8i* zbYZDEO23jpU9!yi5V}6gGRGk3xy)=8=O;76bAsg-k4(h|*nDNo z_I6%wzN-f>R9swh9rwCdno*iQIm6rREleIgBZGRZGMkjWzDbHl8ebT|qN{t(&7%dY z%=XMOF0aD807=BIHhXY5YPA{dRGdK2*fnNUxo=ecf!rN@{0w%Gb}%$ zYs~wiZxqcemlS*(vIgrXR^RkBYW8hkVcJ+qKqwK>sR_N@ZhS zpqnkSaq|Vsc%N)g?8yvD&o&>G-Oq;bfQo+2HXHj$y>Jo0>#*_vA(^t*nf*Bo zUvHL+{Z5f)ZA|p~SlT={X4w<{&^&6h-fXRXMoH@-QOwWrHroL0MFOb;iO8EJ^SX+j z_~g!_DGym?^*clF+FY}_rvEFMKFu?`x;7muU|E&5t*9$wmbdLjGZ#pkLqBdZ-Q}*# z4J0$0yl%|)*3LIy(DmHev}y~cW5yghyv3|jI1F9!s{&aX^`4wdF0WY=y9DpuUUR3W z-7Agn-7Y%@!-Je0f5j0s*XttVX`EG_&oG(arxNyaAzvKR}2)D}vnKN=b_}b*T)MdNbTE8-fW^6ZWT3a_V9a6vT z5YkU<$2KWrE`7S)oUL!&NYCy79b!+jX$Ll=S#vXYViM)5;N%={%bn&>L(iQWxr_sK><|Bm(+cr}CKJ)IDr)3X3%`gX` zh9FK zr01(Q$U5&gp9wyGgGm6(9^ROISCplT`vIhrGpXVM=$s~hK@Ian3{5&<_9`tGD0!y} zE2`##BLDLP*g{O-6re#|youTzG(8oU$yx3R!>~4}pCA;r-*b3Y&!Z&=f&8f(y$27P z-9QaCLNw)Ws3huf#H`})#z|(b#kx^|G|q2# zW62S0j=oOwzI_DpgFb(n_tSUH{f3rGt4~0ZNTr`nm@gn0dlKw%W*D`9K_+EQ|3Dy);kR~Ai~_!W*7PWG|2V(VOn?wGU27e^syb* zI*WMrVH(Hb@x!$JEH;Rjl!BRlyo|eB!@ZEXcmV%rqPri zFrCl6Z${~dr}3jr_4N0q@k34Z^fS}=MW+}V`T-u5JI7jiBz`)Laya~98eQga@^n>0 z;yH7sjtR8&oY^+ynoZC=qr`_m*um-Eh98=nbbaS^`uroav37-GFM!Tg9HCYhunz2> zPUA12?}#tH08m|}6BjVC3l3ArMYAHJH7}Yq>a0)?g6V7zdsOPL1oT&G*5L?pgL;%I zoL8#X>7|QiEtlO9Oc_;xPF#d^3jJc?dx*XCtR>zxm(2CLo{>q9T?K|FXL@t4njc{$ z%%mBgm>c!nOmCY{O_x#mWM&|ng<&(aIEAZuCXN2Wj0$^4^#g9tJvTCG_7`T|c&XyV zZcIK&hf?;#F1WA(Nj8#Cn=XF=#c4q%J$MZqEGv_SA#_isz~=7Jv`KL42xYFOw^5~5 zUIXw@`lD;+CM}a@eQ7?5CFrv+%?4qgr!u#IJdIm0vnk;#^ZoLxrMWz8VQ^iT&2!)v z3*JKTw8qs}kA7cC|F^4~wJ2(}SsSA-NTHm~S{z*azqe6~ z#Csd~G)5zu@{PIRj=KFVH~Q8*4!6MCcUbF)T7GA~Vz(q6MT2L7kE&jr`p#?`MLYr= z)-zj!x&jZwxaOx&<&9bmYJbCQUrv38PSgM09Xi~#h?d?kYZR*(j(F7IFWfMv#mIte zI&0T!qFyu=GN%;17pLDv8^1RP1+7`Kj~Q@zy7~j=)ZQhenBubTnx3BQ6c+30;f+UXj+5r` zhz+*H0e$j(s_PW76;!w6l{VN_;_^8dBoKkm{hcBKg_513Q;EI2;`H~jNcX+1f&{qY z4WjG8qG^dmn}mpA!O1HnK1|?aO^B$X&81@@qGs@K3QfYbJu_591y3%_RXJ2ttvuHT zBPO%XdLnEDS;+u(4})kKJryddl=Wr84i?{W^97gP=7)+J!9Nz#fGbSIqs^~FMQrdt zizdhT%Ja22b=ZNEezfJ<;q4qIyjt`+?uEQx?3YPBCy9pF7nP`Kgh(h;SR?1;TIfbu z5sL;>BgBKjKNL22F+z@AbBP$&FaBgM1uc6-X%Sma^#*=Vxi{){QfzJ4(i1MxymGpN z52%`pxOHs0X9-uLj>0#CYa{02m0-Q`jasOUtg*E-m_n7p<2nl@YNO zePH3OwFmFRup>K-xhYnrW%OQY5pTD|_qA=Q786m)wGPiTe^+H*S3q@qU34vVDkJ)r zDI^OUat7svNXVTlBWl(xBoF?~+9OE@e!49rms({-RlvJjSaLQsjMi=EsVJVMnYOjPjBi4^m-=p0T;;HA0I4p_lOmh(2p^(qHhWPfX9+M`|)F}Xn_jr#mNf#!~x$~l1Na`Ld1f9 z_K&9o+Ob^gy*J`SSxw6$vy!NyUm>blN%W&m@uHrVOUJ5;E}@akcCji%4s)%dlkuVz zIN_7kL<_n61mYHvznI4K=HRXs(P_qL-?mU-`7Qis+#&r(0D-ov2lk z{J>z~QQ96)22rc3qJmyP^jK9fK{eb9r?u74jB0Ivky_m`t* z>d2|MkjpQl-3X$6lOGV&*=dQ*rGG}( zSquzj!VSQL?}PpuUTvl4c06muzIlA3hNeogEt>~*Y$)yu9Cb=VIqFpnMeV>5TxcjN zYjeG~8e-I14(+~6JRZEU5GV|={Fqs+|>*f9-|+cNe1$AbK#~g&9N|lSx78Mtml;SA@cWVDIsyDIZXEs%%`85 zi=O}OIx}11K?ZDw_O=wU9A0V(Ps*3mGVd1g3D+20I9T9I*1G3QI|f0`hTPFNsNLOS zvA#BsuHG#gG=BAX0rG>Gx8+Hmx);KU=ccsNaP48*aD=!DRA|?5asf6G z0_PO2PAXj48PUYc_lU0gwfW>}YQ@sEdqi0H)_mE_MJ{z{F&VAILyVeUtwc-pI7vuI zj6-iD*LsfzXSMu`?@~)Y5Wc&6P38OAwBt+D6(il#^2+#*>ShRvxDN4eikNFvpz5tf zWW_5Be3~ctY=V0BWI)~{)T^~<8TNia(otH{TJ+FYETr#SiwfFF3b_~PEbvD=-YdFQ zKgG%%>6%_|gB}al1(|?r;2t=+<`s;eR-;|_ik_7Y$@ZZ(V%G^cT>@Xnu;3*K8+MGX zVH=UIpZM?a##i+3Q)p&e(I|9ru7ov=QNB*0qiw|}+SioZPL$WK)8TfaTKKJ_68C&( zjC0&-huQcI)o)*zc-+zpT z-Y=SmuiPM;Uk|C$ld*tu?iVX{eCyd!w8lZ|>m9}O`mF`z>LgMs7FO=o<(*cjLVS}c zoi=t7b;EBen*NSy`WkL*bP~1MvL)sL@ksbt1!Lx&4C9v`5Q(L(GkjuP-=xs`2SnrW zf4wV#?91{U()7zIRIRfLdv_MiLpS8e4!@ysB}+StIy`}ob;d&bZ3SJ6D;U6p|8r(rf-qOn~?eeEzU>ni$%WU0BNv(hWHTM=mDLc4@!G!5w{2J2s? z(0kp)gZkl3E}05m+p832Um5IyFDWV}e6%VAM+;m? z_zKZ)4~beh_p1J|*rb1w;{E7h5oUyauZT4f)UtXB{i~-~sHZRS&h7;#@%sEF-c65* z$(nv`5jA;SJg$G9LbD$ivp7uXEj%0!>J2m5t&1q9w|J=fYDv7<;e_iB4U=7i8#J3c zE>Qfo3|`@;8hr$XOVyeEadjRY?IRk7WUEZ!oGIuDvCH>fD)jCy#T{+m1^#k8SvAe~x$K_dts?<;ClwATPFU=7gxYk+r2U(sE|3i#cVSS=4N zpvC<}g*uA&u{*^i>4rdZK(k~H=)Kxc9M<$hi)h_bfYG@{^xada>flCNJU}#qkBBn^ zK$#~u(jNmv)u0QComiCjG;ZOy9w=(mEu4aCAaLimLgrHQF_^c7_=o-Kt=mX*28ubX zpshYg)C&4o)mBQ?He!(Ir+>YXjt>$wf)1!p8h?tWvQLY)cQzDUq#=3Qfq&plm>YWK zX>h^(jgb z`h2Lkk5}?~!yr7Yq3**(qdSZxP1{(~WMj!C!$h_2$K~unhv4Xrx2!mTa;;Glhh0`+ zjj<5|2Y>8(6E1}fEL3n`hcAViTFCKm;s{MGl^rhRLuPG5*1+-_lXcoXLO`hH6 z2r-B$XZQ%w$VWLPOAoYtgoxv;=SGOcdbe_!GdT-^@J0r#2(7PI=M3d6zWPL!rN9!EsU}oBBl&DzkhJp#ZDZ*OoQf1>EF2!>J z6Nl&4B6@X{Xa}2(6Qe{Ng6pGzNO0V!(Td}C9*xOya}m8bS|k?byg8#4=e;-@$o+mJ zWsMONt6uPp%x@@x3)nKv4VwpWP|vwsYB?5|&)-7x$BK%^jNE+`A7Q}DMvnXuO+Stm zabY(XGl(G1M1+73R~(0B1T^u$I8iy$|H+N|;Lu6tczK*ypyw{8^5exMY}#mi2`09} zrW)|rh4jgIF_a5*ogkX)TbEG!1nAXnBL0lHi<_GI445?HInRjd`h`@wx3pG{pR~O3 zjOYm6+{KBafsSe-o)zUetobZ9qq`?!@mW>Ux95xloA*)agE$x5`K+h`JN!?dg;16L z1~q$5RN}><*K^_?ef}Ht`g7ul{#7#de_q_yzeu5{UJy@nc;p3fPf(5$6{3_|j)WIQ zWnQ-0y$Hz?;oKJigX1Z4m-V{NK}PGQ^w7(qQ7K!R%h9OyBvGGszKkxnF@+Kq0&H3JlDMHtrtCV<0Z;TfSRW+VS zymA#YX)Xe9m^4dxAAUu_+n6dw^SqicRkV%!h^zA?b-^6aJ;_kYu$v+IkLv=Rnku?+ zm#QR#F<_X(lSRd_&y}1}4Vlg@rq`39H$d;VCyVt!&XAN6upeY&KZvm(mM&V;KT|+e z7+U32F(>>(wYk^(@D)j`X&R;|yr;7d+S1)4H^gX?ckvsiLk=2W+ zUz+Imw`{!8g~8nV#B^RHmry}E2=3Nqx}J^;Pb;>NYnm8lZ~Jk01jYtC9xR*E#ZAUE z%+4>;=Ue*FR;4k?GgvZ1IMVvx3!UYsF%X<6RWGlZex))Jk2O}wpNSV~zl!2ofK$vI0r zu9dUp5$etjQ*>0M5o4z3xaXkSGQm*XkXm|0kOW$1TA8h6uozSBXmX zR(d781UR7KS(hd0aW_l;h^|%NN&!eX(8nvbSu}Hv=&o=1g08FqGynE;a;+6jGS`5w zZSvCI{W$HFl^#(A+4fQvJX*BgQ|dEp24tHhR!aG+L|x;uci-z9!0B?|5|!(Hr-}tL z&bT|pdi#t2GrnE;^RE84EA0z5F?y{SssElzmjDh%&ZWbebld>1r`7Gpxj{{QdV_mg zxG{|7#+5~*v&Gh+saquiBqNTZ_UlABeg0N@Vx8!~m!V*kQGs@?6V8gO`Q<&S# z)cuAcxWjXG9V=VDqEY#xaRr$*th#TN=63NIGrL84ay?dB_(DRpakOSV-g3>}N)7iT z@*zhKZ>4Y61F>IirHUI6&e%o|a=2j|pYO%df(^)YWE**QqE~Nkfd1!8`^zu zO8v}#xkXhL(X@r^a6q_M`= z)?#RBF6#0PSmqC_Q1XCdsA3*Er$!B%g&jPWdin=D_&~Ff{+sMi1-g_6(AW?U3M(i3 zv4QGt6ft~9O13#*V_}o9_ox9Er^s+?%_o;^sp1(94@ah`B!Gl=1a7kPw$`4j@FCHLP?A4OZR~K!`)P zpsoG8Xv&ttwyK7eR^#!tR=T9tBw8wa?--+BLM=-BG4zI4jWN#))PKE;E^Y_Uy6wg4 z?MFSP3P>=U9^4uL$EjNj+ki`%6I%mNAK~j+anwhK-|=O}Zk}Or)PEZ)SihTx97A)r z1-2h<+XvY&UoQjk z*ndX=9%a_B&=MNFydwaQHFu(|pLR2Q@V8YpEL4tXgRiyFl3J5^yu34Dj55E!XAtHB zc~}fRu}h6{>@LwL==D8vKGjsSV)w4VS)oqZb0}*@UvX^G z_s9luJ8lDDoUkXb5iCiPWXA3ZXk^u%!bU162$m`Vf)Zub3Ib5}XaTx&We<%kCtrCxzAp$snamnyyNZhsgx~1B0VvzH7j2~!(0h9e+o~Fdg&X7Xw-!`V zYZ7In_XUhmHEEyf6=_nA@tb{WjM{#1-!%oi3e?lzDWLuweo{cQIlNuKVnjVXb1!|r zAE@25SEAOw3)%WWAk=Ym&Ap`84g^4b|AE3D;TSODU?FPh#z|2Mdh85_w;r9!O$J5S9Xu5qygmD|;XQAEjJ-g%;j)(+9TD}4iBD!x@yYZAh)>XkKzuqPdONp#Q2^=LGdKRjNHX8W z`3OY5`tPE%SoVgzi<431S22>_d{;#J20ypW36nl}S3FW2s`?+Pf8lKrA4~AISQ1>< z9)l1HDeKlT@rbscdK?!~Fi;tM97?zV*=x;l00Hsi$3?H8cNHDM@QIh)m-dTb>T*Jq z3i?c?N2~O8oc%AwcYx?yp>Um0xFOi7!+Y*{lB~lT8 zEDp^gWYqD@pV8)&zo1R{XDLSdcBNjJdiKzK2T9{8dyLW2$#S~Oo9c5U>GL^Gdp{5@ zL*CvmXLh)2Wh!MqbMVOlq|G>o!#9K*&MDp5#dBg#aQG=;u zs}O(u*U7Z^L+lKp0}MWo0!ve<#d#0TCC7x{re2)@f@kxXt96Eb+>Fh_MHP;+<0X6SLOBYnl{Vt$p z#OGYVE*vdgxB$L_u;E37`O7KwqUay@Pc>>b1^*7)Qh34fjp@R2GA=a z@e&_Bq|u2>B5GI`+hg%@F&rFM#cy`isg@ILDgLTjxuq*&V*YOmP}j@i67;2YuZTFG z-#ps`V(#jq9uT+kf`m~V*e8*hh@UVNlpYWRl73uPq6fs43KsDwv|^d^9C%&T(*jA! z%ajMidCTMg;PvvvCpcj(_J#@Te($2=pNhOF)ff0g^7X~xNnXybd8*RZ&jh>X`QtMj zYOka^pNqyg%? zTf%bNx1z5*80B*M_6wZZdnxytsD|MEYofZb=Da1MubVIb)4$#aSV9FrpcW#K+5PkG}(T1y{@4+Dt zc&~piA|*4?e-Hz2w%m3|g?d0YMj z6Ch?tQ-22cMN?;g7XRR|!A*!A*HWqfP3Wa>EvKZLSRBtCBf2R%hiy0@38N(tdVM*4 z$Db~zd7Z!T(FJrOr+yXr7E~u`n$=i?yNsQ>wE#i)a#j_3-mpgE_tkQEvBog1G59^I zJbq`W-jmoH4a<+6G7H2{pVEbSIT;r0krtK z+Ty=g%5v8Y1nDCQU>v-~HBImA4=i@Qd3iM0_&p-fJ&p-e$a{vg((as816xFF< zjYk4tJqiIJ{2&4Vmjl2xkxs{0uNXfZ|F?upW<~339`g4UEvbQRQOSB$|0)&cOQ-(A za>?UYDwbrlGy=yga2WHl+iIhKky_++iC~48kR;8ZhSSWla|>FOrw`(-aJ0$xO_Mkr zoM8P{oUfGhHWJmZYGv9kpV}tHV}XJ`hcU%_6GqbIs@BVq2iVd@O)jWwSVF~@G1aW{ z6>l;+xuD0yC7v4NG&_}kb(k#5h1 z*7eGM>W7-N4HGZZej)L)=JRobOYLf6HRO;VAF-Ls-0ou=={Hw=fMH$!Y;NV-4fr*$ z9=Gv^O6uOZ?%UivqOo)L^o}6ux4pzwhSs&m6R7joc(=8;pwM1S`#MiV48@n?t?E@2%zdJYC;7CjrLt=&PZLMT z30npf(e5fOMRXRP`*{YylUq`b$T6u`J>txm7dPj7!QYxoQT)KsP zjms89Pn)jR-Q2C0yIRfllWWM^)p|5)vg!%+ zfY1cqS|{Q4CdGHN;=+^PlOV{(_SKV-O`W@0gZ?D@!ERPn^c7t%UmDlMix%{j?QSh+ z#;~Oaz=8>Lxrg<*o|{c~KV-GnudG!%|Ez4ve8_sFLP56dLZR6oH0aEmQptGO8jeOr zKWq)!Vgi zSpF$FtVF;wYaLNf%UvaRjasi7V>cun{NqL15AlQ7um%9O({rBA_q5_6liliRwb4?& zt$JCn>n(1`axS~Gws2*6ZmQ+28d|ubaulV&8`)~ilh=~_acep#Ci`(~ClkTY-d00- zma@2yl^7&R2Zm%cqK^fW9_%CgSjTx-N1w314EyS&97haVnVjw2*Vl^DaP{uolR$2P z0&0ugwSmC&_wP-G^JtWuQPK=iP>oM`7p}A6VuvemYmYAtPge0V8Hzl8v=QW5NiX#Wvz+AbjLoEH2f{-EaxNHX z)e5_ys3iextzaFU9BAF=rl^$%pWcRN|A?BYPtT6xWV5>&u>57%$b_V-WKp@{^|%Ih}8#2YuZrjL+uUkM?=BRVZ}Utgf$wceV>f5YGKI;9|?#pp{66PO5vA3 zka+%$H%NLO3?KS>#4^St9r>znx2nT zlZiOhow32YXbQ$3mZE^&2m`yYLG8S}Dv39x*Ei7lWb5&;i|@-Ganh{~UQdcOSPz@3 z((VH0*U6IXsCSD>tbxRx{zQMf4zx?Zqy<*!@EqMh{nD*g`pz6>n7cjQzl{Iolbd0< zkC~*v=~TcC+3d@z#96Na{{Xux#qE*wPAbgPrLj;>C(o-B7% z!Wf57wyQe%dYtP6>h-Es37%#qzG_v5hm*`#EqCR7p9P)IxW=PW_?U8^Qhhot7h5Hm?Bx^^I4DL!>}1vOC8}`Gce&19-3hduJV^H z;y#mxRv&r|$VY*RuYn8^E_w|UZYSM*&FTjEzT-@*F4XT6XIh=R?BQm4enR4mshV_lEf0;&K%(bfNpQcgxJgZuRlMLV?@o|b1b4LJK z!OBFT9=&3zao~JwaKw6U!Y91u=F<83R$L94=y}`WI-xqcNYl(D*GY~rjuuUyGSDzSO>HV-i8aU^?K#AoC{~@Aq~J&IHxjIl-=aj^7qA7jZWuetAk_?8v;k= zpzyE`KetvSEdjvAMDeK_b_J) z_-c+jLV_LW&J{=zORc-hU-LHzsQM96uo*@xR-}%wTo!o1wLH2f%X*r_6u}$SOtOZpO69eG{q&d_4cA6<5wzshJRr{lC8^Z`cYe1ZK=I zQeO!r5yH_ct%DpkeGAex!ewt+OE~nbvZ6SAY?U>f!-K0Z@ey8MW!2=c+-j>~or2B0 z;DRjCW4jGsQjpyCs6;qv4S?5z)mGmaU;nlm>>95SzNoqM8mnOy^}ViRC*B4e8zyWb zXZKwGvCyD3&^uhB#cQncjE^mAtPcKh=NjxvwJ>j)wb-a!qGl@Svlbg76j`tqvd|^k zyVk0R;PP69o#<>UA>%#NX{?gnt)hI|NWLSLR7mCN4K z|BDS)Hh-Fz1HA~scXF(W9NwD?jSa%*a;;+(eC>rM;EKe90c}#>JZp%4HH{ACS#g~G z^E^nk2%|Sz=QzBvQB_-I6J%h-mudpTZX zi#0gP*L?ZH#UG#E++sEIe~K*f>8mZ)ST6m9*E-B$;#SqlV_U5q9FN+jdew28>ebuZ zth+evA3Y^8e?SWj@(xdqslApE+(I>h1Ty+{XFjNAvBN7!W_a0=4c zvd?;|!RI_p+>qbhPAp*YL116LOS2`TrQ?3ZrN-^In)m@x6g@llTQj-gE(fgM9IiQ_ z&@|zo0`rQ4) zbh{2+w>sCGwBn!Ld&e#PHt2RZt&Vjzi61$1pu4qu#Gq0A$B!R0Zo<&fqufvT#}Ed# zbjOb$G~(%cbUV&@H!Z8^{D5ApEd_V~B7V?w0@`x;?>}NLjyHwdqu4=i_uL&e>R{J&ln@ zb?N{7=w~K$7&mV8xK5)c_8&2H;G^S)Quj*ET9jR>q(Sto?Ce2RVx0{rH^$kBPFHr8 zrr%?nafzBk{nvKH=mEnA4Qw}h+Gf>v+t>Ucf@wx{&+X>3LZJOQz!<^e=samRYVX4WV?{kFYKTx3(9ZJQDbG=k% znzMRBlVF!)Ac{7{UuFFH;`iWpEdKH%sAHP5X?%RN%kd22(?W2Q3E?u!<#-<9_h|Pn zj?>aK=iLd{<6VxY5IuoEfxnMKRrOK2!%<4c=~kK(8;MYAkdA77-|t1{PWV2_>2eG~ zcoO+5a-7oAo$V5aRdP9cA^Iwk!w}97aXB7ESPy?(?E{gpA9q$y>QL6@=!We)CWfPm-P7T9_c? z+w3@IgoMo{RK^8-@yo^HSBk}xke3JJ%ijb*C>;=QZo@X#nWP#Ra9y$Z z`eO0iV)49U@lbRyumcf@GZtc#>=Cy0CD`$tVijz#!mApSh!^$}0O7SHew==vG>vD8K z#%uVii9cWb9DY~B-*4eA$Abtf;Ln3U4f&bkQ!vlD0bhJ3;xUM?+w5|@(9Gp{34fFD z*QznfROu-vJ@no?C{+(31tMuAp(z-efb{;-n=~m3f*z2ri1ex= zNL2(2A}FXdxzFsLjfZ^s{{P>-clBZBnZED5^G?~E-BG{};3RMpxCcA}SgfB{DWEnG z53~Zh0|S99U<$Ah*Z@@7hkwokSAhqBf)*A7Dgq9mK^)bcuD1#(*#cp>8+ma+1DXRb zx1f2`^(u6Dy51wdI|A-Oj50wF;667^U@F37UxvWeHHHgYVkpDKN`77~;Ew~Os8{*> zd9{Qq`&o+G;@#kv#^x@J*bulqU_u+h{k?+8zk{e7L7Ba*0#_qaW)fxmyrg0oeh)4! zqqNo1A{GPW-Mj+G@Lqs*LC3s$1BGq*w(@>nZzKF3Aa%jyP$q_w zc+Q{!RjmNHAG<~WD*UejPP#TzubMvy-T{ELB{C`vcpVrFqytu52K<(QGU4~+S>Q6P z<{l_AT-h@@fb{1A^0HJV&!iU5H)ci|nC#9x4F1BIrSv6+1M;%Cv@J4hCGtwUB5jEr z?$R&Kfb4OpF0xnOD#X!82*baZk$DWrSYRA59+&{gZmkAbnLW9g*~_c^UNi4Rr1Q)> z3A~a=UQcf2?IH6@G8yp9JQ;RHO5g}kR>r%zoC>@FOP8NYzX!hvehx_do> zD;ub`Gr1181b7*^P*H5gR(asq0i+&wfJ=S zgAGpo=jj3Y(>&tRRa0;?5ay|~p4`&e^85X~W+I&w)@(rP>>NN|@}6Yx7t+}RmF?lq zJ6Bqq!kN+DB6W5i!llm6Lgx8!7XSoEom~iY#4IBHKLRji1^hnz@ql&7@)rS>U@FH* zJ&p#E(lrCT5NN80#ifqQ-mv%v_(K7!!rk!K@!;#>mun{#>L+!-As{3k_NYe8+Tj4hM5thAqD&t5?qf575(;g@&35?BSS2HpkM0BeDDfRsWy zH+Ap}=H(^xSUe6~>SVAFmao$G)B>uS0S2!Qe|^Bp;D8jQNG%=(E*oU=@Ivu*z&-PC z1eXI=cAcfz@4>%O_P^{CtDu!=nM@do=}8(sxrmb$Tl|ee{2}6sd&J9CqimR!{z0Mm zCWYb~=NAfi1>Cd1#f9S6fJxS|Gj!N>4vy(qCWJ-G^m;%4F zT2_JmP(y$RcYsR~TJh1~tv&c; z4k>BIt$1leJoC#gZR-&~6@ExGzaWDQkW#P;SO$NL2OkH2T@OA1eko!r{UkSsV{|8a z%c$vm4PVWL%;=m2Al#e0#|_A!L)P*8v8wR+ys6Aj+Zo7$gkMV(Pr_MZr;|{&)CBL zg*%pAXYnWCQa~10q1>MFKHzfLTk&$uA$tlu-zZQnN(2I|3irFEwz8t1v2T_JM=HC; z1$ZM5ZUc|<;Iaa#(AJqiS#YU3R{rg1u+-I+6$hCWtV2Lcj|B3xQm!!y7jSaHi$<{0 ziT`c{a`Q?Kppo`NB$G=r@%AdAAn$_Ww~WhuCxTt0jqx5Km||%d2s-;_hR7k z_|FE|0UeOaCF3~!0`LZ8`95&v>8m_2T~i!A`YHmY^{xxFF7D^m53V%EvWMToc~l>` z(pE|Xo*ZBvj@On2cyRgLp%VB-94|@3Eq4Uc`dB;!Tv`*02Z77_E|wwwt{##vPiy5` zTOOLqgH*Z2DFu`UHZFRx6RVx_^ZML9y$(ct1j?C&db`410WQaD2bj?waK8m)J3qzY zzZ9x$gXHqEgjYs^)!Km@lL@Av0BHuL^eqXNgTFlB*%KAO1At;kE2SJ*hzEhousvvO zFkCqSRRpBJ5&+2?f^UkvLav%D$!vjSr0!dM6?h#Fz6)H=WS06}hQAt68HN5oqxb($ zX5_5`R0XUh@lo`Fl+0~^db$QWzQypHJCsF;^IQ!V-k?~^>1rs?lI~0J%S%dHj-Tpo zF8$J5!_BQOmFj4<1*`3RLr1JeT3anSn58aQ{Qr8dhf3tYxAOn@tzN#l`TT#~>(xO; zmL%%J9}0v4)+N2+_^0rhY=1mB8;dxH+?1AtXV7XtuS{SRFcnw~tOvdTz6YKI0q^>G z#Q`0G!N6o-DliKmU=6Sh*bAHjz5#v#o&Y{;{JbgvwSZWlBajW`kHSCWfVY8nfa$oA^B09FGn*E%b@k8)o^qteOuJ-u9PXV5M{SD+iv9q0kP40vAFd5U@P zLfIJ9iPix7cd(lS{3{G_IWFWS2dsn~8&-O2!1qL$C5B$`OCu!3&==?f^rQ3d={54L zM<#N($~oTRa*j>#;Brou3sNgy&Uuj@T+V}Xim>9Pb&m1i(wevQ;2JpU%lBIBZEn-$ zeApE5#VThOT-hBmtTUEjZ^Eq)lmV=GX_aNXRpFZ`FxrDp0*~|H^9%8Eux=&ggLUiC z1|dMM%d7&o!7rxS{_{Ps+xK5FW{GEz#EggT>h`u&5pXyssAQeY0Hqwxh}*b z-81x(>`<$o^N5#xL9i*9AHby{wI1=DhXTkOxA??D{2t;udc?aQ5#<+T_}`upy$(Tm zR$x6dvIKP&4U$VIs{slY#GVaQ3vmZ{S-D=YGBhcaplKmK#K`b(`ZLh+svZ?~!5zyb z)3)+-VzV9)nTiHAc?rV34Kj{uaHlkJ5_99?|3I-Y(r&30&}ren<`akd#mKx|F>Oe;9J+ z1TRj0yY)2h;GxcLordARJW8z1J5a(Ny|NNQ`*z|lTt@EJ2UF`^dbX?29zCl?*%(J` zbZkOYLR3UlWOTeECNeVaZFL}>{ZbEe6<7G*N>M4^QAg5NUs2iBfN_Ufs)#aNV{Ck; zQo4wk8RQ$t+tJ-1UW~GWxb7OG^XwvPnWer<{(-z3^%A^sQAN$BiaxxjOZDatRQ$&K zepx=AYWwmJ*#h+~S|vmmI#8C|=*<$m4qf%-7uZ7eB3<)Es`~!CCtIY>ka?ETttcKx zX(f4md{69wLTAf~m*`|kep*|iZupn>rAnoFOLYZjT$U#kCAt+JO$)v~OCz|YH0FPm7 z)KTW0-3jD%@dL9LWEqX$b4LX8p7bP$M=R^4e=6Ic&XW1tNQwK<0v}NxACKVG<%?rO z&_x^RdI+D#Hkr+8P5UbHIG@exM~YOTUb#u6l;<_5MkPK8-vXPd(wK`pkeZa@dSKg5 zdCj7nvF4vdbxUdKh{zi3%*t`%54UJ`fT*E$YTl_iZC%U5RYyCzzLuw!iW!!co0b=m z8{v#-+04<-`M$adf7Z{#=tO1y7W+W`OR@+WU4OJnHCiS=HNIZ?5I;ZW*UH33$HzoR$HX`i;-exR(Qyee+tuUbpTcX?wW`8KJJzE2_f_XP z&=5xrp2I#;lcajrqSG~aJ@&D>LM9HS4x2cqjM}`$f)DiKG_)p+2EC;+*@`rjj(UJ0;ssE9>$`I;013K#~^9K{G7T2*YpL zkw8hJ#fZ|Ajj%)H8-|vBu6CkJVZ5y@Db{(Iz6s-9l`o{z-d`3N>pY?+nth(@q}gBc zN>uSHZnMR7NXty2o)7hKc2td|GsDpRl_GdK^_WU`28jmhah0;q=}z^8N~=nUSJjiM zE4(M~uIQ)KbMo%#Mih^wMp1l`a+x)cxx`7Mp*o!M9F#|1%C+1F}5z2BEd($YS>qjo{v zt4JC~fqnU?GEtFHQPJ_S(J*O|QL(WxaWT=~sI;Xo@26c<7r9f`@5g(UDWP)n6DGej(f3NHZb#_7ezC{&yOQnJY z#i`TlMOS-UU2LYh@;Xm0s+b?uMFk1UQkyq(r-fi!lw5=b8{^@aijQY1qUB~mSK9AHXp0VZVz%-c3 zIum%Z`dD@K?9KfY^@&Q#+q@Th3fsGK8cMK~-jDW9=H;c@G^R0=Fz1h+j!EsAdiZ}# zR*(JjKc%=g8J7FGy1IxmGT0cl;l*%c2#sW88D7CX4YtU43LnkJu}uZ69aZ`jL-g20 zUY(6+TRg(Y%-~^cf@jcznLJE+o0d=G)3k|foI;Knyt8pr$|Tx0osY(kbi-%xd<9D|FD$K&oPh-=_F_ZVA^|LUePiNCj7B`#6vKbaTBH2t9H+PdGPMI}# zg`+u}%|^-Tw=y02hWBN2SU)+9)t*0#M|#g?-$+}F8Jog2?x1C>`6@P#Eu*m3d$S;gnR~Iol*pW}ckD@P)=4XADu#@f{kEc~% z@MyX>4|8zxSgax{zQODHEM@zPj?ZJu7(U6-4NHbOU3hY7ED?G;W6i%WkL_;!nR!bZ z-Id3)&9zQziwET4C%^SuoW)^-H|~n*&79^y0TSlwQ2h+u7|~2wT^dIS2Oyc z8(*isYq;Swu{$5Gu3_}NJJt(pSvqz2Uhf_dmYzN=BMh@ZTy#uAWPDs)4E~Rbam1{n zYioEPbv>id??nvW7Jqs@ugl(JRq5<{UcN+fURKVl+37Fg2w&HJ?Zyd_Ou!E0l^(`7#YxF}KVfhe|~g*|@l z3=g0`&hlUycZQcEz8tjuYod6usE&!*SY<+q9BnD_91m6<9cj!tjDQvAcvxgBXF~U( z85xN=X>X*&C%OLwJ|d!J%Y@XNtPE#bUP?~0s8-IsY`SVLY$E9F9X)`uo?uge3WC&T zaYnJq0JGFHaAG zqjG>Yzr{~sz4m54I{j0+IF=t5pRqY++sJW759~NBCCTB)%}z;jqU@B+WVytSbw<6C zlGMYfJHF6ZYTK;6b5P5cEoHiBrz4^}vbHpGHtXReWjQ1z1zDp&kW!T0oH4oSX-O&3 zQb5sd@lTI#Da~GXwrokxy1X8p`Ic*CTE5VZW>Lw`L+-&8^k47yb2g90e1(-nqpx`? zJIvlQ+1Fq5H`y0#p=6;H{S8l7jx2Z^E8U~)(2Iupg}LHq%;$zhKK6p$KF&6K*yoP< zDDuu!?8x>{<)Q54e^}~Mrlmgpf~96>U`Y+TZRCG{2JddnKZZ^hHqAMo<3Mm)lmQXiSrTa27d!5%i?^%V6s zb0KbqqW#F0Fgn?cpP-pd_?|LFwCpG5LdMq>_A~p-b)p$hQOXsO>KDxTvW++_8HZir zKP~w|vvo~c@^{!Bc2%}6)QEH;GE~9Gt^QfU|15TworhfI)S5e(ZY;&oK-f|&7V0eH zEAcg&ck=j7b?x25T6Cw`s%$-2al@2x zF8>d(CsoF~x@^VLNtxiv-^LRaW$FSW7Ff@=P3e z`Cj8mKI^q4GhLFC9H)3$3cm(Rc6vP4CmZPEHSWY=SHg8D-9}n+o#*2HBEC2H2)0=p zS+II9PHk@TV75ieEtnW|>h~QF#`5g`cQ}i~{GwBn9}s|X`yCF2wwk#s)70;=@7bp1 z%Zx$v{3fc#9>-nahuR2_aBMSlI&_lBFvZ zeZei>SNm8StI&Zv{3V)j3j^6jH*WFC+D>hfJ9N%%K7jAiqNM~n((D^p$Cde!mt~)5 zp>*)7UYR;y)r+y+T9{;EY>yU62e0dqY_HbO+6pG%{UeosLgD-At)F;bELAT3gvH@O zt(Peb*=+Av=cigLvl8@0Anp7ahlroiwV!z>yuU8&7v9$Px#qwaY1&R;`uT?9&#g;Km&i{fj+0TE@tV&jB~3%+VC63`xz~f91oD@={+b!jeEQ#4xH-U z!=O5+HK%Qld3>>mZ2ass&zYT=H|RVayvI}6ms$%W%GY5=;kT!`d0%P$3QF>&o%eZZ z_I05myoFdw*it|AW?mDm{X|&i#w~vs+ppGj9K1yo!EXYYPE3 zr?dAFU+Qljzwc1kLbnqb$_K8nU$wBMin1n zg>gq~O|#~UCjPPMSy_XJX8)?SH##xbL0$jA=H>h&9;DvY=>8)dQ2wSx8b#gsP3{67 z<9_aGO^y30mQc_)_chx3n73oUYhBD+jef!_sDEhG`3e7wKhXNiB6<tg77er0@d-YUv_3|rT!+)RGphR! zCZfk$iaB-PT_u{aCt9{q%5VShj_j$s$iIh)lH~i02dd9Bn*E%2@&3nMKaNqQjOKGu z-{-kD$}B$K9XMF@#M{!95~86pmJ~(w@E&Kw;E}70Tyz9>DI*o(r;Mj5ipW>+{%2K; z#<9a>Rn!&}ZH;A0Jl&b0iXgh6ieNs;*3ZaI_e(+!flS1+$+i@7yem@JJGPE5+7GV)i+xa;WUfNvWe1cx~+>ThxcqEl+CbprcRxp zoPKsup3SuNrhdysZ)Fy}Z5KfNbp{vp*gRVU z%Hkr1u5qDz&$qRaRd&pcq^@?XT>XTo?7hI|HvO@*jf*fkR$SC95t(NGYT7Bs8_^0O zQZRAB=|PtQcnLdB#TVJq&F3R~y+sgPY#S(9SHdHivTTWMuo;JkAc5XXZKmcxGf_iL z`rb!4_%ch3s{$cLG~9=lbF@BVg{Z-n+fu2?8j>N z9P}66*#=v(Y;-ls_rtQaNl8(ky=QAGlh@br&;_|S(t(oVH%w|*Yl|w$0Y@#lrn4wSp*(M=K{Ph)!&~ zt)0B#f9uA!IRIkaVOvYVS$rt94-^jek!^%|E_zt9k8Q7$UoPzKrLQq%^$HTjn9DZG z)Sf9pqBq-VX-{ylC~wnoR4A)+=>hzQ3=(!U51i{xvpD~elqNmiRm;+fcM!~B62 zI1U%`ah8}`S+v89wXL$a&-UBe$WyQY+FwP4VdA=51p+!~njWnP4 z;BinF%vcfCL=rn>%aMU~==VmLt$v9UCFr+mq5}Kec1tdP>r&iHVz>RUEfy8yv%VtK zE$lC-Zgr7^d22;=RCE-b6INZcp_giiARS*NfLb({$;;AfHAE?P+?Hv^@2MfG>nCh+ zR(xfnN?Sy;80Sd}t|?sXlx>13(+;(SA3JU9Y07k+WM}X$@Y!|n;4V7~3V9hpn9F{x zCDPeB=$A1RD@G&Td8oUw(}0B%bgs6jkMGl#s3TgkuWa$;zfQ#CMQJnZh?=$wwgC|P z)vBTv{ZL25;R~-2To5%0gB)7dg@#`r*NF+m zZrB=_1K)vVoH2H-Ke6P<&j&L!==X+Z{Ga5G2isf`PT$ELB+UQ2OXr%sNqskG& z;d9H@v52H2BSbCl+vYIu2x~m{0#*WVIdF?-B1DY$kG7X(re3*2OoLm?A)?ivY~*x^ zEcIs_opFfT>=&qW$X!0r-Yn612Oo&LS49LEV&c*A)eFC(XK=d}XnUjxQ19C4bR@>? zZ?*`J{%R8?inDw8+`QF=0qnl5o>@{vESAgLqeN--cN-mz5~+BTIXR+5AN7Harbpv( z+Cv-Ni57#{pSI@oYc#Cs&=~QO`j?HC#)x6;Z`&KREJkF~l}19?a8~rlMzdqZ9Pt>R z?KSR>5`WYyQ2Jdc#MUOF6rGI4{b$9AF6t8-9gGtr*;CtS+7~ZI>QMtz@}AkoP}2nQ zhKNnfb>iIiAK07(F@Zg|wKV3CpA$qCOkBn5iQ#OlJ(r%<6Up>TJ>iSbhdik#MqtLe zUSFizQ`3j$4w@kSgE4J&Xdqt0+eWwb5&hLkc4G(2Cfl>ZNzA{)ZWJ&#A@GVMflh8KfT z(~~%nI*dGQmHkahtOir|^#D9c{HdKtV5{vOn=#BO)7y*Q-fQgL%@L4JU3Z}s`5lDt zG0#EM({l6HQo|0SGp3g59Yhb?dV41f$^HBEM&)CiaoyxAPIB|2GE;_cu#Yf@M1)z& z(2g(}@6r1m#dx;S{+6}+vD2%a#LM2B>?6(8n7Cz~4?BqjytFaAvpB}K*oV;7C1MDB zA98VY6%Ja}1ycIJVoFz07qd`USFwO?vyY>Qt|FG6brl^k_q6XOj(Kml=b44anuYi3 zE~2qrn%-S3WFJ|j^zMN&KepH|$z1l8()NcD&hGr>KEDMGep!UDop$5k-8jccQFqzt z%$IsM+L(-f`Go5B6ph$!J3iIrK4Ng65a2MO0!{BFLbN^hg^F?e=X!~uY_ENN!S4D~ zb)VgM5{})Iq2LEh1y>HzkiOyrob*=iCtlG$v#(>c?JRHR+S^YgD?W$pC;#(Q+J)2F z8VdW|-kMhR7Y!&dOZX^<$!~zDLf4$4CLY*Z{@@b1d5JlB&fz&Y#yw(hYi4+oC5mG= z)ilY>5JXq{V=x@^2&kPXO0eVh#xi| z+OgB9!ar5iBN~9genytqq_{Z{oKnMb&&r?{)G=FdoTI|uft^P+GLJn%D%Y2ECJC$P zuk20Df;uM)UH#g#BQDUsWU*QO#!k~SMX)>!;q+mqsEyfZPm1WKT#^lKi;WXn)WFx_ zaCkKHvJptvQ*pmn=(kkS9(yUYq5%!Z5AKv}rvH%iUpM@v9FC}Dye`L(VB&!ElpAJi z>)T{wzmtt^Kr06cJNw>jaeW?>o;5rr=cc>6e=xiImfN1)wi}BM55@Co=7@LxXrCz$ zOUVDaUXd2QE;86p_DSYUKYB0*_|Gt+##7}>gGF8S7rTq6ixvvIV_z;G4)>-F8KRZ? ztDWv;h$ZS>Lo%Il?g&AIQ^;Yx1Z{O1%Xn@5yXZHOqP{$;0xAz}sl+df(@rou?% zh|cVhr+v~M+n*`ayEp%tw&o(s6OaC8PwmU(Vk=NC-YQUHo_Jk-W_O*;6Z3HjY0ogm z8xBqD(7fTIB71IcV}xMG^%AC_km1nEvAP*HW4L&UjdPQWAnJJCJTRT08`BLYq5UI7 z1}347`&T5XEHP{pT&MLI=~7Mn2%-54#NDbrln z-V#jFrt6CpkEN~5)AcP`FcWiHp8<) zw;6|j@9B1|Hj;)XZ^VOfQ6YSjUOqV`Hz_AA8;@L(9pll71h7DZnRjbWWNJaemF+K9kuV@}rag7|HEX``8uhT(D! zjf!-p;z7uV3ucLmIGC$6O9ZnWdI;S(st4GdDCZ+`&JrQY$Mn`LQIomwim!&p^lG|{ z+NlT9kYjpa@m;z|8IhKU2X|?CpU~4;BFJ~QE(+SU2bm&{>%qm62BjnoHt%9Db(t-y zv3=Nu$SBG`u9sl@_38#|kvnvNl*fRS1G;Z+UUFKdArHfMQ1^$6SBY6c@P2B9rR3yT zVeo!N_Bo;|PUmXR!I1f!y1-$F^(u7ygkA-6$&xvubM+&784vNMW#S%WC0R#xZ^JcY zbBz4vigMkL>t)R_*)>Lg$~9t2V#W#G$DJ6nQr=0UEooWK)TGS3blITP^iz54ND=OxnGqfTlbJ%&^o`F}tWn_P;`#5DCNrQ4Sho*m} zbIG!kvPXWc+huU}$P0!id1&@Gx-A)xgGXM}h0~dyl$Vp3nR`j+vVroAYv0QIF}=>5 z%SI-=819O$BQz5=UDdVx+yOa*uc2yVeRo~w$?2x|hF&~7CnXzCWSvITce*Au=6l_q zoGv{#b-NsYSxGuc^{AYQm8AH?a(xQIRUBAu~Te&irx-P{gaKLiWT@B1MNuw3w z6*VY>DlbIL>E+^OHMoaKmaoIPMKGob5&KGyrp-FE3@H>**|7cI?%0YrE=2KVU0YU& zex*W6;%~1NFVzvlyh_?r(^Artb2(F3sQo4UFsNnjT~(iQCRw9wGN$_j=2{Oi>7Vo=IUO z#EBikAPh<|Q4$6rBt_^FLfrILA%y?u`(11AbIvrP>+$Bg*M9&oT=3J?yCR zQ_nto#M$K|Pr6|Eh?9nzM!pz!39^Sz8h+~8qsmVo8cVIo>mdqKZS&jpZ($kDxz_S? zPQUQfbeTdi?0hk-r8sMs2-P_1^fOK!aqcL?$nonJ&Fas|-&=_0sYjX}CR(LLY_w>R zx-eEOTBmM`b;9!#u@ccTwJi20JQo#|l(aNjA2?*l;PSIiJ!j;IGtW7-{NxcsFW`1j zd~iYM4lRtf*%?NiebVUwTIFe(npE&=vm(m~>*#Y#BbvIXc?S_q-P-(0{B~@y8-D-N z;-4+rh*QO`;&ds7^%18FQDulW^-Ef;G|k8E?NUFd^|ygk@Ae&1SG4buTHU@VRp0K? z)JY|+QnT9Ih_7(3ZVD9unXm=m)A zC4pk3CYE^e@mUUg(97g+RAiW5dehHt^t1IVm8a%<6|Q~!IWDtc zgL+@C!z~Y~_^C5gxb;yLzRI~@LdL zK>*#&zcq7Jj%7MrQU46*eSuS7{Cw~K77O}#^b@9#Q|YB zBC;-3wd>i*Z{;@moxCgXmHbA&FSp9Cy>^F6sW_?dW7julITi-MbFec&xPJ{tH^t`^_RkK`)3Qm&96%g^Me@yeF_p-fX(&6!UKLHnY~8VNN!0 zG;cBQG;cR=GH*5SGVd@anopZE&6mxEN%JN16|=#7*nHJ|(|Xo?&0JzGG8dcIm`|E> z&Bx6b%;(Jc=JV#Y=8NWa<^nTi-e*2zzHk29Tx)({t}$1epP5_DS%G<>FXSBSG3!Zd zp0&Vw#d^_t$$Hv)%6i#qu%5G?x1P1$w&q)JShx>aciNq z#CqLYY%RAY1g;584BQmBAuu`M2Cfa<9JnQLW8nJ0M)9%OAZ`zA7Iy^Jh`R$*19t{$ z1NR2r49pHZ7I-UgU*L(r+`zvAj|Y|nmIdApoO1G)fz5#}fmCoz@T%bW;N!vC;75U5 zg42T!1#b<`2+j=NAG|p@IXEpDTp6ef-WPl%cxUjA;BCR%gP#PZ1Ro4O5PUdzV{lUN zp5R@6RsbYo~z=%&zn!6~78LQ_MJ zhGvE8Lyv`~g&qh^57mWch8_t$9C|49d}wuOO=xXsU1)u1Ln!y^$J)*eN%x2gWT6~e zlRA9&O(j>igNjq<%%(TRd}6~kn8P5s|0dz-Dt zQZeKWII6H6utn^On$%tW2FVAPq&DGObzPax9^Iz&mzSZwu~)AZezbZLzl9gr&X!94BK>?RoRxaRb{rEnsuos z`X6oH_uB~_TDDsinXct2gCt+y>LztvZls;W_+Nm8G|0RBDO>) zuc&b+9wePsHPoLxX$MPXG#&;v6aqdU_^y0ud}`4?hnTmZjg$Ui6{U9H_X>IM>u$^r zv`M|SZ=cBIbqu-XAY;q@u97R(rE2%-|Ozkc7e93g8c{Q&3&CaFVOj! z>r!X#-%j5Ddg_|}&p`|Bo%;q_q*@+O(1D?g0JFhpfQCet%D%t_h5cg~g#8XE&s(D^ zDzc@scwH)aKuO8iH@NCb#B3leI$IS`!l_xGntj00c~7V!y^z$fF4gA1`>0#b9=KRO zHa<1!pfe~i53V%lzQKqbT7T!k<4yV88>#Zc%H-2;q-Gq}K6Tzog5?fRjU0lM<*6@ zbcHlP#H!i2Ws5Rt#6h7ToyF@@U;e#gYR)mY#-6y6D>I!KVQkC#)QV$^QWyR06uEAd z+k1=bF5kJzo%w`0KrX+^y;Hy2^UU(pgMU9ray=Ck^f>me*z%03q%&>{xf7Sn6Mqz39wSU@E&IkAiwy6(j4 zKIsYoEa+Y{op5|Oxf%NS+yKjGaM#tIX+H*kRgvOVN&o(nv$uIRBgtshpw5cFAnk zx%8~W@74C|p`)qiLr*<}f;UdR5g4kk`bU43cXj{#L@rxef8A-L{!^*6PyO3f=W<<# z4X=-ICnI1wa82}#GSTy6MPmhElj@C(H_awK-ZFAb+?X1A=KfwKM6Rhv&rH&YR*X2^ zi`Eo2hN8km z_95a$JnbjvQ>Nnjj^~^&^4|W8n9=DB7G1hAb>FD+yoDT-$hV`;tDmJl9Q9|p^t03+ z=XRHiK1==c+`e+jXQ?~S?c4cH&Q>8Og;8{3xGHWEmE}6RcnFWLepdhexg~{6 zzWG_|$n$@YSJ$MD8hwB)=jBbFT6?CY)+ke(Oz=$=K84@trv33#?+)sUZVz1y>uAf z>R-R~m58kSB6Y|3Lo?f3u!Y-OrP^ypwX2xRFZW?urDLw(mCL(98-GT zYKF2HFP;Inr zs*O&KGUsJwPSsA}=1@zcg!lXeC#wY0uh)grjLJFT8Ldp>c5~a*eVg+|{bAS4kh*gf z+1-Hv^73unl34}%nXaPdi_~EgE9B%aQddlTiYR9P>j%kqH>Xn9??=Hq*AL3`sUhIh z5Ph_07I5Y&3h7`6oXK9?cdK|j5{RqYRDa$L?JSS9BX$mvcI{2acrigcLNP&i5E1K9 z?&U=6@3`e4_WGR3=Zel(vre%{Wd#NrcFsT}rla^hm*4B}zPY97v}#jk?=a2ubi?-6xU=8M8*hB-ctYS?E?eEJOxuvWR@zJ+CF7H(xHClJyY^2{;*lQ3c29R z6cJQL-&QI1$Y83iDkh_EHD7Z7FHiSvm5Rye+cFiC(YMK8rVe{7lV!3Q=(Wd~s}TH2 z6P_kfe*}JAO z26Qwo)Y30B=gZV{a~_n-zpNkmcpo9xyp>wl`6w+!x zqO{bT4KX?A>(paUew zYU#5Ta@^`v^toPg+~=vipW8=XwmLQTxk`EE>iT)lwUqMmn))}Mk4X<^PoRhlv;1?GDV_x%wJj}jr>O)Fc>zCR-sh>~ zKRU8_UUqtB!TMJ|I@XkHKTnl?da!sb_1LGKQ-Aw3FLm#y&BSKB?Jd5o|Kig_gq-ne zYM)iNB4hoEReuq3%%apDtB*yNn^vD7Q=3v>t*)V9%$h+IELwAk_^$qtwf%&-ZdF6- z`*l5G&8K>#J%=eASdtdDplI&SEsO2ji` zQybdK_dZX}*f4~qQh|*($w$YhZriv`zPGvl*3b7f<$GVGKHSnqe)&cHwk>-Jx%JD` zo?qH>@>i+jzD&rPuTo>aydJheec@O82nvtc3gZwXt66X6*BK(Fe&yF^3c2!%)R1rE za_tqV^S@2VtyiROMKIyY)YAxNU77m$+pZbqOSkPuco?CA$F}_gbe?Me-Mv3Gxp5=Y z1E(WXYTNgWpdLT;GnZfWOzOMu8G}83D0cUrXEsZ{@WWB4|HfibO~Gw~-!_TcJH5A= z)SVryDmM)0(yDyZ5Hb(5A3IQ`Y31f6?kpinCBpZG*p0##Qru7BQ&M!IaHSMI5Y8?% zMH!j7v;Sm?C#9_W%Kbhl2Fp2L%^ndj_orH%h>Tr*Xh+4$DKSac-6#gSB4yN#ts5q+;g4(-RHxv18GEa=n0VPq_%=_Hy zuMMp=Ofx+NbDp}&U6(Ho)$o+KEA9`pKy&UH%^2tI1|6OiW8}Lp#KaJ}_A2-L z6;|u;=c-Q2{XSpx*Av*RD!R{ps{qi-Wnax+*+PK2R(&;lNJ}wPKuXS@+e-8!9*ZP^o`%Vpy|BQ%j+)LMf8+&Uvg!s*gdPwfu$Jb>&Cm+mWsCMjr%~UI7u$w z?B_k2wgr&fSJLd1Q9p$P;n3b!S&eexJ&p54y{Gid|2gOZN zNbF0A{gF7WkGM^|<{rGeaEQCF*)^5~7n5u}z9^}yyv8%_ryX_%f6f50t_Ye>I zRjyUos^u!DQk75l6MY&dPv+z)lpNhtbZeYk$H~(udGMZMk#?JfFnDfhf6baPLO&jwEK@Ey!ZCxavCKLN8<5+65Se?JdqNIBC+;QVkq?{I6(Dkw*e3( z^WBpMFm0VbK-?mM=N67Qv2hjLgMDKU&K~cGnDA34DfDxbPGU7fF8$Z_Vw67Q|-g4{q6=#TB+=3%SE4TZ8;v#XgTeqLMx?tPa zRKN~9@O}lbh|>t&+)=&tB4cOQ>?J_W0_h;?4VPJ zE(M*bvMP3~d+h;YcX6vbAA#HdK#}9h1EKnEbN8a)c6aoFVn7psymX-GsxhRigSg_g z17IlkAhB62cE3MJbP*ff&IgO*b6;f5=Y(T#y4M^miU+->-ea*h8Te2%9)XuDxqlu8 zCf-q-2Op?R0Y8(iq;dyG?4M`I0id~X><)MH!Q!yol`3xz8W=Q4bje-kmvt{1B#Oly zt~&_XHmT@*WZN)EByy{-X3Hal_u@lDar-OPJK)rC6-VrL1H}>0#MIP~L&Tw|>aIgj z)t%|0-yDLf>ePE4s_Js6SeNvne_d6Dj)kL9&$jX5)v3`OFU5!4O9^`^KJZ>j$V<6S zwcR}Cr34}eX(ak!dP$a7$OqUUJIN~Nl0ncaS}{OnQqM8GBpRBLSUBl$(YD1M#3YFj;uHaeV>i3k9xnE2B4I5t zP7C*|!$s+jr|vgcbn;U@A`izVyB7}@-J3OP&CNSPw00K_7Ny0FQtYtzFUI`(7r#!B zH#1H+_7>GyE)xu_H5l{sb+rU(pGg7 zxt6-aj}%2sugmI+#7J)yLTEnucd-}pet10R-Fm#}fj8$^e%t#5F%WNK zPT;r6Cve(_D((FfM2TB?oVfLOXlS*#-+k#sVWXp~PZR^t;=?0EA>Ia@1Z6Sb6(jj= z;z^=bOm};qEDl3t^~qkAmhJ;516lXG>rWOX;=$RGQ$&9OMRDLzaRM^-s^*MO4u$Gl zs`O!oCfz&~)7}>*x|f^^&OP>2(LpZcmp$a`6Wuwdia)hj`5oy{$Bey2Ji#M7JNF;r zNYOzJE!O{(Ib1|`E9^)b@OU5^b9gOz_oMcp%ohDvwoYk?pdA&St`$0i9PzKD^s1o9s$z{R7mOs9PXAK z1fw;=W{j#L3hp;dlr+YXO^IaUpV35OFG}o##M)uv^;W7{ngSC``21BfTvUap{lMnY zboZO#V$bkewwhvd+`Y~ayQSYopCKv>bXo@CG@K!Zr7L*qoXiTusLTo;K2!9TK*fkr zqN|%fLR={BajzNyoMzH_OZVLoqH~(qLHaG-ZX?AN9qu8G#ydv{W#~C|1zw&gwuV@- zY)1HIq{tT!yE$ixEj#S^gshG)%<8!R#vRvhjXUmFz#aFCaL4_(jE=waW8j={t{54f z;(_z_xuR!yxd%@Ed199W{gwg1iRX$!_iyKkf2Pa5be`y0 zmqak>){YYG-QtTyfqVJ+;y6uK(kWr$@aIkL?W18)HybVX@xfL(e6f1kXh@T(+es6Y z>nc}Y=Ds{yoS>G-Nt0NZinHGZ5P{zD=&2gZDRFnZKpe=r?gG&(PwOQOII3&yF1bLw zq`?rRLooDV9)D2y%nL%~mxz)^X})HLr{IG|X*LND5;z+!-L9PPB8Vr&LlBgUlbL!4 zlv2{RgXf~1za5ZFYS&kb1UU{Ktrp95%R%^F$dd7=KlhChgNmj$o(hscjYjj`;&IT| zT`m)U#T+ns8Qc!8yY@114CZ|Mj};vYrf|ENGr|kUii8&(Nlz4~j}^PnXdHhPIAHBq zk*n=DJ2wtnFd5GUJ%`9Lijo~xFiy-wkDnbU65?(5lW}72-1Jn(Ex%lJ$o)J$fBEy} zqGRs&>b*7QGh;6o2lw~i^>hK|aIdP^H1ozE9{`VxJDGlRYgIkmi!!KOW+5t8?Gq~yhPlG z$3Oxv9wS;LX;_2K4B;{Uq^1~`Chk0^ zYvJdhnUes8DS+WK0NjqZRW^$;aG~)c5nDa@( zqW8r2V0g#@J3=LWr+hwk)8@kG14k*+F;+aVxuC~$G)<+9iHIG6Em=^FKZAdeLuU@tAQZUvIMMnL@YT9c~*z*+{7HKzbYRa*=Z=Y`xD_{IxYu1ljGcztjdoEL;jzopCpH- zdJAI606x?%2~L7RR3*ajA4*V0gcvtk=;cV{APM@|pP zX5DEbTYvCWW>b%yEUbTb(`q4MQjm8C&GCx zp+`wFkcEMta3Va+E`%;lxfXLvNIu$Ls3 zWu`?>(IEJ=h*W!yGq{S(4JY@YJfgi^O@qt4!2`m<<``eFNO5C={3{LQv3`#rHfRKx z^Y9qEi?ji{Q~fI8t!Vh;Xm{FfPJ8icC% zFz6=2?+{v1jJu{ck`;s^Enr%a0S=2EJ;laTMUqL%LyDp`WBXmuuSIaH*KhHP*|*Ny zimGe5UmkRz-IDMR@e;NX#VBbF1FOhx#S%*uh+~aTQYV2Qt}hXB-ep3LI8?K6%y^Qh zl!O{f7_6z=Er`HEHVLC2AK<|>z(f22ZmB0>SPiJ3z-wHk=-w=4+131j|-| zljFRb1UwR``xaq(Ng<<>`Pr4E@gmVH5Fdy?d+?w;Fn(xlZ&;TImsKG{DU9rp9H1&nY`Xv}&R6D-Cp7y~4gLKZw9uqBHDv{z0$pKglNC0quaxS87g|dr zEa7VM)16IvRwbeT(G+8=2*3g!-@biXaMb>QA-lePE-T0i>@X{ zQ~W{}M3|Q3Mm&eWlWO%fSFf&yv9=|#s004<&bm3XR2HdMGQ&|a$&m?G6)9_N-xq*j z+pu|nqWOSF^0Z}xRP7iqDhRJ$NA7A*h{)Et6@hkA@+I?)DZ zrmpod1u2$}le$_M`ayF2GUHZj^^((A5?8Z!p{*erTRduBFp5pQ)p&o0t>obtyFucZxKT7P-C0itT!wWQJH;#Kl_`;E{RmY?lwmngZm1LlXvFSyN2bJ@?dpqB zedHxQXOif=6`%#70KtbJz&E@8 zCLulWX?Rs~n3BOm?yIiop_@ym;z=Q;#bmL2a;y{q&jo4^ONdSo!qvoY*g0C5kTkq7 zd>|&s(6;0NY(U3jED?ZxhBxpIv%}H6LEXT>0_QZ8RETvh7oprpVIJk3u3ovMM|s4X z(&tUu3Jb0vR!H+^wih{@5kUHEFrtW>uX**-9wGt>{osZJHoFCg0BuN;AotdEH{2n* zHANuq<&(vI7?Lqlct{4`EGk+)K=e!|KUkQ?9jfWU%iPyawsvu6-7F4jtS!5=A{)&4kRq#C6jeygb5F4Z5$g5#}^(jXpw8&;CrpJ0uY4_)R? zJi+poy|!x-8Apl-+=ko41uYolX6YWm&Fvm?ySNmaGG4h|loxKFe*b0efD^3=+d<{` zXyzTFs!5EN*NUfnFFx@Op#eWcu;Nbf=-=imK4rclT1T3vM%3PBj9pL9(Y_^fg^ji# zU~J-sk}!}(Hu7o-1Mi9(yGsPAh`eISU{YM__U;pC?Jj>thF!;!UEG_J zqHTcGp>VIiMik+?l1oV+2^$1nLi``pQ?DRTbqt8*5J_h^D^Z4Xf%=GaV>c4r$N}_^ zWKf~nJcQmACQRxi<|L#|xKNCHK(R=qZQda;5ON*K*_iiG3zDM=%}NPD&b6bZ#9nl< z-Ji^e%ubf>=jR0NBr-5YE{Ds_6o$ZyR4f=$Y-_@t#Q(lxLJy+QKqP_T)yLHjgltKJ zhJ0GU+?-%ub- zPpGjH*AkEhB!ILXy;Myny%SZ^={5VVyF@EVOI~xQf)5ccpDOO6u=*acn!@4timu`j z*S%LoLLxE;Qdt#a-Jf?#G~JKvx>F^)`?!~3I2B5MT60o2aoKu1Cxo|e)Pc4|l^ObR5VPMH{RpV>daoACB} zSd<(#A>b!u6`AbCPw}dvdg}s>A(-YRM_vvHlg~ihIMNCx%dv&(lB#?u3^ws`CZa}a z)RY_5>BnvGRnY9+Aj2+pJ5hjwc^Ov79bl8V zH2$1<{N{dmk!+bPl_NFoM)`CK#R{-7M$)ms9O(Axd3+6w;b0~gdt41GO2#F&bCJ4J z{el)Hovas&09QZbbk&(52~)Q+7|SGaX{s(=T!r@Oau?zge}4%H8g$Vl9}@1MiRke^ z#H%4|hzID{ef?NQ7hsNUcYFnw059rDh&R3$KtN*b`20#y zbbbYacYcMWH(AXXq(YkIAS_bgkvufeJ^%Ph3FY8n)j5b+{qrlm9}*XJdz8@4)j8GJ zrC!gkTo1j@QiI{l!Sf^T+YgB|iH-ZW3h<$(Q)WQ8;{BQ#YFT{l47Gf|b%q$9bylcI zLs0@a-CJgg_I-WUgMnO?fNjU)gwPvcj4W_~A<{_*DaqY9Q=K%5Jgm+JfI~a>R<%WX z7>XXaE}$i&F1+!sXoS4W_Rczs7<_i#Bchb|tyb2HL}hglHxU6Jnqz>>>fp9q!vNN3 z{-MR_N+m|;T#1}c5lXld>tO=Vbr;o(B3T`DSJjJlmG3HFAe~3wq6%nV;K##r@{;mW z3yL(Fv@V5k!*fSsW8BMPx!+xAwQ(1RWcOlXjctK^%g7Its^M{56(Ci&)xCX|Xj@>F zNo(M|uc{ya=&76U`OD?DOpys)1NK5Zh4wkA3Yv70DZ(Q{6 zIb&u-D?wNpwNzpTX*pO>M~lEY9M}6}eT%v6lK@~q>&qzwBGKG0rekPA#3On_#4MjW#}7V z*Uz`$7hkm%_f0wP3TFjdy&`k_Gq_w4`HM~v8 z=1XL?$di+Pr^OaJ7y%sWNaaEDJHQ)905R0PZz;)+e93IfP*KElF!ffBM=QIdu2 zMX{;8V#5J7h=$?iR}Tz< z2UBbr)rPLjN2^>C6D3`?RF1YySdOE>w8f+YFODr&xm6Ba#D;drEM6+u)GP4TDJE^> zz4Ob7A_&#aRt!rEgqzH&IJQ)H|ER@HW`5AHf_wnlHpX#HRmDqGE7Zn(3rbev#!nvht!BI( zmPAe3%3(MS$l6|!M+0SxTKOtlwH0q?8{JBA7iheLVWwi+ z@|bI!Y-uWMb|lSx;2LpY>Ck?;AOg(RbHQ*Pm6+}`tpbO-gNIrzlV*Oz5Yohjz|CR> z&3OP9@-&NRgAREU?}0q1OY{f|(eto)F?bHNN_NaZGBRV8AT8gPox~@36kZ0_A~~pW z1xBUK9T5CrP1=IRoEv+G{7!kOo)Am6#46&2jpPAk@e34dMk+H6qG%Epn_w#tBN+)e zK&H?Ob_6k?iPmU>BCy~wiNZFpVkm42BZk6aSTH6`O1otxSOn#=SSngZF8%X&2jV$-IwrycRt-l|XOX}B0WFnzVPfC11COY~?DZDm`PQJN{qt}Vf zY{;?^eJ7#P>}LR8!|q%u?xL_$rFekCj+NpO3KNxLE``l1#j_LwjF*8w`lmOF*k-vFoWe zsmD>#iGwI~LE}jo!N35V{Hk+U?`R<9!6Qr-CS|FWp0y9<3yDme0~-x^1#bNOv{a-Z zvXjj;``z##LGa8@Lg3~1AxH|_g8(~9{sSC5yOR)j`Ei1w7dRK=ZzN#$7duhS$C%8Q z*ip^!cQFOPRbYfGj4&(+v&=9mK~gcDyUTug?d&c(_d_~&nGvo;?k;}re4Trj{qow| zyXf3cQEqY-l^MZGBWUm9XNRoDHY!X@v0Z2tZM!1rO)(}YM435Ni9B$Gt|_&t0Tb~A zod0k~SzCFZoaH9%cSXDfr_EGlb(W$mY*z5uN?1B1f*aWgRDG>P zbu_CW88A!9bkdGgjGCsxvFESQd;#;+bS_oXJ@9ocDntb&&1I4lCQqfPrsp(IV222q zD`wn^t))uh&0hDN-rGN=GnN zwc)%%zc619lmj}l&P>okauR}<9EL<592=`6F`x~JctB^(gINRoo1<7*JImOCO7aK7 zkIh@^>IM@M5QBt9^t6AzWgBXo67ArkrD5jz7>rbfvxX$)Kw35Dbe@OjyF&%$SxDyT z80WMRHBV=(L#XTs%>U^bLT?gR3yitV9)ipiJkI{qvIf z5Cbr4YJoB`Rq447&$VoUz$-)sDK7{R=ABD@Hp1H6R?>r2&Z{I@#_^=Vb1CaOAs8l- zm_eN+=4zzfo(7e!8Kr<~RJ#X}2ksA^hyk4>4yjBH!J(fg;<*mbEO6&*F-g*y6&GA? zo~)&5WTM$Xc_b*D^4HR)iZU~%tztZ4>6Cg0rEMCON$xetzF20h>=+|SNitp1Wj)Ro zgWdihC>EaVePy9K4&DpSn9c%sx2)qdPUDgu;TTj z4f|d{f;k%WV=s7MkrTcM_+}8C26r-op-@%`P6RI^I5y6k4F4LB(%bNO7)Zv$5Mp?Q zgVQci7IBeS+%!o*nebkb;0w4cRF|wm5RJG|~S2K-VO@ZuMCzOmvk~FfTTawXx^Y z1&Tlr3qS-52%&gxz;lCso`dH(`gtav$q`R^h>+{_GZ8osJK`tf8N_ao=twqzX?)=^ zhhCDud zEM`Ffir7XXX!M<71NB}4>SY%0&4z$-(mE3@j~3@ES~S(#911oYc&Q?I?Z-e(a-!wA zlQAvFGkbE${6L;*zz?(1^XyfI4&;3|NFfZ+!op01&OB}r?K-+e7W8BUcp|8lvOxsZ zPzVu3a*RSoAe=VU==fxdeHmS|J03v4uO3GVhz$yI-a;O=2c^JLYNx=%O?a%A0re~i zGk{&@yi76^QKebO@xahn$b(q|8wR{B!Dbj0e#9_iumXDNl0EMNDU2)fY6I=d(#S%w zG_qD@BI^YuchJL`xDfCWdV?G-kSP~3`Z;5 zl&TGwYNmtERgWg?%*(vk%S@Tb4ss+NNI`w@7hudVHzVzepKuBNA|X})ab9iU|7z5u zMUMO7QqhH-(DOlnSYYE{$N)UgLAk6#z~WTg8fL>rCu=o3l{cZ4%5elPlN8rcja=Cz z1w{74;3~K`aDS3$Y*o5kY&?OemH7spb0g>M8e7ALv*NR@^bBH1+ehdtnKs?irVXqZ zVkKBE#6d9?z`z(tJ`pG|pu#?wMFbl@ER!I~U<%PA2|JSG0Qo@R>=R9$iUvrq0`e>( z;6=5c9C<3X{kSWXeC`eLvJ8w&&cFz{SJ;C8NwU~uhjj64kp(%}Xs}>?umciC$2ej0 z0%|pdc)u6{R$fM{TptP?i_zOpoKcsb8EvmgdkfWw zs9LVs`5MYRUI9-$XRz_O3JFP1DJ<5xVXm-pfHA{L0rm}tb&~uds`5Ir&!7rivP@|u zA9?_Lkb)rL+bK#i;Vvd0DdA9WYw`(C`YS%Aa>R1vA{l39?Q5DtW&LeUm{#a*P4n4l zfE7F#x#ZVn&LUh)`)zDcm9zDjJa<^rvR-i_uM%W)QL;>e~xEJXNQ+ zf001=P|$sqPy;Z?;R7avoPuZq=YC zsCC=gQ%nT4c4Su|Ilommi3LEzFd#A<;g(Z>WdkM-MBFgDR}(@tX+!#Xqz!4NcxtJ@ z%mrgH6B~<;rOo#&l?gk9(yAnFepw3Ub-tk`N6?KEJg9gSaIq?MX2P1TJRhjvLd5W4 z&iB+QxOj&rz$n!+it}MyAvm48LEOStKbou-IA4zt$Awlhl-L~t*9n*a|42=vZLG@C zt7c8~bBa_GPG)~)vJnq|%JwXpa9*XVkdf>$A7OeUQ6|DvGfoYiBBnN+Ww6F9=ZWzi z^2j%H8TmmmJOF1R>vud%%Gl(@+D~2Q=jl=E5tb{tzSv8oCNPnJ4N(kH$6G9-*!be( zM42*-3!t2FaV3?}D;HRm{sFds8^TDrajWcSyg`VRJ+Z*Cr?G^e)$DSaekMJ&f}epw z3^>LP+gbY=iv_yDri>4$bQX&$vH>&UDXk(af@+}DSn^$hMh;LoD5d>-&ZV@%N}Y_o zthz_+4NP=r^nzYkB*LHXnP7` zp-sS(U~Woavz0Pnt5>B=@~j!p*tNwLJ|3~rR~h(VuOA3xf|Z0XT@4J$gfq41H?}Jv zx(+Cyy-Bf|5O18Z6Lw)H<1J{Dwo*R}xeAYJh?qU90S$G9CHx>2WvpXI2RzN1jG$^; z*yb>&755QqKrIG@FlosTfe-a94+8la2aa#2m{Le(aow0D;)W`SEG09I-pd3T5ES1;t}m zHd*a_)00v`UlBC*!O8{yWrV^%l@pb8V>N`@y z{{B)No$&7wM`cT4ji3?QouN?=q(t!pLAlC;kuHiJe^A$GoJ(k$?Fg^Hi! z#m`H}Qwp{wV-HC@9ybKG>|Fkl_A!?GHt z5*%4Tl>?OuBZg=cqoKXSTQ6@=Is;=1v4`wb4a+goB58^w`h0@YBSeu*Hvkv7Yu~=T zpv{E}cS$4Kj)ejtuOth3CEFnn3+5Tf<$Zz5&&Ntn1JCjt4TBXt5zo8{9-i!pcj9=Z z50k7$Sksu!l&f{;2zaFso9Z0mNc&?^A3H5Q{Iww@Lwi?4JX6T_0>Ul4mzp}M#y}BF z8*dr5z2Urn-7`R`!(VL#!@%9mPCPu!`_6564_9GZZuEW8HTmQu&bSAqs5=Pt)=_q7 z;Jk5|W;Uy+>z?Nn2F{ME=bah)V|ox0z;3PS&1adb;gY9~EO2(qc+#XpsIXROa|CT5 z!R83sCW4hH+6KZ0=oBe1H@!-OuT&bDf@;?wQ7qZ#J7FSe@&T*R7I=U5ynsF#;7y>h zln2?&HYY;e7EBQACnt*|V}~MI-#HE=h!u||^+yr122zqBL8TJ}4tcAs-#*`g`!o11 zBOfKC`4i+%nBNGKW+KD~%?DNq%ohYs=8}I_Mb!xS!zOb&6@~eO`=``N3rSL`1v`b2 zH&s$U|2F8<1g= zqiA|kM=uB)Cfj!*+01$CXv#!77oJwF zp=GiR#i3o9dEsk771Qv{;y(aPtNnVst4r^_@49Fr_qs)R!;wwd&m=QUF{ zp|eB> zwCRRwfHd|@WNr9UEKD_6G%sY@uKvIikQkD*;i|@w5lp)zm5YvNyNhXr84IA}Y9OEX z+d@fy2MGK=O|)nl?k~4afevO^p@S!RZay-<2(FC%wInvU<;L|h{b3ry7={Y{UNuG# z|FWhq1n2a;yo&{K@bP< zlvt4nF6tx!hkQ#t3xKllR&L^2@=+pjiWapHMkwdaMKpb(JR3>KSLcajW$Yt{s^I#) zDrk%`OPvp*ppCqL0f!qfSF_J_X-UpyfhTV#H`>PAVxCCgVf!Op3>i{zr0b`4l_S?q zAM|3du;xjIFv@!ez1ZdG_kmKvN*A51F@qSd3tk6!{Jjp4j4z}OTTt?3sqv9;=AGn!B4w(Ry0xumrT(qT|qbaANH=m}BZgjd}8#9nq z)d_{G;qHs4l_NZGDW>iH06n|5fyol zU)4Z1ES(&REpiWEgIkc1bkQ2&6n~eQ#0CsTKlUU&xydzRuj0CzjIvE+D1Ge5GoZzo z*JtT286jJ_H?GBZrf^JYE;e0?SKZF*ME72gdeS-O8KE#Ct74b4LVqiQ_zOMw^k-fM+*%ooJg}LYS{&^FWYkfMcz&r?ip( zzQO`sL++WuoUF}zk_UA9oCi;ErE-8%qJ8QxgfL+%@ytkw41M$!`WhZ2dc&p%p_}@S z2Pt8c8buXGkvnDoKzp~tdZ_tH-?@KXFM5l5cl>&BM6TKm3tR3E_mlOwM*1bUyc#T})f>6g0Uv{&&g1PUMqC*& zz`KoT?{j2o7~E4fiBj{%iOMn<5rt8W8Gmf%DTGO?6=pbDW1-T5*DjjR2DE5ZnY#3ecfJ!q;njmjP z!5}}HM1*$4VQq_-h_Hts9t8vuNWVm6FlsdH$lmax;zAla z?yVgsu;nlu-Z=4nplX}~jm9aAJh-7v!K5xDL+AW{V4xt8!&T@hvIS!Auo*)B7p7%c zyHI0v{|qkY*vZaj^%XrrP03R92Vo~1XhC4}RzuhU>~FF`$`UgX<+2362{~~B4_0(3 z5ESLTK)|TZAH9#ZB}Z9Js6tSqK#UsA>|)XTsI4T|2-dKHbBGYaxw^c>D}^oFh@wWl zBean%l5~pCDwbju<_xk`&@*5OgFyilAyEn(*Hzs?J_8OU#Rx^$&*)A8>MliCjp;%s zdZ*oy92DYsCbfX63QlTLO~Yu*BzE|qCR#zH%}V&N-NU3PG-p{v;CdS(o-K9YnOurc zx)?xxO#sVEnvh^tiR+nF2Z^QBldcTP-MdE@k1SLWdO}5euBdBp3hQfhDW96)Wvz_h z!yNt$9boV#6NLQzqP}qApd%h?A*2NL)jz4QP07|*i3p9z6S)C_1GM=6Vz>9-AZ25( zm_avskrhtbxH{ax;Tk?KfjZf{t?nXGGhHwuZ*dixVK7Qia$){@DCMV}BDALq{%ztg z!5fNV%BahTOJG5c?u0T2{;389$ZbI)awux+X5#XfCkKiv2L7P_M*NwXHLwSjpdD+t z8I<;WV>HkRxjKw^P@|iiwr~K`{s1|^#$3%2I6w>XB_QLFy-UJvJUPLkhZ=?#zUZl}MPe`?VL>gXAeL!QRkrCh<07Tpn@YITx2$GS`fY8PE z)GtU`;{fmp1Cc|5kp9_&XfCPb0l^7*NjfKorCyE`Ix9ib35XeTk5DBv0f+-;@|Hk{ zL&D@ZVcfEbEJ63fH)WAqeTkKWURfmJQ8^&zEBHXWTA45Zo|WtyiV*A|8;d0Vy&H`g zupHa!DQ+-H>{>utPCOTVCO~j$X7oGVBC2zEnvIC#B@tMCR(7Y(cH7SeWii z9RR^;@ILQpMxF?`Be$7F?kdZSx+h9p??2VuDCMaL{%p!K^6nt1PYYo{`%HJSDJzi@ zwxlcS+*(UkAb8u7YjYQ}_{1lh-kAMrK(-fRiMuu^%i3>M^8mW}UKyYyDuQ|&?GpEl zkSvk^e$hQ5B#TjmUoU&fy&BO4H(xAFPx)2jFhI^t7g?>`#jOH+yNmY`3HQVvGH(}9 zIONMXx`Gtp#ZEzbQ%nVR!+?pa4d>&D?w(;#J3Ny(Hj1S>%8rXW;hp4SQ*<~9AFWB3 zhj!5Aw@iGd8b>Q2)*((Y>x7gtj0%if4qXyCU)S0|wcvdo?zHo!5wH?Kf^-Qhpz8-O zBR|waQl{IXY3!DlKfF7nY6NjE)-^7q{CLM*DED{4cXBa3+AT-+*l#5&q<*ZR5G^jJ z1|Wx*QMdx$u^gwCe{pgT&&#k7Fr7%1Bp3a&bFk>?*5+ZyfqKPm9>J@faP|RS-olV$ z=g<-XdFQZWgWKCk^`j$e=^gQza8Uem3C6*0GFnlf%`u#5t1i4shYTcvMBIaw6VL++ ztc1u!Z>hyJWpih+W~&7Dl$g>yYEn zaq0}p%KIad7Cv&Su4`cjoH_90_aDFe?S;3_-AsqS(0iD*n!{)0+2(K zfRy!%Wdtjutlij&#+1*HVyG!zAn}Y4+wEJzoZ0`{b zTSPQ%!N)hGoh`I+`%2be{R%>xuDnx>3!#nrn;a{|XAwg|h)^(VtWiO<0o=PZrSU7Ce!3)%9#m;;=a+Ig~&~wV3U&O$XbK#RJ~S79o#8 zwGL}&xZoz(3TsB&dI=@tVN)RrXD$D@#-7tGjZj<#qh<&tRhs~gmv~)mbCoC%&DE`X)%jkw|X2t&!i1~8xfqxPG&ho5HU}y zs@OZ^Oafmkxe7@edsD@fW6I5YzYCcw%vEqhfDfoMfzPFND z36-;N5rn(I6>VjEaxKQ&dagwzXKC(i*Wyxk0Qq`)=QQ;1=TSK9XAD?%SsFazJ5mI)5uo<+NYyrt$vQX$6HQ8{?@+Wy;BcpPvaPC zPxe347c|v~V(lVJb>Y1U)uqJce>i0PnIF#y1RqzEjs?VL!2vX6d4sWx4$lwV0I?@&dKGx(QVu5>HJDDJs7}L&U35+?j1UTl` z#_xZdx83)!GfjA&cOraJ{1jpZB*V|y#wYxw0f9yf8pI*QMpLN(-m@1(+U}gA6Lth@ zQC5H=bl*zO(hpcNx+_mM|LScSA1r=`xtnL?)>WXP6H&+K?{CBr?}-Us1H4MNlIIj!XOW^LfWKi34KD7Wc< zsBQnN#xMhc9eySPCu-3@0Y@=%2!S`eFwT%r-!)6iCDTA{$oOj}L;F^-5> zK;uaF`jL|_%Z>WKffF(?*wM$}+dIS{SxZEL4a^C^;7<5SIjw4LI$x>>{afG8I%J#y^@f+M^M{KT8Lc8*W_}dh+~^-LdMxfHb z$>)q|Ghb!MQxG}m0Px(2Dw*uk?m>z524fayuW-W{Wm@Q)_#`% zhTJ#(*!|FiNcvwn@9*g&@VA?__98{jR$#b^lc^d%3t5;>2TO-l0NV%aHlp+>2K}faO?KS)eDhIH3GFZ&`A> zLDP^E5>s40T8W2g>Wt-EW85X>vd}%FTn;gt#a6g0y33Z$B3`9v49^^SjDJTqBK;$d zna?{3!8{*=$IIoh&GItZMD^U}p_zdAZSG_{3;lNTddOY+SDRJp6nQgTcY@<`E9iur z5qYyh;4@@+#&NlgVpu|`Ojz=Qil$FPBe2}-dx?HYf0;$yE|^|s!KyERcT&*jq%o)9 z_o;*}|EtGH(knenQoKvW)ZS$rwkuW3mB`N*d2%gqMesW&e}Yc9!O5Hy&POX3Rn=bweKIM;vgJ=xhb?yD2J=s2FXJ` z?1@13>OX{a#M1I`J$7k4oU6RkDczmQn4p9H-qNU%+%Kz~Z#rV@);J3B%(MATz zXHh&Zzx*Afd=|-PQG7C6JO4&f{>O!UvIcWhnrZ<-Lo3-dAT2n&NhQb@qqFSSRD!s{ z`)AA&f1G}PDfy`R?~mh$(c>RofYF7kh6iqX`S}OkSC>DslCQ47rJ;>@81I;vo%u9Zxc0v9UGe2t*Ctq=e}j?qQ-gx`zq# zdR)Uqc3&r&xYEsZ{6@DdA&u@313Kw8D2N_hz{amMuS6m)UTs?3Vd=u30i((+ixTf_ zQDWS4Jd^K);%o4{^Vm1dq$%i@#Q!1e z<9Oq*i+v@?4oM5LAx#Q0c4gq+E}H-Tn%4Y}%lT}UNsD>1zkWAwm%>h;GKmR9HU=r(J zKg&_--QEOchEGcUOcm(e+=fDJea9$HfLMpbWjj2!+H1 z&D8uVs{|zf{wEDUnt#H>^AiT34Nn>_dR2QtVJYKV6&5aQRp*zm!jriOWO<7~nX6fN z&drEVuYS4z?k@A)mOW%k_q=jhoR^tPy0@3hj&4p58Fg%~*x{FX%Ub&`UXm?x>o)JlT+N!G}F+}_^A4mzTXE=d_iep=5 zudS3FGTLy_MvXgt4|#X_4Lnni@%ZSFa@69YT)NijhLn3rKU@|% zJ>}N*lO@gkL~PV?5cx(wxeG4R{I;Krx2hT2fNLvZx|e!4;G0fu%H4HOdA59Ttb6aC z@`#qIJOmsjwVLZ5OS#ehxO)^?D*DS^WkbrX>MxIyGbXuD_m@57ZIj#${bk$P%^wjR zMNnP1?B4lsU_k64x@3~1v;IPWTl;XpkrS?Tcl|)_6JE;;krmP%@PXVtyv=)?@{uh4 zf7HDRoK(fNKi;?M_Ds+8^w7Wz%m&0w91 zrYwbmED0)6P>f5XqJo;lC@QW|K?PUhL&b{S`;PjVTG?cFY*F>*%Xida zyc+pxhDax#r_GsLRqC*lJ@9Su*mP_*1J-j#?_`A_;Bv9Jj}N#Yw1Z7M{)&0rh-5Zi zENU{3Y*qEcPxb&325;T1@XEr%)0-a0m&rRADL9_Htjh7fvR7Q~gKu|z`xvJIY2f!X8zlN`3DosAKzBTYe3Bc zWcD5anY#aOBguE}yZg5KUDe;sH62CMn5|atsm`r-8>#W%QKIHk-T-a+4NQfHMY&Q$ebgW3=7&M=F{ ztAC*EO%v4Ec27*kG@vsTavLPTgBeTSVZ4c|^KS1@iXq1@}v>S;%PJR!UD zVcZ{HpBpe%iIKsXV-r9XPGcQMj+6s3_3PAc*sCYksSjJ(FXGd>xMhgiuFU%N3h0QU zyvh*?LfVGdW~(Zb=+VsMYd4Mi6hP~^Khuj2OUG(Q`|dcz&E^#irQ{%3Zt@B!B*PKa zQ6g!xuzV7$O_z;MmyS-y`4zH?y!h~Ryf%Z&+gW$29F0T~`n#yni`Sy6Qd2ZOG-?&gydkNpYtf2eodIC|UrSIsVbUd@`+iwrGo#%xeQgf+4Ht6kHK{`s(e6L&X zG$=*7T>h^+%KJZrw`b(o3kW^c3LZ0Yf8)oD>u#y76%gNZK&KgGlzFALR4L-@2{Ga| zLIm?n5ojJIfJ1;5?%%*HU@8&tXISlMQW4QcFoj4`O2FWoGW+52_!;A{3-6Lg=ybqJ zVUBqX0N%@y9TLA6+~%C`C&R4cHHh9;h(kPcww_X*v1n-ls?ZITDd?*Bm&i;Jr=&Hx zWF(MxCH`tF!s<}-b}PU>Alc%IO9Yq^ick{o-FGmJ5T_1AmDLhTC8BAj6ex_mEfin! z6|oVZ|m6mMdPqzN`~C%Jh@t`X*e8<7aJymzaS(FuILvJddAN3o zsKg0?9E!kG5J78+O>yvxK%hflInXc)i#cI2vK2}+#Vc`T<})IuJIGiqiN!FeAFc;ket-$08Wa~b z2%Av=W=!B^(FTI*``7{2)*0wQQPG3)+!_}NUu^FZM5jXqDButAfIo0dQFa)!@PnCk z91WtkQRyxA-_YCWft+DGt1W73yc>kqo^W*mh+|LDiEwOi%H~%~x zhsKPR88mAl2|<-@V0l7i_xuOg(#tFXiXW;A0$IbLO%kf1cw z2`{V!Y>Bk{y?m=g_*TY>tbkuZqm9$v5+^pu`p(KrbO4o6ZWQ8fDNr9qF}w>=AB06A zS=t=;OR=nL3HQO+;u#=6ssL?>6r;R>d?DMlA`$@m&&A^pkdB%EzIdc)6cM?HcnqW? zLipgQpC?}6WIV~KRwi=6ahe!t|6Q>ux3Fto{WQ>4+z%YBU#?<2R6sVFe>|`Dfl#*h zUJA=X=!eVFC5`lp7q$fSqL6|#gbc);P_o=h0k6t4m-9UWX@X>lrD3~}d|1uH4Abl$25 zLm8$Y=us@_0j(NZkX@+xb3fs76}LY+p)J@2i@-`8-`S-sXQlP-A@r5=Qrk-zp0-fH};w8tT)4;y3c3o$nw{$ zk+l-_Z%5vQ&(tdQ(KfT+PSr!beyv&kkRGHqUu%{H&)! zrtx$2YLzv^+EW?za)<-W0OnY8>K7`-Adpvoq0Uh6O)zhKp}Os1v^DL%R1^MH!=}?q z>YRU3$d7$&M^tLI_H`R#t7dcl{StXni)WiHeWKOos|5H1HIRBCSUIbr+?y8UzK4MnUt*?M~&$oXPTE+GsV^G~A~~t(rCBzDp1ySW&=v z;*+!!HOtOZZOxK@sxir}uM!VH^f4G!{jcsdwckS6zS(4c{4ETj?@bmO3*Js2Zzg}M zE)RK_8}7qo`|WgocNUO6GzHnx`c*?f<#`&kK7fpD4UR%|L>71q6it?uU zVrV}Qle=>K>5uSeDW?!*O1bHKrsJn?W@O3Yo*%HdlS1>=s}62 zPEIT|QZ)_{`70-wRA;xXo<8AmGs#ht^`h~Qn=+;LiQSjbF08rk{GqC1&YPE)n$fTAcm$V0F4Kzrohu7S_$pD75}aRq=l%@0}yn+8^4N zRP%8V&H?{?stk@$&Na~xHX~@MivTg8wXMPw=yABU5f?jRX?5AEYtk`ZR0}+#3D@d5 zvD+X*Vc}sWav-u4x5pe5DKl$*RoxBhRT)-dtRz?l2AsXj-*XO9K zoq-0(g?$-yMv5Is8weZr68(gYno1`ZI=~vpap+mgx%1*hK@~8bBPkR4CzpOgHj`3d zIVsS$U@+iPotL1avyh{ZzEmoUQLdy>r4neG{SiA`YEc-vu*W^;O=1#4Ga&b#sF0A8#w=NWAU&tZjb=F7h^Vx ziKc?dWy2EOUy%z$WxoXw52vZjPE#4D30|`>f0S{4z_n=>DGocG*0v7p_;Q|!6rK+2 zz`c_!XdA;2$_d40Lm&e1lkdO|*yV^F9e^IC!Olb^UFJ8Z?EhamRHk`f3b>3#=7<1G zrZ2=PYju=+Tm$OB0zU*9Zfr01)G%nc2^a>1gvgxm^z6q6Z3Yk-i55e9i-o($v1>I_p-vGtl9DA^;)7v1&#vZIr+Bf$tpop)h$=85D z{%a?GhW)ypUw?kE>aHhEeB7iDQN1YAPB;Ym?gm@kUS{bbs$J_9)Xq{4G-m0n=SX(D zyLQixKfq1-LH9US=HAPppQ5&YS3rw}8^MAr)WT9bRF1@S`ck!XE;l<4QC$yw+KSD; zV_^Q;2_n}6d4mj$;m%0{j=a)RhJKj4uTd2t@XnTs2K+}Aq3(FxR`4J8WZ4S0eW*q) zQx079BFP)g@DY!nJ!nV!!74S9_Hj*5wAyldOlZph;fO zCpCx)S`~2^X&uLW?N#dUl>x$ZM0TL@tj6?J4+0i!4}Mgxm_#sgbBu^nhhLF+=D!Q= zV2mLe#4nTzGygHva~0L*hw^S=$Jy(GcS|Q13@Z1o1S()t#NRymadYP&To7z~bf@uIx72ep2D2bq&oa>v`uVz18w)X(;?F0R8w6FkqV#?<=nHl#{!*!xQITv zApp+#p94T4rov+id{$JlZB6FOA?nxamWgxryYK}yZJJqsU9_9^xWHaJ)FPdnGR@2$ zru=r(2wG?ZxQ4w9UTiQb(0gspr-KhO-H%dz$%Y;pCuDSSQ1@d-+!w#a_CY~b5p1chHR z43p>{eQ{_m#at>X?Oriz2sLGH_iLYbLc7CjJvT|1W+G6XL>&Yj8LUcLkdHQ>&(D$;q6!6slI-YQQ^dB*J*aG?d1w&gQ^k z1*@Ty5uSeccwI+6@TYkes(G1vbFKCYCT``tK!GAjV?Ixm$ zL{TD994nC=4gyYKJaCS*AH4kFbB8Du*7nE9n8d@Ere%eCCQ;t#doVQKgNOjPE zR_}_DmNqwxRGr;9V0GrX5xSi<0|wDpKsbWdo%16CHb?67tku`g? z*YHOf7ID&2l!==v5J8Ne)4${snC&kuHUct;xtLv zwF5_jO5h|ayDbfBf#%+{tf6Eh1g4&02?s@r%+{CTBG`1bTauwOBo^x6CfsHYl#y*y zM1ylN+m+@MEFf3Oc1@EA7Npr&E^xOagfvo-g9 z0}&d-k?=21|6XXdw|j zh+X9Wp4y}1*aVkFH6{i9rYMu`6F3PpqeVOw(4vCOAsa_7q%@22z@{vi;qBn0VsV}r z!L|cOfVUh0lHErTw9P>THRi^F47V}4oDzcT_bO6G0Y%uc+X32dpt+z3h*mgm1hx+h zh5VSa9pTWq1H>QL8N^@WR#dQ00OJzhM5+Rz1G2nC)}bm{e}W+FxT?TVQl90duAwwOM$c zx?~T7dA7q(mDY*37E@6AhhY8|TxTWW%}XSU$Bb75S^u)soD0=ZXN>uDiBn^qyh$Br zw#`!s_Y>DCHWxn>ZEOB^q54I>3pjKqHv7vP)r9gtSy{XvnAA2%+2YaaK*H~k(dsUy zpNv+A>93&U9ymrl9jMacm>#oykzq|tyPv63>%OuT?F~WGsu4r~YAPXzAJe8iZl?cC zO>6aPGuD4HyIX5o&sPUK1=fvLISU2X_Sa4{=Z{hco6q~Y75cX~t)Dadf@=5I+>3at zO|-_md#p;TJ8v?lkJtN^VWTqO=;7Ycs`0u^Er1DRqHgQre8nO&<~X%iZWCt3aago1 zK<}PCPPJ2b`~GpNXWi5f*KtZz@==N?adHW&4fbH>%=x6XIsSOnCjQ1kP8FA$1+Z^} z$1YeJ=9b^n7MbzKt9rE{NLNVO-ppF4+Nd`cntc{Rf~^T&KH0)c2P0Srp}OJ()nl*c zg<@6>_NI7>`<$_$b02JAw=uDR+N~4K>XX#5uqcc;QPtw$&5{#UdoMdhN^t)LB``J{ zVa^Rm(UvN|{?CP_%o8W7GrIjX-=;?WY_=+B_AjVL(cxC<8NrEb;c~Y*QsvJQ)YwLe%bWE+mGCM%a10*IJNOIRh^0W?=BKL zdyQoJRmskk- zVAZh;patM*1Xw4Mq2QuO20D7vl)!yPvo+TtN;&9IGLSZqAaZ1*JO$>D2Ye@v1rdtVOm1fnqlYOv zg7H8{ae^JdRus+U`HIB3EHqM}t`ZdXujUdnmM=u%XEQ_jfRga-hrKjkh*~HLRU=mg zxgH$fp!ft&=8c8wf?~V001M5bH>*L;tETB@$Qdvz zv85fhSXDbWn;$P$_3bwi&Cv@QC)fy5cGzrPtSb1yor_i7_ZDg&*ku4b4@!WYC)QB5 zL@jYX&fYx@C-Mf;@J|^IuL5T!Ggat2MlL5@kje>{Z+>Gd zUi@42Q75TTR-OI=+y$|jHB#|Im3Vy3+`e25wDZcbqgl!QV!4{nhGyPkT^K&T1+p4_ z?0BoXh3Ow|Ri83lbDO%Cqp#!BiLAuKJkcf2rDZ zv%rpT(^%|x2B|ki{MiUDs_Nyp8WaHd#RpBVv8pEX;)8@f^%g369>~57iD>BZ#N*Z? zQlSohV-YT(N@(d-eg-;S=bNP!Rw29lDF=|nTL^g&d^&q zEOapqV%Bk6Q5t8(h#=rMrpGT-r|)8Ns({I<{|1xun?jo(I)O3EfRRc3wLKyONiO9e zQ|PiUTWpaNZ7-pk(mn&;;%Abg-37xyQ3c31TDW@-ZF?Z=EvzO2Lj#-LW*_F2Mrr%P zzpKoCr#clT`Lr%FWmmcgyaK~yq`WBNDD6hckfn7objX}}=vvPRKu=poFfrr<T5)9?W*15LZ?!a<(1w@#*`4-a;x4F1;s z_w$o5m7wDO{9-Tyi^qH=Yg!M%U1;CJr$za`l)-Kn85%16KIa}rEOwImy|t^QojIch zR+zEpM57rjcEgRWaK%ValX2KXI}(FN2oanKX!*7fCfN`96jwq>a6C|EMqvb88-^UR zj9crd$&U;{^U@1hbm>7sk59&tV44p2X!pNk5M*u&o8c*1<}kQYyb z&^8da$}bZ1C-BTiw|MTGD}F5TIVzMC?|N|yg--+fZjOCjdGHUk#l#yz249E}XqRjJ zxIdRmdz>3+jvQq~j<`QtUKSuonH+@Tf)JL(BCjkYB${<19=3Z!oPlmyDi#G!4H%FM zLj^36FgLIuGD4vaHV1qnx5JTro+~AG@f+Y2==~jHl|`F~|E(}Li+}6k$f0{ zWoIxxL6=EqfUNy&b&RwGTtuWLVsL}athbpSC;`lsN)S<(1qRvzJ#4}?Qe9|3Lpk6u z2Lf}pn3Hn@u>?n-L~FFla2*Zwz$d^@CN7mW8;1aW?52`^Bb_|JqFbb{Zv-Wz7kwgK zZC+;vd!SLrsyks2Wb|fT?#${xRX%j}x=2pC2t8%e8t@16fQI0|eEZAY!T)`LE;nPO zM-mPS5P~o*5kG+b%n0~FlrIXtfkiH$?+Wx63Ivb;!hj@)+SrmMKLy7}@XX{^P9Ci- z4Vbzk6Vz4!hYE-mBxR6U7!8b*FHJ@}Zj3{R_ea0MI-|03ujrH&xa*Qs)VTt8);p=o6{8c^)7vDg%4dLzJNa!=zWM zCQ0Yf(EwvZrMKA>+@-Y=q0t#c531i0P6LAVi8@S$U5+|q@K8)i0ud}1h;-aF8G!^5 zDn_BwD&o6tS$6=))IZ_6t?L?glnVC65buO`OhS5;r#Ky;_xjhY$X zOTqSQBZXs{BWwX3LK_jYETP(xAyR+T_y?RIMBKFK%z~CNMiRIH6=KTIMOC1tv+#t> zlWpb+Hggov-%f6hn#S02r`rU>WpDBU!PyXo1$X&8C5a5lg*vq*A_WDAf>62wk)C&p zfS|uw)?0g{z&5+w3XUmFjpr$4HS{nYe2mV@6{)9KHA4H-5ibQBP>snMTmV=waprnP zreih6*~8Bn_(?zNpg4w*d{0mvrmyKv8X|8<0;(aNW;^Ds_ppOA+W}_dc`msPfK05F z1mOb6@#f+!yD*z6^z-SChnCon-`akdPWw9T%-Qd&&ZV}CRhUil?KV{pCk%EFYr}%L z?s7d8PP<^?m`1fLf@+r|W#dbO<`x9`Y@YeEF)-Q>8`M>tKJaz_Pf9j^290oX$pI7k6vius$lhSgKXgcD!(FGi5iss@coW=Qb5q@Gm*vsVr z{ZLPv`?jfJ&i{?s%6!*sMU$4{5gxlu6JVEvppb>Y4}~D!Eck?tTG1vj0OOq{7~BnH zL)I(c0PBSlED^g~WR7EMK7^KH*GVA?m!%_=Qo@R4DJ$P4x#1-!3>0mK!pIjCMt(CC z796SI4uYVppfJh^3L^z|1t?rXvPCI>wHfuH8st1@uK!T|hzr6GKg4<;Y4v}p)7@!N zr^GDl=T@7OKSn&5k0xn2fw=6oBbplPWR0?oi!}urFH-MYYFD)vJ98BfS*GeV&6% zhN|VXYt5xAp`MnQ`76~gGT31N6r#!3I2bfm;$K5X1#>Uf+^^aZVre~HTT{?94N>1U zRbEyU*0;v0s+*gw{hw?p^DE0$gOa|RLdY3&-73{EzaBf+_pXA~3x1}h)F`nzfgK=B zCV~c#x4_bHM4|{HX&SUw8sZu^@{qcCzxWxWCK&YpAAvU z_tTK_{amJazX&N8WXq#?HY4s-JrC%CTZWmYsa+wTTY5^8tLNAM` z{u=N1sv^fQ*p<_R*XLTkE#2!u((0yq0I5)-0Txnt-clu$usG$ICU080)!@i++>$;} zE#>x>C^`Z22i#a5xKv_oO#lU^Vl^i2s=j))R%KD+-J_m5{KYANHQQK(a1m+{e=Tqj ze8 zLJ+1$2`Rr$rht@RXHhjaln< zGBc~{N0N|t7e`=Nevue0h`!@cJ(55wVN69N6TsI4MC%JM16<-YDVkp)K!iEK3xb7pS z1ePG`kSb7D087Ynpp=}z;jc0L6FZlGFMvep|B$NP4?GoT>%rT7_~d}c($9gzyiX2HhDQPF--uozWAS4xAdzBAxTIL;9HXMXEwSutYYO z4=!*h-X=AA07P;FYmH~}8wO29xrJ)shQVDwQZ*+v+c417es*CnTsrPxin-j*6ufyG z(&QuJCr^t>Q&G5ZR`GI(18Mp}29%8d*)>}hs#>@mW_O*YzI94x+bDDKX=%(1-a;7?HlzCW^E;$g7k?ox@b8xdh=*j}UbL|%&pP1P3^2@^R)@({YjAzFd}0`+U@GGid1=YRzm2RKi} zqm>zH@U;Q}Vg5j^FzHAoTpFSS_#DH?ohn5;zJs7MnWN*MIdH@1Ecy}zc#dB2S!94i z;{YfUK?0~GH6Q`wtw#bL>)CgRNy2wk_6bHIk}mC^C=#3|r9lQ6FqE#4F=~meNCO=< zX|VpL{`RyD4GA@w6hn09n}Gl^l793Z5E~?);2Z3K+lZzm>vkz=cXnXDK*aF~kq0GZ zD?ev=)>KgHWu$R<{kRyld2t`7Z3cP?W?fkrf)&HS)u4u2CsOu=|1)a@oRP704WQ#J zo`2VykxS8Ws4`K``M#H4;(zi~IrTA@K`fg}mi%2aZ<;ml{`XM4`G*$yS1d-VuouinNC{A9 z*acuP5tDhK05Epa3az79$p(0~p%vEh&NTsj?J%v&=`}5)1x$5-GXmqpw?jQJ8jtY` z59hBw060_t?&Qc*Kl{|%7Vc$%2g$m?Tr!AarykLL=b`n=$0=iYs%tjL_vCQvi0Zl222_vrI4Sc7YNP zNkEkKj0^;4MdrD{VI*h4-jAfW-75tK!$q5j3>m;v1Yli55@PJZ{u*ipp(Q1H^%03o zG0z-;-!=9CxeXecfDo1s9m_EAA|1mk?0064LKkD$VD}Mr4rjOhPFQ0Bwk7^q?0noW z8t0W>0yU1}j1MTQQ1%j8n3wotS&DM5Y+SxnMv7?`!<#na{HCTI5qx6frocLUF&6D0 zRW7)2^p+f;1l|H*U?6tLYriSU->@t5cauA;77o8Cgl%9rIRQoRTi_94G6Y8~NbULI zX2S6j-WCX%qiTY=8k45nfwLB1djVP#fXl(~vp6PHjhqwGShCX6hu^X~`#8hGuyt{-HFxOS!0ZnMz$pnl z$#RUZLZC=kBnv4VYX+n;1eKujpfsld|AyDX=}mys7M+INN5ns#-G+w%sIQo-ucDN4u^&N-qEaI)|@c`=q_ut#t}c+k|45sSxK^r`xC zb_RePihby=u`#T{YPy(PP(3xXl1mX;7*uWZ5gynYLoQ9nM#D6D`qOSrCT=xObQbmm z>4QZW^nof9q0Avf1wh1pkO6f}3Dk+Cjh)z5-#xKVTrs)DoLmcmV1j{@ZexbyZ51LX zPfcKcfvijbA}|%IuDMB#dToFUDBuQeS1d=2RfEv?@&NofWCs`J_h2Np|HU3o@iQh; z4h3Mq3z6FmhbUeQ5z4-phvkoKYEvM}c{k!XIu_!|^vAIxOFk1ImcMzreb?JQ^+EzE+5;c5Ob~VnYmH*q*zl*JF?ri0iY^>a!?Q?5 zCiU<;i284an(~A|j!N(YWj4O(v=5BSq6nbAyy~ye9|+Y#xi9#Dqd|a|5H|;Qx>p=H zIu|UDi~Y@5D8rq(K{^;f|Mu(F0s6MLvf$;+W&{NFUh!bUE{TYRnC;H+%xj9!89R*~ zNLVge7oY|Hh~swhgx<+hnLGhnwii$jmvVM(*eU=Y@ZrY*Jc<)Kd?Glb{_||)bi1H0 z4*aiSR}OkRt!cO37660*4s;=#3u6>u57i>nkc#~+(CEyDpR3yFtP&@dnbZ2I%52kF zY9V9rm=5RRB>HQAHvP}TR_$xnHQcdQ0P)syLYI{f%8H7BWc-)RBOAB#Re)^b(*nwe zstGZnh-I{80bB4yLS3Dl7WG`NIUK|1+AHt20 z09)$hu4#GdT7ir5mtv<)rjgYF45)Cnlcu{?xr#WDO85zzHK>oy0=cypBqf+CScJUC zhK!l_OL&zBCAg1)!$=;wgsQ@BBo{^h8?L5)gP zGC3iICTQQqt#-8bRxvp@g^Px$s?;z!D}_sg_~R;TS;RQT(RT-V-P9Ot4hW2DE#=ez zT>!C~V5gxDnt|`&aSI_YOHr2a>bz>N#>UX7;jUxozGne06}Gb#R&iN{wLdiy@p4Ob zfUScIFE6~~s3Yu?Xj1|kboAPLRkq?PsJ2z9PCT_HOj$6e$-&f5!loI5TZ#;#$pI6a zoWczt)PiwN0Dm1&@uBP(l9`L;3pAMy5QZWSin$dfwpy{d zM!XtXFr%r2EJf=egz59eRWvih2{-~oz-J3}gnhBVNq{3F93l#1dJ^IE;CEH{8y^KN zK@`$?6ZBOqt%3jq0GN<~qr70*u$vS%41xkZf*^%oWh@)w7o<0V9tg}*VDjsLZv)a6 zUR;IReIt}0AzG_pN3K3P24p<9Wimz!L4P(#e{2PrzyygFNW`Q~n4Kd9MsDJ9RY;lM z9+a5}MA$Rrh~s0yc?Vjjh?ja0Ua|>33yu{WoZy^-li^MS1g)~xEF1AB9t;`Z3cqcg ze+C%@PJ>}c5EKHj1)0?$u-cLz1x%X60XEY!((a&0XB;a6TX8A|L{j{P-Rr)P+42kQ z=XCyp9zaj9h}Q`hqay*FuRwxL`f*6WZ^t6RbsJ-lK)7Fkq=phd;#Je^JtR;A=;()t zjo9v|BPm&>Y-`9Scp07`p2I+>+p|Aq`jI@iIJOTVM;ZG+v5_p~6DV>z0;cnclgz_P?~OwV*~IUi28X8;ey;Qgm49JARC-v)0N2qdbTZrxMNcg> zDLe_^9IN$!p5Z1s1tNP$iI~R_Okb}5$TbgWUHfl-;<&mkd)Us^2QVG(>hqZX-qlUz zzge~(T8EF_X2)MT-3*HAGtBnxI+pm_!mTmGb$ECV`J!(Z~lg<3Jp*c5Sx9*#@(F0ZFV2NTONh#u?d#b-J&!`y6iR zpikWmR6{!IGb<;xIIRzL%uQ<%={YHS8V(6yT2JYu$CHzVb6M)?H!+ES^>l}D5;cvF zGKuX{S|)K`N}teTTQkf*Q+f$zY;oGo*wdYLuR^eGYzb_bvF`QFNcN<9{nOpY{8YU@ zwQ_Qc1MJ@gFj{La?xIf$xiA=O4{~9s+B9{PhFti)E_xqC@~PNMzvw()@ z_1U`vXIgjkZc2;5!3m`YohfGR-g+dWjg|G#pH;32R5h3lPL?xjIMqMJRP@xpY_X0R z<~Kd{Ow8(j``B5**8cjN-hbqdIjyx8!2YzULW<3$h?|!p2wfeZq?>0V zE}6*P2Q=&C8wcpWsCy=w`+Mu3kdc)S&{byt1NAcW^rZs<{b?;g|GRM`C+1r0;17c0 zZengHJQWMj0y_J2^OJu1{1!nt-MrZkb9u9g_t)JyoWA|_P-mWL>aQ;-s6^C+FZ%0~ zTO8eVbIw89Mp`&XcXk$=>_Pg(05&H%^UZk!^wiz??$-nK>48SjY*N8@M-S9z1DNH< z2;co?pgyE!9l*)Yp5yOmiJ^cGXAah$m*d0030geK$Ra+r`>bYooq6PIyr`y3!|BnXyGgv6Nl6Ig$+p+F% z&OA(aMa1%{hv~tstzH0Cfv>4xn@z_@Yt83}>CT1m$*nfsaJasx08$Z(6zQ2}?| z11(1B-sa#V^kCpd(-DFjcOIel0~6nJgsy6ttw!=Ff}=kHibV1Rjy9*8Lypv5ujVL% zH3WA(Wn(Mg(9OC7#F%-c9)Px=I#PH2uC{YhJ>mmtDu?LKB#MKE=w}1=+N@4seutqz z!#|qqhsx+49jg1ZjEx1VPdKRE^^YTm!RIPBC^L4LzPE$0drELPD#9NG_M@~t3d2Bo z#y?8?E%j^m3}cSce{j~A9}m~HkRZPtt_Swdjm^Q>gtgvf4b>K0DX3RTD~Fm55|w>C zTu=22);~jo_0Nd>`iHBbAU6y+!0uKAc@pRH{tmSuVXBQN( zw)&l@A1|Fva=?$(vrY9Gx{I?Vd*~TpkVCCN0lr z+1Hz47s7YTJ|AZ8yigyknr51hF4XO7ci7s(9of=cZR=*6PK|o*ch6YU_2$_|-SFK7 zHqJJ!N9(WHeteAnZ5wOq0m_S|m)mh>-5C8kuqV5!I671zHmUitBzh>(s$Xf;OK!1! zd(866h05&srBjuGpAG7uwJL3QyR6kw4dVZ@UEe&6TVUx!mv7ud#ePy}8xb|Xn#dAP|0bALTd%@~V^C)hr5WE>G56pj%Mm0uZ!V?={& zCXPn*v%jz}(98acaBomyu=s<`%b+JTvc~Mmcl;^?2+OeB?xwImn$jR>s1Q6y!vV;) zC*C1e?{Y4=_^AhTJ(4;&3!H*3b6cIj#|{!A{nJ8=Qh*-vu`O1QNr3C4gRFcP_&LvJ zA;AfJ@lBAL>#ZdfCh$7*&97C5s+_+Tw(AJ1ErfR@zS^w%#PPDved0`V_D+{$vlEeg z#QDb>Bs}ZyWxs0Z@WdPe4Q*Z9B{U0!p52 ze*q&$*3+~iH`D%NZ$<6l$0U8DL~1jMM(~BC&z#to)~`blHd46f`KDl3aBN1 zCBP{9@q+;XPUr^r3b89ma=8KtdN~eB5ziA4l2_rO7-!nx9iy<>DF@vMtbq0BKm@?% zcWEw=HG>+2nM3`aB?>q=!W9DuS(Yb?dY;3=wN%_EL&>p(AbxdI7YGFT0bDLP=l$t$ z%d_m3EHNVj1AbLzDGRijr-_CfO?W~RnOw*jp^080P0Z2Q{_YG+fKs?86GHo-|9k!o zP6Y754KLi;&U2y+roJUs^lxz@Q~}aX7ll3I;0rlYalnyc1sqA-x}o)hB_aDeSQ2kF zAV-n|W!S`Nkt11F1dEZtBgde~lYo5R&66;bWzPKRxWx85_|iYrcL@Sv4YxN3e>2wb zF9kslU@b5kWazu(t7gdQ(Y-T5MsPC?s%Gy4GQzKl@8j%nPzAql4o047#CP>{1N&Eu zoj$CwKEl~8B8R`8$C4i0hO|Sfmc%+hCAYpcN!=E@gsq z!3>B5FH}BNV8W2ZQt;@*yzxi|7)=SzGr|`iR140<-C}Wt!XwV%V=o;gbgE39Jcv24 z^1=}mXf*<&gF*|x zU=isSE}?v@o4xHBv5ui71&*OC1wTOe??LSt4c{w<$LIfO>~bKp-ySW(=2J4xUjl#7 ziz%m+KN%jQjx8r8W4Nc!Z)}8}KZ+?G#5F{?nivxaX9XC-dGJFvVJVlfGaHGYg`*Ov zO7u|iFN>J|3sg<-oR-UQC4mYTf$YK0V9oADpyQ+>=nh@t$ac+M3sg@VY!1zkR~NpG zPf|FJe)C9Om671@5jN_kA{w(5%o+D^n`^xY9m6Jh*aP6v_$NLi0u?Gqa3=CBj0&_~ zhH#gUtkx?442F?{-)kx(Mt(pZlt}PW>qWA=)*G}Z*;DCCslCBp9W}*h2x06KtF)TsT1t5rf zk?}wqNyHz=pZUq@flis~YgBERr71|k5r&w}3smo1=s|d|HJhhw-N|aJYCXOf#~5&@ zS11|RnIAu)YjCiFzDqcsO;4ucaORjY3#10DwZA>a!NMqGba2JH2BIdJ5h|7FlZ~w0Qfp#|v=9R^Y?c z%p;qEOFiI&k)bsajIrmKZJ!6CT<&u78}~2=vO$U=4+ZPOIR}I{PLxJ0x>2RyTjaih(`oDb6E!SnuVX zfZ?{VE_b%(;h3%f(dit~VND#Z7uA$%1$f2Jp3tQ&5+NtTlAp(;5O}JiE=Rk)P?Jzy z6>f9Kw9s|Q(j2ZB#X#j<64xk$0^!&Mm-|-8l_LuHwqLrnS5D7t#M39`wa$p)Ck?(q zI>M3iMou|SxQ_4k_LzRG9w>z1n$N=p7B7Gz;ACj7{b+b7 z#!_|oCg#-*Nkj#0ss*j~i$tc8Qo-neuo>L%o2mnPO9@TKd^rh$t_z*ggD1!jcI3b5`g-ulk5a8G7t?&*AZH$GN4})3YV2~Usz}Tq4uog-b z00x0Aq&5r$i!#JQ1)qUSG))7XQ4Y$*pxSX(+wl|z@uNN2ZhLSVtHA&pDKP~p$vMcu zfK_f9JX+2$;T{VPS%wW4XaE{L2xJF-iJGY`pTLkosTpAu+CK~Jd)gn%%iZi7@&YM> z2|`sPf&9Ve0n2Gtk8lTD4clQwAo_q6?OCJk74kFa1jmE1GjBJ>Wis<l1Gm|h|@o)>pI!IFP zt;C%n{1TvT9UN`}&ms9C8J%jo=jTzp$$cKjLmM7$$y5ZVTlkc!z-Mja;gOcsURyK< zhUq0QO;?WgDuW{}MONKpZqaD3NDg#2KhND3x@EepS7DF2wDH=aW1_~fN*N9<9c^*c zk6I?)b69OHr@>58%fxM>TnoTq7ZBiUI7OCWv5&Ih3A#Yd-$8o|xt%}sP| z`7PDfBCjnpBLak?9nb{}13Ah9p$k@mG}g66%~-DT1ewd;QU|f0;aoY`7;SF=V58SM z`MKCBu?bq2ZcPS&UsY+c0(3W=5>|yAv{{adLySPBwo%jvlPN?MEX;Lj)XKK<6_>GM z&?K=A6-&5VK~j{pm{C|O#+0iS%XR5x^ZF`s9fkD5dWYQtvyt9q^4$abu@zDF!daDM zWrJw=USqw8*Z3@&qPg^T!Ih8*_e41yR)T(l4s-eJMMnD-7xCzkEMBnsjT}Q@_>s_< z1OR|Zg4FyBNC>Am2;ni{bVO((3O>am!FMcIq;4dV;Pb*4B#9E-63F)CnkR=;<^6Hq7Q+UJc;T| zxkh^}dR+lqo&81F+g~_~8|2Y2Zu4+R8fXnaV;Vt8h8R7u>M+2O;d=lCSs?*dDF;7g zxj_I2&?Caa2)%{NC9uIFN*FBWQ6;Wl#8naP%%dl$%6)F(_DSG`P7n0p{sWBv&-U1k zBIY@M(+yPC<|KD?$Zi;`KXKG&zcCMAqOVn-Ef?QmJ^q&UW>iJAN^UP#*WY438K`Q^ z)oV2_n!u~8FL3QE{pc<0=gd4Zc-Y9V!dJ0(Zds2;eDObS&^y9+caKB2C*Eq#x^cH_ zz|~8W%-S0f_{ZL1USXQu1OCz^3@s6O1_DL^j)##1cbM;a54h=bnLbd>xYhjZGM&FL zo!5=47r(Ea7ysRM9=u$)QHyT1H&r}wtG&+RB}s#8EW(%X1}}F8>7?6i;kiM&T+;TY z-7odhi{wE4W{ zq*ATE-Rz4vW`)leOw?ltnpY<3FMGw-t|ZWto6O7i>N5$sKKBuFE6uX|z?J}+cka_Y z;@0egvslQexnFN$!7uOEUDe!AjF-j!F0RcPnAJBpPnhSjdY{(+oVt#{(Eb+uRsNd! zrhJX=RJHNr$B>P!G1#j>_OesS_{G^H*65!*&THBG9?(xa>Z5IDzn!Xwdi`3n`XTgU z^R;GK@a(OH`ETu=1r+$qo$Jlf`+{y)uGLpMTTR2mx|{Q*IqqS7qzrmU(%-_&R^mweFA#=lc)4X_56LN_tSc~T63Qn|1^fY;y&~E z)B3Ul?1z5RHh_ath%5=5L@XmAS{!MGjt*9-tRLHFk>n0DW`o{8UeNTs=iM4}{xiC@ zd1-_0T(?`F-7;v6_VeVY=FR8yzAb&bzwfx*z|Gf4( z%U29ANfS7P3bxs~PYc-+D9(>$%@fb-A?mC9P2vUJ0o~sF1>I{8s5HHxJFzRvkUD=i z>tE0vD<91k;sb(#0vEQMoiFGv1J>DBuARw*4OIfU7YU}4WjO|PM>Xrt6IpY@i@Lvh zG;3zPsM~p8$js|pX(|o*&ZG1nUewq8cQErqVrDOM(98NDPRnI4Yo9awz{~m};^$?r zU`p}4{1r^w2U+v%E4sa!I@x^iitgh4)g=C+yLa4re<2)>NR*egA(BC-j3g&bHW$9y z9G+(OUwAZSviZYbz*bSWdKDA5Eo&N>ev~!GysE3!cYIi59^qSj{o1SgQ0Hq?{hF?0 zC4FCmC+eqJbN*|(q1{W(XNFXioHp6q@){aMnYU3!J)1RUuj{TQ(xY_ZVuBp6Zw_H~Ik$LoW-9fF)nm1q9`?CI4n{-3_H<}lP7dm;x z$L5$#klSx&&E!oG6z|<{R&BB$y}3zOftJ491R!7{I&4NUjO&EWdMMMyn|1ffJ?mui zZ)`^MsA<<`-L?8}wpkruUNN@|fIi7j%)mEvb;r-`YZbB>hpT%jfjd_}G?%^sN(L#I zH}pYeQw1`jNo%w9JzZ_Sctan%JF;QfLgkHY@T@n#mkmbE18>3yeY+`nOW&{lkTvVy zvdHFcfn>v&_uis=s>zehsay0kBHz1P^!}Wus;&BD^-|VcvK79{FK5kSq}97kMQaWt zif(K-Tes>iwVRp^G|?t_Eu&1mtvhnQ{I_-Y-RB9o!ohrICcJIu>4CTHJZ*hjSCsA& za!h~;n@_ju%IddlDw9vZ)5X%U?l}Kq@f_} zELaURF03TzKM+Z_T=x+@KeY55q7Zo%bn~yIroaylvLR;KnVIpP?p?WC(_plmh*#dz zi#pA-wdF7l9E_*OWf?$}yZ(JWRn5EK)O-NW`k`??)3xTr5A0F?;++dYD!lOm^`O zj7fcRzj^diC@5R+H~!zyotnP^-9cn{=&e>7bNS!&FDjdZ3CDvW_O}xnw^Z&n9|GLZ z%|oB*pHfV8-U)^QSPk2$_uY*)5!!}}a?FJQA}8xL(dg-&`jk35ek{%?jGB%A%d8pn zxgJ*jp-j8Ij{zMrpF_Ap>^%RuzR~%>jQ&FR3>6Kka00MyEF^yNLI=U9hZ>_|ua7pyXPFo;QRJlr*3Rs<1$x-lbn>BY`B*^hT= zT+23Lviavf^`UC~WOL}ZpjLB#_Ka`!fzJ1!@+dXyep6lS?j!SB>~;aA|Ge1UOU=38 zEOXq-%71WDaHkkiA;4Fl{Q6?I*7=8dquA|iN|pO)^>c#5vfasp`RFP`!Vw$ZR_=Zw z{RlR6)b42U-W4n;E8b^8;IpL5+K@K_mjz3$T& zaNs!~PB~3o6m;sXW<+Gp)^1h%w{2d?UDz#j=`%Ak>h4V`_E6OQN#*;tP{>zNi2P*# zBKJrC9kA{EZm{jl0&IIZaL#p0-1X}3_nSYJxZSZ9_*;p4Dc1t#{4#f6rVGm4X+i#Rsf^eq+PP%!V zY~cfQM}>Q#+I(ZSU8Vc9D!tvx3Mct)_P^S@m5$o5Agij~Do1U`h-%ye+wOWmh*=`{ z&>H41zuBBy;~q}tdV7s~5V7U`8u!@h=BpO0P>7X6XQOJ}+CKlVErs(|+vwke{W1YwYD9b(1`Oej9|hvVy9 zq2S4N?j$Od@eXdUkXz-JX^wfO2=@n^*8%(SP%Ec(aF0@7XU$6;Kzj%R0Gd_r8{Whv`e< z-bM#bCBY2hJc7mhy+Nw`qBei65Ep*T#YrvCJ;eFO9Ob$91NK>!a@(lHZT5o(6ajPQ z`6PdrDI~}MqW?~2_7|PqeqfE0&0Y2GG0CM*uOnCIEkI~xv&km9xT}FMHZdBd1Ja`}A{i>|FW*>LB+P=^{y$^_ZSCB4Rn2ql1UZ~Zso6Ok#-E-9Rh34h` zfkoSIGSLIvo79}iX4wJm*7#aGOczE=Go!bALP5qFv%R-Fp#M7--}{2gE!?;zz@)$Idn5AK`ywdDO%D{9Ojkaz z-ejgkt4)`FZr2WX3*+z;==US`C*8kbHIDc@7nuwDVH)SG$NnIdHTC=sBI6K zbqBfoclvr2n*r4cqbO-OIKc%wuNj3 zOYySc!>I$@?%l%=w}c-`rMCRWpuDyXZ9;i9eVQpA=pLt@eAk>d(CtZG;ktot4bxi( z0#11U5uPiT$6CtvwbaSavkzmK4|j7gCXFjPs?6^uv_P-6|=H; z9pXN&agFb#gWaQ%tRL+D3dz93++)?^2hFU*-2L(R*kSI8e5^hkV#;QBG%F7WTH@i) zhr8!7?RA9vC#HWt!fj%D<&o|Pd4D9Z^0f`-ydmz9>gf$;RgiwpbioF5@KB@=Z7`FE zx?P=D%&MW#L>8MDk;LwpMdO}dYW5o#tuPhC+=|$J&9V+hmU?uSIqRpO%1ej2mHO#f zkC}A?ah36J@f3T_mX6s9USb7XZI-rK?op`V-C1T!AE07yK5PqWJLf2Tzta|OWed;6 z``EC<6k11j=DdZCDrM zx90j&-7#wV67%h;z_IO%P2FioCoMJoPXjB(`yZVKNFkkZntPA4%J`?dCpvE!Z?xMh zF>mTRvUlx!h?s0%I^BJx>IrfxFqSBGgy;|;J}YI(JIu(1PTxJ=q8zs7@V50C?%S|F zk6+|eI4FCwQ)xP$3B_r(nRTYyp`ERD&pK~*#yWSJ1I}`9+@tDT!>gA#gG~L|?o8({ zbI;k3gLj(kXS)-EI$idYF@gApJ(=_qw@<~L9EE5y&}HF@g`Ks#%(Fjn$F#R^U?2hS zv~S?Ymi)ar_8hnCZdJm!0z2)fa^^YiwQc1?MxY74b5UdWbKNECf#qhzzR~LW=euoU z&o38*uQkt~3#Ph#xjE(_`$kQ<#k?8*UUCbGaBp?TEoS5eNFTAOe*P9q8>~vdRq&ub zvR~-G7i8+Gx8{qhdAHiSR@|Cz^RZivf4;l7Zo2I;bM}F5m2`3LZPLZw(#6=5_Nj+` z+G(Ham{Mm3eJnbt_DjAHzMIz?lthyM*2goLENmj3U(|Z&ses~JUY^?Jpb)y zg&L$m%QhnD0XLbs-HSAL0#^AD74;kqNTpR?S^RW`z?NFVp_H!g%JA@Gr=@<;63j6p zRD08Sp?fS2`>(ywJ+R9{j!q(g1Yr5>9@OLS;9m-<<7@pd?=kHfA$7Kxa~pw`5Ct8oeExU7 zz33u$jPt13bP*WAI_a~+Z58S_>x0KqbNyJiKD+wo?&D6|Czwg{C4<5rQt6b7-J^mR zplrU7DZ9hGb1??-m^tAR_cutsyu`f>O=Y9c!^MX;Axli<&yG)pSaF&o?+qha%P1pz| z5VqiR+Z=P3nO&Cwp6g7f%iUouj_AtEb0cat)a0%-eztZjO+-@$o((TsmPc}Q6+(al+t|*!x!)4lr{8tZN>DJ?`x2|+MI1ihDppLe; z2h(BASoF94lR4ljw`=LTJl5QCm7CftEQn#da4wN1q5*zC(!4C1c;+gsbT?<;zsk)z z?Ve;CjOWTbqJvLfT59gO#vN2z@aaFUkujw*?$M=>=4-qnBiV~GZcXVQ^4WJ!byMwa zr-J(@M5MY{A^y>Pm2vxZdMQ`fVi){|aE{>rqwPJwqpF^`;l2GPAz|q)kV5D!J)yI7 zln#m%4FLj#mXHJx3!xKw5M`uE@6yZC4Mlnhg3=MJpi~hN0r`G&@7~QO#Q*y~&-ZF4nNVZrd!ZZzf>*3!qLOqFPKI@;Z}6DX^;T$HYkmf!Tw ziI76a$N>o3ehemr_R*j*auBc?z`Vb8r)pT+ExIvVApS?_r!jK8Co9{HHOiMd_P<$a zEv0#|^6Rk%D}NgcR_-NzoST)#-bfUXS$TpQjFao$0I`PsH8aWxW zOE;I$+R1VY;W+&4sC#6S+$7Pm$|+W?=smLq_gSk;@?;K2zoQ^2rCrM=q)M z$j8j7a&1I-e5zcdtcMKXNI@MN))x)kfrGU6y@r^$tC!%aAVJu_#b+#`G98E9CC^8s zRQqw~)M;`NK{!o|rpx8UpBB^M>2lBX{R+-RxDMO}4h$Bo_RW5Z*(f%${&;2wM@87c zX(MB!9cyCjBNowKBL~=nD)Oc~oC>|h*LlNQaRl>*Ei7}GijlW9+AYP%lShFft}^8b zVTh8Ak0!td7JNin=Y#{XV~ckYv$cp#g1p*+&F-8GW?fNNaPrGMW6i@_V64B5YK*Ou z1+WtphOsXmyX(w?AR@kN;=KWWokbgd5`dQUQNyuAi+}vz{Ib490UM!k1UvsCfcmXm zyQA?r&>``5LA1P_(|j^_kTYkF;dy(bSsoQfRcc@}dyrCoBX=%%mam2l>&qYj-^eVa z4X7p9%5P$~UWW3$PP+Z3uo1g z(;_@SVRx~@lz`lPckP`tsqP}U#ZVq=x!bw%X4`0O#&<;vj^%C)a~jYh29>QHfPprj z^Qu7SWGR5=&%y%2DOx>CZcU43$Ued$S~o+kk5;(OCvt5Ho+)<}zNTR_(e+-wm=?@L zJN-2k&IG#6K+92=OjOTr=-*G!UD{9WXJaJ%FjFp4?2y3?v}rh}?5didE~Z&<7Y{F{ zh*@%)nQj;1&>SRXrg$h^U+tHy^Si)ms@$3ZRC8TYzyZj{hYGVsrhnAZ;z7PM{sEKA`7q{v6t#B zkOSN$F%G`)+O64qCM}R7JWKNB0;42n7Rc4A=H$xIOQ@lt&_LMa51!&CLX2hj9663p zuXUDRh$0Fn>E|!xZr=aoP@vT!v!z@l*DG?JW5JducMl1rKe-5fo}6^(!6KtID!Uj> z8McnKT`Wfl*J!*8-M$#(I9UI%SpLAX1?;=TYypcbHCw=@OXXPwe;m&`2h7KPu>--Q zpOzx7AF1>*qZwSjOb(>fW#|TO&Jh4u*3^u#4g6nTW>Dfe4DsO-Dz{vI`~T}W_pOkt z1ep7E`A`_|EW+@KYm9L%GfuZ-7DQPI8<>?=%0a<*jIki^{^sSB-&`0*6fPZreUk%L zVlC;L-K4LQL(}J;%Yyua*<*GZ72yChykqflqb}cMe%O5Mw@lL&!{18{$K03Q*&N$V zDm~)x<4rHwoVv{tS^LSN0pd$H>EV_V928Rb7pV zQE+qAYPpWlAzHVRg^^UJWfh4PCWcYvib|r`%DXgU$T~TMZjl9ctLT ztk}>f^79EMop?T+U*N;x1~B6G{|HP;YvpzoAM>4p!TcDl*a$^b>@N)qbF;O10}C_z zr?v9i;=`p>ZyhFyQQ&vh$r)I#{C}lcDQvwwR{UflZC@{k7x-z1!31pln>LXiua|!; zeK%)*L4l6r`33I12#$O7aD!aIZ%VcyLwpY_hbg~N4ljM*GmQE2fM=L8f9DE=qVqAo zP`(adrqGSp8GUpkmPs-vlC}x6q2n>Xyh#o!@bxYuZ&!`Hy}L=S-uAi4DU;^to-K45 zKK#+O$TX$+f~OS1#}|7IAE%L`WAQ3OmR*91%_Gmeiim z-mUUTeYqh9_Jg!J89Pwk*(Ucvr2DpE1htJWZ_Oy*_V<;q^uCxUdP?K39Qh3#^r-?-dfitpfg(uvgCWscn;#}@c&yHWmy z0!MOWhg`j^N6q9`%<8B3c-ibTCsIKtI{we7rc>@BuH8kGoLFsw>2zY5e(Xg0!ztH8 zA!_Z!9L|f~)ODx)x&Jd}N|0a(GR`0v2U^`#)pwU%+vkPJHl*;BI_#2Ti{CXZ;8{Se zePv>`%x(GGcgcmZYvamBhK1QE%soM zW$A88-Gk0FZr5J72cyLzFU5k-~pJ?L;CV%NrF(~}>2s&!1>XU^Fp9`vA1#p`-7J13m)am>vle6{1~n4op(a2#?1bIfrp z*ST65!K0PIU1qLU#`*PexxFCVr{X8&buAtm3^uNv$D@zNYdKJd5(~YlB60BwjtUAG zXc+P(=dUQ8`YHLiAU<49=TCz`qgPPzGw1_M-$jSc$T85E&(H9r<1VUj7WrMii{3md zJBsCKI+sH6aooi=fwOXP@z0&K>#Y0@y!+F`z_Yl(15)4 zEqW~{XvDX2xc_*A0~p4dr45qHPc;v9L}oiK4`TzX;Pw;TFrl5o zY$kdn_Lt=Mom{GjAw~{f)xmH9!$t1W*ZB_f9cZKyzmq={Pc5ZizLR4-)TGQ6w%SFk zA3{z(xhRKQa*}^Rc!s)wTq5km4}Cn zx9X|I0-Q23?E;N{5>6TIrub`e5Anrb`s$ioR=Tj`;GB`zocQp4$yYk;Ldsm1{e2g& zUIhQFVRCWd@R2%&lNANpoTZ(QNl6We*^ni!1jkX zWaB)8_xIS!1LtAiW2NxsD%$wHd{|t(l7`)sBRJxvsFLGNpcmD!9K2tiFn)y!F|5gi-M&O-%w7!4vkz)To2 zc>NL4Tlw1as0Ka!(X8@2ME1(tuJPLnVPC3mQpSrTxMCcXMwJ|d1^Lr0%MZ{c3en*Ye%gc7a}182BUprw3ps%z16xdmS& zdHXrqbJGl@25q^@{f-)ii`0<0VP4$O*acDZMeeK@>Qm@^?qMv zBqkwZ{S@Qi+zLPCqA-s>E~rqLapf~+pV0c7@@}n6Ix;pJJ@;IrP{-$+shM2~*Ke3K zb?w_oEUJ{NdC#;`SZEv<3>w?_^T+_`AEuiZXp8AX$??+~N-mJ zUr6aLKHo?C3n{TRKiO}vj5ntn{{PG!-8|D7dy|Z$@{22qt`=5mh^zKfyP}BDX@>A- z=5hw|kwrMDeH4 zQc7WA3)QNMAn%q!ZZ4SL)A23-^%bw{m!f?@^iQ%3o(1r}onrK$lu|_8oMpO~Ee+47 zfs{jx?MoxAds$}mqZyfTz(h6y(KjA2qA6oW^L=SVbK-!RG2b#uDgCzPey#-O4H}nG zs^t)&v_XUulv&1u2uI4~5TVowuBg7HT)i~M zppmx_GjHepl@j8igPgZ!RvtopOBi`LYbpexKna(s%Gus$GN+csmr{mT-{Sdask)m* zvE`7PTL-CiInr=IppD_* zw{ZR$DNQc|+_VW7e>XBvirx+M6vDzr+0W6J*mvj_!XE;2(h$y3%^(jU>>1>a)1NZg zW$IyC90FN8805*=LPo^dgx4x^B5od>6LBds^Y;JB{NZ4ag#HXhLR$}0f$}*d3-N^< zpaz|?h-S}^Xqn}e9L5=5eO>nl@s1U@Ecu0iDpuWkCj?1fILsm*E`(W08Quj0WiQ$So7t>og?nJOOKDp?h&O*}%ORdZ6K z%&K6MTQa=!OUq!>nW`RTG{wW~zu45enpwu4)zF--K4MU_0vXiYP|cH?Xf#pMZ|Fre z4{C;2&q)a@N~5ZKFl$qF59-~7i+*$n z8Y*_G9;r0p><*1|XSb*~)+?~M1je4EQ;}xGk0Q;8t45jqqOMU&%{=`gId{KEc6juQ zFk`Wnwnr)5wZp$Bb zUBubPco$?%as4qG#pa=7w1Lgb$9NZJr1-}%Dq7d1afiA}>Eec9Va1L_9GK%);L^f z-l~bxKg2c2=B)%lnBU@i%Osxc5*zV6Hio}EuKKnK#1y97RQbgF+B##%CODqZ;-*S{ zA2+^o4Bc+3v=Ap}P*^hr*qA{*n<+hbbN~Kk7+n2HKz~Sq)K=@OLuZ0?O_o=|oGVssC=X)V!nf0j9qN$DdaA$A3vxTcKG-u=iRi^J{5RF@o)3LA~gnTxlWTH`2Pw(!`@JCh-=5v*w!4eD}R?Z=YHky zvQd`=$F$=HFL`!u+B)-+*f&@17Yb2!T$mHJ^DD9NSFG+OYg`t@+B|-nB*< z@YLR4ZIuQ2&AT2cW@ZFOGp&qZ5BxgpuUGh)zX}}`e&(-J2aI&CQAP)4ldnhGck@g8 z+FI(@Q3>&S;ZFP0j!G;-pYEuX@^z;oIQFiya_(VyY8@5pq#S_cU+kn*fbp^uN#<5rn8sGwDU*1*%lXY)%2dTYk;^mem|NX_*Q1OuUC|kd!zZ9Jc%-TEB>XIe`!=W2@4#!TV71# z`~CPPti=~-e{bc@3V)d*UI$j68eZ+LML^zIi(6vQ@?d_VW*-GB1W5f^g0f8&<~uhG z0(-Cn;QAO01YZqSKF0UQLzGMyeo4wS81qe|ap*P{z`B1LhEb0^WbR3!yt?7vc#nd0Y@Xi^&LD=2a;4ILer zf2S#dx$0c!V5lPAaVDY8g$@I$uTryN%7^Uv;4oz=n|+5XcdcuYjaG#>Dsljxv4;sS zNh6dv@z0HvJp%3CwN1`nN1)99+7=erF1loUAm5Ia_c{6{k*` z9hUgb|JrZla8CoizSXGk9#IhS7%~I~C$aIU*o}$w#dWbZ-I%JVV#XxWZs0;8BpG!> z+|K67X_)pxn!GKk{dA?C^_@Lk*_B6Sn)I4ccp?HXJ8VKuK<)BSvVREiQ1g0;L;L2qMC{MHAq~US?EsSIwi*}h*b7{=ex6% zXhC;PZrbS9Jf#F}`9xV+W*&=&v6zPUB{;$i$N;X7w9lJFsk6~}nm5TgXSU)a`OYu} ziJx&O=|eL~i6dXa^s5p8H{qi{)B+PuCo2xXT)VXN= zrcZJLi4??5TS%J^ej)Ge<|`ST_sjE5N&a|&ayP(TS}>uJ`ACPSEb~-kib($~Qf_n5 z86CthHmxQ;bO|cl;w{epOSmh5>!fBaRW34J1}sxLv)am9h8fLeE9m=WN*Cb@#VkkD z2kU{$VSRc7OtmZtbzs+Xa6xf=|v#Dxdv_c>^~@F4V0gGRh2*8T!XnK+*kEv4V0{TUsaCf z;DSOqYOq%-NT01$uwmhUUT;-{POWo$@~2~8f-#7Az?U8oTb4JzgdEl@MeOnJwd&JCw7|9%ZS36ByU`f)WsRb)V8rytIva z?NgeT$k=8in|spy*f!d?Pw8Chb}mP>1boySI%gGC-LDKpa&z`8i5#Wym2yqIw4J{H z%Ipo4%rf;&zbsTZxG&05`j>VZngUxt5RI|B*hPPkBj|vV>HFf6QP|43$nn^A+J8U^ zEPrVW=Z>F!SIUny_5*8Q_lPs05)SRsNvTNLc0Ub5QwA4EcQP>!m`s zAj@piDj%tP-1J}&L=~TOZiwLm%p20Q5?~1+hJA; zle8si;Yr2I_h+*d72*E3S&H<0OOc-?qM!PmLFTi3Vdm#1gL5tHIgaI%EyvD$EnUPb z=((SYFL?>ID@E&?R|DsktkwCEduJ|7^a_vAvQtpNyXg5TDC#{_{A%an|Dm>LT62$v^=X+N4*_(7M$8hUz{~ZNm*x=s=muj(gs76Z*QlkXO-q| z5yOKRE)kR5B8GPz(DYrUp4m!30po?=AnbPIuG`dXL$IBPvK6}_7sy($D&SQL`x<(A z&dguzH_At@{JGt3d}C&^*m)FX9o0XNxs)T+{k$?n9KVB3o>zKc%XZ}p%4K1{Q~XvT z5l6D-T~v~=_~v~{sfzX^>JmbJMeklx%7v}EVes-fDkWB94N1<$ON^>MGqu|cfxYZ7 z#s&7*Y|ma&hWX`=j5=Oc&J{hxb(W8qN{&cuiN=S6~!*0V9r+8m5uyC|J+pk zeV1J|GE)@^UD!e8Z$V9hQo%nct;KCSDftJ?T#U|ee)fa1P!bMM#4k!6ETRti165O~j_6|A|KkcBK zchC($Vx51(kXRg#EB)?btb<%EzN-}TU1qjAm7$5YIh_aZqBOpzuN#>UN9M=xv_?;_ zOiLa?e!7!{he|i!6**SRcRKq&RQid&C(ZaGprmmxgz+4;&GD~kSqYXuxh>r(+mJE^ zK32LFaYu;rlTL$!8)u(Qi4lL=Nk<+l6aG&Pxi9wAxvpDqT-Z$&o?ujVj0QYW0$@ye zqC{Y3eE$=r70$uve<^V#{xm4fLmtuS-r3NH5$%7|sK1nQ*juphF9du_`~Fe_1Fq%W ziQ+JA_z4)^Mf>6}rEa;KhNockedJ*D6R}2*4ya49-`q`aJyog{naDRM7_v@19*$$!&(W)AN~xy5vSSc$=ff!*I}F}VhUIf~anBh}e33A2 z8Roa>;G-xoZ1Le6rtR0*9saVZ$3IG|X5TQ1?Pn?p`;W_OsOHIj*@BpDS+&#<%gD_44QFXrp!=eU2i-{QWt)qo{TPFO++t zI0bKkzd|o@0>&F`{=JiWyi&>(Icekv7c&cDBW!FgYKMm@uaxT5|29}}?i8?9;g`R7 zxf%t^FT@WBfha$-t0je#pH)#q-^k{8dCH3m!{-*cC*Wy`W1gnvc@LkuW%;dPiH)4& zGCo_T)+%_5@nBGxk4e}se0EEHyXKEs2cgKXL_x!o}biUUgn?7x`qC=Bl# zzeKU3+BWzKTcV?gA&^UCFYV&G2`Mt(t+)R{t3|bH#AWu!^~fYk0e*uA(LOXPg?XES z$OpXmlqV<0yig>y1*@^Pl4@{wsHB!;?oO4|eg)5PgjUD&(k>EY)xVNq={SOGSIunA z7X&%o{)iE-6r8rBzWoU`mDRSwzcgD`4+}4y?I&NDuay)5F;ng*&Hh=e3>$6$a zPwmR)1V1&L&0T(Kb2f#7s(%S9n>bkt8E_FYbB{B!pz4FoyL-rCS39ve$F6?O=DUT| zL^h8VQokr=h1QWb2^aLc!&7=;bs&4YTUf2YW|1Ol6*e0bQNyacsetAgBX({B*sj+RRU`!cdEw1g~FQ4fZio3es>e;}s1k zZc_G(;%b!$lP0W`x0#PYaP4y^WC;b|2j{k=e~PQI0TwacFIM9HBa0Lc6tF`HwFnoq zZwXBOAaj`|P%(k8Euk*5M1&tHg45e2)wkGbeM!^n#gb}hF?akp!kLq_eTLd1PQAwFg#gpP9H^dW{Bod4 zZQmfZA>(a>)PC;5mCR}0;dCNM4R<>g&E-@mSRKlt#|Nv&*=$$dOeMX%x`*+4A!e?U zLd;y<3sEE3KDYw>kH@~g3Tg+&8&y<;+3Zu%4F73G^)TbzDw(x!ZY9%xa8=cxey*fW zbLS^_Rwq_Ag==4BHNY*UMU7WKa!C2Ovf7g)f2)f63!C+;x+BLU(0j$K%3IeFt8JZ zeHLaCwspAayJnPHhH%H>8jh-Qgh|yg5vJqj2z9PI7r6-<7iki7PUQa}=&4APph)Bw z-Boi%T2x6bMT;ZUf}A9h@TXqU>Zm}MJ6adr%r;IAVo$c4J#%7Asz=0_RNoY1ipN%$J&RDfEFRZK`+b#)>_~_ADHlGuB#Rp&Q6KZB< z*_7sqgAxL>q&nW-Sp~hlnz@#4 z2BKz-)UeXJcVJ+jq~3J`vus%+|5sXe?%W;;1v)=zq(1baf?ZXWrgm2gX~W|O4NIt% z>I`eGwiNW_l%(N_eG*bAsfXIwIkJtqOv~{r_DP`4Z>sHSbaSX7pi6vO;NYax zw7{ex2`)m6bZ#203Ih3!RabmaC{mEj!QK{xap7F zC-zP=EeFTHAD5OiFkwh)(y+ATVQF!Qrf*_DGcfL|Q@gZI>NNmm0G*Q)QqsV__>`3R zk%>q#H4!QHOGt4MiK89TFNaj|eflJF0pbU>cZa37$EkrdDMJm{15*=*4oeu)o17VH zEpMAmu$e#VlA(su{S5f~aUAFvJ5DW17sse}nlw(0q+3~P5qdU8Ek=9Bp}xYk9231N zO_-z>E@V4)SADbQsO5jO@9w|ozW&NDhatW}sR@Jn)=W){PXR-y(j-KN1R^Q?BcxJx zlB!X_M71sbJ5Ak4N5-p_jVl7~k5@CQr6!~##t%yTAR*3>y};h_g9d@8y%Insu+!~2 zFkxg)dQ>t)ZD??bPES<3`LvE72@)H^$3irur71o6$XMWkK-=h^wm?*+srj9{FGKTzuicP($X^#Xbppa5$6 zn$Z^%Z8k3hr}Gcc;MVjd?IEJI+#AAkE4ZJ~?6&?ev*EuiB0K2UV(5bNY zh53_@-S!sDngEWrT`@ZJP_5YUjiPp2JK$qfo2?j33*VRr-;@U*j^rzQ_-DK@$5WQ- zK2l4kTj@Jt$HlVnoq6zGF1#O#!DP4rd1wC?{(T<&W*!{(L>T$D{70d@g=~0>(z1w! z1sB-DhvdQ6!Ob(lFZ1B*^WdBE;G6T{1(3l)NZ*}cL0EWZpm832W1a{$xbWY>ncn#J zb(Pq{{qo=(KNrAqPXivpWU(wp!lIT3J`p&x%5v`yoJGXK+X4^vzzYHQOu(K8e;fHh7zLOFm<3n@*a>UgsB2prkVq93bQAm zD%bOsh3&RxKv-ayXBOTO->jhO6tLTd!t9Jh>cfmHW8y!6XAOW`5h^GFhw&?Jx3Pfo zH)p`YS(&nWe;ZH$z*OnN_52-tbOl&HrbIVDUj1LXC4>X^!7w?qwP2Qj*&HU9uC>eT z2$K`;fr7PyIRy{~SYOg^n+&r!D8tpcJ3wy9{{TH0TmkChoB3qn&GXM$)l1~^k75lsnK=_-Ko9yqg?)3*GFA*0-+Sa<~R zLLPXnJnq$iBYe8M3ETk-ri2y2THwWjFNcf`hRIY31}rURw+)2JtlzN_sI%EsG+MxDa@-DD@695DNT)AF3hDV*rlO!daE0%jOQ> zSu=(9hJvaM`*V;DZh)=$vymWE(87%ZbCqg~1UQE*u!R9!xbY#k?0c^SW0F(_(&eUiCe~$t1kA<22 zj%5Tt3m=DXw!7vEJ09Po0iIz&2%~4qh2)=wPvoT7vgAQ%IG7m#mU{kX5>5qF25`dD z^5D~5cAXJ+2EJzkG6Ayyp8#e9LI74+PuvQdc@V0b1Ahwe4E!1JK!6q46So4NawR+` zPuSgPH<1ZJ0`vw90elF^Xk$;eeU6WHfWv^3fNVhCc3>VN*@Vbg=;j0N z*bxcLwMa1lWbWJb=kLeF;;8DYrKR7J$i0 zsT@qUuK?2*W-Lr_#8$^;?|{kL(8|C-2oGmG2I`k}0rxvum@WJR6Hj+rJb@!eYMF$|dFRpuUeqJTWLzQk%fc4|R>n#K(;~QLdtzBWcQ<66<`(u~@;GczW!go4bW+3opm|Fl_0owrFIPlN% zyu(D@xDz%=`hM4dhX9@i(^sNaT0M^Mz2)h9e5ao< zzU@Yh;NDS5fHmV|wGVqSA;mRj3V@ZHh4(;VOMBp9z?m?XdnE7{9{4r%wrc=Ci4j{h zn7wRhEy@@clrAANCp|ouL*OtE{43xA9(XyFk~OcDSb5;V9(V}w3Lf|~*-YH>9}c%7 z9`3bR&v;sJ4n6U1z$<$McoW~OXA&`sR}*Gm0CT{?>*L$U1Fw?@kIsW9v7A-%2#|vB zAP+nh-%M^R0d6r_vsyUU$ci2~*G|vy%)VA0?o;v26t%)nWvvP_xGfgqJIVtei|^_l z_;`FXi4&=rX`J* zTAf!Evm~%z2~YsVdY}^mC;(^#umkD?_*VsHNDnBGSeHdxN;E0&KKLUON z{0y*uNXPaIAn!zlm2s;jv!-lV({L5Ba4+BuJa7eg1n_jr1LutEfz@-hy2h6KR^)(1 z+`?A^Z{~sb$de#X-E!yTSAbQp+xWf%;DWi*Nq0|?6q}b@O`gimPfcQ041u|!VTwEk z6viA;YnVR(xG%szOGy93_Y;7Xfxqzm6!15oC#Gmxb9ZGvV&a~vr^jc&{{cJ)974vJ zha5QyW$SYe%D)UH=}?O=fWHL%3wQ-s0KLwcDULW<^KdS$#07kd013c9OAvX+lqa-Q zfCkV3EaF@UFMN9gd;lCjPgwIDGtVnO^hND?7na;GR0quVwHtFwtms*$eh;!6lUuAw zxN$fKO0|Pol_T-MD+3P%egm^<+$iwe5o~k;8;0wbH+apUKTjp^*N6jV3+}b zKmdOS0YG_!@D4=lWowi}nf0Iyt7(f;OMr7@W#PMkbIWPU9_t@&{^_irR-CT;Y5M<* ze+7z%AZJ$3`Z(ywa(A~dedq%@U15Bi1D&~Wb`==uZL;1I`0}06YK`T#5D#&;rm4 zkPi3^uoaLEI1ji4_#SW<@C=}=LjM#H2#5eQ0dxYy1BL=d0X_rl1f(CvzY~DdfOCLv z0apP(0DcEN06Ydf2NYOsx0M0}0U`koKr=uaKvzHy19(Wwe8Spva0>F+jOlv>}AaB~%bk!q-tAPCOq!|UZ66x)Mb^vq) zaF?tz;4J`8m3aQFDRgTJK5z6EZdK46Wnn6aZ=oQ#LFAv+l6Dc$o>>7bjqwf=wrJB8 z-`xOA8y4|rS!h|w3dmuzH^tr!nqZ$?SXU4+{y#z#*fDWmVa&-xt*|ZR^d?| zIIHz$9=ObH11I>4w>iA$M$rNI2n|XmOy&{WbuI!Sgjp9*3}Cs3;G5m81V2OqkskOY z;4vQfXL;}vVt=#VTWbmgeaT%3E5gnA=JvtDS%Ry0;4IaRJ@BLWW<4?jEjy1nR%s@u z>U+`mg`nmwP0EcPci1g|FTo||sFlunxHB$c;K+jyH3H=L&%3(Q z9wp{}(~eT~W)ZD)IQLc7SH$iOn2CS^0R9bhnI?vX9~VAY;Jqu+_E-4X9zWIOA@PF~ zZ2o0v=wPjc_lWq^!NNahwCTF@-y&K=9~vH{We8;`F<46${hQCJrNz*U_2>_L9H41p z*@N_EpjMr-zSL^c%>XSCheO{8)V9&TLE1oi6{rn&UJllhnih|V437wni4KpBil`l1 zJ32fjqV@!_AB~C7YC5O&)BYCn^D$W*N$vXSLC!siT9{ZQpE#Va25K{fd|j3d*3RS` zYo@r29*x#oQqK=H?8Qma8Wznb=2`T`P_2t|OtSW;D6SK6?p+&8&r-GF6md_hXpc6x z7d30vIO3hSIpQc<(pzs&_K!4$q+wb$aa&G^EyCwiW0-bHnk!zWTEnz)GRgINrmm;3zFZTIm@L(I_nn z&y!Ee@ufzYG4CI(g$o~M|KGdN5qsy`Jz{tEP?ZYy(<=H|8E@P)Zm&3u9oo@@544KnK5@=DWT4G-t&i7! z@d2pNs_k$(_nj6&_oi!3oCRDlL)%&G^}J zwfbVVNVoRsak#+m)okrO=^LmlR%+COvZe@%tQ6l5UDqY3M&t z^JO1v?+MZ^@mE^>5(ENzW{#u}5`PdW`5&p|LSxG10N1kx}7MzlctR8z4x(ihnr^ywVbcVy}C; z4LyYn)u1|}euRcR*EAX<=#!;8;tkGO4JYiw1?e~OGpe7Z;jVw^d(BmA=t`E>s$|6A zxJc-PJ~2=Y9buvs2#=5ZU3AvV(gFnEyW$kls66kaCd5%tPd%6dztz4M?}@l!S^G@9 zFH-meZIjOfagHICZBip?bF@~9dMdgv6~C_~dOZ{;BMN9C3Ywq=({ok-L3$*1r4AdQ zfBreC7pAovv=I3ZT*W~hQuIEw?w}STJw`=8kbnl-!2T3BlB0%RZ_Xq%F9W>vpQI;Z zJL=%A*Y|&&D1V7Drq=65k2+}nG`hPc)2k+$U4AN_F<4uX;=b1U7}N-~bci9wvCUk& zu(_r-4(}EBw@8JKXd}gEh8ax=u1Xl zy3rNKwGVy%6(_lBZ*K~_qDRpZAH8B$Yo#_+9VflZ^@z0)tzW5?5;{_c za~f`$lbm}tX?8)HAf?mh`H!d<77mdN4GoJ33y*+khQ-E& zM@*8a!+foWlp)PyPhIHWWm;&7{CrN9@L<+Ftu{?upmokSt|<~dSfK5Yrb;{L;R19^ z%6*|Zq-oMtv-K%HQ468tC$(PUbcy1>&<;p5r1_>(<`-HMnzKl&Ce4(VxUDKsiN#tw zDN|bMwkk$7*P)}==10`>g7dXX(k#iz?baHcd)D5eS!c8u=@V%$`%k92XHoju(r?^~ zRihnewJhmVX*@SYwPYrI^T%qOP{!XRR8aY z7D%7Fz4_6w<^Ms3gDP{7jEi0uHMvFHqUav+03n8;TS8Jo8`d_bttLA*C9g$Z{2L%dUpvO|JHQE$u zjg-V#grOfwTFNc9UrN%5IGiYH+%9gdG|31MK@ZnxouzfsM`nNz)@rS!FA=;^J*{@Z zsI-)kaX7q?)H^;cAuf?N|EN{MBjI%weW$zuwVn=S>G#bRC+!J(s2inLwD^ElhC-L1 z5xTurE0S+j-z1TJo%W@)S(-?N)Tgvx~5IdlW(6r z(rL^6vja%gen=}u#|~=_vis_FeD+FTvmdmP^&0qNmFur>nRb+=Ys{92-{t=jxK4RnpB?M9#ah+%O|Iw~z? zZ*B3^lJ=HxjB0Jy)=9^uEo>R+RMBrp(ccU!9=ot7r& z4&%qt&{;S`wRUL}q_fh8)S-^vjyO9~w)C-yWo|_y_0g~3AxGl%jWpFDYFBa)h6M?G zv>smPU$d)1W%r_=dx1La#Tffry0ur!6ux7lJDuLAMQInMd5ESJRllcq^oxj#Za-*P zzr-PtebO*6#JVgR#SCoporbh$ydfvwADTI!VqcQ!_zeRo3 zioBkepJ=e8|Kdx6nmH4*B!Q~FN%~dl&f~m#m1`SA zHM6?p!3Rr!uITHp?9dFrX_?~1=k#?VRpU7GW$_O5W3f=*~X z^2zW$dec`QCEb@|sAsHKjPPLgsIVr&LyG%KyDB`Q9tSjs@CSWyK#No!OVJqAY#yLh zv4{3f8k~&ddZ`Jie@eAownZXv&T!aZ9ON?&|2^?=0P_=*<8Xv>AjUX=h!7k)L@?JOmcS z$mC@qy&x?vff2+{cUOttdc-nRHM^-pjV;#FgjgH?;_0EQArOGB$Bt%dsXx=xK*!5 zm8**_k><(A+*W3h*;<(IY*<527K8<~siyviyik59 zP=J?SmuI4SQ~O$aN9hasOAgtWb8u8zBrhv=|MI(aTYR2)#2d=#G!j z6NRO8GD80YQ-S*<^#RgydAm7^P)}=VCBq_OqoQkv$3{m-*A5Gfj>4Q)>-6hot*BS+zNlGoI0s9@IIU8FmGUM-r@WII7Q-XdQij*^ zJbMFW7}W{qdDA*4qzq0R5|8GmceA!>=3nD@y44*+p{1ExMOSY$pWLjHv#8-E^p87j z)`RH7OIlf)yIF55H4f`SUtQM9is7LoT-JgpRmL~&AacktG27!Z&GP!aPKpi@v>&R3t<04v@{-AMca(wTEoDvu$_gO1X zbdmf6H^qI5L|N3%2}mzK(Q1};^`7#f?mBrY?Y@a|V6K@I9)2s0TgH7UQ_xLqj<{Z? zT{qDy+8}Ra-x2idSajMNozuJvhDA1x?>#Ur1(|G~f~i>hE%d=R%Ad2p8uaNcZIHA{ z{)l`VfkVspYu%;Ia(BkUT_bi0k7k;##am)5|JFGzMB6HF;7J;~u|; ze4fn5MWy0wdqO1Gni9#g9-Se5JhLe@qe7Wl9pA9HP*?SEmm@M)86qO%Vlm+wmk{5( zejbK zq)!~q@#E}#pT=$DnuX%8ad_{z?K0+YK`MigO;TgK_8k#P`_JmNXke6HK-wV>FsHC) zpV3Rx$tb;)w^MFpHmbcSs2SK7_yZ|F*85?kkr@pYw445k)(3g-kq5E& zcT(foJ33l1dUKz>a=dBTD~>kT*NaoPSiLshfz!M(j;Ir>C*U@`#j%*i{c28aJzmO^ zhtiqNn4n4Ss;g9|j$YK~fIQrcVR#%pLbm9^W=*A6we@zG>uy&^|4=$4r<%R(cE4gY zSH3PXc$ge@_2I(TY;@$lw?@r-}?;#zN-_LCoPUGwA z<)!2D2YKz$sn=;9l95il<~V0N+&C%eq&&(DnAJeV|p- z#tvbP^eLFo-rGozma^pm5_&_ku49pi2>Q=R(esqBzwP=-dw`-d~Dg0(%;aFN_Ra1`3U#O@unW9hoX|ABY&T< zz5;GiX3GfE@*x#$t+$jO$@QpEYjij=TkER#A94?q+MyKRTCYsUTI)5W$IyF72$J4b zFGkJV=mn)elpg8jUFic#c91sJ=^MKq^ELYP9mm2sOv6@xajb| z=|Ee(v-Hd?SZ(Ui4jrX`=%aRertqA6+v^Ra7mxxZi`kV9df5U-L0-zOki909rW7TXr(F_j5@rnm!+#6bT4U)5<>+Mk6&0~ zYFvD3Di#bA`ixa5u%q5m9H-ELj(Tfpywb$TIz8;D7Z4{X^lwK!LYk;J%%TqLqkB}1-j}V zi*po;pRLuCaP>7$Vg%5gu6hI(oXd8DF_$`Y)6<1{bgrBJF`i3n*Bz`{Kp%A19l}D| z+g*Q8_=3vx(ECY?ls2^FEldUN?xC0TTCDKEo>w0NdO(z4CIpEgP1K>+L=oG;(K~YVFf*WPwy_Qq}Flzd})=EXs$6XNz_VftCdxVxfSJ_ zsq0L`dO}mJQNn5HGgLZzPbl3zJ)tMo(y^X;9ci6Xk52T|qY6c*j>O3A{V$c4oV_-w z;Z$fiG}XX(JqYt`)8q9)!UpQuOYcl=d+CL6D=WSeq)o~oUPtagrFuiAH!JhcrtV&#t}UK zhIy~Eef0j)PGum?jE4%L1l>>EWim$Gt(b${JqizU<-N*U!PwJ4qX*~;olVfk%lnjd zdF+zuUSGYKv|nk#ek)QnY=Xf0Yi2*azS^JH3$ysUv2*~0H#|J=r&mEc#2)lC_HYOy z375LGqQ72TI;`~JGKWxdKP37x2_37a{q<_n*QgGLubzpzDjiYoy5}~QQ>(#xIr*sa zSfGJ}^=b6W0JOBnoNWi{g$3cbGk%bc+jUMj`ws@2q?5`FYClk)NotZlS~{h)%#&K- z$kc%tT&E?)C8YL_Pfj?^;^vv35ao=*Ypn%_qZ4jqvQ4sHs!&*{u^AvC4t?OW3NQZV z@=#vLrlHBG?B_g%O!`JyVa^;!4b{V>^UC`?JKKUbF?K;2V9wlP9#^HZDS8-Yw%Vm& zdf_`uh_zI`qhGfQ8I`Kfm98m2k}ypFUPT`* zHtssTO4DDW!Ff3h?aueqf4Kfgx(SM4Rk$?S+hF7}a|C#MOQ}sklhDUGFhUOyexO?; zumt&|Vyqrlp*inkr2Uf;Z&sbyk$Pe2XC;NPYV`g{y#?BxtdaU1^;ZS+9j)lx6upLD z#{_2lZ6(x6tn>nEv3!W%gDO-gqhbH>FQ*e*tvuL)~BdU8%vIsZa)b zNjLvNP0Svvdld-9BKciqNZuf+AL$jfdkVL{O=!$Cy_OGqysvCCYI%p}dg(bI>N5TP zkv>~`po}-!^63cl6do#FOt!o`3e(Jws2$THX^QSsIx0DSNMi3ezV<1ue^S!GKa>GR z_R$8QOvP#7^Z%!-D-VdOTI1chaLzZNfSF5yYnr(cD3vKGkAI>K;p`=x%(PR2`-yU3e3*5MKI^@m` z-^cjXZ0M2ir&ECT2PdYJUB7A0#^Zc19em>!2W8N4NV8uusH1+zw-f)GK_QL0*=#nY z(Ar|-;4r-F8)|?#E)%nJ4`ZNFFi*{depkaQGpVB`UGT9?>TAgm+-4k2uw)8eI*xk# zjT4w7#o3+QCIhTxWERj0&Y~zwmf&}?sF&Y((Ob1p91bnoa%dqn;JsNy`UDZiuiT~( zgRVETD9Dm6*nd0?v`j?b@sLhAf;W$+H}zcM=FmIj)+dRMCdQ=`Am%2E4-8Ew@RTxlf*UI)KD)J-TnkU7?Bh^ z%9R*vhe%fYb*kuTF7Uv+)Xcw!(;bhHd5UA2;Pi zy~I-|K_Qqe`1m9$w#*Scax#t5=ZZ0WGml0|)vH9L^B;Ni5ns+DX_+VZMjmD9rQ!us z7?(|q~ZMTRFGqtNHc+)J{iHOeN*Wl zexHcCOqTn==lptjVuv|wafu_#xnvrR(3gvRjx2(B8Z@2y>nlXw{aP2c%^*LX#o*$f za?c_v)>n!mb$g<^6QHeP_Y67!u^7!@U!QY1({O!t?UG?X5Bck{wl!QZlP>6M#R-m@ zjU0++i@_AV966hIa@*PTFbp%4&jhU#4U`MrhKW}}vGp7}2j0I8;yoi=#{1_`JAI=V zZ8GFebD`6268|x|!p6DO7&h7dxik=huT=?ssBPuK5{jj5Vz9}D>U>aPJf?&i>tEtQ zg?r!+K!CxA^XE~2?JEwdAg8`vyv181s4wT1;-O!2Nh$rycZV2&`54m<=1XNMS&cPR zAzlOQSRIV>%gE~cjZlIqsy!MWD+7gg@{eWok^i?My;ju==gM{nkuCWz41iq%)|OK0 ziZskv%p&M=Z_Nj-cjMC^G#Uoi`T6uM46aoRC`I1~LZmIiZ2x;9Ay`va`$E;e6VrI? zA}IGQ7C}opz#lK7@#1??fidx+3gGhcV#+{lX3t_8?tf4e)xOI>)8)6+gD#7rceC|xyYIi+eRy*10BR$5L8Llf01&4qp1SlHr>C|9o>(;E4f zsVgbYdRDxl9uF&STQ5ZBZmguIwJPrut7xgFo%0^~jAAtXyy(Z7dcCSU>%j)@&{KZ;K{I5p2QCN7m`BuiZuEtPC^MPIpgc!q6PjKZ` zSPaEp$hF_<0WJW*Teee}c|QWV@Y*#sXj@MAQm|Cs|KG*4#^bDE5iaLo&vg-PRQntZK^G%uQ*Bm#uAHlaF*vnaDVEK5(gzJnkXT?aNW=_{G$=39 zpgz>}c``xm+K$|>80*Bb3o(UKZoM0u942Rb*mp)5xn=Dk-B9iiXTAX{KpV?~+KE|c zOpLw=+1-XdynhchmWx4M49U;>!r*AX7slTb&e%(Lw55y3?!(u3mZ{oX{KI})=<|u3 zY2l20*cqjJ4m-r|h?FxW01pv6ARWjb=?4$$lT^Y^seXN4@*xC|+IDp}Bf5wnrb{wzi^|m?!OAmsr<53!*uahy{ z`6%_{tw+f!*UKnlyOlMfZdT^dyL?s6f2}F; z+*xV~i57d7VqV!H1ChM%OzLj)#KI+;;_y^RVQk>x-$-Ahuv7XPy6d-6K>3LuVc#X2 z*h`E*I1iv>9PjW%c+2Tv|m6RJN(`&OeN$57 z6k*~Vr)6M@$L@67Kr$${D4mgwaK&+>bs!Ya8ZgkK4u)bCZ#qwp!c}XH>QHwY>lWUg7YI6bxB4 z;3Bn3yK1ZrhkN)nDH3q*Z9>xT(%+_riXWQnPIX)}mZaWOt&}?o9kXalzH4-HIo$W81k{a@YNStEN?h`=bP@@M z%9uf9cbUaZYKU-tk_syrx5kl=B1#qsyGs?ulTdpvF@6HcT7?rfirtBmf02e8KNQC% zPow};oFi?(3kS{)apzDY<=9NdA-Z)i-JMIEaEUrKoJ2r0A=Tw^cAre%1(#?gamLSx zC~Ub(PvIXib!EsnNCoRtZ@v-z+&^Ck8OD`A!n#cOjb7LA)#j_@#(!eA{YHs;t2|BJ zYwERMqjwv(^w;zU9u$L}4wpTJbWQJyeX1})+Ehv0*}&ClA#TO+NxmgY^~K^{Y5 zYI3}ztJ-AmnSCB;%2C1AmfkIX)@WZVzVGq4, -} - -#[derive(Deserialize)] -struct Answer { - id: u32, - #[serde(default)] - summary: String, - pseudocode: String, -} - -/// What the model returned for one fold: an optional sentence quoted from -/// its docstring, and the pseudocode. -struct Summary { - quote: Option, - pseudocode: String, -} - impl Summarize { - fn prompt(&self, path: &str, src: &str, fold: &Request) -> String { + /// One request per selected body: its lines, numbered from `first_line` + /// (1-based). Retried on transient failures; any other failure is a + /// run-level failure. + async fn complete( + &self, + path: &str, + src: &str, + first_line: usize, + ) -> anyhow::Result> { let numbered = src .split_terminator('\n') .enumerate() - .map(|(index, line)| format!("{:5} | {line}", fold.first_line as usize + index)) + .map(|(index, line)| format!("{:5} | {line}", first_line + index)) .collect::>() .join("\n"); - let doc = fold - .doc - .as_ref() - .map(|doc| format!("\n doc: {doc}")) - .unwrap_or_default(); - format!( - "File {path}:\n\n{numbered}\n\nFold:\n- fold {}: lines {}-{}{doc}", - fold.id, fold.first_line, fold.last_line - ) - } - - /// One request per selected body, retried on transient failures. Any other - /// failure is a run-level failure. - async fn complete( - &self, - path: &str, - src: &str, - fold: &Request, - ) -> anyhow::Result> { let provider = self.options.provider; let body = provider.body( &self.options.model, &self.options.system_prompt, - &self.prompt(path, src, fold), + &format!("File {path}:\n\n{numbered}"), 800, ); let url = provider.url(&self.endpoint, &self.options.model); @@ -138,76 +103,12 @@ impl Summarize { http::sleep(Duration::from_millis(250 * (1 << attempt.min(6)))).await; } }; - let content = provider + let pseudocode = provider .text(&text) - .ok_or_else(|| failed("no text in the response".to_owned()))?; - let answers: Vec = provider::answers(content) - .ok_or_else(|| failed(format!("no summaries in the answer: {content}")))?; - if answers.len() > 1 { - return Err(failed("expected at most one summary".into())); - } - let Some(answer) = answers.into_iter().next() else { - return Ok(None); - }; - if answer.id != fold.id { - return Err(failed(format!("answered for unknown fold {}", answer.id))); - } - Ok((!answer.pseudocode.trim().is_empty()).then(|| Summary { - quote: quoted(fold.doc.as_deref(), &answer.summary), - pseudocode: answer.pseudocode.trim().to_owned(), - })) - } -} - -/// The text of the docstring region with this id, with comment markers and -/// quotes stripped, or `None` when it says nothing. -fn documentation(text: &str) -> Option { - let words: Vec<_> = text - .split_terminator('\n') - .map(strip_markers) - .filter(|line| !line.is_empty()) - .collect(); - let text = words.join(" "); - (!text.is_empty()).then_some(text) -} - -fn strip_markers(line: &str) -> &str { - let mut text = line.trim(); - for prefix in [ - "///", "//!", "//", "/**", "/*", "*/", "*", "#", "--", ";;", ";", "%", - ] { - if let Some(rest) = text.strip_prefix(prefix) { - text = rest.trim(); - break; - } - } - for quote in ["\"\"\"", "'''"] { - text = text - .trim_start_matches(quote) - .trim_end_matches(quote) + .ok_or_else(|| failed("no text in the response".to_owned()))? .trim(); + Ok((!pseudocode.is_empty()).then(|| pseudocode.to_owned())) } - text.trim_end_matches("*/").trim() -} - -/// The model's sentence, kept only when it really is a verbatim quote from -/// the docstring: compared with runs of whitespace collapsed. -fn quoted(doc: Option<&str>, summary: &str) -> Option { - let squash = |text: &str| text.split_whitespace().collect::>().join(" "); - let (doc, sentence) = (squash(doc?), squash(summary)); - (!sentence.is_empty() && doc.contains(&sentence)).then_some(sentence) -} - -/// Pseudocode earns its place only when it is clearly shorter than the -/// code: a summary with more than half the body's non-blank lines is -/// dropped; the body retains its original visibility. -fn compresses(summary: &str, body: &[&str]) -> bool { - let summary_lines = summary - .lines() - .filter(|line| !line.trim().is_empty()) - .count(); - let body_lines = body.iter().filter(|line| !line.trim().is_empty()).count(); - summary_lines * 2 <= body_lines } /// The API key: the `api_key` option, or else the first of the provider's @@ -274,44 +175,38 @@ impl GuestPlugin for Summarize { return Ok(true); } let text = cursor.text(data.id)?; - let docstring = cursor.related(data.id, "documentation")?.into_iter().next(); - let doc = docstring - .map(|id| cursor.text(id)) - .transpose()? - .as_deref() - .and_then(documentation); - let lines = data.range.start.line..data.range.end.line; - let request = Request { - id: data.id, - first_line: lines.start + 1, - last_line: lines.end, - doc, - }; let file = cursor.file(); let path = match &file.file { FileSides::Both((_, rhs)) | FileSides::RightOnly(rhs) => &rhs.path, FileSides::LeftOnly(lhs) => &lhs.path, }; - if let Some(summary) = self - .complete(path, &text, &request) + let Some(pseudocode) = self + .complete(path, &text, data.range.start.line as usize + 1) .await .map_err(|e| format!("summarizer: {e:#}"))? - { - if compresses( - &summary.pseudocode, - &text.split_terminator('\n').collect::>(), - ) { - let label = match summary.quote { - Some(quote) => format!("{quote}\n{}", summary.pseudocode), - None => summary.pseudocode, - }; - cursor.set_collapsed(data.id, true)?; - cursor.set_label(data.id, Some(&label))?; - if let Some(docstring) = docstring { - cursor.link(&[data.id, docstring])?; - } - } + else { + return Ok(false); + }; + // Pseudocode earns its place only when it is at most half as long as + // the body; otherwise the body keeps its original visibility. + let size = |text: &str| text.chars().filter(|c| !c.is_whitespace()).count(); + if size(&pseudocode) * 2 > size(&text) { + return Ok(false); } + cursor.set_collapsed(data.id, true)?; + let docstring = cursor.related(data.id, "documentation")?.into_iter().next(); + let Some(docstring) = docstring else { + cursor.set_label(data.id, Some(&pseudocode))?; + return Ok(false); + }; + let docstring_text = cursor.text(docstring)?; + let first = docstring_text + .lines() + .next() + .ok_or_else(|| format!("empty docstring region {docstring}"))? + .trim(); + cursor.set_label(data.id, Some(&format!("{first}\n{pseudocode}")))?; + cursor.link(&[data.id, docstring])?; Ok(false) } } diff --git a/plugins/shape/summarize/rust/src/provider.rs b/plugins/shape/summarize/rust/src/provider.rs index 30f0b01b8..2e957b206 100644 --- a/plugins/shape/summarize/rust/src/provider.rs +++ b/plugins/shape/summarize/rust/src/provider.rs @@ -1,6 +1,5 @@ //! Each model API's wire format: where a request goes, how it is //! authenticated, and where the answer's text is. -use serde::de::DeserializeOwned; use serde::Deserialize; use serde_json::{json, Value}; @@ -50,7 +49,6 @@ impl Provider { headers } - /// Every provider constrains the answer with the same schema. /// Only Gemini gets a temperature: current reasoning models reject one. /// OpenAI gets no length limit either, since compatible servers name it /// differently; Anthropic's limit also covers thinking, so it has a floor. @@ -63,8 +61,6 @@ impl Provider { "temperature": 0, "maxOutputTokens": max_tokens, "thinkingConfig": {"thinkingBudget": 0}, - "responseMimeType": "application/json", - "responseJsonSchema": summaries_schema(), }, }), Self::OpenAi => json!({ @@ -73,17 +69,12 @@ impl Provider { {"role": "system", "content": system}, {"role": "user", "content": user}, ], - "response_format": { - "type": "json_schema", - "json_schema": {"name": "summaries", "strict": true, "schema": summaries_schema()}, - }, }), Self::Anthropic => json!({ "model": model, "max_tokens": max_tokens.max(4096), "system": system, "messages": [{"role": "user", "content": user}], - "output_config": {"format": {"type": "json_schema", "schema": summaries_schema()}}, }), } } @@ -104,45 +95,3 @@ impl Provider { } } } - -/// `{"summaries": [{id, summary, pseudocode}]}`, every field required: OpenAI -/// and Anthropic take only an object at the root. -fn summaries_schema() -> Value { - json!({ - "type": "object", - "properties": { - "summaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": {"type": "integer"}, - "summary": {"type": "string"}, - "pseudocode": {"type": "string"}, - }, - "required": ["id", "summary", "pseudocode"], - "additionalProperties": false, - }, - }, - }, - "required": ["summaries"], - "additionalProperties": false, - }) -} - -/// The first JSON array in an answer that holds items, ignoring any prose, -/// fence or reasoning around it, and the `summaries` object wrapping it; -/// an empty array only when none does. -pub fn answers(text: &str) -> Option> { - let mut parsed = text.match_indices('[').filter_map(|(start, _)| { - serde_json::Deserializer::from_str(&text[start..]) - .into_iter::>() - .next()? - .ok() - }); - let first = parsed.next()?; - if !first.is_empty() { - return Some(first); - } - Some(parsed.find(|items| !items.is_empty()).unwrap_or(first)) -} diff --git a/src/plugin/tests/mod.rs b/src/plugin/tests/mod.rs index 0e4048319..f987e8bcb 100644 --- a/src/plugin/tests/mod.rs +++ b/src/plugin/tests/mod.rs @@ -33,15 +33,6 @@ pub(crate) fn walk(regions: &[Region], visit: &mut impl FnMut(&Region)) { } } -pub(crate) fn walk_mut(regions: &mut [Region], visit: &mut impl FnMut(&mut Region)) { - for region in regions { - visit(region); - if let Node::Fold { children, .. } = &mut region.node { - walk_mut(children, visit); - } - } -} - pub(crate) fn is_fold(region: &Region) -> bool { matches!(region.node, Node::Fold { .. }) } @@ -160,15 +151,6 @@ pub(crate) fn run( shape(&bundled(name, overrides), file, sides).unwrap(); } -/// Run a pipeline and inspect the sides it left, without changing `sides`. -fn edited( - pipeline: &Pipeline, - file: &FileChange, - sides: &Pairing, -) -> anyhow::Result> { - crate::test_runtime().block_on(pipeline.run(file, sides.clone())) -} - /// For each `deleted-bodies:function` body on the after side, the first line /// of the body and the lines of its docstring, as the query relationship identifies it. fn documented(path: &str, after: &str) -> Vec<(u32, Option<(u32, u32)>)> { diff --git a/src/plugin/tests/summarize.rs b/src/plugin/tests/summarize.rs index f46b64566..3acb218cd 100644 --- a/src/plugin/tests/summarize.rs +++ b/src/plugin/tests/summarize.rs @@ -1,7 +1,6 @@ use super::*; use std::io::{BufRead, BufReader, Read, Write}; use std::net::TcpListener; -use std::path::Path; const FUNCTION: &str = "summarize:function"; @@ -106,12 +105,7 @@ fn fold_label(sides: &Pairing) -> String { labels.remove(0) } -fn gemini_answer(items: &[(u32, &str)]) -> String { - let answers: Vec<_> = items - .iter() - .map(|(id, text)| json!({"id": id, "pseudocode": text})) - .collect(); - let text = json!({"summaries": answers}).to_string(); +fn gemini_answer(text: &str) -> String { json!({"candidates": [{"content": {"parts": [{"text": text}]}}]}).to_string() } @@ -130,12 +124,8 @@ fn summarizer_with(overrides: serde_json::Value) -> Pipeline { bundled("summarize", overrides) } -/// Inspect requests emitted by the actual node callbacks. -fn select( - sides: &Pairing, - min_lines: usize, - test_min_lines: Option, -) -> Vec<(u32, u32, u32, Option)> { +/// The first numbered line of each body the summarizer sends. +fn select(sides: &Pairing, min_lines: usize, test_min_lines: Option) -> Vec { let listener = TcpListener::bind("127.0.0.1:0").unwrap(); let address = listener.local_addr().unwrap(); let server = std::thread::spawn(move || { @@ -165,17 +155,12 @@ fn select( reader.read_exact(&mut body).unwrap(); let body: serde_json::Value = serde_json::from_slice(&body).unwrap(); let prompt = body["contents"][0]["parts"][0]["text"].as_str().unwrap(); - selected.extend(prompt.lines().filter_map(|line| { - let (id, lines) = line.strip_prefix("- fold ")?.split_once(": lines ")?; - let (start, end) = lines.split_once('-')?; - Some(( - id.parse::().unwrap(), - start.parse::().unwrap(), - end.parse::().unwrap(), - )) - })); - let response = - json!({"candidates":[{"content":{"parts":[{"text":"[]"}]}}]}).to_string(); + let first = prompt + .lines() + .find_map(|line| line.split_once(" | ")?.0.trim().parse::().ok()) + .unwrap(); + selected.push(first); + let response = gemini_answer(""); write!( socket, "HTTP/1.1 200 OK\r\nContent-Length: {}\r\nConnection: close\r\n\r\n{}", @@ -196,92 +181,20 @@ fn select( let selected = server.join().unwrap(); result.unwrap(); selected - .into_iter() - .map(|(id, start, end)| { - let source = sides.rhs().unwrap(); - let mut doc = None; - walk(source.root.children(), &mut |region| { - if region.id == id { - doc = region - .relations - .iter() - .find(|(name, _)| name == "documentation") - .map(|(_, id)| *id); - } - }); - (id, start, end, doc) - }) - .collect() } #[test] fn selection_takes_new_bodies_of_at_least_min_lines() { let (_, sides) = project("a.py", "", LARGE); - let selected = select(&sides, 3, None); - assert_eq!(selected.len(), 1); - assert_eq!((selected[0].1, selected[0].2), (2, 4)); + assert_eq!(select(&sides, 3, None), [2]); let (_, sides) = project("a.py", LARGE, LARGE); assert!(select(&sides, 3, None).is_empty()); } -#[test] -fn selection_reads_newness_from_the_lines_when_the_match_fell_back() { - let before = "def keep():\n a = 1\n b = 2\n return a + b\n"; - let after = "def keep():\n a = 1\n b = 2\n return a + b\n\ndef fresh():\n x = 1\n y = 2\n return x + y\n"; - let (_, sides) = project_with( - "a.py", - before, - after, - DiffOptions { - graph_limit: 1, - ..DiffOptions::default() - }, - ); - // Nothing matched, so no fold is paired; the lines still are. Only the - // added body, whose lines pair with nothing, is new. - let selected = select(&sides, 3, None); - assert_eq!(selected.len(), 1, "{selected:?}"); - assert_eq!((selected[0].1, selected[0].2), (7, 9)); -} - -#[test] -fn selection_takes_outermost_function_bodies_only() { - // A method inside an impl: the impl's declaration_list is a body but - // not a function, so the method is the outermost selection. - let after = "impl A {\n fn m(&self) {\n a();\n b();\n c();\n let f = || {\n d();\n e();\n g();\n };\n f();\n }\n}\n"; - let (_, sides) = project("a.rs", "", after); - let selected = select(&sides, 3, None); - assert_eq!(selected.len(), 1, "{selected:?}"); - assert_eq!((selected[0].1, selected[0].2), (3, 11)); - // Below the threshold, nothing. - assert!(select(&sides, 30, None).is_empty()); -} - -#[test] -fn selection_skips_test_bodies_and_collapsed_folds() { - let after = "#[test]\nfn t() {\n a();\n b();\n c();\n}\n\nfn f() {\n a();\n b();\n c();\n}\n"; - let (file, mut sides) = project("a.rs", "", after); - let selected = select(&sides, 3, None); - assert_eq!(selected.len(), 1, "{selected:?}"); - assert_eq!((selected[0].1, selected[0].2), (9, 11)); - run("test-bodies", json!({"min_lines": 3}), &file, &mut sides); - let mut sides = sides.clone(); - let (Pairing::Both { rhs, .. } | Pairing::RightOnly { rhs }) = &mut sides else { - panic!("an after side"); - }; - walk_mut(std::slice::from_mut(&mut rhs.root), &mut |region| { - if region.range.start.line == 8 { - region.visibility.collapsed = true; - } - }); - assert!(select(&sides, 3, None).is_empty()); -} - #[test] fn long_summaries_are_discarded_without_changing_initial_folding() { let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let (endpoint, server) = serve(vec![(200, gemini_answer(&[(id, "a()\nb()\nc()")]))]); + let (endpoint, server) = serve(vec![(200, gemini_answer("a()\nb()\nc()"))]); shape(&summarizer(&endpoint, 0), &file, &mut sides).unwrap(); server.join().unwrap(); let mut folds = Vec::new(); @@ -297,14 +210,13 @@ fn long_summaries_are_discarded_without_changing_initial_folding() { #[test] fn summaries_collapse_selected_folds_behind_pseudocode() { let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let (endpoint, server) = serve(vec![(200, gemini_answer(&[(id, "call a, b, c")]))]); + let (endpoint, server) = serve(vec![(200, gemini_answer("a b c"))]); shape(&summarizer(&endpoint, 0), &file, &mut sides).unwrap(); let bodies = server.join().unwrap(); assert!(bodies[0].contains("thinkingBudget")); - assert!(bodies[0].contains(&format!("fold {id}: lines 2-4"))); + assert!(bodies[0].contains(" 2 | ")); // `g` is a one-line function, whose body is not a region. - assert_eq!(fold_label(&sides), "call a, b, c"); + assert_eq!(fold_label(&sides), "a b c"); let mut collapsed = Vec::new(); walk(rhs(&sides).root.children(), &mut |region| { if is_fold(region) && has_tag(region, FUNCTION) { @@ -315,160 +227,25 @@ fn summaries_collapse_selected_folds_behind_pseudocode() { } #[test] -fn a_docstring_is_sent_and_only_a_verbatim_sentence_from_it_is_kept() { +fn a_docstring_heads_the_pseudocode_with_its_first_line() { let after = "/// Sums three numbers.\n/// Used by tests.\nfn total(a: u32, b: u32, c: u32) -> u32 {\n let x = a;\n let y = b;\n let z = c;\n x + y + z\n}\n"; - let answer = |id: u32, summary: &str| { - let answers = vec![json!({"id": id, "summary": summary, "pseudocode": "return a + b + c"})]; - json!({"candidates": [{"content": {"parts": [{"text": serde_json::to_string(&answers).unwrap()}]}}]}) - .to_string() - }; - let body_label = |sides: &Pairing| { - let mut labels = Vec::new(); - walk(std::slice::from_ref(&rhs(sides).root), &mut |region| { - if is_fold(region) && has_tag(region, FUNCTION) { - labels.push(region.visibility.label.clone()); - } - }); - assert_eq!(labels.len(), 1, "{labels:?}"); - labels.remove(0) - }; - let (file, mut sides) = project("a.rs", "", after); - let id = select(&sides, 3, None)[0].0; - let (endpoint, server) = serve(vec![(200, answer(id, "Sums three numbers."))]); - shape(&summarizer(&endpoint, 0), &file, &mut sides).unwrap(); - let bodies = server.join().unwrap(); - assert!( - bodies[0].contains("doc: Sums three numbers. Used by tests."), - "{}", - bodies[0] - ); - assert_eq!(body_label(&sides), "Sums three numbers.\nreturn a + b + c"); - assert_linked(&sides, id); - - // A sentence the docstring does not contain is dropped. let (file, mut sides) = project("a.rs", "", after); - let (endpoint, server) = serve(vec![(200, answer(id, "Adds things up."))]); + let (endpoint, server) = serve(vec![(200, gemini_answer("return a + b + c"))]); shape(&summarizer(&endpoint, 0), &file, &mut sides).unwrap(); server.join().unwrap(); - assert_eq!(body_label(&sides), "return a + b + c"); -} - -/// The after side's docstring shares the summarized body's fold state -/// and starts collapsed with an empty label. -fn assert_linked(sides: &Pairing, body: u32) { - let rhs = rhs(sides); - let mut state = None; - walk(rhs.root.children(), &mut |region| { - if region.id == body { - state = Some(region.fold_state_id); + let (mut body, mut docstring) = (None, None); + walk(rhs(&sides).root.children(), &mut |region| { + if is_fold(region) && has_tag(region, FUNCTION) { + body = Some((region.fold_state_id, region.visibility.label.clone())); } - }); - let mut docstrings = Vec::new(); - walk(rhs.root.children(), &mut |region| { if has_tag(region, "summarize:docstring") { - docstrings.push(( - region.fold_state_id, - region.visibility.collapsed, - region.visibility.label.clone(), - )); + docstring = Some(region.fold_state_id); } }); - assert_eq!(docstrings, [(state.unwrap(), true, String::new())]); -} - -#[test] -fn newness_is_the_lines_inside_the_body() { - // The docstring is unchanged and the signature line still pairs. A fold - // covers its body alone, so that line sits outside it: what decides is - // whether a line of the body itself pairs. - let head = "fn keep() {}\n\n/// Sums three numbers.\n/// Used by tests.\nfn total(a: u32, b: u32, c: u32) -> u32 "; - let one_liner = format!("{head}{{ a }}\n"); - let grown = format!("{head}{{\n let x = a;\n x\n}}\n"); - let after = - format!("{head}{{\n let x = a;\n let y = b;\n let z = c;\n x + y + z\n}}\n"); - let (_, sides) = project("a.rs", &one_liner, &after); - let states = |source: &Source| { - let mut states = Vec::new(); - walk(source.root.children(), &mut |region| { - if is_fold(region) && region.range.start.line == 2 { - states.push(region.fold_state_id); - } - }); - states - }; - let projected = sides.clone(); - let Pairing::Both { lhs, rhs: replaced } = &projected else { - panic!("both sides"); - }; - assert_eq!( - states(lhs), - states(replaced), - "the docstring is matched across sides" - ); - // The one-liner it replaced had no body fold to match, and no line of - // the new body pairs: the body is new. - let mut body = None; - walk(replaced.root.children(), &mut |region| { - if is_fold(region) && has_tag(region, FUNCTION) { - body = Some(region.fold_state_id); - } - }); - let mut lhs_states = Vec::new(); - walk(lhs.root.children(), &mut |region| { - lhs_states.push(region.fold_state_id) - }); - assert!(!lhs_states.contains(&body.expect("a function body on the after side"))); - assert_eq!(select(&projected, 3, None).len(), 1); - // The same body grown from one that already had lines: `let x = a;` - // still pairs, so this is a rewrite rather than a new body. - let (_, sides) = project("a.rs", &grown, &after); - assert!(select(&sides, 3, None).is_empty()); -} - -#[test] -fn the_system_prompt_is_the_configured_one() { - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let request = |overrides: serde_json::Value, sides: &mut Pairing| { - let (endpoint, server) = serve(vec![(200, gemini_answer(&[(id, "call a, b, c")]))]); - let mut overrides = overrides; - overrides["api_key"] = json!("test-key"); - overrides["endpoint"] = json!(endpoint); - overrides["min_lines"] = json!(3); - shape(&summarizer_with(overrides), &file, sides).unwrap(); - let bodies = server.join().unwrap(); - let body: serde_json::Value = serde_json::from_str(&bodies[0]).unwrap(); - ( - body["systemInstruction"]["parts"][0]["text"].clone(), - body["contents"][0]["parts"][0]["text"].clone(), - ) - }; - let (system, user) = request(json!({"system_prompt": "Answer in haiku."}), &mut sides); - assert_eq!(system, "Answer in haiku."); - let user = user.as_str().unwrap(); - assert!(user.starts_with("File a.py:\n"), "{user}"); - assert!(user.contains(&format!("fold {id}: lines 2-4")), "{user}"); - - let (_, mut sides) = project("a.py", "", LARGE); - let (system, _) = request(json!({}), &mut sides); - let defaults = builtin::manifest("summarize").unwrap().defaults(); - let prompt = defaults["system_prompt"].as_str().unwrap(); - assert_eq!(system, prompt); -} - -#[test] -fn transient_failures_are_retried_then_succeed() { - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let (endpoint, server) = serve(vec![ - (503, "{}".to_owned()), - (429, "{}".to_owned()), - (200, gemini_answer(&[(id, "retry ok")])), - ]); - shape(&summarizer(&endpoint, 3), &file, &mut sides).unwrap(); - assert_eq!(server.join().unwrap().len(), 3); - let label = fold_label(&sides); - assert!(label.ends_with("retry ok"), "{label}"); + let (state, label) = body.unwrap(); + assert_eq!(label, "/// Sums three numbers.\nreturn a + b + c"); + // The docstring folds with the body. + assert_eq!(docstring, Some(state)); } #[test] @@ -489,39 +266,6 @@ fn hard_failures_and_exhausted_retries_are_run_failures() { ); } -#[test] -fn small_files_never_call_the_model() { - let (file, sides) = project("a.py", "", "def h():\n e()\n"); - let pipeline = summarizer_with(json!({ - "api_key": "k", - "endpoint": "http://127.0.0.1:1", - "min_lines": 3, - })); - assert_eq!(edited(&pipeline, &file, &sides).unwrap(), sides.clone()); -} - -/// Exercise the same component a user loads from an external plugin folder. -#[test] -fn external_component_summarizes_over_http() { - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let (endpoint, server) = serve(vec![ - (429, "{}".into()), - (200, gemini_answer(&[(id, "call a, b, c")])), - ]); - let pipeline = super::configured(&format!( - "[plugins]\norder = ['external.summarize']\n[plugins.external.summarize]\nenabled = true\npath = {:?}\n{}", - Path::new(env!("CARGO_MANIFEST_DIR")).join("plugins/shape/summarize"), - super::options( - json!({"api_key": "test-key", "endpoint": endpoint, "min_lines": 3, "retries": 1}) - ) - )) - .unwrap(); - shape(&pipeline, &file, &mut sides).unwrap(); - assert_eq!(fold_label(&sides), "call a, b, c"); - assert_eq!(server.join().unwrap().len(), 2); -} - #[test] fn tests_are_selected_only_when_added_even_if_already_collapsed() { for (path, before, after) in [ @@ -562,145 +306,19 @@ fn tests_are_selected_only_when_added_even_if_already_collapsed() { } } -#[test] -fn suites_select_individual_tests_and_preserve_nested_summary_folds() { - for (path, after, outer_tag) in [ - ("a.rs", "#[cfg(test)]\nmod tests {\n #[test]\n fn one() {\n setup();\n act();\n check();\n }\n #[test]\n fn two() {\n setup();\n act();\n check();\n }\n}\n", "test-bodies:module"), - ("a.ts", "describe('suite', () => {\n it('one', () => {\n setup();\n act();\n check();\n });\n test('two', () => {\n setup();\n act();\n check();\n });\n});\n", "test-bodies:test"), - ] { - let (file, mut sides) = project(path, "", after); - let selected = select(&sides, 3, Some(3)); - assert_eq!(selected.len(), 2, "{path}: {selected:?}"); - let (endpoint, server) = serve(vec![(200, gemini_answer(&[(selected[0].0, "setup; act; check one")])), (200, gemini_answer(&[(selected[1].0, "setup; act; check two")]))]); - shape(&summarizer_with(json!({"api_key": "test", "endpoint": endpoint, "test_min_lines": 3})), &file, &mut sides).unwrap(); - run("test-bodies", json!({"min_lines": 3}), &file, &mut sides); - server.join().unwrap(); - run("context", json!({"lines": 3}), &file, &mut sides); - let mut found = 0; - let mut outer_state = None; - walk(rhs(&sides).root.children(), &mut |region| { - if has_tag(region, outer_tag) && !selected.iter().any(|s| s.0 == region.id) { - assert!(region.visibility.collapsed); - outer_state = Some(region.fold_state_id); - } - if selected.iter().any(|s| s.0 == region.id) { - assert!(region.visibility.collapsed); - assert!(region.visibility.label.starts_with("setup; act; check")); - assert_ne!(Some(region.fold_state_id), outer_state); - found += 1; - } - }); - assert!(outer_state.is_some()); - assert_eq!(found, 2); - } -} - -#[test] -fn bundled_wasm_summarizer_streams_large_prompts() { - // Exceed the host's outgoing body buffer and close the server immediately - // after replying, exercising backpressure and the response/finish race. - let after = format!( - "def test_it():\n setup()\n act()\n check() # {}\n# outside the selected body\n", - "context ".repeat(16_384) - ); - let (file, mut sides) = project("a.py", "", &after); - let id = select(&sides, 3, Some(3))[0].0; - let (endpoint, server) = serve(vec![(200, gemini_answer(&[(id, "setup; act; check")]))]); - let wasm = summarizer_with(json!({ - "api_key": "test", "endpoint": endpoint, "test_min_lines": 3, "retries": 0, - })); - assert!(builtin::component("summarize").is_some()); - shape(&wasm, &file, &mut sides).unwrap(); - assert_eq!(fold_label(&sides), "setup; act; check"); - let requests = server.join().unwrap(); - assert_eq!(requests.len(), 1); - let request: serde_json::Value = serde_json::from_str(&requests[0]).unwrap(); - let prompt = request["contents"][0]["parts"][0]["text"].as_str().unwrap(); - assert!(prompt.contains(&"context ".repeat(16_384))); - assert!(!prompt.contains("outside the selected body")); - assert!(prompt.contains(&format!("fold {id}: lines 2-4"))); -} - -#[test] -fn missing_or_empty_summaries_leave_the_file_unchanged() { - for empty in [false, true] { - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let answer = if empty { - gemini_answer(&[(id, "")]) - } else { - gemini_answer(&[]) - }; - let before = sides.clone(); - let (endpoint, server) = serve(vec![(200, answer)]); - shape(&summarizer(&endpoint, 0), &file, &mut sides).unwrap(); - assert_eq!(sides, before); - server.join().unwrap(); - } -} - -#[test] -fn gemini_requests_keep_their_path_and_key_header() { - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let (endpoint, server) = serve_requests(vec![(200, gemini_answer(&[(id, "call a, b, c")]))]); - shape(&summarizer(&endpoint, 0), &file, &mut sides).unwrap(); - let request = server.join().unwrap().remove(0); - assert_eq!( - request.line, - "POST /v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1" - ); - assert!(request - .headers - .contains(&"x-goog-api-key: test-key".to_owned())); - let body: serde_json::Value = serde_json::from_str(&request.body).unwrap(); - let config = &body["generationConfig"]; - assert!(config.get("responseSchema").is_none()); - assert_eq!(config["responseMimeType"], "application/json"); - assert_summaries_schema(&config["responseJsonSchema"]); - assert!(!request - .headers - .iter() - .any(|header| header.starts_with("authorization"))); -} - -fn answers(items: &[(u32, &str)]) -> String { - let answers: Vec<_> = items - .iter() - .map(|(id, text)| json!({"id": id, "pseudocode": text})) - .collect(); - serde_json::to_string(&answers).unwrap() -} - -/// An object root with every field required and nothing else allowed, as -/// OpenAI's strict mode and Anthropic's structured outputs require. -fn assert_summaries_schema(schema: &serde_json::Value) { - assert_eq!(schema["type"], "object"); - assert_eq!(schema["required"], json!(["summaries"])); - assert_eq!(schema["additionalProperties"], false); - let item = &schema["properties"]["summaries"]["items"]; - assert_eq!(item["required"], json!(["id", "summary", "pseudocode"])); - assert_eq!(item["additionalProperties"], false); -} - #[test] fn each_provider_sends_its_own_request_and_reads_its_own_answer() { - let (_, sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let wrapped = format!("{{\"summaries\": {}}}", answers(&[(id, "call a, b, c")])); - // A compatible server that ignores the schema may wrap its answer. - let fenced = format!("maybe [a] or [b], or []\n```json\n{wrapped}\n```"); for (provider, path, response, auth) in [ ( "openai", "/v1", - json!({"choices": [{"message": {"role": "assistant", "content": fenced}}]}), + json!({"choices": [{"message": {"role": "assistant", "content": "a b c"}}]}), "authorization: bearer test-key", ), ( "anthropic", "", - json!({"content": [{"type": "thinking", "thinking": "[1]"}, {"type": "text", "text": wrapped}]}), + json!({"content": [{"type": "thinking", "thinking": "hmm"}, {"type": "text", "text": "a b c"}]}), "x-api-key: test-key", ), ] { @@ -715,7 +333,7 @@ fn each_provider_sends_its_own_request_and_reads_its_own_answer() { "retries": 0, })); shape(&pipeline, &file, &mut sides).unwrap(); - assert_eq!(fold_label(&sides), "call a, b, c", "{provider}"); + assert_eq!(fold_label(&sides), "a b c", "{provider}"); let request = server.join().unwrap().remove(0); let body: serde_json::Value = serde_json::from_str(&request.body).unwrap(); assert!( @@ -731,12 +349,8 @@ fn each_provider_sends_its_own_request_and_reads_its_own_answer() { assert!(body["messages"][1]["content"] .as_str() .unwrap() - .contains(&format!("fold {id}: lines 2-4"))); + .contains(" 2 | ")); assert!(body.get("temperature").is_none()); - let format = &body["response_format"]; - assert_eq!(format["type"], "json_schema"); - assert_eq!(format["json_schema"]["strict"], true); - assert_summaries_schema(&format["json_schema"]["schema"]); } _ => { assert_eq!(request.line, "POST /v1/messages HTTP/1.1"); @@ -745,56 +359,11 @@ fn each_provider_sends_its_own_request_and_reads_its_own_answer() { .contains(&"anthropic-version: 2023-06-01".to_owned())); assert_eq!(body["max_tokens"], 4096); assert!(body.get("temperature").is_none()); - let format = &body["output_config"]["format"]; - assert_eq!(format["type"], "json_schema"); - assert_summaries_schema(&format["schema"]); - assert!(body["system"] - .as_str() - .unwrap() - .starts_with("For each listed fold")); + assert_eq!( + body["system"], + builtin::manifest("summarize").unwrap().defaults()["system_prompt"] + ); } } } } - -#[test] -fn an_openai_compatible_server_needs_no_key() { - if std::env::var_os("OPENAI_API_KEY").is_some() { - return; - } - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let response = json!({"choices": [{"message": {"content": answers(&[(id, "call a, b, c")])}}]}); - let (endpoint, server) = serve_requests(vec![(200, response.to_string())]); - let pipeline = summarizer_with(json!({ - "provider": "openai", - "model": "llama", - "endpoint": format!("{endpoint}/v1"), - "min_lines": 3, - })); - shape(&pipeline, &file, &mut sides).unwrap(); - assert_eq!(fold_label(&sides), "call a, b, c"); - let request = server.join().unwrap().remove(0); - assert!(!request - .headers - .iter() - .any(|header| header.starts_with("authorization"))); -} - -#[test] -fn an_unset_model_is_the_providers_default() { - let (file, mut sides) = project("a.py", "", LARGE); - let id = select(&sides, 3, None)[0].0; - let text = json!({"summaries": [{"id": id, "summary": "", "pseudocode": "call a, b, c"}]}); - let response = json!({"content": [{"type": "text", "text": text.to_string()}]}); - let (endpoint, server) = serve_requests(vec![(200, response.to_string())]); - let pipeline = summarizer_with(json!({ - "provider": "anthropic", - "api_key": "test-key", - "endpoint": endpoint, - "min_lines": 3, - })); - shape(&pipeline, &file, &mut sides).unwrap(); - let body: serde_json::Value = serde_json::from_str(&server.join().unwrap()[0].body).unwrap(); - assert_eq!(body["model"], "claude-haiku-4-5"); -} From 94887d85d2f789e91e76dd41c7b2bf9e6cfe775b Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 11:44:00 -0700 Subject: [PATCH 10/13] Rebuild the context and removed-runs plugins #84 committed these components before its last source changes, so tests/wasm.rs rebuilt them on every run. AI-assisted with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 --- plugins/shape/context/plugin.wasm | Bin 253302 -> 254237 bytes plugins/shape/removed-runs/plugin.wasm | Bin 210163 -> 210153 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/plugins/shape/context/plugin.wasm b/plugins/shape/context/plugin.wasm index 2a36e13901bd183ab2c31b594d31f3883a55fa11..de86807c7337ba16a7379fd6a14e31d6c9d7525b 100644 GIT binary patch delta 28150 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%0Al&R? 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

M}2e7S7tc~EW<4V~2seH26 zcKkIioz4<6{YBC=-kElYt<(5ezLPB!oo4X%;>mPg4}S%OSLeIfd?%cWnD^j; zgHn?)GU@3f2Y&>CW1o;HPR!;pd@p-lT>qJ>AuQXYxqPGXki5;4v;@xUSM&H8e%Mj?a6X*H_i3lbNAS;>CXOry;x0@1P+o-F zHI$;;rYe<3C=qXGY^o|Ij~bbIg3Vx3SY5Lk zCy8D25$c(}oFBtV)=gkhI>ma39)fr9Y%&;v88mS4@YCY9;H_}2BW493<9U`HLTlw` zN-y1ZVFkw}sV{B6uH^W0@?Y7iujXOIzh*ndqTcXUFRtNj#P4~~#cxE$8rb!3#Y=1X zPTZz&S;u$q?^#c2#u|xV*I~SWVBMUHX5IL6%x~<#tkld#N!bIlh9_mEWS?iQO2x($ zGZ*!7fw?GiaFMyfhZ;OK`I4BQ&x0FYW(|Wuq`2vHWdr#GNgdw|O00 zZjX7JSM&Lud8CX>%}$c9+oIpwJk0M7^KcSymqm+Rs3*LtLCk-M9dGj}{wJ%efPRCZ zxWnZhYe@R&tYLo%+Q6e*++%)O*~zIHiedG2pZOylIXc?`!sp)#hV|M3!{-BL5p}9_ z3;%~jidU=iNGvHkHt-r;27r%L=Mh*#{@K90*LuvVl#*d;2I!X^jeNp9RjLH?9}^?r z;ejwNfjUqQfRZ;VW7dtB%)RWjv$6+fPvMft)R9R;24`faOR9#XPvzb^EH!IjcJ}yb z+$E_Ui}Qb&!m;9vht8nsw8O3z8jSi;=^&OlchH)ahQHGC<$R#s;jcTY~&KbLc# z%uy+sDH+L0sz`97RI3%-H91{=tmLk8LXI4~io4lu)@tq}{r-_zDM^Eejm{XJ$9<7W z9hU^Y!1GYdH~-Yi8QCeLG6tqQfopkf@$Uv++k2hlbj0ZN?9@j2wihw5 LZSYpUFaG}k7a#-v diff --git a/plugins/shape/removed-runs/plugin.wasm b/plugins/shape/removed-runs/plugin.wasm index baccb748b8fe4f7349c50c8188c5e23e896991d8..c8b43e8d12ccd3042ad390d7fbdf1d03038ca42e 100644 GIT binary patch delta 9136 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 delta 9225 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 Date: Mon, 5 Oct 2026 11:54:08 -0700 Subject: [PATCH 11/13] Keep summaries up to two thirds of the body Half rejected reasonable summaries that repeat a test's data, and the model's replies vary in length from run to run. AI-assisted with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 --- plugins/shape/summarize/plugin.wasm | Bin 608550 -> 608559 bytes plugins/shape/summarize/rust/src/lib.rs | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/shape/summarize/plugin.wasm b/plugins/shape/summarize/plugin.wasm index ad41e5c9253d44dbd559497cf5a61e140afdf8b0..aeb86c4314ac20f5790aa9f7749a6ac766acc96e 100644 GIT binary patch delta 244 zcmZ2BNp<}s)eT$48NY4bCSEJccBe<8pPgxXU?r1ubBO8o5L3oeb&RXG%Wq+<(2?YJ zWKiT`a!?R-Qs__;4d7)^5L~Xrsvx?2yZFI^J?BZfnwgqdni-iI7;k2pZupvAXZwpz_I)gj YC#Em&W8W%*O<{X}Kl}Fleva)s0bdAEx&QzG delta 467 zcmZvWzb`{k6vyv*eeYdz+nexEk>K14i9{2n51qIM1_Og#!q&;7kuG=%2@=u7a%~pB z5(81(*lZFEmM*52nSa2*EwPB4e24QrpL}x8b~}%DJI}A;@K(HzFSpXtc5{JRM3qnM zmbGbLPy2Ac0tdSN67oH0OCp#xf_0;~nP{Af5v)5-IM{fc6}9H%DP4x-EJs(i2j8G8 zXC@5Aq?<#&AY62$l@(4D81ic8B#9-5g9X8j)s^#;2IdBj=6>MFA2?Elk*To?w8glL z8@b#MLmRmYDv+o*n%^pHBOJDl^pImr4(2{G#>n4e0kRdTYa- UI@_UF-ap_*zCd-pP@`|Y00_5xIRF3v diff --git a/plugins/shape/summarize/rust/src/lib.rs b/plugins/shape/summarize/rust/src/lib.rs index 8b5290ec9..adb46ddb0 100644 --- a/plugins/shape/summarize/rust/src/lib.rs +++ b/plugins/shape/summarize/rust/src/lib.rs @@ -187,10 +187,10 @@ impl GuestPlugin for Summarize { else { return Ok(false); }; - // Pseudocode earns its place only when it is at most half as long as - // the body; otherwise the body keeps its original visibility. + // Pseudocode earns its place only when it is at most two thirds as + // long as the body; otherwise the body keeps its original visibility. let size = |text: &str| text.chars().filter(|c| !c.is_whitespace()).count(); - if size(&pseudocode) * 2 > size(&text) { + if size(&pseudocode) * 3 > size(&text) * 2 { return Ok(false); } cursor.set_collapsed(data.id, true)?; From 3d80d2b89380a066a5e52d1d431ac816213fef43 Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 12:02:04 -0700 Subject: [PATCH 12/13] Quote multi-line labels between a body's opener and closer A collapsed syntax body whose label spans lines, such as pseudocode, shows one '> ' row per line at the body's indent instead of joining them onto the opener's line. AI-assisted with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 --- tui/packages/hunk/src/diffr/regions.test.ts | 14 +++++++++++++ tui/packages/hunk/src/diffr/rows.ts | 22 +++++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/tui/packages/hunk/src/diffr/regions.test.ts b/tui/packages/hunk/src/diffr/regions.test.ts index 623049802..25478ffbe 100644 --- a/tui/packages/hunk/src/diffr/regions.test.ts +++ b/tui/packages/hunk/src/diffr/regions.test.ts @@ -121,6 +121,20 @@ test("a multi-line label uses the declared enclosing indent inside the fold tint const unified = rowsForFile(file, 0, "unified", dark, new Set([11])); expect(unified.filter((r) => r.cell?.foldLabel)).toHaveLength(3); }); +test("a syntax body with a multi-line label is quoted between its opener and closer", () => { + const file = createFoldedDiffFile(); + if (file.diff.type !== "text") throw new Error(); + for (const source of [file.diff.lhs!, file.diff.rhs!]) { + const closure = source.root.children[1].children[1]; + if (closure.kind !== "fold") throw new Error(); + closure.visibility = { collapsed: true, label: "call a\ncall b" }; + closure.syntax = { start: { line: 1, column: 13 }, end: { line: 4, column: 4 } }; + } + const rows = rowsForFile(file, 0, "split", dark, new Set([11])).filter((r) => r.right); + const text = (r: (typeof rows)[number]) => r.right!.spans.map((s) => s.text).join(""); + expect(rows.slice(1, 5).map(text)).toEqual([" inner(|| {", " > call a · 1 line changed", " > call b", " });"]); + expect(rows[2].right!.fold?.id).toBe(11); +}); test("a collapsed leaf is one fold row with the chevron, its label, and no line number", () => { const file = createTestDiffFile(); if (file.diff.type !== "text") throw new Error(); diff --git a/tui/packages/hunk/src/diffr/rows.ts b/tui/packages/hunk/src/diffr/rows.ts index a32a5a1af..3f2431454 100644 --- a/tui/packages/hunk/src/diffr/rows.ts +++ b/tui/packages/hunk/src/diffr/rows.ts @@ -104,13 +104,13 @@ export function rowsForFile( const { leaves, folds } = flatten(d); const hidden = [hiddenLines(folds[0], collapsed), hiddenLines(folds[1], collapsed)]; // A collapsed fold is a row of its own, where its first line would have been. A syntax fold - // instead joins its opener, label and closing suffix on the opener's line, so its closer is - // masked too. + // with a one-line label instead joins its opener, label and closing suffix on the opener's + // line, so its closer is masked too. const bands = folds.map(side => collapsedFolds(side, collapsed)); const inline = bands.map((sideBands, side) => { const result = new Map(); for (const fold of sideBands.values()) { - if (!fold.syntax) continue; + if (!fold.syntax || fold.label.includes("\n")) continue; sideBands.delete(fold.startLine); result.set(fold.syntax.start.line, fold as SyntaxFold); for (let line = fold.syntax.start.line + 1; line <= fold.syntax.end.line; line++) hidden[side].add(line); @@ -196,12 +196,22 @@ export function rowsForFile( }; // A collapsed region is one row: chevron and label, no line number, whether the region is a // fold or a leaf the context plugin cut out. It starts at its parent's indent; a multi-line - // label (pseudocode) hangs under it at that indent, one row per line. + // label (pseudocode) hangs under it at that indent, one row per line. A syntax body with a + // multi-line label is instead quoted between its opener and closer, at the body's indent. const band = (region: Leaf | Fold) => { const { tint, note } = collapsedTint(region); - const lead = (text: string) => withGuides([{ text: " ".repeat(region.parentColumn) }, placeholder(text, tint)], - guides[region.side].get(region.startLine) ?? [], theme); const multiline = region.label.includes("\n"); + const quoted = "syntax" in region && region.syntax !== undefined && multiline; + const body = texts[region.side][region.startLine]!; + const column = quoted ? byteColumn(body, body.length - body.trimStart().length) : region.parentColumn; + const lead = (text: string) => withGuides([{ text: " ".repeat(column) }, placeholder(text, tint)], + guides[region.side].get(region.startLine) ?? [], theme); + if (quoted) { + const [first, ...rest] = region.label.split("\n"); + const header = { kind: "context" as const, sign: " ", band: tint, spans: lead(`> ${first}${note}`), + fold: { id: region.foldStateId, label: region.label, collapsed: true, tint } }; + return { header, labels: rest.map(text => ({ ...header, foldLabel: true, spans: lead(`> ${text}`), fold: undefined })) }; + } const header = { kind: "context" as const, sign: " ", band: tint, spans: lead(`⋯${region.label && !multiline ? " " + region.label : ""}${note}`), fold: { id: region.foldStateId, label: region.label, collapsed: true, tint } }; From d7f96dd557a7219e773246c79f573cf1b9d50d22 Mon Sep 17 00:00:00 2001 From: Sidharth Menon Date: Mon, 5 Oct 2026 12:05:59 -0700 Subject: [PATCH 13/13] Fix the spelling of pseudocode in the summarize prompt AI-assisted with Claude Code. Agent-Session: ea775653-fef8-47be-96ea-16815bdff22c Agent-Session: d72470a3-1f93-4201-8e6d-2730c798e92b Agent-Session: 82924cb5-dcfa-42e4-abb0-ef40393249f8 --- plugins/shape/summarize/plugin.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/shape/summarize/plugin.toml b/plugins/shape/summarize/plugin.toml index cbbc468b5..61bb773d7 100644 --- a/plugins/shape/summarize/plugin.toml +++ b/plugins/shape/summarize/plugin.toml @@ -107,7 +107,7 @@ from elsewhere, for example: ``` Break a test into setup, action being tested, and assertion phases; summarize setup with the \ -methods above, e.g. control-flow psuedocode. For example: +methods above, e.g. control-flow pseudocode. For example: ```pseudo Setup: createSession @@ -121,7 +121,7 @@ Assertions: assert agent is running ``` -Reply with only psuedocode in the format above (code within the 'pseudo' blocks), nothing else.""" +Reply with only pseudocode in the format above (code within the 'pseudo' blocks), nothing else.""" [options.tests] type = "boolean"